import { type IVerifyingKeyObjectParams } from "@maci-protocol/domainobjs";
import { type PublicSignals, type Groth16Proof } from "snarkjs";
import type { IGenerateProofOptions, ISnarkJSVerificationKey, FullProveResult, Proof } from "./types";
/**
 * Generate a zk-SNARK proof using snarkjs
 * @param inputs - the inputs to the circuit
 * @param zkeyPath - the path to the zkey
 * @param wasmPath - the path to the wasm witness
 * @returns the zk-SNARK proof and public signals
 */
export declare const generateProofSnarkjs: ({ inputs, zkeyPath, wasmPath, }: IGenerateProofOptions) => Promise<FullProveResult>;
/**
 * Generate a zk-SNARK proof using rapidnsark
 * @param inputs - the inputs to the circuit
 * @param zkeyPath - the path to the zkey
 * @param witnessExePath - the path to the compiled witness binary
 * @param rapidsnarkExePath - the path to the rapidnsark binary
 * @returns the zk-SNARK proof and public signals
 */
export declare const generateProofRapidSnark: ({ inputs, zkeyPath, witnessExePath, rapidsnarkExePath, }: IGenerateProofOptions) => Promise<FullProveResult>;
/**
 * Verify a zk-SNARK proof using snarkjs
 * @param publicInputs - the public inputs to the circuit
 * @param proof - the proof
 * @param verifyingKey - the verification key
 * @param cleanup - whether to cleanup the threads or not
 * @returns whether the proof is valid or not
 */
export declare const verifyProof: (publicInputs: PublicSignals, proof: Groth16Proof, verifyingKey: ISnarkJSVerificationKey, cleanup?: boolean) => Promise<boolean>;
/**
 * Extract the Verification Key from a zKey
 * @param zkeyPath - the path to the zKey
 * @param cleanup - whether to cleanup the threads or not
 * @returns the verification key
 */
export declare const extractVerifyingKey: (zkeyPath: string, cleanup?: boolean) => Promise<IVerifyingKeyObjectParams>;
/**
 * Interface that represents read proofs arguments
 */
interface IReadProofsArgs {
    files: string[];
    folder: string;
    type: "tally" | "process";
}
/**
 * Read and parse proofs
 *
 * @param args - read proofs arguments
 * @returns proofs
 */
export declare function readProofs({ files, folder, type }: IReadProofsArgs): Promise<Proof[]>;
export {};
//# sourceMappingURL=proofs.d.ts.map