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 type SwapDataStruct = { swapType: BigNumberish; extRouter: AddressLike; extCalldata: BytesLike; needScale: boolean; }; export type SwapDataStructOutput = [ swapType: bigint, extRouter: string, extCalldata: string, needScale: boolean ] & { swapType: bigint; extRouter: string; extCalldata: string; needScale: boolean; }; export type TokenInputStruct = { tokenIn: AddressLike; netTokenIn: BigNumberish; tokenMintSy: AddressLike; pendleSwap: AddressLike; swapData: SwapDataStruct; }; export type TokenInputStructOutput = [ tokenIn: string, netTokenIn: bigint, tokenMintSy: string, pendleSwap: string, swapData: SwapDataStructOutput ] & { tokenIn: string; netTokenIn: bigint; tokenMintSy: string; pendleSwap: string; swapData: SwapDataStructOutput; }; export type TokenOutputStruct = { tokenOut: AddressLike; minTokenOut: BigNumberish; tokenRedeemSy: AddressLike; pendleSwap: AddressLike; swapData: SwapDataStruct; }; export type TokenOutputStructOutput = [ tokenOut: string, minTokenOut: bigint, tokenRedeemSy: string, pendleSwap: string, swapData: SwapDataStructOutput ] & { tokenOut: string; minTokenOut: bigint; tokenRedeemSy: string; pendleSwap: string; swapData: SwapDataStructOutput; }; export declare namespace IPActionMiscV3 { type Call3Struct = { allowFailure: boolean; callData: BytesLike; }; type Call3StructOutput = [allowFailure: boolean, callData: string] & { allowFailure: boolean; callData: string; }; type ResultStruct = { success: boolean; returnData: BytesLike; }; type ResultStructOutput = [success: boolean, returnData: string] & { success: boolean; returnData: string; }; } export interface ActionMiscV3Interface extends Interface { getFunction(nameOrSignature: "boostMarkets" | "mintPyFromSy" | "mintPyFromToken" | "mintSyFromToken" | "multicall" | "redeemDueInterestAndRewards" | "redeemPyToSy" | "redeemPyToToken" | "redeemSyToToken" | "simulate" | "swapTokenToToken" | "swapTokenToTokenViaSy"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "MintPyFromSy" | "MintPyFromToken" | "MintSyFromToken" | "RedeemPyToSy" | "RedeemPyToToken" | "RedeemSyToToken"): EventFragment; encodeFunctionData(functionFragment: "boostMarkets", values: [AddressLike[]]): string; encodeFunctionData(functionFragment: "mintPyFromSy", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string; encodeFunctionData(functionFragment: "mintPyFromToken", values: [AddressLike, AddressLike, BigNumberish, TokenInputStruct]): string; encodeFunctionData(functionFragment: "mintSyFromToken", values: [AddressLike, AddressLike, BigNumberish, TokenInputStruct]): string; encodeFunctionData(functionFragment: "multicall", values: [IPActionMiscV3.Call3Struct[]]): string; encodeFunctionData(functionFragment: "redeemDueInterestAndRewards", values: [AddressLike, AddressLike[], AddressLike[], AddressLike[]]): string; encodeFunctionData(functionFragment: "redeemPyToSy", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string; encodeFunctionData(functionFragment: "redeemPyToToken", values: [AddressLike, AddressLike, BigNumberish, TokenOutputStruct]): string; encodeFunctionData(functionFragment: "redeemSyToToken", values: [AddressLike, AddressLike, BigNumberish, TokenOutputStruct]): string; encodeFunctionData(functionFragment: "simulate", values: [AddressLike, BytesLike]): string; encodeFunctionData(functionFragment: "swapTokenToToken", values: [AddressLike, BigNumberish, TokenInputStruct]): string; encodeFunctionData(functionFragment: "swapTokenToTokenViaSy", values: [ AddressLike, AddressLike, TokenInputStruct, AddressLike, BigNumberish ]): string; decodeFunctionResult(functionFragment: "boostMarkets", data: BytesLike): Result; decodeFunctionResult(functionFragment: "mintPyFromSy", data: BytesLike): Result; decodeFunctionResult(functionFragment: "mintPyFromToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "mintSyFromToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeemDueInterestAndRewards", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeemPyToSy", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeemPyToToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeemSyToToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "simulate", data: BytesLike): Result; decodeFunctionResult(functionFragment: "swapTokenToToken", data: BytesLike): Result; decodeFunctionResult(functionFragment: "swapTokenToTokenViaSy", data: BytesLike): Result; } export declare namespace MintPyFromSyEvent { type InputTuple = [ caller: AddressLike, receiver: AddressLike, YT: AddressLike, netSyIn: BigNumberish, netPyOut: BigNumberish ]; type OutputTuple = [ caller: string, receiver: string, YT: string, netSyIn: bigint, netPyOut: bigint ]; interface OutputObject { caller: string; receiver: string; YT: string; netSyIn: bigint; netPyOut: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace MintPyFromTokenEvent { type InputTuple = [ caller: AddressLike, tokenIn: AddressLike, YT: AddressLike, receiver: AddressLike, netTokenIn: BigNumberish, netPyOut: BigNumberish, netSyInterm: BigNumberish ]; type OutputTuple = [ caller: string, tokenIn: string, YT: string, receiver: string, netTokenIn: bigint, netPyOut: bigint, netSyInterm: bigint ]; interface OutputObject { caller: string; tokenIn: string; YT: string; receiver: string; netTokenIn: bigint; netPyOut: bigint; netSyInterm: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace MintSyFromTokenEvent { type InputTuple = [ caller: AddressLike, tokenIn: AddressLike, SY: AddressLike, receiver: AddressLike, netTokenIn: BigNumberish, netSyOut: BigNumberish ]; type OutputTuple = [ caller: string, tokenIn: string, SY: string, receiver: string, netTokenIn: bigint, netSyOut: bigint ]; interface OutputObject { caller: string; tokenIn: string; SY: string; receiver: string; netTokenIn: bigint; netSyOut: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace RedeemPyToSyEvent { type InputTuple = [ caller: AddressLike, receiver: AddressLike, YT: AddressLike, netPyIn: BigNumberish, netSyOut: BigNumberish ]; type OutputTuple = [ caller: string, receiver: string, YT: string, netPyIn: bigint, netSyOut: bigint ]; interface OutputObject { caller: string; receiver: string; YT: string; netPyIn: bigint; netSyOut: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace RedeemPyToTokenEvent { type InputTuple = [ caller: AddressLike, tokenOut: AddressLike, YT: AddressLike, receiver: AddressLike, netPyIn: BigNumberish, netTokenOut: BigNumberish, netSyInterm: BigNumberish ]; type OutputTuple = [ caller: string, tokenOut: string, YT: string, receiver: string, netPyIn: bigint, netTokenOut: bigint, netSyInterm: bigint ]; interface OutputObject { caller: string; tokenOut: string; YT: string; receiver: string; netPyIn: bigint; netTokenOut: bigint; netSyInterm: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace RedeemSyToTokenEvent { type InputTuple = [ caller: AddressLike, tokenOut: AddressLike, SY: AddressLike, receiver: AddressLike, netSyIn: BigNumberish, netTokenOut: BigNumberish ]; type OutputTuple = [ caller: string, tokenOut: string, SY: string, receiver: string, netSyIn: bigint, netTokenOut: bigint ]; interface OutputObject { caller: string; tokenOut: string; SY: string; receiver: string; netSyIn: bigint; netTokenOut: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface ActionMiscV3 extends BaseContract { connect(runner?: ContractRunner | null): ActionMiscV3; waitForDeployment(): Promise; interface: ActionMiscV3Interface; 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; boostMarkets: TypedContractMethod<[ markets: AddressLike[] ], [ void ], "nonpayable">; mintPyFromSy: TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netSyIn: BigNumberish, minPyOut: BigNumberish ], [ bigint ], "nonpayable">; mintPyFromToken: TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, minPyOut: BigNumberish, input: TokenInputStruct ], [ [bigint, bigint] & { netPyOut: bigint; netSyInterm: bigint; } ], "payable">; mintSyFromToken: TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, minSyOut: BigNumberish, input: TokenInputStruct ], [ bigint ], "payable">; multicall: TypedContractMethod<[ calls: IPActionMiscV3.Call3Struct[] ], [ IPActionMiscV3.ResultStructOutput[] ], "payable">; redeemDueInterestAndRewards: TypedContractMethod<[ user: AddressLike, sys: AddressLike[], yts: AddressLike[], markets: AddressLike[] ], [ void ], "nonpayable">; redeemPyToSy: TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netPyIn: BigNumberish, minSyOut: BigNumberish ], [ bigint ], "nonpayable">; redeemPyToToken: TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netPyIn: BigNumberish, output: TokenOutputStruct ], [ [bigint, bigint] & { netTokenOut: bigint; netSyInterm: bigint; } ], "nonpayable">; redeemSyToToken: TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, netSyIn: BigNumberish, output: TokenOutputStruct ], [ bigint ], "nonpayable">; simulate: TypedContractMethod<[ target: AddressLike, data: BytesLike ], [ void ], "payable">; swapTokenToToken: TypedContractMethod<[ receiver: AddressLike, minTokenOut: BigNumberish, inp: TokenInputStruct ], [ bigint ], "payable">; swapTokenToTokenViaSy: TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, input: TokenInputStruct, tokenRedeemSy: AddressLike, minTokenOut: BigNumberish ], [ [bigint, bigint] & { netTokenOut: bigint; netSyInterm: bigint; } ], "payable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "boostMarkets"): TypedContractMethod<[markets: AddressLike[]], [void], "nonpayable">; getFunction(nameOrSignature: "mintPyFromSy"): TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netSyIn: BigNumberish, minPyOut: BigNumberish ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "mintPyFromToken"): TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, minPyOut: BigNumberish, input: TokenInputStruct ], [ [bigint, bigint] & { netPyOut: bigint; netSyInterm: bigint; } ], "payable">; getFunction(nameOrSignature: "mintSyFromToken"): TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, minSyOut: BigNumberish, input: TokenInputStruct ], [ bigint ], "payable">; getFunction(nameOrSignature: "multicall"): TypedContractMethod<[ calls: IPActionMiscV3.Call3Struct[] ], [ IPActionMiscV3.ResultStructOutput[] ], "payable">; getFunction(nameOrSignature: "redeemDueInterestAndRewards"): TypedContractMethod<[ user: AddressLike, sys: AddressLike[], yts: AddressLike[], markets: AddressLike[] ], [ void ], "nonpayable">; getFunction(nameOrSignature: "redeemPyToSy"): TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netPyIn: BigNumberish, minSyOut: BigNumberish ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "redeemPyToToken"): TypedContractMethod<[ receiver: AddressLike, YT: AddressLike, netPyIn: BigNumberish, output: TokenOutputStruct ], [ [bigint, bigint] & { netTokenOut: bigint; netSyInterm: bigint; } ], "nonpayable">; getFunction(nameOrSignature: "redeemSyToToken"): TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, netSyIn: BigNumberish, output: TokenOutputStruct ], [ bigint ], "nonpayable">; getFunction(nameOrSignature: "simulate"): TypedContractMethod<[ target: AddressLike, data: BytesLike ], [ void ], "payable">; getFunction(nameOrSignature: "swapTokenToToken"): TypedContractMethod<[ receiver: AddressLike, minTokenOut: BigNumberish, inp: TokenInputStruct ], [ bigint ], "payable">; getFunction(nameOrSignature: "swapTokenToTokenViaSy"): TypedContractMethod<[ receiver: AddressLike, SY: AddressLike, input: TokenInputStruct, tokenRedeemSy: AddressLike, minTokenOut: BigNumberish ], [ [bigint, bigint] & { netTokenOut: bigint; netSyInterm: bigint; } ], "payable">; getEvent(key: "MintPyFromSy"): TypedContractEvent; getEvent(key: "MintPyFromToken"): TypedContractEvent; getEvent(key: "MintSyFromToken"): TypedContractEvent; getEvent(key: "RedeemPyToSy"): TypedContractEvent; getEvent(key: "RedeemPyToToken"): TypedContractEvent; getEvent(key: "RedeemSyToToken"): TypedContractEvent; filters: { "MintPyFromSy(address,address,address,uint256,uint256)": TypedContractEvent; MintPyFromSy: TypedContractEvent; "MintPyFromToken(address,address,address,address,uint256,uint256,uint256)": TypedContractEvent; MintPyFromToken: TypedContractEvent; "MintSyFromToken(address,address,address,address,uint256,uint256)": TypedContractEvent; MintSyFromToken: TypedContractEvent; "RedeemPyToSy(address,address,address,uint256,uint256)": TypedContractEvent; RedeemPyToSy: TypedContractEvent; "RedeemPyToToken(address,address,address,address,uint256,uint256,uint256)": TypedContractEvent; RedeemPyToToken: TypedContractEvent; "RedeemSyToToken(address,address,address,address,uint256,uint256)": TypedContractEvent; RedeemSyToToken: TypedContractEvent; }; }