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; signedDeposit: BytesLike; }; type DepositStructOutput = [ pool: string, token: string, amount: bigint, nonce: bigint, signedDeposit: string ] & { pool: string; token: string; amount: bigint; nonce: bigint; signedDeposit: string; }; type LzQuoteStruct = { rfqType: BigNumberish; srcChainId: BigNumberish; dstChainId: BigNumberish; srcPool: AddressLike; dstPool: AddressLike; trader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; baseTokenAmount: BigNumberish; quoteTokenAmount: BigNumberish; fees: BigNumberish; quoteExpiry: BigNumberish; txid: BytesLike; signedQuote: BytesLike; }; type LzQuoteStructOutput = [ rfqType: bigint, srcChainId: bigint, dstChainId: bigint, srcPool: string, dstPool: string, trader: string, baseToken: string, quoteToken: string, baseTokenAmount: bigint, quoteTokenAmount: bigint, fees: bigint, quoteExpiry: bigint, txid: string, signedQuote: string ] & { rfqType: bigint; srcChainId: bigint; dstChainId: bigint; srcPool: string; dstPool: string; trader: string; baseToken: string; quoteToken: string; baseTokenAmount: bigint; quoteTokenAmount: bigint; fees: bigint; quoteExpiry: bigint; txid: string; signedQuote: string; }; type QuoteStruct = { rfqType: BigNumberish; pool: AddressLike; eoa: AddressLike; trader: AddressLike; effectiveTrader: AddressLike; baseToken: AddressLike; quoteToken: AddressLike; effectiveBaseTokenAmount: BigNumberish; maxBaseTokenAmount: BigNumberish; maxQuoteTokenAmount: BigNumberish; fees: BigNumberish; quoteExpiry: BigNumberish; nonce: BigNumberish; txid: BytesLike; signedQuote: BytesLike; }; type QuoteStructOutput = [ rfqType: bigint, pool: string, eoa: string, trader: string, effectiveTrader: string, baseToken: string, quoteToken: string, effectiveBaseTokenAmount: bigint, maxBaseTokenAmount: bigint, maxQuoteTokenAmount: bigint, fees: bigint, quoteExpiry: bigint, nonce: bigint, txid: string, signedQuote: string ] & { rfqType: bigint; pool: string; eoa: string; trader: string; effectiveTrader: string; baseToken: string; quoteToken: string; effectiveBaseTokenAmount: bigint; maxBaseTokenAmount: bigint; maxQuoteTokenAmount: bigint; fees: bigint; quoteExpiry: bigint; nonce: bigint; txid: string; signedQuote: string; }; } export interface IHashflowRouterInterface extends Interface { getFunction(nameOrSignature: "addLiquidityPrivatePool" | "addLiquidityPublicPool" | "getGovernance" | "redeemXChainTokens" | "removeLiquidityPublicPool" | "removeLiquidityPublicPoolWithPermit" | "setWeth" | "tradeLz" | "tradeMultiHop" | "tradeSingleHop" | "updateGovernance"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "UpdateGovernance"): EventFragment; encodeFunctionData(functionFragment: "addLiquidityPrivatePool", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "addLiquidityPublicPool", values: [IQuote.DepositStruct]): string; encodeFunctionData(functionFragment: "getGovernance", values?: undefined): string; encodeFunctionData(functionFragment: "redeemXChainTokens", values: [AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "removeLiquidityPublicPool", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "removeLiquidityPublicPoolWithPermit", values: [ AddressLike, AddressLike, BigNumberish, BigNumberish, boolean, BigNumberish, BytesLike, BytesLike ]): string; encodeFunctionData(functionFragment: "setWeth", values: [AddressLike]): string; encodeFunctionData(functionFragment: "tradeLz", values: [IQuote.LzQuoteStruct]): string; encodeFunctionData(functionFragment: "tradeMultiHop", values: [IQuote.QuoteStruct[], AddressLike, AddressLike]): string; encodeFunctionData(functionFragment: "tradeSingleHop", values: [IQuote.QuoteStruct]): string; encodeFunctionData(functionFragment: "updateGovernance", values: [AddressLike]): string; decodeFunctionResult(functionFragment: "addLiquidityPrivatePool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "addLiquidityPublicPool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getGovernance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeemXChainTokens", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeLiquidityPublicPool", data: BytesLike): Result; decodeFunctionResult(functionFragment: "removeLiquidityPublicPoolWithPermit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setWeth", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeLz", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeMultiHop", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tradeSingleHop", data: BytesLike): Result; decodeFunctionResult(functionFragment: "updateGovernance", data: BytesLike): Result; } export declare namespace UpdateGovernanceEvent { type InputTuple = [governance: AddressLike]; type OutputTuple = [governance: string]; interface OutputObject { governance: 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">; getGovernance: TypedContractMethod<[], [string], "view">; redeemXChainTokens: TypedContractMethod<[ hToken: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; removeLiquidityPublicPool: TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish ], [ void ], "nonpayable">; removeLiquidityPublicPoolWithPermit: TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish, expiry: BigNumberish, approveMax: boolean, v: BigNumberish, r: BytesLike, s: BytesLike ], [ void ], "nonpayable">; setWeth: TypedContractMethod<[weth: AddressLike], [void], "nonpayable">; tradeLz: TypedContractMethod<[ quote: IQuote.LzQuoteStruct ], [ void ], "payable">; tradeMultiHop: TypedContractMethod<[ quotes: IQuote.QuoteStruct[], baseToken: AddressLike, quoteToken: AddressLike ], [ void ], "payable">; tradeSingleHop: TypedContractMethod<[ quote: IQuote.QuoteStruct ], [ void ], "payable">; updateGovernance: TypedContractMethod<[ governance: 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: "getGovernance"): TypedContractMethod<[], [string], "view">; getFunction(nameOrSignature: "redeemXChainTokens"): TypedContractMethod<[ hToken: AddressLike, amount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "removeLiquidityPublicPool"): TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "removeLiquidityPublicPoolWithPermit"): TypedContractMethod<[ pool: AddressLike, token: AddressLike, burnAmount: BigNumberish, expiry: BigNumberish, approveMax: boolean, v: BigNumberish, r: BytesLike, s: BytesLike ], [ void ], "nonpayable">; getFunction(nameOrSignature: "setWeth"): TypedContractMethod<[weth: AddressLike], [void], "nonpayable">; getFunction(nameOrSignature: "tradeLz"): TypedContractMethod<[quote: IQuote.LzQuoteStruct], [void], "payable">; getFunction(nameOrSignature: "tradeMultiHop"): TypedContractMethod<[ quotes: IQuote.QuoteStruct[], baseToken: AddressLike, quoteToken: AddressLike ], [ void ], "payable">; getFunction(nameOrSignature: "tradeSingleHop"): TypedContractMethod<[quote: IQuote.QuoteStruct], [void], "payable">; getFunction(nameOrSignature: "updateGovernance"): TypedContractMethod<[governance: AddressLike], [void], "nonpayable">; getEvent(key: "UpdateGovernance"): TypedContractEvent; filters: { "UpdateGovernance(address)": TypedContractEvent; UpdateGovernance: TypedContractEvent; }; }