diff --git a/@tornado/sdk-chain/LICENSE.md b/@tornado/sdk-chain/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-chain/LICENSE.md +++ b/@tornado/sdk-chain/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-chain/package.json b/@tornado/sdk-chain/package.json index 1f1167d..7c25980 100644 --- a/@tornado/sdk-chain/package.json +++ b/@tornado/sdk-chain/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-chain", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK blockchain-ethers utilities.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk-chain/src/deth/RelayerRegistry.ts b/@tornado/sdk-chain/src/deth/RelayerRegistry.ts new file mode 100644 index 0000000..9c89b57 --- /dev/null +++ b/@tornado/sdk-chain/src/deth/RelayerRegistry.ts @@ -0,0 +1,875 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common' + +export interface RelayerRegistryInterface extends utils.Interface { + functions: { + 'bulkResolve(bytes32[])': FunctionFragment + 'burn(address,address,address)': FunctionFragment + 'ens()': FunctionFragment + 'feeManager()': FunctionFragment + 'getRelayerBalance(address)': FunctionFragment + 'getRelayerEnsHash(address)': FunctionFragment + 'governance()': FunctionFragment + 'initialize(bytes32)': FunctionFragment + 'isRelayer(address)': FunctionFragment + 'isRelayerRegistered(address,address)': FunctionFragment + 'minStakeAmount()': FunctionFragment + 'nullifyBalance(address)': FunctionFragment + 'register(string,uint256,address[])': FunctionFragment + 'registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'registerWorker(address,address)': FunctionFragment + 'relayers(address)': FunctionFragment + 'resolve(bytes32)': FunctionFragment + 'setMinStakeAmount(uint256)': FunctionFragment + 'setTornadoRouter(address)': FunctionFragment + 'stakeToRelayer(address,uint256)': FunctionFragment + 'stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'staking()': FunctionFragment + 'torn()': FunctionFragment + 'tornadoRouter()': FunctionFragment + 'unregisterWorker(address)': FunctionFragment + 'workers(address)': FunctionFragment + } + + getFunction( + nameOrSignatureOrTopic: + | 'bulkResolve' + | 'burn' + | 'ens' + | 'feeManager' + | 'getRelayerBalance' + | 'getRelayerEnsHash' + | 'governance' + | 'initialize' + | 'isRelayer' + | 'isRelayerRegistered' + | 'minStakeAmount' + | 'nullifyBalance' + | 'register' + | 'registerPermit' + | 'registerWorker' + | 'relayers' + | 'resolve' + | 'setMinStakeAmount' + | 'setTornadoRouter' + | 'stakeToRelayer' + | 'stakeToRelayerPermit' + | 'staking' + | 'torn' + | 'tornadoRouter' + | 'unregisterWorker' + | 'workers' + ): FunctionFragment + + encodeFunctionData(functionFragment: 'bulkResolve', values: [PromiseOrValue[]]): string + encodeFunctionData( + functionFragment: 'burn', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'ens', values?: undefined): string + encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string + encodeFunctionData(functionFragment: 'getRelayerBalance', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'getRelayerEnsHash', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'governance', values?: undefined): string + encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'isRelayer', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'isRelayerRegistered', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'minStakeAmount', values?: undefined): string + encodeFunctionData(functionFragment: 'nullifyBalance', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'register', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue[]] + ): string + encodeFunctionData( + functionFragment: 'registerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData( + functionFragment: 'registerWorker', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'relayers', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'resolve', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setMinStakeAmount', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setTornadoRouter', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'stakeToRelayer', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData( + functionFragment: 'stakeToRelayerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData(functionFragment: 'staking', values?: undefined): string + encodeFunctionData(functionFragment: 'torn', values?: undefined): string + encodeFunctionData(functionFragment: 'tornadoRouter', values?: undefined): string + encodeFunctionData(functionFragment: 'unregisterWorker', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'workers', values: [PromiseOrValue]): string + + decodeFunctionResult(functionFragment: 'bulkResolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'ens', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerEnsHash', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayerRegistered', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'minStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'nullifyBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'register', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'relayers', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'resolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setMinStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setTornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'staking', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'torn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'tornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'unregisterWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'workers', data: BytesLike): Result + + events: { + 'MinimumStakeAmount(uint256)': EventFragment + 'RelayerBalanceNullified(address)': EventFragment + 'RelayerRegistered(bytes32,string,address,uint256)': EventFragment + 'RouterRegistered(address)': EventFragment + 'StakeAddedToRelayer(address,uint256)': EventFragment + 'StakeBurned(address,uint256)': EventFragment + 'WorkerRegistered(address,address)': EventFragment + 'WorkerUnregistered(address,address)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'MinimumStakeAmount'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerBalanceNullified'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RouterRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeAddedToRelayer'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeBurned'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerUnregistered'): EventFragment +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber +} +export type MinimumStakeAmountEvent = TypedEvent<[BigNumber], MinimumStakeAmountEventObject> + +export type MinimumStakeAmountEventFilter = TypedEventFilter + +export interface RelayerBalanceNullifiedEventObject { + relayer: string +} +export type RelayerBalanceNullifiedEvent = TypedEvent<[string], RelayerBalanceNullifiedEventObject> + +export type RelayerBalanceNullifiedEventFilter = TypedEventFilter + +export interface RelayerRegisteredEventObject { + relayer: string + ensName: string + relayerAddress: string + stakedAmount: BigNumber +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +> + +export type RelayerRegisteredEventFilter = TypedEventFilter + +export interface RouterRegisteredEventObject { + tornadoRouter: string +} +export type RouterRegisteredEvent = TypedEvent<[string], RouterRegisteredEventObject> + +export type RouterRegisteredEventFilter = TypedEventFilter + +export interface StakeAddedToRelayerEventObject { + relayer: string + amountStakeAdded: BigNumber +} +export type StakeAddedToRelayerEvent = TypedEvent<[string, BigNumber], StakeAddedToRelayerEventObject> + +export type StakeAddedToRelayerEventFilter = TypedEventFilter + +export interface StakeBurnedEventObject { + relayer: string + amountBurned: BigNumber +} +export type StakeBurnedEvent = TypedEvent<[string, BigNumber], StakeBurnedEventObject> + +export type StakeBurnedEventFilter = TypedEventFilter + +export interface WorkerRegisteredEventObject { + relayer: string + worker: string +} +export type WorkerRegisteredEvent = TypedEvent<[string, string], WorkerRegisteredEventObject> + +export type WorkerRegisteredEventFilter = TypedEventFilter + +export interface WorkerUnregisteredEventObject { + relayer: string + worker: string +} +export type WorkerUnregisteredEvent = TypedEvent<[string, string], WorkerUnregisteredEventObject> + +export type WorkerUnregisteredEventFilter = TypedEventFilter + +export interface RelayerRegistry extends BaseContract { + contractName: 'RelayerRegistry' + + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise + + interface: RelayerRegistryInterface + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }> + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise<[string]> + + feeManager(overrides?: CallOverrides): Promise<[string]> + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]> + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + governance(overrides?: CallOverrides): Promise<[string]> + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]> + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]> + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]> + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise<[string]> + + torn(overrides?: CallOverrides): Promise<[string]> + + tornadoRouter(overrides?: CallOverrides): Promise<[string]> + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + } + + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + callStatic: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize(_tornadoRouter: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount(minAmount: PromiseOrValue, overrides?: CallOverrides): Promise + + setTornadoRouter(tornadoRouterAddress: PromiseOrValue, overrides?: CallOverrides): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker(worker: PromiseOrValue, overrides?: CallOverrides): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + filters: { + 'MinimumStakeAmount(uint256)'(minStakeAmount?: null): MinimumStakeAmountEventFilter + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter + + 'RelayerBalanceNullified(address)'(relayer?: null): RelayerBalanceNullifiedEventFilter + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter + + 'RelayerRegistered(bytes32,string,address,uint256)'( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + + 'RouterRegistered(address)'(tornadoRouter?: null): RouterRegisteredEventFilter + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter + + 'StakeAddedToRelayer(address,uint256)'( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter + StakeAddedToRelayer(relayer?: null, amountStakeAdded?: null): StakeAddedToRelayerEventFilter + + 'StakeBurned(address,uint256)'(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + + 'WorkerRegistered(address,address)'(relayer?: null, worker?: null): WorkerRegisteredEventFilter + WorkerRegistered(relayer?: null, worker?: null): WorkerRegisteredEventFilter + + 'WorkerUnregistered(address,address)'(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + WorkerUnregistered(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + } + + estimateGas: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } +} diff --git a/@tornado/sdk-chain/src/deth/RelayerRegistryAbi.ts b/@tornado/sdk-chain/src/deth/RelayerRegistryAbi.ts new file mode 100644 index 0000000..6b461d0 --- /dev/null +++ b/@tornado/sdk-chain/src/deth/RelayerRegistryAbi.ts @@ -0,0 +1,875 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common' + +export interface RelayerRegistryAbiInterface extends utils.Interface { + functions: { + 'bulkResolve(bytes32[])': FunctionFragment + 'burn(address,address,address)': FunctionFragment + 'ens()': FunctionFragment + 'feeManager()': FunctionFragment + 'getRelayerBalance(address)': FunctionFragment + 'getRelayerEnsHash(address)': FunctionFragment + 'governance()': FunctionFragment + 'initialize(bytes32)': FunctionFragment + 'isRelayer(address)': FunctionFragment + 'isRelayerRegistered(address,address)': FunctionFragment + 'minStakeAmount()': FunctionFragment + 'nullifyBalance(address)': FunctionFragment + 'register(string,uint256,address[])': FunctionFragment + 'registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'registerWorker(address,address)': FunctionFragment + 'relayers(address)': FunctionFragment + 'resolve(bytes32)': FunctionFragment + 'setMinStakeAmount(uint256)': FunctionFragment + 'setTornadoRouter(address)': FunctionFragment + 'stakeToRelayer(address,uint256)': FunctionFragment + 'stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'staking()': FunctionFragment + 'torn()': FunctionFragment + 'tornadoRouter()': FunctionFragment + 'unregisterWorker(address)': FunctionFragment + 'workers(address)': FunctionFragment + } + + getFunction( + nameOrSignatureOrTopic: + | 'bulkResolve' + | 'burn' + | 'ens' + | 'feeManager' + | 'getRelayerBalance' + | 'getRelayerEnsHash' + | 'governance' + | 'initialize' + | 'isRelayer' + | 'isRelayerRegistered' + | 'minStakeAmount' + | 'nullifyBalance' + | 'register' + | 'registerPermit' + | 'registerWorker' + | 'relayers' + | 'resolve' + | 'setMinStakeAmount' + | 'setTornadoRouter' + | 'stakeToRelayer' + | 'stakeToRelayerPermit' + | 'staking' + | 'torn' + | 'tornadoRouter' + | 'unregisterWorker' + | 'workers' + ): FunctionFragment + + encodeFunctionData(functionFragment: 'bulkResolve', values: [PromiseOrValue[]]): string + encodeFunctionData( + functionFragment: 'burn', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'ens', values?: undefined): string + encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string + encodeFunctionData(functionFragment: 'getRelayerBalance', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'getRelayerEnsHash', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'governance', values?: undefined): string + encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'isRelayer', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'isRelayerRegistered', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'minStakeAmount', values?: undefined): string + encodeFunctionData(functionFragment: 'nullifyBalance', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'register', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue[]] + ): string + encodeFunctionData( + functionFragment: 'registerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData( + functionFragment: 'registerWorker', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'relayers', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'resolve', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setMinStakeAmount', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setTornadoRouter', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'stakeToRelayer', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData( + functionFragment: 'stakeToRelayerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData(functionFragment: 'staking', values?: undefined): string + encodeFunctionData(functionFragment: 'torn', values?: undefined): string + encodeFunctionData(functionFragment: 'tornadoRouter', values?: undefined): string + encodeFunctionData(functionFragment: 'unregisterWorker', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'workers', values: [PromiseOrValue]): string + + decodeFunctionResult(functionFragment: 'bulkResolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'ens', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerEnsHash', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayerRegistered', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'minStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'nullifyBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'register', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'relayers', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'resolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setMinStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setTornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'staking', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'torn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'tornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'unregisterWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'workers', data: BytesLike): Result + + events: { + 'MinimumStakeAmount(uint256)': EventFragment + 'RelayerBalanceNullified(address)': EventFragment + 'RelayerRegistered(bytes32,string,address,uint256)': EventFragment + 'RouterRegistered(address)': EventFragment + 'StakeAddedToRelayer(address,uint256)': EventFragment + 'StakeBurned(address,uint256)': EventFragment + 'WorkerRegistered(address,address)': EventFragment + 'WorkerUnregistered(address,address)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'MinimumStakeAmount'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerBalanceNullified'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RouterRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeAddedToRelayer'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeBurned'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerUnregistered'): EventFragment +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber +} +export type MinimumStakeAmountEvent = TypedEvent<[BigNumber], MinimumStakeAmountEventObject> + +export type MinimumStakeAmountEventFilter = TypedEventFilter + +export interface RelayerBalanceNullifiedEventObject { + relayer: string +} +export type RelayerBalanceNullifiedEvent = TypedEvent<[string], RelayerBalanceNullifiedEventObject> + +export type RelayerBalanceNullifiedEventFilter = TypedEventFilter + +export interface RelayerRegisteredEventObject { + relayer: string + ensName: string + relayerAddress: string + stakedAmount: BigNumber +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +> + +export type RelayerRegisteredEventFilter = TypedEventFilter + +export interface RouterRegisteredEventObject { + tornadoRouter: string +} +export type RouterRegisteredEvent = TypedEvent<[string], RouterRegisteredEventObject> + +export type RouterRegisteredEventFilter = TypedEventFilter + +export interface StakeAddedToRelayerEventObject { + relayer: string + amountStakeAdded: BigNumber +} +export type StakeAddedToRelayerEvent = TypedEvent<[string, BigNumber], StakeAddedToRelayerEventObject> + +export type StakeAddedToRelayerEventFilter = TypedEventFilter + +export interface StakeBurnedEventObject { + relayer: string + amountBurned: BigNumber +} +export type StakeBurnedEvent = TypedEvent<[string, BigNumber], StakeBurnedEventObject> + +export type StakeBurnedEventFilter = TypedEventFilter + +export interface WorkerRegisteredEventObject { + relayer: string + worker: string +} +export type WorkerRegisteredEvent = TypedEvent<[string, string], WorkerRegisteredEventObject> + +export type WorkerRegisteredEventFilter = TypedEventFilter + +export interface WorkerUnregisteredEventObject { + relayer: string + worker: string +} +export type WorkerUnregisteredEvent = TypedEvent<[string, string], WorkerUnregisteredEventObject> + +export type WorkerUnregisteredEventFilter = TypedEventFilter + +export interface RelayerRegistryAbi extends BaseContract { + contractName: 'RelayerRegistryAbi' + + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise + + interface: RelayerRegistryAbiInterface + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }> + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise<[string]> + + feeManager(overrides?: CallOverrides): Promise<[string]> + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]> + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + governance(overrides?: CallOverrides): Promise<[string]> + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]> + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]> + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]> + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise<[string]> + + torn(overrides?: CallOverrides): Promise<[string]> + + tornadoRouter(overrides?: CallOverrides): Promise<[string]> + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + } + + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + callStatic: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize(_tornadoRouter: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount(minAmount: PromiseOrValue, overrides?: CallOverrides): Promise + + setTornadoRouter(tornadoRouterAddress: PromiseOrValue, overrides?: CallOverrides): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker(worker: PromiseOrValue, overrides?: CallOverrides): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + filters: { + 'MinimumStakeAmount(uint256)'(minStakeAmount?: null): MinimumStakeAmountEventFilter + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter + + 'RelayerBalanceNullified(address)'(relayer?: null): RelayerBalanceNullifiedEventFilter + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter + + 'RelayerRegistered(bytes32,string,address,uint256)'( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + + 'RouterRegistered(address)'(tornadoRouter?: null): RouterRegisteredEventFilter + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter + + 'StakeAddedToRelayer(address,uint256)'( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter + StakeAddedToRelayer(relayer?: null, amountStakeAdded?: null): StakeAddedToRelayerEventFilter + + 'StakeBurned(address,uint256)'(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + + 'WorkerRegistered(address,address)'(relayer?: null, worker?: null): WorkerRegisteredEventFilter + WorkerRegistered(relayer?: null, worker?: null): WorkerRegisteredEventFilter + + 'WorkerUnregistered(address,address)'(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + WorkerUnregistered(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + } + + estimateGas: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } +} diff --git a/@tornado/sdk-chain/src/deth/factories/RelayerRegistryAbi__factory.ts b/@tornado/sdk-chain/src/deth/factories/RelayerRegistryAbi__factory.ts new file mode 100644 index 0000000..7a7a8c0 --- /dev/null +++ b/@tornado/sdk-chain/src/deth/factories/RelayerRegistryAbi__factory.ts @@ -0,0 +1,688 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers' +import type { Provider } from '@ethersproject/providers' +import type { RelayerRegistryAbi, RelayerRegistryAbiInterface } from '../RelayerRegistryAbi' + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_torn', + type: 'address' + }, + { + internalType: 'address', + name: '_governance', + type: 'address' + }, + { + internalType: 'address', + name: '_ens', + type: 'address' + }, + { + internalType: 'bytes32', + name: '_staking', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: '_feeManager', + type: 'bytes32' + } + ], + stateMutability: 'nonpayable', + type: 'constructor' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'minStakeAmount', + type: 'uint256' + } + ], + name: 'MinimumStakeAmount', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'RelayerBalanceNullified', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bytes32', + name: 'relayer', + type: 'bytes32' + }, + { + indexed: false, + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + indexed: false, + internalType: 'address', + name: 'relayerAddress', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'stakedAmount', + type: 'uint256' + } + ], + name: 'RelayerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'tornadoRouter', + type: 'address' + } + ], + name: 'RouterRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountStakeAdded', + type: 'uint256' + } + ], + name: 'StakeAddedToRelayer', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountBurned', + type: 'uint256' + } + ], + name: 'StakeBurned', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerUnregistered', + type: 'event' + }, + { + inputs: [ + { + internalType: 'bytes32[]', + name: 'domains', + type: 'bytes32[]' + } + ], + name: 'bulkResolve', + outputs: [ + { + internalType: 'address[]', + name: 'result', + type: 'address[]' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'contract ITornadoInstance', + name: 'pool', + type: 'address' + } + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'ens', + outputs: [ + { + internalType: 'contract IENS', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'feeManager', + outputs: [ + { + internalType: 'contract FeeManager', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerEnsHash', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_tornadoRouter', + type: 'bytes32' + } + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayerRegistered', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'minStakeAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'nullifyBalance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + } + ], + name: 'register', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'registerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'registerWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'relayers', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256' + }, + { + internalType: 'bytes32', + name: 'ensHash', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'node', + type: 'bytes32' + } + ], + name: 'resolve', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmount', + type: 'uint256' + } + ], + name: 'setMinStakeAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'tornadoRouterAddress', + type: 'address' + } + ], + name: 'setTornadoRouter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + } + ], + name: 'stakeToRelayer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address', + name: 'staker', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'stakeToRelayerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'staking', + outputs: [ + { + internalType: 'contract ITornadoStakingRewards', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'torn', + outputs: [ + { + internalType: 'contract TORN', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'tornadoRouter', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'unregisterWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'workers', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + } +] as const + +export class RelayerRegistryAbi__factory { + static readonly abi = _abi + static createInterface(): RelayerRegistryAbiInterface { + return new utils.Interface(_abi) as RelayerRegistryAbiInterface + } + static connect(address: string, signerOrProvider: Signer | Provider): RelayerRegistryAbi { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistryAbi + } +} diff --git a/@tornado/sdk-chain/src/deth/factories/RelayerRegistry__factory.ts b/@tornado/sdk-chain/src/deth/factories/RelayerRegistry__factory.ts new file mode 100644 index 0000000..e63e8f0 --- /dev/null +++ b/@tornado/sdk-chain/src/deth/factories/RelayerRegistry__factory.ts @@ -0,0 +1,744 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from 'ethers' +import type { Provider, TransactionRequest } from '@ethersproject/providers' +import type { PromiseOrValue } from '../common' +import type { RelayerRegistry, RelayerRegistryInterface } from '../RelayerRegistry' + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_torn', + type: 'address' + }, + { + internalType: 'address', + name: '_governance', + type: 'address' + }, + { + internalType: 'address', + name: '_ens', + type: 'address' + }, + { + internalType: 'address', + name: '_staking', + type: 'address' + }, + { + internalType: 'address', + name: '_feeManager', + type: 'address' + } + ], + stateMutability: 'nonpayable', + type: 'constructor' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'minStakeAmount', + type: 'uint256' + } + ], + name: 'MinimumStakeAmount', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'RelayerBalanceNullified', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bytes32', + name: 'relayer', + type: 'bytes32' + }, + { + indexed: false, + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + indexed: false, + internalType: 'address', + name: 'relayerAddress', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'stakedAmount', + type: 'uint256' + } + ], + name: 'RelayerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'tornadoRouter', + type: 'address' + } + ], + name: 'RouterRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountStakeAdded', + type: 'uint256' + } + ], + name: 'StakeAddedToRelayer', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountBurned', + type: 'uint256' + } + ], + name: 'StakeBurned', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerUnregistered', + type: 'event' + }, + { + inputs: [ + { + internalType: 'bytes32[]', + name: 'domains', + type: 'bytes32[]' + } + ], + name: 'bulkResolve', + outputs: [ + { + internalType: 'address[]', + name: 'result', + type: 'address[]' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'contract ITornadoInstance', + name: 'pool', + type: 'address' + } + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'ens', + outputs: [ + { + internalType: 'contract IENS', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'feeManager', + outputs: [ + { + internalType: 'contract IFeeManager', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerEnsHash', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_tornadoRouter', + type: 'bytes32' + } + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayerRegistered', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'minStakeAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'nullifyBalance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + } + ], + name: 'register', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'registerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'registerWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'relayers', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256' + }, + { + internalType: 'bytes32', + name: 'ensHash', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'node', + type: 'bytes32' + } + ], + name: 'resolve', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmount', + type: 'uint256' + } + ], + name: 'setMinStakeAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'tornadoRouterAddress', + type: 'address' + } + ], + name: 'setTornadoRouter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + } + ], + name: 'stakeToRelayer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address', + name: 'staker', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'stakeToRelayerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'staking', + outputs: [ + { + internalType: 'contract TornadoStakingRewards', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'torn', + outputs: [ + { + internalType: 'contract TORN', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'tornadoRouter', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'unregisterWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'workers', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + } +] as const + +const _bytecode = + '0x6101206040523480156200001257600080fd5b50604051620029be380380620029be83398101604081905262000035916200006d565b6001600160601b0319606095861b811660805293851b841660a05291841b831660c052831b821660e05290911b166101005262000105565b600080600080600060a0868803121562000085578081fd5b85516200009281620000ec565b6020870151909550620000a581620000ec565b6040870151909450620000b881620000ec565b6060870151909350620000cb81620000ec565b6080870151909250620000de81620000ec565b809150509295509295909350565b6001600160a01b03811681146200010257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61282e620001906000398061078452806110535250806108935280610a50528061148052806117e75250806105ac52806115c55250806109555280610a8a5280610bf05280611177525080610dc05280610f8852806110bd528061145d52806117c4525061282e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033' + +type RelayerRegistryConstructorParams = [signer?: Signer] | ConstructorParameters + +const isSuperArgs = ( + xs: RelayerRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1 + +export class RelayerRegistry__factory extends ContractFactory { + constructor(...args: RelayerRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args) + } else { + super(_abi, _bytecode, args[0]) + } + this.contractName = 'RelayerRegistry' + } + + override deploy( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ) as Promise + } + override getDeployTransaction( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_torn, _governance, _ens, _staking, _feeManager, overrides || {}) + } + override attach(address: string): RelayerRegistry { + return super.attach(address) as RelayerRegistry + } + override connect(signer: Signer): RelayerRegistry__factory { + return super.connect(signer) as RelayerRegistry__factory + } + static readonly contractName: 'RelayerRegistry' + + public readonly contractName: 'RelayerRegistry' + + static readonly bytecode = _bytecode + static readonly abi = _abi + static createInterface(): RelayerRegistryInterface { + return new utils.Interface(_abi) as RelayerRegistryInterface + } + static connect(address: string, signerOrProvider: Signer | Provider): RelayerRegistry { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistry + } +} diff --git a/@tornado/sdk-chain/src/deth/factories/index.ts b/@tornado/sdk-chain/src/deth/factories/index.ts index 2486699..03f8162 100644 --- a/@tornado/sdk-chain/src/deth/factories/index.ts +++ b/@tornado/sdk-chain/src/deth/factories/index.ts @@ -7,5 +7,6 @@ export { ERC20Tornado__factory } from './ERC20Tornado__factory' export { ETHTornado__factory } from './ETHTornado__factory' export { Multicall3Contract__factory } from './Multicall3Contract__factory' export { MulticallContract__factory } from './MulticallContract__factory' +export { RelayerRegistry__factory } from './RelayerRegistry__factory' export { TornadoInstance__factory } from './TornadoInstance__factory' export { TornadoProxy__factory } from './TornadoProxy__factory' diff --git a/@tornado/sdk-chain/src/deth/index.ts b/@tornado/sdk-chain/src/deth/index.ts index f4054d7..947cf49 100644 --- a/@tornado/sdk-chain/src/deth/index.ts +++ b/@tornado/sdk-chain/src/deth/index.ts @@ -7,6 +7,7 @@ export type { ERC20Tornado } from './ERC20Tornado' export type { ETHTornado } from './ETHTornado' export type { Multicall3Contract } from './Multicall3Contract' export type { MulticallContract } from './MulticallContract' +export type { RelayerRegistry } from './RelayerRegistry' export type { TornadoInstance } from './TornadoInstance' export type { TornadoProxy } from './TornadoProxy' export * as factories from './factories' @@ -16,5 +17,6 @@ export { ERC20Tornado__factory } from './factories/ERC20Tornado__factory' export { ETHTornado__factory } from './factories/ETHTornado__factory' export { Multicall3Contract__factory } from './factories/Multicall3Contract__factory' export { MulticallContract__factory } from './factories/MulticallContract__factory' +export { RelayerRegistry__factory } from './factories/RelayerRegistry__factory' export { TornadoInstance__factory } from './factories/TornadoInstance__factory' export { TornadoProxy__factory } from './factories/TornadoProxy__factory' diff --git a/@tornado/sdk-chain/src/index.ts b/@tornado/sdk-chain/src/index.ts index f792462..13a7421 100644 --- a/@tornado/sdk-chain/src/index.ts +++ b/@tornado/sdk-chain/src/index.ts @@ -3,7 +3,7 @@ import { MarkOptional, DeepRequired } from 'ts-essentials' // External modules import EventEmitter from 'events' -import { randomBytes } from 'crypto' +import { randomBytes, sign } from 'crypto' import { TransactionRequest } from '@ethersproject/abstract-provider' import { EventFilter, @@ -27,12 +27,14 @@ import { TornadoProxy, ERC20, ERC20__factory, + RelayerRegistry, + RelayerRegistry__factory, Multicall3Contract__factory } from './deth' import { Multicall3 } from './deth/Multicall3Contract' // Local modules -import { Onchain, Cache, Docs } from '@tornado/sdk-data' +import { Onchain, Cache, Docs, Options as DataOptions } from '@tornado/sdk-data' import { ErrorUtils, HexUtils, AsyncUtils } from '@tornado/sdk-utils' // @ts-ignore @@ -40,7 +42,13 @@ import { parseIndexableString } from 'pouchdb-collate' // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECLARATIONS (MUST BE INLINED) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -export type TornadoContracts = TornadoInstance | TornadoProxy | ETHTornado | ERC20Tornado | ERC20 +export type TornadoContracts = + | TornadoInstance + | TornadoProxy + | ETHTornado + | ERC20Tornado + | ERC20 + | RelayerRegistry export namespace Options { export interface Sync { @@ -51,9 +59,9 @@ export namespace Options { concurrencyLimit?: number msTimeout?: number listenForEvents?: boolean - persistentCache?: true - cacheAdapter?: string } + + export type Cache = DataOptions.Cache } // We use a vanilla provider here, but in reality we will probably @@ -201,6 +209,8 @@ export namespace Contracts { return ETHTornado__factory.connect(address, signerOrProvider) as C } else if (name == 'ERC20Tornado') { return ERC20Tornado__factory.connect(address, signerOrProvider) as C + } else if (name == 'RelayerRegistry') { + return RelayerRegistry__factory.connect(address, signerOrProvider) as C } else { return ERC20__factory.connect(address, signerOrProvider) as C } @@ -220,6 +230,20 @@ export namespace Contracts { return contractMap.get(`TornadoProxy${network}`) as TornadoProxy } + export function getRegistry(signerOrProvider: Signer | Provider, network?: string): RelayerRegistry { + const key = `RelayerRegistry${network}` + if (!contractMap.has(key)) + contractMap.set( + key, + _getContract( + 'RelayerRegistry', + Onchain.getRegistryAddressSync(network), + signerOrProvider + ) + ) + return contractMap.get(key) as RelayerRegistry + } + export function getInstance( network: string, token: string, @@ -259,6 +283,13 @@ export namespace Contracts { } export abstract class Synchronizer extends EventEmitter { + caches: Map> + + constructor() { + super() + this.caches = new Map>() + } + async sync( eventName: string, filter: EventFilter, @@ -266,7 +297,7 @@ export abstract class Synchronizer extends EventEmitter { cache: Cache.Syncable, options?: Options.Sync ): Promise { - const _options = await this._populateSyncOptions(options) + const _options = await this._populateSyncOptions(options ?? {}) // Assign pooler cache.initializePooler(cache.getCallbacks(contract), cache.getErrorHandlers(), _options.concurrencyLimit) @@ -284,6 +315,9 @@ export abstract class Synchronizer extends EventEmitter { _options.blockDelta = _options.blockDivisor ? Math.floor((_options.targetBlock - _options.startBlock) / _options.blockDivisor) : _options.blockDelta + + if (10_000 < _options.blockDelta) + throw ErrorUtils.getError('Synchronizer.sync: blockDelta must not be above 10,000!') } // Start synchronizing @@ -348,6 +382,13 @@ export abstract class Synchronizer extends EventEmitter { await cache.db.bulkDocs(results).catch((err) => { throw ErrorUtils.ensureError(err) }) + + // Add cache if not present + if (!this.caches.has(cache.name)) this.caches.set(cache.name, cache) + } + + loadCache = Cache.Syncable>(name: string): C { + return this.caches.get(name) as C } listenForEvents( @@ -366,5 +407,53 @@ export abstract class Synchronizer extends EventEmitter { contract.off(event, listeners[listenerIndex]) } - protected abstract _populateSyncOptions(options?: Options.Sync): Promise> + protected async _populateSyncOptions(options: Options.Sync): Promise> { + if (!options.targetBlock) + throw ErrorUtils.getError('Synchronizer._populateSyncOptions: targetBlock not set.') + + if (!options.startBlock) + throw ErrorUtils.getError('Synchronizer._populateSyncOptions: startBlock not set.') + + options.blockDelta = + options.blockDelta ?? + (options.blockDivisor + ? Math.floor((options.targetBlock - options.startBlock) / options.blockDivisor) + : 10000) + + if (10_000 < options.blockDelta) + throw ErrorUtils.getError('Synchronizer._populateSyncOptions: blockDelta must not be above 10,000!') + + options.concurrencyLimit = options.concurrencyLimit ?? 8 + + options.msTimeout = options.msTimeout ?? 200 // 5 requests per second + + options.listenForEvents = options.listenForEvents ?? false + + return options as DeepRequired + } +} + +export function syncErrorHandler( + err: Error, + numResolvedPromises: number, + callbackIndex: number, + orderIndex: number, + ...args: any[] +): void { + err = ErrorUtils.ensureError(err) + + if (err.message.match('context deadline exceeded')) + console.error( + ErrorUtils.getError( + `Context deadline exceeded, stop if more promises do not resolve. Resolved: ${numResolvedPromises}` + ) + ) + else if (err.message.match('Invalid JSON RPC')) + console.error( + ErrorUtils.getError(`Endpoint returned invalid value (we might be rate limited), retrying.`) + ) + else { + err.message += `\nCallback args supplied: [${args.join(', ')}]\n` + throw err + } } diff --git a/@tornado/sdk-core/LICENSE.md b/@tornado/sdk-core/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-core/LICENSE.md +++ b/@tornado/sdk-core/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-core/package.json b/@tornado/sdk-core/package.json index 158b459..35eba85 100644 --- a/@tornado/sdk-core/package.json +++ b/@tornado/sdk-core/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-core", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK core modules.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk-core/src/deth/RelayerRegistry.ts b/@tornado/sdk-core/src/deth/RelayerRegistry.ts new file mode 100644 index 0000000..9c89b57 --- /dev/null +++ b/@tornado/sdk-core/src/deth/RelayerRegistry.ts @@ -0,0 +1,875 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common' + +export interface RelayerRegistryInterface extends utils.Interface { + functions: { + 'bulkResolve(bytes32[])': FunctionFragment + 'burn(address,address,address)': FunctionFragment + 'ens()': FunctionFragment + 'feeManager()': FunctionFragment + 'getRelayerBalance(address)': FunctionFragment + 'getRelayerEnsHash(address)': FunctionFragment + 'governance()': FunctionFragment + 'initialize(bytes32)': FunctionFragment + 'isRelayer(address)': FunctionFragment + 'isRelayerRegistered(address,address)': FunctionFragment + 'minStakeAmount()': FunctionFragment + 'nullifyBalance(address)': FunctionFragment + 'register(string,uint256,address[])': FunctionFragment + 'registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'registerWorker(address,address)': FunctionFragment + 'relayers(address)': FunctionFragment + 'resolve(bytes32)': FunctionFragment + 'setMinStakeAmount(uint256)': FunctionFragment + 'setTornadoRouter(address)': FunctionFragment + 'stakeToRelayer(address,uint256)': FunctionFragment + 'stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'staking()': FunctionFragment + 'torn()': FunctionFragment + 'tornadoRouter()': FunctionFragment + 'unregisterWorker(address)': FunctionFragment + 'workers(address)': FunctionFragment + } + + getFunction( + nameOrSignatureOrTopic: + | 'bulkResolve' + | 'burn' + | 'ens' + | 'feeManager' + | 'getRelayerBalance' + | 'getRelayerEnsHash' + | 'governance' + | 'initialize' + | 'isRelayer' + | 'isRelayerRegistered' + | 'minStakeAmount' + | 'nullifyBalance' + | 'register' + | 'registerPermit' + | 'registerWorker' + | 'relayers' + | 'resolve' + | 'setMinStakeAmount' + | 'setTornadoRouter' + | 'stakeToRelayer' + | 'stakeToRelayerPermit' + | 'staking' + | 'torn' + | 'tornadoRouter' + | 'unregisterWorker' + | 'workers' + ): FunctionFragment + + encodeFunctionData(functionFragment: 'bulkResolve', values: [PromiseOrValue[]]): string + encodeFunctionData( + functionFragment: 'burn', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'ens', values?: undefined): string + encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string + encodeFunctionData(functionFragment: 'getRelayerBalance', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'getRelayerEnsHash', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'governance', values?: undefined): string + encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'isRelayer', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'isRelayerRegistered', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'minStakeAmount', values?: undefined): string + encodeFunctionData(functionFragment: 'nullifyBalance', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'register', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue[]] + ): string + encodeFunctionData( + functionFragment: 'registerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData( + functionFragment: 'registerWorker', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'relayers', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'resolve', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setMinStakeAmount', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setTornadoRouter', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'stakeToRelayer', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData( + functionFragment: 'stakeToRelayerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData(functionFragment: 'staking', values?: undefined): string + encodeFunctionData(functionFragment: 'torn', values?: undefined): string + encodeFunctionData(functionFragment: 'tornadoRouter', values?: undefined): string + encodeFunctionData(functionFragment: 'unregisterWorker', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'workers', values: [PromiseOrValue]): string + + decodeFunctionResult(functionFragment: 'bulkResolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'ens', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerEnsHash', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayerRegistered', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'minStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'nullifyBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'register', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'relayers', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'resolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setMinStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setTornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'staking', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'torn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'tornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'unregisterWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'workers', data: BytesLike): Result + + events: { + 'MinimumStakeAmount(uint256)': EventFragment + 'RelayerBalanceNullified(address)': EventFragment + 'RelayerRegistered(bytes32,string,address,uint256)': EventFragment + 'RouterRegistered(address)': EventFragment + 'StakeAddedToRelayer(address,uint256)': EventFragment + 'StakeBurned(address,uint256)': EventFragment + 'WorkerRegistered(address,address)': EventFragment + 'WorkerUnregistered(address,address)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'MinimumStakeAmount'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerBalanceNullified'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RouterRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeAddedToRelayer'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeBurned'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerUnregistered'): EventFragment +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber +} +export type MinimumStakeAmountEvent = TypedEvent<[BigNumber], MinimumStakeAmountEventObject> + +export type MinimumStakeAmountEventFilter = TypedEventFilter + +export interface RelayerBalanceNullifiedEventObject { + relayer: string +} +export type RelayerBalanceNullifiedEvent = TypedEvent<[string], RelayerBalanceNullifiedEventObject> + +export type RelayerBalanceNullifiedEventFilter = TypedEventFilter + +export interface RelayerRegisteredEventObject { + relayer: string + ensName: string + relayerAddress: string + stakedAmount: BigNumber +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +> + +export type RelayerRegisteredEventFilter = TypedEventFilter + +export interface RouterRegisteredEventObject { + tornadoRouter: string +} +export type RouterRegisteredEvent = TypedEvent<[string], RouterRegisteredEventObject> + +export type RouterRegisteredEventFilter = TypedEventFilter + +export interface StakeAddedToRelayerEventObject { + relayer: string + amountStakeAdded: BigNumber +} +export type StakeAddedToRelayerEvent = TypedEvent<[string, BigNumber], StakeAddedToRelayerEventObject> + +export type StakeAddedToRelayerEventFilter = TypedEventFilter + +export interface StakeBurnedEventObject { + relayer: string + amountBurned: BigNumber +} +export type StakeBurnedEvent = TypedEvent<[string, BigNumber], StakeBurnedEventObject> + +export type StakeBurnedEventFilter = TypedEventFilter + +export interface WorkerRegisteredEventObject { + relayer: string + worker: string +} +export type WorkerRegisteredEvent = TypedEvent<[string, string], WorkerRegisteredEventObject> + +export type WorkerRegisteredEventFilter = TypedEventFilter + +export interface WorkerUnregisteredEventObject { + relayer: string + worker: string +} +export type WorkerUnregisteredEvent = TypedEvent<[string, string], WorkerUnregisteredEventObject> + +export type WorkerUnregisteredEventFilter = TypedEventFilter + +export interface RelayerRegistry extends BaseContract { + contractName: 'RelayerRegistry' + + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise + + interface: RelayerRegistryInterface + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }> + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise<[string]> + + feeManager(overrides?: CallOverrides): Promise<[string]> + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]> + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + governance(overrides?: CallOverrides): Promise<[string]> + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]> + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]> + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]> + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise<[string]> + + torn(overrides?: CallOverrides): Promise<[string]> + + tornadoRouter(overrides?: CallOverrides): Promise<[string]> + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + } + + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + callStatic: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize(_tornadoRouter: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount(minAmount: PromiseOrValue, overrides?: CallOverrides): Promise + + setTornadoRouter(tornadoRouterAddress: PromiseOrValue, overrides?: CallOverrides): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker(worker: PromiseOrValue, overrides?: CallOverrides): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + filters: { + 'MinimumStakeAmount(uint256)'(minStakeAmount?: null): MinimumStakeAmountEventFilter + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter + + 'RelayerBalanceNullified(address)'(relayer?: null): RelayerBalanceNullifiedEventFilter + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter + + 'RelayerRegistered(bytes32,string,address,uint256)'( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + + 'RouterRegistered(address)'(tornadoRouter?: null): RouterRegisteredEventFilter + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter + + 'StakeAddedToRelayer(address,uint256)'( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter + StakeAddedToRelayer(relayer?: null, amountStakeAdded?: null): StakeAddedToRelayerEventFilter + + 'StakeBurned(address,uint256)'(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + + 'WorkerRegistered(address,address)'(relayer?: null, worker?: null): WorkerRegisteredEventFilter + WorkerRegistered(relayer?: null, worker?: null): WorkerRegisteredEventFilter + + 'WorkerUnregistered(address,address)'(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + WorkerUnregistered(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + } + + estimateGas: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } +} diff --git a/@tornado/sdk-core/src/deth/RelayerRegistryAbi.ts b/@tornado/sdk-core/src/deth/RelayerRegistryAbi.ts new file mode 100644 index 0000000..6b461d0 --- /dev/null +++ b/@tornado/sdk-core/src/deth/RelayerRegistryAbi.ts @@ -0,0 +1,875 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common' + +export interface RelayerRegistryAbiInterface extends utils.Interface { + functions: { + 'bulkResolve(bytes32[])': FunctionFragment + 'burn(address,address,address)': FunctionFragment + 'ens()': FunctionFragment + 'feeManager()': FunctionFragment + 'getRelayerBalance(address)': FunctionFragment + 'getRelayerEnsHash(address)': FunctionFragment + 'governance()': FunctionFragment + 'initialize(bytes32)': FunctionFragment + 'isRelayer(address)': FunctionFragment + 'isRelayerRegistered(address,address)': FunctionFragment + 'minStakeAmount()': FunctionFragment + 'nullifyBalance(address)': FunctionFragment + 'register(string,uint256,address[])': FunctionFragment + 'registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'registerWorker(address,address)': FunctionFragment + 'relayers(address)': FunctionFragment + 'resolve(bytes32)': FunctionFragment + 'setMinStakeAmount(uint256)': FunctionFragment + 'setTornadoRouter(address)': FunctionFragment + 'stakeToRelayer(address,uint256)': FunctionFragment + 'stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)': FunctionFragment + 'staking()': FunctionFragment + 'torn()': FunctionFragment + 'tornadoRouter()': FunctionFragment + 'unregisterWorker(address)': FunctionFragment + 'workers(address)': FunctionFragment + } + + getFunction( + nameOrSignatureOrTopic: + | 'bulkResolve' + | 'burn' + | 'ens' + | 'feeManager' + | 'getRelayerBalance' + | 'getRelayerEnsHash' + | 'governance' + | 'initialize' + | 'isRelayer' + | 'isRelayerRegistered' + | 'minStakeAmount' + | 'nullifyBalance' + | 'register' + | 'registerPermit' + | 'registerWorker' + | 'relayers' + | 'resolve' + | 'setMinStakeAmount' + | 'setTornadoRouter' + | 'stakeToRelayer' + | 'stakeToRelayerPermit' + | 'staking' + | 'torn' + | 'tornadoRouter' + | 'unregisterWorker' + | 'workers' + ): FunctionFragment + + encodeFunctionData(functionFragment: 'bulkResolve', values: [PromiseOrValue[]]): string + encodeFunctionData( + functionFragment: 'burn', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'ens', values?: undefined): string + encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string + encodeFunctionData(functionFragment: 'getRelayerBalance', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'getRelayerEnsHash', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'governance', values?: undefined): string + encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'isRelayer', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'isRelayerRegistered', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'minStakeAmount', values?: undefined): string + encodeFunctionData(functionFragment: 'nullifyBalance', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'register', + values: [PromiseOrValue, PromiseOrValue, PromiseOrValue[]] + ): string + encodeFunctionData( + functionFragment: 'registerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData( + functionFragment: 'registerWorker', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData(functionFragment: 'relayers', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'resolve', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setMinStakeAmount', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'setTornadoRouter', values: [PromiseOrValue]): string + encodeFunctionData( + functionFragment: 'stakeToRelayer', + values: [PromiseOrValue, PromiseOrValue] + ): string + encodeFunctionData( + functionFragment: 'stakeToRelayerPermit', + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string + encodeFunctionData(functionFragment: 'staking', values?: undefined): string + encodeFunctionData(functionFragment: 'torn', values?: undefined): string + encodeFunctionData(functionFragment: 'tornadoRouter', values?: undefined): string + encodeFunctionData(functionFragment: 'unregisterWorker', values: [PromiseOrValue]): string + encodeFunctionData(functionFragment: 'workers', values: [PromiseOrValue]): string + + decodeFunctionResult(functionFragment: 'bulkResolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'ens', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getRelayerEnsHash', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isRelayerRegistered', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'minStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'nullifyBalance', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'register', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'registerWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'relayers', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'resolve', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setMinStakeAmount', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setTornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayer', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'stakeToRelayerPermit', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'staking', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'torn', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'tornadoRouter', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'unregisterWorker', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'workers', data: BytesLike): Result + + events: { + 'MinimumStakeAmount(uint256)': EventFragment + 'RelayerBalanceNullified(address)': EventFragment + 'RelayerRegistered(bytes32,string,address,uint256)': EventFragment + 'RouterRegistered(address)': EventFragment + 'StakeAddedToRelayer(address,uint256)': EventFragment + 'StakeBurned(address,uint256)': EventFragment + 'WorkerRegistered(address,address)': EventFragment + 'WorkerUnregistered(address,address)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'MinimumStakeAmount'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerBalanceNullified'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RelayerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RouterRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeAddedToRelayer'): EventFragment + getEvent(nameOrSignatureOrTopic: 'StakeBurned'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerRegistered'): EventFragment + getEvent(nameOrSignatureOrTopic: 'WorkerUnregistered'): EventFragment +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber +} +export type MinimumStakeAmountEvent = TypedEvent<[BigNumber], MinimumStakeAmountEventObject> + +export type MinimumStakeAmountEventFilter = TypedEventFilter + +export interface RelayerBalanceNullifiedEventObject { + relayer: string +} +export type RelayerBalanceNullifiedEvent = TypedEvent<[string], RelayerBalanceNullifiedEventObject> + +export type RelayerBalanceNullifiedEventFilter = TypedEventFilter + +export interface RelayerRegisteredEventObject { + relayer: string + ensName: string + relayerAddress: string + stakedAmount: BigNumber +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +> + +export type RelayerRegisteredEventFilter = TypedEventFilter + +export interface RouterRegisteredEventObject { + tornadoRouter: string +} +export type RouterRegisteredEvent = TypedEvent<[string], RouterRegisteredEventObject> + +export type RouterRegisteredEventFilter = TypedEventFilter + +export interface StakeAddedToRelayerEventObject { + relayer: string + amountStakeAdded: BigNumber +} +export type StakeAddedToRelayerEvent = TypedEvent<[string, BigNumber], StakeAddedToRelayerEventObject> + +export type StakeAddedToRelayerEventFilter = TypedEventFilter + +export interface StakeBurnedEventObject { + relayer: string + amountBurned: BigNumber +} +export type StakeBurnedEvent = TypedEvent<[string, BigNumber], StakeBurnedEventObject> + +export type StakeBurnedEventFilter = TypedEventFilter + +export interface WorkerRegisteredEventObject { + relayer: string + worker: string +} +export type WorkerRegisteredEvent = TypedEvent<[string, string], WorkerRegisteredEventObject> + +export type WorkerRegisteredEventFilter = TypedEventFilter + +export interface WorkerUnregisteredEventObject { + relayer: string + worker: string +} +export type WorkerUnregisteredEvent = TypedEvent<[string, string], WorkerUnregisteredEventObject> + +export type WorkerUnregisteredEventFilter = TypedEventFilter + +export interface RelayerRegistryAbi extends BaseContract { + contractName: 'RelayerRegistryAbi' + + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise + + interface: RelayerRegistryAbiInterface + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }> + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise<[string]> + + feeManager(overrides?: CallOverrides): Promise<[string]> + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[BigNumber]> + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + governance(overrides?: CallOverrides): Promise<[string]> + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise<[boolean]> + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]> + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]> + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise<[string]> + + torn(overrides?: CallOverrides): Promise<[string]> + + tornadoRouter(overrides?: CallOverrides): Promise<[string]> + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise<[string]> + } + + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + callStatic: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize(_tornadoRouter: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }> + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount(minAmount: PromiseOrValue, overrides?: CallOverrides): Promise + + setTornadoRouter(tornadoRouterAddress: PromiseOrValue, overrides?: CallOverrides): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker(worker: PromiseOrValue, overrides?: CallOverrides): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + filters: { + 'MinimumStakeAmount(uint256)'(minStakeAmount?: null): MinimumStakeAmountEventFilter + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter + + 'RelayerBalanceNullified(address)'(relayer?: null): RelayerBalanceNullifiedEventFilter + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter + + 'RelayerRegistered(bytes32,string,address,uint256)'( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter + + 'RouterRegistered(address)'(tornadoRouter?: null): RouterRegisteredEventFilter + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter + + 'StakeAddedToRelayer(address,uint256)'( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter + StakeAddedToRelayer(relayer?: null, amountStakeAdded?: null): StakeAddedToRelayerEventFilter + + 'StakeBurned(address,uint256)'(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter + + 'WorkerRegistered(address,address)'(relayer?: null, worker?: null): WorkerRegisteredEventFilter + WorkerRegistered(relayer?: null, worker?: null): WorkerRegisteredEventFilter + + 'WorkerUnregistered(address,address)'(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + WorkerUnregistered(relayer?: null, worker?: null): WorkerUnregisteredEventFilter + } + + estimateGas: { + bulkResolve(domains: PromiseOrValue[], overrides?: CallOverrides): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + getRelayerEnsHash(relayer: PromiseOrValue, overrides?: CallOverrides): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + ens(overrides?: CallOverrides): Promise + + feeManager(overrides?: CallOverrides): Promise + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + governance(overrides?: CallOverrides): Promise + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + isRelayer(toResolve: PromiseOrValue, overrides?: CallOverrides): Promise + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise + + minStakeAmount(overrides?: CallOverrides): Promise + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + relayers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + + resolve(node: PromiseOrValue, overrides?: CallOverrides): Promise + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + staking(overrides?: CallOverrides): Promise + + torn(overrides?: CallOverrides): Promise + + tornadoRouter(overrides?: CallOverrides): Promise + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise + + workers(arg0: PromiseOrValue, overrides?: CallOverrides): Promise + } +} diff --git a/@tornado/sdk-core/src/deth/factories/RelayerRegistryAbi__factory.ts b/@tornado/sdk-core/src/deth/factories/RelayerRegistryAbi__factory.ts new file mode 100644 index 0000000..7a7a8c0 --- /dev/null +++ b/@tornado/sdk-core/src/deth/factories/RelayerRegistryAbi__factory.ts @@ -0,0 +1,688 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers' +import type { Provider } from '@ethersproject/providers' +import type { RelayerRegistryAbi, RelayerRegistryAbiInterface } from '../RelayerRegistryAbi' + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_torn', + type: 'address' + }, + { + internalType: 'address', + name: '_governance', + type: 'address' + }, + { + internalType: 'address', + name: '_ens', + type: 'address' + }, + { + internalType: 'bytes32', + name: '_staking', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: '_feeManager', + type: 'bytes32' + } + ], + stateMutability: 'nonpayable', + type: 'constructor' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'minStakeAmount', + type: 'uint256' + } + ], + name: 'MinimumStakeAmount', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'RelayerBalanceNullified', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bytes32', + name: 'relayer', + type: 'bytes32' + }, + { + indexed: false, + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + indexed: false, + internalType: 'address', + name: 'relayerAddress', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'stakedAmount', + type: 'uint256' + } + ], + name: 'RelayerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'tornadoRouter', + type: 'address' + } + ], + name: 'RouterRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountStakeAdded', + type: 'uint256' + } + ], + name: 'StakeAddedToRelayer', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountBurned', + type: 'uint256' + } + ], + name: 'StakeBurned', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerUnregistered', + type: 'event' + }, + { + inputs: [ + { + internalType: 'bytes32[]', + name: 'domains', + type: 'bytes32[]' + } + ], + name: 'bulkResolve', + outputs: [ + { + internalType: 'address[]', + name: 'result', + type: 'address[]' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'contract ITornadoInstance', + name: 'pool', + type: 'address' + } + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'ens', + outputs: [ + { + internalType: 'contract IENS', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'feeManager', + outputs: [ + { + internalType: 'contract FeeManager', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerEnsHash', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_tornadoRouter', + type: 'bytes32' + } + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayerRegistered', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'minStakeAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'nullifyBalance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + } + ], + name: 'register', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'registerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'registerWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'relayers', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256' + }, + { + internalType: 'bytes32', + name: 'ensHash', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'node', + type: 'bytes32' + } + ], + name: 'resolve', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmount', + type: 'uint256' + } + ], + name: 'setMinStakeAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'tornadoRouterAddress', + type: 'address' + } + ], + name: 'setTornadoRouter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + } + ], + name: 'stakeToRelayer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address', + name: 'staker', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'stakeToRelayerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'staking', + outputs: [ + { + internalType: 'contract ITornadoStakingRewards', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'torn', + outputs: [ + { + internalType: 'contract TORN', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'tornadoRouter', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'unregisterWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'workers', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + } +] as const + +export class RelayerRegistryAbi__factory { + static readonly abi = _abi + static createInterface(): RelayerRegistryAbiInterface { + return new utils.Interface(_abi) as RelayerRegistryAbiInterface + } + static connect(address: string, signerOrProvider: Signer | Provider): RelayerRegistryAbi { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistryAbi + } +} diff --git a/@tornado/sdk-core/src/deth/factories/RelayerRegistry__factory.ts b/@tornado/sdk-core/src/deth/factories/RelayerRegistry__factory.ts new file mode 100644 index 0000000..e63e8f0 --- /dev/null +++ b/@tornado/sdk-core/src/deth/factories/RelayerRegistry__factory.ts @@ -0,0 +1,744 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from 'ethers' +import type { Provider, TransactionRequest } from '@ethersproject/providers' +import type { PromiseOrValue } from '../common' +import type { RelayerRegistry, RelayerRegistryInterface } from '../RelayerRegistry' + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: '_torn', + type: 'address' + }, + { + internalType: 'address', + name: '_governance', + type: 'address' + }, + { + internalType: 'address', + name: '_ens', + type: 'address' + }, + { + internalType: 'address', + name: '_staking', + type: 'address' + }, + { + internalType: 'address', + name: '_feeManager', + type: 'address' + } + ], + stateMutability: 'nonpayable', + type: 'constructor' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'minStakeAmount', + type: 'uint256' + } + ], + name: 'MinimumStakeAmount', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'RelayerBalanceNullified', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bytes32', + name: 'relayer', + type: 'bytes32' + }, + { + indexed: false, + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + indexed: false, + internalType: 'address', + name: 'relayerAddress', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'stakedAmount', + type: 'uint256' + } + ], + name: 'RelayerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'tornadoRouter', + type: 'address' + } + ], + name: 'RouterRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountStakeAdded', + type: 'uint256' + } + ], + name: 'StakeAddedToRelayer', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountBurned', + type: 'uint256' + } + ], + name: 'StakeBurned', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerRegistered', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + indexed: false, + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'WorkerUnregistered', + type: 'event' + }, + { + inputs: [ + { + internalType: 'bytes32[]', + name: 'domains', + type: 'bytes32[]' + } + ], + name: 'bulkResolve', + outputs: [ + { + internalType: 'address[]', + name: 'result', + type: 'address[]' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'contract ITornadoInstance', + name: 'pool', + type: 'address' + } + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'ens', + outputs: [ + { + internalType: 'contract IENS', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'feeManager', + outputs: [ + { + internalType: 'contract IFeeManager', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerBalance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'getRelayerEnsHash', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: '_tornadoRouter', + type: 'bytes32' + } + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'toResolve', + type: 'address' + } + ], + name: 'isRelayerRegistered', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'minStakeAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + } + ], + name: 'nullifyBalance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + } + ], + name: 'register', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'string', + name: 'ensName', + type: 'string' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address[]', + name: 'workersToRegister', + type: 'address[]' + }, + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'registerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'registerWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'relayers', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256' + }, + { + internalType: 'bytes32', + name: 'ensHash', + type: 'bytes32' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'node', + type: 'bytes32' + } + ], + name: 'resolve', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmount', + type: 'uint256' + } + ], + name: 'setMinStakeAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'tornadoRouterAddress', + type: 'address' + } + ], + name: 'setTornadoRouter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + } + ], + name: 'stakeToRelayer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'relayer', + type: 'address' + }, + { + internalType: 'uint256', + name: 'stake', + type: 'uint256' + }, + { + internalType: 'address', + name: 'staker', + type: 'address' + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256' + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8' + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32' + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32' + } + ], + name: 'stakeToRelayerPermit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [], + name: 'staking', + outputs: [ + { + internalType: 'contract TornadoStakingRewards', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'torn', + outputs: [ + { + internalType: 'contract TORN', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'tornadoRouter', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: 'worker', + type: 'address' + } + ], + name: 'unregisterWorker', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + name: 'workers', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address' + } + ], + stateMutability: 'view', + type: 'function' + } +] as const + +const _bytecode = + '0x6101206040523480156200001257600080fd5b50604051620029be380380620029be83398101604081905262000035916200006d565b6001600160601b0319606095861b811660805293851b841660a05291841b831660c052831b821660e05290911b166101005262000105565b600080600080600060a0868803121562000085578081fd5b85516200009281620000ec565b6020870151909550620000a581620000ec565b6040870151909450620000b881620000ec565b6060870151909350620000cb81620000ec565b6080870151909250620000de81620000ec565b809150509295509295909350565b6001600160a01b03811681146200010257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61282e620001906000398061078452806110535250806108935280610a50528061148052806117e75250806105ac52806115c55250806109555280610a8a5280610bf05280611177525080610dc05280610f8852806110bd528061145d52806117c4525061282e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033' + +type RelayerRegistryConstructorParams = [signer?: Signer] | ConstructorParameters + +const isSuperArgs = ( + xs: RelayerRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1 + +export class RelayerRegistry__factory extends ContractFactory { + constructor(...args: RelayerRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args) + } else { + super(_abi, _bytecode, args[0]) + } + this.contractName = 'RelayerRegistry' + } + + override deploy( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ) as Promise + } + override getDeployTransaction( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_torn, _governance, _ens, _staking, _feeManager, overrides || {}) + } + override attach(address: string): RelayerRegistry { + return super.attach(address) as RelayerRegistry + } + override connect(signer: Signer): RelayerRegistry__factory { + return super.connect(signer) as RelayerRegistry__factory + } + static readonly contractName: 'RelayerRegistry' + + public readonly contractName: 'RelayerRegistry' + + static readonly bytecode = _bytecode + static readonly abi = _abi + static createInterface(): RelayerRegistryInterface { + return new utils.Interface(_abi) as RelayerRegistryInterface + } + static connect(address: string, signerOrProvider: Signer | Provider): RelayerRegistry { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistry + } +} diff --git a/@tornado/sdk-core/src/deth/factories/index.ts b/@tornado/sdk-core/src/deth/factories/index.ts index 2486699..03f8162 100644 --- a/@tornado/sdk-core/src/deth/factories/index.ts +++ b/@tornado/sdk-core/src/deth/factories/index.ts @@ -7,5 +7,6 @@ export { ERC20Tornado__factory } from './ERC20Tornado__factory' export { ETHTornado__factory } from './ETHTornado__factory' export { Multicall3Contract__factory } from './Multicall3Contract__factory' export { MulticallContract__factory } from './MulticallContract__factory' +export { RelayerRegistry__factory } from './RelayerRegistry__factory' export { TornadoInstance__factory } from './TornadoInstance__factory' export { TornadoProxy__factory } from './TornadoProxy__factory' diff --git a/@tornado/sdk-core/src/deth/index.ts b/@tornado/sdk-core/src/deth/index.ts index f4054d7..947cf49 100644 --- a/@tornado/sdk-core/src/deth/index.ts +++ b/@tornado/sdk-core/src/deth/index.ts @@ -7,6 +7,7 @@ export type { ERC20Tornado } from './ERC20Tornado' export type { ETHTornado } from './ETHTornado' export type { Multicall3Contract } from './Multicall3Contract' export type { MulticallContract } from './MulticallContract' +export type { RelayerRegistry } from './RelayerRegistry' export type { TornadoInstance } from './TornadoInstance' export type { TornadoProxy } from './TornadoProxy' export * as factories from './factories' @@ -16,5 +17,6 @@ export { ERC20Tornado__factory } from './factories/ERC20Tornado__factory' export { ETHTornado__factory } from './factories/ETHTornado__factory' export { Multicall3Contract__factory } from './factories/Multicall3Contract__factory' export { MulticallContract__factory } from './factories/MulticallContract__factory' +export { RelayerRegistry__factory } from './factories/RelayerRegistry__factory' export { TornadoInstance__factory } from './factories/TornadoInstance__factory' export { TornadoProxy__factory } from './factories/TornadoProxy__factory' diff --git a/@tornado/sdk-core/src/index.ts b/@tornado/sdk-core/src/index.ts index 26458ee..2af8dde 100644 --- a/@tornado/sdk-core/src/index.ts +++ b/@tornado/sdk-core/src/index.ts @@ -1,5 +1,5 @@ // ts-essentials -import { DeepRequired, MarkOptional } from 'ts-essentials' +import { DeepRequired, MarkOptional, Merge } from 'ts-essentials' // Local types import { TornadoInstance, TornadoProxy } from './deth' @@ -20,10 +20,10 @@ import { parseIndexableString } from 'pouchdb-collate' // Local imports import { Primitives } from '@tornado/sdk-crypto' import { ErrorUtils, ObjectUtils, AsyncUtils } from '@tornado/sdk-utils' -import { Docs, Cache, Keys, Constants, Onchain } from '@tornado/sdk-data' -import { Contracts, Chain, Synchronizer, Options as ChainOptions } from '@tornado/sdk-chain' +import { Docs, Cache, Keys, Constants, Onchain, Options as DataOptions } from '@tornado/sdk-data' +import { Contracts, Chain, Synchronizer, Options as ChainOptions, syncErrorHandler } from '@tornado/sdk-chain' -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECLARATIONS (MUST BE INLINED) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECLARATIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ export namespace Options { export namespace Core { @@ -46,6 +46,7 @@ export namespace Options { } export type Sync = ChainOptions.Sync + export type Cache = DataOptions.Cache } export namespace Transactions { @@ -59,38 +60,13 @@ export namespace Transactions { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FOR SYNCHRONIZATION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -function tornadoSyncErrorHandler( - err: Error, - numResolvedPromises: number, - callbackIndex: number, - orderIndex: number, - ...args: any[] -): void { - err = ErrorUtils.ensureError(err) - - if (err.message.match('context deadline exceeded')) - console.error( - ErrorUtils.getError( - `Context deadline exceeded, stop if more promises do not resolve. Resolved: ${numResolvedPromises}` - ) - ) - else if (err.message.match('Invalid JSON RPC')) - console.error( - ErrorUtils.getError(`Endpoint returned invalid value (we might be rate limited), retrying.`) - ) - else { - err.message += `\nCallback args supplied: [${args.join(', ')}]\n` - throw err - } -} - export class DepositCache extends Cache.Syncable { buildDoc(response: any): Docs.Deposit { return new Docs.Deposit(response) } getErrorHandlers(): Array { - return [tornadoSyncErrorHandler] + return [syncErrorHandler] } getCallbacks(instance: TornadoInstance): Array { @@ -108,7 +84,7 @@ export class WithdrawalCache extends Cache.Syncable { } getErrorHandlers(): Array { - return [tornadoSyncErrorHandler] + return [syncErrorHandler] } getCallbacks(instance: TornadoInstance): Array { @@ -133,8 +109,6 @@ export class Core extends Synchronizer { private _mutex: AsyncUtils.SimpleMutex private _chain?: Chain - caches: Map> - get chain(): Chain { this._checkProvider('chain') return this._chain! @@ -142,7 +116,6 @@ export class Core extends Synchronizer { constructor() { super() - this.caches = new Map>() this._mutex = new AsyncUtils.SimpleMutex() } @@ -643,34 +616,24 @@ export class Core extends Synchronizer { } async backupNotes(instance: TornadoInstance, transactions: Array): Promise { - const { network, token, denomination } = await Onchain.getInstanceLookupKeys(instance.address) - await this._backupDepositData( - network, - token, - denomination, - transactions, - this.loadCache('DepositNotes') - ) + await this._backupDepositData(instance.address, transactions, this.loadCache('DepositNotes')) } async backupInvoices(instance: TornadoInstance, transactions: Array): Promise { - const { network, token, denomination } = await Onchain.getInstanceLookupKeys(instance.address) await this._backupDepositData( - network, - token, - denomination, + instance.address, transactions, this.loadCache('DepositInvoices') ) } private async _backupDepositData( - network: string, - token: string, - denomination: string, + address: string, transactions: Array, cache: Cache.Base ): Promise { + const { network, token, denomination } = await Onchain.getInstanceLookupKeys(address) + const notes = cache.name.length === 12 ? true : false const name = notes ? 'notes' : 'invoices' @@ -700,46 +663,38 @@ export class Core extends Synchronizer { if (close) this.caches.delete(cacheName) } - loadDepositCache(name: string, options?: Options.Sync): DepositCache { - if (!this.caches.has(name)) { - this.caches.set( - name, - new DepositCache( - name, - options ? { adapter: options?.cacheAdapter, persistent: options?.persistentCache } : undefined - ) - ) - } - return this.caches.get(name) as DepositCache + loadDepositCache(name: string, options?: Options.Cache): DepositCache { + return this.loadCache(name, options) } - loadWithdrawalCache(name: string, options?: Options.Sync): WithdrawalCache { - if (!this.caches.has(name)) { - this.caches.set( - name, - new WithdrawalCache( - name, - options ? { adapter: options?.cacheAdapter, persistent: options?.persistentCache } : undefined - ) - ) - } - return this.caches.get(name) as WithdrawalCache + loadWithdrawalCache(name: string, options?: Options.Cache): WithdrawalCache { + return this.loadCache(name, options) } - loadCache = Cache.Base>( + loadCache = Cache.Syncable>( name: string, - options?: Options.Sync + options?: Options.Cache ): C { - if (!this.caches.has(name)) { - this.caches.set( - name, - new Cache.Base( - name, - options ? { adapter: options?.cacheAdapter, persistent: options?.persistentCache } : undefined - ) - ) + let constructor, + cache = super.loadCache(name) + + if (!cache) { + const regexp = /([0-9]+)([A-Za-z]+)([0-9.]+)/ + const matches = name.match(regexp) + + if (!matches || matches.length !== 4) + throw ErrorUtils.getError(`Core.loadCache: name ${name} has wrong format for cache`) + + if (matches[2] === 'Deposits') { + constructor = (name: string, options?: Options.Cache) => new DepositCache(name, options) + } else if (matches[2] === 'Withdrawals') { + constructor = (name: string, options?: Options.Cache) => new WithdrawalCache(name, options) + } else throw ErrorUtils.getError(`Core.loadCache: there exists no such event ${matches[2]}`) + + cache = constructor(name, options) + this.caches.set(name, cache) } - return this.caches.get(name) as C + return cache as C } loadInstance(chainId: number | string, token: string, denomination: number | string): TornadoInstance { @@ -747,69 +702,47 @@ export class Core extends Synchronizer { return Contracts.getInstance('' + chainId, token, '' + denomination, this.chain.provider) } - async syncDeposits(instance: TornadoInstance, options?: Options.Sync): Promise { - this._checkProvider('syncDeposits') - + async syncDeposits(instance: TornadoInstance, options?: Merge): Promise { const { network, token, denomination } = await Onchain.getInstanceLookupKeys(instance.address) const pathstring = network + token + denomination options = options ?? {} + options.startBlock = await Onchain.getInstanceDeployBlockNum(network, token, denomination) - const populatedOptions = await this._populateSyncOptions(options) - const cache = this.loadDepositCache('Deposits' + pathstring.toUpperCase(), populatedOptions) + const cache = this.loadDepositCache('Deposits' + pathstring.toUpperCase(), { + cacheDirPath: options.cacheDirPath, + adapter: options.adapter, + persistent: options.persistent + }) - await this.sync('deposit', instance.filters.Deposit(null, null, null), instance, cache, populatedOptions) - - if (!this.caches.has(cache.name)) this.caches.set(cache.name, cache) + await this.sync('deposit', instance.filters.Deposit(null, null, null), instance, cache, options) } - async syncWithdrawals(instance: TornadoInstance, options?: Options.Sync): Promise { - this._checkProvider('syncWithdrawals') - + async syncWithdrawals( + instance: TornadoInstance, + options?: Merge + ): Promise { const { network, token, denomination } = await Onchain.getInstanceLookupKeys(instance.address) const pathstring = network + token + denomination options = options ?? {} + options.startBlock = await Onchain.getInstanceDeployBlockNum(network, token, denomination) - const populatedOptions = await this._populateSyncOptions(options) - const cache = this.loadWithdrawalCache('Withdrawals' + pathstring.toUpperCase(), populatedOptions) + const cache = this.loadWithdrawalCache('Withdrawals' + pathstring.toUpperCase(), { + cacheDirPath: options.cacheDirPath, + adapter: options.adapter, + persistent: options.persistent + }) - await this.sync( - 'withdrawal', - instance.filters.Withdrawal(null, null, null), - instance, - cache, - populatedOptions - ) - - if (!this.caches.has(cache.name)) this.caches.set(cache.name, cache) + await this.sync('withdrawal', instance.filters.Withdrawal(null, null, null), instance, cache, options) } protected async _populateSyncOptions(options: Options.Sync): Promise> { - if (!options.startBlock) throw ErrorUtils.getError('Core._populateSyncOptions: startBlock not set.') - options.targetBlock = options.targetBlock ?? (await this.chain.latestBlockNum()) - - options.blockDelta = - options.blockDelta ?? - (options.blockDivisor - ? Math.floor((options.targetBlock - options.startBlock) / options.blockDivisor) - : 10000) - - options.concurrencyLimit = options.concurrencyLimit ?? 8 - - options.msTimeout = options.msTimeout ?? 200 // 5 requests per second - - options.persistentCache = options.persistentCache ?? true - - options.cacheAdapter = options.cacheAdapter ?? 'leveldb' - - options.listenForEvents = options.listenForEvents ?? false - - return options as DeepRequired + return super._populateSyncOptions(options) } } diff --git a/@tornado/sdk-crypto/LICENSE.md b/@tornado/sdk-crypto/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-crypto/LICENSE.md +++ b/@tornado/sdk-crypto/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-crypto/package.json b/@tornado/sdk-crypto/package.json index 42b87a0..d9f3a2b 100644 --- a/@tornado/sdk-crypto/package.json +++ b/@tornado/sdk-crypto/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-crypto", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK cryptographic primitives.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk-crypto/src/index.ts b/@tornado/sdk-crypto/src/index.ts index fd59a26..aff02aa 100644 --- a/@tornado/sdk-crypto/src/index.ts +++ b/@tornado/sdk-crypto/src/index.ts @@ -169,6 +169,10 @@ export namespace Setup { } } +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Primitives ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/** + * These are the important cryptographic primitives Tornado Cash uses. + */ export namespace Primitives { export function calcPedersenHash(pedersenHashData: InputFor.PedersenHash): OutputOf.PedersenHash { return circomlib.babyJub.unpackPoint(circomlib.pedersenHash.hash(pedersenHashData.msg))[0] diff --git a/@tornado/sdk-data/LICENSE.md b/@tornado/sdk-data/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-data/LICENSE.md +++ b/@tornado/sdk-data/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-data/package.json b/@tornado/sdk-data/package.json index 1c18b9c..684c3f5 100644 --- a/@tornado/sdk-data/package.json +++ b/@tornado/sdk-data/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-data", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK data utilities.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk-data/resources/onchain/deployedBlockNumbers.json b/@tornado/sdk-data/resources/onchain/deployedBlockNumbers.json index 219954a..4400405 100644 --- a/@tornado/sdk-data/resources/onchain/deployedBlockNumbers.json +++ b/@tornado/sdk-data/resources/onchain/deployedBlockNumbers.json @@ -1,4 +1,5 @@ { + "1registry": 14173129, "1eth0.1": 9116966, "1eth1": 9117609, "1eth10": 9117720, diff --git a/@tornado/sdk-data/resources/onchain/infrastructure.json b/@tornado/sdk-data/resources/onchain/infrastructure.json index e7b60bb..fec4835 100644 --- a/@tornado/sdk-data/resources/onchain/infrastructure.json +++ b/@tornado/sdk-data/resources/onchain/infrastructure.json @@ -1,6 +1,7 @@ { "1": { "proxy": "0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b", + "registry": "0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2", "multicall": "0xeefBa1e63905eF1D7ACbA5a8513c70307C1cE441", "multicall3": "0xcA11bde05977b3631167028862bE2a173976CA11" }, diff --git a/@tornado/sdk-data/resources/onchain/tokens.json b/@tornado/sdk-data/resources/onchain/tokens.json deleted file mode 100644 index a847fa0..0000000 --- a/@tornado/sdk-data/resources/onchain/tokens.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "1": { - "dai": { - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "decimals": 18 - }, - "usdc": { - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "decimals": 6 - } - } -} \ No newline at end of file diff --git a/@tornado/sdk-data/src/index.ts b/@tornado/sdk-data/src/index.ts index ce314fd..f856ff8 100644 --- a/@tornado/sdk-data/src/index.ts +++ b/@tornado/sdk-data/src/index.ts @@ -2,8 +2,8 @@ import tar from 'tar' // Fs -import { existsSync, mkdirSync, readFileSync } from 'fs' -import { opendir, readFile, rm } from 'fs/promises' +import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs' +import { opendir, readFile, rm, writeFile } from 'fs/promises' import { createInterface } from 'readline' // Ethers @@ -100,6 +100,15 @@ export namespace Files { export const loadRaw = (relative: string): Promise => readFile(getResourcePath(relative)) export const loadRawSync = (relative: string): Buffer => readFileSync(getResourcePath(relative)) + export const writeRaw = ( + relative: string, + data: string | NodeJS.ArrayBufferView, + flag: string + ): Promise => writeFile(getCachePath('', relative), data, { flag: flag }) + + export const writeRawSync = (relative: string, data: string | NodeJS.ArrayBufferView, flag: string): void => + writeFileSync(getCachePath('', relative), data, { flag: flag }) + export function gzipSync(fileOrDirPath: string, archivePath: string): void { try { const tokens = fileOrDirPath.split('/') @@ -371,6 +380,26 @@ export namespace Onchain { return getInstanceAddressesSync([{ network: network, token: token, denomination: denomination }])[0] } + export async function getRegistryAddress(network?: string): Promise { + network = network ?? '1' + return Json.getValue(await Json.load('onchain/infrastructure.json'), [network, 'registry']) + } + + export function getRegistryAddressSync(network?: string): string { + network = network ?? '1' + return Json.getValue(Json.loadSync('onchain/infrastructure.json'), [network, 'registry']) + } + + export async function getRegistryDeployBlockNum(network?: string): Promise { + network = network ?? '1' + return Json.getValue(await Json.load('onchain/deployedBlockNumbers.json'), [`${network}registry`]) + } + + export function getRegistryDeployBlockNumSync(network?: string): number { + network = network ?? '1' + return Json.getValue(Json.loadSync('onchain/deployedBlockNumbers.json'), [`${network}registry`]) + } + export function getInstanceDeployBlockNums( paths: Array<{ network: string @@ -433,24 +462,6 @@ export namespace Onchain { return Json.getValue(Json.loadSync('onchain/infrastructure.json'), [network, 'multicall3']) } - export async function getTokenData(network: string, token: string): Promise { - const data = Json.getValue(await Json.load('onchain/tokens.json'), [network, token]) - return { - network: +network, - decimals: +data['decimals'], - address: data['address'] - } - } - - export function getTokenDataSync(network: string, token: string): TokenData { - const data = Json.getValue(Json.loadSync('onchain/tokens.json'), [network, token]) - return { - network: +network, - decimals: +data['decimals'], - address: data['address'] - } - } - export async function getTokenAddress(network: string, token: string): Promise { return ( await getPathstringBasedContent('onchain/tokenAddresses.json', [ @@ -709,6 +720,21 @@ export namespace Cache { this.isOpen = !close } + async jsonify(outDirPath?: string): Promise { + const docs = (await this.getRows()).map((row) => { + row.doc!._rev = undefined + return row.doc + }) + + if (outDirPath) outDirPath = outDirPath[outDirPath.length - 1] !== '/' ? outDirPath + '/' : outDirPath + + Files.writeRawSync( + (outDirPath ?? Files.parentPath(this._path)) + this.name, + JSON.stringify(docs, null, 2), + 'w' + ) + } + async get(keys: Array): Promise { return await this.db.get(toIndexableString(keys)).catch((err) => { throw ErrorUtils.ensureError(err) @@ -716,9 +742,7 @@ export namespace Cache { } async getRows( - emptyError: Error = ErrorUtils.getError( - `Core.loadCacheContents: there is no cache entry for ${this.name}` - ), + emptyError: Error = ErrorUtils.getError(`Base.getRows: there is no cache entry for ${this.name}`), options: RowsOptions = { include_docs: true, attachments: false } ): Promise> { const docs = await this.db.allDocs(options).catch((err) => { diff --git a/@tornado/sdk-registry/.eslintignore b/@tornado/sdk-registry/.eslintignore new file mode 100644 index 0000000..343ff1b --- /dev/null +++ b/@tornado/sdk-registry/.eslintignore @@ -0,0 +1,3 @@ +dist +node_modules +package-log.json diff --git a/@tornado/sdk-registry/.eslintrc b/@tornado/sdk-registry/.eslintrc new file mode 100644 index 0000000..30b7014 --- /dev/null +++ b/@tornado/sdk-registry/.eslintrc @@ -0,0 +1,76 @@ +{ + "env": { + "es6": true, + "node": true, + "mocha": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint", + "prettier" + ], + "parserOptions": { + "ecmaVersion": 2019, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "ignorePatterns": [ + ".eslintrc.js", + "prettier.config.js" + ], + "rules": { + "@typescript-eslint/ban-ts-ignore": "off", + "@typescript-eslint/type-annotation-spacing": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "args": "none" + } + ], + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/ban-types": "error", + "camelcase": "off", + "@typescript-eslint/consistent-type-assertions": "error", + "no-array-constructor": "off", + "@typescript-eslint/no-array-constructor": "error", + "no-empty": "off", + "no-empty-function": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-this-alias": "error", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/triple-slash-reference": "error", + "@typescript-eslint/no-floating-promises": [ + "error" + ], + "no-var": "error", + "prefer-const": "error", + "prefer-rest-params": "error", + "prefer-spread": "error" + }, + "overrides": [ + { + "files": [ + "*.js" + ], + "rules": { + "@typescript-eslint/no-var-requires": "off" + } + } + ] +} \ No newline at end of file diff --git a/@tornado/sdk-registry/.gitattributes b/@tornado/sdk-registry/.gitattributes new file mode 100644 index 0000000..ab5bfb4 --- /dev/null +++ b/@tornado/sdk-registry/.gitattributes @@ -0,0 +1,5 @@ +# Prevent eslintrc from appearing in GitHub language calculation +# (There seems to be no way to prevent language detection from +# falsely calling the CLI commands Javascript due to the shebang line) +.eslintrc.js linguist-documentation +prettier.config.js linguist-documentation diff --git a/@tornado/sdk-registry/.gitignore b/@tornado/sdk-registry/.gitignore new file mode 100644 index 0000000..c23e469 --- /dev/null +++ b/@tornado/sdk-registry/.gitignore @@ -0,0 +1,52 @@ +# Custom + +## Bash export gitea auth token + +.gitea.env + +## Personal project folders I'm using + +cache +vanilla_cache +scripts + +## We are NOT using Zero-Installs + +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Defaults + +.env + +## Logs +logs +*.log +npm-debug.log* + +## Runtime data +pids +*.pid +*.seed + +## Optional npm cache directory +.npm + +## Optional REPL history +.node_repl_history + +## Other defaults + +typings/ +node_modules +dist +sandbox +sand\ box +debug.log +yarn-error.log +*.map diff --git a/@tornado/sdk-registry/.mocharc.yml b/@tornado/sdk-registry/.mocharc.yml new file mode 100644 index 0000000..826c7c3 --- /dev/null +++ b/@tornado/sdk-registry/.mocharc.yml @@ -0,0 +1,63 @@ +# file handling +extension: [ "ts" ] +spec: ["src/**/*.test.ts"] +require: ["ts-node/register", "tsconfig-paths/register.js", "src/test/preload.ts"] +ignore: "src/test/utils.test.ts" + +# # This is an example Mocha config containing every Mocha option plus others. +# allow-uncaught: false +# async-only: false +# bail: false +# check-leaks: false +# color: true +# delay: false +# diff: true +# exit: false # could be expressed as "no-exit: true" +# extension: ['js', 'cjs', 'mjs'] +# fail-zero: true +# # fgrep and grep are mutually exclusive +# fgrep: 'something' +# file: +# - '/path/to/some/file' +# - '/path/to/some/other/file' +# forbid-only: false +# forbid-pending: false +# full-trace: false +# global: +# - 'jQuery' +# - '$' +# # fgrep and grep are mutually exclusive +# grep: '/something/i' # also 'something' +# growl: false +# ignore: +# - '/path/to/some/ignored/file' +# inline-diffs: false +# # needs to be used with grep or fgrep +# # invert: false +# jobs: 1 +# node-option: +# - 'unhandled-rejections=strict' # without leading "--", also V8 flags +# package: './package.json' +# parallel: false +# recursive: false +# reporter: 'spec' +# reporter-option: # array, not object +# - 'foo=bar' +# - 'baz=quux' +# require: '@babel/register' +# retries: 1 +# slow: '75' +# sort: false +# spec: +# - 'test/**/*.spec.js' # the positional arguments! +# timeout: '2000' # same as "timeout: '2s'" +# # timeout: false # same as "timeout: 0" +# trace-warnings: true # node flags ok +# ui: 'bdd' +# v8-stack-trace-limit: 100 # V8 flags are prepended with "v8-" +# watch: false +# watch-files: +# - 'lib/**/*.js' +# - 'test/**/*.js' +# watch-ignore: +# - 'lib/vendor' \ No newline at end of file diff --git a/@tornado/sdk-registry/.prettierignore b/@tornado/sdk-registry/.prettierignore new file mode 100644 index 0000000..343ff1b --- /dev/null +++ b/@tornado/sdk-registry/.prettierignore @@ -0,0 +1,3 @@ +dist +node_modules +package-log.json diff --git a/@tornado/sdk-registry/.prettierrc b/@tornado/sdk-registry/.prettierrc new file mode 100644 index 0000000..b1f8198 --- /dev/null +++ b/@tornado/sdk-registry/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "bracketSpacing": true, + "semi": false, + "printWidth": 110 +} \ No newline at end of file diff --git a/@tornado/sdk-registry/.vscode/extensions.json b/@tornado/sdk-registry/.vscode/extensions.json new file mode 100644 index 0000000..70eead1 --- /dev/null +++ b/@tornado/sdk-registry/.vscode/extensions.json @@ -0,0 +1,19 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. + "recommendations": [ + // For ESLint + "dbaeumer.vscode-eslint", + // For bleeding edge Typescript features + "ms-vscode.vscode-typescript-next", + // For better editing of the README and other markdown files + "yzhang.markdown-all-in-one", + // For auto-completes when typing out paths + "christian-kohler.path-intellisense", + // For auto-formatting + "esbenp.prettier-vscode", + // For support editing any YAML config or other files + "redhat.vscode-yaml", + "arcanis.vscode-zipfs" + ], + "unwantedRecommendations": [] +} diff --git a/@tornado/sdk-registry/.vscode/launch.json b/@tornado/sdk-registry/.vscode/launch.json new file mode 100644 index 0000000..f7daf49 --- /dev/null +++ b/@tornado/sdk-registry/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Tests", + "preLaunchTask": "npm: build", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": [ + "--require", + "source-map-support/register", + "--timeout", + "999999", + "--colors", + "${workspaceFolder}/build/test/index.js" + ], + "console": "internalConsole", + "internalConsoleOptions": "neverOpen", + "protocol": "inspector" + } + ] +} diff --git a/@tornado/sdk-registry/.vscode/settings.json b/@tornado/sdk-registry/.vscode/settings.json new file mode 100644 index 0000000..0d83da7 --- /dev/null +++ b/@tornado/sdk-registry/.vscode/settings.json @@ -0,0 +1,32 @@ +{ + // Use the local version of Typescript + "typescript.tsdk": "../../.yarn/sdks/typescript/lib", + // ESM requires extensions on import paths to work, + // these options tell VSCode to prefer adding extensions + // on auto-import. + "typescript.preferences.importModuleSpecifierEnding": "js", + "javascript.preferences.importModuleSpecifierEnding": "js", + // Make sure ESLint runs on target files. + "eslint.validate": [ + "javascript", + "typescript" + ], + // Check JavaScript by default (using the Typescript engine) + "js/ts.implicitProjectConfig.checkJs": true, + // Auto-format an fix files + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + // Let VSCode auto-update import paths when you move files around + "typescript.updateImportsOnFileMove.enabled": "always", + "javascript.updateImportsOnFileMove.enabled": "always", + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "eslint.nodePath": "../../.yarn/sdks", + "prettier.prettierPath": "../../.yarn/sdks/prettier/index.js", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/@tornado/sdk-registry/LICENSE.md b/@tornado/sdk-registry/LICENSE.md new file mode 100644 index 0000000..3b58ce4 --- /dev/null +++ b/@tornado/sdk-registry/LICENSE.md @@ -0,0 +1,7 @@ +ISC License + +Copyright 2023 AlienTornadosaurusHex + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/@tornado/sdk-registry/package.json b/@tornado/sdk-registry/package.json new file mode 100644 index 0000000..c35e3e9 --- /dev/null +++ b/@tornado/sdk-registry/package.json @@ -0,0 +1,74 @@ +{ + "name": "@tornado/sdk-registry", + "author": "AlienTornadosaurusHex", + "license": "ISC", + "description": "Tornado SDK general utilities.", + "repository": { + "type": "git", + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" + }, + "homepage": "https://tornadocash.community", + "keywords": [ + "ethereum", + "crypto", + "zk" + ], + "version": "0.0.11-alpha", + "engines": { + "node": "^18" + }, + "main": "./dist/index.js", + "files": [ + "dist/**/*" + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@tornado/sdk-chain": "workspace:*", + "@tornado/sdk-data": "workspace:*", + "@tornado/sdk-utils": "workspace:*", + "@tornado/sdk-web": "workspace:*", + "ethers": "^5", + "pouchdb-collate": "^8.0.1" + }, + "devDependencies": { + "@types/big-integer": "^0.0.31", + "@types/chai": "^4.2.18", + "@types/fs-extra": "^11.0.1", + "@types/mocha": "^10.0.1", + "@types/node": "^18.15.0", + "@typescript-eslint/eslint-plugin": "^5.54.1", + "@typescript-eslint/parser": "^5.54.1", + "chai": "^4.3.4", + "conventional-changelog-cli": "^2.1.1", + "dotenv": "^16.0.3", + "eslint": "^8.35.0", + "eslint-plugin-prettier": "^4.2.1", + "ethereum-waffle": "^4.0.10", + "fs-extra": "^11.1.0", + "mocha": "^10.2.0", + "prettier": "^2.3.0", + "rimraf": "^5.0.0", + "source-map-support": "^0.5.19", + "ts-essentials": "^9.3.1", + "ts-node": "^10.9.1", + "tsc-alias": "^1.2.11", + "tsconfig-paths": "^4.1.2", + "typescript": "^5.0.4" + }, + "scripts": { + "build": "rimraf dist && tsc", + "format": "prettier src/*.ts -w", + "build-live": "rimraf dist && tsc -w", + "lint": "eslint --ext ts,js --fix src" + }, + "publishConfig": { + "access": "public" + }, + "dependenciesMeta": { + "tsconfig-paths@4.2.0": { + "unplugged": true + } + }, + "stableVersion": "0.0.8-alpha" +} diff --git a/@tornado/sdk-registry/src/deth/ERC20.ts b/@tornado/sdk-registry/src/deth/ERC20.ts new file mode 100644 index 0000000..8e8d618 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/ERC20.ts @@ -0,0 +1,396 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface ERC20Interface extends utils.Interface { + functions: { + "totalSupply()": FunctionFragment; + "_totalSupply()": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "nonces(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "totalSupply" + | "_totalSupply" + | "balanceOf" + | "transfer" + | "allowance" + | "transferFrom" + | "approve" + | "nonces" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "_totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "nonces", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "_totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC20 extends BaseContract { + contractName: "ERC20"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC20Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + _totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + balanceOf( + who: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + totalSupply(overrides?: CallOverrides): Promise; + + _totalSupply(overrides?: CallOverrides): Promise; + + balanceOf( + who: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + totalSupply(overrides?: CallOverrides): Promise; + + _totalSupply(overrides?: CallOverrides): Promise; + + balanceOf( + who: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + totalSupply(overrides?: CallOverrides): Promise; + + _totalSupply(overrides?: CallOverrides): Promise; + + balanceOf( + who: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + totalSupply(overrides?: CallOverrides): Promise; + + _totalSupply(overrides?: CallOverrides): Promise; + + balanceOf( + who: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transfer( + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + approve( + spender: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/ERC20Mock.ts b/@tornado/sdk-registry/src/deth/ERC20Mock.ts new file mode 100644 index 0000000..8f1d819 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/ERC20Mock.ts @@ -0,0 +1,807 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface ERC20MockInterface extends utils.Interface { + functions: { + "addMinter(address)": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "isMinter(address)": FunctionFragment; + "mint(address,uint256)": FunctionFragment; + "name()": FunctionFragment; + "renounceMinter()": FunctionFragment; + "symbol()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addMinter" + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "decreaseAllowance" + | "increaseAllowance" + | "isMinter" + | "mint" + | "name" + | "renounceMinter" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addMinter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isMinter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mint", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceMinter", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "addMinter", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isMinter", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceMinter", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "MinterAdded(address)": EventFragment; + "MinterRemoved(address)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MinterAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MinterRemoved"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface MinterAddedEventObject { + account: string; +} +export type MinterAddedEvent = TypedEvent<[string], MinterAddedEventObject>; + +export type MinterAddedEventFilter = TypedEventFilter; + +export interface MinterRemovedEventObject { + account: string; +} +export type MinterRemovedEvent = TypedEvent<[string], MinterRemovedEventObject>; + +export type MinterRemovedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC20Mock extends BaseContract { + contractName: "ERC20Mock"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC20MockInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-allowance}. + */ + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + /** + * See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address. + */ + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-balanceOf}. + */ + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + /** + * Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}. + */ + decimals(overrides?: CallOverrides): Promise<[number]>; + + /** + * Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`. + */ + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. + */ + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + /** + * See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}. + */ + mint( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the name of the token. + */ + name(overrides?: CallOverrides): Promise<[string]>; + + renounceMinter( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the symbol of the token, usually a shorter version of the name. + */ + symbol(overrides?: CallOverrides): Promise<[string]>; + + /** + * See {IERC20-totalSupply}. + */ + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + /** + * See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`. + */ + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`. + */ + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-allowance}. + */ + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address. + */ + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-balanceOf}. + */ + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}. + */ + decimals(overrides?: CallOverrides): Promise; + + /** + * Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`. + */ + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. + */ + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}. + */ + mint( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the name of the token. + */ + name(overrides?: CallOverrides): Promise; + + renounceMinter( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the symbol of the token, usually a shorter version of the name. + */ + symbol(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-totalSupply}. + */ + totalSupply(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`. + */ + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`. + */ + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-allowance}. + */ + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address. + */ + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-balanceOf}. + */ + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}. + */ + decimals(overrides?: CallOverrides): Promise; + + /** + * Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`. + */ + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. + */ + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}. + */ + mint( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the name of the token. + */ + name(overrides?: CallOverrides): Promise; + + renounceMinter(overrides?: CallOverrides): Promise; + + /** + * Returns the symbol of the token, usually a shorter version of the name. + */ + symbol(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-totalSupply}. + */ + totalSupply(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`. + */ + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`. + */ + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "MinterAdded(address)"( + account?: PromiseOrValue | null + ): MinterAddedEventFilter; + MinterAdded( + account?: PromiseOrValue | null + ): MinterAddedEventFilter; + + "MinterRemoved(address)"( + account?: PromiseOrValue | null + ): MinterRemovedEventFilter; + MinterRemoved( + account?: PromiseOrValue | null + ): MinterRemovedEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-allowance}. + */ + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address. + */ + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-balanceOf}. + */ + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}. + */ + decimals(overrides?: CallOverrides): Promise; + + /** + * Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`. + */ + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. + */ + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}. + */ + mint( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the name of the token. + */ + name(overrides?: CallOverrides): Promise; + + renounceMinter( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the symbol of the token, usually a shorter version of the name. + */ + symbol(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-totalSupply}. + */ + totalSupply(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`. + */ + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`. + */ + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addMinter( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-allowance}. + */ + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address. + */ + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-balanceOf}. + */ + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}. + */ + decimals(overrides?: CallOverrides): Promise; + + /** + * Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`. + */ + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. + */ + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isMinter( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}. + */ + mint( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the name of the token. + */ + name(overrides?: CallOverrides): Promise; + + renounceMinter( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * Returns the symbol of the token, usually a shorter version of the name. + */ + symbol(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-totalSupply}. + */ + totalSupply(overrides?: CallOverrides): Promise; + + /** + * See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`. + */ + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + /** + * See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`. + */ + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/ERC20Tornado.ts b/@tornado/sdk-registry/src/deth/ERC20Tornado.ts new file mode 100644 index 0000000..21b25d1 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/ERC20Tornado.ts @@ -0,0 +1,943 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface ERC20TornadoInterface extends utils.Interface { + functions: { + "FIELD_SIZE()": FunctionFragment; + "ROOT_HISTORY_SIZE()": FunctionFragment; + "ZERO_VALUE()": FunctionFragment; + "changeOperator(address)": FunctionFragment; + "commitments(bytes32)": FunctionFragment; + "currentRootIndex()": FunctionFragment; + "denomination()": FunctionFragment; + "deposit(bytes32)": FunctionFragment; + "filledSubtrees(uint256)": FunctionFragment; + "getLastRoot()": FunctionFragment; + "hashLeftRight(bytes32,bytes32)": FunctionFragment; + "isKnownRoot(bytes32)": FunctionFragment; + "isSpent(bytes32)": FunctionFragment; + "isSpentArray(bytes32[])": FunctionFragment; + "levels()": FunctionFragment; + "nextIndex()": FunctionFragment; + "nullifierHashes(bytes32)": FunctionFragment; + "operator()": FunctionFragment; + "roots(uint256)": FunctionFragment; + "token()": FunctionFragment; + "updateVerifier(address)": FunctionFragment; + "verifier()": FunctionFragment; + "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": FunctionFragment; + "zeros(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "FIELD_SIZE" + | "ROOT_HISTORY_SIZE" + | "ZERO_VALUE" + | "changeOperator" + | "commitments" + | "currentRootIndex" + | "denomination" + | "deposit" + | "filledSubtrees" + | "getLastRoot" + | "hashLeftRight" + | "isKnownRoot" + | "isSpent" + | "isSpentArray" + | "levels" + | "nextIndex" + | "nullifierHashes" + | "operator" + | "roots" + | "token" + | "updateVerifier" + | "verifier" + | "withdraw" + | "zeros" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "FIELD_SIZE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ROOT_HISTORY_SIZE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ZERO_VALUE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "changeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "commitments", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "currentRootIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "denomination", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "filledSubtrees", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getLastRoot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isKnownRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSpent", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSpentArray", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData(functionFragment: "levels", values?: undefined): string; + encodeFunctionData(functionFragment: "nextIndex", values?: undefined): string; + encodeFunctionData( + functionFragment: "nullifierHashes", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "operator", values?: undefined): string; + encodeFunctionData( + functionFragment: "roots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "token", values?: undefined): string; + encodeFunctionData( + functionFragment: "updateVerifier", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "verifier", values?: undefined): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "zeros", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "FIELD_SIZE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ROOT_HISTORY_SIZE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ZERO_VALUE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "changeOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "commitments", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentRootIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "denomination", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "filledSubtrees", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLastRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isKnownRoot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isSpent", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isSpentArray", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "levels", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nextIndex", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nullifierHashes", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "operator", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "roots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "updateVerifier", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "verifier", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "zeros", data: BytesLike): Result; + + events: { + "Deposit(bytes32,uint32,uint256)": EventFragment; + "Withdrawal(address,bytes32,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; +} + +export interface DepositEventObject { + commitment: string; + leafIndex: number; + timestamp: BigNumber; +} +export type DepositEvent = TypedEvent< + [string, number, BigNumber], + DepositEventObject +>; + +export type DepositEventFilter = TypedEventFilter; + +export interface WithdrawalEventObject { + to: string; + nullifierHash: string; + relayer: string; + fee: BigNumber; +} +export type WithdrawalEvent = TypedEvent< + [string, string, string, BigNumber], + WithdrawalEventObject +>; + +export type WithdrawalEventFilter = TypedEventFilter; + +export interface ERC20Tornado extends BaseContract { + contractName: "ERC20Tornado"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC20TornadoInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + FIELD_SIZE(overrides?: CallOverrides): Promise<[BigNumber]>; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise<[number]>; + + ZERO_VALUE(overrides?: CallOverrides): Promise<[BigNumber]>; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + currentRootIndex(overrides?: CallOverrides): Promise<[number]>; + + denomination(overrides?: CallOverrides): Promise<[BigNumber]>; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise<[string]>; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[boolean[]] & { spent: boolean[] }>; + + levels(overrides?: CallOverrides): Promise<[number]>; + + nextIndex(overrides?: CallOverrides): Promise<[number]>; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + token(overrides?: CallOverrides): Promise<[string]>; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise<[string]>; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token(overrides?: CallOverrides): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token(overrides?: CallOverrides): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Deposit(bytes32,uint32,uint256)"( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + Deposit( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + + "Withdrawal(address,bytes32,address,uint256)"( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + Withdrawal( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + }; + + estimateGas: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token(overrides?: CallOverrides): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + token(overrides?: CallOverrides): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/ETHTornado.ts b/@tornado/sdk-registry/src/deth/ETHTornado.ts new file mode 100644 index 0000000..ad66c1c --- /dev/null +++ b/@tornado/sdk-registry/src/deth/ETHTornado.ts @@ -0,0 +1,929 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface ETHTornadoInterface extends utils.Interface { + functions: { + "FIELD_SIZE()": FunctionFragment; + "ROOT_HISTORY_SIZE()": FunctionFragment; + "ZERO_VALUE()": FunctionFragment; + "changeOperator(address)": FunctionFragment; + "commitments(bytes32)": FunctionFragment; + "currentRootIndex()": FunctionFragment; + "denomination()": FunctionFragment; + "deposit(bytes32)": FunctionFragment; + "filledSubtrees(uint256)": FunctionFragment; + "getLastRoot()": FunctionFragment; + "hashLeftRight(bytes32,bytes32)": FunctionFragment; + "isKnownRoot(bytes32)": FunctionFragment; + "isSpent(bytes32)": FunctionFragment; + "isSpentArray(bytes32[])": FunctionFragment; + "levels()": FunctionFragment; + "nextIndex()": FunctionFragment; + "nullifierHashes(bytes32)": FunctionFragment; + "operator()": FunctionFragment; + "roots(uint256)": FunctionFragment; + "updateVerifier(address)": FunctionFragment; + "verifier()": FunctionFragment; + "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": FunctionFragment; + "zeros(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "FIELD_SIZE" + | "ROOT_HISTORY_SIZE" + | "ZERO_VALUE" + | "changeOperator" + | "commitments" + | "currentRootIndex" + | "denomination" + | "deposit" + | "filledSubtrees" + | "getLastRoot" + | "hashLeftRight" + | "isKnownRoot" + | "isSpent" + | "isSpentArray" + | "levels" + | "nextIndex" + | "nullifierHashes" + | "operator" + | "roots" + | "updateVerifier" + | "verifier" + | "withdraw" + | "zeros" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "FIELD_SIZE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ROOT_HISTORY_SIZE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "ZERO_VALUE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "changeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "commitments", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "currentRootIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "denomination", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "filledSubtrees", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getLastRoot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isKnownRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSpent", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSpentArray", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData(functionFragment: "levels", values?: undefined): string; + encodeFunctionData(functionFragment: "nextIndex", values?: undefined): string; + encodeFunctionData( + functionFragment: "nullifierHashes", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "operator", values?: undefined): string; + encodeFunctionData( + functionFragment: "roots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "updateVerifier", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "verifier", values?: undefined): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "zeros", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "FIELD_SIZE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ROOT_HISTORY_SIZE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ZERO_VALUE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "changeOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "commitments", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentRootIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "denomination", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "filledSubtrees", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLastRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isKnownRoot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isSpent", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isSpentArray", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "levels", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nextIndex", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nullifierHashes", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "operator", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "roots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "updateVerifier", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "verifier", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "zeros", data: BytesLike): Result; + + events: { + "Deposit(bytes32,uint32,uint256)": EventFragment; + "Withdrawal(address,bytes32,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; +} + +export interface DepositEventObject { + commitment: string; + leafIndex: number; + timestamp: BigNumber; +} +export type DepositEvent = TypedEvent< + [string, number, BigNumber], + DepositEventObject +>; + +export type DepositEventFilter = TypedEventFilter; + +export interface WithdrawalEventObject { + to: string; + nullifierHash: string; + relayer: string; + fee: BigNumber; +} +export type WithdrawalEvent = TypedEvent< + [string, string, string, BigNumber], + WithdrawalEventObject +>; + +export type WithdrawalEventFilter = TypedEventFilter; + +export interface ETHTornado extends BaseContract { + contractName: "ETHTornado"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ETHTornadoInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + FIELD_SIZE(overrides?: CallOverrides): Promise<[BigNumber]>; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise<[number]>; + + ZERO_VALUE(overrides?: CallOverrides): Promise<[BigNumber]>; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + currentRootIndex(overrides?: CallOverrides): Promise<[number]>; + + denomination(overrides?: CallOverrides): Promise<[BigNumber]>; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise<[string]>; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[boolean[]] & { spent: boolean[] }>; + + levels(overrides?: CallOverrides): Promise<[number]>; + + nextIndex(overrides?: CallOverrides): Promise<[number]>; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise<[string]>; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Deposit(bytes32,uint32,uint256)"( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + Deposit( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + + "Withdrawal(address,bytes32,address,uint256)"( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + Withdrawal( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + }; + + estimateGas: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + FIELD_SIZE(overrides?: CallOverrides): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + /** + * operator can change his address + */ + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + denomination(overrides?: CallOverrides): Promise; + + /** + * Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance. + * @param _commitment the note commitment, which is PedersenHash(nullifier + secret) + */ + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Returns the last root + */ + getLastRoot(overrides?: CallOverrides): Promise; + + /** + * Hash 2 tree leaves, returns MiMC(_left, _right) + */ + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * Whether the root is present in the root history + */ + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether a note is already spent + */ + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * whether an array of notes is already spent + */ + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + levels(overrides?: CallOverrides): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operator(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + /** + * allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address + */ + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + /** + * Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) + */ + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/Multicall3Contract.ts b/@tornado/sdk-registry/src/deth/Multicall3Contract.ts new file mode 100644 index 0000000..ec1a1fc --- /dev/null +++ b/@tornado/sdk-registry/src/deth/Multicall3Contract.ts @@ -0,0 +1,600 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export declare namespace Multicall3 { + export type CallStruct = { + target: PromiseOrValue; + callData: PromiseOrValue; + }; + + export type CallStructOutput = [string, string] & { + target: string; + callData: string; + }; + + export type Call3Struct = { + target: PromiseOrValue; + allowFailure: PromiseOrValue; + callData: PromiseOrValue; + }; + + export type Call3StructOutput = [string, boolean, string] & { + target: string; + allowFailure: boolean; + callData: string; + }; + + export type ResultStruct = { + success: PromiseOrValue; + returnData: PromiseOrValue; + }; + + export type ResultStructOutput = [boolean, string] & { + success: boolean; + returnData: string; + }; + + export type Call3ValueStruct = { + target: PromiseOrValue; + allowFailure: PromiseOrValue; + value: PromiseOrValue; + callData: PromiseOrValue; + }; + + export type Call3ValueStructOutput = [string, boolean, BigNumber, string] & { + target: string; + allowFailure: boolean; + value: BigNumber; + callData: string; + }; +} + +export interface Multicall3ContractInterface extends utils.Interface { + functions: { + "aggregate((address,bytes)[])": FunctionFragment; + "aggregate3((address,bool,bytes)[])": FunctionFragment; + "aggregate3Value((address,bool,uint256,bytes)[])": FunctionFragment; + "blockAndAggregate((address,bytes)[])": FunctionFragment; + "getBasefee()": FunctionFragment; + "getBlockHash(uint256)": FunctionFragment; + "getBlockNumber()": FunctionFragment; + "getChainId()": FunctionFragment; + "getCurrentBlockCoinbase()": FunctionFragment; + "getCurrentBlockDifficulty()": FunctionFragment; + "getCurrentBlockGasLimit()": FunctionFragment; + "getCurrentBlockTimestamp()": FunctionFragment; + "getEthBalance(address)": FunctionFragment; + "getLastBlockHash()": FunctionFragment; + "tryAggregate(bool,(address,bytes)[])": FunctionFragment; + "tryBlockAndAggregate(bool,(address,bytes)[])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "aggregate" + | "aggregate3" + | "aggregate3Value" + | "blockAndAggregate" + | "getBasefee" + | "getBlockHash" + | "getBlockNumber" + | "getChainId" + | "getCurrentBlockCoinbase" + | "getCurrentBlockDifficulty" + | "getCurrentBlockGasLimit" + | "getCurrentBlockTimestamp" + | "getEthBalance" + | "getLastBlockHash" + | "tryAggregate" + | "tryBlockAndAggregate" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "aggregate", + values: [Multicall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "aggregate3", + values: [Multicall3.Call3Struct[]] + ): string; + encodeFunctionData( + functionFragment: "aggregate3Value", + values: [Multicall3.Call3ValueStruct[]] + ): string; + encodeFunctionData( + functionFragment: "blockAndAggregate", + values: [Multicall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "getBasefee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getBlockHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getBlockNumber", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getChainId", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockCoinbase", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockDifficulty", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockGasLimit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getEthBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getLastBlockHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tryAggregate", + values: [PromiseOrValue, Multicall3.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "tryBlockAndAggregate", + values: [PromiseOrValue, Multicall3.CallStruct[]] + ): string; + + decodeFunctionResult(functionFragment: "aggregate", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "aggregate3", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "aggregate3Value", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "blockAndAggregate", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getBasefee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getBlockHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getBlockNumber", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getChainId", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockCoinbase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockDifficulty", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockGasLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getEthBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLastBlockHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tryAggregate", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tryBlockAndAggregate", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Multicall3Contract extends BaseContract { + contractName: "Multicall3Contract"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Multicall3ContractInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + aggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3( + calls: Multicall3.Call3Struct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3Value( + calls: Multicall3.Call3ValueStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + blockAndAggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getBasefee( + overrides?: CallOverrides + ): Promise<[BigNumber] & { basefee: BigNumber }>; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { blockHash: string }>; + + getBlockNumber( + overrides?: CallOverrides + ): Promise<[BigNumber] & { blockNumber: BigNumber }>; + + getChainId( + overrides?: CallOverrides + ): Promise<[BigNumber] & { chainid: BigNumber }>; + + getCurrentBlockCoinbase( + overrides?: CallOverrides + ): Promise<[string] & { coinbase: string }>; + + getCurrentBlockDifficulty( + overrides?: CallOverrides + ): Promise<[BigNumber] & { difficulty: BigNumber }>; + + getCurrentBlockGasLimit( + overrides?: CallOverrides + ): Promise<[BigNumber] & { gaslimit: BigNumber }>; + + getCurrentBlockTimestamp( + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp: BigNumber }>; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getLastBlockHash( + overrides?: CallOverrides + ): Promise<[string] & { blockHash: string }>; + + tryAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + tryBlockAndAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + aggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3( + calls: Multicall3.Call3Struct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3Value( + calls: Multicall3.Call3ValueStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + blockAndAggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getBasefee(overrides?: CallOverrides): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBlockNumber(overrides?: CallOverrides): Promise; + + getChainId(overrides?: CallOverrides): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + + tryAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + tryBlockAndAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + aggregate( + calls: Multicall3.CallStruct[], + overrides?: CallOverrides + ): Promise< + [BigNumber, string[]] & { blockNumber: BigNumber; returnData: string[] } + >; + + aggregate3( + calls: Multicall3.Call3Struct[], + overrides?: CallOverrides + ): Promise; + + aggregate3Value( + calls: Multicall3.Call3ValueStruct[], + overrides?: CallOverrides + ): Promise; + + blockAndAggregate( + calls: Multicall3.CallStruct[], + overrides?: CallOverrides + ): Promise< + [BigNumber, string, Multicall3.ResultStructOutput[]] & { + blockNumber: BigNumber; + blockHash: string; + returnData: Multicall3.ResultStructOutput[]; + } + >; + + getBasefee(overrides?: CallOverrides): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBlockNumber(overrides?: CallOverrides): Promise; + + getChainId(overrides?: CallOverrides): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + + tryAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: CallOverrides + ): Promise; + + tryBlockAndAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: CallOverrides + ): Promise< + [BigNumber, string, Multicall3.ResultStructOutput[]] & { + blockNumber: BigNumber; + blockHash: string; + returnData: Multicall3.ResultStructOutput[]; + } + >; + }; + + filters: {}; + + estimateGas: { + aggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3( + calls: Multicall3.Call3Struct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3Value( + calls: Multicall3.Call3ValueStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + blockAndAggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getBasefee(overrides?: CallOverrides): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBlockNumber(overrides?: CallOverrides): Promise; + + getChainId(overrides?: CallOverrides): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + + tryAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + tryBlockAndAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + aggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3( + calls: Multicall3.Call3Struct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + aggregate3Value( + calls: Multicall3.Call3ValueStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + blockAndAggregate( + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getBasefee(overrides?: CallOverrides): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBlockNumber(overrides?: CallOverrides): Promise; + + getChainId(overrides?: CallOverrides): Promise; + + getCurrentBlockCoinbase( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockDifficulty( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockGasLimit( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockTimestamp( + overrides?: CallOverrides + ): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + + tryAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + tryBlockAndAggregate( + requireSuccess: PromiseOrValue, + calls: Multicall3.CallStruct[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/MulticallContract.ts b/@tornado/sdk-registry/src/deth/MulticallContract.ts new file mode 100644 index 0000000..32845f8 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/MulticallContract.ts @@ -0,0 +1,310 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export declare namespace Multicall { + export type CallStruct = { + target: PromiseOrValue; + callData: PromiseOrValue; + }; + + export type CallStructOutput = [string, string] & { + target: string; + callData: string; + }; +} + +export interface MulticallContractInterface extends utils.Interface { + functions: { + "aggregate((address,bytes)[])": FunctionFragment; + "getBlockHash(uint256)": FunctionFragment; + "getCurrentBlockCoinbase()": FunctionFragment; + "getCurrentBlockDifficulty()": FunctionFragment; + "getCurrentBlockGasLimit()": FunctionFragment; + "getCurrentBlockTimestamp()": FunctionFragment; + "getEthBalance(address)": FunctionFragment; + "getLastBlockHash()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "aggregate" + | "getBlockHash" + | "getCurrentBlockCoinbase" + | "getCurrentBlockDifficulty" + | "getCurrentBlockGasLimit" + | "getCurrentBlockTimestamp" + | "getEthBalance" + | "getLastBlockHash" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "aggregate", + values: [Multicall.CallStruct[]] + ): string; + encodeFunctionData( + functionFragment: "getBlockHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockCoinbase", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockDifficulty", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockGasLimit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getCurrentBlockTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getEthBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getLastBlockHash", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "aggregate", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getBlockHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockCoinbase", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockDifficulty", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockGasLimit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCurrentBlockTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getEthBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getLastBlockHash", + data: BytesLike + ): Result; + + events: {}; +} + +export interface MulticallContract extends BaseContract { + contractName: "MulticallContract"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MulticallContractInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + aggregate( + calls: Multicall.CallStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { blockHash: string }>; + + getCurrentBlockCoinbase( + overrides?: CallOverrides + ): Promise<[string] & { coinbase: string }>; + + getCurrentBlockDifficulty( + overrides?: CallOverrides + ): Promise<[BigNumber] & { difficulty: BigNumber }>; + + getCurrentBlockGasLimit( + overrides?: CallOverrides + ): Promise<[BigNumber] & { gaslimit: BigNumber }>; + + getCurrentBlockTimestamp( + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp: BigNumber }>; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getLastBlockHash( + overrides?: CallOverrides + ): Promise<[string] & { blockHash: string }>; + }; + + aggregate( + calls: Multicall.CallStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + + callStatic: { + aggregate( + calls: Multicall.CallStruct[], + overrides?: CallOverrides + ): Promise< + [BigNumber, string[]] & { blockNumber: BigNumber; returnData: string[] } + >; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + aggregate( + calls: Multicall.CallStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCurrentBlockCoinbase(overrides?: CallOverrides): Promise; + + getCurrentBlockDifficulty(overrides?: CallOverrides): Promise; + + getCurrentBlockGasLimit(overrides?: CallOverrides): Promise; + + getCurrentBlockTimestamp(overrides?: CallOverrides): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + aggregate( + calls: Multicall.CallStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getBlockHash( + blockNumber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCurrentBlockCoinbase( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockDifficulty( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockGasLimit( + overrides?: CallOverrides + ): Promise; + + getCurrentBlockTimestamp( + overrides?: CallOverrides + ): Promise; + + getEthBalance( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastBlockHash(overrides?: CallOverrides): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/RelayerRegistry.ts b/@tornado/sdk-registry/src/deth/RelayerRegistry.ts new file mode 100644 index 0000000..4e291e6 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/RelayerRegistry.ts @@ -0,0 +1,1138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface RelayerRegistryInterface extends utils.Interface { + functions: { + "bulkResolve(bytes32[])": FunctionFragment; + "burn(address,address,address)": FunctionFragment; + "ens()": FunctionFragment; + "feeManager()": FunctionFragment; + "getRelayerBalance(address)": FunctionFragment; + "getRelayerEnsHash(address)": FunctionFragment; + "governance()": FunctionFragment; + "initialize(bytes32)": FunctionFragment; + "isRelayer(address)": FunctionFragment; + "isRelayerRegistered(address,address)": FunctionFragment; + "minStakeAmount()": FunctionFragment; + "nullifyBalance(address)": FunctionFragment; + "register(string,uint256,address[])": FunctionFragment; + "registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "registerWorker(address,address)": FunctionFragment; + "relayers(address)": FunctionFragment; + "resolve(bytes32)": FunctionFragment; + "setMinStakeAmount(uint256)": FunctionFragment; + "setTornadoRouter(address)": FunctionFragment; + "stakeToRelayer(address,uint256)": FunctionFragment; + "stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "staking()": FunctionFragment; + "torn()": FunctionFragment; + "tornadoRouter()": FunctionFragment; + "unregisterWorker(address)": FunctionFragment; + "workers(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "bulkResolve" + | "burn" + | "ens" + | "feeManager" + | "getRelayerBalance" + | "getRelayerEnsHash" + | "governance" + | "initialize" + | "isRelayer" + | "isRelayerRegistered" + | "minStakeAmount" + | "nullifyBalance" + | "register" + | "registerPermit" + | "registerWorker" + | "relayers" + | "resolve" + | "setMinStakeAmount" + | "setTornadoRouter" + | "stakeToRelayer" + | "stakeToRelayerPermit" + | "staking" + | "torn" + | "tornadoRouter" + | "unregisterWorker" + | "workers" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "bulkResolve", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "ens", values?: undefined): string; + encodeFunctionData( + functionFragment: "feeManager", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRelayerBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRelayerEnsHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "governance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayer", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayerRegistered", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minStakeAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nullifyBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "register", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "registerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "registerWorker", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "relayers", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinStakeAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTornadoRouter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "staking", values?: undefined): string; + encodeFunctionData(functionFragment: "torn", values?: undefined): string; + encodeFunctionData( + functionFragment: "tornadoRouter", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "unregisterWorker", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "workers", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "bulkResolve", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "feeManager", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRelayerBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRelayerEnsHash", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isRelayer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isRelayerRegistered", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nullifyBalance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerPermit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "relayers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayerPermit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "staking", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "torn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unregisterWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "workers", data: BytesLike): Result; + + events: { + "MinimumStakeAmount(uint256)": EventFragment; + "RelayerBalanceNullified(address)": EventFragment; + "RelayerRegistered(bytes32,string,address,uint256)": EventFragment; + "RouterRegistered(address)": EventFragment; + "StakeAddedToRelayer(address,uint256)": EventFragment; + "StakeBurned(address,uint256)": EventFragment; + "WorkerRegistered(address,address)": EventFragment; + "WorkerUnregistered(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "MinimumStakeAmount"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerBalanceNullified"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RouterRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeAddedToRelayer"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeBurned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerUnregistered"): EventFragment; +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber; +} +export type MinimumStakeAmountEvent = TypedEvent< + [BigNumber], + MinimumStakeAmountEventObject +>; + +export type MinimumStakeAmountEventFilter = + TypedEventFilter; + +export interface RelayerBalanceNullifiedEventObject { + relayer: string; +} +export type RelayerBalanceNullifiedEvent = TypedEvent< + [string], + RelayerBalanceNullifiedEventObject +>; + +export type RelayerBalanceNullifiedEventFilter = + TypedEventFilter; + +export interface RelayerRegisteredEventObject { + relayer: string; + ensName: string; + relayerAddress: string; + stakedAmount: BigNumber; +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +>; + +export type RelayerRegisteredEventFilter = + TypedEventFilter; + +export interface RouterRegisteredEventObject { + tornadoRouter: string; +} +export type RouterRegisteredEvent = TypedEvent< + [string], + RouterRegisteredEventObject +>; + +export type RouterRegisteredEventFilter = + TypedEventFilter; + +export interface StakeAddedToRelayerEventObject { + relayer: string; + amountStakeAdded: BigNumber; +} +export type StakeAddedToRelayerEvent = TypedEvent< + [string, BigNumber], + StakeAddedToRelayerEventObject +>; + +export type StakeAddedToRelayerEventFilter = + TypedEventFilter; + +export interface StakeBurnedEventObject { + relayer: string; + amountBurned: BigNumber; +} +export type StakeBurnedEvent = TypedEvent< + [string, BigNumber], + StakeBurnedEventObject +>; + +export type StakeBurnedEventFilter = TypedEventFilter; + +export interface WorkerRegisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerRegisteredEvent = TypedEvent< + [string, string], + WorkerRegisteredEventObject +>; + +export type WorkerRegisteredEventFilter = + TypedEventFilter; + +export interface WorkerUnregisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerUnregisteredEvent = TypedEvent< + [string, string], + WorkerUnregisteredEventObject +>; + +export type WorkerUnregisteredEventFilter = + TypedEventFilter; + +export interface RelayerRegistry extends BaseContract { + contractName: "RelayerRegistry"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RelayerRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }>; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise<[string]>; + + feeManager(overrides?: CallOverrides): Promise<[string]>; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise<[string]>; + + torn(overrides?: CallOverrides): Promise<[string]>; + + tornadoRouter(overrides?: CallOverrides): Promise<[string]>; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "MinimumStakeAmount(uint256)"( + minStakeAmount?: null + ): MinimumStakeAmountEventFilter; + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter; + + "RelayerBalanceNullified(address)"( + relayer?: null + ): RelayerBalanceNullifiedEventFilter; + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter; + + "RelayerRegistered(bytes32,string,address,uint256)"( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + + "RouterRegistered(address)"( + tornadoRouter?: null + ): RouterRegisteredEventFilter; + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter; + + "StakeAddedToRelayer(address,uint256)"( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + StakeAddedToRelayer( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + + "StakeBurned(address,uint256)"( + relayer?: null, + amountBurned?: null + ): StakeBurnedEventFilter; + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter; + + "WorkerRegistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + WorkerRegistered( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + + "WorkerUnregistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + WorkerUnregistered( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + }; + + estimateGas: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/RelayerRegistryAbi.ts b/@tornado/sdk-registry/src/deth/RelayerRegistryAbi.ts new file mode 100644 index 0000000..eb238e8 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/RelayerRegistryAbi.ts @@ -0,0 +1,1138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface RelayerRegistryAbiInterface extends utils.Interface { + functions: { + "bulkResolve(bytes32[])": FunctionFragment; + "burn(address,address,address)": FunctionFragment; + "ens()": FunctionFragment; + "feeManager()": FunctionFragment; + "getRelayerBalance(address)": FunctionFragment; + "getRelayerEnsHash(address)": FunctionFragment; + "governance()": FunctionFragment; + "initialize(bytes32)": FunctionFragment; + "isRelayer(address)": FunctionFragment; + "isRelayerRegistered(address,address)": FunctionFragment; + "minStakeAmount()": FunctionFragment; + "nullifyBalance(address)": FunctionFragment; + "register(string,uint256,address[])": FunctionFragment; + "registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "registerWorker(address,address)": FunctionFragment; + "relayers(address)": FunctionFragment; + "resolve(bytes32)": FunctionFragment; + "setMinStakeAmount(uint256)": FunctionFragment; + "setTornadoRouter(address)": FunctionFragment; + "stakeToRelayer(address,uint256)": FunctionFragment; + "stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "staking()": FunctionFragment; + "torn()": FunctionFragment; + "tornadoRouter()": FunctionFragment; + "unregisterWorker(address)": FunctionFragment; + "workers(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "bulkResolve" + | "burn" + | "ens" + | "feeManager" + | "getRelayerBalance" + | "getRelayerEnsHash" + | "governance" + | "initialize" + | "isRelayer" + | "isRelayerRegistered" + | "minStakeAmount" + | "nullifyBalance" + | "register" + | "registerPermit" + | "registerWorker" + | "relayers" + | "resolve" + | "setMinStakeAmount" + | "setTornadoRouter" + | "stakeToRelayer" + | "stakeToRelayerPermit" + | "staking" + | "torn" + | "tornadoRouter" + | "unregisterWorker" + | "workers" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "bulkResolve", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "ens", values?: undefined): string; + encodeFunctionData( + functionFragment: "feeManager", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRelayerBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRelayerEnsHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "governance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayer", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayerRegistered", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minStakeAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nullifyBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "register", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "registerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "registerWorker", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "relayers", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinStakeAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTornadoRouter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "staking", values?: undefined): string; + encodeFunctionData(functionFragment: "torn", values?: undefined): string; + encodeFunctionData( + functionFragment: "tornadoRouter", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "unregisterWorker", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "workers", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "bulkResolve", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "feeManager", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRelayerBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRelayerEnsHash", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isRelayer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isRelayerRegistered", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nullifyBalance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerPermit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "relayers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayerPermit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "staking", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "torn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unregisterWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "workers", data: BytesLike): Result; + + events: { + "MinimumStakeAmount(uint256)": EventFragment; + "RelayerBalanceNullified(address)": EventFragment; + "RelayerRegistered(bytes32,string,address,uint256)": EventFragment; + "RouterRegistered(address)": EventFragment; + "StakeAddedToRelayer(address,uint256)": EventFragment; + "StakeBurned(address,uint256)": EventFragment; + "WorkerRegistered(address,address)": EventFragment; + "WorkerUnregistered(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "MinimumStakeAmount"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerBalanceNullified"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RouterRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeAddedToRelayer"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeBurned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerUnregistered"): EventFragment; +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber; +} +export type MinimumStakeAmountEvent = TypedEvent< + [BigNumber], + MinimumStakeAmountEventObject +>; + +export type MinimumStakeAmountEventFilter = + TypedEventFilter; + +export interface RelayerBalanceNullifiedEventObject { + relayer: string; +} +export type RelayerBalanceNullifiedEvent = TypedEvent< + [string], + RelayerBalanceNullifiedEventObject +>; + +export type RelayerBalanceNullifiedEventFilter = + TypedEventFilter; + +export interface RelayerRegisteredEventObject { + relayer: string; + ensName: string; + relayerAddress: string; + stakedAmount: BigNumber; +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +>; + +export type RelayerRegisteredEventFilter = + TypedEventFilter; + +export interface RouterRegisteredEventObject { + tornadoRouter: string; +} +export type RouterRegisteredEvent = TypedEvent< + [string], + RouterRegisteredEventObject +>; + +export type RouterRegisteredEventFilter = + TypedEventFilter; + +export interface StakeAddedToRelayerEventObject { + relayer: string; + amountStakeAdded: BigNumber; +} +export type StakeAddedToRelayerEvent = TypedEvent< + [string, BigNumber], + StakeAddedToRelayerEventObject +>; + +export type StakeAddedToRelayerEventFilter = + TypedEventFilter; + +export interface StakeBurnedEventObject { + relayer: string; + amountBurned: BigNumber; +} +export type StakeBurnedEvent = TypedEvent< + [string, BigNumber], + StakeBurnedEventObject +>; + +export type StakeBurnedEventFilter = TypedEventFilter; + +export interface WorkerRegisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerRegisteredEvent = TypedEvent< + [string, string], + WorkerRegisteredEventObject +>; + +export type WorkerRegisteredEventFilter = + TypedEventFilter; + +export interface WorkerUnregisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerUnregisteredEvent = TypedEvent< + [string, string], + WorkerUnregisteredEventObject +>; + +export type WorkerUnregisteredEventFilter = + TypedEventFilter; + +export interface RelayerRegistryAbi extends BaseContract { + contractName: "RelayerRegistryAbi"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RelayerRegistryAbiInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }>; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise<[string]>; + + feeManager(overrides?: CallOverrides): Promise<[string]>; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise<[string]>; + + torn(overrides?: CallOverrides): Promise<[string]>; + + tornadoRouter(overrides?: CallOverrides): Promise<[string]>; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "MinimumStakeAmount(uint256)"( + minStakeAmount?: null + ): MinimumStakeAmountEventFilter; + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter; + + "RelayerBalanceNullified(address)"( + relayer?: null + ): RelayerBalanceNullifiedEventFilter; + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter; + + "RelayerRegistered(bytes32,string,address,uint256)"( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + + "RouterRegistered(address)"( + tornadoRouter?: null + ): RouterRegisteredEventFilter; + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter; + + "StakeAddedToRelayer(address,uint256)"( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + StakeAddedToRelayer( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + + "StakeBurned(address,uint256)"( + relayer?: null, + amountBurned?: null + ): StakeBurnedEventFilter; + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter; + + "WorkerRegistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + WorkerRegistered( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + + "WorkerUnregistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + WorkerUnregistered( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + }; + + estimateGas: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/TornadoInstance.ts b/@tornado/sdk-registry/src/deth/TornadoInstance.ts new file mode 100644 index 0000000..8a7a2fb --- /dev/null +++ b/@tornado/sdk-registry/src/deth/TornadoInstance.ts @@ -0,0 +1,789 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface TornadoInstanceInterface extends utils.Interface { + functions: { + "changeOperator(address)": FunctionFragment; + "nullifierHashes(bytes32)": FunctionFragment; + "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": FunctionFragment; + "verifier()": FunctionFragment; + "hashLeftRight(bytes32,bytes32)": FunctionFragment; + "FIELD_SIZE()": FunctionFragment; + "levels()": FunctionFragment; + "operator()": FunctionFragment; + "isKnownRoot(bytes32)": FunctionFragment; + "commitments(bytes32)": FunctionFragment; + "denomination()": FunctionFragment; + "currentRootIndex()": FunctionFragment; + "updateVerifier(address)": FunctionFragment; + "isSpentArray(bytes32[])": FunctionFragment; + "deposit(bytes32)": FunctionFragment; + "getLastRoot()": FunctionFragment; + "roots(uint256)": FunctionFragment; + "ROOT_HISTORY_SIZE()": FunctionFragment; + "isSpent(bytes32)": FunctionFragment; + "zeros(uint256)": FunctionFragment; + "ZERO_VALUE()": FunctionFragment; + "filledSubtrees(uint256)": FunctionFragment; + "nextIndex()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "changeOperator" + | "nullifierHashes" + | "withdraw" + | "verifier" + | "hashLeftRight" + | "FIELD_SIZE" + | "levels" + | "operator" + | "isKnownRoot" + | "commitments" + | "denomination" + | "currentRootIndex" + | "updateVerifier" + | "isSpentArray" + | "deposit" + | "getLastRoot" + | "roots" + | "ROOT_HISTORY_SIZE" + | "isSpent" + | "zeros" + | "ZERO_VALUE" + | "filledSubtrees" + | "nextIndex" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "changeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "nullifierHashes", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "verifier", values?: undefined): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "FIELD_SIZE", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "levels", values?: undefined): string; + encodeFunctionData(functionFragment: "operator", values?: undefined): string; + encodeFunctionData( + functionFragment: "isKnownRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "commitments", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "denomination", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentRootIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "updateVerifier", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSpentArray", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getLastRoot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "roots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "ROOT_HISTORY_SIZE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isSpent", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "zeros", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "ZERO_VALUE", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "filledSubtrees", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "nextIndex", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "changeOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nullifierHashes", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "verifier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "FIELD_SIZE", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "levels", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "operator", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isKnownRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "commitments", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "denomination", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentRootIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateVerifier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSpentArray", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getLastRoot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "roots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ROOT_HISTORY_SIZE", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isSpent", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "zeros", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ZERO_VALUE", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "filledSubtrees", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "nextIndex", data: BytesLike): Result; + + events: { + "Deposit(bytes32,uint32,uint256)": EventFragment; + "Withdrawal(address,bytes32,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; +} + +export interface DepositEventObject { + commitment: string; + leafIndex: number; + timestamp: BigNumber; +} +export type DepositEvent = TypedEvent< + [string, number, BigNumber], + DepositEventObject +>; + +export type DepositEventFilter = TypedEventFilter; + +export interface WithdrawalEventObject { + to: string; + nullifierHash: string; + relayer: string; + fee: BigNumber; +} +export type WithdrawalEvent = TypedEvent< + [string, string, string, BigNumber], + WithdrawalEventObject +>; + +export type WithdrawalEventFilter = TypedEventFilter; + +export interface TornadoInstance extends BaseContract { + contractName: "TornadoInstance"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TornadoInstanceInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise<[string]>; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + FIELD_SIZE(overrides?: CallOverrides): Promise<[BigNumber]>; + + levels(overrides?: CallOverrides): Promise<[number]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + denomination(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentRootIndex(overrides?: CallOverrides): Promise<[number]>; + + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[boolean[]] & { spent: boolean[] }>; + + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getLastRoot(overrides?: CallOverrides): Promise<[string]>; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise<[number]>; + + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + ZERO_VALUE(overrides?: CallOverrides): Promise<[BigNumber]>; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + nextIndex(overrides?: CallOverrides): Promise<[number]>; + }; + + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + levels(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + denomination(overrides?: CallOverrides): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getLastRoot(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + + callStatic: { + changeOperator( + _newOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + levels(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + denomination(overrides?: CallOverrides): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + deposit( + _commitment: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getLastRoot(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + }; + + filters: { + "Deposit(bytes32,uint32,uint256)"( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + Deposit( + commitment?: PromiseOrValue | null, + leafIndex?: null, + timestamp?: null + ): DepositEventFilter; + + "Withdrawal(address,bytes32,address,uint256)"( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + Withdrawal( + to?: null, + nullifierHash?: null, + relayer?: PromiseOrValue | null, + fee?: null + ): WithdrawalEventFilter; + }; + + estimateGas: { + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + levels(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + denomination(overrides?: CallOverrides): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getLastRoot(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + changeOperator( + _newOperator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + nullifierHashes( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + verifier(overrides?: CallOverrides): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + FIELD_SIZE(overrides?: CallOverrides): Promise; + + levels(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + isKnownRoot( + _root: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + commitments( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + denomination(overrides?: CallOverrides): Promise; + + currentRootIndex(overrides?: CallOverrides): Promise; + + updateVerifier( + _newVerifier: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isSpentArray( + _nullifierHashes: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + deposit( + _commitment: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getLastRoot(overrides?: CallOverrides): Promise; + + roots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ROOT_HISTORY_SIZE(overrides?: CallOverrides): Promise; + + isSpent( + _nullifierHash: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + zeros( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ZERO_VALUE(overrides?: CallOverrides): Promise; + + filledSubtrees( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + nextIndex(overrides?: CallOverrides): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/TornadoProxy.ts b/@tornado/sdk-registry/src/deth/TornadoProxy.ts new file mode 100644 index 0000000..6edb863 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/TornadoProxy.ts @@ -0,0 +1,452 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface TornadoProxyInterface extends utils.Interface { + functions: { + "bulkResolve(bytes32[])": FunctionFragment; + "governance()": FunctionFragment; + "instances(address)": FunctionFragment; + "resolve(bytes32)": FunctionFragment; + "tornadoTrees()": FunctionFragment; + "deposit(address,bytes32,bytes)": FunctionFragment; + "updateInstance(address,bool)": FunctionFragment; + "withdraw(address,bytes,bytes32,bytes32,address,address,uint256,uint256)": FunctionFragment; + "rescueTokens(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "bulkResolve" + | "governance" + | "instances" + | "resolve" + | "tornadoTrees" + | "deposit" + | "updateInstance" + | "withdraw" + | "rescueTokens" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "bulkResolve", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "governance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "instances", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "tornadoTrees", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateInstance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "rescueTokens", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "bulkResolve", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "instances", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tornadoTrees", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "updateInstance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "rescueTokens", + data: BytesLike + ): Result; + + events: { + "EncryptedNote(address,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "EncryptedNote"): EventFragment; +} + +export interface EncryptedNoteEventObject { + sender: string; + encryptedNote: string; +} +export type EncryptedNoteEvent = TypedEvent< + [string, string], + EncryptedNoteEventObject +>; + +export type EncryptedNoteEventFilter = TypedEventFilter; + +export interface TornadoProxy extends BaseContract { + contractName: "TornadoProxy"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TornadoProxyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + instances( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + tornadoTrees(overrides?: CallOverrides): Promise<[string]>; + + deposit( + _tornado: PromiseOrValue, + _commitment: PromiseOrValue, + _encryptedNote: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + updateInstance( + _instance: PromiseOrValue, + _update: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + _tornado: PromiseOrValue, + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + rescueTokens( + _token: PromiseOrValue, + _to: PromiseOrValue, + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + instances( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tornadoTrees(overrides?: CallOverrides): Promise; + + deposit( + _tornado: PromiseOrValue, + _commitment: PromiseOrValue, + _encryptedNote: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + updateInstance( + _instance: PromiseOrValue, + _update: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + _tornado: PromiseOrValue, + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + rescueTokens( + _token: PromiseOrValue, + _to: PromiseOrValue, + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + instances( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tornadoTrees(overrides?: CallOverrides): Promise; + + deposit( + _tornado: PromiseOrValue, + _commitment: PromiseOrValue, + _encryptedNote: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateInstance( + _instance: PromiseOrValue, + _update: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + _tornado: PromiseOrValue, + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + rescueTokens( + _token: PromiseOrValue, + _to: PromiseOrValue, + _balance: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "EncryptedNote(address,bytes)"( + sender?: PromiseOrValue | null, + encryptedNote?: null + ): EncryptedNoteEventFilter; + EncryptedNote( + sender?: PromiseOrValue | null, + encryptedNote?: null + ): EncryptedNoteEventFilter; + }; + + estimateGas: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + instances( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tornadoTrees(overrides?: CallOverrides): Promise; + + deposit( + _tornado: PromiseOrValue, + _commitment: PromiseOrValue, + _encryptedNote: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + updateInstance( + _instance: PromiseOrValue, + _update: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + _tornado: PromiseOrValue, + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + rescueTokens( + _token: PromiseOrValue, + _to: PromiseOrValue, + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + instances( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + tornadoTrees(overrides?: CallOverrides): Promise; + + deposit( + _tornado: PromiseOrValue, + _commitment: PromiseOrValue, + _encryptedNote: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + updateInstance( + _instance: PromiseOrValue, + _update: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + _tornado: PromiseOrValue, + _proof: PromiseOrValue, + _root: PromiseOrValue, + _nullifierHash: PromiseOrValue, + _recipient: PromiseOrValue, + _relayer: PromiseOrValue, + _fee: PromiseOrValue, + _refund: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + rescueTokens( + _token: PromiseOrValue, + _to: PromiseOrValue, + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/@tornado/sdk-registry/src/deth/common.ts b/@tornado/sdk-registry/src/deth/common.ts new file mode 100644 index 0000000..4c90b08 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/common.ts @@ -0,0 +1,46 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type PromiseOrValue = T | Promise; diff --git a/@tornado/sdk-registry/src/deth/factories/ERC20Mock__factory.ts b/@tornado/sdk-registry/src/deth/factories/ERC20Mock__factory.ts new file mode 100644 index 0000000..7491acc --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/ERC20Mock__factory.ts @@ -0,0 +1,459 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { ERC20Mock, ERC20MockInterface } from "../ERC20Mock"; + +const _abi = [ + { + inputs: [], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "MinterAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "MinterRemoved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "addMinter", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isMinter", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "mint", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [], + name: "renounceMinter", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b5060408051808201825260078152664441494d6f636b60c81b6020808301918252835180850190945260048452634441494d60e01b908401528151919291601291620000619160009190620001ff565b50815162000077906001906020850190620001ff565b506002805460ff191660ff9290921691909117905550620000ac90506200009d620000b2565b6001600160e01b03620000b716565b620002a1565b335b90565b620000d28160066200010960201b62000c551790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200011e82826001600160e01b036200019616565b1562000171576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001df5760405162461bcd60e51b8152600401808060200182810382526022815260200180620011976022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024257805160ff191683800117855562000272565b8280016001018555821562000272579182015b828111156200027257825182559160200191906001019062000255565b506200028092915062000284565b5090565b620000b491905b808211156200028057600081556001016200028b565b610ee680620002b16000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146102db578063a9059cbb14610307578063aa271e1a14610333578063dd62ed3e14610359576100f5565b806370a082311461027d57806395d89b41146102a3578063983b2d56146102ab57806398650275146102d3576100f5565b806323b872dd116100d357806323b872dd146101d1578063313ce56714610207578063395093511461022557806340c10f1914610251576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101b7575b600080fd5b610102610387565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561018d57600080fd5b506001600160a01b03813516906020013561041d565b604080519115158252519081900360200190f35b6101bf61043a565b60408051918252519081900360200190f35b6101a3600480360360608110156101e757600080fd5b506001600160a01b03813581169160208101359091169060400135610440565b61020f6104cd565b6040805160ff9092168252519081900360200190f35b6101a36004803603604081101561023b57600080fd5b506001600160a01b0381351690602001356104d6565b6101a36004803603604081101561026757600080fd5b506001600160a01b03813516906020013561052a565b6101bf6004803603602081101561029357600080fd5b50356001600160a01b0316610581565b61010261059c565b6102d1600480360360208110156102c157600080fd5b50356001600160a01b03166105fc565b005b6102d161064e565b6101a3600480360360408110156102f157600080fd5b506001600160a01b038135169060200135610660565b6101a36004803603604081101561031d57600080fd5b506001600160a01b0381351690602001356106ce565b6101a36004803603602081101561034957600080fd5b50356001600160a01b03166106e2565b6101bf6004803603604081101561036f57600080fd5b506001600160a01b03813581169160200135166106fb565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104135780601f106103e857610100808354040283529160200191610413565b820191906000526020600020905b8154815290600101906020018083116103f657829003601f168201915b5050505050905090565b600061043161042a610726565b848461072a565b50600192915050565b60055490565b600061044d848484610816565b6104c384610459610726565b6104be85604051806060016040528060288152602001610dfa602891396001600160a01b038a16600090815260046020526040812090610497610726565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61097416565b61072a565b5060019392505050565b60025460ff1690565b60006104316104e3610726565b846104be85600460006104f4610726565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a0b16565b600061053c610537610726565b6106e2565b6105775760405162461bcd60e51b8152600401808060200182810382526030815260200180610da96030913960400191505060405180910390fd5b6104318383610a6c565b6001600160a01b031660009081526003602052604090205490565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104135780601f106103e857610100808354040283529160200191610413565b610607610537610726565b6106425760405162461bcd60e51b8152600401808060200182810382526030815260200180610da96030913960400191505060405180910390fd5b61064b81610b5e565b50565b61065e610659610726565b610ba6565b565b600061043161066d610726565b846104be85604051806060016040528060258152602001610e8d6025913960046000610697610726565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61097416565b60006104316106db610726565b8484610816565b60006106f560068363ffffffff610bee16565b92915050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661076f5760405162461bcd60e51b8152600401808060200182810382526024815260200180610e696024913960400191505060405180910390fd5b6001600160a01b0382166107b45760405162461bcd60e51b8152600401808060200182810382526022815260200180610d616022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661085b5760405162461bcd60e51b8152600401808060200182810382526025815260200180610e446025913960400191505060405180910390fd5b6001600160a01b0382166108a05760405162461bcd60e51b8152600401808060200182810382526023815260200180610d3e6023913960400191505060405180910390fd5b6108e381604051806060016040528060268152602001610d83602691396001600160a01b038616600090815260036020526040902054919063ffffffff61097416565b6001600160a01b038085166000908152600360205260408082209390935590841681522054610918908263ffffffff610a0b16565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109c85781810151838201526020016109b0565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610a65576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610ac7576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600554610ada908263ffffffff610a0b16565b6005556001600160a01b038216600090815260036020526040902054610b06908263ffffffff610a0b16565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610b6f60068263ffffffff610c5516565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610bb760068263ffffffff610cd616565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610c355760405162461bcd60e51b8152600401808060200182810382526022815260200180610e226022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610c5f8282610bee565b15610cb1576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610ce08282610bee565b610d1b5760405162461bcd60e51b8152600401808060200182810382526021815260200180610dd96021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820266dabb51a21c3ac1b53dce0ea5567b27fb5a63ceeee84f89d7cf299991cbc1c64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"; + +type ERC20MockConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC20MockConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC20Mock__factory extends ContractFactory { + constructor(...args: ERC20MockConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "ERC20Mock"; + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): ERC20Mock { + return super.attach(address) as ERC20Mock; + } + override connect(signer: Signer): ERC20Mock__factory { + return super.connect(signer) as ERC20Mock__factory; + } + static readonly contractName: "ERC20Mock"; + + public readonly contractName: "ERC20Mock"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC20MockInterface { + return new utils.Interface(_abi) as ERC20MockInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC20Mock { + return new Contract(address, _abi, signerOrProvider) as ERC20Mock; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/ERC20Tornado__factory.ts b/@tornado/sdk-registry/src/deth/factories/ERC20Tornado__factory.ts new file mode 100644 index 0000000..0ca2c4c --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/ERC20Tornado__factory.ts @@ -0,0 +1,662 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { ERC20Tornado, ERC20TornadoInterface } from "../ERC20Tornado"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IVerifier", + name: "_verifier", + type: "address", + }, + { + internalType: "uint256", + name: "_denomination", + type: "uint256", + }, + { + internalType: "uint32", + name: "_merkleTreeHeight", + type: "uint32", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + { + internalType: "address", + name: "_token", + type: "address", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "commitment", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint32", + name: "leafIndex", + type: "uint32", + }, + { + indexed: false, + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "nullifierHash", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "Withdrawal", + type: "event", + }, + { + constant: true, + inputs: [], + name: "FIELD_SIZE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ROOT_HISTORY_SIZE", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ZERO_VALUE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newOperator", + type: "address", + }, + ], + name: "changeOperator", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "commitments", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "currentRootIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "denomination", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes32", + name: "_commitment", + type: "bytes32", + }, + ], + name: "deposit", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "filledSubtrees", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getLastRoot", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_left", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_right", + type: "bytes32", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "pure", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + ], + name: "isKnownRoot", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + ], + name: "isSpent", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32[]", + name: "_nullifierHashes", + type: "bytes32[]", + }, + ], + name: "isSpentArray", + outputs: [ + { + internalType: "bool[]", + name: "spent", + type: "bool[]", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "levels", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "nextIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "nullifierHashes", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "operator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "roots", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "token", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newVerifier", + type: "address", + }, + ], + name: "updateVerifier", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "verifier", + outputs: [ + { + internalType: "contract IVerifier", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes", + name: "_proof", + type: "bytes", + }, + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + { + internalType: "address payable", + name: "_recipient", + type: "address", + }, + { + internalType: "address payable", + name: "_relayer", + type: "address", + }, + { + internalType: "uint256", + name: "_fee", + type: "uint256", + }, + { + internalType: "uint256", + name: "_refund", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "zeros", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001cef38038062001cef833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c666027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cad6022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c25833981519152909101819055815480830183559282905260008051602062001ccf8339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029416565b60028054600181810190925560008051602062001c258339815191520182905580548082018255600082905260008051602062001ccf833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029416565b6004555050600160685582620002425760405162461bcd60e51b815260040180806020018281038252602581526020018062001c006025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048192505050565b600060008051602062001c8d8339815191528310620002fa576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001c8d8339815191528210620003495760405162461bcd60e51b815260040180806020018281038252602181526020018062001c456021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003a457600080fd5b505af4158015620003b9573d6000803e3d6000fd5b505050506040513d6040811015620003d057600080fd5b508051602090910151909250905060008051602062001c8d833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200044a57600080fd5b505af41580156200045f573d6000803e3d6000fd5b505050506040513d60408110156200047657600080fd5b505195945050505050565b61176f80620004916000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b50610271610992565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109a1565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b82565b3480156102f057600080fd5b506102f9610b94565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610ba0565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610baf565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c22565b34801561038757600080fd5b506102bd610c37565b34801561039c57600080fd5b506102f9610c3d565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c49565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cb4565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d3c565b3480156104cc57600080fd5b506102bd610e5d565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e7d565b34801561050b57600080fd5b506102f9610e91565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610e96565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610eab565b34801561057457600080fd5b506102bd610ec9565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610eed565b3480156105b357600080fd5b50610271610efa565b3480156105c857600080fd5b506102f9610f09565b606d546001600160a01b0316331461061a5760405162461bcd60e51b81526004018080602001828103825260258152602001806117166025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60688054600101908190556069548311156106b3576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000868152606a602052604090205460ff1615610717576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61072087610baf565b610771576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c080820183528a8252602082018a90526001600160a01b038981168385015288811660608401526080830188905260a08301879052925163695ef6f960e01b8152929093169263695ef6f9928d928d9290916004810191829160240190849080838360005b838110156107f65781810151838201526020016107de565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561084857600080fd5b505af115801561085c573d6000803e3d6000fd5b505050506040513d602081101561087257600080fd5b50516108be576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000868152606a60205260409020805460ff191660011790556108e385858585610f1c565b604080516001600160a01b038781168252602082018990528183018690529151918616917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a26068548114610987576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050505050505050565b606c546001600160a01b031681565b60006000805160206116a58339815191528310610a05576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116a58339815191528210610a515760405162461bcd60e51b81526004018080602001828103825260218152602001806116556021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610aab57600080fd5b505af4158015610abf573d6000803e3d6000fd5b505050506040513d6040811015610ad557600080fd5b50805160209091015190925090506000805160206116a5833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b4d57600080fd5b505af4158015610b61573d6000803e3d6000fd5b505050506040513d6040811015610b7757600080fd5b505195945050505050565b6000805160206116a583398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bbe57506000610c1d565b60035463ffffffff165b60048163ffffffff1660648110610bdb57fe5b0154831415610bee576001915050610c1d565b63ffffffff8116610bfd575060645b6003546000199091019063ffffffff80831691161415610bc85760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c925760405162461bcd60e51b81526004018080602001828103825260258152602001806117166025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610ce0578160200160208202803883390190505b50905060005b82811015610d3557610d09848483818110610cfd57fe5b90506020020135610e96565b15610d2d576001828281518110610d1c57fe5b911515602092830291909101909101525b600101610ce6565b5092915050565b60688054600101908190556000828152606b602052604090205460ff1615610d955760405162461bcd60e51b81526004018080602001828103825260218152602001806116c56021913960400191505060405180910390fd5b6000610da083611017565b6000848152606b60205260409020805460ff191660011790559050610dc36111ae565b6040805163ffffffff83168152426020820152815185927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a2506068548114610e59576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b60035460009060049063ffffffff1660648110610e7657fe5b0154905090565b60048160648110610e8a57fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610eb857fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610eb857fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f5a5760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b610f688483606954036111fa565b8115610f7857610f7883836111fa565b8015611011576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fc9576040519150601f19603f3d011682016040523d82523d6000602084013e610fce565b606091505b505090508061100f576040516001600160a01b0385169083156108fc029084906000818181858888f1935050505015801561100d573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156110745760405162461bcd60e51b815260040180806020018281038252602f8152602001806115a5602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561114c57600185166111085783925060028163ffffffff16815481106110d657fe5b906000526020600020015491508360018263ffffffff16815481106110f757fe5b60009182526020909120015561112c565b60018163ffffffff168154811061111b57fe5b906000526020600020015492508391505b61113683836109a1565b9350600263ffffffff86160494506001016110a4565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff90811692909217908190558491600491166064811061118e57fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156111eb5760405162461bcd60e51b81526004018080602001828103825260308152602001806116e66030913960400191505060405180910390fd5b6111f833306069546113c5565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106112775780518252601f199092019160209182019101611258565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112d9576040519150601f19603f3d011682016040523d82523d6000602084013e6112de565b606091505b509150915081611329576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110115780516020146113705760405162461bcd60e51b815260040180806020018281038252602a8152602001806115d4602a913960400191505060405180910390fd5b80806020019051602081101561138557600080fd5b50519150816110115760405162461bcd60e51b815260040180806020018281038252602781526020018061162e6027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b6020831061144a5780518252601f19909201916020918201910161142b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114ac576040519150601f19603f3d011682016040523d82523d6000602084013e6114b1565b606091505b509150915081611508576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b80511561100f57805160201461154f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806115d4602a913960400191505060405180910390fd5b80806020019051602081101561156457600080fd5b505191508161100f5760405162461bcd60e51b815260040180806020018281038252602f815260200180611676602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820e1c5144cb9686ce6e6ddfdff557eadc4214fbeb4f9a37da84c12c202331fe40364736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"; + +type ERC20TornadoConstructorParams = + | [linkLibraryAddresses: ERC20TornadoLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC20TornadoConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class ERC20Tornado__factory extends ContractFactory { + constructor(...args: ERC20TornadoConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + ERC20Tornado__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + this.contractName = "ERC20Tornado"; + } + + static linkBytecode( + linkLibraryAddresses: ERC20TornadoLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__Hasher________________________________", "g"), + linkLibraryAddresses["__Hasher________________________________"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _verifier: PromiseOrValue, + _denomination: PromiseOrValue, + _merkleTreeHeight: PromiseOrValue, + _operator: PromiseOrValue, + _token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _verifier, + _denomination, + _merkleTreeHeight, + _operator, + _token, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _verifier: PromiseOrValue, + _denomination: PromiseOrValue, + _merkleTreeHeight: PromiseOrValue, + _operator: PromiseOrValue, + _token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _verifier, + _denomination, + _merkleTreeHeight, + _operator, + _token, + overrides || {} + ); + } + override attach(address: string): ERC20Tornado { + return super.attach(address) as ERC20Tornado; + } + override connect(signer: Signer): ERC20Tornado__factory { + return super.connect(signer) as ERC20Tornado__factory; + } + static readonly contractName: "ERC20Tornado"; + + public readonly contractName: "ERC20Tornado"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC20TornadoInterface { + return new utils.Interface(_abi) as ERC20TornadoInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC20Tornado { + return new Contract(address, _abi, signerOrProvider) as ERC20Tornado; + } +} + +export interface ERC20TornadoLibraryAddresses { + ["__Hasher________________________________"]: string; +} diff --git a/@tornado/sdk-registry/src/deth/factories/ERC20__factory.ts b/@tornado/sdk-registry/src/deth/factories/ERC20__factory.ts new file mode 100644 index 0000000..dd80090 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/ERC20__factory.ts @@ -0,0 +1,231 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { ERC20, ERC20Interface } from "../ERC20"; + +const _abi = [ + { + constant: true, + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "_totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "who", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "transfer", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + constant: true, + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ERC20__factory { + static readonly abi = _abi; + static createInterface(): ERC20Interface { + return new utils.Interface(_abi) as ERC20Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): ERC20 { + return new Contract(address, _abi, signerOrProvider) as ERC20; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/ETHTornado__factory.ts b/@tornado/sdk-registry/src/deth/factories/ETHTornado__factory.ts new file mode 100644 index 0000000..ecdc9ca --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/ETHTornado__factory.ts @@ -0,0 +1,638 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { ETHTornado, ETHTornadoInterface } from "../ETHTornado"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract IVerifier", + name: "_verifier", + type: "address", + }, + { + internalType: "uint256", + name: "_denomination", + type: "uint256", + }, + { + internalType: "uint32", + name: "_merkleTreeHeight", + type: "uint32", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "commitment", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint32", + name: "leafIndex", + type: "uint32", + }, + { + indexed: false, + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "nullifierHash", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "Withdrawal", + type: "event", + }, + { + constant: true, + inputs: [], + name: "FIELD_SIZE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ROOT_HISTORY_SIZE", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ZERO_VALUE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newOperator", + type: "address", + }, + ], + name: "changeOperator", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "commitments", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "currentRootIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "denomination", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes32", + name: "_commitment", + type: "bytes32", + }, + ], + name: "deposit", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "filledSubtrees", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getLastRoot", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_left", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_right", + type: "bytes32", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "pure", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + ], + name: "isKnownRoot", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + ], + name: "isSpent", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32[]", + name: "_nullifierHashes", + type: "bytes32[]", + }, + ], + name: "isSpentArray", + outputs: [ + { + internalType: "bool[]", + name: "spent", + type: "bool[]", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "levels", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "nextIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "nullifierHashes", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "operator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "roots", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newVerifier", + type: "address", + }, + ], + name: "updateVerifier", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "verifier", + outputs: [ + { + internalType: "contract IVerifier", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes", + name: "_proof", + type: "bytes", + }, + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + { + internalType: "address payable", + name: "_recipient", + type: "address", + }, + { + internalType: "address payable", + name: "_relayer", + type: "address", + }, + { + internalType: "uint256", + name: "_fee", + type: "uint256", + }, + { + internalType: "uint256", + name: "_refund", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "zeros", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b50604051620019a9380380620019a9833981810160405260808110156200004757600080fd5b5080516020820151604083015160609093015191929091838383838163ffffffff8116620000a75760405162461bcd60e51b8152600401808060200182810382526027815260200180620019206027913960400191505060405180910390fd5b60208163ffffffff1610620000ee5760405162461bcd60e51b8152600401808060200182810382526022815260200180620019676022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c600080516020620018df8339815191529091018190558154808301835592829052600080516020620019898339815191529092018290555b60005463ffffffff9081169082161015620001dc576200019282806001600160e01b036200027616565b600280546001818101909255600080516020620018df8339815191520182905580548082018255600082905260008051602062001989833981519152018290559092500162000168565b50620001f281806001600160e01b036200027616565b60045550506001606855826200023a5760405162461bcd60e51b8152600401808060200182810382526025815260200180620018ba6025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549290951691161790925560695550620004639350505050565b6000600080516020620019478339815191528310620002dc576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206200194783398151915282106200032b5760405162461bcd60e51b8152600401808060200182810382526021815260200180620018ff6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b1580156200038657600080fd5b505af41580156200039b573d6000803e3d6000fd5b505050506040513d6040811015620003b257600080fd5b508051602090910151909250905060008051602062001947833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200042c57600080fd5b505af415801562000441573d6000803e3d6000fd5b505050506040513d60408110156200045857600080fd5b505195945050505050565b61144780620004736000396000f3fe6080604052600436106101405760003560e01c806390eeb02b116100b6578063cd87a3b41161006f578063cd87a3b4146104f4578063e5285dcc14610509578063e829558814610533578063ec7329591461055d578063f178e47c14610572578063fc7e9c6f1461059c57610140565b806390eeb02b1461038557806397fc007c1461039a5780639fa12d0b146103cd578063b214faa514610498578063ba70f757146104b5578063c2b40ae4146104ca57610140565b8063414a37ba11610108578063414a37ba146102c45780634ecf518b146102d9578063570ca735146103075780636d9833e31461031c578063839df945146103465780638bca6d161461037057610140565b806306394c9b1461014557806317cc915c1461017a57806321a0adb6146101b85780632b7ac3f31461025157806338bf282e14610282575b600080fd5b34801561015157600080fd5b506101786004803603602081101561016857600080fd5b50356001600160a01b03166105b1565b005b34801561018657600080fd5b506101a46004803603602081101561019d57600080fd5b503561061c565b604080519115158252519081900360200190f35b610178600480360360e08110156101ce57600080fd5b810190602081018135600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610631565b34801561025d57600080fd5b50610266610972565b604080516001600160a01b039092168252519081900360200190f35b34801561028e57600080fd5b506102b2600480360360408110156102a557600080fd5b5080359060200135610981565b60408051918252519081900360200190f35b3480156102d057600080fd5b506102b2610b62565b3480156102e557600080fd5b506102ee610b74565b6040805163ffffffff9092168252519081900360200190f35b34801561031357600080fd5b50610266610b80565b34801561032857600080fd5b506101a46004803603602081101561033f57600080fd5b5035610b8f565b34801561035257600080fd5b506101a46004803603602081101561036957600080fd5b5035610c02565b34801561037c57600080fd5b506102b2610c17565b34801561039157600080fd5b506102ee610c1d565b3480156103a657600080fd5b50610178600480360360208110156103bd57600080fd5b50356001600160a01b0316610c29565b3480156103d957600080fd5b50610448600480360360208110156103f057600080fd5b810190602081018135600160201b81111561040a57600080fd5b82018360208201111561041c57600080fd5b803590602001918460208302840111600160201b8311171561043d57600080fd5b509092509050610c94565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048457818101518382015260200161046c565b505050509050019250505060405180910390f35b610178600480360360208110156104ae57600080fd5b5035610d1c565b3480156104c157600080fd5b506102b2610e3d565b3480156104d657600080fd5b506102b2600480360360208110156104ed57600080fd5b5035610e5d565b34801561050057600080fd5b506102ee610e71565b34801561051557600080fd5b506101a46004803603602081101561052c57600080fd5b5035610e76565b34801561053f57600080fd5b506102b26004803603602081101561055657600080fd5b5035610e8b565b34801561056957600080fd5b506102b2610ea9565b34801561057e57600080fd5b506102b26004803603602081101561059557600080fd5b5035610ecd565b3480156105a857600080fd5b506102ee610eda565b606d546001600160a01b031633146105fa5760405162461bcd60e51b81526004018080602001828103825260258152602001806113b96025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b6068805460010190819055606954831115610693576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000868152606a602052604090205460ff16156106f7576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61070087610b8f565b610751576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c080820183528a8252602082018a90526001600160a01b038981168385015288811660608401526080830188905260a08301879052925163695ef6f960e01b8152929093169263695ef6f9928d928d9290916004810191829160240190849080838360005b838110156107d65781810151838201526020016107be565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b505050506040513d602081101561085257600080fd5b505161089e576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000868152606a60205260409020805460ff191660011790556108c385858585610eed565b604080516001600160a01b038781168252602082018990528183018690529151918616917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a26068548114610967576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050505050505050565b606c546001600160a01b031681565b600060008051602061133083398151915283106109e5576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206113308339815191528210610a315760405162461bcd60e51b81526004018080602001828103825260218152602001806112db6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610a8b57600080fd5b505af4158015610a9f573d6000803e3d6000fd5b505050506040513d6040811015610ab557600080fd5b5080516020909101519092509050600080516020611330833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b2d57600080fd5b505af4158015610b41573d6000803e3d6000fd5b505050506040513d6040811015610b5757600080fd5b505195945050505050565b60008051602061133083398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610b9e57506000610bfd565b60035463ffffffff165b60048163ffffffff1660648110610bbb57fe5b0154831415610bce576001915050610bfd565b63ffffffff8116610bdd575060645b6003546000199091019063ffffffff80831691161415610ba85760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c725760405162461bcd60e51b81526004018080602001828103825260258152602001806113b96025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cc0578160200160208202803883390190505b50905060005b82811015610d1557610ce9848483818110610cdd57fe5b90506020020135610e76565b15610d0d576001828281518110610cfc57fe5b911515602092830291909101909101525b600101610cc6565b5092915050565b60688054600101908190556000828152606b602052604090205460ff1615610d755760405162461bcd60e51b81526004018080602001828103825260218152602001806113506021913960400191505060405180910390fd5b6000610d808361109a565b6000848152606b60205260409020805460ff191660011790559050610da3611231565b6040805163ffffffff83168152426020820152815185927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a2506068548114610e39576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b60035460009060049063ffffffff1660648110610e5657fe5b0154905090565b60048160648110610e6a57fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610e9857fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610e9857fe5b600354600160201b900463ffffffff1681565b3415610f2a5760405162461bcd60e51b81526004018080602001828103825260358152602001806113de6035913960400191505060405180910390fd5b8015610f675760405162461bcd60e51b81526004018080602001828103825260348152602001806112fc6034913960400191505060405180910390fd5b6069546040516000916001600160a01b0387169190859003908381818185875af1925050503d8060008114610fb8576040519150601f19603f3d011682016040523d82523d6000602084013e610fbd565b606091505b5050905080610ffd5760405162461bcd60e51b81526004018080602001828103825260258152602001806113716025913960400191505060405180910390fd5b8215611093576040516001600160a01b038516908490600081818185875af1925050503d806000811461104c576040519150601f19603f3d011682016040523d82523d6000602084013e611051565b606091505b505080915050806110935760405162461bcd60e51b81526004018080602001828103825260238152602001806113966023913960400191505060405180910390fd5b5050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156110f75760405162461bcd60e51b815260040180806020018281038252602f815260200180611274602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff90811690821610156111cf576001851661118b5783925060028163ffffffff168154811061115957fe5b906000526020600020015491508360018263ffffffff168154811061117a57fe5b6000918252602090912001556111af565b60018163ffffffff168154811061119e57fe5b906000526020600020015492508391505b6111b98383610981565b9350600263ffffffff8616049450600101611127565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff90811692909217908190558491600491166064811061121157fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b60695434146112715760405162461bcd60e51b81526004018080602001828103825260388152602001806112a36038913960400191505060405180910390fd5b56fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e206265206164646564506c656173652073656e6420606d697844656e6f6d696e6174696f6e602045544820616c6f6e672077697468207472616e73616374696f6e5f72696768742073686f756c6420626520696e7369646520746865206669656c64526566756e642076616c756520697320737570706f73656420746f206265207a65726f20666f722045544820696e7374616e636530644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465647061796d656e7420746f205f726563697069656e7420646964206e6f7420676f20746872757061796d656e7420746f205f72656c6179657220646964206e6f7420676f20746872754f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2e4d6573736167652076616c756520697320737570706f73656420746f206265207a65726f20666f722045544820696e7374616e6365a265627a7a72315820d15ee2f16c5ac46ac18f5c188efe2bd8dbb37cf2c474ec6b110e395ee7645dfd64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"; + +type ETHTornadoConstructorParams = + | [linkLibraryAddresses: ETHTornadoLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ETHTornadoConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class ETHTornado__factory extends ContractFactory { + constructor(...args: ETHTornadoConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + ETHTornado__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + this.contractName = "ETHTornado"; + } + + static linkBytecode( + linkLibraryAddresses: ETHTornadoLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__Hasher________________________________", "g"), + linkLibraryAddresses["__Hasher________________________________"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _verifier: PromiseOrValue, + _denomination: PromiseOrValue, + _merkleTreeHeight: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _verifier, + _denomination, + _merkleTreeHeight, + _operator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _verifier: PromiseOrValue, + _denomination: PromiseOrValue, + _merkleTreeHeight: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _verifier, + _denomination, + _merkleTreeHeight, + _operator, + overrides || {} + ); + } + override attach(address: string): ETHTornado { + return super.attach(address) as ETHTornado; + } + override connect(signer: Signer): ETHTornado__factory { + return super.connect(signer) as ETHTornado__factory; + } + static readonly contractName: "ETHTornado"; + + public readonly contractName: "ETHTornado"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ETHTornadoInterface { + return new utils.Interface(_abi) as ETHTornadoInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ETHTornado { + return new Contract(address, _abi, signerOrProvider) as ETHTornado; + } +} + +export interface ETHTornadoLibraryAddresses { + ["__Hasher________________________________"]: string; +} diff --git a/@tornado/sdk-registry/src/deth/factories/Multicall3Contract__factory.ts b/@tornado/sdk-registry/src/deth/factories/Multicall3Contract__factory.ts new file mode 100644 index 0000000..508a27f --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/Multicall3Contract__factory.ts @@ -0,0 +1,464 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Multicall3Contract, + Multicall3ContractInterface, +} from "../Multicall3Contract"; + +const _abi = [ + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "aggregate", + outputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call3[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "aggregate3", + outputs: [ + { + components: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Result[]", + name: "returnData", + type: "tuple[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bool", + name: "allowFailure", + type: "bool", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call3Value[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "aggregate3Value", + outputs: [ + { + components: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Result[]", + name: "returnData", + type: "tuple[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "blockAndAggregate", + outputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + { + components: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Result[]", + name: "returnData", + type: "tuple[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "getBasefee", + outputs: [ + { + internalType: "uint256", + name: "basefee", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + ], + name: "getBlockHash", + outputs: [ + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getBlockNumber", + outputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getChainId", + outputs: [ + { + internalType: "uint256", + name: "chainid", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockCoinbase", + outputs: [ + { + internalType: "address", + name: "coinbase", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockDifficulty", + outputs: [ + { + internalType: "uint256", + name: "difficulty", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockGasLimit", + outputs: [ + { + internalType: "uint256", + name: "gaslimit", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockTimestamp", + outputs: [ + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "addr", + type: "address", + }, + ], + name: "getEthBalance", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getLastBlockHash", + outputs: [ + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "requireSuccess", + type: "bool", + }, + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "tryAggregate", + outputs: [ + { + components: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Result[]", + name: "returnData", + type: "tuple[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bool", + name: "requireSuccess", + type: "bool", + }, + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Call[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "tryBlockAndAggregate", + outputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + { + components: [ + { + internalType: "bool", + name: "success", + type: "bool", + }, + { + internalType: "bytes", + name: "returnData", + type: "bytes", + }, + ], + internalType: "struct Multicall3.Result[]", + name: "returnData", + type: "tuple[]", + }, + ], + stateMutability: "payable", + type: "function", + }, +] as const; + +export class Multicall3Contract__factory { + static readonly abi = _abi; + static createInterface(): Multicall3ContractInterface { + return new utils.Interface(_abi) as Multicall3ContractInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Multicall3Contract { + return new Contract(address, _abi, signerOrProvider) as Multicall3Contract; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/MulticallContract__factory.ts b/@tornado/sdk-registry/src/deth/factories/MulticallContract__factory.ts new file mode 100644 index 0000000..679b442 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/MulticallContract__factory.ts @@ -0,0 +1,165 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + MulticallContract, + MulticallContractInterface, +} from "../MulticallContract"; + +const _abi = [ + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + internalType: "struct Multicall.Call[]", + name: "calls", + type: "tuple[]", + }, + ], + name: "aggregate", + outputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + { + internalType: "bytes[]", + name: "returnData", + type: "bytes[]", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + ], + name: "getBlockHash", + outputs: [ + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockCoinbase", + outputs: [ + { + internalType: "address", + name: "coinbase", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockDifficulty", + outputs: [ + { + internalType: "uint256", + name: "difficulty", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockGasLimit", + outputs: [ + { + internalType: "uint256", + name: "gaslimit", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getCurrentBlockTimestamp", + outputs: [ + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "addr", + type: "address", + }, + ], + name: "getEthBalance", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getLastBlockHash", + outputs: [ + { + internalType: "bytes32", + name: "blockHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class MulticallContract__factory { + static readonly abi = _abi; + static createInterface(): MulticallContractInterface { + return new utils.Interface(_abi) as MulticallContractInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MulticallContract { + return new Contract(address, _abi, signerOrProvider) as MulticallContract; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/RelayerRegistryAbi__factory.ts b/@tornado/sdk-registry/src/deth/factories/RelayerRegistryAbi__factory.ts new file mode 100644 index 0000000..38645cb --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/RelayerRegistryAbi__factory.ts @@ -0,0 +1,694 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + RelayerRegistryAbi, + RelayerRegistryAbiInterface, +} from "../RelayerRegistryAbi"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_torn", + type: "address", + }, + { + internalType: "address", + name: "_governance", + type: "address", + }, + { + internalType: "address", + name: "_ens", + type: "address", + }, + { + internalType: "bytes32", + name: "_staking", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_feeManager", + type: "bytes32", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "minStakeAmount", + type: "uint256", + }, + ], + name: "MinimumStakeAmount", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerBalanceNullified", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "relayer", + type: "bytes32", + }, + { + indexed: false, + internalType: "string", + name: "ensName", + type: "string", + }, + { + indexed: false, + internalType: "address", + name: "relayerAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "stakedAmount", + type: "uint256", + }, + ], + name: "RelayerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tornadoRouter", + type: "address", + }, + ], + name: "RouterRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountStakeAdded", + type: "uint256", + }, + ], + name: "StakeAddedToRelayer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountBurned", + type: "uint256", + }, + ], + name: "StakeBurned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerUnregistered", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32[]", + name: "domains", + type: "bytes32[]", + }, + ], + name: "bulkResolve", + outputs: [ + { + internalType: "address[]", + name: "result", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "contract ITornadoInstance", + name: "pool", + type: "address", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "ens", + outputs: [ + { + internalType: "contract IENS", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeManager", + outputs: [ + { + internalType: "contract FeeManager", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerEnsHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "governance", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_tornadoRouter", + type: "bytes32", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayerRegistered", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "minStakeAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "nullifyBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "registerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "registerWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "relayers", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "bytes32", + name: "ensHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "minAmount", + type: "uint256", + }, + ], + name: "setMinStakeAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tornadoRouterAddress", + type: "address", + }, + ], + name: "setTornadoRouter", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + ], + name: "stakeToRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address", + name: "staker", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "stakeToRelayerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "staking", + outputs: [ + { + internalType: "contract ITornadoStakingRewards", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "torn", + outputs: [ + { + internalType: "contract TORN", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tornadoRouter", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "unregisterWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "workers", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class RelayerRegistryAbi__factory { + static readonly abi = _abi; + static createInterface(): RelayerRegistryAbiInterface { + return new utils.Interface(_abi) as RelayerRegistryAbiInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): RelayerRegistryAbi { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistryAbi; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/RelayerRegistry__factory.ts b/@tornado/sdk-registry/src/deth/factories/RelayerRegistry__factory.ts new file mode 100644 index 0000000..cfbda61 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/RelayerRegistry__factory.ts @@ -0,0 +1,759 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { + RelayerRegistry, + RelayerRegistryInterface, +} from "../RelayerRegistry"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_torn", + type: "address", + }, + { + internalType: "address", + name: "_governance", + type: "address", + }, + { + internalType: "address", + name: "_ens", + type: "address", + }, + { + internalType: "address", + name: "_staking", + type: "address", + }, + { + internalType: "address", + name: "_feeManager", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "minStakeAmount", + type: "uint256", + }, + ], + name: "MinimumStakeAmount", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerBalanceNullified", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "relayer", + type: "bytes32", + }, + { + indexed: false, + internalType: "string", + name: "ensName", + type: "string", + }, + { + indexed: false, + internalType: "address", + name: "relayerAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "stakedAmount", + type: "uint256", + }, + ], + name: "RelayerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tornadoRouter", + type: "address", + }, + ], + name: "RouterRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountStakeAdded", + type: "uint256", + }, + ], + name: "StakeAddedToRelayer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountBurned", + type: "uint256", + }, + ], + name: "StakeBurned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerUnregistered", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32[]", + name: "domains", + type: "bytes32[]", + }, + ], + name: "bulkResolve", + outputs: [ + { + internalType: "address[]", + name: "result", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "contract ITornadoInstance", + name: "pool", + type: "address", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "ens", + outputs: [ + { + internalType: "contract IENS", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeManager", + outputs: [ + { + internalType: "contract IFeeManager", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerEnsHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "governance", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_tornadoRouter", + type: "bytes32", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayerRegistered", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "minStakeAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "nullifyBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "registerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "registerWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "relayers", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "bytes32", + name: "ensHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "minAmount", + type: "uint256", + }, + ], + name: "setMinStakeAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tornadoRouterAddress", + type: "address", + }, + ], + name: "setTornadoRouter", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + ], + name: "stakeToRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address", + name: "staker", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "stakeToRelayerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "staking", + outputs: [ + { + internalType: "contract TornadoStakingRewards", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "torn", + outputs: [ + { + internalType: "contract TORN", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tornadoRouter", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "unregisterWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "workers", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x6101206040523480156200001257600080fd5b50604051620029be380380620029be83398101604081905262000035916200006d565b6001600160601b0319606095861b811660805293851b841660a05291841b831660c052831b821660e05290911b166101005262000105565b600080600080600060a0868803121562000085578081fd5b85516200009281620000ec565b6020870151909550620000a581620000ec565b6040870151909450620000b881620000ec565b6060870151909350620000cb81620000ec565b6080870151909250620000de81620000ec565b809150509295509295909350565b6001600160a01b03811681146200010257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61282e620001906000398061078452806110535250806108935280610a50528061148052806117e75250806105ac52806115c55250806109555280610a8a5280610bf05280611177525080610dc05280610f8852806110bd528061145d52806117c4525061282e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033"; + +type RelayerRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: RelayerRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class RelayerRegistry__factory extends ContractFactory { + constructor(...args: RelayerRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "RelayerRegistry"; + } + + override deploy( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ); + } + override attach(address: string): RelayerRegistry { + return super.attach(address) as RelayerRegistry; + } + override connect(signer: Signer): RelayerRegistry__factory { + return super.connect(signer) as RelayerRegistry__factory; + } + static readonly contractName: "RelayerRegistry"; + + public readonly contractName: "RelayerRegistry"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): RelayerRegistryInterface { + return new utils.Interface(_abi) as RelayerRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): RelayerRegistry { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistry; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/TornadoInstance__factory.ts b/@tornado/sdk-registry/src/deth/factories/TornadoInstance__factory.ts new file mode 100644 index 0000000..c906f8d --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/TornadoInstance__factory.ts @@ -0,0 +1,543 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + TornadoInstance, + TornadoInstanceInterface, +} from "../TornadoInstance"; + +const _abi = [ + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newOperator", + type: "address", + }, + ], + name: "changeOperator", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "nullifierHashes", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes", + name: "_proof", + type: "bytes", + }, + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + { + internalType: "address payable", + name: "_recipient", + type: "address", + }, + { + internalType: "address payable", + name: "_relayer", + type: "address", + }, + { + internalType: "uint256", + name: "_fee", + type: "uint256", + }, + { + internalType: "uint256", + name: "_refund", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "verifier", + outputs: [ + { + internalType: "contract IVerifier", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_left", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_right", + type: "bytes32", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "pure", + type: "function", + }, + { + constant: true, + inputs: [], + name: "FIELD_SIZE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "levels", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "operator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + ], + name: "isKnownRoot", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "commitments", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "denomination", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "currentRootIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "address", + name: "_newVerifier", + type: "address", + }, + ], + name: "updateVerifier", + outputs: [], + payable: false, + stateMutability: "nonpayable", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32[]", + name: "_nullifierHashes", + type: "bytes32[]", + }, + ], + name: "isSpentArray", + outputs: [ + { + internalType: "bool[]", + name: "spent", + type: "bool[]", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: false, + inputs: [ + { + internalType: "bytes32", + name: "_commitment", + type: "bytes32", + }, + ], + name: "deposit", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function", + }, + { + constant: true, + inputs: [], + name: "getLastRoot", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "roots", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ROOT_HISTORY_SIZE", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + ], + name: "isSpent", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "zeros", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "ZERO_VALUE", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "filledSubtrees", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + constant: true, + inputs: [], + name: "nextIndex", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + payable: false, + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IVerifier", + name: "_verifier", + type: "address", + }, + { + internalType: "uint256", + name: "_denomination", + type: "uint256", + }, + { + internalType: "uint32", + name: "_merkleTreeHeight", + type: "uint32", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + ], + payable: false, + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "commitment", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint32", + name: "leafIndex", + type: "uint32", + }, + { + indexed: false, + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "nullifierHash", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "fee", + type: "uint256", + }, + ], + name: "Withdrawal", + type: "event", + }, +] as const; + +export class TornadoInstance__factory { + static readonly abi = _abi; + static createInterface(): TornadoInstanceInterface { + return new utils.Interface(_abi) as TornadoInstanceInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TornadoInstance { + return new Contract(address, _abi, signerOrProvider) as TornadoInstance; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/TornadoProxy__factory.ts b/@tornado/sdk-registry/src/deth/factories/TornadoProxy__factory.ts new file mode 100644 index 0000000..f3a6bf1 --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/TornadoProxy__factory.ts @@ -0,0 +1,258 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { TornadoProxy, TornadoProxyInterface } from "../TornadoProxy"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes32", + name: "_tornadoTrees", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_governance", + type: "bytes32", + }, + { + internalType: "bytes32[]", + name: "_instances", + type: "bytes32[]", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "encryptedNote", + type: "bytes", + }, + ], + name: "EncryptedNote", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32[]", + name: "domains", + type: "bytes32[]", + }, + ], + name: "bulkResolve", + outputs: [ + { + internalType: "address[]", + name: "result", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "governance", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ITornadoInstance", + name: "", + type: "address", + }, + ], + name: "instances", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tornadoTrees", + outputs: [ + { + internalType: "contract ITornadoTrees", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ITornadoInstance", + name: "_tornado", + type: "address", + }, + { + internalType: "bytes32", + name: "_commitment", + type: "bytes32", + }, + { + internalType: "bytes", + name: "_encryptedNote", + type: "bytes", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ITornadoInstance", + name: "_instance", + type: "address", + }, + { + internalType: "bool", + name: "_update", + type: "bool", + }, + ], + name: "updateInstance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ITornadoInstance", + name: "_tornado", + type: "address", + }, + { + internalType: "bytes", + name: "_proof", + type: "bytes", + }, + { + internalType: "bytes32", + name: "_root", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_nullifierHash", + type: "bytes32", + }, + { + internalType: "address payable", + name: "_recipient", + type: "address", + }, + { + internalType: "address payable", + name: "_relayer", + type: "address", + }, + { + internalType: "uint256", + name: "_fee", + type: "uint256", + }, + { + internalType: "uint256", + name: "_refund", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IERC20", + name: "_token", + type: "address", + }, + { + internalType: "address payable", + name: "_to", + type: "address", + }, + { + internalType: "uint256", + name: "_balance", + type: "uint256", + }, + ], + name: "rescueTokens", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class TornadoProxy__factory { + static readonly abi = _abi; + static createInterface(): TornadoProxyInterface { + return new utils.Interface(_abi) as TornadoProxyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TornadoProxy { + return new Contract(address, _abi, signerOrProvider) as TornadoProxy; + } +} diff --git a/@tornado/sdk-registry/src/deth/factories/index.ts b/@tornado/sdk-registry/src/deth/factories/index.ts new file mode 100644 index 0000000..8ec95cd --- /dev/null +++ b/@tornado/sdk-registry/src/deth/factories/index.ts @@ -0,0 +1,12 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ERC20__factory } from "./ERC20__factory"; +export { ERC20Mock__factory } from "./ERC20Mock__factory"; +export { ERC20Tornado__factory } from "./ERC20Tornado__factory"; +export { ETHTornado__factory } from "./ETHTornado__factory"; +export { Multicall3Contract__factory } from "./Multicall3Contract__factory"; +export { MulticallContract__factory } from "./MulticallContract__factory"; +export { RelayerRegistry__factory } from "./RelayerRegistry__factory"; +export { TornadoInstance__factory } from "./TornadoInstance__factory"; +export { TornadoProxy__factory } from "./TornadoProxy__factory"; diff --git a/@tornado/sdk-registry/src/deth/index.ts b/@tornado/sdk-registry/src/deth/index.ts new file mode 100644 index 0000000..7adbade --- /dev/null +++ b/@tornado/sdk-registry/src/deth/index.ts @@ -0,0 +1,22 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ERC20 } from "./ERC20"; +export type { ERC20Mock } from "./ERC20Mock"; +export type { ERC20Tornado } from "./ERC20Tornado"; +export type { ETHTornado } from "./ETHTornado"; +export type { Multicall3Contract } from "./Multicall3Contract"; +export type { MulticallContract } from "./MulticallContract"; +export type { RelayerRegistry } from "./RelayerRegistry"; +export type { TornadoInstance } from "./TornadoInstance"; +export type { TornadoProxy } from "./TornadoProxy"; +export * as factories from "./factories"; +export { ERC20__factory } from "./factories/ERC20__factory"; +export { ERC20Mock__factory } from "./factories/ERC20Mock__factory"; +export { ERC20Tornado__factory } from "./factories/ERC20Tornado__factory"; +export { ETHTornado__factory } from "./factories/ETHTornado__factory"; +export { Multicall3Contract__factory } from "./factories/Multicall3Contract__factory"; +export { MulticallContract__factory } from "./factories/MulticallContract__factory"; +export { RelayerRegistry__factory } from "./factories/RelayerRegistry__factory"; +export { TornadoInstance__factory } from "./factories/TornadoInstance__factory"; +export { TornadoProxy__factory } from "./factories/TornadoProxy__factory"; diff --git a/@tornado/sdk-registry/src/index.ts b/@tornado/sdk-registry/src/index.ts new file mode 100644 index 0000000..dddc6d3 --- /dev/null +++ b/@tornado/sdk-registry/src/index.ts @@ -0,0 +1,178 @@ +// ts-essentials +import { DeepRequired, Merge } from 'ts-essentials' + +// Contract types +import { RelayerRegistry } from './deth/RelayerRegistry.js' + +// Local imports +import { AsyncUtils, ErrorUtils } from '@tornado/sdk-utils' +import { Docs, Cache, Onchain, Options as DataOptions } from '@tornado/sdk-data' +import { Chain, Synchronizer, Options as ChainOptions, syncErrorHandler } from '@tornado/sdk-chain' + +// @ts-ignore +import { toIndexableString } from 'pouchdb-collate' +import { match } from 'assert' + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECLARATIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export namespace Options { + export type Cache = DataOptions.Cache + export type Sync = ChainOptions.Sync +} + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPLEMENTATIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export class Registrations extends Docs.Base {} + +export class Stakes extends Docs.Base {} + +export class Burns extends Docs.Base {} + +export class RegistrationsCache extends Cache.Syncable { + // TODO: IMPLEMENT + buildDoc(response: any): Docs.Withdrawal { + return new Docs.Withdrawal(response) + } + getErrorHandlers(): Array { + return [syncErrorHandler] + } + getCallbacks(registry: RelayerRegistry): Array { + return [ + (fromBlock: number, toBlock: number) => { + return registry.queryFilter( + registry.filters['RelayerRegistered(bytes32,string,address,uint256)'](null, null, null, null), + fromBlock, + toBlock + ) + } + ] + } +} + +export class StakesCache extends Cache.Syncable { + // TODO: IMPLEMENT + buildDoc(response: any): Docs.Withdrawal { + return new Docs.Withdrawal(response) + } + getErrorHandlers(): Array { + return [syncErrorHandler] + } + getCallbacks(registry: RelayerRegistry): Array { + return [ + (fromBlock: number, toBlock: number) => { + return registry.queryFilter( + registry.filters['StakeAddedToRelayer(address,uint256)'](null, null), + fromBlock, + toBlock + ) + } + ] + } +} + +export class BurnsCache extends Cache.Syncable { + // TODO: IMPLEMENT + buildDoc(response: any): Docs.Withdrawal { + return new Docs.Withdrawal(response) + } + getErrorHandlers(): Array { + return [syncErrorHandler] + } + getCallbacks(registry: RelayerRegistry): Array { + return [ + (fromBlock: number, toBlock: number) => { + return registry.queryFilter( + registry.filters['StakeBurned(address,uint256)'](null, null), + fromBlock, + toBlock + ) + } + ] + } +} + +export class Registry extends Synchronizer { + private _chain?: Chain + + get chain(): Chain { + this._checkProvider('chain') + return this._chain! + } + + constructor() { + super() + this.caches = new Map>() + } + + loadRegistrations(name: string, options?: Options.Cache): RegistrationsCache { + return this.loadCache(name, options) + } + + loadStakes(name: string, options?: Options.Cache): StakesCache { + return this.loadCache(name, options) + } + + loadBurns(name: string, options?: Options.Cache): BurnsCache { + return this.loadCache(name, options) + } + + loadCache = Cache.Syncable>( + name: string, + options?: Options.Cache + ): C { + let constructor, + cache = super.loadCache(name) + + if (!cache) { + const regexp = /([A-Za-z]+)([0-9]+)/ + const matches = name.match(regexp) + + if (!matches) + throw ErrorUtils.getError(`Registry.loadCache: name ${name} has wrong format for cache`) + + // ETH net id + if (matches.length === 2) + name += "1" + + if (matches[1] === 'Registrations') { + constructor = (name: string, options?: Options.Cache) => new RegistrationsCache(name, options) + } else if (matches[1] === 'Burns') { + constructor = (name: string, options?: Options.Cache) => new BurnsCache(name, options) + } else if (matches[1] === 'Stakes') { + constructor = (name: string, options?: Options.Cache) => new StakesCache(name, options) + } else throw ErrorUtils.getError(`Registry.loadCache: there exists no such event ${matches[1]}`) + + cache = constructor(name, options) + this.caches.set(name, cache) + } + return cache as C + } + + // TODO: FINISH + async _sync( + event: string, + networkId?: string, + options?: Merge + ): Promise { + networkId = networkId ?? '1' + + if (this.chain.id !== +networkId) + throw ErrorUtils.getError('Registry.syncRegistrations: provider bound to wrong chain!') + + const registryAddress = await Onchain.getRegistryAddress(networkId) + + options = options ?? {} + + options.startBlock = options.startBlock ?? (await Onchain.getRegistryDeployBlockNum(networkId)) + } + + private _checkProvider(parentCallName: string): void { + if (!this._chain) + throw ErrorUtils.getError('Core.' + parentCallName + ': you must first connect a provider!') + } + + protected async _populateSyncOptions(options: Options.Sync): Promise> { + options.targetBlock = options.targetBlock ?? (await this.chain.latestBlockNum()) + return super._populateSyncOptions(options) + } +} diff --git a/@tornado/sdk-registry/tsconfig.json b/@tornado/sdk-registry/tsconfig.json new file mode 100644 index 0000000..60dc13b --- /dev/null +++ b/@tornado/sdk-registry/tsconfig.json @@ -0,0 +1,32 @@ +{ + "include": ["./src"], + "exclude": ["node_modules"], + "ts-node": { + // Do not forget to `npm i -D tsconfig-paths` + "require": ["tsconfig-paths/register"] + }, + "compilerOptions": { + // ~~~~~~~~~~~~~~~~~~~~~~~~~NODE 18 STANDARD~~~~~~~~~~~~~~~~~~~~~~~ + "target": "es2022", + "module": "CommonJS", + "lib": ["es2022"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "moduleResolution": "node", + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + "outDir": "./dist", + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "checkJs": true, + "allowJs": true, + "baseUrl": ".", + "paths": { + "test/*": ["test/*"], + "src/*": ["src/*"] + } + } +} diff --git a/@tornado/sdk-utils/LICENSE.md b/@tornado/sdk-utils/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-utils/LICENSE.md +++ b/@tornado/sdk-utils/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-utils/package.json b/@tornado/sdk-utils/package.json index a2dc358..c674a6a 100644 --- a/@tornado/sdk-utils/package.json +++ b/@tornado/sdk-utils/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-utils", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK general utilities.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk-web/LICENSE.md b/@tornado/sdk-web/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk-web/LICENSE.md +++ b/@tornado/sdk-web/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk-web/package.json b/@tornado/sdk-web/package.json index 7c70984..3f1b3eb 100644 --- a/@tornado/sdk-web/package.json +++ b/@tornado/sdk-web/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk-web", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK web utilities.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-utils" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-utils" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/@tornado/sdk/LICENSE.md b/@tornado/sdk/LICENSE.md index db0f137..3b58ce4 100644 --- a/@tornado/sdk/LICENSE.md +++ b/@tornado/sdk/LICENSE.md @@ -1,6 +1,6 @@ ISC License -Copyright 2023 T-Hax +Copyright 2023 AlienTornadosaurusHex Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/@tornado/sdk/package.json b/@tornado/sdk/package.json index 6161790..e0c6f5a 100644 --- a/@tornado/sdk/package.json +++ b/@tornado/sdk/package.json @@ -1,11 +1,11 @@ { "name": "@tornado/sdk", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "The Tornado SDK.", "repository": { "type": "git", - "url": "https://development.tornadocash.community/T-Hax/sdk-monorepo" + "url": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk-monorepo" }, "homepage": "https://tornadocash.community", "keywords": [ diff --git a/abis/RelayerRegistry.json b/abis/RelayerRegistry.json new file mode 100644 index 0000000..44e871e --- /dev/null +++ b/abis/RelayerRegistry.json @@ -0,0 +1,679 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RelayerRegistry", + "sourceName": "contracts/v4-patch/RelayerRegistry.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_torn", + "type": "address" + }, + { + "internalType": "address", + "name": "_governance", + "type": "address" + }, + { + "internalType": "address", + "name": "_ens", + "type": "address" + }, + { + "internalType": "address", + "name": "_staking", + "type": "address" + }, + { + "internalType": "address", + "name": "_feeManager", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "minStakeAmount", + "type": "uint256" + } + ], + "name": "MinimumStakeAmount", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "RelayerBalanceNullified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "relayer", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "ensName", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "relayerAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + } + ], + "name": "RelayerRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tornadoRouter", + "type": "address" + } + ], + "name": "RouterRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountStakeAdded", + "type": "uint256" + } + ], + "name": "StakeAddedToRelayer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountBurned", + "type": "uint256" + } + ], + "name": "StakeBurned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "worker", + "type": "address" + } + ], + "name": "WorkerRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "worker", + "type": "address" + } + ], + "name": "WorkerUnregistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "domains", + "type": "bytes32[]" + } + ], + "name": "bulkResolve", + "outputs": [ + { + "internalType": "address[]", + "name": "result", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "contract ITornadoInstance", + "name": "pool", + "type": "address" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ens", + "outputs": [ + { + "internalType": "contract IENS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeManager", + "outputs": [ + { + "internalType": "contract IFeeManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "getRelayerBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "getRelayerEnsHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_tornadoRouter", + "type": "bytes32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toResolve", + "type": "address" + } + ], + "name": "isRelayer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "address", + "name": "toResolve", + "type": "address" + } + ], + "name": "isRelayerRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minStakeAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "nullifyBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "ensName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "stake", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "workersToRegister", + "type": "address[]" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "ensName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "stake", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "workersToRegister", + "type": "address[]" + }, + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "registerPermit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "address", + "name": "worker", + "type": "address" + } + ], + "name": "registerWorker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "relayers", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "ensHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minAmount", + "type": "uint256" + } + ], + "name": "setMinStakeAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tornadoRouterAddress", + "type": "address" + } + ], + "name": "setTornadoRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stake", + "type": "uint256" + } + ], + "name": "stakeToRelayer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stake", + "type": "uint256" + }, + { + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "stakeToRelayerPermit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "staking", + "outputs": [ + { + "internalType": "contract TornadoStakingRewards", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "torn", + "outputs": [ + { + "internalType": "contract TORN", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tornadoRouter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "worker", + "type": "address" + } + ], + "name": "unregisterWorker", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "workers", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101206040523480156200001257600080fd5b50604051620029be380380620029be83398101604081905262000035916200006d565b6001600160601b0319606095861b811660805293851b841660a05291841b831660c052831b821660e05290911b166101005262000105565b600080600080600060a0868803121562000085578081fd5b85516200009281620000ec565b6020870151909550620000a581620000ec565b6040870151909450620000b881620000ec565b6060870151909350620000cb81620000ec565b6080870151909250620000de81620000ec565b809150509295509295909350565b6001600160a01b03811681146200010257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61282e620001906000398061078452806110535250806108935280610a50528061148052806117e75250806105ac52806115c55250806109555280610a8a5280610bf05280611177525080610dc05280610f8852806110bd528061145d52806117c4525061282e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/package.json b/package.json index c041c1c..7e9808d 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "@tornado/sdk-monorepo", - "author": "T-Hax", + "author": "AlienTornadosaurusHex", "license": "ISC", "description": "Tornado SDK monorepo.", - "repository": "https://development.tornadocash.community/T-Hax/sdk", - "homepage": "https://tornadocash.community", + "repository": "https://development.tornadocash.community/AlienTornadosaurusHex/sdk", + "homepage": "https://tornado.ws", "keywords": [ "ethereum", "crypto", @@ -70,6 +70,7 @@ "format:crypto": "yarn workspace @tornado/sdk-crypto run format", "format:chain": "yarn workspace @tornado/sdk-chain run format", "format:utils": "yarn workspace @tornado/sdk-utils run format", + "format:registry": "yarn workspace @tornado/sdk-registry run format", "docs": "yarn workspace @tornado/sdk run typedoc --out ../../docs/api src/index.ts", "compile": "yarn workspaces foreach run build", "compile:sdk": "yarn workspace @tornado/sdk build", @@ -79,6 +80,7 @@ "compile:crypto": "yarn workspace @tornado/sdk-crypto build", "compile:chain": "yarn workspace @tornado/sdk-chain build", "compile:utils": "yarn workspace @tornado/sdk-utils build", + "compile:registry": "yarn workspace @tornado/sdk-registry build", "prepare": "yarn workspaces foreach run format && yarn workspaces foreach run build", "prepare:sdk": "yarn format:sdk && yarn compile:sdk", "prepare:core": "yarn format:core && yarn compile:core", @@ -87,10 +89,12 @@ "prepare:crypto": "yarn format:crypto && yarn compile:crypto", "prepare:chain": "yarn format:chain && yarn compile:chain", "prepare:utils": "yarn format:utils && yarn compile:utils", - "typechain": "yarn typechain:test && yarn typechain:core && yarn typechain:chain", + "prepare:registry": "yarn format:registry && yarn compile:registry", + "typechain": "yarn typechain:test && yarn typechain:core && yarn typechain:chain && yarn typechain:registry", "typechain:test": "typechain --target \"ethers-v5\" --discriminate-types --glob \"./abis/*.json\" --out-dir=\"./test/deth\"", "typechain:core": "typechain --target \"ethers-v5\" --discriminate-types --glob \"./abis/*.json\" --out-dir=\"./@tornado/sdk-core/src/deth\"", "typechain:chain": "typechain --target \"ethers-v5\" --discriminate-types --glob \"./abis/*.json\" --out-dir=\"./@tornado/sdk-chain/src/deth\"", + "typechain:registry": "typechain --target \"ethers-v5\" --discriminate-types --glob \"./abis/*.json\" --out-dir=\"./@tornado/sdk-registry/src/deth\"", "packall": "mkdir -p packages && yarn workspaces foreach --no-private pack --out \"../../packages/%s-@%v.zip\" && rename -a '@' '' packages/*" }, "publishConfig": { diff --git a/test/deth/RelayerRegistry.ts b/test/deth/RelayerRegistry.ts new file mode 100644 index 0000000..4e291e6 --- /dev/null +++ b/test/deth/RelayerRegistry.ts @@ -0,0 +1,1138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface RelayerRegistryInterface extends utils.Interface { + functions: { + "bulkResolve(bytes32[])": FunctionFragment; + "burn(address,address,address)": FunctionFragment; + "ens()": FunctionFragment; + "feeManager()": FunctionFragment; + "getRelayerBalance(address)": FunctionFragment; + "getRelayerEnsHash(address)": FunctionFragment; + "governance()": FunctionFragment; + "initialize(bytes32)": FunctionFragment; + "isRelayer(address)": FunctionFragment; + "isRelayerRegistered(address,address)": FunctionFragment; + "minStakeAmount()": FunctionFragment; + "nullifyBalance(address)": FunctionFragment; + "register(string,uint256,address[])": FunctionFragment; + "registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "registerWorker(address,address)": FunctionFragment; + "relayers(address)": FunctionFragment; + "resolve(bytes32)": FunctionFragment; + "setMinStakeAmount(uint256)": FunctionFragment; + "setTornadoRouter(address)": FunctionFragment; + "stakeToRelayer(address,uint256)": FunctionFragment; + "stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "staking()": FunctionFragment; + "torn()": FunctionFragment; + "tornadoRouter()": FunctionFragment; + "unregisterWorker(address)": FunctionFragment; + "workers(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "bulkResolve" + | "burn" + | "ens" + | "feeManager" + | "getRelayerBalance" + | "getRelayerEnsHash" + | "governance" + | "initialize" + | "isRelayer" + | "isRelayerRegistered" + | "minStakeAmount" + | "nullifyBalance" + | "register" + | "registerPermit" + | "registerWorker" + | "relayers" + | "resolve" + | "setMinStakeAmount" + | "setTornadoRouter" + | "stakeToRelayer" + | "stakeToRelayerPermit" + | "staking" + | "torn" + | "tornadoRouter" + | "unregisterWorker" + | "workers" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "bulkResolve", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "ens", values?: undefined): string; + encodeFunctionData( + functionFragment: "feeManager", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRelayerBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRelayerEnsHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "governance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayer", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayerRegistered", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minStakeAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nullifyBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "register", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "registerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "registerWorker", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "relayers", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinStakeAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTornadoRouter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "staking", values?: undefined): string; + encodeFunctionData(functionFragment: "torn", values?: undefined): string; + encodeFunctionData( + functionFragment: "tornadoRouter", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "unregisterWorker", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "workers", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "bulkResolve", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "feeManager", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRelayerBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRelayerEnsHash", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isRelayer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isRelayerRegistered", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nullifyBalance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerPermit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "relayers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayerPermit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "staking", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "torn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unregisterWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "workers", data: BytesLike): Result; + + events: { + "MinimumStakeAmount(uint256)": EventFragment; + "RelayerBalanceNullified(address)": EventFragment; + "RelayerRegistered(bytes32,string,address,uint256)": EventFragment; + "RouterRegistered(address)": EventFragment; + "StakeAddedToRelayer(address,uint256)": EventFragment; + "StakeBurned(address,uint256)": EventFragment; + "WorkerRegistered(address,address)": EventFragment; + "WorkerUnregistered(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "MinimumStakeAmount"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerBalanceNullified"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RouterRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeAddedToRelayer"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeBurned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerUnregistered"): EventFragment; +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber; +} +export type MinimumStakeAmountEvent = TypedEvent< + [BigNumber], + MinimumStakeAmountEventObject +>; + +export type MinimumStakeAmountEventFilter = + TypedEventFilter; + +export interface RelayerBalanceNullifiedEventObject { + relayer: string; +} +export type RelayerBalanceNullifiedEvent = TypedEvent< + [string], + RelayerBalanceNullifiedEventObject +>; + +export type RelayerBalanceNullifiedEventFilter = + TypedEventFilter; + +export interface RelayerRegisteredEventObject { + relayer: string; + ensName: string; + relayerAddress: string; + stakedAmount: BigNumber; +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +>; + +export type RelayerRegisteredEventFilter = + TypedEventFilter; + +export interface RouterRegisteredEventObject { + tornadoRouter: string; +} +export type RouterRegisteredEvent = TypedEvent< + [string], + RouterRegisteredEventObject +>; + +export type RouterRegisteredEventFilter = + TypedEventFilter; + +export interface StakeAddedToRelayerEventObject { + relayer: string; + amountStakeAdded: BigNumber; +} +export type StakeAddedToRelayerEvent = TypedEvent< + [string, BigNumber], + StakeAddedToRelayerEventObject +>; + +export type StakeAddedToRelayerEventFilter = + TypedEventFilter; + +export interface StakeBurnedEventObject { + relayer: string; + amountBurned: BigNumber; +} +export type StakeBurnedEvent = TypedEvent< + [string, BigNumber], + StakeBurnedEventObject +>; + +export type StakeBurnedEventFilter = TypedEventFilter; + +export interface WorkerRegisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerRegisteredEvent = TypedEvent< + [string, string], + WorkerRegisteredEventObject +>; + +export type WorkerRegisteredEventFilter = + TypedEventFilter; + +export interface WorkerUnregisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerUnregisteredEvent = TypedEvent< + [string, string], + WorkerUnregisteredEventObject +>; + +export type WorkerUnregisteredEventFilter = + TypedEventFilter; + +export interface RelayerRegistry extends BaseContract { + contractName: "RelayerRegistry"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RelayerRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }>; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise<[string]>; + + feeManager(overrides?: CallOverrides): Promise<[string]>; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise<[string]>; + + torn(overrides?: CallOverrides): Promise<[string]>; + + tornadoRouter(overrides?: CallOverrides): Promise<[string]>; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "MinimumStakeAmount(uint256)"( + minStakeAmount?: null + ): MinimumStakeAmountEventFilter; + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter; + + "RelayerBalanceNullified(address)"( + relayer?: null + ): RelayerBalanceNullifiedEventFilter; + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter; + + "RelayerRegistered(bytes32,string,address,uint256)"( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + + "RouterRegistered(address)"( + tornadoRouter?: null + ): RouterRegisteredEventFilter; + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter; + + "StakeAddedToRelayer(address,uint256)"( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + StakeAddedToRelayer( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + + "StakeBurned(address,uint256)"( + relayer?: null, + amountBurned?: null + ): StakeBurnedEventFilter; + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter; + + "WorkerRegistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + WorkerRegistered( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + + "WorkerUnregistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + WorkerUnregistered( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + }; + + estimateGas: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/test/deth/RelayerRegistryAbi.ts b/test/deth/RelayerRegistryAbi.ts new file mode 100644 index 0000000..eb238e8 --- /dev/null +++ b/test/deth/RelayerRegistryAbi.ts @@ -0,0 +1,1138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface RelayerRegistryAbiInterface extends utils.Interface { + functions: { + "bulkResolve(bytes32[])": FunctionFragment; + "burn(address,address,address)": FunctionFragment; + "ens()": FunctionFragment; + "feeManager()": FunctionFragment; + "getRelayerBalance(address)": FunctionFragment; + "getRelayerEnsHash(address)": FunctionFragment; + "governance()": FunctionFragment; + "initialize(bytes32)": FunctionFragment; + "isRelayer(address)": FunctionFragment; + "isRelayerRegistered(address,address)": FunctionFragment; + "minStakeAmount()": FunctionFragment; + "nullifyBalance(address)": FunctionFragment; + "register(string,uint256,address[])": FunctionFragment; + "registerPermit(string,uint256,address[],address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "registerWorker(address,address)": FunctionFragment; + "relayers(address)": FunctionFragment; + "resolve(bytes32)": FunctionFragment; + "setMinStakeAmount(uint256)": FunctionFragment; + "setTornadoRouter(address)": FunctionFragment; + "stakeToRelayer(address,uint256)": FunctionFragment; + "stakeToRelayerPermit(address,uint256,address,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "staking()": FunctionFragment; + "torn()": FunctionFragment; + "tornadoRouter()": FunctionFragment; + "unregisterWorker(address)": FunctionFragment; + "workers(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "bulkResolve" + | "burn" + | "ens" + | "feeManager" + | "getRelayerBalance" + | "getRelayerEnsHash" + | "governance" + | "initialize" + | "isRelayer" + | "isRelayerRegistered" + | "minStakeAmount" + | "nullifyBalance" + | "register" + | "registerPermit" + | "registerWorker" + | "relayers" + | "resolve" + | "setMinStakeAmount" + | "setTornadoRouter" + | "stakeToRelayer" + | "stakeToRelayerPermit" + | "staking" + | "torn" + | "tornadoRouter" + | "unregisterWorker" + | "workers" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "bulkResolve", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "ens", values?: undefined): string; + encodeFunctionData( + functionFragment: "feeManager", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRelayerBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRelayerEnsHash", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "governance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayer", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isRelayerRegistered", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "minStakeAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nullifyBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "register", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "registerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "registerWorker", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "relayers", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinStakeAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setTornadoRouter", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stakeToRelayerPermit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "staking", values?: undefined): string; + encodeFunctionData(functionFragment: "torn", values?: undefined): string; + encodeFunctionData( + functionFragment: "tornadoRouter", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "unregisterWorker", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "workers", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "bulkResolve", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "feeManager", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRelayerBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRelayerEnsHash", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isRelayer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isRelayerRegistered", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "nullifyBalance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "registerPermit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "relayers", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinStakeAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setTornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayer", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stakeToRelayerPermit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "staking", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "torn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "tornadoRouter", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "unregisterWorker", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "workers", data: BytesLike): Result; + + events: { + "MinimumStakeAmount(uint256)": EventFragment; + "RelayerBalanceNullified(address)": EventFragment; + "RelayerRegistered(bytes32,string,address,uint256)": EventFragment; + "RouterRegistered(address)": EventFragment; + "StakeAddedToRelayer(address,uint256)": EventFragment; + "StakeBurned(address,uint256)": EventFragment; + "WorkerRegistered(address,address)": EventFragment; + "WorkerUnregistered(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "MinimumStakeAmount"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerBalanceNullified"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RelayerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RouterRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeAddedToRelayer"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StakeBurned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "WorkerUnregistered"): EventFragment; +} + +export interface MinimumStakeAmountEventObject { + minStakeAmount: BigNumber; +} +export type MinimumStakeAmountEvent = TypedEvent< + [BigNumber], + MinimumStakeAmountEventObject +>; + +export type MinimumStakeAmountEventFilter = + TypedEventFilter; + +export interface RelayerBalanceNullifiedEventObject { + relayer: string; +} +export type RelayerBalanceNullifiedEvent = TypedEvent< + [string], + RelayerBalanceNullifiedEventObject +>; + +export type RelayerBalanceNullifiedEventFilter = + TypedEventFilter; + +export interface RelayerRegisteredEventObject { + relayer: string; + ensName: string; + relayerAddress: string; + stakedAmount: BigNumber; +} +export type RelayerRegisteredEvent = TypedEvent< + [string, string, string, BigNumber], + RelayerRegisteredEventObject +>; + +export type RelayerRegisteredEventFilter = + TypedEventFilter; + +export interface RouterRegisteredEventObject { + tornadoRouter: string; +} +export type RouterRegisteredEvent = TypedEvent< + [string], + RouterRegisteredEventObject +>; + +export type RouterRegisteredEventFilter = + TypedEventFilter; + +export interface StakeAddedToRelayerEventObject { + relayer: string; + amountStakeAdded: BigNumber; +} +export type StakeAddedToRelayerEvent = TypedEvent< + [string, BigNumber], + StakeAddedToRelayerEventObject +>; + +export type StakeAddedToRelayerEventFilter = + TypedEventFilter; + +export interface StakeBurnedEventObject { + relayer: string; + amountBurned: BigNumber; +} +export type StakeBurnedEvent = TypedEvent< + [string, BigNumber], + StakeBurnedEventObject +>; + +export type StakeBurnedEventFilter = TypedEventFilter; + +export interface WorkerRegisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerRegisteredEvent = TypedEvent< + [string, string], + WorkerRegisteredEventObject +>; + +export type WorkerRegisteredEventFilter = + TypedEventFilter; + +export interface WorkerUnregisteredEventObject { + relayer: string; + worker: string; +} +export type WorkerUnregisteredEvent = TypedEvent< + [string, string], + WorkerUnregisteredEventObject +>; + +export type WorkerUnregisteredEventFilter = + TypedEventFilter; + +export interface RelayerRegistryAbi extends BaseContract { + contractName: "RelayerRegistryAbi"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RelayerRegistryAbiInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise<[string[]] & { result: string[] }>; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise<[string]>; + + feeManager(overrides?: CallOverrides): Promise<[string]>; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + minStakeAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise<[string]>; + + torn(overrides?: CallOverrides): Promise<[string]>; + + tornadoRouter(overrides?: CallOverrides): Promise<[string]>; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + }; + + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string] & { balance: BigNumber; ensHash: string }>; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "MinimumStakeAmount(uint256)"( + minStakeAmount?: null + ): MinimumStakeAmountEventFilter; + MinimumStakeAmount(minStakeAmount?: null): MinimumStakeAmountEventFilter; + + "RelayerBalanceNullified(address)"( + relayer?: null + ): RelayerBalanceNullifiedEventFilter; + RelayerBalanceNullified(relayer?: null): RelayerBalanceNullifiedEventFilter; + + "RelayerRegistered(bytes32,string,address,uint256)"( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + RelayerRegistered( + relayer?: null, + ensName?: null, + relayerAddress?: null, + stakedAmount?: null + ): RelayerRegisteredEventFilter; + + "RouterRegistered(address)"( + tornadoRouter?: null + ): RouterRegisteredEventFilter; + RouterRegistered(tornadoRouter?: null): RouterRegisteredEventFilter; + + "StakeAddedToRelayer(address,uint256)"( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + StakeAddedToRelayer( + relayer?: null, + amountStakeAdded?: null + ): StakeAddedToRelayerEventFilter; + + "StakeBurned(address,uint256)"( + relayer?: null, + amountBurned?: null + ): StakeBurnedEventFilter; + StakeBurned(relayer?: null, amountBurned?: null): StakeBurnedEventFilter; + + "WorkerRegistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + WorkerRegistered( + relayer?: null, + worker?: null + ): WorkerRegisteredEventFilter; + + "WorkerUnregistered(address,address)"( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + WorkerUnregistered( + relayer?: null, + worker?: null + ): WorkerUnregisteredEventFilter; + }; + + estimateGas: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + bulkResolve( + domains: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + burn( + sender: PromiseOrValue, + relayer: PromiseOrValue, + pool: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ens(overrides?: CallOverrides): Promise; + + feeManager(overrides?: CallOverrides): Promise; + + getRelayerBalance( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRelayerEnsHash( + relayer: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + initialize( + _tornadoRouter: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isRelayer( + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isRelayerRegistered( + relayer: PromiseOrValue, + toResolve: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + minStakeAmount(overrides?: CallOverrides): Promise; + + nullifyBalance( + relayer: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + register( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerPermit( + ensName: PromiseOrValue, + stake: PromiseOrValue, + workersToRegister: PromiseOrValue[], + relayer: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerWorker( + relayer: PromiseOrValue, + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + relayers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + resolve( + node: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinStakeAmount( + minAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setTornadoRouter( + tornadoRouterAddress: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayer( + relayer: PromiseOrValue, + stake: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stakeToRelayerPermit( + relayer: PromiseOrValue, + stake: PromiseOrValue, + staker: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + staking(overrides?: CallOverrides): Promise; + + torn(overrides?: CallOverrides): Promise; + + tornadoRouter(overrides?: CallOverrides): Promise; + + unregisterWorker( + worker: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + workers( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/test/deth/factories/RelayerRegistryAbi__factory.ts b/test/deth/factories/RelayerRegistryAbi__factory.ts new file mode 100644 index 0000000..38645cb --- /dev/null +++ b/test/deth/factories/RelayerRegistryAbi__factory.ts @@ -0,0 +1,694 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + RelayerRegistryAbi, + RelayerRegistryAbiInterface, +} from "../RelayerRegistryAbi"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_torn", + type: "address", + }, + { + internalType: "address", + name: "_governance", + type: "address", + }, + { + internalType: "address", + name: "_ens", + type: "address", + }, + { + internalType: "bytes32", + name: "_staking", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_feeManager", + type: "bytes32", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "minStakeAmount", + type: "uint256", + }, + ], + name: "MinimumStakeAmount", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerBalanceNullified", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "relayer", + type: "bytes32", + }, + { + indexed: false, + internalType: "string", + name: "ensName", + type: "string", + }, + { + indexed: false, + internalType: "address", + name: "relayerAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "stakedAmount", + type: "uint256", + }, + ], + name: "RelayerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tornadoRouter", + type: "address", + }, + ], + name: "RouterRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountStakeAdded", + type: "uint256", + }, + ], + name: "StakeAddedToRelayer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountBurned", + type: "uint256", + }, + ], + name: "StakeBurned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerUnregistered", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32[]", + name: "domains", + type: "bytes32[]", + }, + ], + name: "bulkResolve", + outputs: [ + { + internalType: "address[]", + name: "result", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "contract ITornadoInstance", + name: "pool", + type: "address", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "ens", + outputs: [ + { + internalType: "contract IENS", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeManager", + outputs: [ + { + internalType: "contract FeeManager", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerEnsHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "governance", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_tornadoRouter", + type: "bytes32", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayerRegistered", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "minStakeAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "nullifyBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "registerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "registerWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "relayers", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "bytes32", + name: "ensHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "minAmount", + type: "uint256", + }, + ], + name: "setMinStakeAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tornadoRouterAddress", + type: "address", + }, + ], + name: "setTornadoRouter", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + ], + name: "stakeToRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address", + name: "staker", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "stakeToRelayerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "staking", + outputs: [ + { + internalType: "contract ITornadoStakingRewards", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "torn", + outputs: [ + { + internalType: "contract TORN", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tornadoRouter", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "unregisterWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "workers", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class RelayerRegistryAbi__factory { + static readonly abi = _abi; + static createInterface(): RelayerRegistryAbiInterface { + return new utils.Interface(_abi) as RelayerRegistryAbiInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): RelayerRegistryAbi { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistryAbi; + } +} diff --git a/test/deth/factories/RelayerRegistry__factory.ts b/test/deth/factories/RelayerRegistry__factory.ts new file mode 100644 index 0000000..cfbda61 --- /dev/null +++ b/test/deth/factories/RelayerRegistry__factory.ts @@ -0,0 +1,759 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { + RelayerRegistry, + RelayerRegistryInterface, +} from "../RelayerRegistry"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_torn", + type: "address", + }, + { + internalType: "address", + name: "_governance", + type: "address", + }, + { + internalType: "address", + name: "_ens", + type: "address", + }, + { + internalType: "address", + name: "_staking", + type: "address", + }, + { + internalType: "address", + name: "_feeManager", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "minStakeAmount", + type: "uint256", + }, + ], + name: "MinimumStakeAmount", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "RelayerBalanceNullified", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "relayer", + type: "bytes32", + }, + { + indexed: false, + internalType: "string", + name: "ensName", + type: "string", + }, + { + indexed: false, + internalType: "address", + name: "relayerAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "stakedAmount", + type: "uint256", + }, + ], + name: "RelayerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "tornadoRouter", + type: "address", + }, + ], + name: "RouterRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountStakeAdded", + type: "uint256", + }, + ], + name: "StakeAddedToRelayer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountBurned", + type: "uint256", + }, + ], + name: "StakeBurned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "relayer", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "WorkerUnregistered", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32[]", + name: "domains", + type: "bytes32[]", + }, + ], + name: "bulkResolve", + outputs: [ + { + internalType: "address[]", + name: "result", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "contract ITornadoInstance", + name: "pool", + type: "address", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "ens", + outputs: [ + { + internalType: "contract IENS", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "feeManager", + outputs: [ + { + internalType: "contract IFeeManager", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "getRelayerEnsHash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "governance", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_tornadoRouter", + type: "bytes32", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "toResolve", + type: "address", + }, + ], + name: "isRelayerRegistered", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "minStakeAmount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + ], + name: "nullifyBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "ensName", + type: "string", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address[]", + name: "workersToRegister", + type: "address[]", + }, + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "registerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "registerWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "relayers", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "bytes32", + name: "ensHash", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "node", + type: "bytes32", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "minAmount", + type: "uint256", + }, + ], + name: "setMinStakeAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tornadoRouterAddress", + type: "address", + }, + ], + name: "setTornadoRouter", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + ], + name: "stakeToRelayer", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "relayer", + type: "address", + }, + { + internalType: "uint256", + name: "stake", + type: "uint256", + }, + { + internalType: "address", + name: "staker", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "stakeToRelayerPermit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "staking", + outputs: [ + { + internalType: "contract TornadoStakingRewards", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "torn", + outputs: [ + { + internalType: "contract TORN", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tornadoRouter", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "worker", + type: "address", + }, + ], + name: "unregisterWorker", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "workers", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x6101206040523480156200001257600080fd5b50604051620029be380380620029be83398101604081905262000035916200006d565b6001600160601b0319606095861b811660805293851b841660a05291841b831660c052831b821660e05290911b166101005262000105565b600080600080600060a0868803121562000085578081fd5b85516200009281620000ec565b6020870151909550620000a581620000ec565b6040870151909450620000b881620000ec565b6060870151909350620000cb81620000ec565b6080870151909250620000de81620000ec565b809150509295509295909350565b6001600160a01b03811681146200010257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c61282e620001906000398061078452806110535250806108935280610a50528061148052806117e75250806105ac52806115c55250806109555280610a8a5280610bf05280611177525080610dc05280610f8852806110bd528061145d52806117c4525061282e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806385a29683116100ee578063d0fb020311610097578063e43fdb3c11610071578063e43fdb3c14610353578063eb4af04514610366578063f188768414610379578063f9e5423414610381576101ae565b8063d0fb020314610325578063d990231d1461032d578063e37e8bcc14610340576101ae565b8063ae53941c116100c8578063ae53941c146102df578063b69fd4ab146102ff578063b971a6bf14610312576101ae565b806385a29683146102b15780639498bd71146102c4578063adf898a4146102d7576101ae565b80634cb16c2e1161015b5780635300f841116101355780635300f84114610255578063541d5548146102765780635aa6e675146102965780635c23bdf51461029e576101ae565b80634cb16c2e146102325780634cf088d91461023a5780634d4efd0414610242576101ae565b80634048a2571161018c5780634048a257146101f957806345a11cec1461020c5780634ba16d9d1461021f576101ae565b80632e650649146101b35780633523dc85146101c85780633f15457f146101db575b600080fd5b6101c66101c1366004611e07565b6103a1565b005b6101c66101d6366004611dcf565b61041d565b6101e36105aa565b6040516101f09190612147565b60405180910390f35b6101e3610207366004611dcf565b6105ce565b6101c661021a366004611e3f565b6105f6565b6101c661022d366004611dcf565b61093d565b6101e3610a2c565b6101e3610a4e565b6101c6610250366004611dcf565b610a72565b610268610263366004611dcf565b610ba8565b6040516101f092919061211d565b610289610284366004611dcf565b610bc1565b6040516101f0919061228e565b6101e3610bee565b6101e36102ac366004611fd7565b610c12565b6101c66102bf366004611eb4565b610d83565b6101c66102d2366004611fd7565b610e47565b6101e3610f86565b6102f26102ed366004611dcf565b610faa565b6040516101f09190612299565b61028961030d366004611e07565b610fe5565b6102f2610320366004611dcf565b611019565b6101e3611051565b6101c661033b366004611e89565b611075565b6101c661034e366004612066565b611080565b6101c6610361366004611fef565b61114a565b6101c6610374366004611fd7565b61115f565b6102f2611203565b61039461038f366004611f22565b611209565b6040516101f09190612234565b33600081815260036020526040902054839073ffffffffffffffffffffffffffffffffffffffff80831691161461040d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b60405180910390fd5b61041784846112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461049a5773ffffffffffffffffffffffffffffffffffffffff81811660009081526003602052604090205416331461049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612627565b73ffffffffffffffffffffffffffffffffffffffff80821660008181526003602052604090205490911614156104fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612514565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040908190205490517fb2a8e18b9e887f502d65c1683e60b723fa582a6903ea4e8eb23907a19c1ce8a0926105569216908490612168565b60405180910390a173ffffffffffffffffffffffffffffffffffffffff16600090815260036020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123a4565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604090205416806106df5773ffffffffffffffffffffffffffffffffffffffff83811660009081526003602052604090205416156106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612582565b50610938565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610744576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125f0565b6040517f2efbf38400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632efbf384906107b9908690600401612147565b602060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190611deb565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526002602052604090205491169150610840908261139c565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020526040908190209290925590517f338610af0000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009091169063338610af906108ca908490600401612299565b600060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050507f659f33fc6677bebf3a9bf3101092792e31f35766d0358e54577bdd91a655f6a0848260405161092d92919061220e565b60405180910390a150505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416021790556040517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a890610a21908390612147565b60405180910390a150565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b73ffffffffffffffffffffffffffffffffffffffff808216600081815260036020526040902054909116908114610b44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612729565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604080822091909155517fafa759fb3c68e89eaaba359f0930ab40c24875b73cc9e2f6a38b0180019eb8f390610b9c908490612147565b60405180910390a15050565b6002602052600090815260409020805460019091015482565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526003602052604090205416151590565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610c1d6113de565b600114610c3e57738595bfb0d940dfedc98943fa8a907091203f25ee610c4f565b6e0c2e074ec69a0dfb2997ba6c7d2e1e5b6040517f0178b8bf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690630178b8bf90610ca4908690600401612299565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190611deb565b73ffffffffffffffffffffffffffffffffffffffff16633b3b57de846040518263ffffffff1660e01b8152600401610d2c9190612299565b60206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7c9190611deb565b9392505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610e0190889030908b908a908a908a908a906004016121c0565b600060405180830381600087803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b50505050610e3e8588886113e2565b50505050505050565b600054610100900460ff1680610e605750610e6061153e565b80610e6e575060005460ff16155b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906124b7565b600054610100900460ff16158015610f0a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f1382610c12565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f8257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052206001015490565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020548116908316145b92915050565b73ffffffffffffffffffffffffffffffffffffffff908116600090815260036020908152604080832054909316825260029052205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f823383836113e2565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf906110fe90889030908d908a908a908a908a906004016121c0565b600060405180830381600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b5050505061113e858b8b8b8b8b611544565b50505050505050505050565b611158338686868686611544565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612449565b60018190556040517f404663163d528ec45288abc4389b81bd96fabf858ff57577ebd4ee7f15d7b0a690610a21908390612299565b60015481565b6060815167ffffffffffffffff8111801561122357600080fd5b5060405190808252806020026020018201604052801561124d578160200160208202803683370190505b50905060005b82518110156112b15761127883828151811061126b57fe5b6020026020010151610c12565b82828151811061128457fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611253565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409020541615611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612480565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600360205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692851692909217909155517fcde75bd02c5f739608c891bcd9aa6809e6c4a7035ac7b9f3fd5fea756db7472490610b9c9084908490612168565b6000610d7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611929565b4690565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526003602052604090205490911614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040490612412565b6114a573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016847f00000000000000000000000000000000000000000000000000000000000000008461196f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020546114d6908290611a12565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409081902091909155517f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d6490611531908490849061220e565b60405180910390a1505050565b303b1590565b600061158586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a5192505050565b6040517f02571be300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906302571be3906115fa908490600401612299565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190611deb565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126f2565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040902054161561170d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061254b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040902060018101541561176e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061236d565b6001548510156117aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906126bb565b61180c73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016897f00000000000000000000000000000000000000000000000000000000000000008861196f565b7f1275dbe2a271b2b822e60f1d44894fa5fb337e7e2dc6a200205b1a5b17c07d64888660405161183d92919061220e565b60405180910390a18481556001810182905573ffffffffffffffffffffffffffffffffffffffff8816600081815260036020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092179091555b838110156118df5760008585838181106118b557fe5b90506020020160208101906118ca9190611dcf565b90506118d68a826112b7565b5060010161189f565b507f9ca7c9c762eff27b021608f232b4c4b8f9b8bf9a3d322297e47cc4209a67d5e28288888b896040516119179594939291906122a2565b60405180910390a15050505050505050565b60008184841115611967576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b505050900390565b610417846323b872dd60e01b8585856040516024016119909392919061218f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a5e565b600082820183811015610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906123db565b6000611013826000611b14565b6060611ac0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b8051909150156109385780806020019051810190611ade9190611fb7565b610938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104049061265e565b600081835111611b2657506000611013565b6000611b328484611b95565b9050611b4384828501600101611b14565b611b4e858584611c0e565b604051602001611b5f92919061211d565b6040516020818303038152906040528051906020012091505092915050565b6060611b8d8484600085611c2a565b949350505050565b6000805b835181840114158015611c0157508381840181518110611bb557fe5b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f2e0000000000000000000000000000000000000000000000000000000000000014155b15610d7c57600101611b99565b600083518284011115611c2057600080fd5b5091016020012090565b6060611c3585611d2f565b611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404906125b9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611c95919061212b565b60006040518083038185875af1925050503d8060008114611cd2576040519150601f19603f3d011682016040523d82523d6000602084013e611cd7565b606091505b50915091508115611ceb579150611b8d9050565b805115611cfb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610404919061231c565b3b151590565b60008083601f840112611d46578182fd5b50813567ffffffffffffffff811115611d5d578182fd5b6020830191508360208083028501011115611d7757600080fd5b9250929050565b60008083601f840112611d8f578182fd5b50813567ffffffffffffffff811115611da6578182fd5b602083019150836020828501011115611d7757600080fd5b803560ff8116811461101357600080fd5b600060208284031215611de0578081fd5b8135610d7c816127d3565b600060208284031215611dfc578081fd5b8151610d7c816127d3565b60008060408385031215611e19578081fd5b8235611e24816127d3565b91506020830135611e34816127d3565b809150509250929050565b600080600060608486031215611e53578081fd5b8335611e5e816127d3565b92506020840135611e6e816127d3565b91506040840135611e7e816127d3565b809150509250925092565b60008060408385031215611e9b578182fd5b8235611ea6816127d3565b946020939093013593505050565b600080600080600080600060e0888a031215611ece578283fd5b8735611ed9816127d3565b9650602088013595506040880135611ef0816127d3565b945060608801359350611f068960808a01611dbe565b925060a0880135915060c0880135905092959891949750929550565b60006020808385031215611f34578182fd5b823567ffffffffffffffff811115611f4a578283fd5b8301601f81018513611f5a578283fd5b8035611f6d611f6882612787565b612760565b8181528381019083850185840285018601891015611f89578687fd5b8694505b83851015611fab578035835260019490940193918501918501611f8d565b50979650505050505050565b600060208284031215611fc8578081fd5b81518015158114610d7c578182fd5b600060208284031215611fe8578081fd5b5035919050565b600080600080600060608688031215612006578081fd5b853567ffffffffffffffff8082111561201d578283fd5b61202989838a01611d7e565b9097509550602088013594506040880135915080821115612048578283fd5b5061205588828901611d35565b969995985093965092949392505050565b6000806000806000806000806000806101008b8d031215612085578384fd5b8a3567ffffffffffffffff8082111561209c578586fd5b6120a88e838f01611d7e565b909c509a5060208d0135995060408d01359150808211156120c7578586fd5b506120d48d828e01611d35565b90985096505060608b01356120e8816127d3565b945060808b013593506120fe8c60a08d01611dbe565b925060c08b0135915060e08b013590509295989b9194979a5092959850565b918252602082015260400190565b6000825161213d8184602087016127a7565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561228257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612250565b50909695505050505050565b901515815260200190565b90815260200190565b600086825260806020830152846080830152848660a08401378060a0868401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905073ffffffffffffffffffffffffffffffffffffffff841660408301528260608301529695505050505050565b600060208252825180602084015261233b8160408501602087016127a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526012908201527f7265676973746572656420616c72656164790000000000000000000000000000604082015260600190565b6020808252600a908201527f6f6e6c792070726f787900000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201527f2172656769737465726564000000000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f6f6e6c7920676f7665726e616e63650000000000000000000000000000000000604082015260600190565b60208082526016908201527f63616e277420737465616c20616e206164647265737300000000000000000000604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b60208082526016908201527f63616e7420756e7265676973746572206d617374657200000000000000000000604082015260600190565b60208082526013908201527f63616e7420726567697374657220616761696e00000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920637573746f6d2072656c6179657200000000000000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600c908201527f6f6e6c792072656c617965720000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f6f6e6c79206f776e6572206f6620776f726b6572000000000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f216d696e5f7374616b6500000000000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6f6e6c7920656e73206f776e6572000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f6d757374206265206d6173746572000000000000000000000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561277f57600080fd5b604052919050565b600067ffffffffffffffff82111561279d578081fd5b5060209081020190565b60005b838110156127c25781810151838201526020016127aa565b838111156104175750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146127f557600080fd5b5056fea26469706673582212201ef11c99f45340bb22b7f2a5932d53d12ff829e053293e34e5d0e0392f7a995f64736f6c634300060c0033"; + +type RelayerRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: RelayerRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class RelayerRegistry__factory extends ContractFactory { + constructor(...args: RelayerRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "RelayerRegistry"; + } + + override deploy( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _torn: PromiseOrValue, + _governance: PromiseOrValue, + _ens: PromiseOrValue, + _staking: PromiseOrValue, + _feeManager: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _torn, + _governance, + _ens, + _staking, + _feeManager, + overrides || {} + ); + } + override attach(address: string): RelayerRegistry { + return super.attach(address) as RelayerRegistry; + } + override connect(signer: Signer): RelayerRegistry__factory { + return super.connect(signer) as RelayerRegistry__factory; + } + static readonly contractName: "RelayerRegistry"; + + public readonly contractName: "RelayerRegistry"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): RelayerRegistryInterface { + return new utils.Interface(_abi) as RelayerRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): RelayerRegistry { + return new Contract(address, _abi, signerOrProvider) as RelayerRegistry; + } +} diff --git a/test/deth/factories/index.ts b/test/deth/factories/index.ts index 5a1adc7..8ec95cd 100644 --- a/test/deth/factories/index.ts +++ b/test/deth/factories/index.ts @@ -7,5 +7,6 @@ export { ERC20Tornado__factory } from "./ERC20Tornado__factory"; export { ETHTornado__factory } from "./ETHTornado__factory"; export { Multicall3Contract__factory } from "./Multicall3Contract__factory"; export { MulticallContract__factory } from "./MulticallContract__factory"; +export { RelayerRegistry__factory } from "./RelayerRegistry__factory"; export { TornadoInstance__factory } from "./TornadoInstance__factory"; export { TornadoProxy__factory } from "./TornadoProxy__factory"; diff --git a/test/deth/index.ts b/test/deth/index.ts index 76d3469..7adbade 100644 --- a/test/deth/index.ts +++ b/test/deth/index.ts @@ -7,6 +7,7 @@ export type { ERC20Tornado } from "./ERC20Tornado"; export type { ETHTornado } from "./ETHTornado"; export type { Multicall3Contract } from "./Multicall3Contract"; export type { MulticallContract } from "./MulticallContract"; +export type { RelayerRegistry } from "./RelayerRegistry"; export type { TornadoInstance } from "./TornadoInstance"; export type { TornadoProxy } from "./TornadoProxy"; export * as factories from "./factories"; @@ -16,5 +17,6 @@ export { ERC20Tornado__factory } from "./factories/ERC20Tornado__factory"; export { ETHTornado__factory } from "./factories/ETHTornado__factory"; export { Multicall3Contract__factory } from "./factories/Multicall3Contract__factory"; export { MulticallContract__factory } from "./factories/MulticallContract__factory"; +export { RelayerRegistry__factory } from "./factories/RelayerRegistry__factory"; export { TornadoInstance__factory } from "./factories/TornadoInstance__factory"; export { TornadoProxy__factory } from "./factories/TornadoProxy__factory"; diff --git a/tsconfig.json b/tsconfig.json index 388ac80..d7f4309 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,6 +26,7 @@ "baseUrl": ".", "paths": { "test/*": ["test/*"], + "@tornado/sdk-registry": ["@tornado/sdk-registry/src/index.ts"], "@tornado/sdk-chain": ["@tornado/sdk-chain/src/index.ts"], "@tornado/sdk-core": ["@tornado/sdk-core/src/index.ts"], "@tornado/sdk-crypto": ["@tornado/sdk-crypto/src/index.ts"], diff --git a/yarn.lock b/yarn.lock index 4986113..aee49b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1196,6 +1196,47 @@ __metadata: languageName: unknown linkType: soft +"@tornado/sdk-registry@workspace:@tornado/sdk-registry": + version: 0.0.0-use.local + resolution: "@tornado/sdk-registry@workspace:@tornado/sdk-registry" + dependencies: + "@ethersproject/abi": ^5.7.0 + "@ethersproject/providers": ^5.7.2 + "@tornado/sdk-chain": "workspace:*" + "@tornado/sdk-data": "workspace:*" + "@tornado/sdk-utils": "workspace:*" + "@tornado/sdk-web": "workspace:*" + "@types/big-integer": ^0.0.31 + "@types/chai": ^4.2.18 + "@types/fs-extra": ^11.0.1 + "@types/mocha": ^10.0.1 + "@types/node": ^18.15.0 + "@typescript-eslint/eslint-plugin": ^5.54.1 + "@typescript-eslint/parser": ^5.54.1 + chai: ^4.3.4 + conventional-changelog-cli: ^2.1.1 + dotenv: ^16.0.3 + eslint: ^8.35.0 + eslint-plugin-prettier: ^4.2.1 + ethereum-waffle: ^4.0.10 + ethers: ^5 + fs-extra: ^11.1.0 + mocha: ^10.2.0 + pouchdb-collate: ^8.0.1 + prettier: ^2.3.0 + rimraf: ^5.0.0 + source-map-support: ^0.5.19 + ts-essentials: ^9.3.1 + ts-node: ^10.9.1 + tsc-alias: ^1.2.11 + tsconfig-paths: ^4.1.2 + typescript: ^5.0.4 + dependenciesMeta: + tsconfig-paths@4.2.0: + unplugged: true + languageName: unknown + linkType: soft + "@tornado/sdk-utils@workspace:*, @tornado/sdk-utils@workspace:@tornado/sdk-utils": version: 0.0.0-use.local resolution: "@tornado/sdk-utils@workspace:@tornado/sdk-utils"