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

namespace Pkmnlib.Generated
{
    internal static class PokemonLibrary
    {
        /// <param name="out">PokemonLibrary * &</param>
        /// <param name="settings">LibrarySettings *</param>
        /// <param name="species">SpeciesLibrary *</param>
        /// <param name="moves">MoveLibrary *</param>
        /// <param name="items">ItemLibrary *</param>
        /// <param name="growthRates">GrowthRateLibrary *</param>
        /// <param name="typeLibrary">TypeLibrary *</param>
        /// <param name="natures">NatureLibrary *</param>
        /// <returns>unsigned char</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonLibrary_Construct")]
        internal static extern byte Construct(ref IntPtr @out, IntPtr settings, IntPtr species, IntPtr moves, IntPtr items, IntPtr growthRates, IntPtr typeLibrary, IntPtr natures);

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

        /// <param name="p">const PokemonLibrary *</param>
        /// <returns>const NatureLibrary *</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_PokemonLibrary_GetNatureLibrary")]
        internal static extern IntPtr GetNatureLibrary(IntPtr p);

    }
}
