import type { Proof } from "../../ts/types";
import { type IProverParams, type TallyData } from "./types";
/**
 * Prover class is designed to prove message processing and tally proofs on-chain.
 */
export declare class Prover {
    /**
     * Poll contract typechain wrapper
     */
    private pollContract;
    /**
     * MessageProcessor contract typechain wrapper
     */
    private messageProcessorContract;
    /**
     * MACI contract typechain wrapper
     */
    private maciContract;
    /**
     * VerifyingKeysRegistry contract typechain wrapper
     */
    private verifyingKeysRegistryContract;
    /**
     * Verifier contract typechain wrapper
     */
    private verifierContract;
    /**
     * Tally contract typechain wrapper
     */
    private tallyContract;
    /**
     * Initialize class properties
     *
     * @param {IProverParams} params - constructor params
     */
    constructor({ pollContract, messageProcessorContract, maciContract, verifyingKeysRegistryContract, verifierContract, tallyContract, }: IProverParams);
    /**
     * Prove message processing on-chain
     *
     * @param proofs - proofs
     */
    proveMessageProcessing(proofs: Proof[]): Promise<void>;
    /**
     * Prove tally on-chain
     *
     * @param proofs tally proofs
     */
    proveTally(proofs: Proof[]): Promise<void>;
    /**
     * Submit tally results on chain
     *
     * @param tallyData - tally data
     * @param recipients - number of recipients
     */
    submitResults(tallyData: TallyData, recipients?: number): Promise<void>;
    /**
     * Validate commitment
     *
     * @param commitment - off-chain commitment
     * @param commitmentOnChain - on-chain commitment
     * @throws error if commitments don't match
     */
    private validateCommitment;
    /**
     * Validate public input hash
     *
     * @param publicInputs - off-chain public input hash
     * @param publicInputsOnChain - on-chain public input hash
     * @throws error if public input hashes don't match
     */
    private validatePublicInput;
}
//# sourceMappingURL=Prover.d.ts.map