import { Groth16Proof, PublicSignals } from 'snarkjs';
/**
 * The circuits package includes a browser compatible prover. This prover loads the proving keys from a remote URL.
 * By default this url is https://keys.unirep.io/${version}/.
 *
 * The server is expected to serve the `zkey`, `wasm`, and `vkey` files at their respective names in the provided subpath.
 * e.g. for the above url the signup zkey is at https://keys.unirep.io/${version}/signup.zkey`.
 * @param serverUrl The server url to the `zkey`, `wasm`, and `vkey` files.
 * Default: `https://keys.unirep.io/${version}/`
 *
 * @note
 * :::caution
 * The keys included are not safe for production use. A phase 2 trusted setup needs to be done before use.
 * :::
 *
 * @example
 * **Default key server**
 * ```ts
 * import { Circuit } from '@unirep/circuits'
 * import prover from '@unirep/circuits/provers/web'
 *
 * await prover.genProofAndPublicSignals(Circuit.signup, {
 *  // circuit inputs
 * })
 * ```
 *
 * **Custom key server**
 * ```ts
 * import { Circuit } from '@unirep/circuits'
 * import { WebProver } from '@unirep/circuits/provers/web'
 *
 * // For a local key server
 * const prover = new WebProver('http://localhost:8000/keys/')
 * await prover.genProofAndPublicSignals(Circuit.signup, {
 *  // circuit inputs
 * })
 * ```
 *
 */
export declare class WebProver {
    cache: {
        [key: string]: any;
    };
    url: string;
    constructor(serverUrl?: string);
    /**
     * Get key object from the server.
     * @param circuitUrl The url to the a `vkey`, a `zkey`s or a `wasm`.
     * @returns The `vkey`, the `zkey`s or the `wasm` object.
     */
    getKey(circuitUrl: string): Promise<any>;
    /**
     * Load proving keys for a circuit into memory. Future proofs using these keys will not need to wait for download.
     * :::tip
     * Use this function without `await` to start the download in the background.
     * :::
     * @param circuitName Name of the circuit, which can be chosen from `Circuit`
     * @example
     * ```ts
     * await webProver.warmKeys(circuitName: string)
     * ```
     */
    warmKeys(circuitName: string): Promise<void>;
    /**
     * The function returns true if the proof of the circuit is valid, false otherwise.
     * @param circuitName Name of the circuit, which can be chosen from `Circuit`
     * @param publicSignals The snark public signals that are generated from `genProofAndPublicSignals`
     * @param proof The snark proof that is generated from `genProofAndPublicSignals`
     * @returns True if the proof is valid, false otherwise
     */
    verifyProof(circuitName: string, publicSignals: PublicSignals, proof: Groth16Proof): Promise<boolean>;
    /**
     * Generate proof and public signals with `snarkjs.groth16.fullProve`
     * @param circuitName
     * @param inputs Name of the circuit, which can be chosen from `Circuit`
     * @returns Snark proof and public signals
     */
    genProofAndPublicSignals(circuitName: string, inputs: any): Promise<{
        proof: Groth16Proof;
        publicSignals: PublicSignals;
    }>;
    /**
     * Get vkey from a remote URL.
     * @param circuitName Name of the circuit, which can be chosen from `Circuit`
     * @returns vkey of the circuit
     */
    getVKey(circuitName: string): Promise<any>;
}
declare const _default: WebProver;
export default _default;
