import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common";
export declare namespace ITally {
    type AddTallyResultsArgsStruct = {
        voteOptionIndices: BigNumberish[];
        tallyResults: BigNumberish[];
        tallyResultProofs: BigNumberish[][][];
        totalSpent: BigNumberish;
        totalSpentSalt: BigNumberish;
        tallyResultSalt: BigNumberish;
        newResultsCommitment: BigNumberish;
        spentVoiceCreditsHash: BigNumberish;
        perVOSpentVoiceCreditsHash: BigNumberish;
    };
    type AddTallyResultsArgsStructOutput = [
        voteOptionIndices: bigint[],
        tallyResults: bigint[],
        tallyResultProofs: bigint[][][],
        totalSpent: bigint,
        totalSpentSalt: bigint,
        tallyResultSalt: bigint,
        newResultsCommitment: bigint,
        spentVoiceCreditsHash: bigint,
        perVOSpentVoiceCreditsHash: bigint
    ] & {
        voteOptionIndices: bigint[];
        tallyResults: bigint[];
        tallyResultProofs: bigint[][][];
        totalSpent: bigint;
        totalSpentSalt: bigint;
        tallyResultSalt: bigint;
        newResultsCommitment: bigint;
        spentVoiceCreditsHash: bigint;
        perVOSpentVoiceCreditsHash: bigint;
    };
    type TallyResultStruct = {
        value: BigNumberish;
        isSet: boolean;
    };
    type TallyResultStructOutput = [value: bigint, isSet: boolean] & {
        value: bigint;
        isSet: boolean;
    };
}
export interface ITallyInterface extends Interface {
    getFunction(nameOrSignature: "addTallyResults" | "getPublicCircuitInputs" | "getTallyResults" | "isTallied" | "sbCommitment" | "tallyBatchNum" | "tallyCommitment" | "tallyVotes" | "totalSpent" | "totalTallyResults" | "updateSbCommitment" | "verifyPerVoteOptionSpentVoiceCredits" | "verifySpentVoiceCredits" | "verifyTallyProof" | "verifyTallyResult"): FunctionFragment;
    encodeFunctionData(functionFragment: "addTallyResults", values: [ITally.AddTallyResultsArgsStruct]): string;
    encodeFunctionData(functionFragment: "getPublicCircuitInputs", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getTallyResults", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "isTallied", values?: undefined): string;
    encodeFunctionData(functionFragment: "sbCommitment", values?: undefined): string;
    encodeFunctionData(functionFragment: "tallyBatchNum", values?: undefined): string;
    encodeFunctionData(functionFragment: "tallyCommitment", values?: undefined): string;
    encodeFunctionData(functionFragment: "tallyVotes", values: [BigNumberish, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "totalSpent", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalTallyResults", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateSbCommitment", values?: undefined): string;
    encodeFunctionData(functionFragment: "verifyPerVoteOptionSpentVoiceCredits", values: [
        BigNumberish,
        BigNumberish,
        BigNumberish[][],
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "verifySpentVoiceCredits", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "verifyTallyProof", values: [BigNumberish, BigNumberish, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "verifyTallyResult", values: [
        BigNumberish,
        BigNumberish,
        BigNumberish[][],
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ]): string;
    decodeFunctionResult(functionFragment: "addTallyResults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPublicCircuitInputs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTallyResults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTallied", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sbCommitment", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tallyBatchNum", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tallyCommitment", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tallyVotes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSpent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalTallyResults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateSbCommitment", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "verifyPerVoteOptionSpentVoiceCredits", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "verifySpentVoiceCredits", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "verifyTallyProof", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "verifyTallyResult", data: BytesLike): Result;
}
export interface ITally extends BaseContract {
    connect(runner?: ContractRunner | null): ITally;
    waitForDeployment(): Promise<this>;
    interface: ITallyInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    addTallyResults: TypedContractMethod<[
        args: ITally.AddTallyResultsArgsStruct
    ], [
        void
    ], "nonpayable">;
    getPublicCircuitInputs: TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish
    ], [
        bigint[]
    ], "view">;
    getTallyResults: TypedContractMethod<[
        index: BigNumberish
    ], [
        ITally.TallyResultStructOutput
    ], "view">;
    isTallied: TypedContractMethod<[], [boolean], "view">;
    sbCommitment: TypedContractMethod<[], [bigint], "view">;
    tallyBatchNum: TypedContractMethod<[], [bigint], "view">;
    tallyCommitment: TypedContractMethod<[], [bigint], "view">;
    tallyVotes: TypedContractMethod<[
        _newTallyCommitment: BigNumberish,
        _proof: BigNumberish[]
    ], [
        void
    ], "nonpayable">;
    totalSpent: TypedContractMethod<[], [bigint], "view">;
    totalTallyResults: TypedContractMethod<[], [bigint], "view">;
    updateSbCommitment: TypedContractMethod<[], [void], "nonpayable">;
    verifyPerVoteOptionSpentVoiceCredits: TypedContractMethod<[
        _voteOptionIndex: BigNumberish,
        _spent: BigNumberish,
        _spentProof: BigNumberish[][],
        _spentSalt: BigNumberish,
        _voteOptionTreeDepth: BigNumberish,
        _spentVoiceCreditsHash: BigNumberish,
        _resultCommitment: BigNumberish
    ], [
        boolean
    ], "view">;
    verifySpentVoiceCredits: TypedContractMethod<[
        _totalSpent: BigNumberish,
        _totalSpentSalt: BigNumberish,
        _resultCommitment: BigNumberish,
        _perVoteOptionSpentVoiceCreditsHash: BigNumberish
    ], [
        boolean
    ], "view">;
    verifyTallyProof: TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish,
        _proof: BigNumberish[]
    ], [
        boolean
    ], "view">;
    verifyTallyResult: TypedContractMethod<[
        _voteOptionIndex: BigNumberish,
        _tallyResult: BigNumberish,
        _tallyResultProof: BigNumberish[][],
        _tallyResultSalt: BigNumberish,
        _voteOptionTreeDepth: BigNumberish,
        _spentVoiceCreditsHash: BigNumberish,
        _perVoteOptionSpentVoiceCreditsHash: BigNumberish
    ], [
        boolean
    ], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "addTallyResults"): TypedContractMethod<[
        args: ITally.AddTallyResultsArgsStruct
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getPublicCircuitInputs"): TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish
    ], [
        bigint[]
    ], "view">;
    getFunction(nameOrSignature: "getTallyResults"): TypedContractMethod<[
        index: BigNumberish
    ], [
        ITally.TallyResultStructOutput
    ], "view">;
    getFunction(nameOrSignature: "isTallied"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "sbCommitment"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "tallyBatchNum"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "tallyCommitment"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "tallyVotes"): TypedContractMethod<[
        _newTallyCommitment: BigNumberish,
        _proof: BigNumberish[]
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "totalSpent"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalTallyResults"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "updateSbCommitment"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "verifyPerVoteOptionSpentVoiceCredits"): TypedContractMethod<[
        _voteOptionIndex: BigNumberish,
        _spent: BigNumberish,
        _spentProof: BigNumberish[][],
        _spentSalt: BigNumberish,
        _voteOptionTreeDepth: BigNumberish,
        _spentVoiceCreditsHash: BigNumberish,
        _resultCommitment: BigNumberish
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "verifySpentVoiceCredits"): TypedContractMethod<[
        _totalSpent: BigNumberish,
        _totalSpentSalt: BigNumberish,
        _resultCommitment: BigNumberish,
        _perVoteOptionSpentVoiceCreditsHash: BigNumberish
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "verifyTallyProof"): TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish,
        _proof: BigNumberish[]
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "verifyTallyResult"): TypedContractMethod<[
        _voteOptionIndex: BigNumberish,
        _tallyResult: BigNumberish,
        _tallyResultProof: BigNumberish[][],
        _tallyResultSalt: BigNumberish,
        _voteOptionTreeDepth: BigNumberish,
        _spentVoiceCreditsHash: BigNumberish,
        _perVoteOptionSpentVoiceCreditsHash: BigNumberish
    ], [
        boolean
    ], "view">;
    filters: {};
}
//# sourceMappingURL=ITally.d.ts.map