import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../../../common"; export declare namespace InstanceRegistry { type InstanceStruct = { isERC20: boolean; token: AddressLike; state: BigNumberish; uniswapPoolSwappingFee: BigNumberish; protocolFeePercentage: BigNumberish; }; type InstanceStructOutput = [ isERC20: boolean, token: string, state: bigint, uniswapPoolSwappingFee: bigint, protocolFeePercentage: bigint ] & { isERC20: boolean; token: string; state: bigint; uniswapPoolSwappingFee: bigint; protocolFeePercentage: bigint; }; type TornadoStruct = { addr: AddressLike; instance: InstanceRegistry.InstanceStruct; }; type TornadoStructOutput = [ addr: string, instance: InstanceRegistry.InstanceStructOutput ] & { addr: string; instance: InstanceRegistry.InstanceStructOutput; }; } export interface InstanceRegistryInterface extends Interface { getFunction(nameOrSignature: "getAllInstanceAddresses" | "getAllInstances" | "getPoolToken" | "governance" | "initialize" | "instanceIds" | "instances" | "removeInstance" | "router" | "setProtocolFee" | "setTornadoRouter" | "updateInstance"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "InstanceStateUpdated" | "RouterRegistered"): EventFragment; encodeFunctionData(functionFragment: "getAllInstanceAddresses", values?: undefined): string; encodeFunctionData(functionFragment: "getAllInstances", values?: undefined): string; encodeFunctionData(functionFragment: "getPoolToken", values: [AddressLike]): string; encodeFunctionData(functionFragment: "governance", values?: undefined): string; encodeFunctionData(functionFragment: "initialize", values: [InstanceRegistry.TornadoStruct[], AddressLike]): string; encodeFunctionData(functionFragment: "instanceIds", values: [BigNumberish]): string; encodeFunctionData(functionFragment: "instances", values: [AddressLike]): string; encodeFunctionData(functionFragment: "removeInstance", values: [BigNumberish]): string; encodeFunctionData(functionFragment: "router", values?: undefined): string; encodeFunctionData(functionFragment: "setProtocolFee", values: [AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "setTornadoRouter", values: [AddressLike]): string; encodeFunctionData(functionFragment: "updateInstance", values: [InstanceRegistry.TornadoStruct]): string; decodeFunctionResult(functionFragment: "getAllInstanceAddresses", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getAllInstances", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getPoolToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "instanceIds", data: BytesLike): Result; decodeFunctionResult(functionFragment: "instances", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeInstance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "router", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setProtocolFee", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setTornadoRouter", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateInstance", data: BytesLike): Result; } export declare namespace InstanceStateUpdatedEvent { type InputTuple = [instance: AddressLike, state: BigNumberish]; type OutputTuple = [instance: string, state: bigint]; interface OutputObject { instance: string; state: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace RouterRegisteredEvent { type InputTuple = [tornadoRouter: AddressLike]; type OutputTuple = [tornadoRouter: string]; interface OutputObject { tornadoRouter: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface InstanceRegistry extends BaseContract { connect(runner?: ContractRunner | null): InstanceRegistry; waitForDeployment(): Promise; interface: InstanceRegistryInterface; queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; on(event: TCEvent, listener: TypedListener): Promise; on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; once(event: TCEvent, listener: TypedListener): Promise; once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; listeners(event: TCEvent): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners(event?: TCEvent): Promise; getAllInstanceAddresses: TypedContractMethod<[], [string[]], "view">; getAllInstances: TypedContractMethod<[ ], [ InstanceRegistry.TornadoStructOutput[] ], "view">; getPoolToken: TypedContractMethod<[instance: AddressLike], [string], "view">; governance: TypedContractMethod<[], [string], "view">; initialize: TypedContractMethod<[ _instances: InstanceRegistry.TornadoStruct[], _router: AddressLike ], [ void ], "nonpayable">; instanceIds: TypedContractMethod<[arg0: BigNumberish], [string], "view">; instances: TypedContractMethod<[ arg0: AddressLike ], [ [ boolean, string, bigint, bigint, bigint ] & { isERC20: boolean; token: string; state: bigint; uniswapPoolSwappingFee: bigint; protocolFeePercentage: bigint; } ], "view">; removeInstance: TypedContractMethod<[ _instanceId: BigNumberish ], [ void ], "nonpayable">; router: TypedContractMethod<[], [string], "view">; setProtocolFee: TypedContractMethod<[ instance: AddressLike, newFee: BigNumberish ], [ void ], "nonpayable">; setTornadoRouter: TypedContractMethod<[ routerAddress: AddressLike ], [ void ], "nonpayable">; updateInstance: TypedContractMethod<[ _tornado: InstanceRegistry.TornadoStruct ], [ void ], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "getAllInstanceAddresses"): TypedContractMethod<[], [string[]], "view">; getFunction(nameOrSignature: "getAllInstances"): TypedContractMethod<[], [InstanceRegistry.TornadoStructOutput[]], "view">; getFunction(nameOrSignature: "getPoolToken"): TypedContractMethod<[instance: AddressLike], [string], "view">; getFunction(nameOrSignature: "governance"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "initialize"): TypedContractMethod<[ _instances: InstanceRegistry.TornadoStruct[], _router: AddressLike ], [ void ], "nonpayable">; getFunction(nameOrSignature: "instanceIds"): TypedContractMethod<[arg0: BigNumberish], [string], "view">; getFunction(nameOrSignature: "instances"): TypedContractMethod<[ arg0: AddressLike ], [ [ boolean, string, bigint, bigint, bigint ] & { isERC20: boolean; token: string; state: bigint; uniswapPoolSwappingFee: bigint; protocolFeePercentage: bigint; } ], "view">; getFunction(nameOrSignature: "removeInstance"): TypedContractMethod<[_instanceId: BigNumberish], [void], "nonpayable">; getFunction(nameOrSignature: "router"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "setProtocolFee"): TypedContractMethod<[ instance: AddressLike, newFee: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "setTornadoRouter"): TypedContractMethod<[routerAddress: AddressLike], [void], "nonpayable">; getFunction(nameOrSignature: "updateInstance"): TypedContractMethod<[ _tornado: InstanceRegistry.TornadoStruct ], [ void ], "nonpayable">; getEvent(key: "InstanceStateUpdated"): TypedContractEvent; getEvent(key: "RouterRegistered"): TypedContractEvent; filters: { "InstanceStateUpdated(address,uint8)": TypedContractEvent; InstanceStateUpdated: TypedContractEvent; "RouterRegistered(address)": TypedContractEvent; RouterRegistered: TypedContractEvent; }; }