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 DepositStruct = { pool: AddressLike; token: AddressLike; amount: BigNumberish; nonce: BigNumberish; signature: BytesLike; }; type DepositStructOutput = [ pool: string, token: string, amount: bigint, nonce: bigint, signature: string ] & { pool: string; token: string; amount: bigint; nonce: bigint; signature: string; }; type RFQTQuoteStruct = { pool: AddressLike; externalAccount: AddressLike; trader: AddressLike; effectiveTrader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; effectiveBaseTokenAmount: BigNumberish; maxBaseTokenAmount: BigNumberish; maxQuoteTokenAmount: 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, maxBaseTokenAmount: bigint, maxQuoteTokenAmount: bigint, quoteExpiry: bigint, nonce: bigint, txid: string, signature: string ] & { pool: string; externalAccount: string; trader: string; effectiveTrader: string; baseToken: string; quoteToken: string; effectiveBaseTokenAmount: bigint; maxBaseTokenAmount: bigint; maxQuoteTokenAmount: bigint; quoteExpiry: bigint; nonce: bigint; txid: string; signature: string; }; 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 XChainRFQTQuoteStruct = { srcChainId: BigNumberish; dstChainId: BigNumberish; srcPool: AddressLike; dstPool: BytesLike; srcExternalAccount: AddressLike; dstExternalAccount: BytesLike; trader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; nonce: BigNumberish; txid: BytesLike; signature: BytesLike; }; type XChainRFQTQuoteStructOutput = [ srcChainId: bigint, dstChainId: bigint, srcPool: string, dstPool: string, srcExternalAccount: string, dstExternalAccount: string, trader: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, nonce: bigint, txid: string, signature: string ] & { srcChainId: bigint; dstChainId: bigint; srcPool: string; dstPool: string; srcExternalAccount: string; dstExternalAccount: string; trader: string; baseToken: string; quoteToken: string; 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; baseToken: AddressLike; quoteToken: AddressLike; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; quoteExpiry: BigNumberish; txid: BytesLike; takerSignature: BytesLike; makerSignature: BytesLike; }; type XChainRFQMQuoteStructOutput = [ srcChainId: bigint, dstChainId: bigint, srcPool: string, dstPool: string, srcExternalAccount: string, dstExternalAccount: string, trader: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint, quoteExpiry: bigint, txid: string, takerSignature: string, makerSignature: string ] & { srcChainId: bigint; dstChainId: bigint; srcPool: string; dstPool: string; srcExternalAccount: string; dstExternalAccount: string; trader: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; quoteExpiry: bigint; txid: string; takerSignature: string; makerSignature: string; }; } export interface IHashflowRouterInterface extends Interface { getFunction(nameOrSignature: "addLiquidityPrivatePool" | "addLiquidityPublicPool" | "isPoolAuthorized" | "killswitchPool" | "migratePoolAuthorization" | "removeLiquidityPublicPool" | "removeLiquidityPublicPoolWithPermit" | "tradeMultiHop" | "tradeRFQm" | "tradeRFQmWithPermit" | "tradeSingleHop" | "tradeXChain" | "tradeXChainRFQm" | "tradeXChainRFQmWithPermit" | "updateGovernance" | "updateMigrationRouterStatus" | "updatePoolAuthorization" | "updateXChainUa"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "UpdateGovernance" | "UpdateMigrationRouterStatus" | "UpdatePoolAuthorizaton" | "UpdateXChainUA"): EventFragment; encodeFunctionData(functionFragment: "addLiquidityPrivatePool", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "addLiquidityPublicPool", values: [IQuote.DepositStruct]): string; encodeFunctionData(functionFragment: "isPoolAuthorized", values: [AddressLike]): string; encodeFunctionData(functionFragment: "killswitchPool", values: [AddressLike, boolean]): string; encodeFunctionData(functionFragment: "migratePoolAuthorization", values: [AddressLike]): string; encodeFunctionData(functionFragment: "removeLiquidityPublicPool", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "removeLiquidityPublicPoolWithPermit", values: [ AddressLike, AddressLike, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike, boolean ]): string; encodeFunctionData(functionFragment: "tradeMultiHop", values: [IQuote.RFQTQuoteStruct[], AddressLike, AddressLike]): string; encodeFunctionData(functionFragment: "tradeRFQm", values: [IQuote.RFQMQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeRFQmWithPermit", values: [ IQuote.RFQMQuoteStruct, BigNumberish, BigNumberish, BytesLike, BytesLike, boolean ]): string; encodeFunctionData(functionFragment: "tradeSingleHop", values: [IQuote.RFQTQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeXChain", values: [IQuote.XChainRFQTQuoteStruct, BigNumberish]): string; encodeFunctionData(functionFragment: "tradeXChainRFQm", values: [IQuote.XChainRFQMQuoteStruct, BigNumberish]): string; encodeFunctionData(functionFragment: "tradeXChainRFQmWithPermit", values: [ IQuote.XChainRFQMQuoteStruct, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike, boolean ]): string; encodeFunctionData(functionFragment: "updateGovernance", values: [AddressLike]): string; encodeFunctionData(functionFragment: "updateMigrationRouterStatus", values: [AddressLike, boolean]): string; encodeFunctionData(functionFragment: "updatePoolAuthorization", values: [AddressLike, boolean]): string; encodeFunctionData(functionFragment: "updateXChainUa", values: [AddressLike]): string; decodeFunctionResult(functionFragment: "addLiquidityPrivatePool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "addLiquidityPublicPool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "isPoolAuthorized", data: BytesLike): Result; decodeFunctionResult(functionFragment: "killswitchPool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "migratePoolAuthorization", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeLiquidityPublicPool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeLiquidityPublicPoolWithPermit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeMultiHop", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeRFQm", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeRFQmWithPermit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeSingleHop", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeXChain", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeXChainRFQm", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeXChainRFQmWithPermit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateGovernance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateMigrationRouterStatus", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updatePoolAuthorization", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateXChainUa", data: BytesLike): Result; } export declare namespace UpdateGovernanceEvent { type InputTuple = [ governance: AddressLike, prevGovernance: AddressLike ]; type OutputTuple = [governance: string, prevGovernance: string]; interface OutputObject { governance: string; prevGovernance: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace UpdateMigrationRouterStatusEvent { type InputTuple = [migrationRouter: AddressLike, authorized: boolean]; type OutputTuple = [migrationRouter: string, authorized: boolean]; interface OutputObject { migrationRouter: string; authorized: boolean; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace UpdatePoolAuthorizatonEvent { type InputTuple = [pool: AddressLike, authorized: boolean]; type OutputTuple = [pool: string, authorized: boolean]; interface OutputObject { pool: string; authorized: boolean; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace UpdateXChainUAEvent { type InputTuple = [xChainUa: AddressLike, prevXChainUa: AddressLike]; type OutputTuple = [xChainUa: string, prevXChainUa: string]; interface OutputObject { xChainUa: string; prevXChainUa: string; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface IHashflowRouter extends BaseContract { connect(runner?: ContractRunner | null): IHashflowRouter; waitForDeployment(): Promise; interface: IHashflowRouterInterface; 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; addLiquidityPrivatePool: TypedContractMethod<[ pool: AddressLike, token: AddressLike, amount: BigNumberish ], [ void ], "payable">; addLiquidityPublicPool: TypedContractMethod<[ deposit: IQuote.DepositStruct ], [ void ], "payable">; isPoolAuthorized: TypedContractMethod<[pool: AddressLike], [boolean], "view">; killswitchPool: TypedContractMethod<[ pool: AddressLike, enabled: boolean ], [ void ], "nonpayable">; migratePoolAuthorization: TypedContractMethod<[ migrationRouter: AddressLike ], [ void ], "nonpayable">; removeLiquidityPublicPool: TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish ], [ void ], "nonpayable">; removeLiquidityPublicPoolWithPermit: TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "nonpayable">; tradeMultiHop: TypedContractMethod<[ quotes: IQuote.RFQTQuoteStruct[], baseToken: AddressLike, quoteToken: AddressLike ], [ void ], "payable">; tradeRFQm: TypedContractMethod<[ quote: IQuote.RFQMQuoteStruct ], [ void ], "nonpayable">; tradeRFQmWithPermit: TypedContractMethod<[ quote: IQuote.RFQMQuoteStruct, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "nonpayable">; tradeSingleHop: TypedContractMethod<[ quote: IQuote.RFQTQuoteStruct ], [ void ], "payable">; tradeXChain: TypedContractMethod<[ quote: IQuote.XChainRFQTQuoteStruct, protocol: BigNumberish ], [ void ], "payable">; tradeXChainRFQm: TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct, protocol: BigNumberish ], [ void ], "payable">; tradeXChainRFQmWithPermit: TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct, protocol: BigNumberish, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "payable">; updateGovernance: TypedContractMethod<[ governance: AddressLike ], [ void ], "nonpayable">; updateMigrationRouterStatus: TypedContractMethod<[ router: AddressLike, status: boolean ], [ void ], "nonpayable">; updatePoolAuthorization: TypedContractMethod<[ pool: AddressLike, authorized: boolean ], [ void ], "nonpayable">; updateXChainUa: TypedContractMethod<[ xChainUa: AddressLike ], [ void ], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "addLiquidityPrivatePool"): TypedContractMethod<[ pool: AddressLike, token: AddressLike, amount: BigNumberish ], [ void ], "payable">; getFunction(nameOrSignature: "addLiquidityPublicPool"): TypedContractMethod<[deposit: IQuote.DepositStruct], [void], "payable">; getFunction(nameOrSignature: "isPoolAuthorized"): TypedContractMethod<[pool: AddressLike], [boolean], "view">; getFunction(nameOrSignature: "killswitchPool"): TypedContractMethod<[ pool: AddressLike, enabled: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "migratePoolAuthorization"): TypedContractMethod<[migrationRouter: AddressLike], [void], "nonpayable">; getFunction(nameOrSignature: "removeLiquidityPublicPool"): TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "removeLiquidityPublicPoolWithPermit"): TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "tradeMultiHop"): TypedContractMethod<[ quotes: IQuote.RFQTQuoteStruct[], baseToken: AddressLike, quoteToken: AddressLike ], [ void ], "payable">; getFunction(nameOrSignature: "tradeRFQm"): TypedContractMethod<[quote: IQuote.RFQMQuoteStruct], [void], "nonpayable">; getFunction(nameOrSignature: "tradeRFQmWithPermit"): TypedContractMethod<[ quote: IQuote.RFQMQuoteStruct, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "tradeSingleHop"): TypedContractMethod<[quote: IQuote.RFQTQuoteStruct], [void], "payable">; getFunction(nameOrSignature: "tradeXChain"): TypedContractMethod<[ quote: IQuote.XChainRFQTQuoteStruct, protocol: BigNumberish ], [ void ], "payable">; getFunction(nameOrSignature: "tradeXChainRFQm"): TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct, protocol: BigNumberish ], [ void ], "payable">; getFunction(nameOrSignature: "tradeXChainRFQmWithPermit"): TypedContractMethod<[ quote: IQuote.XChainRFQMQuoteStruct, protocol: BigNumberish, deadline: BigNumberish, v: BigNumberish, r: BytesLike, s: BytesLike, approveMax: boolean ], [ void ], "payable">; getFunction(nameOrSignature: "updateGovernance"): TypedContractMethod<[governance: AddressLike], [void], "nonpayable">; getFunction(nameOrSignature: "updateMigrationRouterStatus"): TypedContractMethod<[ router: AddressLike, status: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "updatePoolAuthorization"): TypedContractMethod<[ pool: AddressLike, authorized: boolean ], [ void ], "nonpayable">; getFunction(nameOrSignature: "updateXChainUa"): TypedContractMethod<[xChainUa: AddressLike], [void], "nonpayable">; getEvent(key: "UpdateGovernance"): TypedContractEvent; getEvent(key: "UpdateMigrationRouterStatus"): TypedContractEvent; getEvent(key: "UpdatePoolAuthorizaton"): TypedContractEvent; getEvent(key: "UpdateXChainUA"): TypedContractEvent; filters: { "UpdateGovernance(address,address)": TypedContractEvent; UpdateGovernance: TypedContractEvent; "UpdateMigrationRouterStatus(address,bool)": TypedContractEvent; UpdateMigrationRouterStatus: TypedContractEvent; "UpdatePoolAuthorizaton(address,bool)": TypedContractEvent; UpdatePoolAuthorizaton: TypedContractEvent; "UpdateXChainUA(address,address)": TypedContractEvent; UpdateXChainUA: TypedContractEvent; }; }