import type { EncryptionAlgorithm, FileFetch, Logger, ZKProofInput, ZKProofInputOPRF, ZKProofPublicSignals, ZKProofPublicSignalsOPRF } from '../types.ts';
export type GnarkLib = {
    verify: Function;
    free: Function;
    vfree: Function;
    prove: Function;
    initAlgorithm: Function;
    generateThresholdKeys: Function;
    oprfEvaluate: Function;
    generateOPRFRequest: Function;
    toprfFinalize: Function;
    koffi: typeof import('koffi');
};
type GnarkWitnessInput = ZKProofInput | ZKProofInputOPRF | ZKProofPublicSignals | ZKProofPublicSignalsOPRF;
export declare function initGnarkAlgorithm(id: number, fileExt: string, fetcher: FileFetch, logger?: Logger): Promise<GnarkLib>;
export declare function strToUint8Array(str: string): Uint8Array<ArrayBufferLike>;
export declare function serialiseGnarkWitness(cipher: EncryptionAlgorithm, input: GnarkWitnessInput): Uint8Array<ArrayBufferLike>;
export declare function generateGnarkWitness(cipher: EncryptionAlgorithm, input: GnarkWitnessInput): {
    cipher: string;
    key: string | undefined;
    ciphertext: string | undefined;
    blocks: {
        nonce: string;
        counter: number;
        boundary: number | null;
    }[];
    input: string;
    toprf: {
        locations?: undefined;
        domainSeparator?: undefined;
        output?: undefined;
        responses?: undefined;
        mask?: undefined;
    } | {
        locations: {
            pos: number;
            len: number;
        }[];
        domainSeparator: string;
        output: string;
        responses: {
            publicKeyShare: string;
            evaluated: string;
            c: string;
            r: string;
        }[];
        mask: string;
    };
};
export declare function executeGnarkFn(fn: Function, jsonInput: string | Uint8Array): any;
export declare function executeGnarkFnAndGetJson(fn: Function, jsonInput: string | Uint8Array): Promise<any>;
export {};
