import { MaciState } from "@maci-protocol/core";
import type { IGenerateProofsOptions, IPrepareStateParams, IProofGeneratorParams, TallyData } from "./types";
import type { Proof } from "../../ts/types";
/**
 * Proof generator class for message processing and tally.
 */
export declare class ProofGenerator {
    /**
     * Current poll
     */
    private poll;
    /**
     * MACI contract address
     */
    private maciContractAddress;
    /**
     * Tally contract address
     */
    private tallyContractAddress;
    /**
     * The directory to store the proofs
     */
    private outputDir;
    /**
     * The file to store the tally proof
     */
    private tallyOutputFile;
    /**
     * Message processing circuit files
     */
    private messageProcessor;
    /**
     * Tally circuit files
     */
    private tally;
    /**
     * Voting mode
     */
    private mode;
    /**
     * Path to the rapidsnark binary
     */
    private rapidsnark?;
    /**
     * Get maci state from local file or from contract
     *
     * @param {IPrepareStateParams} params - params to prepare maci state
     * @returns {MaciState} maci state
     */
    static prepareState({ maciContract, pollContract, pollId, maciPrivateKey, coordinatorKeypair, signer, ipfsMessageBackupFiles, outputDir, options: { transactionHash, stateFile, startBlock, endBlock, blocksPerBatch }, }: IPrepareStateParams): Promise<MaciState>;
    /**
     * Initialize class properties
     *
     * @param {IProofGeneratorParams} params - initialization params
     */
    constructor({ poll, messageProcessor, tally, rapidsnark, maciContractAddress, tallyContractAddress, outputDir, tallyOutputFile, mode, }: IProofGeneratorParams);
    /**
     * Generate message processing proofs
     *
     * @returns message processing proofs
     */
    generateMpProofs(options?: IGenerateProofsOptions): Promise<Proof[]>;
    /**
     * Generate tally proofs
     *
     * @param networkName - current network name
     * @param chainId - current chain id
     * @returns tally proofs
     */
    generateTallyProofs(networkName: string, chainId?: string, options?: IGenerateProofsOptions): Promise<{
        proofs: Proof[];
        tallyData: TallyData;
    }>;
    /**
     * Generic function for proofs generation
     *
     * @param {TCircuitInputs} circuitInputs - circuit inputs
     * @param {ICircuitFiles} circuitFiles - circuit files (zkey, witnessGenerator, wasm)
     * @param outputFile - output file
     * @returns proofs
     */
    private generateProofs;
}
//# sourceMappingURL=ProofGenerator.d.ts.map