import type { Logger } from 'winston'; import { Provider } from 'ethers'; import { TornadoRouter } from '@tornado/contracts'; import { NetIdType, TornadoWithdrawParams, RelayerTornadoJobs, RelayerTornadoWithdraw, TornadoFeeOracle, snarkArgs, Config, TornadoWallet } from '@tornado/core'; import { RelayerConfig } from '../config'; import { SyncManager } from './sync'; import { ErrorMessages } from './error'; export declare enum RelayerStatus { QUEUED = "QUEUED", ACCEPTED = "ACCEPTED", SENT = "SENT", MINED = "MINED", RESUBMITTED = "RESUBMITTED", CONFIRMED = "CONFIRMED", FAILED = "FAILED" } export declare const DEFAULT_GAS_LIMIT = 600000; export interface RelayerServices { provider: Provider; signer: TornadoWallet; tornadoFeeOracle: TornadoFeeOracle; Router: TornadoRouter; } export interface CachedRelayerServices { [key: NetIdType]: RelayerServices; } export declare function getFeeParams(config: Config, serviceFee: number, syncManager: SyncManager, { netId, contract, args }: RelayerTornadoQueue): { amount: string; symbol: string; gasPrice: bigint; gasLimit: bigint; l1Fee: string | undefined; denomination: bigint; ethRefund: bigint; tokenPriceInWei: bigint; tokenDecimals: number; relayerFeePercent: number; isEth: boolean; premiumPercent: number; }; export declare function checkWithdrawalFees(relayerWorker: RelayerWorker, work: RelayerTornadoQueue): Promise<{ gasPrice: bigint; gasLimit: bigint; status: boolean; error?: string; }>; export declare function processWithdrawals(relayerWorker: RelayerWorker): Promise; export interface CreateWorkParams extends TornadoWithdrawParams { netId: NetIdType; } export interface RelayerTornadoQueue extends Omit { netId: NetIdType; contract: string; proof: string; args: snarkArgs; timestamp: number; } export interface RelayerQueueGas { id: string; gasPrice: bigint; gasLimit: bigint; timestamp: number; } export declare class RelayerWorker { relayerConfig: RelayerConfig; logger: Logger; syncManager: SyncManager; cachedRelayerServices: CachedRelayerServices; queue: RelayerTornadoQueue[]; queueGas: RelayerQueueGas[]; queueTimer: null | NodeJS.Timeout; errors: ErrorMessages[]; constructor(relayerConfig: RelayerConfig, syncManager: SyncManager); doWork(): Promise; createWork({ netId, contract, proof, args, }: CreateWorkParams): Promise; getWork({ id }: { id: string; }): RelayerTornadoWithdraw | RelayerTornadoQueue; pendingWorks(): number; }