// AUTOMATICALLY GENERATED, DO NOT EDIT
using System;
using System.Runtime.InteropServices;

namespace Pkmnlib.Generated
{
    internal static class LearnableMoves
    {
        /// <param name="out">LearnableMoves * &</param>
        /// <param name="levelAttackCapacity">long unsigned int</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_LearnableMoves_Construct")]
        internal static extern byte Construct(ref IntPtr @out, ulong levelAttackCapacity);

        /// <param name="p">const LearnableMoves *</param>
        /// <returns>void</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_LearnableMoves_Destruct")]
        internal static extern void Destruct(IntPtr p);

        /// <param name="p">LearnableMoves *</param>
        /// <param name="move">MoveData *</param>
        /// <returns>void</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_LearnableMoves_AddEggMove")]
        internal static extern void AddEggMove(IntPtr p, IntPtr move);

        /// <param name="p">LearnableMoves *</param>
        /// <returns>long unsigned int</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_LearnableMoves_GetEggMovesCount")]
        internal static extern ulong GetEggMovesCount(IntPtr p);

        /// <param name="p">LearnableMoves *</param>
        /// <returns>const const MoveData * *</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_LearnableMoves_GetEggMoves")]
        internal static extern IntPtr GetEggMoves(IntPtr p);

    }
}
