import { Signer, ContractFactory, BigNumberish, Overrides } from "ethers";
import type { Provider, TransactionRequest } from "@ethersproject/providers";
import type { PromiseOrValue } from "../../../common";
import type { MerkleForest, MerkleForestInterface } from "../../../contracts/trees/MerkleForest";
type MerkleForestConstructorParams = [linkLibraryAddresses: MerkleForestLibraryAddresses, signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
export declare class MerkleForest__factory extends ContractFactory {
    constructor(...args: MerkleForestConstructorParams);
    static linkBytecode(linkLibraryAddresses: MerkleForestLibraryAddresses): string;
    deploy(_forestLevels: PromiseOrValue<BigNumberish>, _subtreeLevels: PromiseOrValue<BigNumberish>, _hasher: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<MerkleForest>;
    getDeployTransaction(_forestLevels: PromiseOrValue<BigNumberish>, _subtreeLevels: PromiseOrValue<BigNumberish>, _hasher: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): TransactionRequest;
    attach(address: string): MerkleForest;
    connect(signer: Signer): MerkleForest__factory;
    static readonly bytecode = "0x608060405234801561001057600080fd5b50604051610c4b380380610c4b83398101604081905261002f91610333565b60008363ffffffff161161009c5760405162461bcd60e51b815260206004820152602960248201527f5f666f726573744c6576656c732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b60648201526084015b60405180910390fd5b60008263ffffffff16116101055760405162461bcd60e51b815260206004820152602a60248201527f5f737562747265654c6576656c732073686f756c642062652067726561746572604482015269207468616e207a65726f60b01b6064820152608401610093565b60208363ffffffff16106101675760405162461bcd60e51b8152602060048201526024808201527f5f666f726573744c6576656c732073686f756c64206265206c657373207468616044820152633710199960e11b6064820152608401610093565b60208263ffffffff16106101cb5760405162461bcd60e51b815260206004820152602560248201527f5f737562747265654c6576656c732073686f756c64206265206c65737320746860448201526430b710199960d91b6064820152608401610093565b60005b8363ffffffff168163ffffffff1610156102785763ffffffff8181166000908152600760205260409081902090516364a9404560e11b81526004810191909152908416602482015273__$08427e9aa9decafea8350fe25fc212775d$__9063c952808a9060440160006040518083038186803b15801561024d57600080fd5b505af4158015610261573d6000803e3d6000fd5b50505050808061027090610387565b9150506101ce565b506040516364a9404560e11b81526008600482015263ffffffff8416602482015273__$08427e9aa9decafea8350fe25fc212775d$__9063c952808a9060440160006040518083038186803b1580156102d057600080fd5b505af41580156102e4573d6000803e3d6000fd5b505050506001600160a01b0316600160e01b63ffffffff93841602176005556006805463ffffffff1916919092161790556103b8565b805163ffffffff8116811461032e57600080fd5b919050565b60008060006060848603121561034857600080fd5b6103518461031a565b925061035f6020850161031a565b60408501519092506001600160a01b038116811461037c57600080fd5b809150509250925092565b600063ffffffff8083168181036103ae57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b610884806103c76000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063a544f0f3116100c3578063cd87a3b41161007c578063cd87a3b4146103ab578063e3ab0b8e146103b3578063ea495db0146103d5578063ec732959146103fa578063ed33639f14610421578063f178e47c1461043457600080fd5b8063a544f0f31461030b578063a6232a9314610322578063b583868614610335578063b8257fd61461034c578063ba70f7571461035c578063c2b40ae41461036457600080fd5b8063414a37ba11610115578063414a37ba1461021157806349ce8997146102385780635bb939951461025b578063752288c41461026e578063779c1425146102815780638012bda91461029857600080fd5b806309ede4d61461015d5780630c394a60146101835780630eb7606f146101a9578063158ef93e146101be5780631f79a1e9146101db578063305e9eac146101fe575b600080fd5b61017061016b366004610789565b610454565b6040519081526020015b60405180910390f35b600554600160e01b900463ffffffff165b60405163ffffffff909116815260200161017a565b600554600160c01b900463ffffffff16610194565b6000546101cb9060ff1681565b604051901515815260200161017a565b6101cb6101e9366004610789565b60036020526000908152604090205460ff1681565b61017061020c3660046107a2565b6104de565b6101707f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b6101cb610246366004610789565b60046020526000908152604090205460ff1681565b6101706102693660046107c8565b61051e565b6101cb61027c3660046107c8565b6105fe565b60055461019490600160a01b900463ffffffff1681565b6102db6102a6366004610789565b600760205260009081526040902080546001820154600283015460049093015460ff90921692909163ffffffff918216911684565b6040805160ff9095168552602085019390935263ffffffff9182169284019290925216606082015260800161017a565b60055461019490600160c01b900463ffffffff1681565b6101cb610330366004610789565b61068f565b60055461019490600160e01b900463ffffffff1681565b6006546101949063ffffffff1681565b61017061070d565b610391610372366004610789565b6001602081905260009182526040909120805491015463ffffffff1682565b6040805192835263ffffffff90911660208301520161017a565b610194601e81565b600854600954600a54600c546102db9360ff16929163ffffffff908116911684565b6005546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b6101707f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b6005546103e2906001600160a01b031681565b610170610442366004610789565b60026020526000908152604090205481565b600081815260076020526040808220905163ce8f1f3560e01b8152600481019190915273__$08427e9aa9decafea8350fe25fc212775d$__9063ce8f1f35906024015b602060405180830381865af41580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d891906107ea565b92915050565b604051631d052ab160e31b815263ffffffff8216600482015260009073__$08427e9aa9decafea8350fe25fc212775d$__9063e829558890602401610497565b600080306001600160a01b031663ea495db06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105839190610803565b604051635bb9399560e01b815260048101869052602481018590529091506001600160a01b03821690635bb9399590604401602060405180830381865afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f691906107ea565b949350505050565b600082815260076020526040808220905163178a57d560e21b815260048101919091526024810183905273__$08427e9aa9decafea8350fe25fc212775d$__90635e295f5490604401602060405180830381865af4158015610664573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610688919061082c565b9392505050565b60405163178a57d560e21b8152600860048201526024810182905260009073__$08427e9aa9decafea8350fe25fc212775d$__90635e295f5490604401602060405180830381865af41580156106e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d8919061082c565b60405163ce8f1f3560e01b81526008600482015260009073__$08427e9aa9decafea8350fe25fc212775d$__9063ce8f1f3590602401602060405180830381865af4158015610760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078491906107ea565b905090565b60006020828403121561079b57600080fd5b5035919050565b6000602082840312156107b457600080fd5b813563ffffffff8116811461068857600080fd5b600080604083850312156107db57600080fd5b50508035926020909101359150565b6000602082840312156107fc57600080fd5b5051919050565b60006020828403121561081557600080fd5b81516001600160a01b038116811461068857600080fd5b60006020828403121561083e57600080fd5b8151801515811461068857600080fdfea26469706673582212209ba1ecca526635e1b81bae37c32c6f828d16f50918afdcac10911f07ac99125f64736f6c63430008120033";
    static readonly abi: readonly [{
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "_forestLevels";
            readonly type: "uint32";
        }, {
            readonly internalType: "uint32";
            readonly name: "_subtreeLevels";
            readonly type: "uint32";
        }, {
            readonly internalType: "contract IHasher";
            readonly name: "_hasher";
            readonly type: "address";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "constructor";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "commitment";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly internalType: "uint32";
            readonly name: "leafIndex";
            readonly type: "uint32";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "timestamp";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "uint256";
            readonly name: "newMerkleRoot";
            readonly type: "uint256";
        }];
        readonly name: "Insertion";
        readonly type: "event";
    }, {
        readonly inputs: readonly [];
        readonly name: "FIELD_SIZE";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "ROOT_HISTORY_SIZE";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "ZERO_VALUE";
        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: "";
            readonly type: "uint256";
        }];
        readonly name: "commitments";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "currSubtreeIndex";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "filledSubtrees";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "forestLevels";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getHasher";
        readonly outputs: readonly [{
            readonly internalType: "contract IHasher";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getLastRoot";
        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: "_subtreeId";
            readonly type: "uint256";
        }];
        readonly name: "getLastSubtreeRoot";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getLevels";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getNextIndex";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "index";
            readonly type: "uint32";
        }];
        readonly name: "getZeroHash";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            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: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "hasher";
        readonly outputs: readonly [{
            readonly internalType: "contract IHasher";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "initialized";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "_root";
            readonly type: "uint256";
        }];
        readonly name: "isKnownRoot";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "_subtreeId";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "_root";
            readonly type: "uint256";
        }];
        readonly name: "isKnownSubtreeRoot";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "merkleForest";
        readonly outputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "maxEdges";
            readonly type: "uint8";
        }, {
            readonly internalType: "uint256";
            readonly name: "depth";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint32";
            readonly name: "currentRootIndex";
            readonly type: "uint32";
        }, {
            readonly internalType: "uint32";
            readonly name: "numberOfLeaves";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "nullifierHashes";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "numSubtreeElements";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "roots";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "root";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint32";
            readonly name: "latestLeafindex";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "subtreeLevels";
        readonly outputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly name: "subtrees";
        readonly outputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "maxEdges";
            readonly type: "uint8";
        }, {
            readonly internalType: "uint256";
            readonly name: "depth";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint32";
            readonly name: "currentRootIndex";
            readonly type: "uint32";
        }, {
            readonly internalType: "uint32";
            readonly name: "numberOfLeaves";
            readonly type: "uint32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }];
    static createInterface(): MerkleForestInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): MerkleForest;
}
export interface MerkleForestLibraryAddresses {
    ["contracts/trees/LinkableIncrementalBinaryTree.sol:LinkableIncrementalBinaryTree"]: string;
}
export {};
