// <auto-generated>
// This code is generated by csbindgen.
// DON'T CHANGE THIS DIRECTLY.
// </auto-generated>
#pragma warning disable CS8500
#pragma warning disable CS8981
using System;
using System.Runtime.InteropServices;


namespace FinLib
{
    internal static unsafe partial class NativeMethods
    {
        const string __DllName = "libfinlib_ffi";



        [DllImport(__DllName, EntryPoint = "interest_compound", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
        internal static extern double interest_compound(double principal, double rate, double time, double n);

        [DllImport(__DllName, EntryPoint = "covariance", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
        internal static extern double* covariance(double* arr, nuint len, double* arr_two, nuint len_two);

        [DllImport(__DllName, EntryPoint = "historical_value_at_risk", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
        internal static extern double* historical_value_at_risk(double* arr, nuint len, double confidence);

        [DllImport(__DllName, EntryPoint = "varcovar_value_at_risk", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
        internal static extern double* varcovar_value_at_risk(double* arr, nuint len, double confidence);

        [DllImport(__DllName, EntryPoint = "scale_value_at_risk", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
        internal static extern double scale_value_at_risk(double initial_value, nint time_cycles);


    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct Portfolio
    {
    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct PortfolioAsset
    {
    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct OptionVariables
    {
    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct CallOption
    {
    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct PutOption
    {
    }

    [StructLayout(LayoutKind.Sequential)]
    internal unsafe partial struct OptionGreeks
    {
    }


    internal enum ValueType : byte
    {
        Absolute,
        RateOfChange,
    }


}