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 DomainObjs {
    type PublicKeyStruct = {
        x: BigNumberish;
        y: BigNumberish;
    };
    type PublicKeyStructOutput = [x: bigint, y: bigint] & {
        x: bigint;
        y: bigint;
    };
    type MessageStruct = {
        data: BigNumberish[];
    };
    type MessageStructOutput = [data: bigint[]] & {
        data: bigint[];
    };
}
export interface IPollInterface extends Interface {
    getFunction(nameOrSignature: "actualStateTreeDepth" | "coordinatorPublicKeyHash" | "currentSbCommitment" | "endDate" | "getBatchHashes" | "getMaciContract" | "getStartAndEndDate" | "getStateIndex" | "joinPoll" | "mergeState" | "messageBatchSize" | "padLastBatch" | "publishMessage" | "publishMessageBatch" | "relayMessagesBatch" | "startDate" | "stateMerged" | "totalSignups" | "totalSignupsAndMessages" | "treeDepths" | "voteOptions"): FunctionFragment;
    encodeFunctionData(functionFragment: "actualStateTreeDepth", values?: undefined): string;
    encodeFunctionData(functionFragment: "coordinatorPublicKeyHash", values?: undefined): string;
    encodeFunctionData(functionFragment: "currentSbCommitment", values?: undefined): string;
    encodeFunctionData(functionFragment: "endDate", values?: undefined): string;
    encodeFunctionData(functionFragment: "getBatchHashes", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMaciContract", values?: undefined): string;
    encodeFunctionData(functionFragment: "getStartAndEndDate", values?: undefined): string;
    encodeFunctionData(functionFragment: "getStateIndex", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "joinPoll", values: [
        BigNumberish,
        DomainObjs.PublicKeyStruct,
        BigNumberish,
        BigNumberish[],
        BytesLike,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "mergeState", values?: undefined): string;
    encodeFunctionData(functionFragment: "messageBatchSize", values?: undefined): string;
    encodeFunctionData(functionFragment: "padLastBatch", values?: undefined): string;
    encodeFunctionData(functionFragment: "publishMessage", values: [DomainObjs.MessageStruct, DomainObjs.PublicKeyStruct]): string;
    encodeFunctionData(functionFragment: "publishMessageBatch", values: [DomainObjs.MessageStruct[], DomainObjs.PublicKeyStruct[]]): string;
    encodeFunctionData(functionFragment: "relayMessagesBatch", values: [BigNumberish[], BytesLike]): string;
    encodeFunctionData(functionFragment: "startDate", values?: undefined): string;
    encodeFunctionData(functionFragment: "stateMerged", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSignups", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSignupsAndMessages", values?: undefined): string;
    encodeFunctionData(functionFragment: "treeDepths", values?: undefined): string;
    encodeFunctionData(functionFragment: "voteOptions", values?: undefined): string;
    decodeFunctionResult(functionFragment: "actualStateTreeDepth", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "coordinatorPublicKeyHash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "currentSbCommitment", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "endDate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBatchHashes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaciContract", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getStartAndEndDate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getStateIndex", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "joinPoll", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mergeState", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "messageBatchSize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "padLastBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "publishMessage", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "publishMessageBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "relayMessagesBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "startDate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stateMerged", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSignups", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSignupsAndMessages", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "treeDepths", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "voteOptions", data: BytesLike): Result;
}
export interface IPoll extends BaseContract {
    connect(runner?: ContractRunner | null): IPoll;
    waitForDeployment(): Promise<this>;
    interface: IPollInterface;
    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>;
    actualStateTreeDepth: TypedContractMethod<[], [bigint], "view">;
    coordinatorPublicKeyHash: TypedContractMethod<[], [bigint], "view">;
    currentSbCommitment: TypedContractMethod<[], [bigint], "view">;
    endDate: TypedContractMethod<[], [bigint], "view">;
    getBatchHashes: TypedContractMethod<[], [bigint[]], "view">;
    getMaciContract: TypedContractMethod<[], [string], "view">;
    getStartAndEndDate: TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            _startDate: bigint;
            _endDate: bigint;
        }
    ], "view">;
    getStateIndex: TypedContractMethod<[element: BigNumberish], [bigint], "view">;
    joinPoll: TypedContractMethod<[
        _nullifier: BigNumberish,
        _publicKey: DomainObjs.PublicKeyStruct,
        _stateRootIndex: BigNumberish,
        _proof: BigNumberish[],
        _signUpPolicyData: BytesLike,
        _initialVoiceCreditProxyData: BytesLike
    ], [
        void
    ], "nonpayable">;
    mergeState: TypedContractMethod<[], [void], "nonpayable">;
    messageBatchSize: TypedContractMethod<[], [bigint], "view">;
    padLastBatch: TypedContractMethod<[], [void], "nonpayable">;
    publishMessage: TypedContractMethod<[
        _message: DomainObjs.MessageStruct,
        _encryptionPublicKey: DomainObjs.PublicKeyStruct
    ], [
        void
    ], "nonpayable">;
    publishMessageBatch: TypedContractMethod<[
        _messages: DomainObjs.MessageStruct[],
        _encryptionPublicKeys: DomainObjs.PublicKeyStruct[]
    ], [
        void
    ], "nonpayable">;
    relayMessagesBatch: TypedContractMethod<[
        _messageHashes: BigNumberish[],
        _ipfsHash: BytesLike
    ], [
        void
    ], "nonpayable">;
    startDate: TypedContractMethod<[], [bigint], "view">;
    stateMerged: TypedContractMethod<[], [boolean], "view">;
    totalSignups: TypedContractMethod<[], [bigint], "view">;
    totalSignupsAndMessages: TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            totalSignups: bigint;
            numMsgs: bigint;
        }
    ], "view">;
    treeDepths: TypedContractMethod<[
    ], [
        [
            bigint,
            bigint,
            bigint
        ] & {
            tallyProcessingStateTreeDepth: bigint;
            voteOptionTreeDepth: bigint;
            stateTreeDepth: bigint;
        }
    ], "view">;
    voteOptions: TypedContractMethod<[], [bigint], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "actualStateTreeDepth"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "coordinatorPublicKeyHash"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "currentSbCommitment"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "endDate"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "getBatchHashes"): TypedContractMethod<[], [bigint[]], "view">;
    getFunction(nameOrSignature: "getMaciContract"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "getStartAndEndDate"): TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            _startDate: bigint;
            _endDate: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "getStateIndex"): TypedContractMethod<[element: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "joinPoll"): TypedContractMethod<[
        _nullifier: BigNumberish,
        _publicKey: DomainObjs.PublicKeyStruct,
        _stateRootIndex: BigNumberish,
        _proof: BigNumberish[],
        _signUpPolicyData: BytesLike,
        _initialVoiceCreditProxyData: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "mergeState"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "messageBatchSize"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "padLastBatch"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "publishMessage"): TypedContractMethod<[
        _message: DomainObjs.MessageStruct,
        _encryptionPublicKey: DomainObjs.PublicKeyStruct
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "publishMessageBatch"): TypedContractMethod<[
        _messages: DomainObjs.MessageStruct[],
        _encryptionPublicKeys: DomainObjs.PublicKeyStruct[]
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "relayMessagesBatch"): TypedContractMethod<[
        _messageHashes: BigNumberish[],
        _ipfsHash: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "startDate"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "stateMerged"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "totalSignups"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalSignupsAndMessages"): TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            totalSignups: bigint;
            numMsgs: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "treeDepths"): TypedContractMethod<[
    ], [
        [
            bigint,
            bigint,
            bigint
        ] & {
            tallyProcessingStateTreeDepth: bigint;
            voteOptionTreeDepth: bigint;
            stateTreeDepth: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "voteOptions"): TypedContractMethod<[], [bigint], "view">;
    filters: {};
}
//# sourceMappingURL=IPoll.d.ts.map