UNPKG

@indexcoop/flash-mint-sdk

Version:
2,004 lines (1,994 loc) 343 kB
// src/constants/addresses.ts var AddressZero = "0x0000000000000000000000000000000000000000"; var EthAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; var HashZero = "0x0000000000000000000000000000000000000000000000000000000000000000"; var ZeroExV2AllowanceHolderContract = "0x0000000000001fF3684f28c67538d4D072C22734"; // src/constants/chains.ts var ChainId = /* @__PURE__ */ ((ChainId2) => { ChainId2[ChainId2["Mainnet"] = 1] = "Mainnet"; ChainId2[ChainId2["Optimism"] = 10] = "Optimism"; ChainId2[ChainId2["Polygon"] = 137] = "Polygon"; ChainId2[ChainId2["Base"] = 8453] = "Base"; ChainId2[ChainId2["Arbitrum"] = 42161] = "Arbitrum"; return ChainId2; })(ChainId || {}); // src/constants/contracts.ts var Contracts = { [1 /* Mainnet */]: { DebtIssuanceModuleV3: "0x86B7C605C03B9bbb0F6A25FBBb63baF15d875193", ExchangeIssuanceZeroEx: "0x8760FCD90c82e1e95e55047b6b6A0F22dc07d7d1", // redeployed version (March 2025) FlashMintHyEthV3: "0xCb1eEA349f25288627f008C5e2a69b684bddDf49", FlashMintLeveragedZeroEx: "0x58093c03B4e7804D0127A6D0A5D86dcbd5652113", FlashMintLeveragedZeroEx_AaveV2: "0x8B46956eA9a87c0AD3cb71911dDdEd23bE10e04d", FlashMintLeveragedAaveFL: "0xb2eb42e5a360834676df36fb3a00aa398dc9d721" }, [42161 /* Arbitrum */]: { DebtIssuanceModuleV3: "0x4ac26c26116fa976352b70700af58bc2442489d8", FlashMintLeveragedZeroEx: "0xdb4b7d3f812D0A8D98A1E17F9750c4E7a6477291", // Exit ramp for post-disengage AAVE2x and LINK2x. Unwraps the SetToken's // aToken components via Aave V3 Pool.withdraw, then swaps each underlying // to a chosen output token via DEXAdapterV3 (UniV3 paths). FlashMintAaveDelevered: "0x85eC64C97b6E17e7092cE584a2643C6C824E51FC" }, [8453 /* Base */]: { DebtIssuanceModuleV3: "0xa30E87311407dDcF1741901A8F359b6005252F22", FlashMintLeveragedZeroEx: "0xBbE31D5946Dd3dabf797744732A7E18cbb4DE2a9", // Non-leveraged FlashMint with DEXAdapterV5 (Aerodrome SlipStream support). // Used for the post-disengage Morpho leverage tokens (uSOL2x/3x, uSUI2x/3x, // uXRP2x/3x) that the leveraged flashmints reject with "TOO MANY COMPONENTS". FlashMintDexV5: "0xdeB2BB9f5F848eCDd4983f908748793dAeC32c7d" } }; var IndexDebtIssuanceModuleV2Address_v2 = "0x04b59F9F09750C044D7CfbC177561E409085f0f3"; var BasicIssuanceModuleAddress = "0xd8EF3cACe8b4907117a45B0b125c68560532F94D"; var DebtIssuanceModuleV2Address = "0x69a592D2129415a4A1d1b1E309C17051B7F28d57"; // src/utils/abis.ts import { arbitrum, base, mainnet } from "viem/chains"; // src/constants/abis/FlashMintLeveragedZeroEx.json var FlashMintLeveragedZeroEx_default = [ { inputs: [ { internalType: "contract IController", name: "_setController", type: "address" }, { internalType: "contract IDebtIssuanceModule", name: "_debtIssuanceModule", type: "address" }, { internalType: "contract IMorphoLeverageModule", name: "_morphoLeverageModule", type: "address" }, { internalType: "contract IMorphoLeverageModule", name: "_aaveLeverageModule", type: "address" }, { internalType: "contract IMorpho", name: "_morpho", type: "address" }, { internalType: "contract IPool", name: "_aavePool", type: "address" }, { internalType: "contract IWETH", name: "_weth", type: "address" }, { internalType: "address", name: "_swapTarget", type: "address" } ], stateMutability: "nonpayable", type: "constructor" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "address", name: "_inputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetIssued", type: "uint256" } ], name: "FlashMint", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "address", name: "_outputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetRedeemed", type: "uint256" } ], name: "FlashRedeem", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "previousOwner", type: "address" }, { indexed: true, internalType: "address", name: "newOwner", type: "address" } ], name: "OwnershipTransferred", type: "event" }, { inputs: [], name: "ETH_ADDRESS", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [], name: "ROUNDING_ERROR_MARGIN", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "view", type: "function" }, { inputs: [], name: "aaveLeverageModule", outputs: [ { internalType: "contract IMorphoLeverageModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "aavePool", outputs: [ { internalType: "contract IPool", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "approveSetToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" } ], name: "approveToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20[]", name: "_tokens", type: "address[]" } ], name: "approveTokens", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "debtIssuanceModule", outputs: [ { internalType: "contract IDebtIssuanceModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "bool", name: "_isIssuance", type: "bool" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "getLeveragedTokenData", outputs: [ { components: [ { internalType: "address", name: "collateralToken", type: "address" }, { internalType: "address", name: "collateralAToken", type: "address" }, { internalType: "uint256", name: "collateralAmount", type: "uint256" }, { internalType: "address", name: "debtToken", type: "address" }, { internalType: "uint256", name: "debtAmount", type: "uint256" } ], internalType: "struct FlashMintLeveragedZeroEx.LeveragedTokenData", name: "", type: "tuple" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "address", name: "_inputToken", type: "address" }, { internalType: "uint256", name: "_maxAmountInputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataDebtForCollateral", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataInputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "issueExactSetFromERC20", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataDebtForCollateral", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataInputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "issueExactSetFromETH", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "payable", type: "function" }, { inputs: [], name: "morpho", outputs: [ { internalType: "contract IMorpho", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "morphoLeverageModule", outputs: [ { internalType: "contract IMorphoLeverageModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "uint256", name: "assets", type: "uint256" }, { internalType: "bytes", name: "data", type: "bytes" } ], name: "onMorphoFlashLoan", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "address", name: "_outputToken", type: "address" }, { internalType: "uint256", name: "_minAmountOutputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataCollateralForDebt", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataOutputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "redeemExactSetForERC20", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "uint256", name: "_minAmountOutputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataCollateralForDebt", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroEx.SwapData", name: "_swapDataOutputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "redeemExactSetForETH", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "renounceOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "setController", outputs: [ { internalType: "contract IController", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "_swapTarget", type: "address" }, { internalType: "bool", name: "_isAllowed", type: "bool" } ], name: "setSwapTargetWhitelist", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [{ internalType: "address", name: "", type: "address" }], name: "swapTargetWhitelist", outputs: [{ internalType: "bool", name: "", type: "bool" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "newOwner", type: "address" } ], name: "transferOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "weth", outputs: [ { internalType: "contract IWETH", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" } ], name: "withdrawToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { stateMutability: "payable", type: "receive" } ]; // src/constants/abis/FlashMintLeveragedZeroExBalancerFL.json var FlashMintLeveragedZeroExBalancerFL_default = [ { inputs: [ { internalType: "contract IController", name: "_setController", type: "address" }, { internalType: "contract IDebtIssuanceModule", name: "_debtIssuanceModule", type: "address" }, { internalType: "contract IMorphoLeverageModule", name: "_morphoLeverageModule", type: "address" }, { internalType: "contract IMorphoLeverageModule", name: "_aaveLeverageModule", type: "address" }, { internalType: "contract IVault", name: "_balancerV2Vault", type: "address" }, { internalType: "contract IPool", name: "_aavePool", type: "address" }, { internalType: "contract IWETH", name: "_weth", type: "address" }, { internalType: "address", name: "_swapTarget", type: "address" } ], stateMutability: "nonpayable", type: "constructor" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "address", name: "_inputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetIssued", type: "uint256" } ], name: "FlashMint", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "address", name: "_outputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetRedeemed", type: "uint256" } ], name: "FlashRedeem", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "previousOwner", type: "address" }, { indexed: true, internalType: "address", name: "newOwner", type: "address" } ], name: "OwnershipTransferred", type: "event" }, { inputs: [], name: "ETH_ADDRESS", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [], name: "ROUNDING_ERROR_MARGIN", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "view", type: "function" }, { inputs: [], name: "aaveLeverageModule", outputs: [ { internalType: "contract IMorphoLeverageModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "aavePool", outputs: [ { internalType: "contract IPool", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "approveSetToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" } ], name: "approveToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20[]", name: "_tokens", type: "address[]" } ], name: "approveTokens", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "balancerV2Vault", outputs: [ { internalType: "contract IVault", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "debtIssuanceModule", outputs: [ { internalType: "contract IDebtIssuanceModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "bool", name: "_isIssuance", type: "bool" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "getLeveragedTokenData", outputs: [ { components: [ { internalType: "address", name: "collateralToken", type: "address" }, { internalType: "address", name: "collateralAToken", type: "address" }, { internalType: "uint256", name: "collateralAmount", type: "uint256" }, { internalType: "address", name: "debtToken", type: "address" }, { internalType: "uint256", name: "debtAmount", type: "uint256" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.LeveragedTokenData", name: "", type: "tuple" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "address", name: "_inputToken", type: "address" }, { internalType: "uint256", name: "_maxAmountInputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataDebtForCollateral", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataInputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "issueExactSetFromERC20", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataDebtForCollateral", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataInputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "issueExactSetFromETH", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "payable", type: "function" }, { inputs: [], name: "morphoLeverageModule", outputs: [ { internalType: "contract IMorphoLeverageModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract IERC20[]", name: "tokens", type: "address[]" }, { internalType: "uint256[]", name: "amounts", type: "uint256[]" }, { internalType: "uint256[]", name: "feeAmounts", type: "uint256[]" }, { internalType: "bytes", name: "userData", type: "bytes" } ], name: "receiveFlashLoan", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "address", name: "_outputToken", type: "address" }, { internalType: "uint256", name: "_minAmountOutputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataCollateralForDebt", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataOutputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "redeemExactSetForERC20", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_setAmount", type: "uint256" }, { internalType: "uint256", name: "_minAmountOutputToken", type: "uint256" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataCollateralForDebt", type: "tuple" }, { components: [ { internalType: "address", name: "swapTarget", type: "address" }, { internalType: "bytes", name: "callData", type: "bytes" } ], internalType: "struct FlashMintLeveragedZeroExBalancerFL.SwapData", name: "_swapDataOutputToken", type: "tuple" }, { internalType: "bool", name: "_isAave", type: "bool" } ], name: "redeemExactSetForETH", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]" } ], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "renounceOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "setController", outputs: [ { internalType: "contract IController", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "_swapTarget", type: "address" }, { internalType: "bool", name: "_isAllowed", type: "bool" } ], name: "setSwapTargetWhitelist", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [{ internalType: "address", name: "", type: "address" }], name: "swapTargetWhitelist", outputs: [{ internalType: "bool", name: "", type: "bool" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "newOwner", type: "address" } ], name: "transferOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "weth", outputs: [ { internalType: "contract IWETH", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" } ], name: "withdrawToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { stateMutability: "payable", type: "receive" } ]; // src/utils/abis.ts var FlashMintAbis = { [Contracts[arbitrum.id].FlashMintLeveragedZeroEx]: FlashMintLeveragedZeroExBalancerFL_default, [Contracts[base.id].FlashMintLeveragedZeroEx]: FlashMintLeveragedZeroEx_default, [Contracts[mainnet.id].FlashMintLeveragedZeroEx]: FlashMintLeveragedZeroEx_default, [Contracts[mainnet.id].FlashMintLeveragedZeroEx_AaveV2]: FlashMintLeveragedZeroEx_default }; // src/utils/addresses.ts import { getTokenByChainAndSymbol, isAddressEqual } from "@indexcoop/tokenlists"; function getTokenAddressOrWeth(token, chainId) { return isAddressEqual(token, EthAddress) ? getTokenByChainAndSymbol(chainId, "WETH").address : token; } function isZeroExV2AllowanceHolderContract(address) { return isAddressEqual(address, ZeroExV2AllowanceHolderContract); } // src/utils/contracts.ts import { Contract } from "@ethersproject/contracts"; // src/constants/abis/ExchangeIssuanceZeroEx.json var ExchangeIssuanceZeroEx_default = [ { inputs: [ { internalType: "address", name: "_weth", type: "address" }, { internalType: "contract IController", name: "_setController", type: "address" }, { internalType: "address", name: "_swapTarget", type: "address" } ], stateMutability: "nonpayable", type: "constructor" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "contract IERC20", name: "_inputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountInputToken", type: "uint256" }, { indexed: false, internalType: "uint256", name: "_amountSetIssued", type: "uint256" } ], name: "ExchangeIssue", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "contract IERC20", name: "_outputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetRedeemed", type: "uint256" }, { indexed: false, internalType: "uint256", name: "_amountOutputToken", type: "uint256" } ], name: "ExchangeRedeem", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "previousOwner", type: "address" }, { indexed: true, internalType: "address", name: "newOwner", type: "address" } ], name: "OwnershipTransferred", type: "event" }, { inputs: [], name: "ETH_ADDRESS", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [], name: "WETH", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "address", name: "_issuanceModule", type: "address" } ], name: "approveSetToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" }, { internalType: "address", name: "_spender", type: "address" } ], name: "approveToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20[]", name: "_tokens", type: "address[]" }, { internalType: "address", name: "_spender", type: "address" } ], name: "approveTokens", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" }, { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" } ], name: "getRequiredIssuanceComponents", outputs: [ { internalType: "address[]", name: "components", type: "address[]" }, { internalType: "uint256[]", name: "positions", type: "uint256[]" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" }, { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" } ], name: "getRequiredRedemptionComponents", outputs: [ { internalType: "address[]", name: "components", type: "address[]" }, { internalType: "uint256[]", name: "positions", type: "uint256[]" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { internalType: "bytes[]", name: "_componentQuotes", type: "bytes[]" }, { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" } ], name: "issueExactSetFromETH", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "payable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "contract IERC20", name: "_inputToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { internalType: "uint256", name: "_maxAmountInputToken", type: "uint256" }, { internalType: "bytes[]", name: "_componentQuotes", type: "bytes[]" }, { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" } ], name: "issueExactSetFromToken", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { internalType: "uint256", name: "_minEthReceive", type: "uint256" }, { internalType: "bytes[]", name: "_componentQuotes", type: "bytes[]" }, { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" } ], name: "redeemExactSetForETH", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "contract IERC20", name: "_outputToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { internalType: "uint256", name: "_minOutputReceive", type: "uint256" }, { internalType: "bytes[]", name: "_componentQuotes", type: "bytes[]" }, { internalType: "address", name: "_issuanceModule", type: "address" }, { internalType: "bool", name: "_isDebtIssuance", type: "bool" } ], name: "redeemExactSetForToken", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "renounceOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "setController", outputs: [ { internalType: "contract IController", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "swapTarget", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "address", name: "newOwner", type: "address" } ], name: "transferOwnership", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20[]", name: "_tokens", type: "address[]" }, { internalType: "address payable", name: "_to", type: "address" } ], name: "withdrawTokens", outputs: [], stateMutability: "payable", type: "function" }, { stateMutability: "payable", type: "receive" } ]; // src/constants/abis/FlashMintHyEth.json var FlashMintHyEth_default = [ { inputs: [ { components: [ { internalType: "address", name: "quickRouter", type: "address" }, { internalType: "address", name: "sushiRouter", type: "address" }, { internalType: "address", name: "uniV3Router", type: "address" }, { internalType: "address", name: "uniV3Quoter", type: "address" }, { internalType: "address", name: "curveAddressProvider", type: "address" }, { internalType: "address", name: "curveCalculator", type: "address" }, { internalType: "address", name: "balV2Vault", type: "address" }, { internalType: "address", name: "weth", type: "address" } ], internalType: "struct DEXAdapterV3.Addresses", name: "_dexAddresses", type: "tuple" }, { internalType: "contract IController", name: "_setController", type: "address" }, { internalType: "contract IDebtIssuanceModule", name: "_issuanceModule", type: "address" }, { internalType: "contract IStETH", name: "_stETH", type: "address" }, { internalType: "address", name: "_stEthETHPool", type: "address" } ], stateMutability: "nonpayable", type: "constructor" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "contract IERC20", name: "_inputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountInputToken", type: "uint256" }, { indexed: false, internalType: "uint256", name: "_amountSetIssued", type: "uint256" } ], name: "FlashMint", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "_recipient", type: "address" }, { indexed: true, internalType: "contract ISetToken", name: "_setToken", type: "address" }, { indexed: true, internalType: "contract IERC20", name: "_outputToken", type: "address" }, { indexed: false, internalType: "uint256", name: "_amountSetRedeemed", type: "uint256" }, { indexed: false, internalType: "uint256", name: "_amountOutputToken", type: "uint256" } ], name: "FlashRedeem", type: "event" }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "previousOwner", type: "address" }, { indexed: true, internalType: "address", name: "newOwner", type: "address" } ], name: "OwnershipTransferred", type: "event" }, { inputs: [], name: "ROUNDING_ERROR", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "view", type: "function" }, { inputs: [], name: "acrossPool", outputs: [ { internalType: "contract IAcrossHubPoolV2", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "acrossToken", outputs: [ { internalType: "contract IERC20", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [], name: "agETH", outputs: [ { internalType: "contract IERC20", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" } ], name: "approveSetToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [ { internalType: "contract IERC20", name: "_token", type: "address" }, { internalType: "address", name: "_spender", type: "address" }, { internalType: "uint256", name: "_allowance", type: "uint256" } ], name: "approveToken", outputs: [], stateMutability: "nonpayable", type: "function" }, { inputs: [], name: "dexAdapter", outputs: [ { internalType: "address", name: "quickRouter", type: "address" }, { internalType: "address", name: "sushiRouter", type: "address" }, { internalType: "address", name: "uniV3Router", type: "address" }, { internalType: "address", name: "uniV3Quoter", type: "address" }, { internalType: "address", name: "curveAddressProvider", type: "address" }, { internalType: "address", name: "curveCalculator", type: "address" }, { internalType: "address", name: "balV2Vault", type: "address" }, { internalType: "address", name: "weth", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [{ internalType: "address", name: "", type: "address" }], name: "erc4626Components", outputs: [{ internalType: "bool", name: "", type: "bool" }], stateMutability: "view", type: "function" }, { inputs: [], name: "issuanceModule", outputs: [ { internalType: "contract IDebtIssuanceModule", name: "", type: "address" } ], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { internalType: "contract IERC20", name: "_inputToken", type: "address" }, { internalType: "uint256", name: "_maxInputTokenAmount", type: "uint256" }, { components: [ { internalType: "address[]", name: "path", type: "address[]" }, { internalType: "uint24[]", name: "fees", type: "uint24[]" }, { internalType: "address", name: "pool", type: "address" }, { internalType: "bytes32[]", name: "poolIds", type: "bytes32[]" }, { internalType: "enum DEXAdapterV3.Exchange", name: "exchange", type: "uint8" } ], internalType: "struct DEXAdapterV3.SwapData", name: "_swapDataInputTokenToEth", type: "tuple" }, { components: [ { internalType: "address[]", name: "path", type: "address[]" }, { internalType: "uint24[]", name: "fees", type: "uint24[]" }, { internalType: "address", name: "pool", type: "address" }, { internalType: "bytes32[]", name: "poolIds", type: "bytes32[]" }, { internalType: "enum DEXAdapterV3.Exchange", name: "exchange", type: "uint8" } ], internalType: "struct DEXAdapterV3.SwapData", name: "_swapDataEthToInputToken", type: "tuple" }, { components: [ { internalType: "address[]", name: "path", type: "address[]" }, { internalType: "uint24[]", name: "fees", type: "uint24[]" }, { internalType: "address", name: "pool", type: "address" }, { internalType: "bytes32[]", name: "poolIds", type: "bytes32[]" }, { internalType: "enum DEXAdapterV3.Exchange", name: "exchange", type: "uint8" } ], internalType: "struct DEXAdapterV3.SwapData[]", name: "_swapDataEthToComponent", type: "tuple[]" } ], name: "issueExactSetFromERC20", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "payable", type: "function" }, { inputs: [ { internalType: "contract ISetToken", name: "_setToken", type: "address" }, { internalType: "uint256", name: "_amountSetToken", type: "uint256" }, { components: [ { internalType: "address[]", name: "path", type: "address[]" }, { internalType: "uint24[]", name: "fees", type: "uint24[]" }, { internalType: "address", name: "pool", type: "address" }, { internalType: "bytes32[]", name: "poolIds", type: "bytes32[]" }, { internalType: "enum DEXAdapterV3.Exchange", name: "exchange", type: "uint8" } ], internalType: "struct DEXAdapterV3.SwapData[]", name: "_swapDataEthToComponent", type: "tuple[]" } ], name: "issueExactSetFromETH", outputs: [{ internalType: "uint256", name: "", type: "uint256" }], stateMutability: "payable", type: "function" }, { inputs: [], name: "owner", outputs: [{ internalType: "address", name: "", type: "address" }], stateMutability: "view", type: "function" }, { inputs: [ { internalType: "contract IPendleMarketV3", name: "", type: "address" } ], name: "pendleMarketData", outputs: [ { internalType: "contract IPendlePrincipalToken", name: "pt", type: "address" }, { internalType: "contract IPe