/// <reference types="emscripten" />
import type { SignKeyPair, Proof } from "./utils/interfaces";
declare const ondemos: {
    generateIdentities: (identitiesLen?: number, module?: import("@libdemos").LibDemos | undefined) => Promise<{
        nonces: Uint8Array[];
        publicKeys: Uint8Array[];
        secretKeys: Uint8Array[];
        commitDetails: Uint8Array;
    }>;
    generateProof: (identityChosenIndex: number, currentCommit: Uint8Array, previousCommit: Uint8Array, nonces: Uint8Array[], publicKeys: Uint8Array[], secretKeys: Uint8Array[], module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    commit: (details: Uint8Array, previousCommit: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    verifyProof: (commit: Uint8Array, proof: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<number>;
    randomBytes: (n: number, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    randomShuffle: <T>(array: T[]) => Promise<T[]>;
    randomSubset: <T_1>(array: T_1[], elements: number) => Promise<T_1[]>;
    randomNumber: (min: number, max: number, module?: import("@libdemos").LibDemos | undefined) => Promise<number>;
    sha512: (data: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    argon2: (mnemonic: string, salt?: Uint8Array | undefined, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    keyPair: (module?: import("@libdemos").LibDemos | undefined) => Promise<SignKeyPair>;
    keyPairFromSeed: (seed: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<SignKeyPair>;
    keyPairFromSecretKey: (secretKey: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<SignKeyPair>;
    sign: (message: Uint8Array, secretKey: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    verify: (message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<boolean>;
    encryptAsymmetric: (message: Uint8Array, receiverPublicKey: Uint8Array, senderSecretKey: Uint8Array, additionalData: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    decryptAsymmetric: (encrypted: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array, additionalData: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    encryptSymmetric: (message: Uint8Array, symmetricKey: Uint8Array, additionalData: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    decryptSymmetric: (encrypted: Uint8Array, symmetricKey: Uint8Array, additionalData: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    generateMnemonic: (strength?: 256 | 128 | 160 | 192 | 224 | 288 | 320 | 352 | 384 | 416 | 448 | 480 | 512) => Promise<string>;
    keyPairFromMnemonic: (mnemonic: string, password?: string | undefined) => Promise<SignKeyPair>;
    validateMnemonic: (mnemonic: string) => Promise<boolean>;
    wordlist: string[];
    getMerkleRoot: (tree: Uint8Array[], module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    getMerkleProof: (tree: Uint8Array[], element: Uint8Array, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    getMerkleRootFromProof: (hash: Uint8Array, proof: Uint8Array) => Promise<Uint8Array>;
    verifyMerkleProof: (hash: Uint8Array, root: Uint8Array, proof: Uint8Array) => Promise<boolean>;
    splitSecret: (secret: Uint8Array, sharesLen: number, threshold: number, module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array[]>;
    restoreSecret: (shares: Uint8Array[], module?: import("@libdemos").LibDemos | undefined) => Promise<Uint8Array>;
    loadWasmModule: EmscriptenModuleFactory<import("@libdemos").LibDemos>;
    loadWasmMemory: {
        generateIdentities: (identitiesLen: number) => WebAssembly.Memory;
        generateProof: (identitiesLen: number, identityChosenIndex: number) => WebAssembly.Memory;
        commit: () => WebAssembly.Memory;
        verifyProof: (proofLen: number) => WebAssembly.Memory;
        randomBytes: (bytes: number) => WebAssembly.Memory;
        sha512: (arrayLen: number) => WebAssembly.Memory;
        argon2: (mnemonicLen: number) => WebAssembly.Memory;
        keyPair: () => WebAssembly.Memory;
        keyPairFromSeed: () => WebAssembly.Memory;
        keyPairFromSecretKey: () => WebAssembly.Memory;
        sign: (messageLen: number) => WebAssembly.Memory;
        verify: (messageLen: number) => WebAssembly.Memory;
        encryptAsymmetric: (messageLen: number, additionalDataLen: number) => WebAssembly.Memory;
        decryptAsymmetric: (encryptedLen: number, additionalDataLen: number) => WebAssembly.Memory;
        encryptSymmetric: (messageLen: number, additionalDataLen: number) => WebAssembly.Memory;
        decryptSymmetric: (encryptedLen: number, additionalDataLen: number) => WebAssembly.Memory;
        merkleRoot: (leavesLen: number) => WebAssembly.Memory;
    };
    constants: {
        commit_BYTES: number;
        commit_details_BYTES: number;
        commit_nonce_BYTES: number;
        getProofLen: (identitiesLen: number, identityChosenIndex: number) => number;
        crypto_hash_sha512_BYTES: number;
        crypto_box_poly1305_AUTHTAGBYTES: number;
        crypto_box_x25519_PUBLICKEYBYTES: number;
        crypto_box_x25519_SECRETKEYBYTES: number;
        crypto_box_x25519_NONCEBYTES: number;
        crypto_kx_SESSIONKEYBYTES: number;
        crypto_aead_chacha20poly1305_ietf_KEYBYTES: number;
        crypto_sign_ed25519_BYTES: number;
        crypto_sign_ed25519_SEEDBYTES: number;
        crypto_sign_ed25519_PUBLICKEYBYTES: number;
        crypto_sign_ed25519_SECRETKEYBYTES: number;
    };
};
export { SignKeyPair, Proof };
export default ondemos;
//# sourceMappingURL=index.d.ts.map