import { ContractFactory, ContractTransactionResponse } from "ethers";
import type { Signer, BigNumberish, AddressLike, ContractDeployTransaction, ContractRunner } from "ethers";
import type { PayableOverrides } from "../../common";
import type { MACI, MACIInterface } from "../../contracts/MACI";
type MACIConstructorParams = [linkLibraryAddresses: MACILibraryAddresses, signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
export declare class MACI__factory extends ContractFactory {
    constructor(...args: MACIConstructorParams);
    static linkBytecode(linkLibraryAddresses: MACILibraryAddresses): string;
    getDeployTransaction(_pollFactory: AddressLike, _messageProcessorFactory: AddressLike, _tallyFactory: AddressLike, _signUpPolicy: AddressLike, _stateTreeDepth: BigNumberish, _emptyBallotRoots: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ], overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractDeployTransaction>;
    deploy(_pollFactory: AddressLike, _messageProcessorFactory: AddressLike, _tallyFactory: AddressLike, _signUpPolicy: AddressLike, _stateTreeDepth: BigNumberish, _emptyBallotRoots: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ], overrides?: PayableOverrides & {
        from?: string;
    }): Promise<MACI & {
        deploymentTransaction(): ContractTransactionResponse;
    }>;
    connect(runner: ContractRunner | null): MACI__factory;
    static readonly bytecode = "0x61014060405260405161215e38038061215e833981016040819052610023916103e2565b61003c600760008051602061213e83398151915261010f565b50600b805460018101825560009190915260008051602061213e8339815191527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909101556001600160a01b0380871660c05285811660e0528481166101005283166101205260ff821660808190526100b69060026105c5565b60a0526100c66000826005610361565b5060408051808201909152600180825260208201526100e4906102e6565b60000361010457604051633d7ba68560e21b815260040160405180910390fd5b50505050505061064e565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210610151576040516361c0541760e11b815260040160405180910390fd5b81600003610172576040516314b48df160e11b815260040160405180910390fd5b6000828152600384016020526040902054156101a1576040516312c50cad60e11b815260040160405180910390fd5b8254600180850154906101b59083906105d8565b6001821b10156101cb576101c8816105eb565b90505b600185018190558360005b828110156102a8578084901c60011660010361028c57604080518082018252600083815260028a01602090815290839020548252810184905290516314d2f97b60e11b815273__$6574937f64fc1d7710ec0e28b7a36713bb$__916329a5f2f6916102449190600401610604565b602060405180830381865af4158015610261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102859190610635565b91506102a0565b600081815260028801602052604090208290555b6001016101d6565b506102b2836105eb565b8087556000928352600287016020908152604080852084905587855260038901909152909220919091559150505b92915050565b6040516314d2f97b60e11b815260009073__$6574937f64fc1d7710ec0e28b7a36713bb$ $ce9c2c925f157047e54fa833ec4e61409f$__9063248f6677906106f1908590600401611676565b602060405180830381865af415801561070e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073291906116a7565b92915050565b6000818152600a602052604081205480820361076757604051632cb4506160e21b815260040160405180910390fd5b610772600182611663565b9392505050565b600b818154811061078957600080fd5b600091825260209091200154905081565b6000600080516020611a298339815191526002836040516020016107be91906116c0565b60408051601f19818403018152908290526107d8916116f6565b602060405180830381855afa1580156107f5573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061081891906116a7565b6107329190611728565b600061082c610fe4565b8381526020810183905261083f81610847565b949350505050565b6040516314d2f97b60e11b815260009073__$6574937f64fc1d7710ec0e28b7a36713bb$__906329a5f2f6906106f1908590600401611760565b60408051606081018252600080825260208201819052918101919091526005805460018101909155608083015180516020909101516108c09190610d3d565b6108dd5760405163145a1fdd60e31b815260040160405180910390fd5b60006040518060a00160405280306001600160a01b031681526020018560a001516001600160a01b031681526020018560c001516001600160a01b031681526020018561010001516001600160a01b031681526020018561012001516001600160a01b031681525090506000604051806101400160405280866000015181526020018660200151815260200186604001518152602001866060015160ff16815260200186608001518152602001838152602001600060018860400151602001516109a79190611788565b60ff16600581106109ba576109ba61174a565b015481526020018481526020018661014001518152602001866101600151815250905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b332c20836040518263ffffffff1660e01b8152600401610a2b91906117e6565b6020604051808303816000875af1158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e91906118ee565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338fa9c568860a001518960c00151858b60e001516040518563ffffffff1660e01b8152600401610ad0949392919061192d565b6020604051808303816000875af1158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1391906118ee565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663363448738960a001518a60c0015186868d60e001516040518663ffffffff1660e01b8152600401610b77959493929190611963565b6020604051808303816000875af1158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba91906118ee565b604080516060810182526001600160a01b038087168252858116602080840191825282861684860190815260008d815260068352869020855181549086166001600160a01b031991821617825593516001820180549187169186169190911790559051600290910180549190941692169190911790915560808c015190810151905160e08d01519351949550919390927f38b2d18bb65cc91d7b436014cf44c8298b13bee60cc18d9e8efec26d1df3189091610c77918c91611998565b60405180910390a398975050505050505050565b604051630926f44b60e31b815260009073__$20527677031d76601747626a9845039fe4$__90634937a258906106f19085906004016119ac565b60008160058110610cd557600080fd5b0154905081565b6040516304b98e1d60e31b815260009073__$dc01a9744591ab014bc46a3b7671cdaefb$__906325cc70e8906106f19085906004016119d4565b6000600b8281548110610d2b57610d2b61174a565b90600052602060002001549050919050565b600080600080516020611a2983398151915284850990506000600080516020611a2983398151915284850990506000600080516020611a2983398151915282600080516020611a2983398151915285620292fc090890506000600080516020611a298339815191528084600080516020611a2983398151915287620292f809096001089050610ddb8282600080516020611a29833981519152610fa9565b15979650505050505050565b6000600080516020611a298339815191528210610e17576040516361c0541760e11b815260040160405180910390fd5b81600003610e38576040516314b48df160e11b815260040160405180910390fd5b600082815260038401602052604090205415610e67576040516312c50cad60e11b815260040160405180910390fd5b825460018085015490610e7b9083906119fc565b6001821b1015610e9157610e8e81611a0f565b90505b600185018190558360005b82811015610f6e578084901c600116600103610f5257604080518082018252600083815260028a01602090815290839020548252810184905290516314d2f97b60e11b815273__$6574937f64fc1d7710ec0e28b7a36713bb$ ";
    static readonly abi: readonly [{
        readonly inputs: readonly [{
            readonly internalType: "contract IPollFactory";
            readonly name: "_pollFactory";
            readonly type: "address";
        }, {
            readonly internalType: "contract IMessageProcessorFactory";
            readonly name: "_messageProcessorFactory";
            readonly type: "address";
        }, {
            readonly internalType: "contract ITallyFactory";
            readonly name: "_tallyFactory";
            readonly type: "address";
        }, {
            readonly internalType: "contract IBasePolicy";
            readonly name: "_signUpPolicy";
            readonly type: "address";
        }, {
            readonly internalType: "uint8";
            readonly name: "_stateTreeDepth";
            readonly type: "uint8";
        }, {
            readonly internalType: "uint256[5]";
            readonly name: "_emptyBallotRoots";
            readonly type: "uint256[5]";
        }];
        readonly stateMutability: "payable";
        readonly type: "constructor";
    }, {
        readonly inputs: readonly [];
        readonly name: "InvalidPublicKey";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "LeafAlreadyExists";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "LeafCannotBeZero";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "LeafGreaterThanSnarkScalarField";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "pollId";
            readonly type: "uint256";
        }];
        readonly name: "PollDoesNotExist";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "PoseidonHashLibrariesNotLinked";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "TooManySignups";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "UserNotSignedUp";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "_pollId";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "_coordinatorPublicKeyX";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "_coordinatorPublicKeyY";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly internalType: "enum DomainObjs.Mode";
            readonly name: "_mode";
            readonly type: "uint8";
        }];
        readonly name: "DeployPoll";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "_stateIndex";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "_timestamp";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "_userPublicKeyX";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "_userPublicKeyY";
            readonly type: "uint256";
        }];
        readonly name: "SignUp";
        readonly type: "event";
    }, {
        readonly inputs: readonly [];
        readonly name: "MESSAGE_DATA_LENGTH";
        readonly outputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "";
            readonly type: "uint8";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "uint256";
                readonly name: "startDate";
                readonly type: "uint256";
            }, {
                readonly internalType: "uint256";
                readonly name: "endDate";
                readonly type: "uint256";
            }, {
                readonly components: readonly [{
                    readonly internalType: "uint8";
                    readonly name: "tallyProcessingStateTreeDepth";
                    readonly type: "uint8";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "voteOptionTreeDepth";
                    readonly type: "uint8";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "stateTreeDepth";
                    readonly type: "uint8";
                }];
                readonly internalType: "struct Params.TreeDepths";
                readonly name: "treeDepths";
                readonly type: "tuple";
            }, {
                readonly internalType: "uint8";
                readonly name: "messageBatchSize";
                readonly type: "uint8";
            }, {
                readonly components: readonly [{
                    readonly internalType: "uint256";
                    readonly name: "x";
                    readonly type: "uint256";
                }, {
                    readonly internalType: "uint256";
                    readonly name: "y";
                    readonly type: "uint256";
                }];
                readonly internalType: "struct DomainObjs.PublicKey";
                readonly name: "coordinatorPublicKey";
                readonly type: "tuple";
            }, {
                readonly internalType: "address";
                readonly name: "verifier";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "verifyingKeysRegistry";
                readonly type: "address";
            }, {
                readonly internalType: "enum DomainObjs.Mode";
                readonly name: "mode";
                readonly type: "uint8";
            }, {
                readonly internalType: "address";
                readonly name: "policy";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "initialVoiceCreditProxy";
                readonly type: "address";
            }, {
                readonly internalType: "address[]";
                readonly name: "relayers";
                readonly type: "address[]";
            }, {
                readonly internalType: "uint256";
                readonly name: "voteOptions";
                readonly type: "uint256";
            }];
            readonly internalType: "struct IMACI.DeployPollArgs";
            readonly name: "args";
            readonly type: "tuple";
        }];
        readonly name: "deployPoll";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "poll";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "messageProcessor";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "tally";
                readonly type: "address";
            }];
            readonly internalType: "struct IMACI.PollContracts";
            readonly name: "";
            readonly type: "tuple";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "emptyBallotRoots";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "_pollId";
            readonly type: "uint256";
        }];
        readonly name: "getPoll";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "poll";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "messageProcessor";
                readonly type: "address";
            }, {
                readonly internalType: "address";
                readonly name: "tally";
                readonly type: "address";
            }];
            readonly internalType: "struct IMACI.PollContracts";
            readonly name: "pollContracts";
            readonly type: "tuple";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "_publicKeyHash";
            readonly type: "uint256";
        }];
        readonly name: "getStateIndex";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "_index";
            readonly type: "uint256";
        }];
        readonly name: "getStateRootOnIndexedSignUp";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "stateRoot";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getStateTreeRoot";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "root";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256[2]";
            readonly name: "array";
            readonly type: "uint256[2]";
        }];
        readonly name: "hash2";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256[3]";
            readonly name: "array";
            readonly type: "uint256[3]";
        }];
        readonly name: "hash3";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256[4]";
            readonly name: "array";
            readonly type: "uint256[4]";
        }];
        readonly name: "hash4";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256[5]";
            readonly name: "array";
            readonly type: "uint256[5]";
        }];
        readonly name: "hash5";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "left";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "right";
            readonly type: "uint256";
        }];
        readonly name: "hashLeftRight";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "leanIMTData";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "size";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "depth";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "maxSignups";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "messageProcessorFactory";
        readonly outputs: readonly [{
            readonly internalType: "contract IMessageProcessorFactory";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "nextPollId";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "pollFactory";
        readonly outputs: readonly [{
            readonly internalType: "contract IPollFactory";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "polls";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "poll";
            readonly type: "address";
        }, {
            readonly internalType: "address";
            readonly name: "messageProcessor";
            readonly type: "address";
        }, {
            readonly internalType: "address";
            readonly name: "tally";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256[]";
            readonly name: "array";
            readonly type: "uint256[]";
        }];
        readonly name: "sha256Hash";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "result";
            readonly type: "uint256";
        }];
        readonly stateMutability: "pure";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "uint256";
                readonly name: "x";
                readonly type: "uint256";
            }, {
                readonly internalType: "uint256";
                readonly name: "y";
                readonly type: "uint256";
            }];
            readonly internalType: "struct DomainObjs.PublicKey";
            readonly name: "_publicKey";
            readonly type: "tuple";
        }, {
            readonly internalType: "bytes";
            readonly name: "_signUpPolicyData";
            readonly type: "bytes";
        }];
        readonly name: "signUp";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "signUpPolicy";
        readonly outputs: readonly [{
            readonly internalType: "contract IBasePolicy";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "stateRootsOnSignUp";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "stateTreeDepth";
        readonly outputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "";
            readonly type: "uint8";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "tallyFactory";
        readonly outputs: readonly [{
            readonly internalType: "contract ITallyFactory";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "totalSignups";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "signUps";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }];
    static createInterface(): MACIInterface;
    static connect(address: string, runner?: ContractRunner | null): MACI;
}
export interface MACILibraryAddresses {
    ["contracts/crypto/PoseidonT3.sol:PoseidonT3"]: string;
    ["contracts/crypto/PoseidonT5.sol:PoseidonT5"]: string;
    ["contracts/crypto/PoseidonT6.sol:PoseidonT6"]: string;
    ["contracts/crypto/PoseidonT4.sol:PoseidonT4"]: string;
}
export {};
//# sourceMappingURL=MACI__factory.d.ts.map