import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "./common"; export declare namespace IQuote { type RFQMQuoteStruct = { pool: AddressLike; externalAccount: AddressLike; trader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; txid: BytesLike; takerSignature: BytesLike; makerSignature: BytesLike; }; type RFQMQuoteStructOutput = [ pool: string, externalAccount: string, trader: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, txid: string, takerSignature: string, makerSignature: string ] & { pool: string; externalAccount: string; trader: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; quoteExpiry: bigint; txid: string; takerSignature: string; makerSignature: string; }; type RFQTQuoteStruct = { pool: AddressLike; externalAccount: AddressLike; trader: AddressLike; effectiveTrader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; effectiveBaseTokenAmount: BigNumberish; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; nonce: BigNumberish; txid: BytesLike; signature: BytesLike; }; type RFQTQuoteStructOutput = [ pool: string, externalAccount: string, trader: string, effectiveTrader: string, baseToken: string, quoteToken: string, effectiveBaseTokenAmount: bigint, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, nonce: bigint, txid: string, signature: string ] & { pool: string; externalAccount: string; trader: string; effectiveTrader: string; baseToken: string; quoteToken: string; effectiveBaseTokenAmount: bigint; baseTokenAmount: bigint; quoteTokenAmount: bigint; quoteExpiry: bigint; nonce: bigint; txid: string; signature: string; }; type XChainRFQMQuoteStruct = { srcChainId: BigNumberish; dstChainId: BigNumberish; srcPool: AddressLike; dstPool: BytesLike; srcExternalAccount: AddressLike; dstExternalAccount: BytesLike; trader: AddressLike; dstTrader: BytesLike; baseToken: AddressLike; quoteToken: BytesLike; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; txid: BytesLike; xChainMessenger: AddressLike; takerSignature: BytesLike; makerSignature: BytesLike; }; type XChainRFQMQuoteStructOutput = [ srcChainId: bigint, dstChainId: bigint, srcPool: string, dstPool: string, srcExternalAccount: string, dstExternalAccount: string, trader: string, dstTrader: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, txid: string, xChainMessenger: string, takerSignature: string, makerSignature: string ] & { srcChainId: bigint; dstChainId: bigint; srcPool: string; dstPool: string; srcExternalAccount: string; dstExternalAccount: string; trader: string; dstTrader: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; quoteExpiry: bigint; txid: string; xChainMessenger: string; takerSignature: string; makerSignature: string; }; type XChainRFQTQuoteStruct = { srcChainId: BigNumberish; dstChainId: BigNumberish; srcPool: AddressLike; dstPool: BytesLike; srcExternalAccount: AddressLike; dstExternalAccount: BytesLike; dstTrader: BytesLike; baseToken: AddressLike; quoteToken: BytesLike; effectiveBaseTokenAmount: BigNumberish; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; nonce: BigNumberish; txid: BytesLike; xChainMessenger: AddressLike; signature: BytesLike; }; type XChainRFQTQuoteStructOutput = [ srcChainId: bigint, dstChainId: bigint, srcPool: string, dstPool: string, srcExternalAccount: string, dstExternalAccount: string, dstTrader: string, baseToken: string, quoteToken: string, effectiveBaseTokenAmount: bigint, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, nonce: bigint, txid: string, xChainMessenger: string, signature: string ] & { srcChainId: bigint; dstChainId: bigint; srcPool: string; dstPool: string; srcExternalAccount: string; dstExternalAccount: string; dstTrader: string; baseToken: string; quoteToken: string; effectiveBaseTokenAmount: bigint; baseTokenAmount: bigint; quoteTokenAmount: bigint; quoteExpiry: bigint; nonce: bigint; txid: string; xChainMessenger: string; signature: string; }; } export declare namespace IHashflowPool { type AuthorizedXChainPoolStruct = { chainId: BigNumberish; pool: BytesLike; }; type AuthorizedXChainPoolStructOutput = [ chainId: bigint, pool: string ] & { chainId: bigint; pool: string; }; } export interface IHashflowPoolInterface extends Interface { getFunction(nameOrSignature: "approveToken" | "decreaseTokenAllowance" | "fillXChain" | "getReserves" | "increaseTokenAllowance" | "initialize" | "isValidSignature" | "killswitchOperations" | "name" | "nonces" | "operations" | "removeLiquidity" | "router" | "signerConfiguration" | "tradeRFQM" | "tradeRFQT" | "tradeXChainRFQM" | "tradeXChainRFQT" | "updateSigner" | "updateWithdrawalAccount" | "updateXChainMessengerAuthorization" | "updateXChainPoolAuthorization"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "RemoveLiquidity" | "Trade" | "UpdateSigner" | "UpdateWithdrawalAccount" | "XChainTrade" | "XChainTradeFill"): EventFragment; encodeFunctionData(functionFragment: "approveToken", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "decreaseTokenAllowance", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "fillXChain", values: [AddressLike, BytesLike, AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "getReserves", values: [AddressLike]): string; encodeFunctionData(functionFragment: "increaseTokenAllowance", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "initialize", values: [string, AddressLike, AddressLike, AddressLike]): string; encodeFunctionData(functionFragment: "isValidSignature", values: [BytesLike, BytesLike]): string; encodeFunctionData(functionFragment: "killswitchOperations", values: [boolean]): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData(functionFragment: "nonces", values: [AddressLike]): string; encodeFunctionData(functionFragment: "operations", values?: undefined): string; encodeFunctionData(functionFragment: "removeLiquidity", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "router", values?: undefined): string; encodeFunctionData(functionFragment: "signerConfiguration", values?: undefined): string; encodeFunctionData(functionFragment: "tradeRFQM", values: [IQuote.RFQMQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeRFQT", values: [IQuote.RFQTQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeXChainRFQM", values: [IQuote.XChainRFQMQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeXChainRFQT", values: [IQuote.XChainRFQTQuoteStruct, AddressLike]): string; encodeFunctionData(functionFragment: "updateSigner", values: [AddressLike]): string; encodeFunctionData(functionFragment: "updateWithdrawalAccount", values: [AddressLike[], boolean]): string; encodeFunctionData(functionFragment: "updateXChainMessengerAuthorization", values: [AddressLike, boolean]): string; encodeFunctionData(functionFragment: "updateXChainPoolAuthorization", values: [IHashflowPool.AuthorizedXChainPoolStruct[], boolean]): string; decodeFunctionResult(functionFragment: "approveToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decreaseTokenAllowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "fillXChain", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getReserves", data: BytesLike): Result; decodeFunctionResult(functionFragment: "increaseTokenAllowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "isValidSignature", data: BytesLike): Result; decodeFunctionResult(functionFragment: "killswitchOperations", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult(functionFragment: "operations", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeLiquidity", data: BytesLike): Result; decodeFunctionResult(functionFragment: "router", data: BytesLike): Result; decodeFunctionResult(functionFragment: "signerConfiguration", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeRFQM", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeRFQT", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeXChainRFQM", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeXChainRFQT", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateSigner", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateWithdrawalAccount", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateXChainMessengerAuthorization", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateXChainPoolAuthorization", data: BytesLike): Result; } export declare namespace RemoveLiquidityEvent { type InputTuple = [ token: AddressLike, recipient: AddressLike, withdrawAmount: BigNumberish ]; type OutputTuple = [ token: string, recipient: string, withdrawAmount: bigint ]; interface OutputObject { token: string; recipient: string; withdrawAmount: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace TradeEvent { type InputTuple = [ trader: AddressLike, effectiveTrader: AddressLike, txid: BytesLike, baseToken: AddressLike, quoteToken: AddressLike, baseTokenAmount: BigNumberish, quoteTokenAmount: BigNumberish ]; type OutputTuple = [ trader: string, effectiveTrader: string, txid: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint ]; interface OutputObject { trader: string; effectiveTrader: string; txid: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace UpdateSignerEvent { type InputTuple = [signer: AddressLike, prevSigner: AddressLike]; type OutputTuple = [signer: string, prevSigner: string]; interface OutputObject { signer: string; prevSigner: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace UpdateWithdrawalAccountEvent { type InputTuple = [account: AddressLike, authorized: boolean]; type OutputTuple = [account: string, authorized: boolean]; interface OutputObject { account: string; authorized: boolean; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace XChainTradeEvent { type InputTuple = [ dstChainId: BigNumberish, dstPool: BytesLike, trader: AddressLike, dstTrader: BytesLike, txid: BytesLike, baseToken: AddressLike, quoteToken: BytesLike, baseTokenAmount: BigNumberish, quoteTokenAmount: BigNumberish ]; type OutputTuple = [ dstChainId: bigint, dstPool: string, trader: string, dstTrader: string, txid: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint ]; interface OutputObject { dstChainId: bigint; dstPool: string; trader: string; dstTrader: string; txid: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace XChainTradeFillEvent { type InputTuple = [txid: BytesLike]; type OutputTuple = [txid: string]; interface OutputObject { txid: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface IHashflowPool extends BaseContract { connect(runner?: ContractRunner | null): IHashflowPool; waitForDeployment(): Promise; interface: IHashflowPoolInterface; queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; on(event: TCEvent, listener: TypedListener): Promise; on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; once(event: TCEvent, listener: TypedListener): Promise; once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; listeners(event: TCEvent): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners(event?: TCEvent): Promise; approveToken: TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; decreaseTokenAllowance: TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; fillXChain: TypedContractMethod<[ externalAccount: AddressLike, txid: BytesLike, trader: AddressLike, quoteToken: AddressLike, quoteTokenAmount: BigNumberish ], [ void ], "nonpayable">; getReserves: TypedContractMethod<[token: AddressLike], [bigint], "view">; increaseTokenAllowance: TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; initialize: TypedContractMethod<[ name: string, signer: AddressLike, operations: AddressLike, router: AddressLike ], [ void ], "nonpayable">; isValidSignature: TypedContractMethod<[ hash: BytesLike, signature: BytesLike ], [ string ], "view">; killswitchOperations: TypedContractMethod<[ enabled: boolean ], [ void ], "nonpayable">; name: TypedContractMethod<[], [string], "view">; nonces: TypedContractMethod<[trader: AddressLike], [bigint], "view">; operations: TypedContractMethod<[], [string], "view">; removeLiquidity: TypedContractMethod<[ token: AddressLike, recipient: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; router: TypedContractMethod<[], [string], "view">; signerConfiguration: TypedContractMethod<[], [[string, boolean]], "view">; tradeRFQM: TypedContractMethod<[ quote: IQuote.RFQMQuoteStruct ], [ void ], "nonpayable">; tradeRFQT: TypedContractMethod<[ quote: IQuote.RFQTQuoteStruct ], [ void ], "payable">; tradeXChainRFQM: TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct ], [ void ], "nonpayable">; tradeXChainRFQT: TypedContractMethod<[ quote: IQuote.XChainRFQTQuoteStruct, trader: AddressLike ], [ void ], "payable">; updateSigner: TypedContractMethod<[ signer: AddressLike ], [ void ], "nonpayable">; updateWithdrawalAccount: TypedContractMethod<[ withdrawalAccounts: AddressLike[], authorized: boolean ], [ void ], "nonpayable">; updateXChainMessengerAuthorization: TypedContractMethod<[ xChainMessenger: AddressLike, authorized: boolean ], [ void ], "nonpayable">; updateXChainPoolAuthorization: TypedContractMethod<[ pools: IHashflowPool.AuthorizedXChainPoolStruct[], authorized: boolean ], [ void ], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "approveToken"): TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "decreaseTokenAllowance"): TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "fillXChain"): TypedContractMethod<[ externalAccount: AddressLike, txid: BytesLike, trader: AddressLike, quoteToken: AddressLike, quoteTokenAmount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "getReserves"): TypedContractMethod<[token: AddressLike], [bigint], "view">; getFunction(nameOrSignature: "increaseTokenAllowance"): TypedContractMethod<[ token: AddressLike, spender: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "initialize"): TypedContractMethod<[ name: string, signer: AddressLike, operations: AddressLike, router: AddressLike ], [ void ], "nonpayable">; getFunction(nameOrSignature: "isValidSignature"): TypedContractMethod<[ hash: BytesLike, signature: BytesLike ], [ string ], "view">; getFunction(nameOrSignature: "killswitchOperations"): TypedContractMethod<[enabled: boolean], [void], "nonpayable">; getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "nonces"): TypedContractMethod<[trader: AddressLike], [bigint], "view">; getFunction(nameOrSignature: "operations"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "removeLiquidity"): TypedContractMethod<[ token: AddressLike, recipient: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "router"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "signerConfiguration"): TypedContractMethod<[], [[string, boolean]], "view">; getFunction(nameOrSignature: "tradeRFQM"): TypedContractMethod<[quote: IQuote.RFQMQuoteStruct], [void], "nonpayable">; getFunction(nameOrSignature: "tradeRFQT"): TypedContractMethod<[quote: IQuote.RFQTQuoteStruct], [void], "payable">; getFunction(nameOrSignature: "tradeXChainRFQM"): TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct ], [ void ], "nonpayable">; getFunction(nameOrSignature: "tradeXChainRFQT"): TypedContractMethod<[ quote: IQuote.XChainRFQTQuoteStruct, trader: AddressLike ], [ void ], "payable">; getFunction(nameOrSignature: "updateSigner"): TypedContractMethod<[signer: AddressLike], [void], "nonpayable">; getFunction(nameOrSignature: "updateWithdrawalAccount"): TypedContractMethod<[ withdrawalAccounts: AddressLike[], authorized: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "updateXChainMessengerAuthorization"): TypedContractMethod<[ xChainMessenger: AddressLike, authorized: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "updateXChainPoolAuthorization"): TypedContractMethod<[ pools: IHashflowPool.AuthorizedXChainPoolStruct[], authorized: boolean ], [ void ], "nonpayable">; getEvent(key: "RemoveLiquidity"): TypedContractEvent; getEvent(key: "Trade"): TypedContractEvent; getEvent(key: "UpdateSigner"): TypedContractEvent; getEvent(key: "UpdateWithdrawalAccount"): TypedContractEvent; getEvent(key: "XChainTrade"): TypedContractEvent; getEvent(key: "XChainTradeFill"): TypedContractEvent; filters: { "RemoveLiquidity(address,address,uint256)": TypedContractEvent; RemoveLiquidity: TypedContractEvent; "Trade(address,address,bytes32,address,address,uint256,uint256)": TypedContractEvent; Trade: TypedContractEvent; "UpdateSigner(address,address)": TypedContractEvent; UpdateSigner: TypedContractEvent; "UpdateWithdrawalAccount(address,bool)": TypedContractEvent; UpdateWithdrawalAccount: TypedContractEvent; "XChainTrade(uint16,bytes32,address,bytes32,bytes32,address,bytes32,uint256,uint256)": TypedContractEvent; XChainTrade: TypedContractEvent; "XChainTradeFill(bytes32)": TypedContractEvent; XChainTradeFill: TypedContractEvent; }; }