/* before being able to run please provide python/c abi with where to find numpy
set PYTHONHOME=C:\Users\wm\AppData\Local\Programs\Python\Python312
set PYTHONPATH=%PYTHONHOME%\Lib;%PYTHONHOME%\Lib\site-packages*/
// compiled w clang -o test_shamir.exe test_shamir.c -L.

// FULL REWORK NEEDED, CAN'T COMPILE NUMPY INTO CABI


#include <stdio.h>
#include <windows.h>

int main() {
    HMODULE dll = LoadLibraryA("C:\\Users\\wm\\Documents\\projekt_payments.org.im\\crypto\\shamirs_secret_sharing\\shamir_bridge.dll");
    if (!dll) {
        printf("Failed to load DLL\n");
        return 1;
    }

    typedef char* (*split_func_t)(char** secret, int len, int shares, int threshold);
    typedef char* (*combine_func_t)(char** shares, int len);

    split_func_t split_secret = (split_func_t)GetProcAddress(dll, "split_secret");
    combine_func_t combine_shares = (combine_func_t)GetProcAddress(dll, "combine_shares");

    if (!split_secret || !combine_shares) {
        printf("Failed to get function addresses\n");
        return 1;
    }

    char* secret_arr[1];
    secret_arr[0] = "test";

    char* split_result = split_secret(secret_arr, 1, 3, 3);
    if (split_result) {
        printf("Split result: %s\n", split_result);
    } else {
        printf("split_secret returned NULL\n");
    }

    char* shares_arr[3];
    shares_arr[0] = split_result;
    shares_arr[1] = split_result; 
    shares_arr[2] = split_result;

    char* combined = combine_shares(shares_arr, 3);
    if (combined) {
        printf("Combined result: %s\n", combined);
    } else {
        printf("combine_shares returned NULL\n");
    }

    FreeLibrary(dll);
    return 0;
}
