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

namespace Pkmnlib.Generated
{
    internal static class Nature
    {
        /// <param name="increasedStat">Statistic</param>
        /// <param name="decreasedStat">Statistic</param>
        /// <param name="increasedModifier">float</param>
        /// <param name="decreasedModifier">float</param>
        /// <returns>Nature *</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_Construct")]
        internal static extern IntPtr Construct(Statistic increasedStat, Statistic decreasedStat, float increasedModifier, float decreasedModifier);

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

        /// <param name="p">const Nature *</param>
        /// <returns>float</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_GetIncreaseModifier")]
        internal static extern float GetIncreaseModifier(IntPtr p);

        /// <param name="p">const Nature *</param>
        /// <returns>float</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_GetDecreaseModifier")]
        internal static extern float GetDecreaseModifier(IntPtr p);

        /// <param name="p">const Nature *</param>
        /// <returns>Statistic</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_GetIncreasedStat")]
        internal static extern Statistic GetIncreasedStat(IntPtr p);

        /// <param name="p">const Nature *</param>
        /// <returns>Statistic</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_GetDecreasedStat")]
        internal static extern Statistic GetDecreasedStat(IntPtr p);

        /// <param name="nature">const Nature *</param>
        /// <param name="stat">Statistic</param>
        /// <returns>float</returns>
        [DllImport("libpkmnLib", CallingConvention = CallingConvention.Cdecl, EntryPoint= "PkmnLib_Nature_GetStatModifier")]
        internal static extern float GetStatModifier(IntPtr nature, Statistic stat);

    }
}
