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 TallyInterface extends Interface {
    getFunction(nameOrSignature: "MESSAGE_DATA_LENGTH" | "addTallyResults" | "getAppendedBytes" | "getPublicCircuitInputs" | "getTallyResults" | "hash2" | "hash3" | "hash4" | "hash5" | "hashLeftRight" | "initialize" | "initialized" | "isTallied" | "messageProcessor" | "mode" | "poll" | "sbCommitment" | "sha256Hash" | "tallyBatchNum" | "tallyCommitment" | "tallyVotes" | "totalSpent" | "totalTallyResults" | "updateSbCommitment" | "verifier" | "verifyPerVoteOptionSpentVoiceCredits" | "verifySpentVoiceCredits" | "verifyTallyProof" | "verifyTallyResult" | "verifyingKeysRegistry"): FunctionFragment;
    encodeFunctionData(functionFragment: "MESSAGE_DATA_LENGTH", values?: undefined): string;
    encodeFunctionData(functionFragment: "addTallyResults", values: [ITally.AddTallyResultsArgsStruct]): string;
    encodeFunctionData(functionFragment: "getAppendedBytes", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPublicCircuitInputs", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getTallyResults", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "hash2", values: [[BigNumberish, BigNumberish]]): string;
    encodeFunctionData(functionFragment: "hash3", values: [[BigNumberish, BigNumberish, BigNumberish]]): string;
    encodeFunctionData(functionFragment: "hash4", values: [[BigNumberish, BigNumberish, BigNumberish, BigNumberish]]): string;
    encodeFunctionData(functionFragment: "hash5", values: [
        [
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish
        ]
    ]): string;
    encodeFunctionData(functionFragment: "hashLeftRight", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "initialize", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialized", values?: undefined): string;
    encodeFunctionData(functionFragment: "isTallied", values?: undefined): string;
    encodeFunctionData(functionFragment: "messageProcessor", values?: undefined): string;
    encodeFunctionData(functionFragment: "mode", values?: undefined): string;
    encodeFunctionData(functionFragment: "poll", values?: undefined): string;
    encodeFunctionData(functionFragment: "sbCommitment", values?: undefined): string;
    encodeFunctionData(functionFragment: "sha256Hash", values: [BigNumberish[]]): 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: "verifier", 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;
    encodeFunctionData(functionFragment: "verifyingKeysRegistry", values?: undefined): string;
    decodeFunctionResult(functionFragment: "MESSAGE_DATA_LENGTH", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addTallyResults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAppendedBytes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPublicCircuitInputs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTallyResults", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hash2", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hash3", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hash4", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hash5", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hashLeftRight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTallied", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "messageProcessor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mode", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sbCommitment", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sha256Hash", 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: "verifier", 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;
    decodeFunctionResult(functionFragment: "verifyingKeysRegistry", data: BytesLike): Result;
}
export interface Tally extends BaseContract {
    connect(runner?: ContractRunner | null): Tally;
    waitForDeployment(): Promise<this>;
    interface: TallyInterface;
    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>;
    MESSAGE_DATA_LENGTH: TypedContractMethod<[], [bigint], "view">;
    addTallyResults: TypedContractMethod<[
        args: ITally.AddTallyResultsArgsStruct
    ], [
        void
    ], "nonpayable">;
    getAppendedBytes: TypedContractMethod<[], [string], "view">;
    getPublicCircuitInputs: TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish
    ], [
        bigint[]
    ], "view">;
    getTallyResults: TypedContractMethod<[
        index: BigNumberish
    ], [
        ITally.TallyResultStructOutput
    ], "view">;
    hash2: TypedContractMethod<[
        array: [BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    hash3: TypedContractMethod<[
        array: [BigNumberish, BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    hash4: TypedContractMethod<[
        array: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    hash5: TypedContractMethod<[
        array: [
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish
        ]
    ], [
        bigint
    ], "view">;
    hashLeftRight: TypedContractMethod<[
        left: BigNumberish,
        right: BigNumberish
    ], [
        bigint
    ], "view">;
    initialize: TypedContractMethod<[], [void], "nonpayable">;
    initialized: TypedContractMethod<[], [boolean], "view">;
    isTallied: TypedContractMethod<[], [boolean], "view">;
    messageProcessor: TypedContractMethod<[], [string], "view">;
    mode: TypedContractMethod<[], [bigint], "view">;
    poll: TypedContractMethod<[], [string], "view">;
    sbCommitment: TypedContractMethod<[], [bigint], "view">;
    sha256Hash: TypedContractMethod<[array: BigNumberish[]], [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">;
    verifier: TypedContractMethod<[], [string], "view">;
    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">;
    verifyingKeysRegistry: TypedContractMethod<[], [string], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "MESSAGE_DATA_LENGTH"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "addTallyResults"): TypedContractMethod<[
        args: ITally.AddTallyResultsArgsStruct
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getAppendedBytes"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "getPublicCircuitInputs"): TypedContractMethod<[
        _batchStartIndex: BigNumberish,
        _newTallyCommitment: BigNumberish
    ], [
        bigint[]
    ], "view">;
    getFunction(nameOrSignature: "getTallyResults"): TypedContractMethod<[
        index: BigNumberish
    ], [
        ITally.TallyResultStructOutput
    ], "view">;
    getFunction(nameOrSignature: "hash2"): TypedContractMethod<[
        array: [BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "hash3"): TypedContractMethod<[
        array: [BigNumberish, BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "hash4"): TypedContractMethod<[
        array: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "hash5"): TypedContractMethod<[
        array: [
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish,
            BigNumberish
        ]
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "hashLeftRight"): TypedContractMethod<[
        left: BigNumberish,
        right: BigNumberish
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "initialize"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "initialized"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "isTallied"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "messageProcessor"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "mode"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "poll"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "sbCommitment"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "sha256Hash"): TypedContractMethod<[array: BigNumberish[]], [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: "verifier"): TypedContractMethod<[], [string], "view">;
    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">;
    getFunction(nameOrSignature: "verifyingKeysRegistry"): TypedContractMethod<[], [string], "view">;
    filters: {};
}
//# sourceMappingURL=Tally.d.ts.map