@1delta/margin-fetcher 0.0.13 → 0.0.15-0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_esm-2UAQOYNJ.js +3898 -0
- package/dist/_esm-2UAQOYNJ.js.map +1 -0
- package/dist/abis/aave-v2/YLDR.d.ts.map +1 -1
- package/dist/abis/aave-v3/AavePoolDataProviderLegacy.d.ts.map +1 -1
- package/dist/abis/compound-v2/CollateralToken.d.ts +58 -0
- package/dist/abis/compound-v2/CollateralToken.d.ts.map +1 -0
- package/dist/abis/compound-v2/Comptroller.d.ts +1 -1600
- package/dist/abis/compound-v2/Comptroller.d.ts.map +1 -1
- package/dist/abis/compound-v2/VenusLens.d.ts +1007 -0
- package/dist/abis/{aave/AavePoolV3.d.ts.map → compound-v2/VenusLens.d.ts.map} +1 -1
- package/dist/abis/compound-v2/VenusLensLegacy.d.ts +109 -0
- package/dist/abis/compound-v2/VenusLensLegacy.d.ts.map +1 -0
- package/dist/abis/compound-v3/Comet.d.ts +0 -20
- package/dist/abis/compound-v3/Comet.d.ts.map +1 -1
- package/dist/abis/morpho/lens.d.ts +127 -15
- package/dist/abis/morpho/lens.d.ts.map +1 -1
- package/dist/abis/multicall/Multicall.d.ts.map +1 -1
- package/dist/abis/oracle/ChainLinkAggregator.d.ts +5 -223
- package/dist/abis/oracle/ChainLinkAggregator.d.ts.map +1 -1
- package/dist/abis/oracle/ProxyOracle.d.ts +26 -0
- package/dist/abis/oracle/ProxyOracle.d.ts.map +1 -0
- package/dist/abis/oracle/UniV3.d.ts +12 -0
- package/dist/abis/oracle/UniV3.d.ts.map +1 -0
- package/dist/assets/index.d.ts +3 -8
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/liquidityThresholds.d.ts +10 -0
- package/dist/assets/liquidityThresholds.d.ts.map +1 -1
- package/dist/ccip-NAPFCFLK.js +5 -0
- package/dist/ccip-NAPFCFLK.js.map +1 -0
- package/dist/chunk-BYTNVMX7.js +369 -0
- package/dist/chunk-BYTNVMX7.js.map +1 -0
- package/dist/chunk-JJRW5HVN.js +4133 -0
- package/dist/chunk-JJRW5HVN.js.map +1 -0
- package/dist/chunk-PR4QN5HX.js +39 -0
- package/dist/chunk-PR4QN5HX.js.map +1 -0
- package/dist/flash-liquidity/assets.d.ts +2 -2
- package/dist/flash-liquidity/assets.d.ts.map +1 -1
- package/dist/flash-liquidity/fetchLiquidity.d.ts +3 -3
- package/dist/flash-liquidity/fetchLiquidity.d.ts.map +1 -1
- package/dist/flash-liquidity/index.d.ts +2 -2
- package/dist/flash-liquidity/types.d.ts +1 -0
- package/dist/flash-liquidity/types.d.ts.map +1 -1
- package/dist/flash-liquidity/utils.d.ts +3 -2
- package/dist/flash-liquidity/utils.d.ts.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23868 -6
- package/dist/index.js.map +1 -0
- package/dist/lending/aave-v2-type/misc.d.ts +3 -9
- package/dist/lending/aave-v2-type/misc.d.ts.map +1 -1
- package/dist/lending/aave-v2-type/publicCallBuild.d.ts +3 -4
- package/dist/lending/aave-v2-type/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/aave-v2-type/publicCallParse.d.ts +4 -5
- package/dist/lending/aave-v2-type/publicCallParse.d.ts.map +1 -1
- package/dist/lending/aave-v3-type/publicCallBuild.d.ts +3 -3
- package/dist/lending/aave-v3-type/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/aave-v3-type/publicCallParse.d.ts +5 -6
- package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -1
- package/dist/lending/addresses/aave.d.ts.map +1 -1
- package/dist/lending/addresses/aaveV2.d.ts.map +1 -1
- package/dist/lending/addresses/compoundV2.d.ts +13 -0
- package/dist/lending/addresses/compoundV2.d.ts.map +1 -0
- package/dist/lending/addresses/compoundV3.d.ts +2 -4
- package/dist/lending/addresses/compoundV3.d.ts.map +1 -1
- package/dist/lending/addresses/meridian.d.ts +3 -0
- package/dist/lending/addresses/meridian.d.ts.map +1 -1
- package/dist/lending/addresses/takotako.d.ts.map +1 -1
- package/dist/lending/compound-v2/getters/moonwell.d.ts +32 -0
- package/dist/lending/compound-v2/getters/moonwell.d.ts.map +1 -0
- package/dist/lending/compound-v2/getters/types.d.ts +12 -0
- package/dist/lending/compound-v2/getters/types.d.ts.map +1 -0
- package/dist/lending/compound-v2/getters/venus.d.ts +86 -0
- package/dist/lending/compound-v2/getters/venus.d.ts.map +1 -0
- package/dist/lending/compound-v2/publicCallBuild.d.ts +2 -0
- package/dist/lending/compound-v2/publicCallBuild.d.ts.map +1 -0
- package/dist/lending/compound-v2/publicCallParse.d.ts +6 -0
- package/dist/lending/compound-v2/publicCallParse.d.ts.map +1 -0
- package/dist/lending/compound-v3/publicCallBuild.d.ts +1 -2
- package/dist/lending/compound-v3/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/compound-v3/publicCallParse.d.ts +3 -4
- package/dist/lending/compound-v3/publicCallParse.d.ts.map +1 -1
- package/dist/lending/fetchLender.d.ts +5 -3
- package/dist/lending/fetchLender.d.ts.map +1 -1
- package/dist/lending/fetchLenderAll.d.ts +2 -2
- package/dist/lending/fetchLenderAll.d.ts.map +1 -1
- package/dist/lending/fetchLenderExt.d.ts +2 -2
- package/dist/lending/fetchLenderExt.d.ts.map +1 -1
- package/dist/lending/index.d.ts +6 -5
- package/dist/lending/index.d.ts.map +1 -1
- package/dist/lending/init/publicCallBuild.d.ts +1 -1
- package/dist/lending/init/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/init/publicCallParse.d.ts +4 -4
- package/dist/lending/init/publicCallParse.d.ts.map +1 -1
- package/dist/lending/lista/getMarketsFromChain.d.ts +4 -0
- package/dist/lending/lista/getMarketsFromChain.d.ts.map +1 -0
- package/dist/lending/lista/getMarketsOnChain.d.ts +6 -0
- package/dist/lending/lista/getMarketsOnChain.d.ts.map +1 -0
- package/dist/lending/lista/publicCallBuild.d.ts +10 -0
- package/dist/lending/lista/publicCallBuild.d.ts.map +1 -0
- package/dist/lending/meta/index.d.ts +20 -0
- package/dist/lending/meta/index.d.ts.map +1 -0
- package/dist/lending/morpho/convertPublic.d.ts +2 -2
- package/dist/lending/morpho/convertPublic.d.ts.map +1 -1
- package/dist/lending/morpho/fetchPublic.d.ts.map +1 -1
- package/dist/lending/morpho/getMarketsFromChain.d.ts +4 -0
- package/dist/lending/morpho/getMarketsFromChain.d.ts.map +1 -0
- package/dist/lending/morpho/index.d.ts +3 -0
- package/dist/lending/morpho/index.d.ts.map +1 -0
- package/dist/lending/morpho/publicCallBuild.d.ts +12 -2
- package/dist/lending/morpho/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/morpho/utils/evmParser.d.ts +48 -0
- package/dist/lending/morpho/utils/evmParser.d.ts.map +1 -0
- package/dist/lending/morpho/utils/mathLib.d.ts +125 -0
- package/dist/lending/morpho/utils/mathLib.d.ts.map +1 -0
- package/dist/lending/morpho/utils/parsers.d.ts +10 -0
- package/dist/lending/morpho/utils/parsers.d.ts.map +1 -0
- package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts +3 -3
- package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts +2 -2
- package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts +3 -3
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts.map +1 -1
- package/dist/lending/user-data/abis.d.ts +179 -34
- package/dist/lending/user-data/abis.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v2/index.d.ts +3 -0
- package/dist/lending/user-data/compound-v2/index.d.ts.map +1 -0
- package/dist/lending/user-data/compound-v2/userCallBuild.d.ts +4 -0
- package/dist/lending/user-data/compound-v2/userCallBuild.d.ts.map +1 -0
- package/dist/lending/user-data/compound-v2/userCallParse.d.ts +8 -0
- package/dist/lending/user-data/compound-v2/userCallParse.d.ts.map +1 -0
- package/dist/lending/user-data/compound-v3/index.d.ts +2 -3
- package/dist/lending/user-data/compound-v3/index.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v3/userCallBuild.d.ts +3 -3
- package/dist/lending/user-data/compound-v3/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v3/userCallParse.d.ts +2 -2
- package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/fetchUserData.d.ts +114 -5
- package/dist/lending/user-data/fetchUserData.d.ts.map +1 -1
- package/dist/lending/user-data/index.d.ts +2 -2
- package/dist/lending/user-data/index.d.ts.map +1 -1
- package/dist/lending/user-data/init/userCallBuild.d.ts +2 -2
- package/dist/lending/user-data/init/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/init/userCallParse.d.ts +2 -2
- package/dist/lending/user-data/init/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/decoder.d.ts +20 -1
- package/dist/lending/user-data/morpho/decoder.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/index.d.ts +4 -0
- package/dist/lending/user-data/morpho/index.d.ts.map +1 -0
- package/dist/lending/user-data/morpho/morphoLib.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/types.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/userCallBuild.d.ts +6 -3
- package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/userCallParse.d.ts +16 -2
- package/dist/lending/user-data/morpho/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/utils/createGeneralUserState.d.ts +4 -1
- package/dist/lending/user-data/utils/createGeneralUserState.d.ts.map +1 -1
- package/dist/lending/user-data/utils/createMultiAccountStyleUserState.d.ts +1 -1
- package/dist/lending/user-data/utils/createMultiAccountStyleUserState.d.ts.map +1 -1
- package/dist/lending/user-data/utils/formatting/generalFormatters.d.ts +1 -1
- package/dist/lending/user-data/utils/formatting/generalFormatters.d.ts.map +1 -1
- package/dist/lending/user-data/utils/formatting/index.d.ts +1 -1
- package/dist/lending/user-data/utils/index.d.ts +4 -4
- package/dist/lending/user-data/utils/index.d.ts.map +1 -1
- package/dist/lending-pairs/computeLendingPairs.d.ts +10 -1
- package/dist/lending-pairs/computeLendingPairs.d.ts.map +1 -1
- package/dist/lending-pairs/index.d.ts +1 -1
- package/dist/lending-pairs/index.d.ts.map +1 -1
- package/dist/lending-pools/computeLenderDataFromPools.d.ts +10 -0
- package/dist/lending-pools/computeLenderDataFromPools.d.ts.map +1 -0
- package/dist/lending-pools/computeLendingPools.d.ts +23 -0
- package/dist/lending-pools/computeLendingPools.d.ts.map +1 -0
- package/dist/lending-pools/index.d.ts +3 -0
- package/dist/lending-pools/index.d.ts.map +1 -0
- package/dist/prices/defillama/index.d.ts.map +1 -1
- package/dist/prices/index.d.ts +3 -2
- package/dist/prices/index.d.ts.map +1 -1
- package/dist/prices/main-prices/addresses/api3.d.ts.map +1 -1
- package/dist/prices/main-prices/addresses/chainlink.d.ts +0 -7
- package/dist/prices/main-prices/addresses/chainlink.d.ts.map +1 -1
- package/dist/prices/main-prices/fetchOracleData.d.ts +9 -3
- package/dist/prices/main-prices/fetchOracleData.d.ts.map +1 -1
- package/dist/prices/main-prices/index.d.ts +1 -1
- package/dist/prices/main-prices/index.d.ts.map +1 -1
- package/dist/prices/pendle/fetchPendlePrices.d.ts +47 -0
- package/dist/prices/pendle/fetchPendlePrices.d.ts.map +1 -0
- package/dist/prices/pendle/index.d.ts +2 -0
- package/dist/prices/pendle/index.d.ts.map +1 -0
- package/dist/secp256k1-XP7IUONI.js +2208 -0
- package/dist/secp256k1-XP7IUONI.js.map +1 -0
- package/dist/types/apiReturnType.d.ts +4 -4
- package/dist/types/apiReturnType.d.ts.map +1 -1
- package/dist/{lending/types/index.d.ts → types/general.d.ts} +1 -1
- package/dist/types/general.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -41
- package/dist/types/index.d.ts.map +1 -1
- package/dist/{lending/aave-v2-type/types.d.ts → types/lender/aave-v2-types.d.ts} +5 -9
- package/dist/types/lender/aave-v2-types.d.ts.map +1 -0
- package/dist/{lending/aave-v3-type/types.d.ts → types/lender/aave-v3-types.d.ts} +5 -9
- package/dist/types/lender/aave-v3-types.d.ts.map +1 -0
- package/dist/types/lender/compound-v2-types.d.ts +41 -0
- package/dist/types/lender/compound-v2-types.d.ts.map +1 -0
- package/dist/{lending/compound-v3/types.d.ts → types/lender/compound-v3-types.d.ts} +5 -9
- package/dist/types/lender/compound-v3-types.d.ts.map +1 -0
- package/dist/{lending/init/types.d.ts → types/lender/init-types.d.ts} +5 -9
- package/dist/types/lender/init-types.d.ts.map +1 -0
- package/dist/{lending/morpho/types.d.ts → types/lender/morpho-types.d.ts} +12 -2
- package/dist/types/lender/morpho-types.d.ts.map +1 -0
- package/dist/{lending/user-data/types.d.ts → types/lenderTypes.d.ts} +30 -20
- package/dist/types/lenderTypes.d.ts.map +1 -0
- package/dist/types/misc.d.ts +47 -0
- package/dist/types/misc.d.ts.map +1 -0
- package/dist/types/providers.d.ts +1 -9
- package/dist/types/providers.d.ts.map +1 -1
- package/dist/utils/constants.d.ts +0 -23
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -7
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/multicall.d.ts +2 -1
- package/dist/utils/multicall.d.ts.map +1 -1
- package/dist/utils/parsing.d.ts +6 -3
- package/dist/utils/parsing.d.ts.map +1 -1
- package/dist/yields/index.d.ts.map +1 -1
- package/dist/yields/yieldTypes.d.ts +76 -0
- package/dist/yields/yieldTypes.d.ts.map +1 -0
- package/package.json +16 -8
- package/dist/abis/aave/AToken.d.ts +0 -526
- package/dist/abis/aave/AToken.d.ts.map +0 -1
- package/dist/abis/aave/AToken.js +0 -686
- package/dist/abis/aave/AaveOracle.js +0 -66
- package/dist/abis/aave/AavePoolAndDataProvider.js +0 -2080
- package/dist/abis/aave/AavePoolV3.d.ts +0 -819
- package/dist/abis/aave/AavePoolV3.js +0 -1060
- package/dist/abis/aave/AavePoolV3Upgraded.js +0 -1474
- package/dist/abis/aave/AaveV3ProtocolDataProvider.js +0 -553
- package/dist/abis/aave/VariableDebtToken.js +0 -820
- package/dist/abis/aave-v2/ProtocolDataProvider.js +0 -312
- package/dist/abis/aave-v2/YLDR.js +0 -199
- package/dist/abis/aave-v3/AavePoolDataProviderLegacy.js +0 -460
- package/dist/abis/aave-v3/AavePoolLegacy.js +0 -1060
- package/dist/abis/aave-v3/YLDR.js +0 -46
- package/dist/abis/aurelius/Rewarder.js +0 -118
- package/dist/abis/compound-v2/CompoundLens.js +0 -851
- package/dist/abis/compound-v2/Comptroller.js +0 -2104
- package/dist/abis/compound-v3/Comet.js +0 -1829
- package/dist/abis/compound-v3/CometExt.js +0 -536
- package/dist/abis/compound-v3/CometLens.js +0 -194
- package/dist/abis/compound-v3/CometRewards.js +0 -330
- package/dist/abis/compound-v3/IrGetter.js +0 -31
- package/dist/abis/flashloan-united/flashAbi.js +0 -72
- package/dist/abis/init/Core.d.ts +0 -523
- package/dist/abis/init/Core.d.ts.map +0 -1
- package/dist/abis/init/Core.js +0 -681
- package/dist/abis/init/InitFlashAggregator.d.ts +0 -624
- package/dist/abis/init/InitFlashAggregator.d.ts.map +0 -1
- package/dist/abis/init/InitFlashAggregator.js +0 -795
- package/dist/abis/init/InitLens.js +0 -203
- package/dist/abis/init/PosManager.d.ts +0 -802
- package/dist/abis/init/PosManager.d.ts.map +0 -1
- package/dist/abis/init/PosManager.js +0 -1055
- package/dist/abis/lendle/IncentivesController.js +0 -525
- package/dist/abis/lendle/MultiFeeDistribution.js +0 -820
- package/dist/abis/meridian/PullRewardsIncentivesController.js +0 -98
- package/dist/abis/morpho/blue.js +0 -99
- package/dist/abis/morpho/lens.js +0 -31
- package/dist/abis/multicall/Multicall.js +0 -101
- package/dist/abis/oracle/AaveOracle.js +0 -66
- package/dist/abis/oracle/Api3Oracle.js +0 -62
- package/dist/abis/oracle/ChainLinkAggregator.js +0 -480
- package/dist/abis/oracle/RWADynamicOracle.js +0 -15
- package/dist/abis/oracle/UniswapV2Pair.js +0 -659
- package/dist/abis/uniswap/FeeOnTransferDetector.d.ts +0 -102
- package/dist/abis/uniswap/FeeOnTransferDetector.d.ts.map +0 -1
- package/dist/abis/uniswap/FeeOnTransferDetector.js +0 -133
- package/dist/abis/uniswap/UniswapV2Pair.d.ts +0 -513
- package/dist/abis/uniswap/UniswapV2Pair.d.ts.map +0 -1
- package/dist/abis/uniswap/UniswapV2Pair.js +0 -659
- package/dist/assets/index.js +0 -54
- package/dist/assets/liquidityThresholds.js +0 -51
- package/dist/flash-liquidity/assets.js +0 -45
- package/dist/flash-liquidity/fetchLiquidity.js +0 -235
- package/dist/flash-liquidity/index.js +0 -2
- package/dist/flash-liquidity/types.js +0 -8
- package/dist/flash-liquidity/utils.js +0 -17
- package/dist/lending/aave-v2-type/misc.js +0 -8
- package/dist/lending/aave-v2-type/publicCallBuild.js +0 -102
- package/dist/lending/aave-v2-type/publicCallParse.js +0 -257
- package/dist/lending/aave-v2-type/types.d.ts.map +0 -1
- package/dist/lending/aave-v2-type/types.js +0 -46
- package/dist/lending/aave-v3-type/publicCallBuild.js +0 -123
- package/dist/lending/aave-v3-type/publicCallParse.js +0 -307
- package/dist/lending/aave-v3-type/types.d.ts.map +0 -1
- package/dist/lending/aave-v3-type/types.js +0 -98
- package/dist/lending/addresses/aave.js +0 -10
- package/dist/lending/addresses/aaveV2.js +0 -6
- package/dist/lending/addresses/aurelius.js +0 -12
- package/dist/lending/addresses/compoundV3.js +0 -36
- package/dist/lending/addresses/contracts.d.ts +0 -5
- package/dist/lending/addresses/contracts.d.ts.map +0 -1
- package/dist/lending/addresses/contracts.js +0 -49
- package/dist/lending/addresses/hana.js +0 -6
- package/dist/lending/addresses/index.d.ts +0 -2
- package/dist/lending/addresses/index.d.ts.map +0 -1
- package/dist/lending/addresses/index.js +0 -1
- package/dist/lending/addresses/init.js +0 -33
- package/dist/lending/addresses/lendle.js +0 -12
- package/dist/lending/addresses/meridian.js +0 -12
- package/dist/lending/addresses/takotako.js +0 -12
- package/dist/lending/compound-v3/publicCallBuild.js +0 -63
- package/dist/lending/compound-v3/publicCallParse.js +0 -135
- package/dist/lending/compound-v3/types.d.ts.map +0 -1
- package/dist/lending/compound-v3/types.js +0 -6
- package/dist/lending/fetchLender.js +0 -104
- package/dist/lending/fetchLenderAll.js +0 -12
- package/dist/lending/fetchLenderExt.js +0 -42
- package/dist/lending/index.js +0 -5
- package/dist/lending/init/publicCallBuild.js +0 -21
- package/dist/lending/init/publicCallParse.js +0 -76
- package/dist/lending/init/types.d.ts.map +0 -1
- package/dist/lending/init/types.js +0 -6
- package/dist/lending/morpho/convertPublic.js +0 -119
- package/dist/lending/morpho/fetchPublic.js +0 -72
- package/dist/lending/morpho/publicCallBuild.js +0 -6
- package/dist/lending/morpho/types.d.ts.map +0 -1
- package/dist/lending/morpho/types.js +0 -1
- package/dist/lending/types/index.d.ts.map +0 -1
- package/dist/lending/types/index.js +0 -1
- package/dist/lending/user-data/aave-v2-type/userCallBuild.js +0 -87
- package/dist/lending/user-data/aave-v2-type/userCallParse.js +0 -239
- package/dist/lending/user-data/aave-v3-type/userCallBuild.js +0 -26
- package/dist/lending/user-data/aave-v3-type/userCallParse.js +0 -84
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.js +0 -81
- package/dist/lending/user-data/abis.js +0 -56
- package/dist/lending/user-data/compound-v3/addresses.d.ts +0 -10
- package/dist/lending/user-data/compound-v3/addresses.d.ts.map +0 -1
- package/dist/lending/user-data/compound-v3/addresses.js +0 -33
- package/dist/lending/user-data/compound-v3/index.js +0 -3
- package/dist/lending/user-data/compound-v3/userCallBuild.js +0 -44
- package/dist/lending/user-data/compound-v3/userCallParse.js +0 -103
- package/dist/lending/user-data/fetchUserData.js +0 -100
- package/dist/lending/user-data/index.js +0 -2
- package/dist/lending/user-data/init/userCallBuild.js +0 -20
- package/dist/lending/user-data/init/userCallParse.js +0 -88
- package/dist/lending/user-data/morpho/decoder.js +0 -52
- package/dist/lending/user-data/morpho/morphoLib.js +0 -21
- package/dist/lending/user-data/morpho/types.js +0 -13
- package/dist/lending/user-data/morpho/userCallBuild.js +0 -42
- package/dist/lending/user-data/morpho/userCallParse.js +0 -102
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts +0 -11
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts.map +0 -1
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.js +0 -112
- package/dist/lending/user-data/types.d.ts.map +0 -1
- package/dist/lending/user-data/types.js +0 -38
- package/dist/lending/user-data/utils/createGeneralUserState.js +0 -105
- package/dist/lending/user-data/utils/createMultiAccountStyleUserState.js +0 -96
- package/dist/lending/user-data/utils/formatting/generalFormatters.js +0 -109
- package/dist/lending/user-data/utils/formatting/index.js +0 -1
- package/dist/lending/user-data/utils/index.js +0 -17
- package/dist/lending-pairs/computeLendingPairs.js +0 -259
- package/dist/lending-pairs/index.js +0 -1
- package/dist/prices/defillama/index.js +0 -269
- package/dist/prices/index.js +0 -2
- package/dist/prices/main-prices/addresses/aaveOracles.d.ts +0 -278
- package/dist/prices/main-prices/addresses/aaveOracles.d.ts.map +0 -1
- package/dist/prices/main-prices/addresses/aaveOracles.js +0 -277
- package/dist/prices/main-prices/addresses/api3.js +0 -9
- package/dist/prices/main-prices/addresses/chainlink.js +0 -744
- package/dist/prices/main-prices/fetchOracleData.js +0 -348
- package/dist/prices/main-prices/index.js +0 -1
- package/dist/types/apiReturnType.js +0 -1
- package/dist/types/index.js +0 -10
- package/dist/types/providers.js +0 -1
- package/dist/utils/constants.js +0 -97
- package/dist/utils/index.js +0 -106
- package/dist/utils/multicall.js +0 -30
- package/dist/utils/parsing.js +0 -66
- package/dist/yields/index.js +0 -164
- package/src/abis/aave/AToken.ts +0 -686
- package/src/abis/aave/AaveOracle.ts +0 -66
- package/src/abis/aave/AavePoolAndDataProvider.ts +0 -2080
- package/src/abis/aave/AavePoolV3.ts +0 -1060
- package/src/abis/aave/AavePoolV3Upgraded.ts +0 -1474
- package/src/abis/aave/AaveV3ProtocolDataProvider.ts +0 -553
- package/src/abis/aave/VariableDebtToken.ts +0 -820
- package/src/abis/aave-v2/ProtocolDataProvider.ts +0 -312
- package/src/abis/aave-v2/YLDR.ts +0 -199
- package/src/abis/aave-v3/AavePoolDataProviderLegacy.ts +0 -459
- package/src/abis/aave-v3/AavePoolLegacy.ts +0 -1060
- package/src/abis/aave-v3/YLDR.ts +0 -46
- package/src/abis/aurelius/Rewarder.ts +0 -118
- package/src/abis/compound-v2/CompoundLens.ts +0 -851
- package/src/abis/compound-v2/Comptroller.ts +0 -2104
- package/src/abis/compound-v3/Comet.ts +0 -1829
- package/src/abis/compound-v3/CometExt.ts +0 -536
- package/src/abis/compound-v3/CometLens.ts +0 -194
- package/src/abis/compound-v3/CometRewards.ts +0 -330
- package/src/abis/compound-v3/IrGetter.ts +0 -31
- package/src/abis/flashloan-united/flashAbi.ts +0 -72
- package/src/abis/init/Core.ts +0 -681
- package/src/abis/init/InitFlashAggregator.ts +0 -795
- package/src/abis/init/InitLens.ts +0 -203
- package/src/abis/init/PosManager.ts +0 -1055
- package/src/abis/lendle/IncentivesController.ts +0 -525
- package/src/abis/lendle/MultiFeeDistribution.ts +0 -820
- package/src/abis/meridian/PullRewardsIncentivesController.ts +0 -98
- package/src/abis/morpho/blue.ts +0 -99
- package/src/abis/morpho/lens.ts +0 -31
- package/src/abis/multicall/Multicall.ts +0 -101
- package/src/abis/oracle/AaveOracle.ts +0 -66
- package/src/abis/oracle/Api3Oracle.ts +0 -62
- package/src/abis/oracle/ChainLinkAggregator.ts +0 -480
- package/src/abis/oracle/RWADynamicOracle.ts +0 -15
- package/src/abis/oracle/UniswapV2Pair.ts +0 -659
- package/src/abis/uniswap/FeeOnTransferDetector.ts +0 -133
- package/src/abis/uniswap/UniswapV2Pair.ts +0 -659
- package/src/assets/index.ts +0 -101
- package/src/assets/liquidityThresholds.ts +0 -83
- package/src/flash-liquidity/assets.ts +0 -61
- package/src/flash-liquidity/fetchLiquidity.ts +0 -300
- package/src/flash-liquidity/index.ts +0 -2
- package/src/flash-liquidity/types.ts +0 -20
- package/src/flash-liquidity/utils.ts +0 -22
- package/src/index.ts +0 -7
- package/src/lending/aave-v2-type/misc.ts +0 -9
- package/src/lending/aave-v2-type/publicCallBuild.ts +0 -105
- package/src/lending/aave-v2-type/publicCallParse.ts +0 -305
- package/src/lending/aave-v2-type/types.ts +0 -100
- package/src/lending/aave-v3-type/publicCallBuild.ts +0 -148
- package/src/lending/aave-v3-type/publicCallParse.ts +0 -378
- package/src/lending/aave-v3-type/types.ts +0 -191
- package/src/lending/addresses/aave.ts +0 -12
- package/src/lending/addresses/aaveV2.ts +0 -8
- package/src/lending/addresses/aurelius.ts +0 -13
- package/src/lending/addresses/compoundV3.ts +0 -56
- package/src/lending/addresses/contracts.ts +0 -54
- package/src/lending/addresses/hana.ts +0 -7
- package/src/lending/addresses/index.ts +0 -1
- package/src/lending/addresses/init.ts +0 -37
- package/src/lending/addresses/lendle.ts +0 -13
- package/src/lending/addresses/meridian.ts +0 -13
- package/src/lending/addresses/takotako.ts +0 -14
- package/src/lending/compound-v3/publicCallBuild.ts +0 -74
- package/src/lending/compound-v3/publicCallParse.ts +0 -202
- package/src/lending/compound-v3/types.ts +0 -45
- package/src/lending/fetchLender.ts +0 -181
- package/src/lending/fetchLenderAll.ts +0 -30
- package/src/lending/fetchLenderExt.ts +0 -82
- package/src/lending/index.ts +0 -5
- package/src/lending/init/publicCallBuild.ts +0 -29
- package/src/lending/init/publicCallParse.ts +0 -93
- package/src/lending/init/types.ts +0 -53
- package/src/lending/morpho/convertPublic.ts +0 -153
- package/src/lending/morpho/fetchPublic.ts +0 -80
- package/src/lending/morpho/publicCallBuild.ts +0 -11
- package/src/lending/morpho/types.ts +0 -129
- package/src/lending/types/index.ts +0 -16
- package/src/lending/user-data/aave-v2-type/userCallBuild.ts +0 -118
- package/src/lending/user-data/aave-v2-type/userCallParse.ts +0 -343
- package/src/lending/user-data/aave-v3-type/userCallBuild.ts +0 -42
- package/src/lending/user-data/aave-v3-type/userCallParse.ts +0 -126
- package/src/lending/user-data/aave-v3-type/userCallParseYldr.ts +0 -124
- package/src/lending/user-data/abis.ts +0 -53
- package/src/lending/user-data/compound-v3/addresses.ts +0 -59
- package/src/lending/user-data/compound-v3/index.ts +0 -3
- package/src/lending/user-data/compound-v3/userCallBuild.ts +0 -53
- package/src/lending/user-data/compound-v3/userCallParse.ts +0 -126
- package/src/lending/user-data/fetchUserData.ts +0 -205
- package/src/lending/user-data/index.ts +0 -2
- package/src/lending/user-data/init/userCallBuild.ts +0 -26
- package/src/lending/user-data/init/userCallParse.ts +0 -115
- package/src/lending/user-data/morpho/decoder.ts +0 -71
- package/src/lending/user-data/morpho/morphoLib.ts +0 -61
- package/src/lending/user-data/morpho/types.ts +0 -12
- package/src/lending/user-data/morpho/userCallBuild.ts +0 -63
- package/src/lending/user-data/morpho/userCallParse.ts +0 -150
- package/src/lending/user-data/morpho/userCallParseNoDeploy.ts +0 -168
- package/src/lending/user-data/types.ts +0 -300
- package/src/lending/user-data/utils/createGeneralUserState.ts +0 -142
- package/src/lending/user-data/utils/createMultiAccountStyleUserState.ts +0 -113
- package/src/lending/user-data/utils/formatting/generalFormatters.ts +0 -121
- package/src/lending/user-data/utils/formatting/index.ts +0 -1
- package/src/lending/user-data/utils/index.ts +0 -19
- package/src/lending-pairs/computeLendingPairs.ts +0 -445
- package/src/lending-pairs/index.ts +0 -1
- package/src/prices/defillama/index.ts +0 -306
- package/src/prices/index.ts +0 -2
- package/src/prices/main-prices/addresses/aaveOracles.ts +0 -278
- package/src/prices/main-prices/addresses/api3.ts +0 -10
- package/src/prices/main-prices/addresses/chainlink.ts +0 -750
- package/src/prices/main-prices/fetchOracleData.ts +0 -496
- package/src/prices/main-prices/index.ts +0 -1
- package/src/types/apiReturnType.ts +0 -80
- package/src/types/index.ts +0 -38
- package/src/types/providers.ts +0 -26
- package/src/utils/constants.ts +0 -100
- package/src/utils/index.ts +0 -139
- package/src/utils/multicall.ts +0 -53
- package/src/utils/parsing.ts +0 -80
- package/src/yields/index.ts +0 -207
- package/test/index.test.ts +0 -112
- package/test/lenderData.test.ts +0 -13320
- package/test/mainPrices.test.ts +0 -23
- package/test/morpho.test.ts +0 -20
- package/test/userDataMorpho.test.ts +0 -79
- package/test/userdata.test.ts +0 -261
- package/test/utils.ts +0 -13
- package/tsconfig.json +0 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/abis/aave-v2/ProtocolDataProvider.ts","../src/abis/lendle/IncentivesController.ts","../src/abis/aurelius/Rewarder.ts","../src/abis/oracle/UniswapV2Pair.ts","../src/abis/aave/AavePoolV3Upgraded.ts","../src/abis/aave/AaveV3ProtocolDataProvider.ts","../src/abis/init/InitLens.ts","../src/abis/compound-v3/Comet.ts","../src/abis/compound-v3/CometExt.ts","../src/abis/compound-v3/IrGetter.ts","../../data-sdk/dist/index.mjs","../src/utils/index.ts","../src/assets/index.ts","../src/lending/aave-v2-type/publicCallBuild.ts","../../chain-registry/dist/index.mjs","../src/lending/aave-v3-type/publicCallBuild.ts","../src/lending/addresses/init.ts","../src/lending/init/publicCallBuild.ts","../src/lending/addresses/compoundV3.ts","../src/lending/compound-v3/publicCallBuild.ts","../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/errors/unit.ts","../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/utils/unit/parseUnits.ts","../../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/constants/address.ts","../src/utils/parsing.ts","../src/lending/aave-v2-type/publicCallParse.ts","../src/lending/aave-v3-type/publicCallParse.ts","../src/lending/init/publicCallParse.ts","../src/lending/compound-v3/publicCallParse.ts","../src/abis/aave-v3/AavePoolLegacy.ts","../src/abis/aave-v3/AavePoolDataProviderLegacy.ts","../src/abis/aave-v2/YLDR.ts","../src/lending/user-data/morpho/userCallBuild.ts","../src/lending/user-data/utils/formatting/generalFormatters.ts","../src/lending/user-data/utils/createGeneralUserState.ts","../src/lending/user-data/utils/createMultiAccountStyleUserState.ts","../src/lending/user-data/utils/index.ts","../src/lending/morpho/utils/parsers.ts","../src/lending/morpho/convertPublic.ts","../src/lending/morpho/fetchPublic.ts","../src/lending/morpho/utils/evmParser.ts","../src/lending/lista/publicCallBuild.ts","../src/lending/morpho/publicCallBuild.ts","../src/lending/morpho/utils/mathLib.ts","../src/lending/morpho/getMarketsFromChain.ts","../src/lending/lista/getMarketsFromChain.ts","../src/abis/morpho/lens.ts","../src/lending/addresses/compoundV2.ts","../src/abis/compound-v2/VenusLensLegacy.ts","../src/lending/compound-v2/publicCallBuild.ts","../src/lending/compound-v2/getters/types.ts","../src/lending/compound-v2/getters/venus.ts","../src/lending/compound-v2/getters/moonwell.ts","../src/lending/compound-v2/publicCallParse.ts","../src/abis/compound-v2/VenusLens.ts","../src/lending/fetchLender.ts","../src/lending/fetchLenderExt.ts","../src/lending/fetchLenderAll.ts","../src/utils/multicall.ts","../src/types/lenderTypes.ts","../src/lending/user-data/aave-v2-type/userCallBuild.ts","../src/lending/user-data/aave-v3-type/userCallBuild.ts","../src/lending/user-data/init/userCallBuild.ts","../src/lending/user-data/compound-v3/userCallBuild.ts","../src/abis/aave/AavePoolAndDataProvider.ts","../src/abis/aave/VariableDebtToken.ts","../src/abis/lendle/MultiFeeDistribution.ts","../src/abis/meridian/PullRewardsIncentivesController.ts","../src/abis/compound-v3/CometRewards.ts","../src/abis/aave-v3/YLDR.ts","../src/abis/morpho/blue.ts","../src/abis/compound-v2/Comptroller.ts","../src/abis/compound-v2/CollateralToken.ts","../src/lending/user-data/abis.ts","../src/lending/user-data/aave-v2-type/userCallParse.ts","../src/lending/user-data/aave-v3-type/userCallParse.ts","../src/lending/user-data/init/userCallParse.ts","../src/lending/user-data/compound-v3/userCallParse.ts","../src/lending/user-data/aave-v3-type/userCallParseYldr.ts","../src/lending/user-data/morpho/decoder.ts","../src/lending/user-data/morpho/userCallParse.ts","../src/lending/user-data/compound-v2/userCallBuild.ts","../src/lending/user-data/compound-v2/userCallParse.ts","../src/lending-pools/computeLendingPools.ts","../src/lending-pools/computeLenderDataFromPools.ts","../src/lending/user-data/fetchUserData.ts","../src/lending/meta/index.ts","../src/assets/liquidityThresholds.ts","../src/lending-pairs/computeLendingPairs.ts","../src/prices/pendle/fetchPendlePrices.ts","../src/yields/yieldTypes.ts","../src/yields/index.ts","../src/prices/defillama/index.ts","../src/abis/oracle/AaveOracle.ts","../src/abis/oracle/ChainLinkAggregator.ts","../src/abis/oracle/Api3Oracle.ts","../src/abis/oracle/RWADynamicOracle.ts","../src/prices/main-prices/addresses/api3.ts","../src/prices/main-prices/addresses/chainlink.ts","../src/abis/oracle/ProxyOracle.ts","../src/abis/oracle/UniV3.ts","../src/prices/main-prices/fetchOracleData.ts","../src/flash-liquidity/assets.ts","../src/abis/flashloan-united/flashAbi.ts","../src/utils/constants.ts","../src/flash-liquidity/fetchLiquidity.ts","../src/flash-liquidity/utils.ts"],"names":["chains","data","_","Lender","decimals","lodash","SECONDS_PER_YEAR","apyToApr","balanceData","aprData","MathLib","linearAdaptation","CAction","multicallRetry","getEvmClient","getAbi","depositsRaw","deposits","createAaveV3Entry","query","aavePools","aaveOracles","morphoTypeOracles","compoundV2Pools","compoundV3Pools","morphoPools","morphoTypeMarkets","aaveReserves","compoundV2Reserves","compoundV3Reserves","initConfig","aaveTokens","LENDER_MODE_NO_MODE","cf","getPriceKey","kHYPE","AAVE_V2_LENDERS","uniq","field","AAVE_V3_LENDERS"],"mappings":"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","file":"index.js","sourcesContent":["export const ProtocolDataProviderAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getConfiguration',\n outputs: [\n {\n components: [\n {\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n type: 'constructor',\n inputs: [\n {\n type: 'address',\n name: 'addressesProvider',\n internalType: 'contract ILendingPoolAddressesProvider',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'contract ILendingPoolAddressesProvider',\n },\n ],\n name: 'ADDRESSES_PROVIDER',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'tuple[]',\n name: '',\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n components: [\n {\n type: 'string',\n },\n {\n type: 'address',\n },\n ],\n },\n ],\n name: 'getAllATokens',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'tuple[]',\n name: '',\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n components: [\n {\n type: 'string',\n },\n {\n type: 'address',\n },\n ],\n },\n ],\n name: 'getAllReservesTokens',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'decimals',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'ltv',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidationThreshold',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidationBonus',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'reserveFactor',\n internalType: 'uint256',\n },\n {\n type: 'bool',\n name: 'usageAsCollateralEnabled',\n internalType: 'bool',\n },\n {\n type: 'bool',\n name: 'borrowingEnabled',\n internalType: 'bool',\n },\n {\n type: 'bool',\n name: 'stableBorrowRateEnabled',\n internalType: 'bool',\n },\n {\n type: 'bool',\n name: 'isActive',\n internalType: 'bool',\n },\n {\n type: 'bool',\n name: 'isFrozen',\n internalType: 'bool',\n },\n ],\n name: 'getReserveConfigurationData',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'availableLiquidity',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'totalStableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'totalVariableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidityRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'variableBorrowRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'stableBorrowRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'averageStableBorrowRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidityIndex',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'variableBorrowIndex',\n internalType: 'uint256',\n },\n {\n type: 'uint40',\n name: 'lastUpdateTimestamp',\n internalType: 'uint40',\n },\n ],\n name: 'getReserveData',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: 'aTokenAddress',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'stableDebtTokenAddress',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'variableDebtTokenAddress',\n internalType: 'address',\n },\n ],\n name: 'getReserveTokensAddresses',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'currentATokenBalance',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'currentStableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'currentVariableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'principalStableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'scaledVariableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'stableBorrowRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidityRate',\n internalType: 'uint256',\n },\n {\n type: 'uint40',\n name: 'stableRateLastUpdated',\n internalType: 'uint40',\n },\n {\n type: 'bool',\n name: 'usageAsCollateralEnabled',\n internalType: 'bool',\n },\n ],\n name: 'getUserReserveData',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n] as const\n","export const IncentivesControllerAbi = [\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'VERSION',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'addPool',\n inputs: [\n {\n type: 'address',\n name: '_token',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: '_allocPoint',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'batchUpdateAllocPoint',\n inputs: [\n {\n type: 'address[]',\n name: '_tokens',\n internalType: 'address[]',\n },\n {\n type: 'uint256[]',\n name: '_allocPoints',\n internalType: 'uint256[]',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'claim',\n inputs: [\n {\n type: 'address',\n name: '_user',\n internalType: 'address',\n },\n {\n type: 'address[]',\n name: '_tokens',\n internalType: 'address[]',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'claimReceiver',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256[]',\n name: '',\n internalType: 'uint256[]',\n },\n ],\n name: 'claimableReward',\n inputs: [\n {\n type: 'address',\n name: '_user',\n internalType: 'address',\n },\n {\n type: 'address[]',\n name: '_tokens',\n internalType: 'address[]',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint128',\n name: 'startTimeOffset',\n internalType: 'uint128',\n },\n {\n type: 'uint128',\n name: 'rewardsPerSecond',\n internalType: 'uint128',\n },\n ],\n name: 'emissionSchedule',\n inputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'handleAction',\n inputs: [\n {\n type: 'address',\n name: '_user',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: '_balance',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: '_totalSupply',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'initialize',\n inputs: [\n {\n type: 'address',\n name: 'owner',\n internalType: 'address',\n },\n {\n type: 'uint128[]',\n name: '_startTimeOffset',\n internalType: 'uint128[]',\n },\n {\n type: 'uint128[]',\n name: '_rewardsPerSecond',\n internalType: 'uint128[]',\n },\n {\n type: 'address',\n name: '_poolConfigurator',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '_rewardMinter',\n internalType: 'contract IMultiFeeDistribution',\n },\n {\n type: 'uint256',\n name: '_maxMintable',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: '_startTime',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'maxMintableTokens',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'mintedTokens',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'owner',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'poolConfigurator',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'totalSupply',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'allocPoint',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'lastRewardTime',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'accRewardPerShare',\n internalType: 'uint256',\n },\n {\n type: 'address',\n name: 'onwardIncentives',\n internalType: 'contract IOnwardIncentivesController',\n },\n ],\n name: 'poolInfo',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'poolLength',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'registeredTokens',\n inputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'renounceOwnership',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'contract IMultiFeeDistribution',\n },\n ],\n name: 'rewardMinter',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'rewardsPerSecond',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'setClaimReceiver',\n inputs: [\n {\n type: 'address',\n name: '_user',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '_receiver',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'setOnwardIncentives',\n inputs: [\n {\n type: 'address',\n name: '_token',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '_incentives',\n internalType: 'contract IOnwardIncentivesController',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'startTime',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'totalAllocPoint',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'transferOwnership',\n inputs: [\n {\n type: 'address',\n name: 'newOwner',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'userBaseClaimable',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'rewardDebt',\n internalType: 'uint256',\n },\n ],\n name: 'userInfo',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'event',\n name: 'BalanceUpdated',\n inputs: [\n {\n type: 'address',\n name: 'token',\n indexed: true,\n },\n {\n type: 'address',\n name: 'user',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'balance',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'totalSupply',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n type: 'address',\n name: 'previousOwner',\n indexed: true,\n },\n {\n type: 'address',\n name: 'newOwner',\n indexed: true,\n },\n ],\n anonymous: false,\n },\n] as const\n","export const RewarderAbi = [\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getAllUserRewardsBalance',\n outputs: [\n {\n internalType: 'address[]',\n name: 'rewardTokens',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'unclaimedAmounts',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'reward',\n type: 'address',\n },\n ],\n name: 'getUserUnclaimedRewardsFromStorage',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n ],\n name: 'claimAllRewardsToSelf',\n outputs: [\n {\n internalType: 'address[]',\n name: 'rewardTokens',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'claimedAmounts',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'reward',\n type: 'address',\n },\n ],\n name: 'getRewardsData',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapV2PairAbi = [\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'bytes32',\n name: '',\n internalType: 'bytes32',\n },\n ],\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'MINIMUM_LIQUIDITY',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'bytes32',\n name: '',\n internalType: 'bytes32',\n },\n ],\n name: 'PERMIT_TYPEHASH',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'allowance',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'approve',\n inputs: [\n {\n type: 'address',\n name: 'spender',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'value',\n internalType: 'uint256',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'balanceOf',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [\n {\n type: 'uint256',\n name: 'amount0',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'amount1',\n internalType: 'uint256',\n },\n ],\n name: 'burn',\n inputs: [\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint8',\n name: '',\n internalType: 'uint8',\n },\n ],\n name: 'decimals',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'factory',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint112',\n name: '_reserve0',\n internalType: 'uint112',\n },\n {\n type: 'uint112',\n name: '_reserve1',\n internalType: 'uint112',\n },\n {\n type: 'uint32',\n name: '_blockTimestampLast',\n internalType: 'uint32',\n },\n ],\n name: 'getReserves',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'initialize',\n inputs: [\n {\n type: 'address',\n name: '_token0',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '_token1',\n internalType: 'address',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'kLast',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [\n {\n type: 'uint256',\n name: 'liquidity',\n internalType: 'uint256',\n },\n ],\n name: 'mint',\n inputs: [\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'string',\n name: '',\n internalType: 'string',\n },\n ],\n name: 'name',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'nonces',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'permit',\n inputs: [\n {\n type: 'address',\n name: 'owner',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'spender',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'value',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'deadline',\n internalType: 'uint256',\n },\n {\n type: 'uint8',\n name: 'v',\n internalType: 'uint8',\n },\n {\n type: 'bytes32',\n name: 'r',\n internalType: 'bytes32',\n },\n {\n type: 'bytes32',\n name: 's',\n internalType: 'bytes32',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'price0CumulativeLast',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'price1CumulativeLast',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'skim',\n inputs: [\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'swap',\n inputs: [\n {\n type: 'uint256',\n name: 'amount0Out',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'amount1Out',\n internalType: 'uint256',\n },\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n {\n type: 'bytes',\n name: 'data',\n internalType: 'bytes',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'string',\n name: '',\n internalType: 'string',\n },\n ],\n name: 'symbol',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'sync',\n inputs: [],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'token0',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'token1',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'totalSupply',\n inputs: [],\n constant: true,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'transfer',\n inputs: [\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'value',\n internalType: 'uint256',\n },\n ],\n constant: false,\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'transferFrom',\n inputs: [\n {\n type: 'address',\n name: 'from',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'to',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'value',\n internalType: 'uint256',\n },\n ],\n constant: false,\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n type: 'address',\n name: 'owner',\n indexed: true,\n },\n {\n type: 'address',\n name: 'spender',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'value',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Burn',\n inputs: [\n {\n type: 'address',\n name: 'sender',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'amount0',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount1',\n indexed: false,\n },\n {\n type: 'address',\n name: 'to',\n indexed: true,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n {\n type: 'address',\n name: 'sender',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'amount0',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount1',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Swap',\n inputs: [\n {\n type: 'address',\n name: 'sender',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'amount0In',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount1In',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount0Out',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount1Out',\n indexed: false,\n },\n {\n type: 'address',\n name: 'to',\n indexed: true,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Sync',\n inputs: [\n {\n type: 'uint112',\n name: 'reserve0',\n indexed: false,\n },\n {\n type: 'uint112',\n name: 'reserve1',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n type: 'address',\n name: 'from',\n indexed: true,\n },\n {\n type: 'address',\n name: 'to',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'value',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n] as const\n","export const AavePoolV3UpgradedAbi = [\n {\n inputs: [],\n name: 'ADDRESSES_PROVIDER',\n outputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'BRIDGE_PROTOCOL_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TOTAL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TO_PROTOCOL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_NUMBER_RESERVES',\n outputs: [\n {\n internalType: 'uint16',\n name: '',\n type: 'uint16',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'POOL_REVISION',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'fee',\n type: 'uint256',\n },\n ],\n name: 'backUnbacked',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'borrow',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategoryBaseConfiguration',\n name: 'category',\n type: 'tuple',\n },\n ],\n name: 'configureEModeCategory',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n {\n internalType: 'uint128',\n name: 'borrowableBitmap',\n type: 'uint128',\n },\n ],\n name: 'configureEModeCategoryBorrowableBitmap',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n {\n internalType: 'uint128',\n name: 'collateralBitmap',\n type: 'uint128',\n },\n ],\n name: 'configureEModeCategoryCollateralBitmap',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'dropReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceFromBefore',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceToBefore',\n type: 'uint256',\n },\n ],\n name: 'finalizeTransfer',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: 'interestRateModes',\n type: 'uint256[]',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoan',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoanSimple',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getBorrowLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getBridgeLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryBorrowableBitmap',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryCollateralBitmap',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryCollateralConfig',\n outputs: [\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n ],\n internalType: 'struct DataTypes.CollateralConfig',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryData',\n outputs: [\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'priceSource',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategoryLegacy',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryLabel',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getEModeLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getFlashLoanLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getLiquidationGracePeriod',\n outputs: [\n {\n internalType: 'uint40',\n name: '',\n type: 'uint40',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getLiquidationLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getPoolLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'id',\n type: 'uint16',\n },\n ],\n name: 'getReserveAddressById',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveDataExtended',\n outputs: [\n {\n components: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: 'configuration',\n type: 'tuple',\n },\n {\n internalType: 'uint128',\n name: 'liquidityIndex',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'currentLiquidityRate',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'variableBorrowIndex',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'currentVariableBorrowRate',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '__deprecatedStableBorrowRate',\n type: 'uint128',\n },\n {\n internalType: 'uint40',\n name: 'lastUpdateTimestamp',\n type: 'uint40',\n },\n {\n internalType: 'uint16',\n name: 'id',\n type: 'uint16',\n },\n {\n internalType: 'uint40',\n name: 'liquidationGracePeriodUntil',\n type: 'uint40',\n },\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '__deprecatedStableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'interestRateStrategyAddress',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'accruedToTreasury',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'unbacked',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'isolationModeTotalDebt',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'virtualUnderlyingBalance',\n type: 'uint128',\n },\n ],\n internalType: 'struct DataTypes.ReserveData',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedIncome',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedVariableDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getReservesCount',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getReservesList',\n outputs: [\n {\n internalType: 'address[]',\n name: '',\n type: 'address[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getSupplyLogic',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserAccountData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'totalCollateralBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalDebtBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'availableBorrowsBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentLiquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'healthFactor',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.UserConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserEMode',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getVirtualUnderlyingBalance',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'interestRateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'initReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: 'provider',\n type: 'address',\n },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'collateralAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'debtAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'debtToCover',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'receiveAToken',\n type: 'bool',\n },\n ],\n name: 'liquidationCall',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n ],\n name: 'mintToTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'mintUnbacked',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'repay',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n ],\n name: 'repayWithATokens',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'repayWithPermit',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'rescueTokens',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'resetIsolationModeTotalDebt',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: 'configuration',\n type: 'tuple',\n },\n ],\n name: 'setConfiguration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint40',\n name: 'until',\n type: 'uint40',\n },\n ],\n name: 'setLiquidationGracePeriod',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'rateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'setReserveInterestRateStrategyAddress',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'categoryId',\n type: 'uint8',\n },\n ],\n name: 'setUserEMode',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'useAsCollateral',\n type: 'bool',\n },\n ],\n name: 'setUserUseReserveAsCollateral',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'supply',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'supplyWithPermit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'syncIndexesState',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'syncRatesState',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'protocolFee',\n type: 'uint256',\n },\n ],\n name: 'updateBridgeProtocolFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumTotal',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumToProtocol',\n type: 'uint128',\n },\n ],\n name: 'updateFlashloanPremiums',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const AaveV3ProtocolDataProviderAbi = [\n {\n inputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: 'addressesProvider',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [],\n name: 'ADDRESSES_PROVIDER',\n outputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getATokenTotalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllATokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct IPoolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllReservesTokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct IPoolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getDebtCeiling',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getDebtCeilingDecimals',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getFlashLoanEnabled',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getInterestRateStrategyAddress',\n outputs: [\n {\n internalType: 'address',\n name: 'irStrategyAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getIsVirtualAccActive',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getLiquidationProtocolFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getPaused',\n outputs: [\n {\n internalType: 'bool',\n name: 'isPaused',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveCaps',\n outputs: [\n {\n internalType: 'uint256',\n name: 'borrowCap',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyCap',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveConfigurationData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'decimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationBonus',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactor',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'borrowingEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'stableBorrowRateEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isActive',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isFrozen',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'unbacked',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'accruedToTreasuryScaled',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalAToken',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'variableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'averageStableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityIndex',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'variableBorrowIndex',\n type: 'uint256',\n },\n {\n internalType: 'uint40',\n name: 'lastUpdateTimestamp',\n type: 'uint40',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveTokensAddresses',\n outputs: [\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getSiloedBorrowing',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getTotalDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getUnbackedMintCap',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'currentATokenBalance',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'principalStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'scaledVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint40',\n name: 'stableRateLastUpdated',\n type: 'uint40',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getVirtualUnderlyingBalance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const InitLensAbi = [\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'mode',\n type: 'uint16',\n },\n ],\n name: 'getMarketData',\n outputs: [\n {\n components: [\n {\n internalType: 'uint16',\n name: 'mode',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'underlying',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'collateralFactor',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowFactor',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'maxHealthAfterLiq',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'supplyCap',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'borrowCap',\n type: 'uint128',\n },\n {\n internalType: 'bool',\n name: 'canMint',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'canBurn',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'canBorrow',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'canRepay',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'canFlash',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'totalSupply',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRate',\n type: 'uint256',\n },\n ],\n internalType: 'struct MarketData[]',\n name: 'data',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'viewer',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n ],\n name: 'getUserPositionData',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'posId',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'mode',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'approved',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isApprovedForAll',\n type: 'bool',\n },\n ],\n internalType: 'struct PosMeta[]',\n name: 'posMeta',\n type: 'tuple[]',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'underlying',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n internalType: 'struct PosData[][]',\n name: 'collaterals',\n type: 'tuple[][]',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'underlying',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n internalType: 'struct PosData[][]',\n name: 'debts',\n type: 'tuple[][]',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const CometAbi = [\n {\n stateMutability: 'payable',\n type: 'fallback',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'absorber',\n type: 'address',\n },\n {\n internalType: 'address[]',\n name: 'accounts',\n type: 'address[]',\n },\n ],\n name: 'absorb',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'accrueAccount',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approveThis',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseBorrowMin',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseMinForRewards',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseScale',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseToken',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseTokenPriceFeed',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseTrackingBorrowSpeed',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseTrackingSupplySpeed',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'borrowBalanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'borrowKink',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'borrowPerSecondInterestRateBase',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'borrowPerSecondInterestRateSlopeHigh',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'borrowPerSecondInterestRateSlopeLow',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'minAmount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'baseAmount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n ],\n name: 'buyCollateral',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'extensionDelegate',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'i',\n type: 'uint8',\n },\n ],\n name: 'getAssetInfo',\n outputs: [\n {\n components: [\n {\n internalType: 'uint8',\n name: 'offset',\n type: 'uint8',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'priceFeed',\n type: 'address',\n },\n {\n internalType: 'uint64',\n name: 'scale',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'borrowCollateralFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'liquidateCollateralFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'liquidationFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint128',\n name: 'supplyCap',\n type: 'uint128',\n },\n ],\n internalType: 'struct CometCore.AssetInfo',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getAssetInfoByAddress',\n outputs: [\n {\n components: [\n {\n internalType: 'uint8',\n name: 'offset',\n type: 'uint8',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'priceFeed',\n type: 'address',\n },\n {\n internalType: 'uint64',\n name: 'scale',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'borrowCollateralFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'liquidateCollateralFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'liquidationFactor',\n type: 'uint64',\n },\n {\n internalType: 'uint128',\n name: 'supplyCap',\n type: 'uint128',\n },\n ],\n internalType: 'struct CometCore.AssetInfo',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'utilization',\n type: 'uint256',\n },\n ],\n name: 'getBorrowRate',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getCollateralReserves',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'priceFeed',\n type: 'address',\n },\n ],\n name: 'getPrice',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getReserves',\n outputs: [\n {\n internalType: 'int256',\n name: '',\n type: 'int256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'utilization',\n type: 'uint256',\n },\n ],\n name: 'getSupplyRate',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getUtilization',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'governor',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n ],\n name: 'hasPermission',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initializeStorage',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isAbsorbPaused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'isAllowed',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'isBorrowCollateralized',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isBuyPaused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'isLiquidatable',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isSupplyPaused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isTransferPaused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isWithdrawPaused',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'liquidatorPoints',\n outputs: [\n {\n internalType: 'uint32',\n name: 'numAbsorbs',\n type: 'uint32',\n },\n {\n internalType: 'uint64',\n name: 'numAbsorbed',\n type: 'uint64',\n },\n {\n internalType: 'uint128',\n name: 'approxSpend',\n type: 'uint128',\n },\n {\n internalType: 'uint32',\n name: '_reserved',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'numAssets',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bool',\n name: 'supplyPaused',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'transferPaused',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'withdrawPaused',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'absorbPaused',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'buyPaused',\n type: 'bool',\n },\n ],\n name: 'pause',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'pauseGuardian',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'baseAmount',\n type: 'uint256',\n },\n ],\n name: 'quoteCollateral',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'storeFrontPriceFactor',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'supply',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'supplyFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'supplyKink',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'supplyPerSecondInterestRateBase',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'supplyPerSecondInterestRateSlopeHigh',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'supplyPerSecondInterestRateSlopeLow',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'supplyTo',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'targetReserves',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalBorrow',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'totalsCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'totalSupplyAsset',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'trackingIndexScale',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferAsset',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferAssetFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'dst',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userBasic',\n outputs: [\n {\n internalType: 'int104',\n name: 'principal',\n type: 'int104',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingAccrued',\n type: 'uint64',\n },\n {\n internalType: 'uint16',\n name: 'assetsIn',\n type: 'uint16',\n },\n {\n internalType: 'uint8',\n name: '_reserved',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'balance',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userNonce',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'withdraw',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'withdrawFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'withdrawReserves',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'withdrawTo',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isAllowed_',\n type: 'bool',\n },\n ],\n name: 'allow',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isAllowed_',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'allowBySig',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseAccrualScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseIndexScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'baseTrackingAccrued',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'collateralBalanceOf',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'factorScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n ],\n name: 'hasPermission',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'isAllowed',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'liquidatorPoints',\n outputs: [\n {\n internalType: 'uint32',\n name: 'numAbsorbs',\n type: 'uint32',\n },\n {\n internalType: 'uint64',\n name: 'numAbsorbed',\n type: 'uint64',\n },\n {\n internalType: 'uint128',\n name: 'approxSpend',\n type: 'uint128',\n },\n {\n internalType: 'uint32',\n name: '_reserved',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'maxAssets',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'priceScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalsBasic',\n outputs: [\n {\n components: [\n {\n internalType: 'uint64',\n name: 'baseSupplyIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'baseBorrowIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'trackingSupplyIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'trackingBorrowIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint104',\n name: 'totalSupplyBase',\n type: 'uint104',\n },\n {\n internalType: 'uint104',\n name: 'totalBorrowBase',\n type: 'uint104',\n },\n {\n internalType: 'uint40',\n name: 'lastAccrualTime',\n type: 'uint40',\n },\n {\n internalType: 'uint8',\n name: 'pauseFlags',\n type: 'uint8',\n },\n ],\n internalType: 'struct CometStorage.TotalsBasic',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'totalsCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'totalSupplyAsset',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userBasic',\n outputs: [\n {\n internalType: 'int104',\n name: 'principal',\n type: 'int104',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingAccrued',\n type: 'uint64',\n },\n {\n internalType: 'uint16',\n name: 'assetsIn',\n type: 'uint16',\n },\n {\n internalType: 'uint8',\n name: '_reserved',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'balance',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userNonce',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'version',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const CometExtAbi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isAllowed_',\n type: 'bool',\n },\n ],\n name: 'allow',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isAllowed_',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'allowBySig',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseAccrualScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseIndexScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'baseTrackingAccrued',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'collateralBalanceOf',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'factorScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'manager',\n type: 'address',\n },\n ],\n name: 'hasPermission',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'isAllowed',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'liquidatorPoints',\n outputs: [\n {\n internalType: 'uint32',\n name: 'numAbsorbs',\n type: 'uint32',\n },\n {\n internalType: 'uint64',\n name: 'numAbsorbed',\n type: 'uint64',\n },\n {\n internalType: 'uint128',\n name: 'approxSpend',\n type: 'uint128',\n },\n {\n internalType: 'uint32',\n name: '_reserved',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'maxAssets',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'priceScale',\n outputs: [\n {\n internalType: 'uint64',\n name: '',\n type: 'uint64',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalsBasic',\n outputs: [\n {\n components: [\n {\n internalType: 'uint64',\n name: 'baseSupplyIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'baseBorrowIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'trackingSupplyIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'trackingBorrowIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint104',\n name: 'totalSupplyBase',\n type: 'uint104',\n },\n {\n internalType: 'uint104',\n name: 'totalBorrowBase',\n type: 'uint104',\n },\n {\n internalType: 'uint40',\n name: 'lastAccrualTime',\n type: 'uint40',\n },\n {\n internalType: 'uint8',\n name: 'pauseFlags',\n type: 'uint8',\n },\n ],\n internalType: 'struct CometStorage.TotalsBasic',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'totalsCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'totalSupplyAsset',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userBasic',\n outputs: [\n {\n internalType: 'int104',\n name: 'principal',\n type: 'int104',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingIndex',\n type: 'uint64',\n },\n {\n internalType: 'uint64',\n name: 'baseTrackingAccrued',\n type: 'uint64',\n },\n {\n internalType: 'uint16',\n name: 'assetsIn',\n type: 'uint16',\n },\n {\n internalType: 'uint8',\n name: '_reserved',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userCollateral',\n outputs: [\n {\n internalType: 'uint128',\n name: 'balance',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: '_reserved',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'userNonce',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'version',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const IrgetterAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'comet',\n type: 'address',\n },\n ],\n name: 'getCometInterest',\n outputs: [\n {\n internalType: 'uint256',\n name: 'borrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'utilization',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","// src/chains.ts\nvar GLOBAL_CHAIN_DATA_KEY = \"__1delta_chain_registry__\";\nglobalThis[GLOBAL_CHAIN_DATA_KEY] = {};\nfunction getGlobalData() {\n return globalThis[GLOBAL_CHAIN_DATA_KEY];\n}\nfunction initializeChainData({ chainsOverride }) {\n if (chainsOverride) globalThis[GLOBAL_CHAIN_DATA_KEY] = chainsOverride;\n}\nvar chains = () => getGlobalData();\n\n// src/lending.ts\nvar GLOBAL_LENDER_DATA_KEY = \"__1delta_lender_registry__\";\nglobalThis[GLOBAL_LENDER_DATA_KEY] = {\n aaveTokens: {},\n aavePools: {},\n compoundV3Pools: {},\n morphoPools: {},\n compoundV3BaseData: {},\n compoundV2Pools: {},\n compoundV2Tokens: {},\n initConfig: {},\n aaveReserves: {},\n compoundV2Reserves: {},\n compoundV3Reserves: {},\n aaveOracles: {},\n morphoOracles: {},\n morphoTypeOracles: {},\n morphoTypeMarkets: {}\n};\nfunction getGlobalData2() {\n return globalThis[GLOBAL_LENDER_DATA_KEY];\n}\nfunction initializeLenderData({\n aaveTokensOverride,\n aavePoolsOverride,\n aaveOraclesOverride,\n compoundV3PoolsOverride,\n compoundV3BaseDataOverride,\n morphoPoolsOverride,\n compoundV2TokensOverride,\n compoundV2PoolsOverride,\n initConfigOverride,\n aaveReservesOverride,\n compoundV3ReservesOverride,\n compoundV2ReservesOverride,\n morphoOraclesOverride,\n morphoTypeOraclesOverride,\n morphoTypeMarketsOverride\n}) {\n const data = getGlobalData2();\n if (aaveTokensOverride) data.aaveTokens = aaveTokensOverride;\n if (aaveOraclesOverride) data.aaveOracles = aaveOraclesOverride;\n if (aavePoolsOverride) data.aavePools = aavePoolsOverride;\n if (compoundV3PoolsOverride) data.compoundV3Pools = compoundV3PoolsOverride;\n if (morphoPoolsOverride) data.morphoPools = morphoPoolsOverride;\n if (compoundV3BaseDataOverride) data.compoundV3BaseData = compoundV3BaseDataOverride;\n if (compoundV2TokensOverride) data.compoundV2Tokens = compoundV2TokensOverride;\n if (compoundV2PoolsOverride) data.compoundV2Pools = compoundV2PoolsOverride;\n if (initConfigOverride) data.initConfig = initConfigOverride;\n if (aaveReservesOverride) data.aaveReserves = aaveReservesOverride;\n if (compoundV3ReservesOverride) data.compoundV3Reserves = compoundV3ReservesOverride;\n if (compoundV2ReservesOverride) data.compoundV2Reserves = compoundV2ReservesOverride;\n if (morphoOraclesOverride) data.morphoOracles = morphoOraclesOverride;\n if (morphoTypeOraclesOverride) data.morphoTypeOracles = morphoTypeOraclesOverride;\n if (morphoTypeMarketsOverride) data.morphoTypeMarkets = morphoTypeMarketsOverride;\n}\nvar aaveTokens = () => getGlobalData2()?.aaveTokens;\nvar aavePools = () => getGlobalData2()?.aavePools;\nvar aaveOracles = () => getGlobalData2()?.aaveOracles;\nvar morphoOracles = () => getGlobalData2()?.morphoOracles;\nvar morphoTypeOracles = () => getGlobalData2()?.morphoTypeOracles;\nvar morphoTypeMarkets = () => getGlobalData2()?.morphoTypeMarkets;\nvar aaveReserves = () => getGlobalData2()?.aaveReserves;\nvar compoundV3Reserves = () => getGlobalData2()?.compoundV3Reserves;\nvar compoundV2Reserves = () => getGlobalData2()?.compoundV2Reserves;\nvar compoundV3Pools = () => getGlobalData2()?.compoundV3Pools;\nvar morphoPools = () => getGlobalData2()?.morphoPools;\nvar compoundV3BaseData = () => getGlobalData2()?.compoundV3BaseData;\nvar compoundV2Pools = () => getGlobalData2()?.compoundV2Pools;\nvar compoundV2Tokens = () => getGlobalData2()?.compoundV2Tokens;\nvar initConfig = () => getGlobalData2()?.initConfig;\n\n// src/tokens.ts\nvar getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;\nasync function fetchTokenList(chainId) {\n const data = await fetch(getListUrl(chainId));\n if (!data.ok) throw new Error(`HTTP error! status: ${data.status}`);\n return (await data.json()).list;\n}\nasync function fetchTokenLists(chainIds) {\n const promises = chainIds.map(async (chainId) => {\n const list = await fetchTokenList(chainId);\n return [chainId, list];\n });\n const results = await Promise.all(promises);\n return Object.fromEntries(results);\n}\n\nexport { aaveOracles, aavePools, aaveReserves, aaveTokens, chains, compoundV2Pools, compoundV2Reserves, compoundV2Tokens, compoundV3BaseData, compoundV3Pools, compoundV3Reserves, fetchTokenList, fetchTokenLists, initConfig, initializeChainData, initializeLenderData, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles };\n","import {\n AAVE_V2_LENDERS,\n AAVE_V3_LENDERS,\n Lender,\n AAVE_V32_LENDERS,\n COMPOUND_V2_LENDERS,\n VENUS_LENDERS,\n} from '@1delta/lender-registry'\nimport {\n aavePools,\n aaveReserves,\n compoundV2Pools,\n compoundV3Pools,\n compoundV3Reserves,\n initConfig,\n morphoPools,\n} from '@1delta/data-sdk'\nimport lodash from 'lodash'\n\n// pull the functions you need\nconst { uniq } = lodash\n\nconst COMPOUND_V3_KEY = 'COMPOUND_V3'\n\nexport function isCompoundV3(lender: string) {\n return lender?.startsWith(COMPOUND_V3_KEY)\n}\n\nexport function isCompoundV3Type(lender: string) {\n return lender?.startsWith(COMPOUND_V3_KEY)\n}\n\nexport function isInit(lender: string) {\n return lender === Lender.INIT\n}\n\nexport function isMorphoType(lender: string) {\n return lender?.startsWith('MORPHO_BLUE') || isLista(lender)\n}\n\nexport function isLista(lender: string) {\n return lender?.startsWith('LISTA_DAO')\n}\n\nexport function isAaveV3Type(lender: string) {\n return AAVE_V3_LENDERS.includes(lender as any)\n}\n\nexport function isAaveV2Type(lender: string) {\n return AAVE_V2_LENDERS.includes(lender as any)\n}\n\nexport function isYLDR(lender: string) {\n return lender === Lender.YLDR\n}\n\nexport function isAaveV32Type(lender: string) {\n return AAVE_V32_LENDERS.includes(lender as any)\n}\n\nexport function isAaveType(lender: string) {\n return [...AAVE_V3_LENDERS, ...AAVE_V2_LENDERS].includes(lender as any)\n}\n\nexport function isCompoundV2Type(lender: string) {\n return COMPOUND_V2_LENDERS.includes(lender as any)\n}\n\nexport function isVenusType(lender: string) {\n return VENUS_LENDERS.includes(lender as any)\n}\n\nconst ENABLED_COMPOUNDS: string[] = [\n Lender.VENUS,\n Lender.VENUS_ETH,\n Lender.MOONWELL,\n Lender.ENCLABS,\n Lender.ENCLABS_LST,\n]\n\nexport const getLendersForChain = (c: string) => {\n let lenders: string[] = []\n // aaves\n Object.entries(aavePools() ?? {}).forEach(([l, data]) => {\n const chains = Object.keys(data)\n if (chains.includes(c)) lenders.push(l)\n })\n\n // compound V3s\n\n if (compoundV3Pools()?.[c])\n lenders = [...lenders, ...Object.keys(compoundV3Pools()?.[c])]\n\n // init\n Object.entries(initConfig() ?? {}).forEach(([l, data]) => {\n const chains = Object.keys(data)\n if (chains.includes(c)) lenders.push(l)\n })\n\n // morpho\n Object.entries(morphoPools() ?? {}).forEach(([l, data]) => {\n const chains = Object.keys(data)\n if (chains.includes(c)) lenders.push(l)\n })\n\n // compound V2\n Object.entries(compoundV2Pools() ?? {}).forEach(([l, data]) => {\n const chains = Object.keys(data)\n if (chains.includes(c) && ENABLED_COMPOUNDS.includes(l)) lenders.push(l)\n })\n\n return lenders\n}\n\n/** Filter lenders by protocol list */\nexport const filterLendersByProtocol = (\n allLenders: string[],\n protocolList?: string[],\n): string[] => {\n // return all lenders if no filter is provided\n if (!protocolList || protocolList.length === 0) {\n return allLenders\n }\n\n const hasMorpho = protocolList.includes(Lender.MORPHO_BLUE)\n const hasMoolah = protocolList.includes(Lender.LISTA_DAO)\n // Filter lenders based on protocol list\n return allLenders.filter(\n (lender) =>\n protocolList.includes(lender) ||\n (hasMorpho && lender?.startsWith('MORPHO_BLUE')) ||\n (hasMoolah && lender?.startsWith('LISTA_DAO')),\n )\n}\n\n/** All aave protocols per chain */\nexport const getAavesForChain = () => {\n let lenders: { [c: string]: string[] } = {}\n Object.entries(aavePools() ?? {}).forEach(([l, data]) => {\n Object.entries(data).forEach(([chain, data]) => {\n if (!lenders[chain]) lenders[chain] = []\n lenders[chain] = uniq([...lenders[chain], l])\n })\n })\n return lenders\n}\n\nexport const getLenderAssets = (\n chainId: string | number | undefined,\n lendingProtocol = Lender.AAVE_V3,\n): string[] => {\n if (!chainId) return []\n if (isAaveType(lendingProtocol))\n return aaveReserves()?.[lendingProtocol]?.[chainId] ?? []\n if (isCompoundV3(lendingProtocol))\n return compoundV3Reserves()?.[lendingProtocol]?.[chainId] ?? []\n return []\n}\n\nexport function isMultiMarket(lender: string) {\n return lender?.startsWith('MORPHO_BLUE') || lender?.startsWith('LISTA_DAO')\n}\n","import { isAaveType, isCompoundV3 } from '../utils'\nimport {\n aaveTokens,\n aavePools,\n aaveReserves,\n compoundV3Reserves,\n} from '@1delta/data-sdk'\n\n/** No specific configuration */\nexport const LENDER_MODE_NO_MODE = 0\n\nexport function getAaveStyleProtocolTokenMap(chainId: string, lender: string) {\n return aaveTokens()?.[lender]?.[chainId] as any\n}\n\nexport const getAaveAssets = (\n chainId: string | undefined,\n lendingProtocol: string | undefined,\n): string[] => {\n if (isAaveType(lendingProtocol ?? ''))\n return aaveReserves()?.[lendingProtocol ?? '']?.[chainId ?? ''] ?? []\n return []\n}\n\nexport const getCompoundV3Assets = (\n chainId: string | undefined,\n lendingProtocol: string | undefined,\n): string[] => {\n if (isCompoundV3(lendingProtocol ?? ''))\n return compoundV3Reserves()?.[lendingProtocol ?? '']?.[chainId ?? '']\n return []\n}\n\nexport function getAaveTypePoolDataProviderAddress(\n chainId: string,\n lender: string,\n) {\n // @ts-ignore\n return aavePools()?.[lender]?.[chainId]?.protocolDataProvider\n}\n\nexport function getAaveTypePoolAddress(\n chainId: string,\n lender: string,\n): string {\n // @ts-ignore\n return aavePools()?.[lender]?.[chainId]?.pool\n}\n\n/**\n * Convert a string (asset symbol) to a Supported asset, considering also naming conflicts\n * @param a string\n * @returns SupportedAsset\n */\nexport const toOracleKey = (a: string) => {\n return a\n}\n\nexport const toGenericPriceKey = (assetAddress: string, chainId: string) => {\n return chainId + '-' + assetAddress\n}\n","import { getAaveAssets, getAaveTypePoolDataProviderAddress } from '../../assets'\nimport { Lender } from '@1delta/lender-registry'\n\nexport const buildAaveV2StyleLenderReserveCall = (\n chainId: string,\n lender: string,\n) => {\n const providerAddress = getAaveTypePoolDataProviderAddress(chainId, lender)\n const underlyingTokensArray = getAaveAssets(chainId, lender)\n switch (lender) {\n default:\n return [\n ...underlyingTokensArray.flatMap((tk) => [\n {\n address: providerAddress,\n name: 'getReserveData',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getReserveConfigurationData',\n params: [tk],\n },\n ]),\n ]\n }\n}\n","// src/chains.ts\nvar Chain = /* @__PURE__ */ ((Chain2) => {\n Chain2[\"ETHEREUM_MAINNET\"] = \"1\";\n Chain2[\"OP_MAINNET\"] = \"10\";\n Chain2[\"GNOSIS\"] = \"100\";\n Chain2[\"GTON_MAINNET\"] = \"1000\";\n Chain2[\"ETHOS\"] = \"100000000\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_0\"] = \"100001\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_1\"] = \"100002\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_2\"] = \"100003\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_3\"] = \"100004\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_4\"] = \"100005\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_5\"] = \"100006\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_6\"] = \"100007\";\n Chain2[\"QUARKCHAIN_MAINNET_SHARD_7\"] = \"100008\";\n Chain2[\"VECHAIN\"] = \"100009\";\n Chain2[\"GON_CHAIN\"] = \"10024\";\n Chain2[\"AEON_CHAIN\"] = \"10025\";\n Chain2[\"TECTUM_EMISSION_TOKEN\"] = \"1003\";\n Chain2[\"EURUS_MAINNET\"] = \"1008\";\n Chain2[\"JUMBOCHAIN_MAINNET\"] = \"1009\";\n Chain2[\"METANOVA_VERSE\"] = \"10096\";\n Chain2[\"GLOBAL_TRUST_NETWORK\"] = \"101010\";\n Chain2[\"SOVERUN_MAINNET\"] = \"10101010\";\n Chain2[\"REBUS_CLASSIC_MAINNET\"] = \"1011\";\n Chain2[\"MAXXCHAIN_MAINNET\"] = \"10201\";\n Chain2[\"CREDITCOIN\"] = \"102030\";\n Chain2[\"GLSCAN\"] = \"10222\";\n Chain2[\"ALIENX_MAINNET\"] = \"10241024\";\n Chain2[\"ARTHERA_MAINNET\"] = \"10242\";\n Chain2[\"ZERO_XTADE\"] = \"10248\";\n Chain2[\"BITTORRENT_CHAIN_DONAU\"] = \"1029\";\n Chain2[\"WORLDLAND_MAINNET\"] = \"103\";\n Chain2[\"CONFLUX_ESPACE\"] = \"1030\";\n Chain2[\"CRYSTALEUM\"] = \"103090\";\n Chain2[\"TAO_EVM_MAINNET\"] = \"10321\";\n Chain2[\"KASPACLASSIC_MAINNET\"] = \"104566\";\n Chain2[\"NUMBERS_MAINNET\"] = \"10507\";\n Chain2[\"STRATIS_MAINNET\"] = \"105105\";\n Chain2[\"VELAS_EVM_MAINNET\"] = \"106\";\n Chain2[\"THUNDERCORE_MAINNET\"] = \"108\";\n Chain2[\"MINTARA_MAINNET\"] = \"1080\";\n Chain2[\"CRYPTOCOINPAY\"] = \"10823\";\n Chain2[\"LAMINA1\"] = \"10849\";\n Chain2[\"LAMINA1_IDENTITY\"] = \"10850\";\n Chain2[\"METIS_ANDROMEDA_MAINNET\"] = \"1088\";\n Chain2[\"BROCHAIN_MAINNET\"] = \"108801\";\n Chain2[\"HUMANS_AI_MAINNET\"] = \"1089\";\n Chain2[\"SHIBARIUM\"] = \"109\";\n Chain2[\"QUADRANS_BLOCKCHAIN\"] = \"10946\";\n Chain2[\"DYMENSION\"] = \"1100\";\n Chain2[\"KB_CHAIN\"] = \"11000\";\n Chain2[\"POLYGON_ZKEVM\"] = \"1101\";\n Chain2[\"BLXQ_MAINNET\"] = \"1108\";\n Chain2[\"WEMIX3_0_MAINNET\"] = \"1111\";\n Chain2[\"ASTRA\"] = \"11110\";\n Chain2[\"WAGMI\"] = \"11111\";\n Chain2[\"SIBERIUM_NETWORK\"] = \"111111\";\n Chain2[\"RE_AL\"] = \"111188\";\n Chain2[\"HASHBIT_MAINNET\"] = \"11119\";\n Chain2[\"ALPHABET_MAINNET\"] = \"111222333444\";\n Chain2[\"CORE_BLOCKCHAIN_MAINNET\"] = \"1116\";\n Chain2[\"DOGCOIN_MAINNET\"] = \"1117\";\n Chain2[\"COINBIT_MAINNET\"] = \"112\";\n Chain2[\"SHINE_CHAIN\"] = \"11221\";\n Chain2[\"HAQQ_NETWORK\"] = \"11235\";\n Chain2[\"METACHAIN_ONE_MAINNET\"] = \"112358\";\n Chain2[\"TAKER_CHAIN_MAINNET\"] = \"1125\";\n Chain2[\"TILTYARD_SUBNET\"] = \"1127469\";\n Chain2[\"PALM\"] = \"11297108109\";\n Chain2[\"DEHVO\"] = \"113\";\n Chain2[\"LISK\"] = \"1135\";\n Chain2[\"EGOLD_CHAIN\"] = \"11451\";\n Chain2[\"CYBERDECKNET\"] = \"1146703430\";\n Chain2[\"SYMPLEXIA_SMART_CHAIN\"] = \"1149\";\n Chain2[\"BEVM_MAINNET\"] = \"11501\";\n Chain2[\"SATSCHAIN\"] = \"11521\";\n Chain2[\"UPTICK_MAINNET\"] = \"117\";\n Chain2[\"ARTELA_MAINNET\"] = \"11820\";\n Chain2[\"CLUBMOS_MAINNET\"] = \"1188\";\n Chain2[\"POLYGON_SUPERNET_ARIANEE\"] = \"11891\";\n Chain2[\"ENULS_MAINNET\"] = \"119\";\n Chain2[\"IORA_CHAIN\"] = \"1197\";\n Chain2[\"CUCKOO_CHAIN\"] = \"1200\";\n Chain2[\"SATOSHICHAIN_MAINNET\"] = \"12009\";\n Chain2[\"WORLD_TRADE_TECHNICAL_CHAIN_MAINNET\"] = \"1202\";\n Chain2[\"ATERNOS\"] = \"12020\";\n Chain2[\"LUMMIO_NETWORK\"] = \"12020498\";\n Chain2[\"SINGULARITY_ZERO_MAINNET\"] = \"12052\";\n Chain2[\"SAITABLOCKCHAINSBC\"] = \"1209\";\n Chain2[\"REALCHAIN_MAINNET\"] = \"121\";\n Chain2[\"FUSHUMA\"] = \"121224\";\n Chain2[\"BRC_CHAIN_MAINNET\"] = \"12123\";\n Chain2[\"POPCATEUM_MAINNET\"] = \"1213\";\n Chain2[\"ENTERCHAIN_MAINNET\"] = \"1214\";\n Chain2[\"ADF_CHAIN\"] = \"1215\";\n Chain2[\"FUSE_MAINNET\"] = \"122\";\n Chain2[\"EXZO_NETWORK_MAINNET\"] = \"1229\";\n Chain2[\"FIBONACCI_MAINNET\"] = \"12306\";\n Chain2[\"ULTRON_MAINNET\"] = \"1231\";\n Chain2[\"HUDDLE01_DRTC_CHAIN\"] = \"12323\";\n Chain2[\"L3X_PROTOCOL\"] = \"12324\";\n Chain2[\"GEMCHAIN\"] = \"123321\";\n Chain2[\"STEP_NETWORK\"] = \"1234\";\n Chain2[\"PIN\"] = \"123420000558\";\n Chain2[\"VOLMEX\"] = \"123420000588\";\n Chain2[\"SHARECLE_MAINNET\"] = \"1234567\";\n Chain2[\"ITX_MAINNET\"] = \"1235\";\n Chain2[\"GDPR_MAINNET\"] = \"12358\";\n Chain2[\"ARC_MAINNET\"] = \"1243\";\n Chain2[\"OM_PLATFORM_MAINNET\"] = \"1246\";\n Chain2[\"DOGETHER_MAINNET\"] = \"1248\";\n Chain2[\"RSS3_VSL_MAINNET\"] = \"12553\";\n Chain2[\"OYCHAIN_MAINNET\"] = \"126\";\n Chain2[\"HUMAN_PROTOCOL\"] = \"1273227453\";\n Chain2[\"OFFICIAL_VASYL\"] = \"1278060416\";\n Chain2[\"HUOBI_ECO_CHAIN_MAINNET\"] = \"128\";\n Chain2[\"HALO_MAINNET\"] = \"1280\";\n Chain2[\"MOONBEAM\"] = \"1284\";\n Chain2[\"MOONRIVER\"] = \"1285\";\n Chain2[\"INNOVATOR_CHAIN\"] = \"129\";\n Chain2[\"ARGOCHAIN\"] = \"1299\";\n Chain2[\"UNICHAIN\"] = \"130\";\n Chain2[\"GLUE_MAINNET\"] = \"1300\";\n Chain2[\"SPS\"] = \"13000\";\n Chain2[\"DOS_FUJI_SUBNET\"] = \"1311\";\n Chain2[\"JAIHO_CHAIN\"] = \"1313\";\n Chain2[\"ETHO_PROTOCOL\"] = \"1313114\";\n Chain2[\"AURORA_MAINNET\"] = \"1313161554\";\n Chain2[\"POWERGOLD\"] = \"1313161560\";\n Chain2[\"TURBO\"] = \"1313161567\";\n Chain2[\"ALYX_MAINNET\"] = \"1314\";\n Chain2[\"ETND_CHAIN_MAINNETS\"] = \"131419\";\n Chain2[\"AIA_MAINNET\"] = \"1319\";\n Chain2[\"SEI_NETWORK\"] = \"1329\";\n Chain2[\"CREDIT_SMART_CHAIN\"] = \"13308\";\n Chain2[\"IMMUTABLE_ZKEVM\"] = \"13371\";\n Chain2[\"PHOENIX_MAINNET\"] = \"13381\";\n Chain2[\"ELYSIUM_MAINNET\"] = \"1339\";\n Chain2[\"MASA\"] = \"13396\";\n Chain2[\"IEXEC_SIDECHAIN\"] = \"134\";\n Chain2[\"BLITZ_SUBNET\"] = \"1343\";\n Chain2[\"SKALE_TITAN_HUB\"] = \"1350216234\";\n Chain2[\"CIC_CHAIN_MAINNET\"] = \"1353\";\n Chain2[\"DEAMCHAIN_MAINNET\"] = \"136\";\n Chain2[\"KRONOBIT_MAINNET\"] = \"13600\";\n Chain2[\"ZAFIRIUM_MAINNET\"] = \"1369\";\n Chain2[\"POLYGON_MAINNET\"] = \"137\";\n Chain2[\"RAMESTTA_MAINNET\"] = \"1370\";\n Chain2[\"KALAR_CHAIN\"] = \"1379\";\n Chain2[\"DEFI_ORACLE_META_MAINNET\"] = \"138\";\n Chain2[\"RARI_CHAIN_MAINNET\"] = \"1380012617\";\n Chain2[\"RAPTORCHAIN\"] = \"1380996178\";\n Chain2[\"SUSONO\"] = \"13812\";\n Chain2[\"AMSTAR_MAINNET\"] = \"1388\";\n Chain2[\"WOOPCHAIN_MAINNET\"] = \"139\";\n Chain2[\"JOSEON_MAINNET\"] = \"1392\";\n Chain2[\"FLARE_MAINNET\"] = \"14\";\n Chain2[\"ETERNAL_MAINNET\"] = \"140\";\n Chain2[\"BITHARVEST_CHAIN_MAINNET\"] = \"14149\";\n Chain2[\"BITLAZER\"] = \"14235\";\n Chain2[\"ICPLAZA_MAINNET\"] = \"142857\";\n Chain2[\"ANDUSCHAIN_MAINNET\"] = \"14288640\";\n Chain2[\"RIKEZA_NETWORK_MAINNET\"] = \"1433\";\n Chain2[\"PHI_NETWORK_V2\"] = \"144\";\n Chain2[\"CTEX_SCAN_BLOCKCHAIN\"] = \"1455\";\n Chain2[\"ZKBASE_MAINNET\"] = \"1456\";\n Chain2[\"MONAD_MAINNET\"] = \"143\";\n Chain2[\"SONIC_MAINNET\"] = \"146\";\n Chain2[\"FLAG_MAINNET\"] = \"147\";\n Chain2[\"SHIMMEREVM\"] = \"148\";\n Chain2[\"VANA\"] = \"1480\";\n Chain2[\"SKALE_NEBULA_HUB\"] = \"1482601649\";\n Chain2[\"VITRUVEO_MAINNET\"] = \"1490\";\n Chain2[\"BEVM_CANARY\"] = \"1501\";\n Chain2[\"SHERPAX_MAINNET\"] = \"1506\";\n Chain2[\"REDBELLY_NETWORK_MAINNET\"] = \"151\";\n Chain2[\"GPT_MAINNET\"] = \"1511670449\";\n Chain2[\"STORY\"] = \"1514\";\n Chain2[\"BEAGLE_MESSAGING_CHAIN\"] = \"1515\";\n Chain2[\"POODL_MAINNET\"] = \"15259\";\n Chain2[\"ODYSSEY_CHAIN_MAINNET\"] = \"153153\";\n Chain2[\"KYMTC_MAINNET\"] = \"15430\";\n Chain2[\"DATACORE_SMART_CHAIN\"] = \"1555\";\n Chain2[\"LOOPNETWORK_MAINNET\"] = \"15551\";\n Chain2[\"TENET\"] = \"1559\";\n Chain2[\"SKALE_CALYPSO_HUB\"] = \"1564830818\";\n Chain2[\"PUPPYNET\"] = \"157\";\n Chain2[\"STARCHAIN\"] = \"1578\";\n Chain2[\"ROBURNA_MAINNET\"] = \"158\";\n Chain2[\"CRYPTOX\"] = \"158245\";\n Chain2[\"XCOIN\"] = \"158345\";\n Chain2[\"BETHERANCE\"] = \"1605\";\n Chain2[\"DEFIVERSE_MAINNET\"] = \"16116\";\n Chain2[\"CYPHERIUM_MAINNET\"] = \"16166\";\n Chain2[\"ETHEREUM_INSCRIPTION_MAINNET\"] = \"1617\";\n Chain2[\"PLYR_PHI\"] = \"16180\";\n Chain2[\"GRAVITY_ALPHA_MAINNET\"] = \"1625\";\n Chain2[\"PIVOTAL_MAINNET\"] = \"1648\";\n Chain2[\"GENESYS_MAINNET\"] = \"16507\";\n Chain2[\"ECLAT_MAINNET\"] = \"165279\";\n Chain2[\"OMNI\"] = \"166\";\n Chain2[\"HARMONY_MAINNET_SHARD_0\"] = \"1666600000\";\n Chain2[\"HARMONY_MAINNET_SHARD_1\"] = \"1666600001\";\n Chain2[\"TAIKO_ALETHIA\"] = \"167000\";\n Chain2[\"AIRDAO_MAINNET\"] = \"16718\";\n Chain2[\"AIOZ_NETWORK\"] = \"168\";\n Chain2[\"ZCHAINS\"] = \"168168\";\n Chain2[\"NERO_MAINNET\"] = \"1689\";\n Chain2[\"MANTA_PACIFIC_MAINNET\"] = \"169\";\n Chain2[\"ANYTYPE_EVM_CHAIN\"] = \"1701\";\n Chain2[\"GARNET_HOLESKY\"] = \"17069\";\n Chain2[\"TBSI_MAINNET\"] = \"1707\";\n Chain2[\"ONCHAIN_POINTS\"] = \"17071\";\n Chain2[\"CO2E_LEDGER\"] = \"171\";\n Chain2[\"DORIC_NETWORK\"] = \"1717\";\n Chain2[\"G8CHAIN_MAINNET\"] = \"17171\";\n Chain2[\"WADZCHAIN_MAINNET\"] = \"171717\";\n Chain2[\"ECLIPSE_SUBNET\"] = \"17172\";\n Chain2[\"PALETTE_CHAIN_MAINNET\"] = \"1718\";\n Chain2[\"KONET_MAINNET\"] = \"17217\";\n Chain2[\"REYA_NETWORK\"] = \"1729\";\n Chain2[\"METAL_L2\"] = \"1750\";\n Chain2[\"DC_MAINNET\"] = \"176\";\n Chain2[\"HASHKEY_CHAIN\"] = \"177\";\n Chain2[\"PARTYCHAIN\"] = \"1773\";\n Chain2[\"GAUSS_MAINNET\"] = \"1777\";\n Chain2[\"EOS_EVM_NETWORK\"] = \"17777\";\n Chain2[\"ABEY_MAINNET\"] = \"179\";\n Chain2[\"AME_CHAIN_MAINNET\"] = \"180\";\n Chain2[\"MANDE_NETWORK_MAINNET\"] = \"18071918\";\n Chain2[\"SMART_TRADE_NETWORKS\"] = \"18122\";\n Chain2[\"PROOF_OF_MEMES\"] = \"18159\";\n Chain2[\"CUBE_CHAIN_MAINNET\"] = \"1818\";\n Chain2[\"IOST_MAINNET\"] = \"182\";\n Chain2[\"RUBY_SMART_CHAIN_MAINNET\"] = \"1821\";\n Chain2[\"PLAYBLOCK\"] = \"1829\";\n Chain2[\"ETHERNITY\"] = \"183\";\n Chain2[\"MINT_MAINNET\"] = \"185\";\n Chain2[\"HIGHOCTANE_SUBNET\"] = \"1853\";\n Chain2[\"SEELE_MAINNET\"] = \"186\";\n Chain2[\"SONEIUM\"] = \"1868\";\n Chain2[\"MXC_ZKEVM_MOONCHAIN\"] = \"18686\";\n Chain2[\"DOJIMA\"] = \"187\";\n Chain2[\"WHITECHAIN\"] = \"1875\";\n Chain2[\"BMC_MAINNET\"] = \"188\";\n Chain2[\"BITICA_CHAIN_MAINNET\"] = \"188710\";\n Chain2[\"TITAN_TKX\"] = \"18888\";\n Chain2[\"LIGHTLINK_PHOENIX_MAINNET\"] = \"1890\";\n Chain2[\"BON_NETWORK\"] = \"1898\";\n Chain2[\"REDEFI_LAYER_2\"] = \"1899\";\n Chain2[\"SONGBIRD_CANARY_NETWORK\"] = \"19\";\n Chain2[\"CMDAO_BBQ_CHAIN\"] = \"190\";\n Chain2[\"HOME_VERSE_MAINNET\"] = \"19011\";\n Chain2[\"SPORTS_CHAIN_NETWORK\"] = \"1904\";\n Chain2[\"BITCICHAIN_MAINNET\"] = \"1907\";\n Chain2[\"MERKLE_SCAN\"] = \"1909\";\n Chain2[\"SCALIND\"] = \"1911\";\n Chain2[\"LOCACHAIN_MAINNET\"] = \"19180\";\n Chain2[\"BLOCKX_MAINNET\"] = \"19191\";\n Chain2[\"DECENTRACONNECT_SOCIAL\"] = \"19224\";\n Chain2[\"SWELLCHAIN\"] = \"1923\";\n Chain2[\"GATHER_MAINNET_NETWORK\"] = \"192837465\";\n Chain2[\"CRYPTO_EMERGENCY\"] = \"193\";\n Chain2[\"R0AR_CHAIN\"] = \"193939\";\n Chain2[\"SEC_MAINNET\"] = \"19516\";\n Chain2[\"X_LAYER_MAINNET\"] = \"196\";\n Chain2[\"LBRY_MAINNET\"] = \"19600\";\n Chain2[\"SELENDRA_NETWORK_MAINNET\"] = \"1961\";\n Chain2[\"SUPER_SMART_CHAIN_MAINNET\"] = \"1970\";\n Chain2[\"ONUS_CHAIN_MAINNET\"] = \"1975\";\n Chain2[\"NTITY_MAINNET\"] = \"197710212030\";\n Chain2[\"BITCHAIN_MAINNET\"] = \"198\";\n Chain2[\"BTCIX_NETWORK\"] = \"19845\";\n Chain2[\"SATOSHIE\"] = \"1985\";\n Chain2[\"DEEPBRAINCHAIN_MAINNET\"] = \"19880818\";\n Chain2[\"BITTORRENT_CHAIN_MAINNET\"] = \"199\";\n Chain2[\"EKTA\"] = \"1994\";\n Chain2[\"SANKO\"] = \"1996\";\n Chain2[\"KYOTO\"] = \"1997\";\n Chain2[\"ULTRA_EVM_NETWORK\"] = \"19991\";\n Chain2[\"ELASTOS_SMART_CHAIN\"] = \"20\";\n Chain2[\"ARBITRUM_ON_XDAI\"] = \"200\";\n Chain2[\"DOGECHAIN_MAINNET\"] = \"2000\";\n Chain2[\"CAMELARK_MAINNET\"] = \"20001\";\n Chain2[\"MILKOMEDA_C1_MAINNET\"] = \"2001\";\n Chain2[\"MILKOMEDA_A1_MAINNET\"] = \"2002\";\n Chain2[\"ZOO_MAINNET\"] = \"200200\";\n Chain2[\"METALINK_NETWORK\"] = \"2004\";\n Chain2[\"NIZA_CHAIN_MAINNET\"] = \"20041\";\n Chain2[\"BITLAYER_MAINNET\"] = \"200901\";\n Chain2[\"ALAYA_MAINNET\"] = \"201018\";\n Chain2[\"MAINNETZ_MAINNET\"] = \"2016\";\n Chain2[\"MYTHICAL_CHAIN\"] = \"201804\";\n Chain2[\"SMARTMESH_MAINNET\"] = \"20180430\";\n Chain2[\"QUARKBLOCKCHAIN\"] = \"20181205\";\n Chain2[\"RONIN_MAINNET\"] = \"2020\";\n Chain2[\"PEGO_NETWORK\"] = \"20201022\";\n Chain2[\"EDGEWARE_EDGEEVM_MAINNET\"] = \"2021\";\n Chain2[\"BETHEL_SYDNEY\"] = \"202202\";\n Chain2[\"DBK_CHAIN\"] = \"20240603\";\n Chain2[\"BLOCKFIT\"] = \"202424\";\n Chain2[\"RANGERS_PROTOCOL_MAINNET\"] = \"2025\";\n Chain2[\"ETP_MAINNET\"] = \"20256789\";\n Chain2[\"EDGELESS_NETWORK\"] = \"2026\";\n Chain2[\"WOWCHAIN_MAINNET\"] = \"203\";\n Chain2[\"CENTRIFUGE\"] = \"2031\";\n Chain2[\"KIWI_SUBNET\"] = \"2037\";\n Chain2[\"ALEPH_ZERO\"] = \"2039\";\n Chain2[\"OPBNB_MAINNET\"] = \"204\";\n Chain2[\"VANAR_MAINNET\"] = \"2040\";\n Chain2[\"X1_NETWORK\"] = \"204005\";\n Chain2[\"XUSD_ONE_STABLECHAIN_MAINNET\"] = \"20441\";\n Chain2[\"SKALE_EUROPA_HUB\"] = \"2046399126\";\n Chain2[\"STRATOS\"] = \"2048\";\n Chain2[\"MOVO_SMART_CHAIN_MAINNET\"] = \"2049\";\n Chain2[\"VINUCHAIN_NETWORK\"] = \"207\";\n Chain2[\"METACCES_MAINNET\"] = \"2071\";\n Chain2[\"P12_CHAIN\"] = \"20736\";\n Chain2[\"JONO11_SUBNET\"] = \"20765\";\n Chain2[\"QUOKKACOIN_MAINNET\"] = \"2077\";\n Chain2[\"PLIAN_MAINNET_MAIN\"] = \"2099156\";\n Chain2[\"BITNET\"] = \"210\";\n Chain2[\"ECOBALL_MAINNET\"] = \"2100\";\n Chain2[\"CORN\"] = \"21000000\";\n Chain2[\"C4EI\"] = \"21004\";\n Chain2[\"PLATON_MAINNET\"] = \"210425\";\n Chain2[\"EXOSAMA_NETWORK\"] = \"2109\";\n Chain2[\"UCHAIN_MAINNET\"] = \"2112\";\n Chain2[\"ALL_ABOUT_HEALTHY\"] = \"21133\";\n Chain2[\"LITENTRY\"] = \"212013\";\n Chain2[\"CATENA_MAINNET\"] = \"2121\";\n Chain2[\"METAPLAYERONE_MAINNET\"] = \"2122\";\n Chain2[\"DCPAY_MAINNET\"] = \"21223\";\n Chain2[\"B2_HUB_MAINNET\"] = \"213\";\n Chain2[\"CENNZNET_AZALEA\"] = \"21337\";\n Chain2[\"LESTNET\"] = \"21363\";\n Chain2[\"SHINARIUM_MAINNET\"] = \"214\";\n Chain2[\"ONENESS_NETWORK\"] = \"2140\";\n Chain2[\"BOSAGORA_MAINNET\"] = \"2151\";\n Chain2[\"FINDORA_MAINNET\"] = \"2152\";\n Chain2[\"SIRIUSNET_V2\"] = \"217\";\n Chain2[\"OMCHAIN_MAINNET\"] = \"21816\";\n Chain2[\"GAME7\"] = \"2187\";\n Chain2[\"BSL_MAINNET\"] = \"21912\";\n Chain2[\"SNAXCHAIN\"] = \"2192\";\n Chain2[\"MOONSAMA_NETWORK\"] = \"2199\";\n Chain2[\"ANTOFY_MAINNET\"] = \"2202\";\n Chain2[\"TAYCAN\"] = \"22023\";\n Chain2[\"BITCOIN_EVM\"] = \"2203\";\n Chain2[\"MAS_MAINNET\"] = \"220315\";\n Chain2[\"EXCELON_MAINNET\"] = \"22052002\";\n Chain2[\"BLOCKEX_MAINNET\"] = \"221\";\n Chain2[\"REAPCHAIN_MAINNET\"] = \"221230\";\n Chain2[\"EVANESCO_MAINNET\"] = \"2213\";\n Chain2[\"KAVA\"] = \"2222\";\n Chain2[\"NAUTILUS_MAINNET\"] = \"22222\";\n Chain2[\"HYDRATION\"] = \"222222\";\n Chain2[\"COINWEB_BNB_SHARD\"] = \"2222222\";\n Chain2[\"VCHAIN_MAINNET\"] = \"2223\";\n Chain2[\"DEEPL_MAINNET\"] = \"222555\";\n Chain2[\"B2_MAINNET\"] = \"223\";\n Chain2[\"KREST_NETWORK\"] = \"2241\";\n Chain2[\"TAF_ECO_CHAIN_MAINNET\"] = \"224168\";\n Chain2[\"CONET_MAINNET\"] = \"224400\";\n Chain2[\"CONET_HOLESKY\"] = \"224433\";\n Chain2[\"LACHAIN_MAINNET\"] = \"225\";\n Chain2[\"PROM\"] = \"227\";\n Chain2[\"MAP_PROTOCOL\"] = \"22776\";\n Chain2[\"SWAPDEX\"] = \"230\";\n Chain2[\"BOMB_CHAIN\"] = \"2300\";\n Chain2[\"PREMIUMBLOCK\"] = \"23023\";\n Chain2[\"CRATD2C\"] = \"2310\";\n Chain2[\"LENS\"] = \"232\";\n Chain2[\"OASIS_SAPPHIRE\"] = \"23294\";\n Chain2[\"ALTCOINCHAIN\"] = \"2330\";\n Chain2[\"SOMA_NETWORK_MAINNET\"] = \"2332\";\n Chain2[\"OMNIA_CHAIN\"] = \"2342\";\n Chain2[\"GOAT_NETWORK\"] = \"2345\";\n Chain2[\"DREYERX_MAINNET\"] = \"23451\";\n Chain2[\"SILICON_ZKEVM\"] = \"2355\";\n Chain2[\"BLAST_ZKEVM_MAINNET\"] = \"238\";\n Chain2[\"TAC_MAINNET\"] = \"239\";\n Chain2[\"TCG_VERSE_MAINNET\"] = \"2400\";\n Chain2[\"K2_MAINNET\"] = \"2410\";\n Chain2[\"XODEX\"] = \"2415\";\n Chain2[\"PLINGA_MAINNET\"] = \"242\";\n Chain2[\"RUFUS\"] = \"2420\";\n Chain2[\"KING_OF_LEGENDS_MAINNET\"] = \"2425\";\n Chain2[\"NEON_EVM_MAINNET\"] = \"245022934\";\n Chain2[\"ENERGY_WEB_CHAIN\"] = \"246\";\n Chain2[\"HYBRID_CHAIN_NETWORK_MAINNET\"] = \"2468\";\n Chain2[\"SIX_DEGREE_OF_OUTREACH\"] = \"2477\";\n Chain2[\"OASYS_MAINNET\"] = \"248\";\n Chain2[\"NOW_CHAIN_MAINNET\"] = \"2488\";\n Chain2[\"CRONOS_MAINNET\"] = \"25\";\n Chain2[\"FANTOM_OPERA\"] = \"250\";\n Chain2[\"LIQUIDLAYER_MAINNET\"] = \"25186\";\n Chain2[\"FRAXTAL\"] = \"252\";\n Chain2[\"INEVM_MAINNET\"] = \"2525\";\n Chain2[\"GLIDE_L2_PROTOCOL_XP\"] = \"253\";\n Chain2[\"EVERCLEAR_MAINNET\"] = \"25327\";\n Chain2[\"FLAME\"] = \"253368190\";\n Chain2[\"SWAN_CHAIN_MAINNET\"] = \"254\";\n Chain2[\"KROMA\"] = \"255\";\n Chain2[\"BAHAMUT_HORIZON\"] = \"2552\";\n Chain2[\"CMP_MAINNET\"] = \"256256\";\n Chain2[\"TECHPAY_MAINNET\"] = \"2569\";\n Chain2[\"HAMMER_CHAIN_MAINNET\"] = \"25888\";\n Chain2[\"NEONLINK_MAINNET\"] = \"259\";\n Chain2[\"GURU_NETWORK\"] = \"260\";\n Chain2[\"PHO_BLOCKCHAIN_MAINNET\"] = \"2605\";\n Chain2[\"POCRNET\"] = \"2606\";\n Chain2[\"FERRUM_QUANTUM_PORTAL_NETWORK\"] = \"26100\";\n Chain2[\"REDLIGHT_CHAIN_MAINNET\"] = \"2611\";\n Chain2[\"EZCHAIN_C_CHAIN_MAINNET\"] = \"2612\";\n Chain2[\"SUR_BLOCKCHAIN_NETWORK\"] = \"262\";\n Chain2[\"DUCATUSX\"] = \"26483\";\n Chain2[\"AILAYER_MAINNET\"] = \"2649\";\n Chain2[\"HERTZ_NETWORK_MAINNET\"] = \"26600\";\n Chain2[\"OASISCHAIN_MAINNET\"] = \"26863\";\n Chain2[\"HIGH_PERFORMANCE_BLOCKCHAIN\"] = \"269\";\n Chain2[\"SHIBACHAIN\"] = \"27\";\n Chain2[\"XTERIO_CHAIN_ETH\"] = \"2702128\";\n Chain2[\"EXCOINCIAL_CHAIN_MAINNET\"] = \"27082022\";\n Chain2[\"EGONCOIN_MAINNET\"] = \"271\";\n Chain2[\"DCHAIN\"] = \"2716446429837000\";\n Chain2[\"K_LAOS\"] = \"2718\";\n Chain2[\"NXY_AREA_51\"] = \"272247\";\n Chain2[\"NXY_OASIS\"] = \"272520\";\n Chain2[\"XR_ONE\"] = \"273\";\n Chain2[\"LACHAIN\"] = \"274\";\n Chain2[\"ABSTRACT\"] = \"2741\";\n Chain2[\"NANON\"] = \"2748\";\n Chain2[\"GM_NETWORK_MAINNET\"] = \"2777\";\n Chain2[\"ZEROONE_MAINNET_SUBNET\"] = \"27827\";\n Chain2[\"RAZOR_SKALE_CHAIN\"] = \"278611351\";\n Chain2[\"BPX_CHAIN\"] = \"279\";\n Chain2[\"ATHENE_PARTHENON\"] = \"281123\";\n Chain2[\"MORPH\"] = \"2818\";\n Chain2[\"VIZING_MAINNET\"] = \"28518\";\n Chain2[\"BOBA_NETWORK\"] = \"288\";\n Chain2[\"AARMA_MAINNET\"] = \"2889\";\n Chain2[\"GENESIS_L1\"] = \"29\";\n Chain2[\"FLACHAIN_MAINNET\"] = \"29032022\";\n Chain2[\"ELUX_CHAIN\"] = \"2907\";\n Chain2[\"ORDERLY_MAINNET\"] = \"291\";\n Chain2[\"HYCHAIN\"] = \"2911\";\n Chain2[\"NEXA_METANET\"] = \"29223\";\n Chain2[\"DAVINCI\"] = \"293\";\n Chain2[\"HEDERA_MAINNET\"] = \"295\";\n Chain2[\"MCH_VERSE_MAINNET\"] = \"29548\";\n Chain2[\"HEDERA_PREVIEWNET\"] = \"297\";\n Chain2[\"BITYUAN_MAINNET\"] = \"2999\";\n Chain2[\"ROOTSTOCK_MAINNET\"] = \"30\";\n Chain2[\"QCHAIN_MAINNET\"] = \"30000\";\n Chain2[\"CENNZNET_NIKAU\"] = \"3001\";\n Chain2[\"CANXIUM_MAINNET\"] = \"3003\";\n Chain2[\"MIYOU_MAINNET\"] = \"30088\";\n Chain2[\"PLAYA3ULL_GAMES\"] = \"3011\";\n Chain2[\"BC_HYPER_CHAIN_MAINNET\"] = \"3030\";\n Chain2[\"ORLANDO_CHAIN\"] = \"3031\";\n Chain2[\"ZKSATS_MAINNET\"] = \"305\";\n Chain2[\"BIFROST_MAINNET\"] = \"3068\";\n Chain2[\"FURTHEON\"] = \"308\";\n Chain2[\"ONE_WORLD_CHAIN_MAINNET\"] = \"309075\";\n Chain2[\"OMAX_MAINNET\"] = \"311\";\n Chain2[\"ONELEDGER_MAINNET\"] = \"311752642\";\n Chain2[\"CLOUDTX_MAINNET\"] = \"31223\";\n Chain2[\"NEUROCHAIN_MAINNET\"] = \"313\";\n Chain2[\"FILECOIN_MAINNET\"] = \"314\";\n Chain2[\"WIREX_PAY_MAINNET\"] = \"31415\";\n Chain2[\"WORLDECOMONEY\"] = \"315\";\n Chain2[\"KCC_MAINNET\"] = \"321\";\n Chain2[\"PAREX_MAINNET\"] = \"322202\";\n Chain2[\"COSVM_MAINNET\"] = \"323\";\n Chain2[\"SANTIMENT_INTELLIGENCE_NETWORK\"] = \"32382\";\n Chain2[\"ZKSYNC_MAINNET\"] = \"324\";\n Chain2[\"BITGERT_MAINNET\"] = \"32520\";\n Chain2[\"FUSION_MAINNET\"] = \"32659\";\n Chain2[\"ZILLIQA_EVM\"] = \"32769\";\n Chain2[\"ZILLIQA_2_EVM_PROTO_MAINNET\"] = \"32770\";\n Chain2[\"NAL_MAINNET\"] = \"328527\";\n Chain2[\"ZILLIQA_EVM_ISOLATED_SERVER\"] = \"32990\";\n Chain2[\"ENTANGLE_MAINNET\"] = \"33033\";\n Chain2[\"TTCOIN_SMART_CHAIN_MAINNET\"] = \"330844\";\n Chain2[\"CURTIS\"] = \"33111\";\n Chain2[\"APECHAIN\"] = \"33139\";\n Chain2[\"CLOUDVERSE_SUBNET\"] = \"33210\";\n Chain2[\"WEB3Q_MAINNET\"] = \"333\";\n Chain2[\"MELD\"] = \"333000333\";\n Chain2[\"BLOOM_GENESIS_MAINNET\"] = \"333313\";\n Chain2[\"AVES_MAINNET\"] = \"33333\";\n Chain2[\"WEB3Q_GALILEO\"] = \"3334\";\n Chain2[\"PEAQ\"] = \"3338\";\n Chain2[\"SLINGSHOT\"] = \"33401\";\n Chain2[\"SHIDEN\"] = \"336\";\n Chain2[\"MERONEUM\"] = \"3366\";\n Chain2[\"UPCHAIN_MAINNET\"] = \"336666\";\n Chain2[\"FUNKI\"] = \"33979\";\n Chain2[\"SECURECHAIN_MAINNET\"] = \"34\";\n Chain2[\"PARIBU_NET_MAINNET\"] = \"3400\";\n Chain2[\"EVOLVE_MAINNET\"] = \"3424\";\n Chain2[\"MODE\"] = \"34443\";\n Chain2[\"TSC_MAINNET\"] = \"345\";\n Chain2[\"ZEUS_MAINNET\"] = \"34504\";\n Chain2[\"GTCSCAN\"] = \"3490\";\n Chain2[\"CITRONUS_CITRO\"] = \"34949059\";\n Chain2[\"JFIN_CHAIN\"] = \"3501\";\n Chain2[\"J2O_TARO\"] = \"35011\";\n Chain2[\"JFINPOS\"] = \"3502\";\n Chain2[\"Q_MAINNET\"] = \"35441\";\n Chain2[\"BITFINITY_NETWORK_MAINNET\"] = \"355110\";\n Chain2[\"DXCHAIN_MAINNET\"] = \"36\";\n Chain2[\"SHAPE\"] = \"360\";\n Chain2[\"PANDOPROJECT_MAINNET\"] = \"3601\";\n Chain2[\"LAVITA_MAINNET\"] = \"360890\";\n Chain2[\"THETA_MAINNET\"] = \"361\";\n Chain2[\"DIGIT_SOUL_SMART_CHAIN_2\"] = \"363636\";\n Chain2[\"BOTANIX_MAINNET\"] = \"3637\";\n Chain2[\"ICHAIN_NETWORK\"] = \"3639\";\n Chain2[\"JOULEVERSE_MAINNET\"] = \"3666\";\n Chain2[\"PULSECHAIN\"] = \"369\";\n Chain2[\"BITTEX_MAINNET\"] = \"3690\";\n Chain2[\"EMPIRE_NETWORK\"] = \"3693\";\n Chain2[\"SENJEPOWERS_MAINNET\"] = \"3699\";\n Chain2[\"XPLA_MAINNET\"] = \"37\";\n Chain2[\"CROSSBELL\"] = \"3737\";\n Chain2[\"ASTAR_ZKEVM\"] = \"3776\";\n Chain2[\"ALVEYCHAIN_MAINNET\"] = \"3797\";\n Chain2[\"ZKAMOEBA_MAINNET\"] = \"381\";\n Chain2[\"METAL_C_CHAIN\"] = \"381931\";\n Chain2[\"METAL_TAHOE_C_CHAIN\"] = \"381932\";\n Chain2[\"ZENIQ\"] = \"383414847825\";\n Chain2[\"CONNECTORMANAGER\"] = \"38400\";\n Chain2[\"CONNECTORMANAGER_ROBIN\"] = \"38401\";\n Chain2[\"CRONOS_ZKEVM_MAINNET\"] = \"388\";\n Chain2[\"KALYCHAIN_MAINNET\"] = \"3888\";\n Chain2[\"U2U_SOLARIS_MAINNET\"] = \"39\";\n Chain2[\"DRAC_NETWORK\"] = \"3912\";\n Chain2[\"PRM_MAINNET\"] = \"39656\";\n Chain2[\"DYNO_MAINNET\"] = \"3966\";\n Chain2[\"PAYNETWORK_MAINNET\"] = \"3969\";\n Chain2[\"NEAR_PROTOCOL\"] = \"397\";\n Chain2[\"OHO_MAINNET\"] = \"39815\";\n Chain2[\"NATIV3_MAINNET\"] = \"399\";\n Chain2[\"KINGDOM_CHAIN\"] = \"39916801\";\n Chain2[\"YUANCHAIN_MAINNET\"] = \"3999\";\n Chain2[\"TELOS_EVM_MAINNET\"] = \"40\";\n Chain2[\"OZONE_CHAIN_MAINNET\"] = \"4000\";\n Chain2[\"DIV_CHAIN\"] = \"40000\";\n Chain2[\"ALTLAYER_ZERO_GAS_NETWORK\"] = \"4000003\";\n Chain2[\"X1_FASTNET\"] = \"4003\";\n Chain2[\"SYNDR_L3\"] = \"404\";\n Chain2[\"TIPBOXCOIN_MAINNET\"] = \"404040\";\n Chain2[\"BAHAMUT_OCEAN\"] = \"4058\";\n Chain2[\"NAHMII_3_MAINNET\"] = \"4061\";\n Chain2[\"MUSTER_MAINNET\"] = \"4078\";\n Chain2[\"ZEROTH_MAINNET\"] = \"4088\";\n Chain2[\"BITINDI_MAINNET\"] = \"4099\";\n Chain2[\"PEPE_CHAIN_MAINNET\"] = \"411\";\n Chain2[\"ALEPH_ZERO_EVM\"] = \"41455\";\n Chain2[\"OPULENT_X_BETA\"] = \"41500\";\n Chain2[\"CROSSFI_MAINNET\"] = \"4158\";\n Chain2[\"SX_NETWORK_MAINNET\"] = \"416\";\n Chain2[\"SX_ROLLUP\"] = \"4162\";\n Chain2[\"PHI_NETWORK_V1\"] = \"4181\";\n Chain2[\"EDU_CHAIN\"] = \"41923\";\n Chain2[\"LUKSO_MAINNET\"] = \"42\";\n Chain2[\"MERLIN_MAINNET\"] = \"4200\";\n Chain2[\"INFINAEON\"] = \"420000\";\n Chain2[\"PMON_CHAIN\"] = \"42001\";\n Chain2[\"VECTOR_SMART_CHAIN\"] = \"420042\";\n Chain2[\"DONATUZ\"] = \"42026\";\n Chain2[\"KEKCHAIN\"] = \"420420\";\n Chain2[\"WESTEND_ASSET_HUB\"] = \"420420421\";\n Chain2[\"ARBITRUM_ONE\"] = \"42161\";\n Chain2[\"ARBITRUM_NOVA\"] = \"42170\";\n Chain2[\"VIRIDIS_MAINNET\"] = \"422\";\n Chain2[\"CELO_MAINNET\"] = \"42220\";\n Chain2[\"OASIS_EMERALD\"] = \"42262\";\n Chain2[\"GOLDXCHAIN_MAINNET\"] = \"42355\";\n Chain2[\"PGN_PUBLIC_GOODS_NETWORK\"] = \"424\";\n Chain2[\"NEXI_MAINNET\"] = \"4242\";\n Chain2[\"ASSET_CHAIN_MAINNET\"] = \"42420\";\n Chain2[\"NEXI_V2_MAINNET\"] = \"4243\";\n Chain2[\"STENIX_MAINNET\"] = \"425\";\n Chain2[\"THE_WIDOWS_MITE\"] = \"426\";\n Chain2[\"ZEETH_CHAIN\"] = \"427\";\n Chain2[\"ZKFAIR_MAINNET\"] = \"42766\";\n Chain2[\"ETHERLINK_MAINNET\"] = \"42793\";\n Chain2[\"GESO_VERSE\"] = \"428\";\n Chain2[\"HEMI_NETWORK\"] = \"43111\";\n Chain2[\"AVALANCHE_C_CHAIN\"] = \"43114\";\n Chain2[\"ECHOS_CHAIN\"] = \"4321\";\n Chain2[\"DEXALOT_SUBNET\"] = \"432204\";\n Chain2[\"BEAM\"] = \"4337\";\n Chain2[\"BOYAA_MAINNET\"] = \"434\";\n Chain2[\"CRAB_NETWORK\"] = \"44\";\n Chain2[\"CREDIT_SMART_CHAIN_MAINNET\"] = \"4400\";\n Chain2[\"GRAPHITE_MAINNET\"] = \"440017\";\n Chain2[\"HTMLCOIN_MAINNET\"] = \"4444\";\n Chain2[\"FRENCHAIN\"] = \"44444\";\n Chain2[\"QUANTUM_NETWORK\"] = \"44445\";\n Chain2[\"HYDRA_CHAIN\"] = \"4488\";\n Chain2[\"AUTOBAHN_NETWORK\"] = \"45000\";\n Chain2[\"EMONEY_NETWORK_MAINNET\"] = \"4545\";\n Chain2[\"SWAMPS_L2\"] = \"45454\";\n Chain2[\"DEELANCE_MAINNET\"] = \"45510\";\n Chain2[\"BLESSNET\"] = \"45513\";\n Chain2[\"ARZIO_CHAIN\"] = \"456\";\n Chain2[\"DARWINIA_NETWORK\"] = \"46\";\n Chain2[\"VERY_MAINNET\"] = \"4613\";\n Chain2[\"AREON_NETWORK_MAINNET\"] = \"463\";\n Chain2[\"MST_CHAIN\"] = \"4646\";\n Chain2[\"APPCHAIN\"] = \"466\";\n Chain2[\"IOTEX_NETWORK_MAINNET\"] = \"4689\";\n Chain2[\"ACRIA_INTELLICHAIN\"] = \"47\";\n Chain2[\"ULTRA_PRO_MAINNET\"] = \"473861\";\n Chain2[\"OPENCHAIN_MAINNET\"] = \"474142\";\n Chain2[\"NEO_X_MAINNET\"] = \"47763\";\n Chain2[\"FORM_NETWORK\"] = \"478\";\n Chain2[\"REDEFI_LAYER_1\"] = \"47803\";\n Chain2[\"REI_NETWORK\"] = \"47805\";\n Chain2[\"ENNOTHEM_MAINNET_PROTEROZOIC\"] = \"48\";\n Chain2[\"WORLD_CHAIN\"] = \"480\";\n Chain2[\"ZIRCUIT_MAINNET\"] = \"48900\";\n Chain2[\"GLOBEL_CHAIN\"] = \"4893\";\n Chain2[\"OEV_NETWORK\"] = \"4913\";\n Chain2[\"VENIDIUM_MAINNET\"] = \"4919\";\n Chain2[\"RUPAYA\"] = \"499\";\n Chain2[\"XDC_NETWORK\"] = \"50\";\n Chain2[\"CAMINO_C_CHAIN\"] = \"500\";\n Chain2[\"MANTLE\"] = \"5000\";\n Chain2[\"CITRONUS\"] = \"50000\";\n Chain2[\"YOOLDO_VERSE_MAINNET\"] = \"50005\";\n Chain2[\"TREASURENET_MAINNET_ALPHA\"] = \"5002\";\n Chain2[\"SOPHON\"] = \"50104\";\n Chain2[\"ONIGIRI_SUBNET\"] = \"5040\";\n Chain2[\"PLAYDAPP_NETWORK\"] = \"504441\";\n Chain2[\"SKATE_MAINNET\"] = \"5050\";\n Chain2[\"PIONEER_ZERO_CHAIN\"] = \"5080\";\n Chain2[\"ERBIE_MAINNET\"] = \"50888\";\n Chain2[\"XDC_APOTHEM_NETWORK\"] = \"51\";\n Chain2[\"SYNDICATE_CHAIN\"] = \"510\";\n Chain2[\"HAM\"] = \"5112\";\n Chain2[\"NUMBLOCK_CHAIN\"] = \"5112023\";\n Chain2[\"DOUBLE_A_CHAIN_MAINNET\"] = \"512\";\n Chain2[\"DISCHAIN\"] = \"513100\";\n Chain2[\"BAHAMUT\"] = \"5165\";\n Chain2[\"SMART_LAYER_NETWORK\"] = \"5169\";\n Chain2[\"SARDIS_MAINNET\"] = \"51712\";\n Chain2[\"TLCHAIN_NETWORK_MAINNET\"] = \"5177\";\n Chain2[\"COINEX_SMART_CHAIN_MAINNET\"] = \"52\";\n Chain2[\"XT_SMART_CHAIN_MAINNET\"] = \"520\";\n Chain2[\"ELECTRONEUM_MAINNET\"] = \"52014\";\n Chain2[\"HUMANODE_MAINNET\"] = \"5234\";\n Chain2[\"DOCOIN_COMMUNITY_CHAIN\"] = \"526916\";\n Chain2[\"FXCORE_MAINNET_NETWORK\"] = \"530\";\n Chain2[\"DOID\"] = \"53277\";\n Chain2[\"SUPERSEED\"] = \"5330\";\n Chain2[\"NETSBO\"] = \"5333\";\n Chain2[\"CANDLE\"] = \"534\";\n Chain2[\"SCROLL\"] = \"534352\";\n Chain2[\"SHINARIUM_BETA\"] = \"534849\";\n Chain2[\"BEANECO_SMARTCHAIN\"] = \"535037\";\n Chain2[\"OPTRUST_MAINNET\"] = \"537\";\n Chain2[\"SETTLUS\"] = \"5371\";\n Chain2[\"DFK_CHAIN\"] = \"53935\";\n Chain2[\"OPENPIECE_MAINNET\"] = \"54\";\n Chain2[\"OVERPROTOCOL_MAINNET\"] = \"54176\";\n Chain2[\"EDEXA_MAINNET\"] = \"5424\";\n Chain2[\"ZERO_NETWORK\"] = \"543210\";\n Chain2[\"EGOCHAIN\"] = \"5439\";\n Chain2[\"SAGA\"] = \"5464\";\n Chain2[\"ZYX_MAINNET\"] = \"55\";\n Chain2[\"RIVER\"] = \"550\";\n Chain2[\"TITAN\"] = \"55004\";\n Chain2[\"POINTPAY_MAINNET\"] = \"5511\";\n Chain2[\"SUPERPOSITION\"] = \"55244\";\n Chain2[\"VELA1_CHAIN_MAINNET\"] = \"555\";\n Chain2[\"NAHMII_2_MAINNET\"] = \"5551\";\n Chain2[\"CHAIN_VERSE_MAINNET\"] = \"5555\";\n Chain2[\"REI_CHAIN_MAINNET\"] = \"55555\";\n Chain2[\"IMVERSED_MAINNET\"] = \"5555555\";\n Chain2[\"DUSTBOY_IOT\"] = \"555888\";\n Chain2[\"FLAMMA_MAINNET\"] = \"55614\";\n Chain2[\"BNB_SMART_CHAIN_MAINNET\"] = \"56\";\n Chain2[\"LAMBDA_CHAIN_MAINNET\"] = \"56026\";\n Chain2[\"BOBA_BNB_MAINNET\"] = \"56288\";\n Chain2[\"QIE_BLOCKCHAIN\"] = \"5656\";\n Chain2[\"TANSSI_DEMO\"] = \"5678\";\n Chain2[\"VELO_LABS_MAINNET\"] = \"56789\";\n Chain2[\"SYSCOIN_MAINNET\"] = \"57\";\n Chain2[\"ROLLUX_MAINNET\"] = \"570\";\n Chain2[\"INK\"] = \"57073\";\n Chain2[\"METACHAIN_MAINNET\"] = \"571\";\n Chain2[\"COINSEC_NETWORK\"] = \"57451\";\n Chain2[\"FILENOVA_MAINNET\"] = \"579\";\n Chain2[\"ONTOLOGY_MAINNET\"] = \"58\";\n Chain2[\"TANGLE\"] = \"5845\";\n Chain2[\"CHANG_CHAIN_FOUNDATION_MAINNET\"] = \"5858\";\n Chain2[\"WEGOCHAIN_RUBIDIUM_MAINNET\"] = \"5869\";\n Chain2[\"LINEA\"] = \"59144\";\n Chain2[\"ASTAR\"] = \"592\";\n Chain2[\"GENESYS_CODE_MAINNET\"] = \"59971\";\n Chain2[\"GOCHAIN\"] = \"60\";\n Chain2[\"BOUNCEBIT_MAINNET\"] = \"6001\";\n Chain2[\"TRES_MAINNET\"] = \"6066\";\n Chain2[\"BOB\"] = \"60808\";\n Chain2[\"ETHEREUM_CLASSIC\"] = \"61\";\n Chain2[\"ORANGE_CHAIN_MAINNET\"] = \"61022\";\n Chain2[\"TREASURE\"] = \"61166\";\n Chain2[\"UPTN\"] = \"6119\";\n Chain2[\"EIOB_MAINNET\"] = \"612\";\n Chain2[\"GRAPHLINQ_BLOCKCHAIN_MAINNET\"] = \"614\";\n Chain2[\"KAICHAIN\"] = \"61406\";\n Chain2[\"ETICA_MAINNET\"] = \"61803\";\n Chain2[\"SKYNET\"] = \"619\";\n Chain2[\"DOKEN_SUPER_CHAIN_MAINNET\"] = \"61916\";\n Chain2[\"OPTOPIA_MAINNET\"] = \"62050\";\n Chain2[\"HYPRA_MAINNET\"] = \"622277\";\n Chain2[\"BINARY_MAINNET\"] = \"624\";\n Chain2[\"MULTIVAC_MAINNET\"] = \"62621\";\n Chain2[\"RAILS\"] = \"6278\";\n Chain2[\"LAOS\"] = \"6283\";\n Chain2[\"ESYNC_NETWORK_MAINNET\"] = \"63000\";\n Chain2[\"GEIST_MAINNET\"] = \"63157\";\n Chain2[\"NFB_CHAIN\"] = \"632\";\n Chain2[\"AURA_MAINNET\"] = \"6322\";\n Chain2[\"AVOCADO\"] = \"634\";\n Chain2[\"BEAR_NETWORK_CHAIN_MAINNET\"] = \"641230\";\n Chain2[\"ENDURANCE_SMART_CHAIN_MAINNET\"] = \"648\";\n Chain2[\"ALL_MAINNET\"] = \"651940\";\n Chain2[\"VECNO_MAINNET\"] = \"65357\";\n Chain2[\"KALICHAIN\"] = \"654\";\n Chain2[\"SCOLCOIN_MAINNET\"] = \"65450\";\n Chain2[\"CYBERCHAIN_MAINNET\"] = \"65535\";\n Chain2[\"AUTOMATA_MAINNET\"] = \"65536\";\n Chain2[\"OKXCHAIN_MAINNET\"] = \"66\";\n Chain2[\"XAI_MAINNET\"] = \"660279\";\n Chain2[\"ULTRONSMARTCHAIN\"] = \"662\";\n Chain2[\"PIXIE_CHAIN_MAINNET\"] = \"6626\";\n Chain2[\"CYBRIA_MAINNET\"] = \"6661\";\n Chain2[\"PDC_MAINNET\"] = \"666301171999\";\n Chain2[\"SAFEANWANG_MAINNET\"] = \"6666665\";\n Chain2[\"DEGEN_CHAIN\"] = \"666666666\";\n Chain2[\"STORCHAIN\"] = \"6667\";\n Chain2[\"EDGE_MATRIX_CHAIN\"] = \"6678\";\n Chain2[\"JUNCACHAIN\"] = \"668\";\n Chain2[\"CONWAI_MAINNET\"] = \"668668\";\n Chain2[\"IRISHUB\"] = \"6688\";\n Chain2[\"PAXB_MAINNET\"] = \"6701\";\n Chain2[\"COMPVERSE_MAINNET\"] = \"6779\";\n Chain2[\"GOLD_SMART_CHAIN_MAINNET\"] = \"6789\";\n Chain2[\"RACE_MAINNET\"] = \"6805\";\n Chain2[\"KARURA_NETWORK\"] = \"686\";\n Chain2[\"POOLS_MAINNET\"] = \"6868\";\n Chain2[\"WON_NETWORK\"] = \"686868\";\n Chain2[\"DM2_VERSE_MAINNET\"] = \"68770\";\n Chain2[\"MTT_MAINNET\"] = \"6880\";\n Chain2[\"REDSTONE\"] = \"690\";\n Chain2[\"LAIKA_MAINNET\"] = \"6942\";\n Chain2[\"TOMB_CHAIN_MAINNET\"] = \"6969\";\n Chain2[\"MATCHAIN\"] = \"698\";\n Chain2[\"THAICHAIN\"] = \"7\";\n Chain2[\"HOO_SMART_CHAIN\"] = \"70\";\n Chain2[\"ZETACHAIN_MAINNET\"] = \"7000\";\n Chain2[\"THINKIUM_MAINNET_CHAIN_0\"] = \"70000\";\n Chain2[\"THINKIUM_MAINNET_CHAIN_1\"] = \"70001\";\n Chain2[\"THINKIUM_MAINNET_CHAIN_2\"] = \"70002\";\n Chain2[\"BST_CHAIN\"] = \"7007\";\n Chain2[\"THINKIUM_MAINNET_CHAIN_103\"] = \"70103\";\n Chain2[\"ELLA_THE_HEART\"] = \"7027\";\n Chain2[\"FIDESINNOVA\"] = \"706883\";\n Chain2[\"BLOCKCHAIN_STATION_MAINNET\"] = \"707\";\n Chain2[\"PLANQ_MAINNET\"] = \"7070\";\n Chain2[\"PROOF_OF_PLAY_APEX\"] = \"70700\";\n Chain2[\"PROOF_OF_PLAY_BOSS\"] = \"70701\";\n Chain2[\"HIGHBURY\"] = \"710\";\n Chain2[\"NUME\"] = \"7100\";\n Chain2[\"TILTYARD_MAINNET_SUBNET\"] = \"710420\";\n Chain2[\"GUAPCOINX\"] = \"71111\";\n Chain2[\"ZERO_XL3\"] = \"7117\";\n Chain2[\"VRCSCAN_MAINNET\"] = \"713\";\n Chain2[\"GODWOKEN_MAINNET\"] = \"71402\";\n Chain2[\"ZETHER_MAINNET\"] = \"715131\";\n Chain2[\"BITROCK_MAINNET\"] = \"7171\";\n Chain2[\"SHIBARIUM_BETA\"] = \"719\";\n Chain2[\"EXSAT_MAINNET\"] = \"7200\";\n Chain2[\"LYCAN_CHAIN\"] = \"721\";\n Chain2[\"ERAM_MAINNET\"] = \"721529\";\n Chain2[\"SAAKURU_MAINNET\"] = \"7225878\";\n Chain2[\"INITVERSE_MAINNET\"] = \"7233\";\n Chain2[\"TRON_MAINNET\"] = \"728126428\";\n Chain2[\"CAGA_MAINNET\"] = \"72888\";\n Chain2[\"GROK_CHAIN_MAINNET\"] = \"72992\";\n Chain2[\"FNCY\"] = \"73\";\n Chain2[\"LOVELY_NETWORK_MAINNET\"] = \"730\";\n Chain2[\"XPLA_VERSE\"] = \"7300\";\n Chain2[\"ICB_NETWORK\"] = \"73115\";\n Chain2[\"HORIZEN_EON_MAINNET\"] = \"7332\";\n Chain2[\"SHYFT_MAINNET\"] = \"7341\";\n Chain2[\"OPENVESSEL\"] = \"7355310\";\n Chain2[\"MIXIN_VIRTUAL_MACHINE\"] = \"73927\";\n Chain2[\"IDCHAIN_MAINNET\"] = \"74\";\n Chain2[\"TRANCHED_MAINNET\"] = \"743\";\n Chain2[\"EVM_ON_FLOW\"] = \"747\";\n Chain2[\"RABA_NETWORK_MAINNET\"] = \"7484\";\n Chain2[\"DECIMAL_SMART_CHAIN_MAINNET\"] = \"75\";\n Chain2[\"MEVERSE_CHAIN_MAINNET\"] = \"7518\";\n Chain2[\"TERNOA\"] = \"752025\";\n Chain2[\"RIVALZ\"] = \"753\";\n Chain2[\"GEEK_VERSE_MAINNET\"] = \"75512\";\n Chain2[\"CYBER_MAINNET\"] = \"7560\";\n Chain2[\"PAYSCAN_CHAIN\"] = \"756689\";\n Chain2[\"ADIL_CHAIN_V2_MAINNET\"] = \"7576\";\n Chain2[\"MIEXS_SMARTCHAIN\"] = \"761412\";\n Chain2[\"QL1\"] = \"766\";\n Chain2[\"THE_ROOT_NETWORK_MAINNET\"] = \"7668\";\n Chain2[\"POA_NETWORK_SOKOL\"] = \"77\";\n Chain2[\"CANTO\"] = \"7700\";\n Chain2[\"BORACHAIN_MAINNET\"] = \"77001\";\n Chain2[\"VENTION_SMART_CHAIN_MAINNET\"] = \"77612\";\n Chain2[\"MODULARIUM\"] = \"776877\";\n Chain2[\"GDCC_MAINNET\"] = \"7774\";\n Chain2[\"PANDASEA_MAINNET\"] = \"7776\";\n Chain2[\"TORONET_MAINNET\"] = \"77777\";\n Chain2[\"ZORA\"] = \"7777777\";\n Chain2[\"ORENIUM_MAINNET_PROTOCOL\"] = \"7778\";\n Chain2[\"DRAGONFLY_MAINNET_HEXAPOD\"] = \"78281\";\n Chain2[\"AMPLIFY_SUBNET\"] = \"78430\";\n Chain2[\"BULLETIN_SUBNET\"] = \"78431\";\n Chain2[\"CONDUIT_SUBNET\"] = \"78432\";\n Chain2[\"MAAL_CHAIN\"] = \"786\";\n Chain2[\"MAALCHAIN_V2\"] = \"7862\";\n Chain2[\"POWERLOOM_MAINNET\"] = \"7865\";\n Chain2[\"ZEBRO_SMART_CHAIN\"] = \"786786\";\n Chain2[\"ACALA_NETWORK\"] = \"787\";\n Chain2[\"KINTO_MAINNET\"] = \"7887\";\n Chain2[\"PATEX\"] = \"789\";\n Chain2[\"ARDENIUM_ATHENA\"] = \"7895\";\n Chain2[\"ARENA_Z\"] = \"7897\";\n Chain2[\"ZENITH_MAINNET\"] = \"79\";\n Chain2[\"DOT_BLOX\"] = \"7923\";\n Chain2[\"MO_MAINNET\"] = \"7924\";\n Chain2[\"SX_TORONTO_ROLLUP\"] = \"79479957\";\n Chain2[\"DOS_CHAIN\"] = \"7979\";\n Chain2[\"UBIQ\"] = \"8\";\n Chain2[\"GENECHAIN\"] = \"80\";\n Chain2[\"LUCID_BLOCKCHAIN\"] = \"800\";\n Chain2[\"TELEPORT\"] = \"8000\";\n Chain2[\"OCTASPACE\"] = \"800001\";\n Chain2[\"PLIAN_MAINNET_SUBCHAIN_1\"] = \"8007736\";\n Chain2[\"POLYNOMIAL\"] = \"8008\";\n Chain2[\"FHENIX_HELIUM\"] = \"8008135\";\n Chain2[\"BERACHAIN\"] = \"80094\";\n Chain2[\"HIZOCO_MAINNET\"] = \"80096\";\n Chain2[\"ISUNCOIN_MAINNET\"] = \"8017\";\n Chain2[\"BOAT_MAINNET\"] = \"8047\";\n Chain2[\"EVOZ_MAINNET\"] = \"805\";\n Chain2[\"SHARDEUM_LIBERTY_1_X\"] = \"8080\";\n Chain2[\"HOKUM\"] = \"8080808\";\n Chain2[\"SHARDEUM_LIBERTY_2_X\"] = \"8081\";\n Chain2[\"SHARDEUM_SPHINX_1_X\"] = \"8082\";\n Chain2[\"FORTA_CHAIN\"] = \"80931\";\n Chain2[\"JAPAN_OPEN_CHAIN_MAINNET\"] = \"81\";\n Chain2[\"ZKLINK_NOVA_MAINNET\"] = \"810180\";\n Chain2[\"NORDEK_MAINNET\"] = \"81041\";\n Chain2[\"SG_VERSE_MAINNET\"] = \"812397\";\n Chain2[\"QITMEER_NETWORK_MAINNET\"] = \"813\";\n Chain2[\"BLAST\"] = \"81457\";\n Chain2[\"QUANTUM_CHAIN_MAINNET\"] = \"81720\";\n Chain2[\"BEONE_CHAIN_MAINNET\"] = \"818\";\n Chain2[\"TORUS_MAINNET\"] = \"8192\";\n Chain2[\"METER_MAINNET\"] = \"82\";\n Chain2[\"CALLISTO_MAINNET\"] = \"820\";\n Chain2[\"KAIA_MAINNET\"] = \"8217\";\n Chain2[\"SPACE_SUBNET\"] = \"8227\";\n Chain2[\"DAILY_NETWORK_MAINNET\"] = \"824\";\n Chain2[\"VEMP_HORIZON\"] = \"82614\";\n Chain2[\"BLOCKTON_BLOCKCHAIN\"] = \"8272\";\n Chain2[\"CURVE_MAINNET\"] = \"827431\";\n Chain2[\"LORENZO\"] = \"8329\";\n Chain2[\"B3\"] = \"8333\";\n Chain2[\"ZEDXION\"] = \"83872\";\n Chain2[\"TARAXA_MAINNET\"] = \"841\";\n Chain2[\"THAT_MAINNET\"] = \"8428\";\n Chain2[\"BASE\"] = \"8453\";\n Chain2[\"O_CHAIN\"] = \"84841\";\n Chain2[\"AERIE_NETWORK\"] = \"84886\";\n Chain2[\"HONGKONG_MAINNET\"] = \"852\";\n Chain2[\"DODAO\"] = \"855456\";\n Chain2[\"GATECHAIN_MAINNET\"] = \"86\";\n Chain2[\"ELECTRA_NETWORK\"] = \"861\";\n Chain2[\"HELA_OFFICIAL_RUNTIME_MAINNET\"] = \"8668\";\n Chain2[\"FANTASIA_CHAIN_MAINNET\"] = \"868\";\n Chain2[\"NOVA_NETWORK\"] = \"87\";\n Chain2[\"TOOL_GLOBAL_MAINNET\"] = \"8723\";\n Chain2[\"STORAGECHAIN_MAINNET\"] = \"8726\";\n Chain2[\"BULLIONS_SMART_CHAIN\"] = \"8732\";\n Chain2[\"ALPH_NETWORK\"] = \"8738\";\n Chain2[\"BANDAI_NAMCO_RESEARCH_VERSE_MAINNET\"] = \"876\";\n Chain2[\"DEXIT_NETWORK\"] = \"877\";\n Chain2[\"BLOCX_MAINNET\"] = \"879151\";\n Chain2[\"HAPCHAIN\"] = \"8794598\";\n Chain2[\"AMBROS_CHAIN_MAINNET\"] = \"880\";\n Chain2[\"HAVEN1\"] = \"8811\";\n Chain2[\"IOTA_EVM\"] = \"8822\";\n Chain2[\"MARO_BLOCKCHAIN_MAINNET\"] = \"8848\";\n Chain2[\"INOAI\"] = \"88559\";\n Chain2[\"SUPERLUMIO\"] = \"8866\";\n Chain2[\"LIF3_CHAIN\"] = \"8869\";\n Chain2[\"WANCHAIN\"] = \"888\";\n Chain2[\"UNIQUE\"] = \"8880\";\n Chain2[\"ZKASINO_MAINNET\"] = \"88800\";\n Chain2[\"QUARTZ_BY_UNIQUE\"] = \"8881\";\n Chain2[\"UNIT_ZERO_STAGENET\"] = \"88819\";\n Chain2[\"SAPPHIRE_BY_UNIQUE\"] = \"8883\";\n Chain2[\"XANACHAIN\"] = \"8888\";\n Chain2[\"CHILIZ_CHAIN_MAINNET\"] = \"88888\";\n Chain2[\"REXX_MAINNET\"] = \"888882\";\n Chain2[\"VISION_MAINNET\"] = \"888888\";\n Chain2[\"T_E_A_M_BLOCKCHAIN\"] = \"88888888\";\n Chain2[\"ANCIENT8\"] = \"888888888\";\n Chain2[\"UNITE\"] = \"88899\";\n Chain2[\"MAMMOTH_MAINNET\"] = \"8898\";\n Chain2[\"JIBCHAIN_L1\"] = \"8899\";\n Chain2[\"PTCESCAN_MAINNET\"] = \"889910246\";\n Chain2[\"ALGEN\"] = \"8911\";\n Chain2[\"ALGEN_LAYER2\"] = \"8921\";\n Chain2[\"REYA_CRONOS\"] = \"89346162\";\n Chain2[\"GIANT_MAMMOTH_MAINNET\"] = \"8989\";\n Chain2[\"MAXI_CHAIN_MAINNET\"] = \"899\";\n Chain2[\"GARIZON_STAGE0\"] = \"90\";\n Chain2[\"POSICHAIN_MAINNET_SHARD_0\"] = \"900000\";\n Chain2[\"UBIT_SMARTCHAIN_MAINNET\"] = \"90002\";\n Chain2[\"EVMOS\"] = \"9001\";\n Chain2[\"SHIDO_MAINNET_BLOCK\"] = \"9008\";\n Chain2[\"BERYLBIT_MAINNET\"] = \"9012\";\n Chain2[\"NEXA_MAINNET_BLOCK\"] = \"9025\";\n Chain2[\"GARIZON_STAGE1\"] = \"91\";\n Chain2[\"TAPROOT_MAINNET\"] = \"911\";\n Chain2[\"HENEZ_CHAIN_MAINNET\"] = \"91111\";\n Chain2[\"METADAP_ENTERPRISE_MAINNET\"] = \"91120\";\n Chain2[\"ASTRIA_EVM_DUSKNET\"] = \"912559\";\n Chain2[\"SLERFCHAIN_MAINNET\"] = \"918\";\n Chain2[\"GARIZON_STAGE2\"] = \"92\";\n Chain2[\"CODEFIN_MAINNET\"] = \"9223\";\n Chain2[\"YIDARK_CHAIN_MAINNET\"] = \"927\";\n Chain2[\"GARIZON_STAGE3\"] = \"93\";\n Chain2[\"XCAP\"] = \"9322252\";\n Chain2[\"HAUST_MAINNET\"] = \"938\";\n Chain2[\"EVOKE_MAINNET\"] = \"9395\";\n Chain2[\"SWISSDLT\"] = \"94\";\n Chain2[\"CAMDL_MAINNET\"] = \"95\";\n Chain2[\"SRICHAIN\"] = \"95432\";\n Chain2[\"JONO12_SUBNET\"] = \"955081\";\n Chain2[\"ELUVIO_CONTENT_FABRIC\"] = \"955305\";\n Chain2[\"LYRA_CHAIN\"] = \"957\";\n Chain2[\"BITKUB_CHAIN\"] = \"96\";\n Chain2[\"BTC20_SMART_CHAIN\"] = \"963\";\n Chain2[\"LUX_MAINNET\"] = \"96369\";\n Chain2[\"ETHXY\"] = \"969\";\n Chain2[\"REBUS_MAINNET\"] = \"9696\";\n Chain2[\"OORT_MAINNET\"] = \"970\";\n Chain2[\"TETRON_SMART_CHAIN\"] = \"97055\";\n Chain2[\"OORT_ASCRAEUS\"] = \"972\";\n Chain2[\"PALM_SMART_CHAIN\"] = \"973\";\n Chain2[\"SIDRA_CHAIN\"] = \"97453\";\n Chain2[\"METABENZ_CHAIN\"] = \"97766\";\n Chain2[\"PEPENETWORK_MAINNET\"] = \"9779\";\n Chain2[\"OPTIMUSZ7_MAINNET\"] = \"9797\";\n Chain2[\"SIX_PROTOCOL\"] = \"98\";\n Chain2[\"TOP_MAINNET_EVM\"] = \"980\";\n Chain2[\"IMPERIUM_MAINNET\"] = \"9819\";\n Chain2[\"FORMA\"] = \"984122\";\n Chain2[\"FORMA_SKETCHPAD\"] = \"984123\";\n Chain2[\"MEMO_SMART_CHAIN_MAINNET\"] = \"985\";\n Chain2[\"BINARYCHAIN_MAINNET\"] = \"987\";\n Chain2[\"ECROX_CHAIN_MAINNET\"] = \"988207\";\n Chain2[\"PLUME_LEGACY\"] = \"98865\";\n Chain2[\"DOGELAYER_MAINNET\"] = \"9888\";\n Chain2[\"LARISSA_CHAIN\"] = \"9898\";\n Chain2[\"POA_NETWORK_CORE\"] = \"99\";\n Chain2[\"ELIBERTY_MAINNET\"] = \"990\";\n Chain2[\"ZYTRON_LINEA_MAINNET\"] = \"9901\";\n Chain2[\"ESPENTO_MAINNET\"] = \"9911\";\n Chain2[\"LUMIA_MAINNET\"] = \"994873017\";\n Chain2[\"FIVE_IRECHAIN_MAINNET\"] = \"995\";\n Chain2[\"COMBO_MAINNET\"] = \"9980\";\n Chain2[\"VOLLEY_MAINNET\"] = \"9981\";\n Chain2[\"MFEV_CHAIN_MAINNET\"] = \"9982\";\n Chain2[\"AGUNG_NETWORK\"] = \"9990\";\n Chain2[\"MIND_SMART_CHAIN_MAINNET\"] = \"9996\";\n Chain2[\"AMCHAIN\"] = \"999999\";\n Chain2[\"FLUENCE\"] = \"9999999\";\n Chain2[\"VOLCANO_CHAIN_MAINNET\"] = \"10085\";\n Chain2[\"BEVM_SIGNET\"] = \"11504\";\n Chain2[\"BASECAMP\"] = \"123420001114\";\n Chain2[\"COINZAX\"] = \"1310\";\n Chain2[\"TUXAPPCOIN\"] = \"1313161573\";\n Chain2[\"REACTIVE_MAINNET\"] = \"1597\";\n Chain2[\"MUD_CHAIN\"] = \"168169\";\n Chain2[\"PRIVIX_CHAIN_MAINNET\"] = \"16969696\";\n Chain2[\"WITNESS_CHAIN\"] = \"1702448187\";\n Chain2[\"ETHPAR_MAINNET\"] = \"1727\";\n Chain2[\"ACTION_MAINNET\"] = \"21000\";\n Chain2[\"MAGICHAIN\"] = \"24125\";\n Chain2[\"ATLETA_NETWORK\"] = \"2440\";\n Chain2[\"APERTUM\"] = \"2786\";\n Chain2[\"XFERCHAIN_MAINNET\"] = \"28125\";\n Chain2[\"ZKCANDY_MAINNET\"] = \"320\";\n Chain2[\"PEPE_UNCHAINED\"] = \"3409\";\n Chain2[\"XONE_MAINNET\"] = \"3721\";\n Chain2[\"ARCADIA_MAINNET\"] = \"4278608\";\n Chain2[\"MEMECORE\"] = \"4352\";\n Chain2[\"JUNEO_MAINNET\"] = \"45003\";\n Chain2[\"TRUMPCHAIN\"] = \"4547\";\n Chain2[\"BLACKFORT_EXCHANGE_NETWORK\"] = \"488\";\n Chain2[\"BIRDLAYER\"] = \"53456\";\n Chain2[\"RARIMO\"] = \"7368\";\n Chain2[\"OONE_CHAIN_MAINNET\"] = \"777888\";\n Chain2[\"EMERALDZ\"] = \"789789\";\n Chain2[\"ONFA_CHAIN\"] = \"8691942025\";\n Chain2[\"WEBER_GOVERNANCE_MAINNET\"] = \"881\";\n Chain2[\"MIRACLE_CHAIN\"] = \"92278\";\n Chain2[\"Z_CHAIN\"] = \"9369\";\n Chain2[\"LUMOZ_CHAIN_MAINNET\"] = \"96370\";\n Chain2[\"LAGOM_MAINNET\"] = \"986\";\n Chain2[\"PLUME_MAINNET\"] = \"98866\";\n Chain2[\"POINTLEDGER\"] = \"9889\";\n Chain2[\"FUEL\"] = \"fuel\";\n Chain2[\"SOCOTRA_JUNE_CHAIN\"] = \"101003\";\n Chain2[\"OPENGPU_MAINNET\"] = \"1071\";\n Chain2[\"STATEMESH\"] = \"1134\";\n Chain2[\"PERENNIAL\"] = \"1424\";\n Chain2[\"ONINO_MAINNET\"] = \"1425\";\n Chain2[\"EVENTUM_MAINNET\"] = \"161803\";\n Chain2[\"ESPORTS_CHAIN\"] = \"17735\";\n Chain2[\"SWISSTRONIK_MAINNET\"] = \"1848\";\n Chain2[\"ALTBLOCKSCAN_MAINNET\"] = \"191919\";\n Chain2[\"FIRACHAIN\"] = \"194\";\n Chain2[\"XPHERE_MAINNET\"] = \"20250217\";\n Chain2[\"VCITYCHAIN_MAINNET\"] = \"20250825\";\n Chain2[\"IDN_MAINNET\"] = \"215\";\n Chain2[\"CHOOCHAIN\"] = \"247\";\n Chain2[\"TRON_SHASTA\"] = \"2494104990\";\n Chain2[\"COTI\"] = \"2632500\";\n Chain2[\"MEZO\"] = \"31612\";\n Chain2[\"BASEDAI\"] = \"32323\";\n Chain2[\"PENTAGON_CHAIN\"] = \"3344\";\n Chain2[\"R5_NETWORK\"] = \"337\";\n Chain2[\"GUNZ\"] = \"43419\";\n Chain2[\"JUNEO_DAI1_CHAIN\"] = \"45004\";\n Chain2[\"JUNEO_USDT1_CHAIN\"] = \"45005\";\n Chain2[\"JUNEO_USD1_CHAIN\"] = \"45006\";\n Chain2[\"JUNEO_MBTC1_CHAIN\"] = \"45007\";\n Chain2[\"JUNEO_GLD1_CHAIN\"] = \"45008\";\n Chain2[\"JUNEO_LTC1_CHAIN\"] = \"45009\";\n Chain2[\"JUNEO_DOGE1_CHAIN\"] = \"45010\";\n Chain2[\"JUNEO_EUR1_CHAIN\"] = \"45011\";\n Chain2[\"JUNEO_SGD1_CHAIN\"] = \"45012\";\n Chain2[\"JUNEO_BCH1_CHAIN\"] = \"45013\";\n Chain2[\"JUNEO_LINK1_CHAIN\"] = \"45014\";\n Chain2[\"INERTIA_SCAN\"] = \"5433\";\n Chain2[\"WINR_PROTOCOL_MAINNET\"] = \"777777\";\n Chain2[\"DRAW_COIN\"] = \"7788\";\n Chain2[\"POWERLOOM_MAINNET_V2\"] = \"7869\";\n Chain2[\"SHARDEUM\"] = \"8118\";\n Chain2[\"XCHAIN\"] = \"94524\";\n Chain2[\"HYPEREVM\"] = \"999\";\n Chain2[\"LAYER_EDGE_MAINNET\"] = \"4207\";\n Chain2[\"ROGUE_CHAIN\"] = \"560013\";\n Chain2[\"DEINFRA_MAINNET\"] = \"100501\";\n Chain2[\"MONSOON_\"] = \"100610\";\n Chain2[\"ALTHEA_L1_MAINNET\"] = \"258432\";\n Chain2[\"REALIO\"] = \"3301\";\n Chain2[\"GANCHAIN_L1\"] = \"4048\";\n Chain2[\"REDDIO\"] = \"50342\";\n Chain2[\"KATANA\"] = \"747474\";\n Chain2[\"ROME_MAINNET_0_PALATINE\"] = \"7531\";\n Chain2[\"ROME_MAINNET_0_AVENTINE\"] = \"7532\";\n Chain2[\"PAY1_NETWORK\"] = \"98964\";\n Chain2[\"ENI_MAINNET\"] = \"173\";\n Chain2[\"HUMANITY_PROTOCOL\"] = \"6985385\";\n Chain2[\"WORLDMOBILECHAIN_MAINNET\"] = \"869\";\n Chain2[\"PLASMA_MAINNET\"] = \"9745\";\n Chain2[\"SOVA\"] = \"100021\";\n Chain2[\"OPENLEDGER_MAINNET\"] = \"1612\";\n Chain2[\"STUDIO_BLOCKCHAIN_MAINNET\"] = \"240241\";\n Chain2[\"JOVAY_MAINNET\"] = \"5734951\";\n Chain2[\"MANTRACHAIN_MAINNET\"] = \"5888\";\n return Chain2;\n})(Chain || {});\n\nexport { Chain };\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../utils/multicall'\nimport {\n getAaveAssets,\n getAaveTypePoolAddress,\n getAaveTypePoolDataProviderAddress,\n} from '../../assets'\nimport { isAaveV32Type } from '../../utils'\nimport { Chain } from '@1delta/chain-registry'\n\nfunction range(n: number): number[] {\n return Array.from({ length: n + 1 }, (_, i) => i)\n}\n\n/** Dynamic E-mode lengths for querying as Aave V3 can have quite a lot */\nexport const AAVE_V3_EMODES = (chain: string, lender: string) => {\n if (chain === Chain.ETHEREUM_MAINNET) {\n if (lender === Lender.AAVE_V3) return range(33)\n if (lender === Lender.AAVE_V3_PRIME) return range(10)\n }\n if (chain === Chain.ARBITRUM_ONE) {\n if (lender === Lender.AAVE_V3) return range(10)\n }\n if (chain === Chain.BASE) {\n if (lender === Lender.AAVE_V3) return range(12)\n }\n\n if (chain === Chain.PLASMA_MAINNET) {\n if (lender === Lender.AAVE_V3) return range(12)\n }\n\n return [0, 1, 2, 3, 4, 5, 6]\n}\n\nfunction yldrBaseline(assetsToQuery: string[], providerAddress: string) {\n return assetsToQuery.flatMap((tk) => [\n {\n address: providerAddress,\n name: 'getReserveData',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getReserveConfigurationData',\n params: [tk],\n },\n ])\n}\n\nfunction aaveV3baseline(\n assetsToQuery: string[],\n providerAddress: string,\n poolAddress: string,\n legacy = false,\n) {\n const callDecimals: Call = {\n address: providerAddress,\n name: 'getDebtCeilingDecimals',\n params: [],\n }\n\n const callReservesList: Call = {\n address: poolAddress,\n name: 'getReservesList',\n params: [],\n }\n\n const callsBase = assetsToQuery.flatMap((tk) => [\n {\n address: providerAddress,\n name: 'getReserveData',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getReserveConfigurationData',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getSiloedBorrowing',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getReserveCaps',\n params: [tk],\n },\n {\n address: providerAddress,\n name: 'getDebtCeiling',\n params: [tk],\n },\n ...(legacy\n ? [\n {\n address: providerAddress,\n name: 'getReserveEModeCategory',\n params: [tk],\n },\n ]\n : []),\n ])\n\n return {\n callsBase,\n callReservesList,\n callDecimals,\n }\n}\n\nexport const buildAaveV3StyleLenderReserveCall = (\n chainId: string,\n lender: string,\n) => {\n const providerAddress = getAaveTypePoolDataProviderAddress(chainId, lender)\n const assetsToQuery = getAaveAssets(chainId, lender)\n const poolAddress = getAaveTypePoolAddress(chainId, lender)\n if (isAaveV32Type(lender)) {\n const getEModeCategoryData: Call[] = AAVE_V3_EMODES(\n chainId,\n lender,\n ).flatMap((eMode) => {\n return [\n {\n address: poolAddress,\n name: 'getEModeCategoryData',\n params: [eMode],\n },\n {\n address: poolAddress,\n name: 'getEModeCategoryBorrowableBitmap',\n params: [eMode],\n },\n {\n address: poolAddress,\n name: 'getEModeCategoryCollateralBitmap',\n params: [eMode],\n },\n ]\n })\n\n const { callDecimals, callReservesList, callsBase } = aaveV3baseline(\n assetsToQuery,\n providerAddress,\n poolAddress,\n )\n\n const calls = [\n ...callsBase,\n ...getEModeCategoryData,\n callReservesList,\n callDecimals,\n ]\n return calls\n }\n switch (lender) {\n case Lender.YLDR: {\n const calls = yldrBaseline(assetsToQuery, providerAddress)\n return calls\n }\n default: {\n const getEModeCategoryData: Call[] = AAVE_V3_EMODES(\n chainId,\n lender,\n ).flatMap((eMode) => ({\n address: poolAddress,\n name: 'getEModeCategoryData',\n params: [eMode],\n }))\n\n const { callDecimals, callsBase } = aaveV3baseline(\n assetsToQuery,\n providerAddress,\n poolAddress,\n true,\n )\n\n const calls = [...callsBase, ...getEModeCategoryData, callDecimals]\n return calls\n }\n }\n}\n","import { Chain } from '@1delta/chain-registry'\n\nexport function getInitPosManagerAddress(chainId: string) {\n // @ts-ignore\n return addressesInitCore.PosManager[chainId]\n}\n\nexport function getInitCoreAddress(chainId: string) {\n // @ts-ignore\n return addressesInitCore.Core[chainId]\n}\n\nexport function getInitLensAddress(chainId: string) {\n // @ts-ignore\n return addressesInitCore.PublicLens[chainId]\n}\n\nconst addressesInitCore = {\n InitOracle: {\n [Chain.MANTLE]: '0x4E195A32b2f6eBa9c4565bA49bef34F23c2C0350',\n },\n Core: {\n [Chain.MANTLE]: '0x972BcB0284cca0152527c4f70f8F689852bCAFc5',\n },\n Config: {\n [Chain.MANTLE]: '0x007F91636E0f986068Ef27c950FA18734BA553Ac',\n },\n PosManager: {\n [Chain.MANTLE]: '0x0e7401707CD08c03CDb53DAEF3295DDFb68BBa92',\n },\n Lens: {\n [Chain.MANTLE]: '0x7d2b278b8ef87bEb83AeC01243ff2Fed57456042',\n },\n PublicLens: {\n [Chain.MANTLE]: '0xDf75fF0452eDf4897B051A54b406eB384503Ac39',\n },\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../utils/multicall'\nimport { getInitLensAddress } from '../addresses/init'\n\nexport const INIT_MODES = [1, 2, 3, 4, 5, 6]\n\nexport const INIT_EMODE_LABELS: { [mode: number]: string } = {\n [1]: 'Default',\n [2]: 'Blue Chip Volatile',\n [3]: 'Stablecoins',\n [4]: 'ETH correlated',\n [5]: 'Ethena',\n [6]: 'BTC',\n}\n\nexport const buildInitStyleLenderReserveCall = (\n chainId: string,\n lender: Lender,\n) => {\n const lensAddress = getInitLensAddress(chainId)\n const calls: Call[] = INIT_MODES.map((mode) => {\n return {\n address: lensAddress,\n name: 'getMarketData',\n params: [mode],\n }\n })\n\n return calls\n}\n","import { Chain } from '@1delta/chain-registry'\nimport { Lender } from '@1delta/lender-registry'\nimport { compoundV3BaseData, compoundV3Pools } from '@1delta/data-sdk'\n\nexport function getCompoundV3CometAddress(\n chainId: string,\n lender: string = Lender.COMPOUND_V3_USDCE,\n): string | undefined {\n return compoundV3Pools()?.[chainId]?.[lender]\n}\n\nexport function getCompoundV3CometRewardsAddress(chainId: string) {\n // @ts-ignore\n return addressesCompoundV3.cometRewards[chainId]\n}\n\nexport function getCompoundV3CometLens(chainId: string) {\n // @ts-ignore\n return addressesCompoundV3.lens[chainId]\n}\n\nconst addressesCompoundV3 = {\n lens: {\n [Chain.POLYGON_MAINNET]: '0x4eDA401658c5286d16c4d342884F32280B4E8b1b',\n [Chain.MANTLE]: '0x32B31A066c8dd3F7b77283Ba1d89Ddaf6DA0a8aE',\n [Chain.ARBITRUM_ONE]: '0x13D9c35f4901491Ac4FFebd3100238BBfFBD7181',\n [Chain.BASE]: '0x7e2D250E4FD0EeD6BD2cB3DC525A2b9f12508152',\n [Chain.OP_MAINNET]: '0xA453ba397c61B0c292EA3959A858821145B2707F',\n [Chain.ETHEREUM_MAINNET]: '0xCe434378adacC51d54312c872113D687Ac19B516',\n [Chain.UNICHAIN]: '0x0bd7473CbBf81d9dD936c61117eD230d95006CA2',\n [Chain.LINEA]: '0x7a59ddbB76521E8982Fa3A08598C9a83b14A6C07',\n [Chain.SCROLL]: '0x32198Ee619fAd24169fa94A149Cb5205701C6AB1',\n [Chain.PLASMA_MAINNET]: '0x0bd7473CbBf81d9dD936c61117eD230d95006CA2',\n },\n cometRewards: {\n [Chain.POLYGON_MAINNET]: '0x45939657d1CA34A8FA39A924B71D28Fe8431e581',\n [Chain.MANTLE]: '0xCd83CbBFCE149d141A5171C3D6a0F0fCCeE225Ab',\n [Chain.ARBITRUM_ONE]: '0x88730d254A2f7e6AC8388c3198aFd694bA9f7fae',\n [Chain.BASE]: '0x123964802e6ABabBE1Bc9547D72Ef1B69B00A6b1',\n [Chain.OP_MAINNET]: '0x443EA0340cb75a160F31A440722dec7b5bc3C2E9',\n [Chain.ETHEREUM_MAINNET]: '0x1B0e765F6224C21223AeA2af16c1C46E38885a40',\n [Chain.SCROLL]: '0x70167D30964cbFDc315ECAe02441Af747bE0c5Ee',\n [Chain.LINEA]: '0x2c7118c4C88B9841FCF839074c26Ae8f035f2921',\n [Chain.UNICHAIN]: '0x6f7D514bbD4aFf3BcD1140B7344b32f063dEe486',\n },\n}\n\nexport function getCompoundV3BaseAsset(lender: string, chainId: string) {\n return compoundV3BaseData()?.[lender]?.[chainId]\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { getCompoundV3Assets } from '../../assets'\nimport {\n getCompoundV3BaseAsset,\n getCompoundV3CometAddress,\n getCompoundV3CometLens,\n} from '../addresses/compoundV3'\nimport { Call } from '../../utils/multicall'\n\nexport const buildCompoundV3StyleLenderReserveCall = (\n chainId: string,\n lender: string,\n) => {\n const baseAssetData = getCompoundV3BaseAsset(lender, chainId)\n const underlyingArray = getCompoundV3Assets(chainId, lender)\n const cometContractAddress = getCompoundV3CometAddress(chainId, lender)!\n const assetsToQuery = underlyingArray\n const tokensNoBase = assetsToQuery.filter(\n (a) => a !== baseAssetData.baseAsset,\n )\n\n const callsAssetInfoAndTotals: Call[] = tokensNoBase.flatMap((tk) => {\n return [\n {\n address: cometContractAddress,\n name: 'getAssetInfoByAddress',\n params: [tk],\n },\n {\n address: cometContractAddress,\n name: 'totalsCollateral',\n params: [tk],\n },\n ]\n })\n\n const callSupplyRewards: Call = {\n address: cometContractAddress,\n name: 'baseTrackingSupplySpeed',\n params: [],\n }\n\n const callBorrowRewards: Call = {\n address: cometContractAddress,\n name: 'baseTrackingBorrowSpeed',\n params: [],\n }\n\n const callIndexScale: Call = {\n address: cometContractAddress,\n name: 'baseIndexScale',\n params: [],\n }\n\n const callSupply: Call = {\n address: cometContractAddress,\n name: 'totalSupply',\n params: [],\n }\n\n const callBorrow: Call = {\n address: cometContractAddress,\n name: 'totalBorrow',\n params: [],\n }\n\n const callInterest: Call = {\n address: getCompoundV3CometLens(chainId),\n name: 'getCometInterest',\n params: [cometContractAddress],\n }\n const calls = [\n ...callsAssetInfoAndTotals,\n callSupplyRewards,\n callBorrowRewards,\n callIndexScale, // rewards data\n callSupply,\n callBorrow, // supply / borrow\n callInterest,\n ]\n return calls\n}\n","import { BaseError } from './base.js'\n\nexport type InvalidDecimalNumberErrorType = InvalidDecimalNumberError & {\n name: 'InvalidDecimalNumberError'\n}\nexport class InvalidDecimalNumberError extends BaseError {\n constructor({ value }: { value: string }) {\n super(`Number \\`${value}\\` is not a valid decimal number.`, {\n name: 'InvalidDecimalNumberError',\n })\n }\n}\n","import { InvalidDecimalNumberError } from '../../errors/unit.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nexport type ParseUnitsErrorType = ErrorType\n\n/**\n * Multiplies a string representation of a number by a given exponent of base 10 (10exponent).\n *\n * - Docs: https://viem.sh/docs/utilities/parseUnits\n *\n * @example\n * import { parseUnits } from 'viem'\n *\n * parseUnits('420', 9)\n * // 420000000000n\n */\nexport function parseUnits(value: string, decimals: number) {\n if (!/^(-?)([0-9]*)\\.?([0-9]*)$/.test(value))\n throw new InvalidDecimalNumberError({ value })\n\n let [integer, fraction = '0'] = value.split('.')\n\n const negative = integer.startsWith('-')\n if (negative) integer = integer.slice(1)\n\n // trim trailing zeros.\n fraction = fraction.replace(/(0+)$/, '')\n\n // round off if the fraction is larger than the number of decimals.\n if (decimals === 0) {\n if (Math.round(Number(`.${fraction}`)) === 1)\n integer = `${BigInt(integer) + 1n}`\n fraction = ''\n } else if (fraction.length > decimals) {\n const [left, unit, right] = [\n fraction.slice(0, decimals - 1),\n fraction.slice(decimals - 1, decimals),\n fraction.slice(decimals),\n ]\n\n const rounded = Math.round(Number(`${unit}.${right}`))\n if (rounded > 9)\n fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, '0')\n else fraction = `${left}${rounded}`\n\n if (fraction.length > decimals) {\n fraction = fraction.slice(1)\n integer = `${BigInt(integer) + 1n}`\n }\n\n fraction = fraction.slice(0, decimals)\n } else {\n fraction = fraction.padEnd(decimals, '0')\n }\n\n return BigInt(`${negative ? '-' : ''}${integer}${fraction}`)\n}\n","export const ethAddress = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' as const\n\nexport const zeroAddress = '0x0000000000000000000000000000000000000000' as const\n","import { Chain } from '@1delta/chain-registry'\nimport { Lender } from '@1delta/lender-registry'\nimport { formatEther, formatUnits } from 'viem'\nimport { isCompoundV3 } from '.'\n\nexport const BPS = 10000\n\nexport const parseRawAmount = (\n answer?: string | bigint,\n decimals = 18,\n): string => {\n if (!answer || answer === '0x') return '0'\n try {\n return formatUnits(BigInt(answer ?? '0'), decimals ?? 18)\n } catch (e) {\n return '0'\n }\n}\n\nexport enum TimeScale {\n BLOCK,\n MS,\n}\n\nconst BLOCK_TIMES: { [chainId: string]: number } = {\n [Chain.ETHEREUM_MAINNET]: 12,\n [Chain.OP_MAINNET]: 1,\n [Chain.BNB_SMART_CHAIN_MAINNET]: 0.75,\n [Chain.ARBITRUM_ONE]: 1,\n [Chain.OPBNB_MAINNET]: 1,\n [Chain.BASE]: 1,\n}\n\n// Converters from apy to apr and reversed\n\nexport const SECONDS_PER_YEAR = 31536000\n\nexport const aprToApy = (apr: number) => {\n return (1 + apr / SECONDS_PER_YEAR) ** SECONDS_PER_YEAR - 1\n}\n\nexport const apyToApr = (apy: number) => {\n return ((apy + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR\n}\n\nexport const apyToAprPercent = (apy: number) => {\n return (\n 100 * ((apy / 100 + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR\n )\n}\n\nexport const formatAaveYieldToNumber = (n?: string | bigint): number => {\n if (!n) return 0\n return Number(formatEther(BigInt(n) / BigInt(1e7)))\n}\n\nexport const calculateRateForCompound = (\n n: string,\n chainId: string,\n lender: string = Lender.COMPOUND_V3_USDCE,\n): number => {\n let scale = TimeScale.MS\n if (isCompoundV3(lender) || Lender.COMPOUND_V2) {\n scale = TimeScale.BLOCK\n } else if (chainId === Chain.BNB_SMART_CHAIN_MAINNET) {\n scale = TimeScale.BLOCK\n }\n const rate = Number(formatEther(BigInt(n)))\n if (scale === TimeScale.BLOCK)\n return (\n (Math.pow(\n (rate * 60 * 60 * 24) / (BLOCK_TIMES[chainId] ?? '1') + 1,\n 365,\n ) -\n 1) *\n 100\n )\n\n return (Math.pow(rate * 60 * 60 * 24 + 1, 365) - 1) * 100\n}\nexport const calculateRateForCompoundType = (\n n: string,\n chainId: string,\n scale = TimeScale.MS,\n): number => {\n const rate = Number(formatEther(BigInt(n)))\n if (scale === TimeScale.BLOCK)\n return (\n (Math.pow(\n (rate * 60 * 60 * 24) / (BLOCK_TIMES[chainId] ?? '1') + 1,\n 365,\n ) -\n 1) *\n 100\n )\n\n return (Math.pow(rate * 60 * 60 * 24 + 1, 365) - 1) * 100\n}\n\nexport const formatAaveRawApyToApr = (raw: bigint | string | undefined) => {\n const apy = formatAaveYieldToNumber(raw)\n return apyToApr(apy / 100) * 100\n}\n\n// converts rate per second to rate per year\nexport const convertRateToApr = (ratePerSecond: number | string) => {\n const rps = Number(ratePerSecond)\n if (isNaN(rps)) return 0\n return rps * 3600 * 24 * 365 * 100\n}\n\nexport const formatAavePrice = (price: string, exponent = 10n): number => {\n try {\n return Number(\n formatEther(\n BigInt(price ?? '0') *\n // 10^(18 - decimals)\n 10n ** exponent,\n ),\n )\n } catch {\n return NaN\n }\n}\n\nexport const formatMorphoPrice = (\n price: string,\n collateralDec: number,\n debtDec: number,\n): number => {\n try {\n return Number(\n formatUnits(\n BigInt(price ?? '0'),\n // 10^(18 - decimals)\n 36 + collateralDec - debtDec,\n ),\n )\n } catch {\n return NaN\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport {\n getAaveAssets,\n LENDER_MODE_NO_MODE,\n toGenericPriceKey,\n toOracleKey,\n} from '../../assets'\nimport { BPS, formatAaveRawApyToApr, parseRawAmount } from '../../utils/parsing'\nimport {\n AaveV2GeneralPublicResponse,\n AaveV2TypeGetReserveConfigurationData,\n AaveV2TypeGetReserveDataIndexes,\n} from '../../types/lender/aave-v2-types'\nimport { AdditionalYields } from '../../types'\nimport { GenericTokenList } from '../../types'\nimport { Chain } from '@1delta/chain-registry'\n\nexport const getAaveV2ReservesDataConverter = (\n lender: string,\n chainId: string,\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n): [(data: any[]) => AaveV2GeneralPublicResponse | undefined, number] => {\n switch (lender) {\n /** AAVE V2 style with rewards from state */\n default: {\n const assetsToQuery = getAaveAssets(chainId, lender)\n\n const expectedNumberOfCalls = assetsToQuery.length * 2\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n const resultReserves: any = {}\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const reserveData = data[i * 2]\n const configData = data[i * 2 + 1]\n\n const assetMeta = tokenList[asset]\n const decimals = assetMeta?.decimals ?? 18\n\n const totalStableDebt = parseRawAmount(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.totalStableDebt\n ]?.toString(),\n decimals,\n )\n const totalVariableDebt = parseRawAmount(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.totalVariableDebt\n ]?.toString(),\n decimals,\n )\n const liquidity = Number(\n parseRawAmount(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.availableLiquidity\n ]?.toString(),\n decimals,\n ),\n )\n const totalAToken =\n liquidity + Number(totalStableDebt) + Number(totalVariableDebt)\n\n const oracleKey =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n const price = prices[oracleKey] ?? 0\n\n const totalDepositsUSD = Number(totalAToken) * price\n const totalDebtUSD = Number(totalVariableDebt) * price\n\n const collateralActive =\n configData?.[\n AaveV2TypeGetReserveConfigurationData.usageAsCollateralEnabled\n ]\n const borrowingEnabled =\n configData?.[\n AaveV2TypeGetReserveConfigurationData.borrowingEnabled\n ]\n\n resultReserves[asset] = {\n poolId: asset,\n underlying: asset,\n asset: assetMeta,\n // token amounts\n totalDeposits: totalAToken,\n totalDebtStable: totalStableDebt,\n totalDebt: totalVariableDebt,\n totalLiquidity: liquidity,\n // USD amounts\n totalDepositsUSD,\n totalDebtStableUSD: Number(totalStableDebt) * price,\n totalDebtUSD,\n totalLiquidityUSD: liquidity * price,\n // rates\n depositRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.liquidityRate\n ]?.toString(),\n ),\n variableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.variableBorrowRate\n ]?.toString(),\n ),\n stableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV2TypeGetReserveDataIndexes.stableBorrowRate\n ]?.toString(),\n ),\n stakingYield: additionalYields?.intrinsicYields[oracleKey] ?? 0,\n\n // rewards\n rewards:\n lender === Lender.MERIDIAN &&\n chainId === Chain.TAIKO_ALETHIA &&\n additionalYields?.lenderRewards\n ? {\n TAIKO: {\n depositRate:\n additionalYields?.lenderRewards[Lender.MERIDIAN]?.[\n asset\n ]?.deposit ?? 0,\n variableBorrowRate:\n additionalYields?.lenderRewards[Lender.MERIDIAN]?.[\n asset\n ]?.borrow ?? 0,\n stableBorrowRate: 0,\n },\n }\n : {},\n decimals: Number(\n configData?.[AaveV2TypeGetReserveConfigurationData.decimals],\n ),\n config: {\n [LENDER_MODE_NO_MODE]: {\n category: LENDER_MODE_NO_MODE,\n // collateral factors\n borrowCollateralFactor:\n Number(\n configData?.[\n AaveV2TypeGetReserveConfigurationData.ltv\n ].toString(),\n ) / BPS,\n collateralFactor:\n Number(\n configData?.[\n AaveV2TypeGetReserveConfigurationData\n .liquidationThreshold\n ].toString(),\n ) / BPS,\n borrowFactor: 1,\n collateralDisabled: !collateralActive,\n debtDisabled: !borrowingEnabled,\n },\n },\n liquidationBonus:\n Number(\n configData?.[\n AaveV2TypeGetReserveConfigurationData.liquidationBonus\n ].toString(),\n ) / BPS,\n // flags\n collateralActive: collateralActive,\n borrowingEnabled: borrowingEnabled,\n hasStable:\n configData?.[\n AaveV2TypeGetReserveConfigurationData.stableBorrowRateEnabled\n ],\n isActive:\n configData?.[AaveV2TypeGetReserveConfigurationData.isActive],\n isFrozen:\n configData?.[AaveV2TypeGetReserveConfigurationData.isFrozen],\n }\n }\n\n return {\n data: resultReserves,\n chainId,\n }\n },\n expectedNumberOfCalls,\n ]\n }\n }\n}\n","import {\n AaveV3GeneralPublicResponse,\n AaveV3GetreserveConfigDataIndexes,\n AaveV3GetReservesIndexes,\n YLDRTypeGetReserveConfigurationData,\n YLDRTypeGetReserveDataIndexes,\n} from '../../types/lender/aave-v3-types'\nimport { AAVE_V3_EMODES } from './publicCallBuild'\nimport { AdditionalYields } from '../../types'\nimport { BPS, formatAaveRawApyToApr, parseRawAmount } from '../../utils/parsing'\nimport { Lender } from '@1delta/lender-registry'\nimport {\n getAaveAssets,\n LENDER_MODE_NO_MODE,\n toGenericPriceKey,\n toOracleKey,\n} from '../../assets'\nimport { GenericTokenList } from '../../types'\nimport { isAaveV32Type } from '../../utils'\n\nexport const getAaveV3ReservesDataConverter = (\n lender: string,\n chainId: string,\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n): [(data: any[]) => AaveV3GeneralPublicResponse | undefined, number] => {\n if (isAaveV32Type(lender))\n return parseAave32(\n chainId,\n lender,\n prices,\n additionalYields,\n tokenList,\n ) as any\n switch (lender) {\n /** AAVE V3 style with rewards from state */\n case Lender.YLDR:\n return parseYLDRCall(\n chainId,\n lender,\n additionalYields,\n prices,\n tokenList,\n ) as any\n default: {\n const assetsToQuery = getAaveAssets(chainId, lender)\n const allModes = AAVE_V3_EMODES(chainId, lender)\n const expectedNumberOfCalls =\n assetsToQuery.length * 6 + allModes.length + 1\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n const emodeDataResult = data.slice(\n assetsToQuery.length * 6,\n assetsToQuery.length * 6 + allModes.length,\n )\n const resultReserves: any = {}\n const decimalsCeiling = data[expectedNumberOfCalls - 1]\n\n let eModeConfigs: any = {}\n allModes.forEach((mode, index) => {\n const rawCfg = emodeDataResult[index]\n if (\n (mode === 0 || rawCfg?.label !== '') &&\n Number(rawCfg.ltv) !== 0\n ) {\n eModeConfigs[mode] = {\n category: mode,\n label: rawCfg.label,\n borrowCollateralFactor: rawCfg.ltv / BPS,\n collateralFactor: rawCfg.liquidationThreshold / BPS,\n borrowFactor: 1,\n }\n }\n })\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n\n const reserveData = data[i * 6]\n const configData = data[i * 6 + 1]\n /** Unused so far */\n // const siloedBorrowing = data[i * 6 + 2]\n const reserveCaps = data[i * 6 + 3]\n const debtCeiling = data[i * 6 + 4]\n\n const reserveEMode = data[i * 6 + 5]\n\n const assetMeta = tokenList[asset]\n\n const decimals = assetMeta?.decimals ?? 18\n\n const totalDeposits = parseRawAmount(\n reserveData?.[AaveV3GetReservesIndexes.totalAToken]?.toString(),\n decimals,\n )\n const totalDebtStable = parseRawAmount(\n reserveData?.[\n AaveV3GetReservesIndexes.totalStableDebt\n ]?.toString(),\n decimals,\n )\n const totalDebt = parseRawAmount(\n reserveData?.[\n AaveV3GetReservesIndexes.totalVariableDebt\n ]?.toString(),\n decimals,\n )\n const liquidity =\n Number(totalDeposits) -\n Number(totalDebt) -\n Number(totalDebtStable)\n const price =\n prices[\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n ] ?? 0\n\n const usageAsCollateralEnabled =\n configData?.[\n AaveV3GetreserveConfigDataIndexes.usageAsCollateralEnabled\n ]\n const borrowingEnabled =\n configData?.[AaveV3GetreserveConfigDataIndexes.borrowingEnabled]\n\n resultReserves[asset] = {\n poolId: asset,\n underlying: asset,\n asset: assetMeta,\n // raw amounts\n totalDeposits,\n totalDebtStable,\n totalDebt,\n totalLiquidity: liquidity,\n // USD amounts\n totalDepositsUSD: Number(totalDeposits) * price,\n totalDebtStableUSD: Number(totalDebtStable) * price,\n totalDebtUSD: Number(totalDebt) * price,\n totalLiquidityUSD: liquidity * price,\n // rates\n depositRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV3GetReservesIndexes.liquidityRate\n ]?.toString(),\n ),\n variableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV3GetReservesIndexes.variableBorrowRate\n ]?.toString(),\n ),\n stableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV3GetReservesIndexes.stableBorrowRate\n ]?.toString(),\n ),\n stakingYield:\n additionalYields.intrinsicYields[\n toOracleKey(assetMeta?.assetGroup)\n ] ?? 0,\n // rewards\n rewards: {},\n }\n const eModeCategory = Number(reserveEMode?.toString())\n resultReserves[asset] = {\n ...resultReserves[asset],\n decimals: Number(\n configData?.[AaveV3GetreserveConfigDataIndexes.decimals],\n ),\n\n config: populateEModes(\n Number(configData?.[AaveV3GetreserveConfigDataIndexes.ltv]) /\n BPS,\n Number(\n configData?.[\n AaveV3GetreserveConfigDataIndexes.liquidationThreshold\n ],\n ) / BPS,\n eModeCategory,\n eModeConfigs,\n allModes,\n usageAsCollateralEnabled,\n borrowingEnabled,\n ),\n\n // flags\n collateralActive: usageAsCollateralEnabled,\n borrowingEnabled: borrowingEnabled,\n hasStable:\n configData?.[\n AaveV3GetreserveConfigDataIndexes.stableBorrowRateEnabled\n ],\n isActive:\n configData?.[AaveV3GetreserveConfigDataIndexes.isActive],\n isFrozen:\n configData?.[AaveV3GetreserveConfigDataIndexes.isFrozen],\n\n // caps\n borrowCap: Number(reserveCaps[0]?.toString()),\n supplyCap: Number(reserveCaps[1]?.toString()),\n debtCeiling: Number(\n parseRawAmount(\n debtCeiling?.toString(),\n Number(decimalsCeiling?.toString()),\n ),\n ),\n }\n }\n return {\n data: resultReserves,\n chainId,\n }\n },\n expectedNumberOfCalls,\n ]\n }\n }\n}\n\nconst populateEModes = (\n borrowCollateralFactor: number,\n collateralFactor: number,\n eModeCategory: number,\n eModeConfigs: any,\n allModes: any[],\n usageAsCollateralEnabled: boolean,\n borrowingEnabled: boolean,\n) => {\n let data: any = {}\n allModes.forEach((e) => {\n if (e === 0)\n data[e] = {\n label: 'Disabled',\n category: e,\n borrowCollateralFactor,\n collateralFactor,\n borrowFactor: 1,\n collateralDisabled: !usageAsCollateralEnabled,\n debtDisabled: !borrowingEnabled,\n }\n if (e > 0 && eModeConfigs[e]?.label && eModeConfigs[e]?.label !== '') {\n data[e] = {}\n // add base data\n data[e].label = eModeConfigs[e]?.label\n data[e].debtDisabled = true\n data[e].category = e\n data[e].borrowFactor = 1\n data[e].collateralFactor = collateralFactor\n data[e].borrowCollateralFactor = borrowCollateralFactor\n // add general flags to e-mode config\n data[e].collateralDisabled = !usageAsCollateralEnabled\n data[e].debtDisabled = !borrowingEnabled\n\n if (e > 0 && e === eModeCategory && eModeConfigs[e]) {\n data[e] = {\n ...data[e],\n category: e,\n borrowCollateralFactor: eModeConfigs[e]?.borrowCollateralFactor ?? 0,\n collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,\n borrowFactor: 1,\n debtDisabled: false,\n }\n }\n }\n })\n return data\n}\n\nconst populateEModes32 = (\n borrowCollateralFactor: number,\n collateralFactor: number,\n collateralBitmap: any,\n debtBitmap: any,\n assetIndex: number,\n eModeConfigs: any,\n allModes: any[],\n usageAsCollateralEnabled: boolean,\n borrowingEnabled: boolean,\n) => {\n let data: any = {}\n allModes.forEach((e) => {\n if (e === 0)\n data[e] = {\n label: 'Disabled',\n category: e,\n borrowCollateralFactor,\n collateralFactor,\n borrowFactor: 1,\n collateralDisabled: !usageAsCollateralEnabled,\n debtDisabled: !borrowingEnabled,\n }\n if (e > 0) {\n // only add if configs defined\n if (eModeConfigs[e]?.label && eModeConfigs[e]?.label !== '') {\n data[e] = {}\n // add base data\n data[e].label = eModeConfigs[e]?.label ?? 'Default'\n data[e].debtDisabled = true\n data[e].category = e\n data[e].borrowFactor = 1\n data[e].collateralFactor = collateralFactor\n data[e].borrowCollateralFactor = borrowCollateralFactor\n data[e].debtDisabled = !!eModeConfigs[e]\n // override info if mode explicitly provided\n if (eModeConfigs[e]) {\n data[e] = {\n ...data[e],\n category: e,\n borrowCollateralFactor:\n eModeConfigs[e]?.borrowCollateralFactor ?? 0,\n collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,\n borrowFactor: 1,\n collateralDisabled: !isReserveEnabledOnBitmap(\n collateralBitmap[e],\n assetIndex,\n ),\n debtDisabled: !isReserveEnabledOnBitmap(debtBitmap[e], assetIndex),\n }\n }\n }\n }\n })\n return data\n}\n\n/** Replica of aave's bitmap checker */\nfunction isReserveEnabledOnBitmap(\n bitmap: bigint,\n reserveIndex: number,\n): boolean {\n try {\n return ((bitmap >> BigInt(reserveIndex)) & 1n) !== 0n\n } catch {\n return false\n }\n}\n\nexport function parseYLDRCall(\n chainId: string,\n lender: string,\n additionalYields: any,\n prices: any,\n tokenList: any,\n): [(data: any[]) => any | undefined, number] {\n const assetsToQuery = getAaveAssets(chainId, lender)\n\n const expectedNumberOfCalls = assetsToQuery.length * 2\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n const resultReserves: any = {}\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const reserveData = data[i * 2]\n const configData = data[i * 2 + 1]\n\n const assetMeta = tokenList[asset]\n const decimals = assetMeta?.decimals ?? 18\n\n const totalVariableDebt = parseRawAmount(\n reserveData?.[\n YLDRTypeGetReserveDataIndexes.totalVariableDebt\n ]?.toString(),\n decimals,\n )\n const totalAToken = parseRawAmount(\n reserveData?.[YLDRTypeGetReserveDataIndexes.totalYToken]?.toString(),\n decimals,\n )\n const liquidity = Number(totalAToken) - Number(totalVariableDebt)\n\n const oracleKey =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n const price = prices[oracleKey] ?? 0\n const totalDepositsUSD = Number(totalAToken) * price\n const totalDebtUSD = Number(totalVariableDebt) * price\n\n const usageAsCollateralEnabled =\n configData?.[\n YLDRTypeGetReserveConfigurationData.usageAsCollateralEnabled\n ]\n const borrowingEnabled =\n configData?.[YLDRTypeGetReserveConfigurationData.borrowingEnabled]\n\n resultReserves[asset] = {\n poolId: asset,\n underlying: asset,\n asset: assetMeta,\n // token amounts\n totalDeposits: totalAToken,\n totalDebtStable: 0,\n totalDebt: totalVariableDebt,\n totalLiquidity: liquidity,\n // USD amounts\n totalDepositsUSD,\n totalDebtStableUSD: 0,\n totalDebtUSD,\n totalLiquidityUSD: liquidity * price,\n // rates\n depositRate: formatAaveRawApyToApr(\n reserveData?.[\n YLDRTypeGetReserveDataIndexes.liquidityRate\n ]?.toString(),\n ),\n variableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n YLDRTypeGetReserveDataIndexes.variableBorrowRate\n ]?.toString(),\n ),\n stableBorrowRate: 0,\n stakingYield: additionalYields.intrinsicYields[oracleKey] ?? 0,\n\n // rewards\n rewards: {},\n decimals: Number(\n configData?.[YLDRTypeGetReserveConfigurationData.decimals],\n ),\n config: {\n [LENDER_MODE_NO_MODE]: {\n category: LENDER_MODE_NO_MODE,\n // collateral factors\n borrowCollateralFactor:\n Number(\n configData?.[\n YLDRTypeGetReserveConfigurationData.ltv\n ]?.toString(),\n ) / BPS,\n collateralFactor:\n Number(\n configData?.[\n YLDRTypeGetReserveConfigurationData.liquidationThreshold\n ]?.toString(),\n ) / BPS,\n borrowFactor: 1,\n collateralDisabled: !usageAsCollateralEnabled,\n debtDisabled: !borrowingEnabled,\n },\n },\n liquidationBonus:\n Number(\n configData?.[\n YLDRTypeGetReserveConfigurationData.liquidationBonus\n ]?.toString(),\n ) / BPS,\n // flags\n collateralActive: usageAsCollateralEnabled,\n borrowingEnabled: borrowingEnabled,\n hasStable: false,\n isActive: configData?.[YLDRTypeGetReserveConfigurationData.isActive],\n isFrozen: configData?.[YLDRTypeGetReserveConfigurationData.isFrozen],\n }\n }\n\n return {\n data: resultReserves,\n chainId,\n eModes: {},\n }\n },\n expectedNumberOfCalls,\n ]\n}\n\nfunction parseAave32(\n chainId: string,\n lender: string,\n prices: any,\n additionalYields: any,\n tokenList: any,\n) {\n const assetsToQuery = getAaveAssets(chainId, lender)\n\n const allModes = AAVE_V3_EMODES(chainId, lender)\n const expectedNumberOfCalls =\n assetsToQuery.length * 5 + allModes.length * 3 + 2\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n const emodeDataResult = data.slice(\n assetsToQuery.length * 5,\n assetsToQuery.length * 5 + allModes.length * 3,\n )\n const resultReserves: any = {}\n\n const reservesList = data[expectedNumberOfCalls - 2]\n const decimalsCeiling = data[expectedNumberOfCalls - 1]\n\n let eModeConfigs: any = {}\n let collateralBitmap: any = {}\n let debtBitmap: any = {}\n allModes.forEach((mode, index) => {\n const rawCfg = emodeDataResult[3 * index]\n if (rawCfg && (mode === 0 || rawCfg?.label !== '')) {\n eModeConfigs[mode] = {\n category: mode,\n label: rawCfg.label,\n borrowCollateralFactor: rawCfg.ltv / BPS,\n collateralFactor: rawCfg.liquidationThreshold / BPS,\n borrowFactor: 1,\n }\n debtBitmap[mode] = emodeDataResult[3 * index + 1]\n collateralBitmap[mode] = emodeDataResult[3 * index + 2]\n }\n })\n\n // we get the reserves list to obtain the index per reserve\n const lowerReservesList = (reservesList as string[])?.map((a) =>\n a.toLowerCase(),\n )\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n\n const reserveData = data[i * 5]\n const configData = data[i * 5 + 1]\n /** Unused so far */\n // const siloedBorrowing = data[i * 5 + 2]\n const reserveCaps = data[i * 5 + 3]\n const debtCeiling = data[i * 5 + 4]\n\n const assetMeta = tokenList[asset]\n\n const decimals = assetMeta?.decimals ?? 18\n const totalDeposits = parseRawAmount(\n reserveData?.[AaveV3GetReservesIndexes.totalAToken]?.toString(),\n decimals,\n )\n const totalDebtStable = parseRawAmount(\n reserveData?.[AaveV3GetReservesIndexes.totalStableDebt]?.toString(),\n decimals,\n )\n const totalDebt = parseRawAmount(\n reserveData?.[AaveV3GetReservesIndexes.totalVariableDebt]?.toString(),\n decimals,\n )\n const liquidity =\n Number(totalDeposits) - Number(totalDebt) - Number(totalDebtStable)\n const price =\n prices[\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n ] ?? 0\n resultReserves[asset] = {\n poolId: asset,\n underlying: asset,\n asset: assetMeta,\n // raw amounts\n totalDeposits,\n totalDebtStable,\n totalDebt,\n totalLiquidity: liquidity,\n // USD amounts\n totalDepositsUSD: Number(totalDeposits) * price,\n totalDebtStableUSD: Number(totalDebtStable) * price,\n totalDebtUSD: Number(totalDebt) * price,\n totalLiquidityUSD: liquidity * price,\n // rates\n depositRate: formatAaveRawApyToApr(\n reserveData?.[AaveV3GetReservesIndexes.liquidityRate]?.toString(),\n ),\n variableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV3GetReservesIndexes.variableBorrowRate\n ]?.toString(),\n ),\n stableBorrowRate: formatAaveRawApyToApr(\n reserveData?.[\n AaveV3GetReservesIndexes.stableBorrowRate\n ]?.toString(),\n ),\n\n stakingYield:\n additionalYields.intrinsicYields[\n toOracleKey(assetMeta?.assetGroup)\n ] ?? 0,\n // rewards\n rewards: {},\n }\n const assetIndex = lowerReservesList.indexOf(asset)\n\n const usageAsCollateralEnabled =\n configData?.[\n AaveV3GetreserveConfigDataIndexes.usageAsCollateralEnabled\n ]\n const borrowingEnabled =\n configData?.[AaveV3GetreserveConfigDataIndexes.borrowingEnabled]\n\n resultReserves[asset] = {\n ...resultReserves[asset],\n decimals: Number(\n configData?.[AaveV3GetreserveConfigDataIndexes.decimals],\n ),\n\n config: populateEModes32(\n Number(configData?.[AaveV3GetreserveConfigDataIndexes.ltv]) / BPS,\n Number(\n configData?.[\n AaveV3GetreserveConfigDataIndexes.liquidationThreshold\n ],\n ) / BPS,\n collateralBitmap,\n debtBitmap,\n assetIndex,\n eModeConfigs,\n allModes,\n usageAsCollateralEnabled,\n borrowingEnabled,\n ),\n\n // flags\n collateralActive: usageAsCollateralEnabled,\n borrowingEnabled: borrowingEnabled,\n hasStable:\n configData?.[\n AaveV3GetreserveConfigDataIndexes.stableBorrowRateEnabled\n ],\n isActive: configData?.[AaveV3GetreserveConfigDataIndexes.isActive],\n isFrozen: configData?.[AaveV3GetreserveConfigDataIndexes.isFrozen],\n\n // caps\n borrowCap: Number(reserveCaps[0]?.toString()),\n supplyCap: Number(reserveCaps[1]?.toString()),\n debtCeiling: Number(\n parseRawAmount(\n debtCeiling?.toString(),\n Number(decimalsCeiling?.toString()),\n ),\n ),\n }\n }\n return {\n data: resultReserves,\n chainId,\n }\n },\n expectedNumberOfCalls,\n ]\n}\n","import { InitGeneralPublicResponse } from '../../types/lender/init-types'\nimport { AdditionalYields } from '../../types'\nimport { INIT_MODES } from './publicCallBuild'\nimport { toGenericPriceKey, toOracleKey } from '../../assets'\nimport { convertRateToApr, parseRawAmount } from '../../utils/parsing'\nimport { Lender } from '@1delta/lender-registry'\nimport { GenericTokenList } from '../../types'\n\nexport const INIT_EMODE_LABELS: { [mode: number]: string } = {\n [1]: 'Default',\n [2]: 'Blue Chip Volatile',\n [3]: 'Stablecoins',\n [4]: 'ETH correlated',\n [5]: 'Ethena',\n [6]: 'BTC',\n}\n\nexport const getInitReservesDataConverter = (\n lender: Lender,\n chainId: string,\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n): [(data: any[]) => InitGeneralPublicResponse | undefined, number] => {\n const expectedNumberOfCalls = INIT_MODES.length\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n const modeOne = 0\n let result = Object.assign(\n {},\n ...data[modeOne]?.map((dat: any) => {\n const asset = dat?.underlying.toLowerCase()\n const meta = tokenList[asset]\n const totalDeposits = parseRawAmount(\n dat?.totalSupply.toString(),\n meta?.decimals,\n )\n const totalDebt = parseRawAmount(\n dat?.totalDebt.toString(),\n meta.decimals,\n )\n const oracleKey =\n toOracleKey(meta?.assetGroup!) ?? toGenericPriceKey(asset, chainId)\n const price = prices[oracleKey]\n const liquidity = Number(totalDeposits) - Number(totalDebt)\n return {\n [asset]: {\n poolId: asset,\n underlying: asset,\n asset: meta,\n borrowCap: parseRawAmount(\n dat?.borrowCap.toString(),\n meta.decimals,\n ),\n canBurn: Boolean(dat?.canBurn),\n canFlash: Boolean(dat?.canFlash),\n canMint: Boolean(dat?.canMint),\n canRepay: Boolean(dat?.canRepay),\n totalDeposits,\n totalDebt,\n totalDepositsUSD: price * Number(totalDeposits),\n totalDebtUSD: price * Number(totalDebt),\n totalLiquidity: liquidity,\n totalLiquidityUSD: liquidity * price,\n depositRate: convertRateToApr(\n Number(parseRawAmount(dat?.supplyRate.toString(), 18)),\n ),\n variableBorrowRate: convertRateToApr(\n Number(parseRawAmount(dat?.borrowRate.toString(), 18)),\n ),\n stableBorrowRate: 0,\n collateralActive: true,\n stakingYield: additionalYields.intrinsicYields[oracleKey] ?? 0,\n rewards: {},\n config: {},\n borrowingEnabled: totalDebt !== '0',\n },\n }\n }),\n )\n\n let eModes: any = {}\n INIT_MODES.forEach((mode, index) => {\n data[index]?.forEach((multicallData: any) => {\n const asset = multicallData?.underlying.toLowerCase()\n const cf = Number(parseRawAmount(multicallData.collateralFactor, 18))\n const modeData = {\n category: mode,\n label: INIT_EMODE_LABELS[mode],\n borrowCollateralFactor: cf,\n collateralFactor: cf,\n borrowFactor: Number(\n parseRawAmount(multicallData.borrowFactor, 18),\n ),\n maxHealthAfterLiq: Number(\n parseRawAmount(multicallData.maxHealthAfterLiq, 18),\n ),\n debtDisabled: false,\n collateralDisabled: false,\n }\n if (!eModes[mode]) eModes[mode] = modeData\n result[asset].config[mode] = modeData\n })\n })\n\n Object.entries(eModes).forEach(([modeId, data]: [string, any]) => {\n Object.entries(result)?.forEach(([key, _]: [string, any]) => {\n if (!result[key].config[modeId]) {\n let mode = {\n ...data,\n debtDisabled: true,\n collateralDisabled: true,\n collateralFactor: 0,\n borrowCollateralFactor: 0,\n borrowFactor: 340282366920938500000, // disabled flag\n }\n result[key].config[modeId] = mode\n }\n })\n })\n\n return { data: result, chainId }\n },\n expectedNumberOfCalls,\n ]\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { AdditionalYields } from '../../types'\nimport {\n CometInterestRateIndexes,\n CompoundV3GeneralPublicResponse,\n} from '../../types/lender/compound-v3-types'\nimport {\n getCompoundV3Assets,\n LENDER_MODE_NO_MODE,\n toGenericPriceKey,\n toOracleKey,\n} from '../../assets'\nimport { getCompoundV3BaseAsset } from '../addresses/compoundV3'\nimport { parseRawAmount, SECONDS_PER_YEAR } from '../../utils/parsing'\nimport { GenericTokenList } from '../../types'\n\nconst COMET_RISK_DECIMALS = 18\nconst SECONDS_PER_DAY = 3600 * 24\nconst DAYS_IN_YEAR = 365\n\nexport const getCompoundV3ReservesDataConverter = (\n lender: string,\n chainId: string,\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n): [(data: any[]) => CompoundV3GeneralPublicResponse | undefined, number] => {\n const assetsToQuery = getCompoundV3Assets(chainId, lender)\n const baseAssetData = getCompoundV3BaseAsset(lender, chainId)\n const tokensNoBase = assetsToQuery.filter(\n (a) => a !== baseAssetData.baseAsset,\n )\n\n const baseLength = tokensNoBase.length * 2\n const expectedNumberOfCalls = baseLength + 6\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n let result: any = {}\n for (let i = 0; i < tokensNoBase.length; i++) {\n const asset = tokensNoBase[i]\n const resultsAssetInfo = data[i * 2]\n const resultsTotals = data[i * 2 + 1]\n const assetMeta = tokenList[asset]\n const decimals = assetMeta?.decimals ?? 18\n const totals = parseRawAmount(resultsTotals[0], decimals)\n const oracleKey =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n\n const totalUsd = Number(totals) * (prices[oracleKey] ?? 0)\n\n result[asset] = {\n poolId: asset,\n underlying: asset,\n asset: assetMeta,\n config: {\n [LENDER_MODE_NO_MODE]: {\n category: LENDER_MODE_NO_MODE,\n // collateral factors\n borrowCollateralFactor: parseRawAmount(\n resultsAssetInfo.borrowCollateralFactor.toString(),\n COMET_RISK_DECIMALS,\n ),\n collateralFactor: parseRawAmount(\n resultsAssetInfo.liquidateCollateralFactor.toString(),\n COMET_RISK_DECIMALS,\n ),\n borrowFactor: 1,\n collateralDisabled: false,\n debtDisabled: true,\n },\n },\n supplyCap: parseRawAmount(\n resultsAssetInfo.supplyCap.toString(),\n decimals,\n ),\n\n // interest rates\n variableBorrowRate: 0,\n stableBorrowRate: 0,\n depositRate: 0,\n stakingYield: additionalYields.intrinsicYields[oracleKey] ?? 0,\n\n utilization: 0,\n // debt and liquidity are zero\n totalDebt: 0,\n totalDebtUSD: 0,\n totalLiquidity: totals,\n totalLiquidityUSD: totalUsd,\n // deposits are different outputs for base asset and others\n totalDeposits: totals,\n totalDepositsUSD: totalUsd,\n // rewards\n rewards: {},\n collateralActive: true,\n isActive: true,\n isFrozen: false,\n borrowingEnabled: false,\n }\n }\n\n const baseMeta = tokenList[baseAssetData.baseAsset]\n\n // parse data for rewards calculation\n const decimals = baseMeta?.decimals ?? 18\n const resultsSupplyRewards = Number(data[baseLength]?.toString())\n const resultsBorrowRewards = Number(data[baseLength + 1]?.toString())\n const resultsIndexScale = data[baseLength + 2]?.toString()\n const resultsSupply = parseRawAmount(\n data[baseLength + 3]?.toString(),\n decimals,\n )\n const resultsBorrow = parseRawAmount(\n data[baseLength + 4]?.toString(),\n decimals,\n )\n\n const compToSuppliersPerDay =\n (resultsSupplyRewards / Number(resultsIndexScale)) * SECONDS_PER_DAY\n const compToBorrowersPerDay =\n (resultsBorrowRewards / Number(resultsIndexScale)) * SECONDS_PER_DAY\n\n const resultsInterest = data[baseLength + 5]\n\n const oracleKeyBase =\n toOracleKey(baseMeta?.assetGroup) ??\n toGenericPriceKey(baseAssetData.baseAsset, chainId)\n const price = prices[oracleKeyBase] ?? 1\n const liquidity = Number(resultsSupply) - Number(resultsBorrow)\n const compPrice = prices['COMP']\n\n const baseData = {\n [baseAssetData.baseAsset]: {\n poolId: baseAssetData.baseAsset,\n underlying: baseAssetData.baseAsset,\n asset: baseMeta,\n // collateral factots\n borrowCollateralFactor: 0,\n collateralFactor: 0,\n supplyCap: 0,\n\n config: {\n [LENDER_MODE_NO_MODE]: {\n category: LENDER_MODE_NO_MODE,\n // collateral factors\n borrowCollateralFactor: 0,\n collateralFactor: 0,\n borrowFactor: 1,\n // base asset: borrowable, no collateral\n collateralDisabled: true,\n debtDisabled: false,\n },\n },\n // interest rates\n variableBorrowRate:\n Number(resultsInterest[CometInterestRateIndexes.borrowRate]) /\n SECONDS_PER_YEAR /\n 10,\n depositRate:\n Number(resultsInterest[CometInterestRateIndexes.supplyRate]) /\n SECONDS_PER_YEAR /\n 10,\n stableBorrowRate: 0,\n utilization: parseRawAmount(\n resultsInterest[CometInterestRateIndexes.utilization].toString(),\n COMET_RISK_DECIMALS,\n ),\n\n totalLiquidity: liquidity,\n totalLiquidityUSD: liquidity * price,\n\n totalDebt: resultsBorrow,\n totalDeposits: resultsSupply,\n\n totalDebtUSD: Number(resultsBorrow) * price,\n totalDepositsUSD: Number(resultsSupply) * price,\n // rewards\n rewards: {\n COMP: {\n depositRate:\n (((compPrice * compToSuppliersPerDay) / Number(resultsSupply)) *\n DAYS_IN_YEAR *\n 100) /\n price,\n variableBorrowRate:\n (((compPrice * compToBorrowersPerDay) / Number(resultsBorrow)) *\n DAYS_IN_YEAR *\n 100) /\n price,\n stableBorrowRate: 0,\n },\n },\n borrowingEnabled: true,\n collateralActive: false,\n isActive: true,\n isFrozen: false,\n stakingYield: additionalYields.intrinsicYields[oracleKeyBase] ?? 0,\n },\n }\n return { data: { ...result, ...baseData }, chainId }\n },\n expectedNumberOfCalls,\n ]\n}\n","export const AavePoolLegacyAbi = [\n {\n inputs: [],\n name: 'BRIDGE_PROTOCOL_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TOTAL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TO_PROTOCOL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_NUMBER_RESERVES',\n outputs: [\n {\n internalType: 'uint16',\n name: '',\n type: 'uint16',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_STABLE_RATE_BORROW_SIZE_PERCENT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'fee',\n type: 'uint256',\n },\n ],\n name: 'backUnbacked',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'borrow',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'priceSource',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategory',\n name: 'config',\n type: 'tuple',\n },\n ],\n name: 'configureEModeCategory',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'deposit',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n {\n type: 'address',\n name: 'onBehalfOf',\n internalType: 'address',\n },\n {\n type: 'uint16',\n name: 'referralCode',\n internalType: 'uint16',\n },\n ],\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'dropReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceFromBefore',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceToBefore',\n type: 'uint256',\n },\n ],\n name: 'finalizeTransfer',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: 'interestRateModes',\n type: 'uint256[]',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoan',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoanSimple',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryData',\n outputs: [\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'priceSource',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategory',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'id',\n type: 'uint16',\n },\n ],\n name: 'getReserveAddressById',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedIncome',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedVariableDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getReservesList',\n outputs: [\n {\n internalType: 'address[]',\n name: '',\n type: 'address[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserAccountData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'totalCollateralBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalDebtBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'availableBorrowsBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentLiquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'healthFactor',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.UserConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserEMode',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'interestRateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'initReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'collateralAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'debtAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'debtToCover',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'receiveAToken',\n type: 'bool',\n },\n ],\n name: 'liquidationCall',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n ],\n name: 'mintToTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'mintUnbacked',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'rebalanceStableBorrowRate',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'repay',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n ],\n name: 'repayWithATokens',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'repayWithPermit',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'rescueTokens',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'resetIsolationModeTotalDebt',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: 'configuration',\n type: 'tuple',\n },\n ],\n name: 'setConfiguration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'rateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'setReserveInterestRateStrategyAddress',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'categoryId',\n type: 'uint8',\n },\n ],\n name: 'setUserEMode',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'useAsCollateral',\n type: 'bool',\n },\n ],\n name: 'setUserUseReserveAsCollateral',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'supply',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'supplyWithPermit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n ],\n name: 'swapBorrowRateMode',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'bridgeProtocolFee',\n type: 'uint256',\n },\n ],\n name: 'updateBridgeProtocolFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumTotal',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumToProtocol',\n type: 'uint128',\n },\n ],\n name: 'updateFlashloanPremiums',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const AavePoolDataProviderLegacyAbi = [\n {\n inputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: 'addressesProvider',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [],\n name: 'ADDRESSES_PROVIDER',\n outputs: [\n {\n internalType: 'contract IPoolAddressesProvider',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getATokenTotalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllATokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct IPoolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllReservesTokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct IPoolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getDebtCeiling',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getDebtCeilingDecimals',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getFlashLoanEnabled',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getInterestRateStrategyAddress',\n outputs: [\n {\n internalType: 'address',\n name: 'irStrategyAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getLiquidationProtocolFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getPaused',\n outputs: [\n {\n internalType: 'bool',\n name: 'isPaused',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveCaps',\n outputs: [\n {\n internalType: 'uint256',\n name: 'borrowCap',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyCap',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveConfigurationData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'decimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationBonus',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactor',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'borrowingEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'stableBorrowRateEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isActive',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isFrozen',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'unbacked',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'accruedToTreasuryScaled',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalAToken',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'variableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'averageStableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityIndex',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'variableBorrowIndex',\n type: 'uint256',\n },\n {\n internalType: 'uint40',\n name: 'lastUpdateTimestamp',\n type: 'uint40',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveEModeCategory',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveTokensAddresses',\n outputs: [\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getSiloedBorrowing',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getTotalDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getUnbackedMintCap',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'currentATokenBalance',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'principalStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'scaledVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint40',\n name: 'stableRateLastUpdated',\n type: 'uint40',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const YLDRProtocolDataProviderAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n type: 'address',\n name: 'addressesProvider',\n internalType: 'contract ILendingPoolAddressesProvider',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'contract ILendingPoolAddressesProvider',\n },\n ],\n name: 'ADDRESSES_PROVIDER',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'tuple[]',\n name: '',\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n components: [\n {\n type: 'string',\n },\n {\n type: 'address',\n },\n ],\n },\n ],\n name: 'getAllATokens',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'tuple[]',\n name: '',\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n components: [\n {\n type: 'string',\n },\n {\n type: 'address',\n },\n ],\n },\n ],\n name: 'getAllReservesTokens',\n inputs: [],\n },\n {\n inputs: [{ internalType: 'address', name: 'asset', type: 'address' }],\n name: 'getReserveConfigurationData',\n outputs: [\n { internalType: 'uint256', name: 'decimals', type: 'uint256' },\n { internalType: 'uint256', name: 'ltv', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'liquidationThreshold',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'liquidationBonus', type: 'uint256' },\n { internalType: 'uint256', name: 'reserveFactor', type: 'uint256' },\n { internalType: 'bool', name: 'usageAsCollateralEnabled', type: 'bool' },\n { internalType: 'bool', name: 'borrowingEnabled', type: 'bool' },\n { internalType: 'bool', name: 'isActive', type: 'bool' },\n { internalType: 'bool', name: 'isFrozen', type: 'bool' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'accruedToTreasuryScaled',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalYToken',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'variableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityIndex',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'variableBorrowIndex', type: 'uint256' },\n { internalType: 'uint40', name: 'lastUpdateTimestamp', type: 'uint40' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: 'aTokenAddress',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'stableDebtTokenAddress',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'variableDebtTokenAddress',\n internalType: 'address',\n },\n ],\n name: 'getReserveTokensAddresses',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'currentATokenBalance',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'currentStableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'currentVariableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'principalStableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'scaledVariableDebt',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'stableBorrowRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'liquidityRate',\n internalType: 'uint256',\n },\n {\n type: 'uint40',\n name: 'stableRateLastUpdated',\n internalType: 'uint40',\n },\n {\n type: 'bool',\n name: 'usageAsCollateralEnabled',\n internalType: 'bool',\n },\n ],\n name: 'getUserReserveData',\n inputs: [\n {\n type: 'address',\n name: 'asset',\n internalType: 'address',\n },\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n] as const\n","import { Lender } from '@1delta/lender-registry'\nimport { Chain } from '@1delta/chain-registry'\nimport { Call } from '../../../utils/multicall'\nimport { morphoPools } from '@1delta/data-sdk'\nimport lodash from 'lodash'\n\n// pull the functions you need\nconst { chunk } = lodash\n\nexport const MORPHO_LENS: { [c: string]: string } = {\n [Chain.HEMI_NETWORK]: '0x1170Ef5B1A7f9c4F0ce34Ddf66CC0e6090Fd107E',\n [Chain.BASE]: '0x05f3f58716a88A52493Be45aA0871c55b3748f18',\n [Chain.POLYGON_MAINNET]: '0x04102873b1A80647879Aa8B8a119F07aE08f457a',\n [Chain.OP_MAINNET]: '0x61895aEB0a42679E2Df8EE64334C405a8d47D244',\n [Chain.ARBITRUM_ONE]: '0xeaC918F73Ba5b11D21D31a72BD00ca4A22865C3f',\n [Chain.KATANA]: '0xCe434378adacC51d54312c872113D687Ac19B516',\n [Chain.HYPEREVM]: '0x6Bc6aCB905c1216B0119C87Bf9E178ce298310FA',\n [Chain.SONEIUM]: '0x4b5458BB47dCBC1a41B31b41e1a8773dE312BE9d',\n [Chain.ETHEREUM_MAINNET]: '0xb8F4283733588E8036273F06fB375dF59ee5e258',\n [Chain.PLASMA_MAINNET]: '0xcB6Eb8df68153cebF60E1872273Ef52075a5C297',\n [Chain.BERACHAIN]: '0x7a59ddbB76521E8982Fa3A08598C9a83b14A6C07',\n [Chain.BNB_SMART_CHAIN_MAINNET]: '0x3375B2EF9C4D2c6434d39BBE5234c5101218500d', // lista lens\n [Chain.UNICHAIN]: '0xA453ba397c61B0c292EA3959A858821145B2707F',\n [Chain.SEI_NETWORK]: '0xcB6Eb8df68153cebF60E1872273Ef52075a5C297',\n [Chain.MONAD_MAINNET]: '0x0bd7473CbBf81d9dD936c61117eD230d95006CA2',\n}\n\nexport const buildMorphoUserCallWithLens = (\n chainId: string,\n account: string,\n lender: string,\n marketsToQuery: string[],\n): Call[] => {\n // 100 per call\n const marketSlices = chunk(marketsToQuery, 100)\n return marketSlices.flatMap((marketsInChunk) => ({\n address: MORPHO_LENS[chainId],\n name: 'getUserDataCompact',\n params: [\n lender === Lender.MORPHO_BLUE\n ? marketsInChunk.map((a) => a.replace('MORPHO_BLUE_', '0x'))\n : marketsInChunk.map((a) => a.replace('LISTA_DAO_', '0x')),\n account,\n // @ts-ignore\n morphoPools()?.[lender]?.[chainId],\n ],\n }))\n}\n\nexport const buildMorphoTypeUserCallWithLens = (\n chainId: string,\n account: string,\n lender: string,\n marketsToQuery: string[],\n): Call[] => {\n return lender === Lender.MORPHO_BLUE\n ? buildMorphoUserCallWithLens(chainId, account, lender, marketsToQuery)\n : buildListaUserCallWithLens(chainId, account, lender, marketsToQuery)\n}\n\nexport const buildListaUserCallWithLens = (\n chainId: string,\n account: string,\n lender: string,\n marketsToQuery: string[],\n): Call[] => {\n // 100 per call\n const marketSlices = chunk(marketsToQuery, 100)\n return marketSlices.flatMap((marketsInChunk) => ({\n address: MORPHO_LENS[chainId],\n name: 'getListaUserDataCompact',\n params: [\n marketsInChunk.map((a) => a.replace('LISTA_DAO_', '0x')),\n account,\n // @ts-ignore\n morphoPools()?.[lender]?.[chainId],\n ],\n }))\n}\n","import _ from 'lodash'\nimport { LenderConfigMap } from '../../../../types/lenderTypes'\n\nexport const safeDivide = (a: number, b: number) => {\n return a === 0 || isNaN(a) ? 0 : b !== 0 ? a / b : Infinity\n}\n\nexport function capitalizeFirstLetter(data: string) {\n if (!data) return ''\n return data.charAt(0).toUpperCase() + data.slice(1)\n}\n\n/**\n * Formats e.g. 0.04 to 4%\n * @param n ratio\n * @param decs decimals to show\n * @returns percent as string\n */\nexport const formatRatioToPercent = (n: number, decs: number) => {\n return `${n >= 0 ? '+' : ''}${roundNumber(n * 100, decs)}%`\n}\n\n/**\n * Formats e.g. 0.04 to 4%, adds a + if positive\n * @param n ratio\n * @param decs decimals to show\n * @returns percent as string\n */\nexport const formatSignedRatioToPercent = (n: number, decs: number) => {\n if (n > 1e7) return '>100K%' // we ceil percentages at 100k and abbreviate\n return `${n > 0 ? '+' : ''}${roundNumber(n * 100, decs)}%` // we assume no lower values that -100%\n}\n\nexport const formatSignedRatioToPercentSign = (\n n: number,\n decs: number,\n skipSign = false,\n) => {\n if (n > 1e7) return '>100K%' // we ceil percentages at 100k and abbreviate\n // Skip the sign when icons are used\n return `${skipSign ? '' : n > 0 ? '+' : ''}${roundNumber(Math.abs(n * 100), decs)}%`\n}\n\n/**\n * Formats e.g. 4 to 4%\n * @param n percent number\n * @param decs decimals to show\n * @returns percent as string\n */\nexport const formatNumberToPercent = (n: number | undefined, decs = 2) => {\n if (!n) return '0%'\n if (isNaN(n)) return ''\n return `${roundNumber(Number(n ?? 0), decs)}%`\n}\n\nexport const formatPercentagePoints = (n: number, decs: number) => {\n return `${roundNumber(n * 100, decs)}pp`\n}\n\nexport const formatNumber = (n: number, decs: number) => {\n if (!n) return '0'\n if (isNaN(n)) return ''\n return roundNumber(n, decs).toLocaleString()\n}\n\n/**\n * Round using lodash\n * @param n number to round\n * @param decs decimals\n * @returns number\n */\nexport const roundNumber = (n: number, decs: number) => {\n return _.round(n, decs)\n}\n\n/**\n * Converts a colateral factor e.g. 0.8 to 1/(1-0.8) = 5\n * @param n amount\n * @param decs decimals to show\n * @returns leverage as string\n */\nexport const convertCollateralFactorToLeverage = (\n n: number,\n decs: number,\n): number => {\n return roundNumber(1 / (1 - n), decs)\n}\n\nexport const parseToTimes = (n: number) => `${n}×`\n\nexport const parseToTimesPrefix = (n: number) => `×${n}`\n\nexport const parseLeverage = (cf: number, decs = 2) =>\n parseToTimes(convertCollateralFactorToLeverage(cf, decs))\n\nexport const parseLeverageRange = (config: LenderConfigMap) => {\n const levs = _.uniq(\n Object.values(config ?? {}).map((cfg) =>\n convertCollateralFactorToLeverage(cfg.borrowCollateralFactor, 2),\n ),\n )\n if (!levs) return ''\n if (levs.length === 1) return parseToTimes(levs[0])\n return `${_.min(levs)}-${parseToTimes(Number(_.max(levs)))}`\n}\n\n/**\n * Get apr from intinsic interest and reward\n * @param apr apr number\n * @param reward reward [per year] number\n * @returns number, validated for NaN\n */\nexport const getApr = (apr: number, reward: number, staking: number) => {\n const aprClean = !isNaN(apr) ? apr : 0\n const rewardClean = !isNaN(reward) ? reward : 0\n const stakingClean = !isNaN(staking) ? staking : 0\n if (\n aprClean + rewardClean + stakingClean < 0.01 &&\n aprClean + rewardClean + stakingClean > -0.01\n )\n return '-'\n return `${(aprClean + rewardClean + stakingClean).toFixed(2)}%`\n}\n\n// Converters from apy to apr and reversed\n\nconst SECONDS_PER_YEAR = 31536000\n\nexport const aprToApy = (apr: number) => {\n return (1 + apr / SECONDS_PER_YEAR) ** SECONDS_PER_YEAR - 1\n}\n\nexport const apyToApr = (apy: number) => {\n return ((apy + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR\n}\n","import { divideAccrualsToAprs } from '.'\nimport {\n AaveV2Public,\n AaveV2UserReserveResponse,\n AaveV3Public,\n AaveV3UserReserveResponse,\n CompoundV3Public,\n CompoundV3UserReserveResponse,\n} from '../../../types/lenderTypes'\nimport { safeDivide } from './formatting'\n\ntype LenderUserData =\n | AaveV3UserReserveResponse\n | AaveV2UserReserveResponse\n | CompoundV3UserReserveResponse\n\ntype LenderState = AaveV3Public | AaveV2Public | CompoundV3Public\n\nexport function createBaseTypeUserState(\n payload: LenderUserData,\n lenderData: { [a: string]: LenderState },\n totalDeposits24h: number = 0,\n totalDebt24h: number = 0,\n) {\n let assetKeys = Object.keys(payload.lendingPositions['0'] ?? {})\n const { chainId, account } = payload\n\n const mode = Number((payload as any).userEMode ?? 0)\n const isWhitelisted = !Boolean((payload as any)?.notWhitelisted ?? false)\n\n // organic yields\n let depositInterest = 0\n let borrowInterest = 0\n // rewards\n let rewardDepositAccrual = 0\n let rewardBorrowAccrual = 0\n // staking\n let stakingDepositAccrual = 0\n let stakingBorrowAccrual = 0\n // amountrs\n let deposits = 0\n let debt = 0\n let collateral = 0\n let borrowDiscountedCollateral = 0\n // this one is the one assuming all collaterals are enabled\n let borrowDiscountedCollateralAllActive = 0\n let collateralAllActive = 0\n\n let rewardsPerAsset: any = {}\n // main user data\n for (let i = 0; i < assetKeys.length; i++) {\n const asset = assetKeys[i]\n if (!lenderData?.[asset]) continue\n const { depositsUSD, debtStableUSD, debtUSD, collateralEnabled } =\n payload.lendingPositions['0'][asset]\n const {\n depositRate,\n stakingYield,\n variableBorrowRate,\n stableBorrowRate,\n rewards,\n collateralActive,\n } = lenderData[asset]\n\n // amounts\n deposits += depositsUSD\n debt += debtStableUSD\n debt += debtUSD\n\n // rewards\n Object.entries(rewards ?? {}).forEach(\n ([key, rewardData]: [string, any]) => {\n rewardDepositAccrual += rewardData.depositRate * depositsUSD\n rewardBorrowAccrual +=\n rewardData.variableBorrowRate * debtUSD +\n (rewardData.stableBorrowRate ?? 0) * debtStableUSD\n\n // totals\n const rewDepo = rewardData.depositRate * depositsUSD\n const rewDebt =\n rewardData.variableBorrowRate * debtUSD +\n (rewardData.stableBorrowRate ?? 0) * (debtStableUSD ?? 0)\n\n if (!rewardsPerAsset[key])\n rewardsPerAsset[key] = { depositApr: 0, borrowApr: 0 }\n if (rewDepo > 0) rewardsPerAsset[key].depositApr += rewDepo\n if (rewDebt > 0) rewardsPerAsset[key].borrowApr += rewDebt\n },\n )\n\n // staking\n stakingDepositAccrual += (stakingYield ?? 0) * depositsUSD\n stakingBorrowAccrual += (stakingYield ?? 0) * (debtStableUSD + debtUSD)\n // collateral accounting\n if (collateralActive) {\n if (collateralEnabled) {\n // risk adjusted\n collateral +=\n (lenderData[asset].config[mode]?.collateralFactor ?? 1) * depositsUSD\n borrowDiscountedCollateral +=\n (lenderData[asset].config[mode]?.borrowCollateralFactor ?? 1) *\n depositsUSD\n }\n borrowDiscountedCollateralAllActive +=\n (lenderData[asset].config[mode]?.borrowCollateralFactor ?? 1) *\n depositsUSD\n collateralAllActive +=\n (lenderData[asset].config[mode]?.collateralFactor ?? 1) * depositsUSD\n }\n // IRs\n depositInterest += depositRate * depositsUSD\n borrowInterest +=\n debtStableUSD * stableBorrowRate + debtUSD * variableBorrowRate\n }\n const nav = deposits - debt\n // aggregated balance data\n const balanceData = {\n '0': {\n borrowDiscountedCollateral,\n borrowDiscountedCollateralAllActive,\n collateral,\n collateralAllActive,\n deposits,\n debt,\n adjustedDebt: debt,\n nav,\n deposits24h: totalDeposits24h,\n debt24h: totalDebt24h,\n nav24h: totalDeposits24h - totalDebt24h,\n ...(payload.rewards ? { rewards: payload.rewards } : {}),\n },\n }\n\n // aggregated apr data\n const aprData = {\n '0': {\n apr: safeDivide(depositInterest - borrowInterest, nav),\n borrowApr: safeDivide(borrowInterest, debt),\n depositApr: safeDivide(depositInterest, deposits),\n rewards: divideAccrualsToAprs(rewardsPerAsset, nav, deposits, debt),\n rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),\n rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),\n rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),\n stakingApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),\n stakingDepositApr: safeDivide(stakingDepositAccrual, deposits),\n stakingBorrowApr: safeDivide(stakingBorrowAccrual, debt),\n },\n }\n const userConfigs = {\n '0': { selectedMode: mode, id: account, isWhitelisted },\n }\n\n return {\n account,\n chainId,\n balanceData,\n aprData,\n userConfigs,\n }\n}\n","import { LENDER_MODE_NO_MODE } from '../../../assets'\nimport { InitPublic, InitUserReserveResponse } from '../../../types/lenderTypes'\nimport { safeDivide } from './formatting'\n\nexport function createMultiAccountTypeUserState(\n payload: InitUserReserveResponse,\n lenderData: { [a: string]: InitPublic },\n histData: {\n [a: string]: {\n totalDebt24h: number\n totalDeposits24h: number\n }\n },\n) {\n const positionKeys = Object.keys(payload.lendingPositions ?? {})\n let assetKeys = payload.assets\n const { chainId, account } = payload\n\n let userConfigs: any = {}\n let balanceData: any = {}\n let aprData: any = {}\n // main user data\n for (let j = 0; j < positionKeys.length; j++) {\n const posId = positionKeys[j]\n const position = payload.lendingPositions[posId]\n const { mode: posMode } = position\n // position mode can be undefined\n // in this case we default to no mode\n const mode = posMode ?? LENDER_MODE_NO_MODE\n userConfigs[posId] = {\n id: posId,\n selectedMode: mode,\n isWhitelisted: true,\n }\n // organic yields\n let depositInterest = 0\n let borrowInterest = 0\n // rewards\n let rewardDepositAccrual = 0\n let rewardBorrowAccrual = 0\n // staking\n let stakingDepositAccrual = 0\n let stakingBorrowAccrual = 0\n // amountrs\n let deposits = 0\n let debt = 0\n let collateral = 0\n let borrowDiscountedCollateral = 0\n let adjustedDebt = 0\n for (let i = 0; i < assetKeys.length; i++) {\n const asset = assetKeys[i]\n const { depositsUSD, debtUSD } = payload.lendingPositions[posId][asset]\n if (!lenderData?.[asset]) continue\n const { depositRate, stakingYield, variableBorrowRate, rewards } =\n lenderData[asset]\n // amounts\n deposits += depositsUSD\n debt += debtUSD\n // rewards\n Object.entries(rewards ?? {}).map(([key, rewardData]) => {\n rewardDepositAccrual += rewardData.depositRate * depositsUSD\n rewardBorrowAccrual +=\n rewardData.variableBorrowRate * debtUSD +\n rewardData.stableBorrowRate * debtUSD\n })\n // staking\n stakingDepositAccrual += (stakingYield ?? 0) * depositsUSD\n stakingBorrowAccrual += (stakingYield ?? 0) * debtUSD\n\n const config = lenderData[asset].config[mode]\n\n // risk adjusted\n collateral += (config?.collateralFactor ?? 1) * depositsUSD\n borrowDiscountedCollateral +=\n (config?.borrowCollateralFactor ?? 1) * depositsUSD\n adjustedDebt += (config?.borrowFactor ?? 1) * debtUSD\n\n // IRs\n depositInterest += depositRate * depositsUSD\n borrowInterest += debtUSD * variableBorrowRate\n }\n const nav = deposits - debt\n\n // aggregated balance data\n balanceData[posId] = {\n borrowDiscountedCollateral,\n borrowDiscountedCollateralAllActive: borrowDiscountedCollateral,\n collateral,\n collateralAllActive: collateral,\n deposits,\n debt,\n adjustedDebt,\n nav,\n deposits24h: histData[posId]?.totalDeposits24h,\n debt24h: histData[posId]?.totalDebt24h,\n nav24h: histData[posId]?.totalDeposits24h - histData[posId]?.totalDebt24h,\n }\n\n // aggregated apr data\n aprData[posId] = {\n apr: safeDivide(depositInterest - borrowInterest, nav),\n borrowApr: safeDivide(borrowInterest, debt),\n depositApr: safeDivide(depositInterest, deposits),\n rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),\n rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),\n rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),\n stakingApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),\n stakingDepositApr: safeDivide(stakingDepositAccrual, deposits),\n stakingBorrowApr: safeDivide(stakingBorrowAccrual, debt),\n }\n }\n return {\n account,\n chainId,\n balanceData,\n aprData,\n userConfigs,\n }\n}\n","import { UserApr } from '../../../types/lenderTypes'\nimport { safeDivide } from './formatting'\n\nexport * from './createGeneralUserState'\nexport * from './formatting'\nexport * from './createMultiAccountStyleUserState'\n\nexport function divideAccrualsToAprs(\n aprs: { [assets: string]: UserApr },\n nav: number,\n deposits: number,\n debt: number,\n) {\n if (nav === 0) return {}\n let d: any = {}\n Object.entries(aprs).map(([k, data]) => {\n d[k] = {\n apr: safeDivide(data.borrowApr + data.depositApr, nav),\n borrowApr: safeDivide(data.borrowApr, debt),\n depositApr: safeDivide(data.depositApr, deposits),\n }\n })\n return d\n}\n","import { formatEther, formatUnits, parseUnits } from 'viem'\n\nexport const SECONDS_PER_YEAR = 31_556_952n\n\n// Alternative to Number.toFixed that doesn't use scientific notation for excessively small or large numbers.\nconst toFixed = (x: number, decimals: number) =>\n new Intl.NumberFormat('en-US', {\n style: 'decimal',\n useGrouping: false,\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(x)\n\nconst safeParseNumber = (value: number, decimals = 18) =>\n safeParseUnits(toFixed(value, decimals), decimals)\n\nconst safeParseUnits = (strValue: string, decimals = 18) => {\n if (!/[-+]?[0-9]*\\.?[0-9]+/.test(strValue))\n throw Error(`invalid number: ${strValue}`)\n\n let [whole, dec = ''] = strValue.split('.')\n\n dec = dec.slice(0, decimals)\n\n return parseUnits(\n [whole || '0', dec].filter((v) => v.length > 0).join('.'),\n decimals,\n )\n}\n\n/**\n * Returns the per-second rate continuously compounded over a year (scaled by WAD),\n * as calculated in Morpho Blue assuming the market is frequently accrued onchain.\n * @param rate The per-second rate to compound annually (scaled by WAD).\n */\n// TODO: return a Number for APYs.\nexport function rateToApy(rate: bigint) {\n return safeParseNumber(\n Math.expm1(+formatEther(BigInt(rate) * SECONDS_PER_YEAR)),\n )\n}\n\nexport function parseLtv(ltv: bigint | number | string) {\n let str = 0\n try {\n str = Number(formatUnits(BigInt(ltv), 18))\n } catch (e) {}\n return str\n}\n\nexport function formatNr(n: string | bigint, d: number) {\n return Number(formatUnits(BigInt(n ?? 0), d))\n}\n","import {\n MorphoGeneralPublicResponse,\n RewardsMap,\n GetMarketsResponse,\n} from '../../types/lender/morpho-types'\nimport { apyToApr } from '../user-data/utils'\nimport { AdditionalYields } from '../../types'\nimport { GenericTokenList } from '../../types'\nimport { formatNr, parseLtv } from './utils/parsers'\nimport { zeroAddress } from 'viem'\n\nexport function convertMarketsToMorphoResponse(\n response: GetMarketsResponse,\n chainId: string,\n additionalYields: AdditionalYields = {\n intrinsicYields: {},\n lenderRewards: {},\n loaded: true,\n },\n tokens: GenericTokenList = {},\n): { [m: string]: MorphoGeneralPublicResponse } {\n const data: { [m: string]: MorphoGeneralPublicResponse } = {}\n\n response.markets.items.forEach((market) => {\n const {\n uniqueKey,\n lltv,\n irmAddress,\n oracleAddress,\n loanAsset,\n collateralAsset,\n state,\n } = market\n if (\n collateralAsset &&\n loanAsset &&\n oracleAddress &&\n oracleAddress !== zeroAddress\n ) {\n const m = 'MORPHO_BLUE_' + uniqueKey.slice(2).toUpperCase()\n // @ts-ignore\n if (!data[m]) data[m] = { data: {} }\n // 1. LOAN asset entry\n const loanRewards: RewardsMap = {}\n\n // state.rewards?.forEach((reward) => {\n // loanRewards[reward.asset.address] = {\n // depositRate: formatNr(reward.amountPerSuppliedToken, reward.asset.decimals),\n // variableBorrowRate: formatNr(reward.amountPerBorrowedToken, reward.asset.decimals),\n // stableBorrowRate: 0,\n // }\n // })\n\n const loanAssetAddress = loanAsset.address.toLowerCase()\n\n const meta = tokens[loanAssetAddress] ?? loanAsset\n const totalDeposits = formatNr(state.supplyAssets, loanAsset.decimals)\n const totalDebt = formatNr(state.borrowAssets, loanAsset.decimals)\n\n data[m].data[loanAssetAddress] = {\n poolId: loanAssetAddress,\n underlying: loanAssetAddress,\n asset: meta,\n totalDeposits,\n totalDebtStable: 0,\n totalDebt,\n totalDepositsUSD: Number(state.supplyAssetsUsd),\n totalDebtStableUSD: 0,\n totalLiquidity: totalDeposits - totalDebt,\n totalLiquidityUSD:\n Number(state.supplyAssetsUsd) - Number(state.borrowAssetsUsd),\n totalDebtUSD: Number(state.borrowAssetsUsd),\n depositRate: apyToApr(Number(state.supplyApy)) * 100,\n variableBorrowRate: apyToApr(Number(state.borrowApy)) * 100,\n stableBorrowRate: 0,\n stakingYield: additionalYields.intrinsicYields[meta?.assetGroup] ?? 0,\n rewards: Object.keys(loanRewards).length > 0 ? loanRewards : undefined,\n decimals: loanAsset.decimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: 0,\n collateralFactor: 0,\n borrowFactor: 1,\n collateralDisabled: true,\n debtDisabled: false,\n },\n },\n collateralActive: false,\n borrowingEnabled: true,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n const ltv = parseLtv(lltv)\n\n const collateralAssetAddress = collateralAsset.address.toLowerCase()\n const metaCollateral = tokens[collateralAssetAddress] ?? collateralAsset\n // 2. COLLATERAL asset entry\n data[m].data[collateralAssetAddress] = {\n poolId: collateralAssetAddress,\n underlying: collateralAssetAddress,\n asset: metaCollateral,\n totalDeposits: formatNr(\n state.collateralAssets,\n collateralAsset.decimals,\n ),\n totalDebtStable: 0,\n totalDebt: 0,\n totalLiquidity: formatNr(\n state.collateralAssets,\n collateralAsset.decimals,\n ),\n totalLiquidityUSD: Number(state.collateralAssetsUsd),\n totalDepositsUSD: Number(state.collateralAssetsUsd),\n totalDebtStableUSD: 0,\n totalDebtUSD: 0,\n depositRate: 0,\n variableBorrowRate: 0,\n stableBorrowRate: 0,\n stakingYield:\n additionalYields.intrinsicYields[metaCollateral?.assetGroup] ?? 0,\n rewards: undefined,\n decimals: collateralAsset.decimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: ltv,\n collateralFactor: ltv,\n borrowFactor: 1,\n collateralDisabled: false,\n debtDisabled: true,\n },\n },\n collateralActive: true,\n borrowingEnabled: false,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n data[m].params = {\n market: {\n lender: m,\n collateralDecimals: collateralAsset.decimals,\n loanDecimals: loanAsset.decimals,\n id: uniqueKey,\n lltv,\n oracle: oracleAddress,\n irm: irmAddress,\n collateralAddress: collateralAssetAddress,\n loanAddress: loanAssetAddress,\n },\n }\n data[m].chainId = chainId\n }\n })\n\n return data\n}\n","import { Chain } from '@1delta/chain-registry'\n\nexport const query = (first: number, skip: number, chainId: string) => `\nquery GetMarkets {\n markets(first: ${first}, skip: ${skip}, where: {\n chainId_in: [${chainId}],\n whitelisted: true\n },\n orderBy: SupplyAssetsUsd, \n orderDirection: Desc\n ) {\n items {\n uniqueKey\n irmAddress\n oracleAddress\n lltv\n loanAsset {\n address\n name\n symbol\n decimals\n priceUsd\n }\n collateralAsset {\n address\n name\n symbol\n decimals\n priceUsd\n }\n state {\n borrowApy\n supplyApy\n price\n rewards {\n asset {\n address\n name\n symbol\n decimals\n }\n amountPerBorrowedToken\n amountPerSuppliedToken\n }\n borrowAssets\n borrowAssetsUsd\n supplyAssets\n supplyAssetsUsd\n collateralAssets\n collateralAssetsUsd\n }\n }\n }\n}\n`\n\nconst BASE_URL = 'https://blue-api.morpho.org/graphql'\n\nexport async function fetchMorphoMarkets(chainId: string) {\n if (chainId !== Chain.ETHEREUM_MAINNET) {\n const requestBody = {\n query: query(200, 0, chainId),\n variables: {},\n }\n const response = await fetch(BASE_URL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n throw new Error(\n `Network error: ${response.status} - ${response.statusText}`,\n )\n }\n\n const data: any = await response.json()\n\n return data.data\n }\n\n const requestBody0 = {\n query: query(200, 0, chainId),\n variables: {},\n }\n\n const requestBody1 = {\n query: query(200, 200, chainId),\n variables: {},\n }\n const [data0, data1] = await Promise.all([\n fetch(BASE_URL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody0),\n }).then((x) => x.json()),\n fetch(BASE_URL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody1),\n }).then((x) => x.json()),\n ])\n\n return {\n markets: {\n items: [...data0.data.markets.items, ...data1.data.markets.items],\n },\n }\n}\n","export type Market = {\n loanToken: string // 20 bytes (EVM address, hex)\n collateralToken: string // 20 bytes (EVM address, hex)\n oracle: string // 20 bytes (EVM address, hex)\n irm: string // 20 bytes (EVM address, hex)\n lltv: bigint // 16 bytes\n price: bigint // 32 bytes (for morpho)\n loanTokenPrice?: bigint // 32 bytes (for moolah)\n collateralTokenPrice?: bigint // 32 bytes (for moolah)\n rateAtTarget: bigint // 32 bytes\n totalSupplyAssets: bigint // 16 bytes\n totalSupplyShares: bigint // 16 bytes\n totalBorrowAssets: bigint // 16 bytes\n totalBorrowShares: bigint // 16 bytes\n lastUpdate: bigint // 16 bytes\n fee: bigint // 16 bytes\n}\n\nexport type ListaMarket = {\n loanToken: string\n collateralToken: string\n oracle: string\n irm: string\n lltv: bigint\n\n price: bigint\n loanTokenPrice?: bigint\n collateralTokenPrice?: bigint\n\n minLoan?: bigint\n hasWhitelist?: boolean\n loanProvider?: string\n collateralProvider?: string\n broker?: string\n\n rateAtTarget: bigint\n totalSupplyAssets: bigint\n totalSupplyShares: bigint\n totalBorrowAssets: bigint\n totalBorrowShares: bigint\n lastUpdate: bigint\n fee: bigint\n}\n\nconst FIELD_SIZES = {\n addr: 20,\n u128: 16,\n u256: 32,\n}\n\nconst MORPHO_RECORD_SIZE =\n 4 * FIELD_SIZES.addr + // loanToken, collateralToken, oracle, irm\n 1 * FIELD_SIZES.u128 + // lltv\n 2 * FIELD_SIZES.u256 + // price, rateAtTarget\n 5 * FIELD_SIZES.u128 + // totals (4) + lastUpdate\n 1 * FIELD_SIZES.u128 // fee\n// = 256 bytes\n\nconst MOOLAH_RECORD_SIZE =\n 4 * FIELD_SIZES.addr + // loanToken, collateralToken, oracle, irm\n 1 * FIELD_SIZES.u128 + // lltv\n 3 * FIELD_SIZES.u256 + // loanTokenPrice, collateralTokenPrice, rateAtTarget\n 5 * FIELD_SIZES.u128 + // totals (4) + lastUpdate\n 1 * FIELD_SIZES.u128 // fee\n// = 288 bytes\n\nconst LISTA_RECORD_SIZE =\n 7 * FIELD_SIZES.addr + // loanToken, collateralToken, oracle, irm, loanProvider, collateralProvider, broker\n 8 * FIELD_SIZES.u128 + // lltv, minLoan, totals (4), lastUpdate, fee\n 3 * FIELD_SIZES.u256 + // priceLoanToken, priceCollateralToken, rateAtTarget\n 1 // hasWhitelist (bool)\n\n/**\n * Decode packed markets bytes into typed objects.\n * Auto-detects format based on data length and decodes accordingly.\n * Integers are parsed as big-endian BigInt. Addresses are 0x-prefixed lowercase hex.\n */\nexport function decodeMarkets(\n input: string | Uint8Array,\n): (Market | ListaMarket)[] {\n const bytes = normalizeToBytes(input)\n\n // Auto-detect format based on data length\n if (bytes.length % MORPHO_RECORD_SIZE === 0) {\n return decodeMorphoMarkets(bytes)\n } else if (bytes.length % LISTA_RECORD_SIZE === 0) {\n return decodeListaMarkets(bytes)\n } else {\n throw new Error(\n `Invalid data length ${bytes.length}; not a multiple of ${MORPHO_RECORD_SIZE} (morpho) or ${MOOLAH_RECORD_SIZE} (moolah) bytes per record`,\n )\n }\n}\n\n/**\n * Decode morpho markets\n */\nfunction decodeMorphoMarkets(bytes: Uint8Array): Market[] {\n if (bytes.length % MORPHO_RECORD_SIZE !== 0) {\n throw new Error(\n `Invalid data length ${bytes.length}; not a multiple of ${MORPHO_RECORD_SIZE} bytes per record`,\n )\n }\n\n const markets: Market[] = []\n for (let i = 0; i < bytes.length; i += MORPHO_RECORD_SIZE) {\n let o = i\n\n const loanToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const collateralToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const oracle = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const irm = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n\n const lltv = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const price = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n const rateAtTarget = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n\n const totalSupplyAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalSupplyShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const lastUpdate = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const fee = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n markets.push({\n loanToken,\n collateralToken,\n oracle,\n irm,\n lltv,\n price,\n rateAtTarget,\n totalSupplyAssets,\n totalSupplyShares,\n totalBorrowAssets,\n totalBorrowShares,\n lastUpdate,\n fee,\n })\n }\n\n return markets\n}\n\n/**\n * Decode moolah markets (separate loan and collateral token prices)\n */\nfunction decodeMoolahMarkets(bytes: Uint8Array): Market[] {\n if (bytes.length % MOOLAH_RECORD_SIZE !== 0) {\n throw new Error(\n `Invalid data length ${bytes.length}; not a multiple of ${MOOLAH_RECORD_SIZE} bytes per record`,\n )\n }\n\n const markets: Market[] = []\n for (let i = 0; i < bytes.length; i += MOOLAH_RECORD_SIZE) {\n let o = i\n\n const loanToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const collateralToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const oracle = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const irm = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n\n const lltv = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const loanTokenPrice = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n const collateralTokenPrice = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n const rateAtTarget = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n\n const totalSupplyAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalSupplyShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const lastUpdate = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const fee = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n // follows morpho calcs: collateral price / loan price, scaled by 1e36\n // assuming moolah follows same decimal normalization as morpho blue\n const calculatedPrice =\n collateralTokenPrice && loanTokenPrice\n ? (collateralTokenPrice * 10n ** 36n) / loanTokenPrice\n : 0n\n\n markets.push({\n loanToken,\n collateralToken,\n oracle,\n irm,\n lltv,\n price: calculatedPrice,\n loanTokenPrice,\n collateralTokenPrice,\n rateAtTarget,\n totalSupplyAssets,\n totalSupplyShares,\n totalBorrowAssets,\n totalBorrowShares,\n lastUpdate,\n fee,\n })\n }\n\n return markets\n}\n\nexport function decodeListaMarkets(bytes: Uint8Array): ListaMarket[] {\n if (bytes.length % LISTA_RECORD_SIZE !== 0) {\n throw new Error(\n `Invalid data length ${bytes.length}; not a multiple of ${LISTA_RECORD_SIZE} bytes per record`,\n )\n }\n\n const markets: ListaMarket[] = []\n\n for (let i = 0; i < bytes.length; i += LISTA_RECORD_SIZE) {\n let o = i\n\n const loanToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const collateralToken = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const oracle = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const irm = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n\n const lltv = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n const loanTokenPrice = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n const collateralTokenPrice = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n\n const minLoan = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n const rateAtTarget = readUintBE(bytes, o, FIELD_SIZES.u256)\n o += FIELD_SIZES.u256\n\n const totalSupplyAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalSupplyShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowAssets = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const totalBorrowShares = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n // ✅ these come BEFORE hasWhitelist\n const lastUpdate = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n const fee = readUintBE(bytes, o, FIELD_SIZES.u128)\n o += FIELD_SIZES.u128\n\n const hasWhitelist = bytes[o] === 1\n o += 1\n\n const loanProvider = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const collateralProvider = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n const broker = readAddress(bytes, o, FIELD_SIZES.addr)\n o += FIELD_SIZES.addr\n\n const price =\n loanTokenPrice > 0n\n ? (collateralTokenPrice * 10n ** 36n) / loanTokenPrice\n : 0n\n\n markets.push({\n loanToken,\n collateralToken,\n oracle,\n irm,\n lltv,\n price,\n loanTokenPrice,\n collateralTokenPrice,\n minLoan,\n hasWhitelist,\n loanProvider,\n collateralProvider,\n broker,\n rateAtTarget,\n totalSupplyAssets,\n totalSupplyShares,\n totalBorrowAssets,\n totalBorrowShares,\n lastUpdate,\n fee,\n })\n }\n\n return markets\n}\n\n// ---------- helpers ----------\n\nexport function normalizeToBytes(input: string | Uint8Array): Uint8Array {\n if (typeof input !== 'string') {\n return input\n }\n let hex = input.startsWith('0x') ? input.slice(2) : input\n if (hex.length % 2 !== 0) throw new Error('Hex string must have even length')\n const out = new Uint8Array(hex.length / 2)\n for (let i = 0; i < out.length; i++) {\n out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16)\n }\n return out\n}\n\nfunction readAddress(bytes: Uint8Array, offset: number, len: number): string {\n // Addresses are the raw 20 bytes, render as 0x + 40 hex chars (lowercase).\n const hex = toHex(bytes.subarray(offset, offset + len))\n return '0x' + hex\n}\n\nfunction readUintBE(bytes: Uint8Array, offset: number, len: number): bigint {\n // Big-endian: (((b0 * 256) + b1) * 256 + ...) pattern.\n let v = 0n\n const end = offset + len\n for (let i = offset; i < end; i++) {\n v = (v << 8n) | BigInt(bytes[i])\n }\n return v\n}\n\nfunction toHex(arr: Uint8Array): string {\n let s = ''\n for (let i = 0; i < arr.length; i++) {\n const h = arr[i].toString(16).padStart(2, '0')\n s += h\n }\n return s\n}\n","import { morphoPools, morphoTypeMarkets } from '@1delta/data-sdk'\nimport { AdditionalYields } from '../../types'\nimport { MORPHO_LENS } from '../user-data/morpho/userCallBuild'\nimport { convertMarketsToMorphoResponse } from '../morpho/convertPublic'\nimport { getMarketsOnChain } from './getMarketsOnChain'\n\nexport async function fetchListaPublicData(\n chainId: string,\n yields: AdditionalYields = {\n intrinsicYields: {},\n lenderRewards: {},\n loaded: true,\n },\n) {\n const mbData = await getMarketsOnChain(chainId, morphoPools())\n return convertMarketsToMorphoResponse(mbData, chainId, yields)\n}\n\nexport function buildListaCall(chainId: string, marketsOverride?: string[]) {\n const markets =\n marketsOverride ?? morphoTypeMarkets().LISTA_DAO?.[chainId] ?? []\n const mb = morphoPools()?.LISTA_DAO?.[chainId]\n if (!mb || markets.length === 0) return []\n\n return [\n {\n address: MORPHO_LENS[chainId],\n name: 'getListaMarketDataCompact',\n params: [mb, markets],\n },\n ]\n}\n","import { morphoPools, morphoTypeMarkets } from '@1delta/data-sdk'\nimport { AdditionalYields } from '../../types'\nimport { MORPHO_LENS } from '../user-data/morpho/userCallBuild'\nimport { convertMarketsToMorphoResponse } from './convertPublic'\nimport { fetchMorphoMarkets } from './fetchPublic'\nimport { buildListaCall } from '../lista/publicCallBuild'\n\nexport async function fetchMorphoPublicData(\n chainId: string,\n yields: AdditionalYields = {\n intrinsicYields: {},\n lenderRewards: {},\n loaded: true,\n },\n) {\n const mbData = await fetchMorphoMarkets(chainId)\n return convertMarketsToMorphoResponse(mbData, chainId, yields)\n}\n\nexport function buildMorphoCall(chainId: string, marketsOverride?: string[]) {\n const markets =\n marketsOverride ?? morphoTypeMarkets()?.MORPHO_BLUE?.[chainId] ?? []\n const mb = morphoPools()?.MORPHO_BLUE?.[chainId]\n if (!mb || markets.length === 0) return []\n\n return [\n {\n address: MORPHO_LENS[chainId],\n name: 'getMarketDataCompact',\n params: [mb, markets],\n },\n ]\n}\n\nexport function buildMorphoTypeCall(\n chainId: string,\n lender: string,\n marketsOVerride?: string[],\n) {\n if (lender.startsWith('LISTA_DAO'))\n return buildListaCall(chainId, marketsOVerride)\n return buildMorphoCall(chainId, marketsOVerride)\n}\n","import { rateToApy, SECONDS_PER_YEAR } from './parsers'\n\nexport type RoundingDirection = 'Up' | 'Down'\n\n/**\n * Library to manage fixed-point arithmetic.\n * https://github.com/morpho-org/morpho-blue/blob/main/src/libraries/MathLib.sol\n */\nexport namespace MathLib {\n export const WAD = 1_000000000000000000n\n export const RAY = 1_000000000000000000000000000n\n\n export const MAX_UINT_256 = maxUint(256)\n export const MAX_UINT_160 = maxUint(160)\n export const MAX_UINT_128 = maxUint(128)\n export const MAX_UINT_48 = maxUint(48)\n\n export function maxUint(nBits: number) {\n if (nBits % 4 !== 0) throw new Error(`Invalid number of bits: ${nBits}`)\n\n return BigInt(`0x${'f'.repeat(nBits / 4)}`)\n }\n\n /**\n * Returns the absolute value of a number\n * @param a The number\n */\n export function abs(a: bigint) {\n a = BigInt(a)\n\n return a >= 0 ? a : -a\n }\n\n /**\n * Returns the smallest number given as param\n * @param x The first number\n * @param y The second number\n */\n export function min(...xs: bigint[]) {\n return xs.map(BigInt).reduce((x, y) => (x <= y ? x : y))\n }\n\n /**\n * Returns the greatest number given as param\n * @param x The first number\n * @param y The second number\n */\n export function max(...xs: bigint[]) {\n return xs.map(BigInt).reduce((x, y) => (x <= y ? y : x))\n }\n\n /**\n * Returns the subtraction of b from a, floored to zero if negative\n * @param x The first number\n * @param y The second number\n */\n export function zeroFloorSub(x: bigint, y: bigint) {\n x = BigInt(x)\n y = BigInt(y)\n\n return x <= y ? 0n : x - y\n }\n\n /**\n * Perform the WAD-based multiplication of 2 numbers, rounded down\n * @param x The first number\n * @param y The second number\n */\n export function wMulDown(x: bigint, y: bigint) {\n return MathLib.wMul(x, y, 'Down')\n }\n\n /**\n * Perform the WAD-based multiplication of 2 numbers, rounded up\n * @param x The first number\n * @param y The second number\n */\n export function wMulUp(x: bigint, y: bigint) {\n return MathLib.wMul(x, y, 'Up')\n }\n\n /**\n * Perform the WAD-based multiplication of 2 numbers with a provided rounding direction\n * @param x The first number\n * @param y The second number\n */\n export function wMul(x: bigint, y: bigint, rounding: RoundingDirection) {\n return MathLib.mulDiv(x, y, MathLib.WAD, rounding)\n }\n\n /**\n * Perform the WAD-based division of 2 numbers, rounded down\n * @param x The first number\n * @param y The second number\n */\n export function wDivDown(x: bigint, y: bigint) {\n return MathLib.wDiv(x, y, 'Down')\n }\n\n /**\n * Perform the WAD-based multiplication of 2 numbers, rounded up\n * @param x The first number\n * @param y The second number\n */\n export function wDivUp(x: bigint, y: bigint) {\n return MathLib.wDiv(x, y, 'Up')\n }\n\n /**\n * Perform the WAD-based multiplication of 2 numbers with a provided rounding direction\n * @param x The first number\n * @param y The second number\n */\n export function wDiv(x: bigint, y: bigint, rounding: RoundingDirection) {\n return MathLib.mulDiv(x, MathLib.WAD, y, rounding)\n }\n\n /**\n * Multiply two numbers and divide by a denominator, rounding down the result\n * @param x The first number\n * @param y The second number\n * @param denominator The denominator\n */\n export function mulDivDown(x: bigint, y: bigint, denominator: bigint) {\n x = BigInt(x)\n y = BigInt(y)\n denominator = BigInt(denominator)\n if (denominator === 0n) throw Error('MathLib: DIVISION_BY_ZERO')\n\n return (x * y) / denominator\n }\n\n /**\n * Multiply two numbers and divide by a denominator, rounding up the result\n * @param x The first number\n * @param y The second number\n * @param denominator The denominator\n */\n export function mulDivUp(x: bigint, y: bigint, denominator: bigint) {\n x = BigInt(x)\n y = BigInt(y)\n denominator = BigInt(denominator)\n if (denominator === 0n) throw Error('MathLib: DIVISION_BY_ZERO')\n\n const roundup = (x * y) % denominator > 0 ? 1n : 0n\n\n return (x * y) / denominator + roundup\n }\n\n export function mulDiv(\n x: bigint,\n y: bigint,\n denominator: bigint,\n rounding: RoundingDirection,\n ) {\n return MathLib[`mulDiv${rounding}`](x, y, denominator)\n }\n\n /**\n * The sum of the first three non-zero terms of a Taylor expansion of e^(nx) - 1,\n * to approximate a continuously compounded interest rate.\n *\n * @param x The base of the exponent\n * @param n The exponent\n */\n export function wTaylorCompounded(x: bigint, n: bigint) {\n const firstTerm = BigInt(x) * BigInt(n)\n const secondTerm = MathLib.mulDivDown(\n firstTerm,\n firstTerm,\n 2n * MathLib.WAD,\n )\n const thirdTerm = MathLib.mulDivDown(\n secondTerm,\n firstTerm,\n 3n * MathLib.WAD,\n )\n\n return firstTerm + secondTerm + thirdTerm\n }\n\n /**\n * Converts a WAD-based quantity to a RAY-based quantity.\n * @param x The WAD-based quantity.\n */\n export function wToRay(x: bigint) {\n return BigInt(x) * 1_000000000n\n }\n\n /**\n * Returns the market's utilization rate (scaled by WAD).\n * @param market The market state.\n */\n export function getUtilization({\n totalSupplyAssets,\n totalBorrowAssets,\n }: {\n totalSupplyAssets: bigint\n totalBorrowAssets: bigint\n }) {\n if (totalSupplyAssets === 0n) {\n if (totalBorrowAssets > 0n) return MathLib.MAX_UINT_256\n\n return 0n\n }\n\n return MathLib.wDivDown(totalBorrowAssets, totalSupplyAssets)\n }\n\n /**\n * The market's instantaneous supply-side Annual Percentage Yield (APY) at the given timestamp,\n * if the state remains unchanged (not accrued) (scaled by WAD).\n * @param timestamp The timestamp at which to calculate the supply APY.\n * Must be greater than or equal to `lastUpdate`.\n * Defaults to `Time.timestamp()` (returns the current supply APY).\n */\n export function getSupplyApy(\n borrowApy: bigint,\n utilization: bigint,\n fee: bigint,\n ) {\n if (!utilization) return 0n\n return MathLib.wMulUp(\n MathLib.wMulDown(borrowApy, utilization),\n MathLib.WAD - fee,\n )\n }\n\n /**\n * Returns the rates that _would_ apply to interest accrual for borrowers of this market,\n * if `accrueInterest` was called at the given timestamp (scaled by WAD).\n * @param timestamp The timestamp at which to calculate the accrual borrow rate.\n * Must be greater than or equal to `lastUpdate`.\n * Defaults to `Time.timestamp()` (returns the current accrual borrow rate).\n */\n function getAccrualBorrowRates(\n rateAtTarget: bigint | null,\n utilization: bigint,\n _timestamp: number = Math.floor(Date.now() / 1000),\n _lastUpdate: number,\n ):\n | {\n elapsed: bigint\n avgBorrowRate: bigint\n endBorrowRate: bigint\n endRateAtTarget?: bigint\n }\n | undefined {\n const timestamp = BigInt(_timestamp)\n\n const elapsed = timestamp - BigInt(_lastUpdate)\n if (elapsed < 0n) return undefined\n\n if (rateAtTarget == null)\n return {\n elapsed,\n avgBorrowRate: 0n,\n endBorrowRate: 0n,\n }\n\n return {\n elapsed,\n ..._getBorrowRate(utilization, rateAtTarget, elapsed),\n }\n }\n\n /**\n */\n function getEndBorrowRate(\n rateAtTarget: bigint | null,\n utilization: bigint,\n _timestamp: number = Math.floor(Date.now() / 1000),\n _lastUpdate: number,\n ) {\n return getAccrualBorrowRates(\n rateAtTarget,\n utilization,\n _timestamp,\n _lastUpdate,\n )?.endBorrowRate\n }\n\n export function getBorrowApy(\n rateAtTarget: bigint | null,\n utilization: bigint,\n _timestamp: number = Math.floor(Date.now() / 1000),\n _lastUpdate: number,\n ) {\n const borrowRate = getEndBorrowRate(\n rateAtTarget,\n utilization,\n _timestamp,\n _lastUpdate,\n )\n\n return borrowRate ? rateToApy(borrowRate) : 0n\n }\n\n const CURVE_STEEPNESS = 4_000000000000000000n\n const TARGET_UTILIZATION = 90_0000000000000000n\n const INITIAL_RATE_AT_TARGET = 4_0000000000000000n / SECONDS_PER_YEAR\n const ADJUSTMENT_SPEED = 50_000000000000000000n / SECONDS_PER_YEAR\n const MIN_RATE_AT_TARGET = 10_00000000000000n / SECONDS_PER_YEAR\n const MAX_RATE_AT_TARGET = 2_000000000000000000n / SECONDS_PER_YEAR\n\n /**\n * ln(2), scaled by WAD.\n */\n const LN_2_INT = 693147180559945309n\n\n /**\n * ln(1e-18), scaled by WAD.\n */\n const LN_WEI_INT = -41_446531673892822312n\n\n /**\n * Above this bound, `wExp` is clipped to avoid overflowing when multiplied with 1 ether.\n * This upper bound corresponds to: ln(type(int256).max / 1e36) (scaled by WAD, floored).\n */\n const WEXP_UPPER_BOUND = 93_859467695000404319n\n\n /**\n * The value of wExp(`WEXP_UPPER_BOUND`).\n */\n const WEXP_UPPER_VALUE =\n 57716089161558943949701069502944508345128_422502756744429568n\n\n export function wExp(x: bigint) {\n x = BigInt(x)\n\n // If x < ln(1e-18) then exp(x) < 1e-18 so it is rounded to zero.\n if (x < LN_WEI_INT) return 0n\n // `wExp` is clipped to avoid overflowing when multiplied with 1 ether.\n if (x >= WEXP_UPPER_BOUND) return WEXP_UPPER_VALUE\n\n // Decompose x as x = q * ln(2) + r with q an integer and -ln(2)/2 <= r <= ln(2)/2.\n // q = x / ln(2) rounded half toward zero.\n const roundingAdjustment = x < 0n ? -(LN_2_INT / 2n) : LN_2_INT / 2n\n const q = (x + roundingAdjustment) / LN_2_INT\n const r = x - q * LN_2_INT\n\n // Compute e^r with a 2nd-order Taylor polynomial.\n const expR = MathLib.WAD + r + (r * r) / MathLib.WAD / 2n\n\n // Return e^x = 2^q * e^r.\n if (q >= 0n) return expR << q\n return expR >> -q\n }\n\n export function _getBorrowRate(\n startUtilization: bigint,\n startRateAtTarget: bigint,\n elapsed: bigint,\n ) {\n startUtilization = BigInt(startUtilization)\n startRateAtTarget = BigInt(startRateAtTarget)\n elapsed = BigInt(elapsed)\n\n const errNormFactor =\n startUtilization > TARGET_UTILIZATION\n ? MathLib.WAD - TARGET_UTILIZATION\n : TARGET_UTILIZATION\n const err = MathLib.wDivDown(\n startUtilization - TARGET_UTILIZATION,\n errNormFactor,\n )\n\n let avgRateAtTarget: bigint\n let endRateAtTarget: bigint\n\n if (startRateAtTarget === 0n) {\n // First interaction.\n avgRateAtTarget = INITIAL_RATE_AT_TARGET\n endRateAtTarget = INITIAL_RATE_AT_TARGET\n } else {\n // The speed is assumed constant between two updates, but it is in fact not constant because of interest.\n // So the rate is always underestimated.\n const speed = MathLib.wMulDown(ADJUSTMENT_SPEED, err)\n const linearAdaptation = speed * elapsed\n\n if (linearAdaptation === 0n) {\n // If linearAdaptation == 0, avgRateAtTarget = endRateAtTarget = startRateAtTarget;\n avgRateAtTarget = startRateAtTarget\n endRateAtTarget = startRateAtTarget\n } else {\n // Non negative because MIN_RATE_AT_TARGET > 0.\n const _newRateAtTarget = (linearAdaptation: bigint) =>\n MathLib.min(\n MathLib.max(\n MathLib.wMulDown(startRateAtTarget, wExp(linearAdaptation)),\n MIN_RATE_AT_TARGET,\n ),\n MAX_RATE_AT_TARGET,\n )\n\n // Formula of the average rate that should be returned to Morpho Blue:\n // avg = 1/T * ∫_0^T curve(startRateAtTarget*exp(speed*x), err) dx\n // The integral is approximated with the trapezoidal rule:\n // avg ~= 1/T * Σ_i=1^N [curve(f((i-1) * T/N), err) + curve(f(i * T/N), err)] / 2 * T/N\n // Where f(x) = startRateAtTarget*exp(speed*x)\n // avg ~= Σ_i=1^N [curve(f((i-1) * T/N), err) + curve(f(i * T/N), err)] / (2 * N)\n // As curve is linear in its first argument:\n // avg ~= curve([Σ_i=1^N [f((i-1) * T/N) + f(i * T/N)] / (2 * N), err)\n // avg ~= curve([(f(0) + f(T))/2 + Σ_i=1^(N-1) f(i * T/N)] / N, err)\n // avg ~= curve([(startRateAtTarget + endRateAtTarget)/2 + Σ_i=1^(N-1) f(i * T/N)] / N, err)\n // With N = 2:\n // avg ~= curve([(startRateAtTarget + endRateAtTarget)/2 + startRateAtTarget*exp(speed*T/2)] / 2, err)\n // avg ~= curve([startRateAtTarget + endRateAtTarget + 2*startRateAtTarget*exp(speed*T/2)] / 4, err)\n endRateAtTarget = _newRateAtTarget(linearAdaptation)\n avgRateAtTarget =\n (startRateAtTarget +\n endRateAtTarget +\n 2n * _newRateAtTarget(linearAdaptation / 2n)) /\n 4n\n }\n }\n\n // Non negative because 1 - 1/C >= 0, C - 1 >= 0.\n const coeff =\n err < 0\n ? MathLib.WAD - MathLib.wDivDown(MathLib.WAD, CURVE_STEEPNESS)\n : CURVE_STEEPNESS - MathLib.WAD\n\n const _curve = (rateAtTarget: bigint) =>\n MathLib.wMulDown(MathLib.wMulDown(coeff, err) + MathLib.WAD, rateAtTarget)\n\n // Non negative if avgRateAtTarget >= 0 because if err < 0, coeff <= 1.\n return {\n avgBorrowRate: _curve(avgRateAtTarget),\n endBorrowRate: _curve(endRateAtTarget),\n endRateAtTarget,\n }\n }\n}\n","import { morphoTypeMarkets } from '@1delta/data-sdk'\nimport { formatEther } from 'viem'\nimport { decodeMarkets, Market } from './utils/evmParser'\nimport { AdditionalYields } from '../../types'\nimport { GenericTokenList } from '../../types'\nimport { formatNr, parseLtv } from './utils/parsers'\nimport { MorphoGeneralPublicResponse } from '../../types/lender/morpho-types'\nimport { toGenericPriceKey, toOracleKey } from '../../assets'\nimport { MathLib } from './utils/mathLib'\nimport { apyToApr } from '../user-data/utils'\nimport { formatMorphoPrice } from '../../utils/parsing'\n\nexport function getMorphoMarketDataConverter(\n lender: string,\n chainId: string,\n prices: any,\n additionalYields: AdditionalYields = {\n intrinsicYields: {},\n lenderRewards: {},\n loaded: true,\n },\n tokens: GenericTokenList = {},\n marketsOverride?: string[],\n): [(data: any[]) => any | undefined, number] {\n const markets =\n marketsOverride ?? morphoTypeMarkets()?.MORPHO_BLUE?.[chainId] ?? []\n return [\n (rData: any[]) => {\n const decoded = decodeMarkets(rData[0] ?? '0x') as Market[]\n\n const data: { [m: string]: MorphoGeneralPublicResponse } = {}\n decoded.forEach((market, i) => {\n const uniqueKey = markets[i]\n const { lltv, irm, oracle, loanToken, collateralToken, ...state } =\n market\n if (collateralToken && loanToken && oracle) {\n const m = 'MORPHO_BLUE_' + uniqueKey.slice(2).toUpperCase()\n // @ts-ignore\n if (!data[m]) data[m] = { data: {} }\n // 1. LOAN asset entry\n const loanRewards: any = {}\n\n // state.rewards?.forEach((reward) => {\n // loanRewards[reward.asset?.address] = {\n // depositRate: formatNr(reward.amountPerSuppliedToken, reward.asset.decimals),\n // variableBorrowRate: formatNr(reward.amountPerBorrowedToken, reward.asset.decimals),\n // stableBorrowRate: 0,\n // }\n // })\n\n // get assets from list\n const loanAsset = tokens[loanToken.toLowerCase()]\n const collateralAsset = tokens[collateralToken.toLowerCase()]\n\n const loanKey =\n toOracleKey(loanAsset?.assetGroup!) ??\n toGenericPriceKey(loanAsset?.address, chainId)\n\n let loanPrice = prices[loanKey]\n\n // try to infer loan price from collateral price if any\n if (!loanPrice) {\n const collateralKey =\n toOracleKey(collateralAsset?.assetGroup!) ??\n toGenericPriceKey(collateralAsset?.address, chainId)\n const collateralPrice = prices[collateralKey]\n // get debt price by collateral price\n if (collateralPrice) {\n const priceDebtToCollateral = formatMorphoPrice(\n state.price.toString(),\n loanAsset.decimals,\n collateralAsset.decimals,\n )\n loanPrice = collateralPrice / priceDebtToCollateral\n }\n }\n\n const loanTokenAddress = loanAsset?.address.toLowerCase()\n\n const meta = tokens[loanTokenAddress] ?? loanAsset\n const totalDeposits = formatNr(\n state.totalSupplyAssets,\n loanAsset.decimals,\n )\n const totalDebt = formatNr(\n state.totalBorrowAssets,\n loanAsset.decimals,\n )\n\n const utilization = MathLib.getUtilization({\n totalBorrowAssets: state.totalBorrowAssets,\n totalSupplyAssets: state.totalSupplyAssets,\n })\n\n let borrowApy = 0n\n let supplyApy = 0n\n\n try {\n borrowApy = MathLib.getBorrowApy(\n state.rateAtTarget,\n utilization,\n undefined,\n Number(state.lastUpdate),\n )\n supplyApy = MathLib.getSupplyApy(borrowApy, utilization, state.fee)\n } catch {}\n const borrowApr = apyToApr(Number(formatEther(borrowApy))) * 100\n const depositApr = apyToApr(Number(formatEther(supplyApy))) * 100\n\n data[m].data[loanTokenAddress] = {\n poolId: loanTokenAddress,\n underlying: loanTokenAddress,\n asset: meta,\n totalDeposits,\n totalDebtStable: 0,\n totalDebt,\n totalDepositsUSD: totalDeposits * loanPrice,\n totalDebtStableUSD: 0,\n totalLiquidity: totalDeposits - totalDebt,\n totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,\n totalDebtUSD: totalDebt * loanPrice,\n depositRate: depositApr,\n variableBorrowRate: borrowApr,\n stableBorrowRate: 0,\n stakingYield:\n additionalYields.intrinsicYields[meta?.assetGroup] ?? 0,\n rewards:\n Object.keys(loanRewards).length > 0 ? loanRewards : undefined,\n decimals: loanAsset.decimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: 0,\n collateralFactor: 0,\n borrowFactor: 1,\n collateralDisabled: true,\n debtDisabled: false,\n },\n },\n collateralActive: false,\n borrowingEnabled: true,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n const ltv = parseLtv(lltv)\n\n const collateralAssetAddress = collateralAsset?.address.toLowerCase()\n const metaCollateral =\n tokens[collateralAssetAddress] ?? collateralAsset\n // 2. COLLATERAL asset entry\n data[m].data[collateralAssetAddress] = {\n poolId: collateralAssetAddress,\n underlying: collateralAssetAddress,\n asset: metaCollateral,\n totalDeposits: 0, // we do not have these metrics when querying on-chain\n totalDebtStable: 0,\n totalDebt: 0,\n totalLiquidity: 0,\n totalLiquidityUSD: 0,\n totalDepositsUSD: 0,\n totalDebtStableUSD: 0,\n totalDebtUSD: 0,\n depositRate: 0,\n variableBorrowRate: 0,\n stableBorrowRate: 0,\n stakingYield:\n additionalYields.intrinsicYields[metaCollateral?.assetGroup] ?? 0,\n rewards: undefined,\n decimals: collateralAsset.decimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: ltv,\n collateralFactor: ltv,\n borrowFactor: 1,\n collateralDisabled: false,\n debtDisabled: true,\n },\n },\n collateralActive: true,\n borrowingEnabled: false,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n data[m].params = {\n market: {\n lender: m,\n collateralDecimals: collateralAsset.decimals,\n loanDecimals: loanAsset.decimals,\n id: uniqueKey,\n lltv: lltv.toString(),\n oracle: oracle,\n irm: irm,\n collateralAddress: collateralAssetAddress,\n loanAddress: loanTokenAddress,\n },\n }\n data[m].chainId = chainId\n }\n })\n\n return data\n },\n markets.length > 0 ? 1 : 0,\n ]\n}\n","import { morphoTypeMarkets } from '@1delta/data-sdk'\nimport { formatEther, zeroAddress } from 'viem'\nimport { decodeMarkets, ListaMarket } from '../morpho/utils/evmParser'\nimport { AdditionalYields } from '../../types'\nimport { GenericTokenList } from '../../types'\nimport { formatNr, parseLtv } from '../morpho/utils/parsers'\nimport { MorphoGeneralPublicResponse } from '../../types/lender/morpho-types'\nimport { toGenericPriceKey, toOracleKey } from '../../assets'\nimport { MathLib } from '../morpho/utils/mathLib'\nimport { apyToApr } from '../user-data/utils'\nimport { formatMorphoPrice } from '../../utils/parsing'\n\nexport function getListaMarketDataConverter(\n lender: string,\n chainId: string,\n prices: any,\n additionalYields: AdditionalYields = {\n intrinsicYields: {},\n lenderRewards: {},\n loaded: true,\n },\n tokens: GenericTokenList = {},\n marketsOverride?: string[],\n): [(data: any[]) => any | undefined, number] {\n const markets =\n marketsOverride ?? morphoTypeMarkets()?.LISTA_DAO?.[chainId] ?? []\n return [\n (rData: any[]) => {\n const decoded = decodeMarkets(rData[0] ?? '0x') as ListaMarket[]\n const data: { [m: string]: MorphoGeneralPublicResponse } = {}\n decoded.forEach((market, i) => {\n const uniqueKey = markets[i]\n const {\n lltv,\n irm,\n oracle,\n loanToken,\n collateralToken,\n minLoan,\n broker,\n loanProvider,\n collateralProvider,\n hasWhitelist,\n ...state\n } = market\n if (collateralToken && loanToken && oracle && oracle !== zeroAddress) {\n const m = 'LISTA_DAO_' + uniqueKey.slice(2).toUpperCase()\n // @ts-ignore\n if (!data[m]) data[m] = { data: {} }\n // 1. LOAN asset entry\n const loanRewards: any = {}\n\n const loanTokenAddress = loanToken.toLowerCase()\n const collateralAssetAddress = collateralToken.toLowerCase()\n // get assets from list\n const loanAsset = tokens[loanTokenAddress]\n const collateralAsset = tokens[collateralAssetAddress]\n\n const loanKey =\n toOracleKey(loanAsset?.assetGroup!) ??\n toGenericPriceKey(loanTokenAddress, chainId)\n\n let loanPrice = prices[loanKey]\n\n const loanDecimals = loanAsset?.decimals ?? 18\n const collateralDecimals = collateralAsset?.decimals ?? 18\n\n // try to infer loan price from collateral price if any\n if (!loanPrice) {\n const collateralKey =\n toOracleKey(collateralAsset?.assetGroup!) ??\n toGenericPriceKey(collateralAssetAddress, chainId)\n const collateralPrice = prices[collateralKey]\n // get debt price by collateral price\n if (collateralPrice) {\n const priceDebtToCollateral = formatMorphoPrice(\n state.price.toString(),\n loanDecimals,\n collateralDecimals,\n )\n loanPrice = collateralPrice / priceDebtToCollateral\n }\n }\n\n const meta = tokens[loanTokenAddress] ?? loanAsset\n const totalDeposits = formatNr(state.totalSupplyAssets, loanDecimals)\n const totalDebt = formatNr(state.totalBorrowAssets, loanDecimals)\n\n const utilization = MathLib.getUtilization({\n totalBorrowAssets: state.totalBorrowAssets,\n totalSupplyAssets: state.totalSupplyAssets,\n })\n\n let borrowApy = 0n\n let supplyApy = 0n\n\n try {\n borrowApy = MathLib.getBorrowApy(\n state.rateAtTarget,\n utilization,\n undefined,\n Number(state.lastUpdate),\n )\n supplyApy = MathLib.getSupplyApy(borrowApy, utilization, state.fee)\n } catch {}\n const borrowApr = apyToApr(Number(formatEther(borrowApy))) * 100\n const depositApr = apyToApr(Number(formatEther(supplyApy))) * 100\n\n data[m].data[loanTokenAddress] = {\n poolId: loanTokenAddress,\n underlying: loanTokenAddress,\n asset: meta,\n totalDeposits,\n totalDebtStable: 0,\n totalDebt,\n totalDepositsUSD: totalDeposits * loanPrice,\n totalDebtStableUSD: 0,\n totalLiquidity: totalDeposits - totalDebt,\n totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,\n totalDebtUSD: totalDebt * loanPrice,\n depositRate: depositApr,\n variableBorrowRate: borrowApr,\n stableBorrowRate: 0,\n stakingYield:\n additionalYields.intrinsicYields[meta?.assetGroup] ?? 0,\n rewards:\n Object.keys(loanRewards).length > 0 ? loanRewards : undefined,\n decimals: loanAsset.decimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: 0,\n collateralFactor: 0,\n borrowFactor: 1,\n collateralDisabled: true,\n debtDisabled: false,\n },\n },\n collateralActive: false,\n borrowingEnabled: true,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n const ltv = parseLtv(lltv)\n\n const metaCollateral =\n tokens[collateralAssetAddress] ?? collateralAsset\n // 2. COLLATERAL asset entry\n data[m].data[collateralAssetAddress] = {\n poolId: collateralAssetAddress,\n underlying: collateralAssetAddress,\n asset: metaCollateral,\n totalDeposits: 0, // we do not have these metrics when querying on-chain\n totalDebtStable: 0,\n totalDebt: 0,\n totalLiquidity: 0,\n totalLiquidityUSD: 0,\n totalDepositsUSD: 0,\n totalDebtStableUSD: 0,\n totalDebtUSD: 0,\n depositRate: 0,\n variableBorrowRate: 0,\n stableBorrowRate: 0,\n stakingYield:\n additionalYields.intrinsicYields[metaCollateral?.assetGroup] ?? 0,\n rewards: undefined,\n decimals: collateralDecimals,\n config: {\n 0: {\n category: 0,\n borrowCollateralFactor: ltv,\n collateralFactor: ltv,\n borrowFactor: 1,\n collateralDisabled: false,\n debtDisabled: true,\n },\n },\n collateralActive: true,\n borrowingEnabled: false,\n hasStable: false,\n isActive: true,\n isFrozen: false,\n }\n\n data[m].params = {\n market: {\n lender: m,\n collateralDecimals: collateralDecimals,\n loanDecimals: loanDecimals,\n id: uniqueKey,\n lltv: lltv.toString(),\n oracle: oracle,\n irm: irm,\n collateralAddress: collateralAssetAddress,\n loanAddress: loanTokenAddress,\n minLoan: minLoan?.toString() ?? '0',\n broker,\n loanProvider,\n collateralProvider,\n hasWhitelist,\n },\n }\n data[m].chainId = chainId\n }\n })\n\n return data\n },\n markets.length > 0 ? 1 : 0,\n ]\n}\n","export const MorphoLensAbi = [\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'marketsIds',\n type: 'bytes32[]',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'morpho',\n type: 'address',\n },\n ],\n name: 'getUserDataCompact',\n outputs: [\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n name: 'getMarketDataCompact',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'address', name: 'morpho' },\n { type: 'bytes32[]', name: 'marketsIds' },\n ],\n outputs: [{ type: 'bytes', name: 'data' }],\n },\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'marketsIds',\n type: 'bytes32[]',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'morpho',\n type: 'address',\n },\n ],\n name: 'getUserDataCompact',\n outputs: [\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n name: 'getMoolahMarketDataCompact',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'address', name: 'morpho' },\n { type: 'bytes32[]', name: 'marketsIds' },\n ],\n outputs: [{ type: 'bytes', name: 'data' }],\n },\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'marketsIds',\n type: 'bytes32[]',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'morpho',\n type: 'address',\n },\n ],\n name: 'getListaUserDataCompact',\n outputs: [\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n name: 'getMoolahMarketDataCompact',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'address', name: 'morpho' },\n { type: 'bytes32[]', name: 'marketsIds' },\n ],\n outputs: [{ type: 'bytes', name: 'data' }],\n },\n {\n name: 'getListaMarketDataCompact',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'address', name: 'morpho' },\n { type: 'bytes32[]', name: 'marketsIds' },\n ],\n outputs: [{ type: 'bytes', name: 'data' }],\n },\n] as const\n","import { Chain } from '@1delta/chain-registry'\nimport { Lender } from '@1delta/lender-registry'\nimport {\n compoundV2Pools,\n compoundV2Reserves,\n compoundV2Tokens,\n} from '@1delta/data-sdk'\n\n// needs a legacy lens\nexport const VENUS_LENS_VBNB = '0xf15A9c5aaDc327B383945D5821C7aC08Cdac7430'\n\nconst VENUS_LENS: { [c: string]: string } = {\n [Chain.BNB_SMART_CHAIN_MAINNET]: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621',\n [Chain.ETHEREUM_MAINNET]: '0x277950603178BDD223eB53B9b7cF5D0053aa3473',\n [Chain.ARBITRUM_ONE]: '0x53F34FF95367B2A4542461a6A63fD321F8da22AD',\n [Chain.BASE]: '0x89825677fb4845f5Fc0B227e387455ECa1200058',\n [Chain.OPBNB_MAINNET]: ' 0x2Ed744F6E722aa5E41E67267774b386D244e5e4e',\n [Chain.OP_MAINNET]: '0x142160A2E699e33af337741f157D96aAd6bC72aA',\n [Chain.UNICHAIN]: '0xe192aeDBDBd235DBF33Ea1444f2B908Ea3E78419',\n}\n\nconst MOONWELL_LENS: { [c: string]: string } = {\n [Chain.OP_MAINNET]: '0xD6C66868f937f00604d0FB860241970D6CC2CBfE',\n [Chain.BASE]: '0x6834770aba6c2028f448e3259ddee4bcb879d459',\n [Chain.MOONBEAM]: '0xe76C8B8706faC85a8Fbdcac3C42e3E7823c73994',\n}\n\nconst ENCLABS_LENS = {\n [Chain.SONIC_MAINNET]: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n [Chain.PLASMA_MAINNET]: '0xE67B5097b8dC55aCECaB82102A3042078f016550',\n}\n\nexport const COMPOUND_V2_LENS: {\n [fork: string]: { [chain: string]: string }\n} = {\n [Lender.VENUS]: VENUS_LENS,\n [Lender.VENUS_ETH]: VENUS_LENS,\n [Lender.MOONWELL]: MOONWELL_LENS,\n [Lender.ENCLABS]: ENCLABS_LENS,\n [Lender.ENCLABS_LST]: ENCLABS_LENS,\n}\n\nexport function getCompoundV2Comptroller(\n chainId: string,\n lender: string = Lender.VENUS,\n): string | undefined {\n return compoundV2Pools()?.[lender]?.[chainId]\n}\n\nexport function getCompoundV2CollateralTokens(\n chainId: string,\n lender: string = Lender.VENUS,\n): { [address: string]: string } {\n return compoundV2Tokens()?.[lender]?.[chainId]\n}\n\nexport function getCompoundV2Reserves(\n chainId: string,\n lender: string = Lender.VENUS,\n): string[] {\n return compoundV2Reserves()?.[lender]?.[chainId]\n}\n\nexport function getCompoundV2Lens(chainId: string, lender: string) {\n // @ts-ignore\n return COMPOUND_V2_LENS[lender]?.[chainId]\n}\n","export const VenusLensLegacyAbi = [\n {\n inputs: [\n {\n internalType: 'contract VToken',\n name: 'vToken',\n type: 'address',\n },\n ],\n name: 'vTokenMetadata',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'vToken',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlock',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlock',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalBorrows',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalReserves',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalSupply',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalCash',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'isListed',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'vTokenDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'venusSupplySpeed',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'venusBorrowSpeed',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'dailySupplyXvs',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'dailyBorrowXvs',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'pausedActions',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationThresholdMantissa',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationIncentiveMantissa',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'isBorrowAllowed',\n type: 'bool',\n },\n {\n internalType: 'uint96',\n name: 'poolId',\n type: 'uint96',\n },\n ],\n internalType: 'struct VenusLens.VTokenMetadata',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../utils/multicall'\nimport {\n getCompoundV2CollateralTokens,\n getCompoundV2Lens,\n VENUS_LENS_VBNB,\n} from '../addresses/compoundV2'\nimport { Chain } from '@1delta/chain-registry'\nimport { VenusLensLegacyAbi } from '../../abis/compound-v2/VenusLensLegacy'\nimport { isVenusType } from '../../utils'\n\nexport const buildCompoundV2StyleLenderReserveCall = (\n chainId: string,\n lender: string,\n) => {\n const collateralTokens = getCompoundV2CollateralTokens(chainId, lender)\n const getCTokenCall = getCall(lender, chainId)\n const calls: Call[] = Object.values(collateralTokens).map(getCTokenCall)\n return calls\n}\n\nfunction getCall(lender: string, chainId: string) {\n const lens = getCompoundV2Lens(chainId, lender)\n if (isVenusType(lender)) {\n return (tk: string) =>\n chainId === Chain.BNB_SMART_CHAIN_MAINNET &&\n tk === '0xa07c5b74c9b40447a954e1466938b865b6bbea36' // VBNB\n ? {\n abi: VenusLensLegacyAbi,\n address: VENUS_LENS_VBNB,\n name: 'vTokenMetadata',\n params: [tk],\n }\n : {\n address: lens,\n name: 'vTokenMetadata',\n params: [tk],\n }\n }\n if (lender === Lender.MOONWELL) {\n return (tk: string) => ({\n address: lens,\n name: 'getMarketInfo',\n params: [tk],\n })\n }\n // default\n return (tk: string) => ({\n address: lens,\n name: 'cTokenMetadata',\n params: [tk],\n })\n}\n","export enum CAction {\n MINT,\n REDEEM,\n BORROW,\n REPAY,\n SEIZE,\n LIQUIDATE,\n TRANSFER,\n ENTER_MARKET,\n EXIT_MARKET,\n}\n","import {\n apyToApr,\n calculateRateForCompoundType,\n TimeScale,\n} from '../../../utils/parsing'\nimport { CAction } from './types'\n\ntype VTokenMetadataLegacy = {\n vToken?: string\n exchangeRateCurrent?: bigint\n supplyRatePerBlock?: bigint\n borrowRatePerBlock?: bigint\n reserveFactorMantissa?: bigint\n totalBorrows?: bigint\n totalReserves?: bigint\n totalSupply?: bigint\n totalCash?: bigint\n isListed?: boolean\n collateralFactorMantissa?: bigint\n underlyingAssetAddress?: string\n vTokenDecimals?: bigint\n underlyingDecimals?: bigint\n venusSupplySpeed?: bigint\n venusBorrowSpeed?: bigint\n dailySupplyXvs?: bigint\n dailyBorrowXvs?: bigint\n pausedActions?: bigint\n liquidationThresholdMantissa?: bigint\n liquidationIncentiveMantissa?: bigint\n isBorrowAllowed?: boolean\n poolId?: bigint\n}\n\ntype VTokenMetadataExtended = {\n vToken?: string\n exchangeRateCurrent?: bigint\n supplyRatePerBlockOrTimestamp?: bigint\n borrowRatePerBlockOrTimestamp?: bigint\n reserveFactorMantissa?: bigint\n supplyCaps?: bigint\n borrowCaps?: bigint\n totalBorrows?: bigint\n totalReserves?: bigint\n totalSupply?: bigint\n totalCash?: bigint\n isListed?: boolean\n collateralFactorMantissa?: bigint\n underlyingAssetAddress?: string\n vTokenDecimals?: bigint\n underlyingDecimals?: bigint\n pausedActions?: bigint\n borrowCap: number\n supplyCap: number\n}\n\ntype AnyVTokenMetadata = Partial<VTokenMetadataLegacy & VTokenMetadataExtended>\n\n/**\n * Safely extracts and normalizes all fields from a VTokenMetadata object.\n * Returns a plain JS object with stringified bigints (for display/logging).\n */\nexport function readVTokenMetadata(meta: AnyVTokenMetadata, token: any) {\n // Helper for safely selecting between possible field names\n const pick = <T>(...values: (T | undefined)[]): T | undefined =>\n values.find((v) => v !== undefined)\n return {\n vToken: meta.vToken ?? '',\n exchangeRateCurrent: meta.exchangeRateCurrent ?? 0n,\n supplyRatePerBlock:\n pick(meta.supplyRatePerBlock, meta.supplyRatePerBlockOrTimestamp) ?? 0n,\n borrowRatePerBlock:\n pick(meta.borrowRatePerBlock, meta.borrowRatePerBlockOrTimestamp) ?? 0n,\n reserveFactorMantissa: meta.reserveFactorMantissa ?? 0n,\n supplyCaps: meta.supplyCaps ?? 0n,\n borrowCaps: meta.borrowCaps ?? 0n,\n totalBorrows: meta.totalBorrows ?? 0n,\n totalReserves: meta.totalReserves ?? 0n,\n totalSupply: meta.totalSupply ?? 0n,\n totalCash: meta.totalCash ?? 0n,\n isListed: meta.isListed ?? true,\n collateralFactorMantissa: meta.collateralFactorMantissa ?? 0n,\n underlyingAssetAddress: meta.underlyingAssetAddress ?? '',\n cTokenDecimals: meta.vTokenDecimals ?? 0n,\n underlyingDecimals: meta.underlyingDecimals ?? 0n,\n venusSupplySpeed: meta.venusSupplySpeed ?? 0n,\n venusBorrowSpeed: meta.venusBorrowSpeed ?? 0n,\n dailySupplyXvs: meta.dailySupplyXvs ?? 0n,\n dailyBorrowXvs: meta.dailyBorrowXvs ?? 0n,\n // pausedActions: meta.pausedActions ?? 0n,\n liquidationThresholdMantissa: meta.liquidationThresholdMantissa ?? 0n,\n liquidationIncentiveMantissa: meta.liquidationIncentiveMantissa ?? 0n,\n isBorrowAllowed: meta.isBorrowAllowed ?? true,\n poolId: meta.poolId ?? 0n,\n pausedActions: decodePausedActions(meta.pausedActions ?? 0n),\n depositRate:\n apyToApr(\n calculateRateForCompoundType(\n pick(\n meta.supplyRatePerBlock,\n meta.supplyRatePerBlockOrTimestamp,\n )?.toString() ?? '0',\n token.chainId,\n TimeScale.BLOCK,\n ) / 100,\n ) * 100,\n variableBorrowRate:\n apyToApr(\n calculateRateForCompoundType(\n pick(\n meta.borrowRatePerBlock,\n meta.borrowRatePerBlockOrTimestamp,\n )?.toString() ?? '0',\n token.chainId,\n TimeScale.BLOCK,\n ) / 100,\n ) * 100,\n supplyCap: 0,\n borrowCap: 0,\n }\n}\n\ntype ActionPausedMap = Record<CAction, boolean>\n\n/**\n * Decodes a bigint bitmap returned from the contract into a map\n * mapping each Action enum member to whether it is paused.\n */\nfunction decodePausedActions(bitmap: bigint): ActionPausedMap {\n const result = {} as ActionPausedMap\n\n for (let i = 0; i <= Object.keys(CAction).length / 2 - 1; i++) {\n // each bit corresponds to whether Action(i) is paused\n const isPaused = ((bitmap >> BigInt(i)) & 1n) === 1n\n result[i as CAction] = isPaused\n }\n\n return result\n}\n\n// // Example usage\n// const bitmap = 0b10101n; // example bitmap (MINT, BORROW, SEIZE paused)\n// const pausedMap = decodePausedActions(bitmap);\n\n// console.log(pausedMap);\n/*\n{\n [Action.MINT]: true,\n [Action.REDEEM]: false,\n [Action.BORROW]: true,\n [Action.REPAY]: false,\n [Action.SEIZE]: true,\n ...\n}\n*/\n","import { formatUnits } from 'viem'\nimport {\n apyToApr,\n calculateRateForCompoundType,\n TimeScale,\n} from '../../../utils/parsing'\nimport { CAction } from './types'\n\n// ---- Types that mirror your Solidity structs ----\nexport interface MarketIncentives {\n token: string // address\n supplyIncentivesPerSec: bigint // uint -> BigInt\n borrowIncentivesPerSec: bigint // uint -> BigInt\n}\n\nexport interface Market {\n market: string // address\n isListed: boolean\n borrowCap: number // uint -> number\n supplyCap: number // uint -> number\n // mintPaused: boolean\n // isBorrowAllowed: boolean\n collateralFactorMantissa: bigint // uint -> BigInt\n underlyingPrice: bigint // uint -> BigInt\n totalSupply: bigint // uint -> BigInt\n totalBorrows: bigint // uint -> BigInt\n totalReserves: bigint // uint -> BigInt\n cash: bigint // uint -> BigInt\n exchangeRateCurrent: bigint // uint -> BigInt\n borrowIndex: bigint // uint -> BigInt\n reserveFactor: bigint // uint -> BigInt\n // borrowRate: bigint // uint -> BigInt\n // supplyRate: bigint // uint -> BigInt\n incentives: MarketIncentives[]\n pausedActions: { [a: number]: boolean }\n depositRate: number\n variableBorrowRate: number\n isBorrowAllowed: boolean\n cTokenDecimals: number\n}\n\n// ---- Helpers: tolerant conversions for common on-chain shapes ----\nfunction toBigInt(value: unknown): bigint {\n if (typeof value === 'bigint') return value\n if (typeof value === 'number') return BigInt(value) // assumes safe range (RPC numbers are rare)\n if (typeof value === 'string') return BigInt(value) // supports \"123\" or \"0x...\"\n if (value && typeof value === 'object') {\n const v = value as any\n // ethers v5 BigNumber: {_hex: \"0x...\"}\n if (typeof v._hex === 'string') return BigInt(v._hex)\n // ethers v6 BigInt-ish: .toString() exists\n if (typeof v.toString === 'function') return BigInt(v.toString())\n // viem-style: .toBigInt?\n if (typeof v.toBigInt === 'function') return v.toBigInt()\n }\n throw new Error(`Cannot convert value to bigint: ${String(value)}`)\n}\n\nfunction toBool(value: unknown): boolean {\n if (typeof value === 'boolean') return value\n if (typeof value === 'bigint') return value !== 0n\n if (typeof value === 'number') return value !== 0\n if (typeof value === 'string') {\n const s = value.trim().toLowerCase()\n if (s === 'true' || s === '1') return true\n if (s === 'false' || s === '0') return false\n }\n // Fallback: treat non-nullish truthy as true\n return Boolean(value)\n}\n\nfunction toAddress(value: unknown): string {\n if (typeof value === 'string') return value // don't checksum here; keep raw\n // ethers/viem often provide .toString()\n if (value && typeof (value as any).toString === 'function')\n return (value as any).toString()\n throw new Error(`Cannot convert value to address string: ${String(value)}`)\n}\n\n// Utility to read either named fields or tuple positions.\n// Example: field(raw, \"market\", 0) will try raw.market then raw[0].\nfunction field<T = unknown>(src: any, key: string, index: number): T {\n if (src == null) throw new Error('Source is null/undefined')\n if (key in src) return src[key]\n if (Array.isArray(src)) return src[index]\n return (src as any)[key]\n}\n\n// ---- Parsers ----\nexport function parseMarketIncentives(input: any): MarketIncentives {\n return {\n token: toAddress(field(input, 'token', 0)),\n supplyIncentivesPerSec: toBigInt(field(input, 'supplyIncentivesPerSec', 1)),\n borrowIncentivesPerSec: toBigInt(field(input, 'borrowIncentivesPerSec', 2)),\n }\n}\n\nexport function parseMoonwellMarket(input: any, token: any): Market {\n const incentivesRaw: any[] = field<any[]>(input, 'incentives', 18) ?? [] // array of MarketIncentives (objects or tuples)\n\n return {\n market: toAddress(field(input, 'market', 0)),\n cTokenDecimals: 8,\n isListed: toBool(field(input, 'isListed', 1)),\n // borrowCap: toBigInt(field(input, 'borrowCap', 2)),\n // supplyCap: toBigInt(field(input, 'supplyCap', 3)),\n // mintPaused: toBool(field(input, 'mintPaused', 4)),\n // isBorrowAllowed: !toBool(field(input, 'borrowPaused', 5)),\n collateralFactorMantissa: toBigInt(field(input, 'collateralFactor', 6)),\n underlyingPrice: toBigInt(field(input, 'underlyingPrice', 7)),\n totalSupply: toBigInt(field(input, 'totalSupply', 8)),\n totalBorrows: toBigInt(field(input, 'totalBorrows', 9)),\n totalReserves: toBigInt(field(input, 'totalReserves', 10)),\n cash: toBigInt(field(input, 'cash', 11)),\n exchangeRateCurrent: toBigInt(field(input, 'exchangeRate', 12)),\n borrowIndex: toBigInt(field(input, 'borrowIndex', 13)),\n reserveFactor: toBigInt(field(input, 'reserveFactor', 14)),\n // borrowRate: toBigInt(field(input, 'borrowRate', 15)),\n // supplyRate: toBigInt(field(input, 'supplyRate', 16)),\n pausedActions: {\n [CAction.MINT]: toBool(field(input, 'mintPaused', 4)),\n [CAction.BORROW]: toBool(field(input, 'borrowPaused', 5)),\n },\n incentives: (incentivesRaw ?? []).map(parseMarketIncentives),\n depositRate:\n apyToApr(\n calculateRateForCompoundType(\n toBigInt(field(input, 'supplyRate', 15)).toString() ?? '0',\n '1',\n TimeScale.MS,\n ) / 100,\n ) * 100,\n variableBorrowRate:\n apyToApr(\n calculateRateForCompoundType(\n toBigInt(field(input, 'borrowRate', 15)).toString() ?? '0',\n '1',\n TimeScale.MS,\n ) / 100,\n ) * 100,\n isBorrowAllowed: true,\n borrowCap: Number(\n formatUnits(toBigInt(field(input, 'borrowCap', 2)), token.decimals ?? 18),\n ),\n supplyCap: Number(\n formatUnits(toBigInt(field(input, 'supplyCap', 2)), token.decimals ?? 18),\n ),\n }\n}\n\n// ---- Optional: parse an array of markets ----\nexport function parseMarkets(inputs: any[]): Market[] {\n return inputs.map(parseMoonwellMarket)\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { AdditionalYields, GenericTokenList } from '../../types'\nimport { CompoundV2GeneralPublicResponse } from '../../types/lender/compound-v2-types'\nimport { getCompoundV2Reserves } from '../addresses/compoundV2'\nimport { parseRawAmount } from '../../utils/parsing'\nimport { LENDER_MODE_NO_MODE } from '../../assets'\nimport {\n readVTokenMetadata, // default reader\n} from './getters/venus'\nimport { isVenusType } from '../../utils'\nimport { parseMoonwellMarket } from './getters/moonwell'\nimport { CAction } from './getters/types'\n\nconst PRICE_DECIMALS = 18\nconst RESERVE_MANTISSA_DECIMALS = 18\n\n// ---- Minimal shape we need from any reader ----\ntype CTokenMeta = {\n collateralFactorMantissa?: string | bigint | number\n exchangeRateCurrent?: string | bigint | number\n totalSupply?: string | bigint | number\n totalBorrows?: string | bigint | number\n supplyRatePerBlock?: string | bigint | number\n borrowRatePerBlock?: string | bigint | number\n pausedActions?: unknown\n isListed?: boolean | string | number | bigint\n cTokenDecimals?: string | number | bigint\n isBorrowAllowed?: boolean | string | number | bigint\n depositRate: number\n variableBorrowRate: number\n}\n\n// Reader function signature (raw → normalized meta)\ntype CTokenReader = (raw: any, token: any) => CTokenMeta\n\n// ---- Per-asset converter (moved out of the loop) ----\nfunction convertSingleReserveEntry(opts: {\n entryRaw: any\n reader: CTokenReader\n asset: any\n chainId: string\n lender: string\n prices: { [asset: string]: number }\n additionalYields: AdditionalYields\n}) {\n const { entryRaw, reader, asset, chainId, lender, prices, additionalYields } =\n opts\n\n const decs = asset.decimals as number\n const currentEntry = reader(entryRaw, asset)\n\n const borrowCollateralFactor = parseRawAmount(\n currentEntry?.collateralFactorMantissa?.toString(),\n RESERVE_MANTISSA_DECIMALS,\n )\n\n const exchangeRateRaw = currentEntry?.exchangeRateCurrent ?? 0\n const exchangeRateCurrent = parseRawAmount(\n exchangeRateRaw?.toString(),\n PRICE_DECIMALS,\n )\n\n const totalSupplyUnderlying =\n Number(parseRawAmount(currentEntry?.totalSupply?.toString(), decs)) *\n Number(exchangeRateCurrent)\n\n const totalDebt = Number(\n parseRawAmount(currentEntry?.totalBorrows?.toString(), decs),\n )\n\n const liquidity = totalSupplyUnderlying - totalDebt\n const price = prices[asset.assetGroup] ?? 0\n\n // @ts-ignore\n const pausedActions = currentEntry.pausedActions as any\n const allPaused =\n pausedActions[CAction.MINT] &&\n pausedActions[CAction.BORROW] &&\n pausedActions[CAction.REDEEM] &&\n pausedActions[CAction.REPAY]\n\n const poolId = asset.address\n const collateralActive = Boolean(currentEntry?.isListed)\n const borrowingEnabled =\n Boolean(currentEntry?.isBorrowAllowed) && !pausedActions[CAction.BORROW]\n\n return {\n poolId,\n asset,\n // interest rates (use lender passed-in, not hardcoded)\n depositRate: currentEntry.depositRate,\n variableBorrowRate: currentEntry.variableBorrowRate,\n stableBorrowRate: 0,\n totalLiquidity: liquidity,\n totalLiquidityUSD: liquidity * price,\n totalDebt,\n totalDebtUSD: totalDebt * price,\n totalDeposits: totalSupplyUnderlying,\n totalDepositsUSD: totalSupplyUnderlying * price,\n totalDebtStable: 0,\n totalDebtStableUSD: 0,\n stakingYield: additionalYields.intrinsicYields[asset.assetGroup] ?? 0,\n config: {\n [LENDER_MODE_NO_MODE]: {\n category: LENDER_MODE_NO_MODE,\n // collateral factors\n borrowCollateralFactor: Number(borrowCollateralFactor),\n collateralFactor: Number(borrowCollateralFactor),\n borrowFactor: 1,\n collateralDisabled: !collateralActive,\n debtDisabled: !borrowingEnabled,\n },\n },\n hasStable: false,\n underlying: asset.address,\n // rewards placeholder (kept as-is / commented in original)\n // compSupplySpeed: parseRawAmount(currentEntry?.venusSupplySpeed?.toString(), 5),\n // compBorrowSpeed: parseRawAmount(currentEntry?.venusBorrowSpeed?.toString(), 5),\n isActive: Boolean(currentEntry?.isListed) && !allPaused,\n isFrozen: pausedActions[CAction.MINT] && pausedActions[CAction.BORROW],\n rewards: {},\n state: {\n exchangeRateCurrent: exchangeRateRaw.toString(),\n cTokenDecimals: Number(currentEntry?.cTokenDecimals?.toString()),\n },\n collateralActive,\n borrowingEnabled,\n // borrowCap example left commented as in original:\n // borrowCap: parseRawAmount(currentEntry?.borrowCap?.toString(), decs),\n }\n}\n\nexport const getCompoundV2ReservesDataConverter = (\n lender: string,\n chainId: string,\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n): [(data: any[]) => CompoundV2GeneralPublicResponse | undefined, number] => {\n const assetsToQuery = getCompoundV2Reserves(chainId, lender)\n const expectedNumberOfCalls = assetsToQuery.length\n\n // Select reader for this lender (caller can override via options)\n const reader: CTokenReader = getReader(lender)!\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) return undefined\n\n const out: CompoundV2GeneralPublicResponse = { data: {}, chainId }\n\n // --- loop preserved; per-asset conversion delegated ---\n for (let i = 0; i < assetsToQuery.length; i++) {\n const poolId = assetsToQuery[i]\n const asset = tokenList[poolId]\n const entryRaw = data[i]\n // @ts-ignore\n out.data[poolId] = convertSingleReserveEntry({\n entryRaw,\n reader,\n asset,\n chainId,\n lender,\n prices,\n additionalYields,\n })\n }\n\n return out\n },\n expectedNumberOfCalls,\n ]\n}\n\nfunction getReader(lender: string) {\n if (isVenusType(lender)) {\n return (x: any, t: any) => readVTokenMetadata(x, t) as CTokenMeta\n }\n if (lender === Lender.MOONWELL) {\n return (x: any, t: any) => parseMoonwellMarket(x, t)\n }\n}\n","export const VenusLensAbi = [\n {\n inputs: [\n { internalType: 'bool', name: 'timeBased_', type: 'bool' },\n { internalType: 'uint256', name: 'blocksPerYear_', type: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n { inputs: [], name: 'InvalidBlocksPerYear', type: 'error' },\n { inputs: [], name: 'InvalidTimeBasedConfiguration', type: 'error' },\n {\n inputs: [],\n name: 'blocksOrSecondsPerYear',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'poolRegistryAddress', type: 'address' },\n ],\n name: 'getAllPools',\n outputs: [\n {\n components: [\n { internalType: 'string', name: 'name', type: 'string' },\n { internalType: 'address', name: 'creator', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'uint256', name: 'blockPosted', type: 'uint256' },\n { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' },\n { internalType: 'string', name: 'category', type: 'string' },\n { internalType: 'string', name: 'logoURL', type: 'string' },\n { internalType: 'string', name: 'description', type: 'string' },\n { internalType: 'address', name: 'priceOracle', type: 'address' },\n { internalType: 'uint256', name: 'closeFactor', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'liquidationIncentive',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'minLiquidatableCollateral',\n type: 'uint256',\n },\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'totalBorrows',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalReserves',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'totalSupply', type: 'uint256' },\n { internalType: 'uint256', name: 'totalCash', type: 'uint256' },\n { internalType: 'bool', name: 'isListed', type: 'bool' },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'vTokenDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'pausedActions',\n type: 'uint256',\n },\n ],\n internalType: 'struct PoolLens.VTokenMetadata[]',\n name: 'vTokens',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct PoolLens.PoolData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getBlockNumberOrTimestamp',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'address', name: 'comptrollerAddress', type: 'address' },\n ],\n name: 'getPendingRewards',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'distributorAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'rewardTokenAddress',\n type: 'address',\n },\n { internalType: 'uint256', name: 'totalRewards', type: 'uint256' },\n {\n components: [\n {\n internalType: 'address',\n name: 'vTokenAddress',\n type: 'address',\n },\n { internalType: 'uint256', name: 'amount', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.PendingReward[]',\n name: 'pendingRewards',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct PoolLens.RewardSummary[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'comptrollerAddress', type: 'address' },\n ],\n name: 'getPoolBadDebt',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'uint256', name: 'totalBadDebtUsd', type: 'uint256' },\n {\n components: [\n {\n internalType: 'address',\n name: 'vTokenAddress',\n type: 'address',\n },\n { internalType: 'uint256', name: 'badDebtUsd', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.BadDebt[]',\n name: 'badDebts',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct PoolLens.BadDebtSummary',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'poolRegistryAddress', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n ],\n name: 'getPoolByComptroller',\n outputs: [\n {\n components: [\n { internalType: 'string', name: 'name', type: 'string' },\n { internalType: 'address', name: 'creator', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'uint256', name: 'blockPosted', type: 'uint256' },\n { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' },\n { internalType: 'string', name: 'category', type: 'string' },\n { internalType: 'string', name: 'logoURL', type: 'string' },\n { internalType: 'string', name: 'description', type: 'string' },\n { internalType: 'address', name: 'priceOracle', type: 'address' },\n { internalType: 'uint256', name: 'closeFactor', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'liquidationIncentive',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'minLiquidatableCollateral',\n type: 'uint256',\n },\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'totalBorrows',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalReserves',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'totalSupply', type: 'uint256' },\n { internalType: 'uint256', name: 'totalCash', type: 'uint256' },\n { internalType: 'bool', name: 'isListed', type: 'bool' },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'vTokenDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'pausedActions',\n type: 'uint256',\n },\n ],\n internalType: 'struct PoolLens.VTokenMetadata[]',\n name: 'vTokens',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct PoolLens.PoolData',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'poolRegistryAddress', type: 'address' },\n {\n components: [\n { internalType: 'string', name: 'name', type: 'string' },\n { internalType: 'address', name: 'creator', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'uint256', name: 'blockPosted', type: 'uint256' },\n { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' },\n ],\n internalType: 'struct PoolRegistryInterface.VenusPool',\n name: 'venusPool',\n type: 'tuple',\n },\n ],\n name: 'getPoolDataFromVenusPool',\n outputs: [\n {\n components: [\n { internalType: 'string', name: 'name', type: 'string' },\n { internalType: 'address', name: 'creator', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'uint256', name: 'blockPosted', type: 'uint256' },\n { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' },\n { internalType: 'string', name: 'category', type: 'string' },\n { internalType: 'string', name: 'logoURL', type: 'string' },\n { internalType: 'string', name: 'description', type: 'string' },\n { internalType: 'address', name: 'priceOracle', type: 'address' },\n { internalType: 'uint256', name: 'closeFactor', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'liquidationIncentive',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'minLiquidatableCollateral',\n type: 'uint256',\n },\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'totalBorrows',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalReserves',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'totalSupply', type: 'uint256' },\n { internalType: 'uint256', name: 'totalCash', type: 'uint256' },\n { internalType: 'bool', name: 'isListed', type: 'bool' },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'vTokenDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'pausedActions',\n type: 'uint256',\n },\n ],\n internalType: 'struct PoolLens.VTokenMetadata[]',\n name: 'vTokens',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct PoolLens.PoolData',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'poolRegistryAddress', type: 'address' },\n { internalType: 'address', name: 'asset', type: 'address' },\n ],\n name: 'getPoolsSupportedByAsset',\n outputs: [{ internalType: 'address[]', name: '', type: 'address[]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'poolRegistryAddress', type: 'address' },\n { internalType: 'address', name: 'comptroller', type: 'address' },\n { internalType: 'address', name: 'asset', type: 'address' },\n ],\n name: 'getVTokenForAsset',\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'isTimeBased',\n outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken', name: 'vToken', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n ],\n name: 'vTokenBalances',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n { internalType: 'uint256', name: 'balanceOf', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'borrowBalanceCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceOfUnderlying',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'tokenBalance', type: 'uint256' },\n { internalType: 'uint256', name: 'tokenAllowance', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenBalances',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' },\n { internalType: 'address', name: 'account', type: 'address' },\n ],\n name: 'vTokenBalancesAll',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n { internalType: 'uint256', name: 'balanceOf', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'borrowBalanceCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceOfUnderlying',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'tokenBalance', type: 'uint256' },\n { internalType: 'uint256', name: 'tokenAllowance', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenBalances[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken', name: 'vToken', type: 'address' },\n ],\n name: 'vTokenMetadata',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' },\n { internalType: 'uint256', name: 'totalReserves', type: 'uint256' },\n { internalType: 'uint256', name: 'totalSupply', type: 'uint256' },\n { internalType: 'uint256', name: 'totalCash', type: 'uint256' },\n { internalType: 'bool', name: 'isListed', type: 'bool' },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'pausedActions', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenMetadata',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' },\n ],\n name: 'vTokenMetadataAll',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n {\n internalType: 'uint256',\n name: 'exchangeRateCurrent',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRatePerBlockOrTimestamp',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactorMantissa',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' },\n { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' },\n { internalType: 'uint256', name: 'totalReserves', type: 'uint256' },\n { internalType: 'uint256', name: 'totalSupply', type: 'uint256' },\n { internalType: 'uint256', name: 'totalCash', type: 'uint256' },\n { internalType: 'bool', name: 'isListed', type: 'bool' },\n {\n internalType: 'uint256',\n name: 'collateralFactorMantissa',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'underlyingAssetAddress',\n type: 'address',\n },\n { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' },\n {\n internalType: 'uint256',\n name: 'underlyingDecimals',\n type: 'uint256',\n },\n { internalType: 'uint256', name: 'pausedActions', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenMetadata[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken', name: 'vToken', type: 'address' },\n ],\n name: 'vTokenUnderlyingPrice',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n { internalType: 'uint256', name: 'underlyingPrice', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenUnderlyingPrice',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' },\n ],\n name: 'vTokenUnderlyingPriceAll',\n outputs: [\n {\n components: [\n { internalType: 'address', name: 'vToken', type: 'address' },\n { internalType: 'uint256', name: 'underlyingPrice', type: 'uint256' },\n ],\n internalType: 'struct PoolLens.VTokenUnderlyingPrice[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n // MONWELL MARKETS\n {\n inputs: [\n {\n internalType: 'contract MToken',\n name: '_mToken',\n type: 'address',\n },\n ],\n name: 'getMarketInfo',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'market',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isListed',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'borrowCap',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyCap',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'mintPaused',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'borrowPaused',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: 'collateralFactor',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'underlyingPrice',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalSupply',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalBorrows',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalReserves',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'cash',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'exchangeRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowIndex',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactor',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyRate',\n type: 'uint256',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'supplyIncentivesPerSec',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'borrowIncentivesPerSec',\n type: 'uint256',\n },\n ],\n internalType: 'struct BaseMoonwellViews.MarketIncentives[]',\n name: 'incentives',\n type: 'tuple[]',\n },\n ],\n internalType: 'struct BaseMoonwellViews.Market',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","// aave v2 style\nimport { ProtocolDataProviderAbi } from '../abis/aave-v2/ProtocolDataProvider'\nimport { IncentivesControllerAbi } from '../abis/lendle/IncentivesController'\nimport { RewarderAbi } from '../abis/aurelius/Rewarder'\nimport { UniswapV2PairAbi } from '../abis/oracle/UniswapV2Pair'\n\n// aave v3 style\nimport { AavePoolV3UpgradedAbi } from '../abis/aave/AavePoolV3Upgraded'\nimport { AaveV3ProtocolDataProviderAbi } from '../abis/aave/AaveV3ProtocolDataProvider'\n\n// init\nimport { InitLensAbi } from '../abis/init/InitLens'\n\n// compound v3\nimport { CometAbi } from '../abis/compound-v3/Comet'\nimport { CometExtAbi } from '../abis/compound-v3/CometExt'\nimport { IrgetterAbi } from '../abis/compound-v3/IrGetter'\n\nimport {\n isAaveV2Type,\n isAaveV32Type,\n isAaveV3Type,\n isCompoundV2Type,\n isCompoundV3,\n isInit,\n isMorphoType,\n isMultiMarket,\n} from '../utils'\nimport { AdditionalYields, MulticallRetryFunction } from '../types'\nimport { buildAaveV2StyleLenderReserveCall } from './aave-v2-type/publicCallBuild'\nimport { buildAaveV3StyleLenderReserveCall } from './aave-v3-type/publicCallBuild'\nimport { buildInitStyleLenderReserveCall } from './init/publicCallBuild'\nimport { buildCompoundV3StyleLenderReserveCall } from './compound-v3/publicCallBuild'\nimport { getAaveV2ReservesDataConverter } from './aave-v2-type/publicCallParse'\nimport { getAaveV3ReservesDataConverter } from './aave-v3-type/publicCallParse'\nimport { getInitReservesDataConverter } from './init/publicCallParse'\nimport { getCompoundV3ReservesDataConverter } from './compound-v3/publicCallParse'\nimport { AavePoolLegacyAbi } from '../abis/aave-v3/AavePoolLegacy'\nimport { AavePoolDataProviderLegacyAbi } from '../abis/aave-v3/AavePoolDataProviderLegacy'\nimport { Lender } from '@1delta/lender-registry'\nimport { Call } from 'viem'\nimport { YLDRProtocolDataProviderAbi } from '../abis/aave-v2/YLDR'\nimport { buildMorphoTypeCall } from './morpho/publicCallBuild'\nimport { getMorphoMarketDataConverter } from './morpho/getMarketsFromChain'\nimport { getListaMarketDataConverter } from './lista/getMarketsFromChain'\nimport { MorphoLensAbi } from '../abis/morpho/lens'\nimport { GenericTokenList } from '../types/general'\nimport { buildCompoundV2StyleLenderReserveCall } from './compound-v2/publicCallBuild'\nimport { getCompoundV2ReservesDataConverter } from './compound-v2/publicCallParse'\nimport { VenusLensAbi } from '../abis/compound-v2/VenusLens'\n\nexport function getMorphoTypeMarketConverter(\n lender: string,\n chainId: string,\n prices: { [a: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n marketsOverride?: string[],\n) {\n if (lender.startsWith('LISTA_DAO'))\n return getListaMarketDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n marketsOverride,\n )\n return getMorphoMarketDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n marketsOverride,\n )\n}\n\nfunction buildLenderCall(chainId: string, lender: string) {\n if (isAaveV2Type(lender))\n return buildAaveV2StyleLenderReserveCall(chainId, lender)\n if (isAaveV3Type(lender))\n return buildAaveV3StyleLenderReserveCall(chainId, lender)\n if (isCompoundV3(lender))\n return buildCompoundV3StyleLenderReserveCall(chainId, lender)\n if (isInit(lender)) return buildInitStyleLenderReserveCall(chainId, lender)\n if (isMorphoType(lender)) {\n return buildMorphoTypeCall(chainId, lender)\n }\n if (isCompoundV2Type(lender))\n return buildCompoundV2StyleLenderReserveCall(chainId, lender)\n return []\n}\n\nfunction getLenderDataConverter(\n lender: string,\n chainId: string,\n prices: { [a: string]: number },\n additionalYields: AdditionalYields,\n tokenList: GenericTokenList = {},\n) {\n if (isAaveV2Type(lender))\n return getAaveV2ReservesDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n if (isAaveV3Type(lender))\n return getAaveV3ReservesDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n if (isCompoundV3(lender))\n return getCompoundV3ReservesDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n\n if (isInit(lender))\n return getInitReservesDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n\n if (isMorphoType(lender)) {\n return getMorphoTypeMarketConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n }\n\n if (isCompoundV2Type(lender))\n return getCompoundV2ReservesDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n tokenList,\n )\n return [() => null, 0] as any\n}\n\nconst getAbi = (lender: string) => {\n if (isAaveV2Type(lender))\n return [\n ...ProtocolDataProviderAbi,\n ...UniswapV2PairAbi,\n ...RewarderAbi,\n ...IncentivesControllerAbi,\n ]\n\n if (isAaveV32Type(lender))\n return [...AavePoolV3UpgradedAbi, ...AaveV3ProtocolDataProviderAbi]\n if (lender === Lender.YLDR) return [...YLDRProtocolDataProviderAbi]\n\n if (isAaveV3Type(lender))\n return [...AavePoolLegacyAbi, ...AavePoolDataProviderLegacyAbi]\n\n if (isCompoundV3(lender)) return [...IrgetterAbi, ...CometAbi, ...CometExtAbi]\n\n if (isInit(lender)) return InitLensAbi\n\n if (isMorphoType(lender)) return MorphoLensAbi\n if (isCompoundV2Type(lender)) return VenusLensAbi\n\n return []\n}\n\nexport const getLenderPublicData = async (\n chainId: string,\n lenders: string[],\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n multicallRetry: MulticallRetryFunction,\n tokenList: () => Promise<GenericTokenList> = async () => {\n return {}\n },\n): Promise<{ [lender: string]: any }> => {\n let calls: {\n call: Call\n abi: any\n }[] = []\n\n for (const lender of lenders) {\n const abi = getAbi(lender)\n const callData = buildLenderCall(chainId, lender)\n // @ts-ignore\n const mappedCalls = callData.map((call) => ({ call, abi: call.abi ?? abi }))\n // @ts-ignore\n calls = [...calls, ...mappedCalls]\n }\n /** fetch list and on-chainData */\n const [rawResults, list] = await Promise.all([\n multicallRetry(\n chainId,\n calls.map((call) => call.call) as any[],\n calls.map((call) => call.abi),\n // default size\n // retries = 3\n // provider = 0\n // allowFailure = false\n ),\n await tokenList(),\n ])\n\n const invalidLenders: string[] = []\n let lenderData: { [lender: string]: any } = {}\n\n let currentSlice = 0\n for (const lender of lenders) {\n const [converter, sliceLength] = getLenderDataConverter(\n lender,\n chainId,\n prices,\n additionalYields,\n list,\n )\n if (sliceLength > 0) {\n try {\n const data = rawResults.slice(currentSlice, currentSlice + sliceLength)\n const convertedData = converter(data)\n if (isMultiMarket(lender)) {\n if (!convertedData) {\n invalidLenders.push(lender)\n } else {\n lenderData = { ...lenderData, ...convertedData }\n }\n } else {\n if (!convertedData) {\n invalidLenders.push(lender)\n } else {\n lenderData[lender] = convertedData\n }\n }\n } catch {\n console.log('error for chain/lender', chainId, lender)\n }\n\n currentSlice += sliceLength\n }\n }\n\n return lenderData\n}\n","import { isMorphoType, isMultiMarket } from '../utils'\nimport { AdditionalYields } from '../types'\nimport { Lender } from '@1delta/lender-registry'\nimport { fetchMorphoMarkets } from './morpho/fetchPublic'\nimport { convertMarketsToMorphoResponse } from './morpho/convertPublic'\nimport { GenericTokenList } from '../types/general'\n\nasync function getLenderDataFromApi(\n lender: Lender,\n chainId: string,\n prices: { [a: string]: number },\n additionalYields: AdditionalYields,\n) {\n if (isMorphoType(lender)) return await fetchMorphoMarkets(chainId)\n return {}\n}\n\nfunction convertLenderDataFromApi(\n lender: Lender,\n chainId: string,\n data: any,\n prices: { [a: string]: number },\n additionalYields: AdditionalYields,\n list: GenericTokenList = {},\n) {\n if (isMorphoType(lender))\n return convertMarketsToMorphoResponse(data, chainId, additionalYields, list)\n return {}\n}\n\nexport const getLenderPublicDataViaApi = async (\n chainId: string,\n lenders: Lender[],\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n tokenList: () => Promise<GenericTokenList> = async () => {\n return {}\n },\n): Promise<{ [lender: string]: any }> => {\n let promises: any[] = []\n for (const lender of lenders) {\n promises.push(\n getLenderDataFromApi(lender, chainId, prices, additionalYields),\n )\n }\n\n const [list, ...results] = await Promise.all([tokenList(), ...promises])\n\n const lenderData: { [lender: string]: any } = {}\n for (let i = 0; i < lenders.length; i++) {\n try {\n const lender = lenders[i]\n if (isMultiMarket(lender)) {\n const dataObtained = results[i]\n const converted: any = convertLenderDataFromApi(\n lender,\n chainId,\n dataObtained,\n prices,\n additionalYields,\n list,\n )\n Object.keys(converted).forEach((marketId: string) => {\n lenderData[marketId] = converted[marketId]\n })\n } else {\n lenderData[lender] = convertLenderDataFromApi(\n lender,\n chainId,\n results[i],\n prices,\n additionalYields,\n list,\n )\n }\n } catch (e) {\n console.log('error fetching from API on', chainId, ':', e)\n }\n }\n\n return lenderData\n}\n","import { AdditionalYields, MulticallRetryFunction } from '../types'\nimport { Lender } from '@1delta/lender-registry'\nimport { getLenderPublicData } from './fetchLender'\nimport { getLenderPublicDataViaApi } from './fetchLenderExt'\nimport { Chain } from '@1delta/chain-registry'\nimport { GenericTokenList } from '../types/general'\n\nfunction lenderCanUseApi(lender: string, chainId: string) {\n if (lender === Lender.MORPHO_BLUE) {\n if (chainId === Chain.OP_MAINNET) return false\n if (chainId === Chain.SONEIUM) return false\n if (chainId === Chain.HEMI_NETWORK) return false\n if (chainId === Chain.BERACHAIN) return false\n if (chainId === Chain.SEI_NETWORK) return false\n return true\n }\n return false\n}\n\nexport const getLenderPublicDataAll = async (\n chainId: string,\n lenders: Lender[],\n prices: { [asset: string]: number },\n additionalYields: AdditionalYields,\n multicallRetry: MulticallRetryFunction,\n tokenList?: () => Promise<GenericTokenList>,\n): Promise<{ [lender: string]: any }> => {\n const lendersApi = lenders.filter((l) => lenderCanUseApi(l, chainId))\n\n const lendersOnChain = lenders.filter((l) => !lenderCanUseApi(l, chainId))\n\n const onChain = getLenderPublicData(\n chainId,\n lendersOnChain,\n prices,\n additionalYields,\n multicallRetry,\n tokenList,\n )\n\n const api = getLenderPublicDataViaApi(\n chainId,\n lendersApi,\n prices,\n additionalYields,\n tokenList,\n )\n\n const [onChainRes, apiRes] = await Promise.all([onChain, api])\n\n return { ...onChainRes, ...apiRes }\n}\n","import { GeneralCall, GetEvmClientFunction } from '../types'\nimport lodash from 'lodash'\n\n// pull the functions you need\nconst { isArray } = lodash\n\nexport type Call = GeneralCall\n\ninterface ViemMulticallresult {\n result: any[]\n status: string\n}\n\nexport const MULTICALL_DEFAULT_BATCH_SIZE = 4096\n\nconst maxRetries = 3\n\n/** Same as Multicall viem except that the abi param is supposed to be the abi per call */\nexport const multicallViemAbiArray = async (\n chainId: string,\n abi: any[],\n calls: Call[],\n getEvmClient: GetEvmClientFunction,\n retry = true,\n providerId = 0,\n retries = maxRetries,\n allowFailure = true,\n batchSize = MULTICALL_DEFAULT_BATCH_SIZE,\n logs = false,\n): Promise<any[]> => {\n try {\n const provider = getEvmClient(chainId, providerId)\n\n const abiIsArray = isArray(abi[0])\n const returnData = await provider.multicall({\n allowFailure,\n batchSize,\n contracts: calls.map(({ address, name, params }, i) => ({\n abi: abiIsArray ? (abi?.[i] as any) : abi,\n address: address as any,\n functionName: name,\n args: params,\n })),\n })\n\n // no failure - result is directly exposed\n if (!allowFailure) return returnData\n\n // allow failure, return 0x in case of errors\n const res = (returnData as any[]).map(\n ({ result, status }: ViemMulticallresult) =>\n status !== 'success' ? '0x' : result,\n )\n return res\n } catch (error: any) {\n // optionally log errors\n if (logs) console.log('error in multicall', error)\n retries--\n if (retries < 0) throw new Error('Failed too often')\n providerId++\n\n return multicallViemAbiArray(\n chainId,\n abi,\n calls,\n getEvmClient,\n retry,\n providerId,\n retries,\n allowFailure,\n batchSize,\n logs,\n )\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { isMorphoType } from '../utils'\nimport { BaseYields, RewardsMap } from './apiReturnType'\nexport type SerializedBigNumber = string\nexport type SerializedNumber = string\n\nexport interface LenderUserQuery {\n /** the lender enum (Note that for multi-market ones, it is not the lender but the group) */\n lender: any\n /** user address */\n account: string\n /** custom parameters for fetching e.g. multi-market lenders */\n params?: any[]\n /** custom parameters for spceifying assets */\n assets?: any[]\n}\n\n/** Filter all morphos into one for querying */\nexport function organizeUserQueries(queries: LenderUserQuery[]) {\n const morphos = queries.filter((q) => isMorphoType(q.lender))\n if (morphos.length === 0) return queries\n const nonMorphos = queries.filter((q) => !isMorphoType(q.lender))\n\n const morphoBlue = morphos.filter((q) => q.lender.startsWith('MORPHO_BLUE'))\n const moolah = morphos.filter((q) => q.lender.startsWith('LISTA_DAO'))\n\n const result = [...nonMorphos]\n\n if (morphoBlue.length > 0) {\n result.push({\n lender: Lender.MORPHO_BLUE,\n account: morphoBlue[0].account,\n params: morphoBlue.map((p) => p.lender),\n assets: undefined,\n })\n }\n\n if (moolah.length > 0) {\n result.push({\n lender: Lender.LISTA_DAO,\n account: moolah[0].account,\n params: moolah.map((p) => p.lender),\n assets: undefined,\n })\n }\n\n return result\n}\n\nexport interface UserLendingPosition {\n // token amounts\n deposits: string\n debt: string\n debtStable: number\n // usd amounts\n depositsUSD: number\n debtUSD: number\n debtStableUSD: number\n\n collateralEnabled: boolean\n claimableRewards: number\n}\n\nexport type UserRewardEntry = {\n [asset: string]: { totalRewards: number; claimableRewards: number }\n}\n\nexport interface LenderUserResponse {\n chainId: string\n account: string\n lendingPositions: {\n [lender: string]: {\n [poolId: string]: UserLendingPosition\n }\n }\n rewards: UserRewardEntry\n}\n\n// Aave V2 specific enums\nexport enum AaveV2TypeGetUserReserveData {\n currentATokenBalance = 0,\n currentStableDebt,\n currentVariableDebt,\n principalStableDebt,\n scaledVariableDebt,\n stableBorrowRate,\n liquidityRate,\n stableRateLastUpdated,\n usageAsCollateralEnabled,\n}\n\n// Aave V3 specific enums\nexport enum AaveV3TypeGetUserReserveData {\n currentATokenBalance = 0,\n currentStableDebt,\n currentVariableDebt,\n principalStableDebt,\n scaledVariableDebt,\n stableBorrowRate,\n liquidityRate,\n stableRateLastUpdated,\n usageAsCollateralEnabled,\n}\n\n///////\nexport interface AaveV2UserReserveResponse {\n chainId: string\n account: string\n lendingPositions: {\n [id: string]: {\n [poolId: string]: AaveLendingPositions\n }\n }\n rewards: UserRewardEntry\n}\n\nexport interface CompoundV2UserReserveResponse extends AaveV2UserReserveResponse {}\n\ninterface AaveLendingPositions {\n // token amounts\n deposits: string\n debt: string\n debtStable: string\n // usd amounts\n depositsUSD: number\n debtUSD: number\n debtStableUSD: number\n\n collateralEnabled: boolean\n claimableRewards: number\n}\n\ninterface MorphoLendingPositions extends AaveLendingPositions {\n isWhitelisted?: boolean\n}\n\nexport interface AaveV3UserReserveResponse {\n chainId: string\n lendingPositions: {\n [id: string]: {\n [poolId: string]: AaveLendingPositions\n }\n }\n userEMode: number\n rewards?: any\n account: string\n}\n\nexport interface MorphoUserReserveResponse {\n chainId: string\n lendingPositions: {\n [id: string]: {\n [poolId: string]: MorphoLendingPositions\n }\n }\n id: string\n rewards?: any\n account: string\n}\n\nexport interface CompoundV3UserReserveResponse {\n lendingPositions: {\n [id: string]: {\n [poolId: string]: {\n // tokens\n deposits: string\n debt: string\n debtStable: string\n // dollars\n depositsUSD: number\n debtUSD: number\n debtStableUSD: number\n\n collateralEnabled: boolean\n // user collateral raw (to withdraw max)\n depositsRaw: SerializedBigNumber\n isAllowed: boolean\n }\n }\n }\n chainId: string\n baseAsset: string\n rewards: UserRewardEntry\n account: string\n}\n\nexport interface AaveV3Public extends LenderPublicBase {\n lastUpdateTimestamp?: number\n\n // flags of reserve state\n collateralActive?: boolean\n hasStable?: boolean\n isActive?: boolean\n isFrozen?: boolean\n\n // emode info\n // each eMode category has a custom ltv and liquidation threshold\n eMode?: EModeData\n\n // limits\n debtCeiling: number\n supplyCap: number\n borrowCap: number\n\n config: { [modeId: number]: LenderConfigData }\n}\n\n/**\n * Interface shared by all lenders\n */\nexport interface LenderPublicBase extends LenderYields, LenderTotalAmounts {\n // borrow enabled flag\n borrowingEnabled: boolean\n\n config: LenderConfigMap\n}\n\nexport interface LenderYields extends BaseYields {\n // staking\n stakingYield: number\n\n // rewards\n rewards?: RewardsMap\n}\n\nexport interface LenderTotalAmounts {\n // debt totals\n totalDebt: number\n totalDebtStable: number\n // deposit total\n totalDeposits: number\n // liquidity\n totalLiquidity: number\n\n /** USD values */\n\n // debt totals\n totalDebtUSD: number\n totalDebtStableUSD: number\n // deposit total\n totalDepositsUSD: number\n // liquidity\n totalLiquidityUSD: number\n}\n\nexport interface LenderConfigMap {\n [modeId: number]: LenderConfigData\n}\n\n/**\n * The Mode-specific configuration for a lender asset\n */\nexport interface LenderConfigData {\n category: number\n borrowCollateralFactor: number\n collateralFactor: number\n borrowFactor: number\n collateralDisabled?: boolean\n debtDisabled?: boolean\n}\n\nexport interface ModeBase {\n category: number\n label: string\n}\n\nexport interface EModeData extends ModeBase {\n borrowCollateralFactor: number\n collateralFactor: number\n priceSource: string\n}\n\nexport interface AaveV2Public extends LenderPublicBase {\n // reserve market data\n lastUpdateTimestamp?: number\n\n // reserve config\n decimals?: number\n reserveFactor?: SerializedBigNumber\n collateralActive?: boolean\n hasStable?: boolean\n\n // frozen\n isActive?: boolean\n isFrozen?: boolean\n}\n\nexport interface CompoundV3Public extends LenderPublicBase {\n supplyCap: number\n collateralActive: boolean\n utilization: number\n}\n\nexport interface UserApr {\n apr: number\n borrowApr: number\n depositApr: number\n}\n\nexport interface InitUserReserveResponse {\n chainId: string\n lendingPositions: {\n // positionId is the NFT id\n [posId: string]: {\n mode: any\n [poolId: string]: {\n deposits: string\n debt: string\n depositsUSD: number\n debtUSD: number\n debtStable: '0'\n debtStableUSD: 0\n collateralEnabled: boolean\n isAllowed: boolean\n }\n }\n }\n assets: string[]\n account: string\n}\n\nexport interface InitPublic extends LenderPublicBase {\n // flags of reserve state\n collateralActive?: boolean\n\n // limits\n debtCeiling: number\n supplyCap: number\n borrowCap: number\n}\n","import { Call } from '../../../utils/multicall'\nimport { Lender } from '@1delta/lender-registry'\nimport {\n getAaveAssets,\n getAaveTypePoolDataProviderAddress,\n} from '../../../assets'\n\nconst getBaseAaveV2Calls = (\n chainId: string,\n account: string,\n lender: Lender,\n assetsToQuery: string[],\n) => {\n return assetsToQuery.flatMap((tk) => [\n {\n address: getAaveTypePoolDataProviderAddress(chainId, lender),\n name: 'getUserReserveData',\n params: [tk, account],\n },\n ])\n}\n\nexport const buildAaveV2UserCall = (\n chainId: string,\n lender: Lender,\n account: string,\n assets?: string[],\n): Call[] => {\n switch (lender) {\n default: {\n const assetsToQuery = getAaveAssets(chainId, lender)\n return getBaseAaveV2Calls(chainId, account, lender, assetsToQuery)\n }\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../../utils/multicall'\nimport {\n getAaveAssets,\n getAaveTypePoolDataProviderAddress,\n getAaveTypePoolAddress,\n} from '../../../assets'\nimport { isYLDR } from '../../../utils'\n\nconst getBaseAaveV3Calls = (\n chainId: string,\n account: string,\n lender: Lender,\n assetsToQuery: string[],\n) => {\n return assetsToQuery.flatMap((tk) => [\n {\n address: getAaveTypePoolDataProviderAddress(chainId, lender),\n name: 'getUserReserveData',\n params: [tk, account],\n },\n ])\n}\n\nexport const buildAaveV3UserCall = (\n chainId: string,\n lender: Lender,\n account: string,\n assets?: string[],\n): Call[] => {\n const assetsToQuery = assets ?? getAaveAssets(chainId, lender)\n\n const calls = [...getBaseAaveV3Calls(chainId, account, lender, assetsToQuery)]\n if (!isYLDR(lender)) {\n const callDataEmode = {\n address: getAaveTypePoolAddress(chainId, lender),\n name: 'getUserEMode',\n params: [account],\n }\n calls.push(callDataEmode)\n }\n\n return calls\n}\n","import { Chain } from '@1delta/chain-registry'\nimport { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../../utils/multicall'\nimport { getInitLensAddress } from '../../addresses/init'\n\nexport const initBrokerAddresses = {\n [Chain.MANTLE]: '0xc08BFef7E778f3519D79E96780b77066F5d4FCC0',\n}\n\nexport function getInitFlashAggregatorAddress(chainId?: string) {\n if (!chainId) return undefined\n return initBrokerAddresses[chainId as keyof typeof initBrokerAddresses]\n}\n\nexport const buildInitUserCall = (\n chainId: string,\n lender: Lender,\n account: string,\n): Call[] => {\n const lensContract = getInitLensAddress(chainId)\n const brokerAddress = getInitFlashAggregatorAddress(chainId)\n\n const call: Call = {\n address: lensContract,\n name: 'getUserPositionData',\n params: [account, brokerAddress],\n }\n\n return [call]\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../../utils/multicall'\nimport { getLenderAssets } from '../../../utils'\nimport {\n getCompoundV3BaseAsset,\n getCompoundV3CometAddress,\n getCompoundV3CometRewardsAddress,\n} from '../../addresses/compoundV3'\n\nexport const buildCompoundV3UserCall = (\n chainId: string,\n lender: Lender,\n account: string,\n assetsOverride?: string[],\n): Call[] => {\n const baseAsset = getCompoundV3BaseAsset(lender, chainId)?.baseAsset\n const cometContractAddress = getCompoundV3CometAddress(chainId, lender)!\n const assets = assetsOverride ?? getLenderAssets(chainId, lender)\n const assetsNoBase = assets.filter((a) => a !== baseAsset)\n\n const baseCalls = [\n {\n address: cometContractAddress,\n name: 'balanceOf',\n params: [account],\n },\n {\n address: cometContractAddress,\n name: 'borrowBalanceOf',\n params: [account],\n },\n ]\n\n const callsNonBase: Call[] = assetsNoBase.map((tk) => {\n return {\n address: cometContractAddress,\n name: 'userCollateral',\n params: [account, tk],\n }\n })\n\n const callEarnedBalances = {\n address: getCompoundV3CometRewardsAddress(chainId),\n name: 'getRewardOwed',\n params: [cometContractAddress, account],\n }\n const calls = [...callsNonBase, ...baseCalls, callEarnedBalances]\n return calls\n}\n","export const AavePoolAndDataProviderAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getATokenTotalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllATokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getAllReservesTokens',\n outputs: [\n {\n components: [\n {\n internalType: 'string',\n name: 'symbol',\n type: 'string',\n },\n {\n internalType: 'address',\n name: 'tokenAddress',\n type: 'address',\n },\n ],\n internalType: 'struct AaveProtocolDataProvider.TokenData[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getDebtCeiling',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getDebtCeilingDecimals',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getInterestRateStrategyAddress',\n outputs: [\n {\n internalType: 'address',\n name: 'irStrategyAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getLiquidationProtocolFee',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getPaused',\n outputs: [\n {\n internalType: 'bool',\n name: 'isPaused',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveCaps',\n outputs: [\n {\n internalType: 'uint256',\n name: 'borrowCap',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'supplyCap',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveConfigurationData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'decimals',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidationBonus',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'reserveFactor',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'borrowingEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'stableBorrowRateEnabled',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isActive',\n type: 'bool',\n },\n {\n internalType: 'bool',\n name: 'isFrozen',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveEModeCategory',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveTokensAddresses',\n outputs: [\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getSiloedBorrowing',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getTotalDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getUnbackedMintCap',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'currentATokenBalance',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'principalStableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'scaledVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'uint40',\n name: 'stableRateLastUpdated',\n type: 'uint40',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'backer',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'fee',\n type: 'uint256',\n },\n ],\n name: 'BackUnbacked',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'enum DataTypes.InterestRateMode',\n name: 'interestRateMode',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'borrowRate',\n type: 'uint256',\n },\n {\n indexed: true,\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'Borrow',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'initiator',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'enum DataTypes.InterestRateMode',\n name: 'interestRateMode',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'premium',\n type: 'uint256',\n },\n {\n indexed: true,\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'FlashLoan',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'totalDebt',\n type: 'uint256',\n },\n ],\n name: 'IsolationModeTotalDebtUpdated',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'collateralAsset',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'debtAsset',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'debtToCover',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'liquidatedCollateralAmount',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'liquidator',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'bool',\n name: 'receiveAToken',\n type: 'bool',\n },\n ],\n name: 'LiquidationCall',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: true,\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'MintUnbacked',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amountMinted',\n type: 'uint256',\n },\n ],\n name: 'MintedToTreasury',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'RebalanceStableBorrowRate',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'repayer',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'bool',\n name: 'useATokens',\n type: 'bool',\n },\n ],\n name: 'Repay',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'stableBorrowRate',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'variableBorrowRate',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'liquidityIndex',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'variableBorrowIndex',\n type: 'uint256',\n },\n ],\n name: 'ReserveDataUpdated',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'ReserveUsedAsCollateralDisabled',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'ReserveUsedAsCollateralEnabled',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n indexed: true,\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'Supply',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'enum DataTypes.InterestRateMode',\n name: 'interestRateMode',\n type: 'uint8',\n },\n ],\n name: 'SwapBorrowRateMode',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'categoryId',\n type: 'uint8',\n },\n ],\n name: 'UserEModeSet',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'reserve',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [],\n name: 'BRIDGE_PROTOCOL_FEE',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TOTAL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'FLASHLOAN_PREMIUM_TO_PROTOCOL',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_NUMBER_RESERVES',\n outputs: [\n {\n internalType: 'uint16',\n name: '',\n type: 'uint16',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'MAX_STABLE_RATE_BORROW_SIZE_PERCENT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'fee',\n type: 'uint256',\n },\n ],\n name: 'backUnbacked',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'borrow',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'priceSource',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategory',\n name: 'config',\n type: 'tuple',\n },\n ],\n name: 'configureEModeCategory',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'deposit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'dropReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceFromBefore',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'balanceToBefore',\n type: 'uint256',\n },\n ],\n name: 'finalizeTransfer',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: 'interestRateModes',\n type: 'uint256[]',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoan',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'receiverAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'flashLoanSimple',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'id',\n type: 'uint8',\n },\n ],\n name: 'getEModeCategoryData',\n outputs: [\n {\n components: [\n {\n internalType: 'uint16',\n name: 'ltv',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationThreshold',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'liquidationBonus',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'priceSource',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'label',\n type: 'string',\n },\n ],\n internalType: 'struct DataTypes.EModeCategory',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'id',\n type: 'uint16',\n },\n ],\n name: 'getReserveAddressById',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveData',\n outputs: [\n {\n components: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: 'configuration',\n type: 'tuple',\n },\n {\n internalType: 'uint128',\n name: 'liquidityIndex',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'currentLiquidityRate',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'variableBorrowIndex',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'currentVariableBorrowRate',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'currentStableBorrowRate',\n type: 'uint128',\n },\n {\n internalType: 'uint40',\n name: 'lastUpdateTimestamp',\n type: 'uint40',\n },\n {\n internalType: 'uint16',\n name: 'id',\n type: 'uint16',\n },\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'interestRateStrategyAddress',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'accruedToTreasury',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'unbacked',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'isolationModeTotalDebt',\n type: 'uint128',\n },\n ],\n internalType: 'struct DataTypes.ReserveData',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedIncome',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getReserveNormalizedVariableDebt',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getReservesList',\n outputs: [\n {\n internalType: 'address[]',\n name: '',\n type: 'address[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserAccountData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'totalCollateralBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'totalDebtBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'availableBorrowsBase',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentLiquidationThreshold',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'ltv',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'healthFactor',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserConfiguration',\n outputs: [\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.UserConfigurationMap',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserEMode',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'aTokenAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'stableDebtAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'variableDebtAddress',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'interestRateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'initReserve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'collateralAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'debtAsset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'debtToCover',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'receiveAToken',\n type: 'bool',\n },\n ],\n name: 'liquidationCall',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n ],\n name: 'mintToTreasury',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'mintUnbacked',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'rebalanceStableBorrowRate',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n ],\n name: 'repay',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n ],\n name: 'repayWithATokens',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'repayWithPermit',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'rescueTokens',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'resetIsolationModeTotalDebt',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n components: [\n {\n internalType: 'uint256',\n name: 'data',\n type: 'uint256',\n },\n ],\n internalType: 'struct DataTypes.ReserveConfigurationMap',\n name: 'configuration',\n type: 'tuple',\n },\n ],\n name: 'setConfiguration',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'rateStrategyAddress',\n type: 'address',\n },\n ],\n name: 'setReserveInterestRateStrategyAddress',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'categoryId',\n type: 'uint8',\n },\n ],\n name: 'setUserEMode',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'useAsCollateral',\n type: 'bool',\n },\n ],\n name: 'setUserUseReserveAsCollateral',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n ],\n name: 'supply',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint16',\n name: 'referralCode',\n type: 'uint16',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'permitV',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'permitR',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 'permitS',\n type: 'bytes32',\n },\n ],\n name: 'supplyWithPermit',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'interestRateMode',\n type: 'uint256',\n },\n ],\n name: 'swapBorrowRateMode',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'bridgeProtocolFee',\n type: 'uint256',\n },\n ],\n name: 'updateBridgeProtocolFee',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumTotal',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'flashLoanPremiumToProtocol',\n type: 'uint128',\n },\n ],\n name: 'updateFlashloanPremiums',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const VariableDebtTokenAbi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'fromUser',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'toUser',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'BorrowAllowanceDelegated',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'target',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'balanceIncrease',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'Burn',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'underlyingAsset',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'incentivesController',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'debtTokenDecimals',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'string',\n name: 'debtTokenName',\n type: 'string',\n },\n {\n indexed: false,\n internalType: 'string',\n name: 'debtTokenSymbol',\n type: 'string',\n },\n {\n indexed: false,\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n ],\n name: 'Initialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'caller',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'balanceIncrease',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'Mint',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n inputs: [],\n name: 'DEBT_TOKEN_REVISION',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DELEGATION_WITH_SIG_TYPEHASH',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'EIP712_REVISION',\n outputs: [\n {\n internalType: 'bytes',\n name: '',\n type: 'bytes',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'POOL',\n outputs: [\n {\n internalType: 'contract IPool',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'UNDERLYING_ASSET_ADDRESS',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'delegatee',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approveDelegation',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'fromUser',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'toUser',\n type: 'address',\n },\n ],\n name: 'borrowAllowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'burn',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'delegator',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'delegatee',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'delegationWithSig',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getIncentivesController',\n outputs: [\n {\n internalType: 'contract IAaveIncentivesController',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getPreviousIndex',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getScaledUserBalanceAndSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'contract IPool',\n name: 'initializingPool',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'underlyingAsset',\n type: 'address',\n },\n {\n internalType: 'contract IAaveIncentivesController',\n name: 'incentivesController',\n type: 'address',\n },\n {\n internalType: 'uint8',\n name: 'debtTokenDecimals',\n type: 'uint8',\n },\n {\n internalType: 'string',\n name: 'debtTokenName',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'debtTokenSymbol',\n type: 'string',\n },\n {\n internalType: 'bytes',\n name: 'params',\n type: 'bytes',\n },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'onBehalfOf',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'mint',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'nonces',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'scaledBalanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'scaledTotalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'contract IAaveIncentivesController',\n name: 'controller',\n type: 'address',\n },\n ],\n name: 'setIncentivesController',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const MultiFeeDistributionAbi = [\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'VERSION',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'addReward',\n inputs: [\n {\n type: 'address',\n name: '_rewardsToken',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'tuple[]',\n name: 'rewards',\n internalType: 'struct MultiFeeDistribution.RewardData[]',\n components: [\n {\n type: 'address',\n },\n {\n type: 'uint256',\n },\n ],\n },\n ],\n name: 'claimableRewards',\n inputs: [\n {\n type: 'address',\n name: 'account',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'total',\n internalType: 'uint256',\n },\n {\n type: 'tuple[]',\n name: 'earningsData',\n internalType: 'struct MultiFeeDistribution.LockedBalance[]',\n components: [\n {\n type: 'uint256',\n },\n {\n type: 'uint256',\n },\n ],\n },\n ],\n name: 'earnedBalances',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'exit',\n inputs: [\n {\n type: 'bool',\n name: 'claimRewards',\n internalType: 'bool',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'getReward',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'getReward',\n inputs: [\n {\n type: 'address[]',\n name: '_rewardTokens',\n internalType: 'address[]',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'getRewardForDuration',\n inputs: [\n {\n type: 'address',\n name: '_rewardsToken',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'contract IChefIncentivesController',\n },\n ],\n name: 'incentivesController',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'initialize',\n inputs: [\n {\n type: 'address',\n name: 'owner',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '_stakingToken',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'lastTimeRewardApplicable',\n inputs: [\n {\n type: 'address',\n name: '_rewardsToken',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'lockDuration',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'total',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'unlockable',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'locked',\n internalType: 'uint256',\n },\n {\n type: 'tuple[]',\n name: 'lockData',\n internalType: 'struct MultiFeeDistribution.LockedBalance[]',\n components: [\n {\n type: 'uint256',\n },\n {\n type: 'uint256',\n },\n ],\n },\n ],\n name: 'lockedBalances',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'lockedSupply',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'mint',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n {\n type: 'bool',\n name: 'withPenalty',\n internalType: 'bool',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'minters',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'mintersAreSet',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'owner',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'bool',\n name: '',\n internalType: 'bool',\n },\n ],\n name: 'paused',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'recoverERC20',\n inputs: [\n {\n type: 'address',\n name: 'tokenAddress',\n internalType: 'address',\n },\n {\n type: 'uint256',\n name: 'tokenAmount',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'renounceOwnership',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'periodFinish',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'rewardRate',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'lastUpdateTime',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'rewardPerTokenStored',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'balance',\n internalType: 'uint256',\n },\n ],\n name: 'rewardData',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'rewardPerToken',\n inputs: [\n {\n type: 'address',\n name: '_rewardsToken',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n name: 'rewardTokens',\n inputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'rewards',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'rewardsDuration',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'setIncentivesController',\n inputs: [\n {\n type: 'address',\n name: '_controller',\n internalType: 'contract IChefIncentivesController',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'setMinters',\n inputs: [\n {\n type: 'address[]',\n name: '_minters',\n internalType: 'address[]',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'setPause',\n inputs: [\n {\n type: 'bool',\n name: 'val',\n internalType: 'bool',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'stake',\n inputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n {\n type: 'bool',\n name: 'lock',\n internalType: 'bool',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'address',\n name: '',\n internalType: 'contract IMintableToken',\n },\n ],\n name: 'stakingToken',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n ],\n name: 'totalBalance',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'totalSupply',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'transferOwnership',\n inputs: [\n {\n type: 'address',\n name: 'newOwner',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n ],\n name: 'unlockedBalance',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'userRewardPerTokenPaid',\n inputs: [\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n {\n type: 'address',\n name: '',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'withdraw',\n inputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n stateMutability: 'nonpayable',\n outputs: [],\n name: 'withdrawExpiredLocks',\n inputs: [],\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: 'amount',\n internalType: 'uint256',\n },\n {\n type: 'uint256',\n name: 'penaltyAmount',\n internalType: 'uint256',\n },\n ],\n name: 'withdrawableBalance',\n inputs: [\n {\n type: 'address',\n name: 'user',\n internalType: 'address',\n },\n ],\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n type: 'address',\n name: 'previousOwner',\n indexed: true,\n },\n {\n type: 'address',\n name: 'newOwner',\n indexed: true,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Recovered',\n inputs: [\n {\n type: 'address',\n name: 'token',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'amount',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RewardAdded',\n inputs: [\n {\n type: 'uint256',\n name: 'reward',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RewardPaid',\n inputs: [\n {\n type: 'address',\n name: 'user',\n indexed: true,\n },\n {\n type: 'address',\n name: 'rewardsToken',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'reward',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RewardsDurationUpdated',\n inputs: [\n {\n type: 'address',\n name: 'token',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'newDuration',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Staked',\n inputs: [\n {\n type: 'address',\n name: 'user',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'amount',\n indexed: false,\n },\n {\n type: 'bool',\n name: 'locked',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdrawn',\n inputs: [\n {\n type: 'address',\n name: 'user',\n indexed: true,\n },\n {\n type: 'uint256',\n name: 'receivedAmount',\n indexed: false,\n },\n {\n type: 'uint256',\n name: 'penaltyPaid',\n indexed: false,\n },\n ],\n anonymous: false,\n },\n] as const\n","export const PullRewardsIncentivesController = [\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getRewardsBalance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getUserAssetData',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_user',\n type: 'address',\n },\n ],\n name: 'getUserUnclaimedRewards',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n name: 'claimRewards',\n type: 'function',\n inputs: [\n {\n name: 'assets',\n type: 'address[]',\n internalType: 'address[]',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'to',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n] as const\n","export const CometRewardsAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'governor_',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'AlreadyConfigured',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'InvalidUInt64',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'NotPermitted',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'NotSupported',\n type: 'error',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'TransferOutFailed',\n type: 'error',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'oldGovernor',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newGovernor',\n type: 'address',\n },\n ],\n name: 'GovernorTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'RewardClaimed',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'comet',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'shouldAccrue',\n type: 'bool',\n },\n ],\n name: 'claim',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'comet',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'src',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'shouldAccrue',\n type: 'bool',\n },\n ],\n name: 'claimTo',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'comet',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'getRewardOwed',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'owed',\n type: 'uint256',\n },\n ],\n internalType: 'struct CometRewards.RewardOwed',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'governor',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'rewardConfig',\n outputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint64',\n name: 'rescaleFactor',\n type: 'uint64',\n },\n {\n internalType: 'bool',\n name: 'shouldUpscale',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'rewardsClaimed',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'comet',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n ],\n name: 'setRewardConfig',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newGovernor',\n type: 'address',\n },\n ],\n name: 'transferGovernor',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'withdrawToken',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const YLDRAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'user',\n type: 'address',\n },\n ],\n name: 'getUserReserveData',\n outputs: [\n {\n internalType: 'uint256',\n name: 'currentYTokenBalance',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'currentVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'scaledVariableDebt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'liquidityRate',\n type: 'uint256',\n },\n {\n internalType: 'bool',\n name: 'usageAsCollateralEnabled',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const MorphoBlueAbi = [\n {\n inputs: [\n {\n internalType: 'Id',\n name: '',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n name: 'position',\n outputs: [\n {\n internalType: 'uint256',\n name: 'supplyShares',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'borrowShares',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'collateral',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32[]',\n name: 'slots',\n type: 'bytes32[]',\n },\n ],\n name: 'extSloads',\n outputs: [\n {\n internalType: 'bytes32[]',\n name: 'res',\n type: 'bytes32[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'Id',\n name: '',\n type: 'bytes32',\n },\n ],\n name: 'market',\n outputs: [\n {\n internalType: 'uint128',\n name: 'totalSupplyAssets',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'totalSupplyShares',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'totalBorrowAssets',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'totalBorrowShares',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'lastUpdate',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'fee',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const ComptrollerAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'getAssetsIn',\n outputs: [\n {\n internalType: 'contract CToken[]',\n name: '',\n type: 'address[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const CompoundV2CollateralToken = [\n {\n inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],\n name: 'balanceOfUnderlying',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'borrowBalanceCurrent',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'borrowBalanceStored',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { Lender } from '@1delta/lender-registry'\nimport {\n isAaveV2Type,\n isAaveV3Type,\n isCompoundV3,\n isInit,\n isAaveV32Type,\n isYLDR,\n isMorphoType,\n isCompoundV2Type,\n} from '../../utils'\nimport { IncentivesControllerAbi } from '../../abis/lendle/IncentivesController'\nimport { RewarderAbi } from '../../abis/aurelius/Rewarder'\nimport { AavePoolV3UpgradedAbi } from '../../abis/aave/AavePoolV3Upgraded'\nimport { AaveV3ProtocolDataProviderAbi } from '../../abis/aave/AaveV3ProtocolDataProvider'\nimport { InitLensAbi } from '../../abis/init/InitLens'\nimport { CometAbi } from '../../abis/compound-v3/Comet'\nimport { CometExtAbi } from '../../abis/compound-v3/CometExt'\nimport { AavePoolLegacyAbi } from '../../abis/aave-v3/AavePoolLegacy'\nimport { AavePoolDataProviderLegacyAbi } from '../../abis/aave-v3/AavePoolDataProviderLegacy'\nimport { AavePoolAndDataProviderAbi } from '../../abis/aave/AavePoolAndDataProvider'\nimport { VariableDebtTokenAbi } from '../../abis/aave/VariableDebtToken'\nimport { MultiFeeDistributionAbi } from '../../abis/lendle/MultiFeeDistribution'\nimport { PullRewardsIncentivesController } from '../../abis/meridian/PullRewardsIncentivesController'\nimport { CometRewardsAbi } from '../../abis/compound-v3/CometRewards'\nimport { YLDRAbi } from '../../abis/aave-v3/YLDR'\nimport { MorphoBlueAbi } from '../../abis/morpho/blue'\nimport { MorphoLensAbi } from '../../abis/morpho/lens'\nimport { ComptrollerAbi } from '../../abis/compound-v2/Comptroller'\nimport { CompoundV2CollateralToken } from '../../abis/compound-v2/CollateralToken'\n\nexport const getAbi = (lender: Lender) => {\n if (isAaveV2Type(lender as any))\n return [\n ...AavePoolAndDataProviderAbi,\n ...VariableDebtTokenAbi,\n ...RewarderAbi,\n ...PullRewardsIncentivesController,\n ...IncentivesControllerAbi,\n ...MultiFeeDistributionAbi,\n ]\n if (isYLDR(lender as any)) return [...VariableDebtTokenAbi, ...YLDRAbi]\n\n if (isAaveV32Type(lender as any))\n return [...AavePoolV3UpgradedAbi, ...AaveV3ProtocolDataProviderAbi]\n\n if (isAaveV3Type(lender as any))\n return [\n ...AavePoolLegacyAbi,\n ...VariableDebtTokenAbi,\n ...AavePoolDataProviderLegacyAbi,\n ]\n if (isCompoundV3(lender as any))\n return [...CometAbi, ...CometExtAbi, ...CometRewardsAbi]\n if (isMorphoType(lender)) return [...MorphoBlueAbi, ...MorphoLensAbi]\n if (isInit(lender as any)) return InitLensAbi\n if (isCompoundV2Type(lender as any))\n return [...ComptrollerAbi, ...CompoundV2CollateralToken]\n return []\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport {\n AaveV2TypeGetUserReserveData,\n AaveV2UserReserveResponse,\n} from '../../../types/lenderTypes'\nimport { createBaseTypeUserState } from '../utils'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { GenericCurrency } from '../../../types'\n\nexport const getAaveV2UserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => AaveV2UserReserveResponse | undefined, number] => {\n switch (lender) {\n default: {\n const assetsToQuery = Object.keys(lenderData)\n const expectedNumberOfCalls = assetsToQuery.length\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n const lendingPositions: { [asset: string]: any } = {}\n let totalDebt24h = 0\n let totalDeposits24h = 0\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const { dataForAsset, addedDebt, addedDeposits } =\n createAaveV2Entry(\n i,\n data,\n chainId,\n lenderData[asset].asset,\n prices,\n pricesHist,\n 0,\n )\n if (!dataForAsset) continue\n totalDebt24h += addedDebt\n totalDeposits24h += addedDeposits\n lendingPositions[asset] = dataForAsset\n }\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': lendingPositions },\n rewards: {},\n }\n const userData = createBaseTypeUserState(\n payload,\n lenderData,\n totalDeposits24h,\n totalDebt24h,\n )\n return {\n ...payload,\n ...userData,\n }\n },\n expectedNumberOfCalls,\n ]\n }\n }\n}\n\nfunction createAaveV2Entry(\n i: number,\n data: any[],\n chainId: string,\n asset: GenericCurrency,\n prices: any,\n pricesHist: any,\n claimableRewards: any,\n) {\n const reserveData = data[i]\n const currentATokenBalanceRaw =\n reserveData[AaveV2TypeGetUserReserveData.currentATokenBalance]?.toString()\n const currentStableDebtRaw =\n reserveData[AaveV2TypeGetUserReserveData.currentStableDebt]?.toString()\n const currentVariableDebtRaw =\n reserveData[AaveV2TypeGetUserReserveData.currentVariableDebt]?.toString()\n\n if (\n currentATokenBalanceRaw === '0' &&\n currentStableDebtRaw === '0' &&\n currentVariableDebtRaw === '0'\n ) {\n return {\n dataForAsset: undefined,\n addedDeposits: 0,\n addedDebt: 0,\n }\n }\n\n const assetMeta = asset\n const decimals = assetMeta?.decimals ?? 18\n const currentATokenBalance = Number(\n parseRawAmount(currentATokenBalanceRaw, decimals),\n )\n const currentStableDebt = Number(\n parseRawAmount(currentStableDebtRaw, decimals),\n )\n const currentVariableDebt = Number(\n parseRawAmount(currentVariableDebtRaw, decimals),\n )\n\n const key =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset.address, chainId)\n const price = prices[key] ?? 1\n const priceHist = pricesHist?.[key] ?? price\n\n const dataForAsset = {\n poolId: asset.address,\n underlying: asset.address,\n deposits: currentATokenBalance,\n depositsRaw: currentATokenBalanceRaw,\n debtStable: currentStableDebt,\n debt: currentVariableDebt,\n depositsUSD: currentATokenBalance * price,\n debtStableUSD: currentStableDebt * price,\n debtUSD: currentVariableDebt * price,\n stableBorrowRate:\n reserveData[AaveV2TypeGetUserReserveData.stableBorrowRate]?.toString(),\n collateralEnabled: Boolean(\n reserveData[AaveV2TypeGetUserReserveData.usageAsCollateralEnabled],\n ),\n claimableRewards,\n }\n\n return {\n dataForAsset,\n addedDeposits: currentATokenBalance * priceHist,\n addedDebt: (currentVariableDebt + currentStableDebt) * priceHist,\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport { AaveV3UserReserveResponse } from '../../../types/lenderTypes'\nimport { createBaseTypeUserState } from '../utils'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { AaveTypeGetUserReserveIndexes } from '../../../types/lender/aave-v3-types'\nimport { GenericCurrency } from '../../../types'\n\nexport const getAaveV3UserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => AaveV3UserReserveResponse | undefined, number] => {\n const assetsToQuery = Object.keys(lenderData)\n const expectedNumberOfCalls = assetsToQuery.length + 1\n\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n const userEMode = Number(data[expectedNumberOfCalls - 1])\n const lendingPositions: { [asset: string]: any } = {}\n\n let totalDebt24h = 0\n let totalDeposits24h = 0\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const { dataForAsset, addedDebt, addedDeposits } = createAaveV3Entry(\n i,\n data,\n chainId,\n lenderData[asset].asset,\n prices,\n pricesHist,\n )\n if (!dataForAsset) continue\n\n totalDebt24h += addedDebt\n totalDeposits24h += addedDeposits\n lendingPositions[asset] = dataForAsset\n }\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': lendingPositions },\n rewards: {},\n userEMode,\n }\n const userData = createBaseTypeUserState(\n payload,\n lenderData,\n totalDeposits24h,\n totalDebt24h,\n )\n return {\n ...payload,\n ...userData,\n }\n },\n expectedNumberOfCalls,\n ]\n}\n\nfunction createAaveV3Entry(\n i: number,\n data: any[],\n chainId: string,\n asset: GenericCurrency,\n prices: any,\n pricesHist: any,\n) {\n const reserveData = data[i]\n\n const currentATokenBalanceRaw =\n reserveData[AaveTypeGetUserReserveIndexes.currentATokenBalance]?.toString()\n const currentStableDebtRaw =\n reserveData[AaveTypeGetUserReserveIndexes.currentStableDebt]?.toString()\n const currentVariableDebtRaw =\n reserveData[AaveTypeGetUserReserveIndexes.currentVariableDebt]?.toString()\n\n if (\n currentATokenBalanceRaw === '0' &&\n currentStableDebtRaw === '0' &&\n currentVariableDebtRaw === '0'\n ) {\n return {\n dataForAsset: undefined,\n addedDeposits: 0,\n addedDebt: 0,\n }\n }\n\n const assetMeta = asset\n const decimals = assetMeta?.decimals ?? 18\n\n const currentATokenBalance = parseRawAmount(currentATokenBalanceRaw, decimals)\n const currentStableDebt = parseRawAmount(currentStableDebtRaw, decimals)\n const currentVariableDebt = parseRawAmount(currentVariableDebtRaw, decimals)\n\n const key =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset.address, chainId)\n // prices\n const price = prices[key] ?? 1\n const priceHist = pricesHist?.[key] ?? price\n\n const dataForAsset = {\n poolId: asset.address,\n underlying: asset.address,\n deposits: currentATokenBalance,\n depositsRaw: currentATokenBalanceRaw,\n debtStable: currentStableDebt,\n debt: currentVariableDebt,\n depositsUSD: Number(currentATokenBalance) * price,\n debtStableUSD: Number(currentStableDebt) * price,\n debtUSD: Number(currentVariableDebt) * price,\n stableBorrowRate:\n reserveData[AaveTypeGetUserReserveIndexes.stableBorrowRate]?.toString() ??\n '0',\n collateralEnabled: Boolean(\n reserveData[AaveTypeGetUserReserveIndexes.usageAsCollateralEnabled],\n ),\n claimableRewards: 0,\n }\n\n return {\n dataForAsset,\n addedDeposits: Number(currentATokenBalance) * priceHist,\n addedDebt:\n (Number(currentVariableDebt) + Number(currentStableDebt)) * priceHist,\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { InitUserReserveResponse } from '../../../types/lenderTypes'\nimport { getInitFlashAggregatorAddress } from './userCallBuild'\nimport { toOracleKey } from '../../../assets'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { createMultiAccountTypeUserState } from '../utils/createMultiAccountStyleUserState'\nimport { InitGetUserPositionDataIndexes } from '../../../types/lender/init-types'\n\nexport const getInitUserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => InitUserReserveResponse | undefined, number] => {\n const validOwner = account.toLowerCase()\n const brokerAddress = getInitFlashAggregatorAddress(chainId) ?? ''\n const expectedNumberOfCalls = 1\n return [\n (_data: any[]) => {\n if (_data.length !== expectedNumberOfCalls) {\n return undefined\n }\n const [data] = _data\n // filter for owner\n const indexes = data[InitGetUserPositionDataIndexes.posMeta]\n .map((e: any, i: number) => {\n return { e, i }\n })\n .filter((a: any) => a.e.owner.toLowerCase() === validOwner)\n .map((a: any) => a.i)\n\n // get keys from pub data\n const assets = Object.keys(lenderData)\n let histData: any = {}\n\n // map data\n const result: any = Object.assign(\n {},\n ...indexes.map((index: any) => {\n const entry = data[InitGetUserPositionDataIndexes.posMeta][index]\n const mode = entry.mode\n const id = entry.posId.toString()\n const collatData = Object.assign(\n {},\n ...data[InitGetUserPositionDataIndexes.collaterals][index].map(\n (c: any) => {\n const asset = c.underlying.toLowerCase()\n const decimals = lenderData[asset].asset?.decimals ?? 18\n const depositsRaw = c.amount.toString()\n return {\n [asset]: {\n deposits: parseRawAmount(depositsRaw, decimals),\n depositsRaw,\n },\n }\n },\n ),\n )\n const debtData = Object.assign(\n {},\n ...data[InitGetUserPositionDataIndexes.debts][index].map(\n (c: any) => {\n const asset = c.underlying.toLowerCase()\n const decimals = lenderData[asset]?.asset?.decimals ?? 18\n return {\n [asset]: {\n debt: parseRawAmount(c.amount.toString(), decimals),\n },\n }\n },\n ),\n )\n // sub account to asset data\n return {\n [id]: {\n mode,\n ...Object.assign(\n {},\n ...assets.map((a) => {\n const ams = toOracleKey(lenderData[a]?.asset?.assetGroup!)\n const price = prices[ams] ?? 1\n const priceHist = pricesHist?.[ams] ?? price\n if (!histData[id])\n histData[id] = {\n totalDebt24h: 0,\n totalDeposits24h: 0,\n }\n const debt = debtData[a]?.debt ?? 0\n const deposits = collatData[a]?.deposits ?? 0\n const depositsRaw = collatData[a]?.depositsRaw ?? '0'\n\n histData[id].totalDebt24h += Number(debt) * priceHist\n histData[id].totalDeposits24h += Number(deposits) * priceHist\n\n // asset to data\n return {\n [a]: {\n poolId: a,\n underlying: a,\n deposits: deposits,\n depositsRaw,\n debt: debt,\n debtStable: '0',\n debtStableUSD: 0,\n depositsUSD: price * Number(deposits),\n debtUSD: price * Number(debt),\n collateralEnabled: true,\n isAllowed:\n entry.approved.toLowerCase() ===\n brokerAddress.toLowerCase(),\n },\n }\n }),\n ),\n },\n }\n }),\n )\n\n const payload = {\n chainId,\n lendingPositions: result,\n account,\n }\n\n const userState = createMultiAccountTypeUserState(\n { ...payload, assets },\n lenderData,\n histData,\n )\n return {\n ...payload,\n ...userState,\n } as any\n },\n expectedNumberOfCalls,\n ]\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { CompoundV3UserReserveResponse } from '../../../types/lenderTypes'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport { getCompoundV3BaseAsset } from '../../addresses/compoundV3'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { createBaseTypeUserState } from '../utils'\n\nexport const getCompoundV3UserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => CompoundV3UserReserveResponse | undefined, number] => {\n const assetAddresses = Object.keys(lenderData)\n const baseAsset = getCompoundV3BaseAsset(lender, chainId)?.baseAsset\n const assetsNoBase = assetAddresses.filter((a) => a !== baseAsset)\n const expectedNumberOfCalls = assetsNoBase.length + 2 + 1\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n let totalDebt24h = 0\n let totalDeposits24h = 0\n\n let result: { [asset: string]: any } = {}\n for (let i = 0; i < assetsNoBase.length; i++) {\n const asset = assetsNoBase[i]\n const assetMeta = lenderData[asset].asset\n const decimals = assetMeta?.decimals ?? 18\n const depositsRaw = data[i][0]?.toString()\n if (depositsRaw === '0') continue\n const deposits = parseRawAmount(depositsRaw, decimals)\n const key =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset, chainId)\n const price = prices[key] ?? 1\n\n const priceHist = pricesHist?.[key] ?? price\n\n // accure\n totalDeposits24h += Number(deposits) * priceHist\n\n result[asset] = {\n poolId: asset,\n underlying: asset,\n deposits,\n depositsUSD: Number(deposits) * price,\n debtStableUSD: 0,\n debt: '0',\n debtStable: '0',\n debtUSD: 0,\n collateralEnabled: true,\n // user depos raw\n depositsRaw,\n // flag for allowance\n }\n }\n\n const depositsRaw = data[assetsNoBase.length]?.toString()\n const debtRaw = data[assetsNoBase.length + 1]?.toString()\n const baseMeta = lenderData[baseAsset].asset\n const baseDecimals = baseMeta.decimals ?? 18\n const deposits = parseRawAmount(depositsRaw, baseDecimals)\n const debt = parseRawAmount(debtRaw, baseDecimals)\n const oracleKeyBase =\n toOracleKey(baseMeta?.assetGroup) ??\n toGenericPriceKey(baseMeta.baseAsset, chainId)\n const priceBase = prices[oracleKeyBase]\n const priceBaseHist = pricesHist?.[oracleKeyBase] ?? priceBase\n\n // accrue base data\n totalDebt24h += Number(debt) * priceBaseHist\n totalDeposits24h += Number(deposits) * priceBaseHist\n\n const resultBase = {\n [baseAsset]: {\n poolId: baseAsset,\n underlying: baseAsset,\n deposits,\n debt,\n depositsUSD: Number(deposits) * priceBase,\n debtUSD: Number(debt) * priceBase,\n // populate values for totals\n debtStable: '0',\n debtStableUSD: 0,\n collateralEnabled: false,\n // user depos raw\n depositsRaw,\n // flag for allowance\n },\n }\n\n // the result is an array: [tokenAddress, owedAmount] (tokenAddress should be always COMP)\n // so we take [1] to get the owedAmount\n const earnedBalances = data[expectedNumberOfCalls - 1]\n\n const compRewards = Number(\n parseRawAmount(earnedBalances?.owed?.toString(), 18),\n )\n const payload = {\n lendingPositions: { [0]: { ...result, ...resultBase } },\n chainId,\n baseAsset,\n rewards: {\n ['COMP']: {\n totalRewards: compRewards,\n claimableRewards: compRewards,\n },\n },\n account,\n }\n const userData = createBaseTypeUserState(\n payload,\n lenderData,\n totalDeposits24h,\n totalDebt24h,\n )\n return {\n ...payload,\n ...userData,\n }\n },\n expectedNumberOfCalls,\n ]\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport { AaveV3UserReserveResponse } from '../../../types/lenderTypes'\nimport { createBaseTypeUserState } from '../utils'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { GenericCurrency } from '../../../types'\nimport { YldrTypeGetUserReserveIndexes } from '../../../types/lender/aave-v3-types'\n\n/** Like Aave V3, not stable debt data and no emode */\nexport const getYldrUserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => AaveV3UserReserveResponse | undefined, number] => {\n const assetsToQuery = Object.keys(lenderData)\n const expectedNumberOfCalls = assetsToQuery.length\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n const lendingPositions: { [asset: string]: any } = {}\n\n let totalDebt24h = 0\n let totalDeposits24h = 0\n\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const { dataForAsset, addedDebt, addedDeposits } = createAaveV3Entry(\n i,\n data,\n chainId,\n lenderData[asset].asset,\n prices,\n pricesHist,\n )\n if (!dataForAsset) continue\n totalDebt24h += addedDebt\n totalDeposits24h += addedDeposits\n lendingPositions[asset] = dataForAsset\n }\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': lendingPositions },\n rewards: {},\n userEMode: 0,\n }\n\n const userData = createBaseTypeUserState(\n payload,\n lenderData,\n totalDeposits24h,\n totalDebt24h,\n )\n return {\n ...payload,\n ...userData,\n }\n },\n expectedNumberOfCalls,\n ]\n}\n\nfunction createAaveV3Entry(\n i: number,\n data: any[],\n chainId: string,\n asset: GenericCurrency,\n prices: any,\n pricesHist: any,\n) {\n const reserveData = data[i]\n\n const currentATokenBalanceRaw =\n reserveData[YldrTypeGetUserReserveIndexes.currentYTokenBalance]?.toString()\n const currentVariableDebtRaw =\n reserveData[YldrTypeGetUserReserveIndexes.currentVariableDebt]?.toString()\n\n if (currentATokenBalanceRaw === '0' && currentVariableDebtRaw === '0') {\n return {\n dataForAsset: undefined,\n addedDeposits: 0,\n addedDebt: 0,\n }\n }\n\n const assetMeta = asset\n const decimals = assetMeta?.decimals ?? 18\n\n const currentATokenBalance = parseRawAmount(currentATokenBalanceRaw, decimals)\n const currentVariableDebt = parseRawAmount(currentVariableDebtRaw, decimals)\n\n const key =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset.address, chainId)\n // prices\n const price = prices[key] ?? 1\n const priceHist = pricesHist?.[key] ?? price\n\n const dataForAsset = {\n poolId: asset.address,\n underlying: asset.address,\n deposits: currentATokenBalance,\n depositsRaw: currentATokenBalanceRaw,\n debtStable: '0',\n debt: currentVariableDebt,\n depositsUSD: Number(currentATokenBalance) * price,\n debtStableUSD: 0,\n debtUSD: Number(currentVariableDebt) * price,\n stableBorrowRate: 0,\n collateralEnabled: Boolean(\n reserveData[YldrTypeGetUserReserveIndexes.usageAsCollateralEnabled],\n ),\n claimableRewards: 0,\n }\n\n return {\n dataForAsset,\n addedDeposits: Number(currentATokenBalance) * priceHist,\n addedDebt: Number(currentVariableDebt) * priceHist,\n }\n}\n","export interface BalanceInfo {\n index: number // uint16 (2 bytes)\n supplyShares: bigint // uint256 (32 bytes)\n borrowShares: bigint // uint128 (16 bytes)\n supplyAssets: bigint // uint256 (32 bytes)\n borrowAssets: bigint // uint256 (32 bytes)\n collateral: bigint // uint128 (16 bytes)\n}\n\nconst WORD = 32\nconst HALF = 16\n\n/** Read `len` bytes at `off` as a big‐endian BigInt. */\nfunction readBigIntBE(buf: Uint8Array, off: number, len: number): bigint {\n let v = 0n\n for (let i = 0; i < len; i++) {\n v = (v << 8n) | BigInt(buf[off + i])\n }\n return v\n}\n\n/**\n * Decode:\n * [ uint256 count (32 bytes) ]\n * then for each of `count` records:\n * uint16 index (2 bytes),\n * uint256 supplyShares (32 bytes),\n * uint128 borrowShares (16 bytes),\n * uint256 supplyAssets (32 bytes),\n * uint256 borrowAssets (32 bytes),\n * uint128 collateral (16 bytes)\n */\nexport function decodePackedMorphoUserDataset(hex: string): BalanceInfo[] {\n if (hex.startsWith('0x')) hex = hex.slice(2)\n const buf = Uint8Array.from(hex.match(/.{1,2}/g)!.map((b) => parseInt(b, 16)))\n\n // 1) count (uint256)\n const count = Number(readBigIntBE(buf, 0, 2))\n const out: BalanceInfo[] = []\n\n let off = 2\n for (let i = 0; i < count; i++) {\n // 2) index (uint16)\n const index = Number(readBigIntBE(buf, off, 2))\n off += 2\n\n // 3) supplyShares (uint256)\n const supplyShares = readBigIntBE(buf, off, WORD)\n off += WORD\n\n // 4) borrowShares (uint128)\n const borrowShares = readBigIntBE(buf, off, HALF)\n off += HALF\n\n // 5) supplyAssets (uint256)\n const supplyAssets = readBigIntBE(buf, off, WORD)\n off += WORD\n\n // 6) borrowAssets (uint256)\n const borrowAssets = readBigIntBE(buf, off, WORD)\n off += WORD\n\n // 7) collateral (uint128)\n const collateral = readBigIntBE(buf, off, HALF)\n off += HALF\n\n out.push({\n index,\n supplyShares,\n borrowShares,\n supplyAssets,\n borrowAssets,\n collateral,\n })\n }\n\n return out\n}\n\nexport interface ListaBalanceInfo {\n index: number // uint16 (index into marketsIds)\n supplyShares: bigint // uint256\n borrowShares: bigint // uint128\n supplyAssets: bigint // uint256\n borrowAssets: bigint // uint256\n collateral: bigint // uint128\n}\n\nexport interface ListaUserData {\n whitelistFlags: boolean[] // length = marketsIds.length\n balances: ListaBalanceInfo[]\n}\n\n/**\n * Decode Lista user data with leading whitelist flags.\n *\n * @param hex ABI-encoded hex string\n * @param marketsCount marketsIds.length (needed to slice flags)\n */\nexport function decodePackedListaUserDataset(\n hex: string,\n marketsCount: number,\n): ListaUserData {\n if (hex.startsWith('0x')) hex = hex.slice(2)\n const buf = Uint8Array.from(hex.match(/.{1,2}/g)!.map((b) => parseInt(b, 16)))\n\n let off = 0\n\n // 1) whitelist flags\n const whitelistFlags: boolean[] = new Array(marketsCount)\n for (let i = 0; i < marketsCount; i++) {\n whitelistFlags[i] = buf[off++] === 1\n }\n\n // 2) totalCount (uint16)\n const totalCount = Number(readBigIntBE(buf, off, 2))\n off += 2\n\n const balances: ListaBalanceInfo[] = []\n\n // 3) balance records\n for (let i = 0; i < totalCount; i++) {\n const index = Number(readBigIntBE(buf, off, 2))\n off += 2\n\n const supplyShares = readBigIntBE(buf, off, WORD)\n off += WORD\n\n const borrowShares = readBigIntBE(buf, off, HALF)\n off += HALF\n\n const supplyAssets = readBigIntBE(buf, off, WORD)\n off += WORD\n\n const borrowAssets = readBigIntBE(buf, off, WORD)\n off += WORD\n\n const collateral = readBigIntBE(buf, off, HALF)\n off += HALF\n\n balances.push({\n index,\n supplyShares,\n borrowShares,\n supplyAssets,\n borrowAssets,\n collateral,\n })\n }\n console.log('whitelistFlags', whitelistFlags)\n console.log('balances', balances)\n return {\n whitelistFlags,\n balances,\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport { MorphoUserReserveResponse } from '../../../types/lenderTypes'\nimport { createBaseTypeUserState } from '../utils'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport {\n BalanceInfo,\n decodePackedListaUserDataset,\n decodePackedMorphoUserDataset,\n} from './decoder'\nimport { MorphoMarket } from '../../../types/lender/morpho-types'\nimport { isLista } from '../../../utils'\n\nconst CHUNK_SIZE = 100\n\nconst balanceData = {\n '0': {\n borrowDiscountedCollateral: 0,\n borrowDiscountedCollateralAllActive: 0,\n collateral: 0,\n deposits: 0,\n debt: 0,\n adjustedDebt: 0,\n nav: 0,\n deposits24h: 0,\n debt24h: 0,\n nav24h: 0,\n },\n}\n\n// aggregated apr data\nconst aprData = {\n '0': {\n apr: 0,\n borrowApr: 0,\n depositApr: 0,\n rewards: 0,\n rewardApr: 0,\n rewardDepositApr: 0,\n rewardBorrowApr: 0,\n stakingApr: 0,\n stakingDepositApr: 0,\n stakingBorrowApr: 0,\n },\n}\nconst userDataEmpty = (\n account: string,\n chainId: string,\n notWhitelisted = false,\n) => {\n return {\n account,\n chainId,\n balanceData,\n aprData,\n userConfigs: {\n '0': { selectedMode: 0, id: account, notWhitelisted },\n },\n }\n}\nexport const getMorphoTypeUserDataConverterWithlens = (\n lender: Lender,\n chainId: string,\n account: string,\n markets: string[],\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n) => {\n return !isLista(lender)\n ? getMorphoUserDataConverterWithlens(\n lender,\n chainId,\n account,\n markets,\n prices,\n pricesHist,\n lenderData,\n )\n : getListaUserDataConverterWithlens(\n lender,\n chainId,\n account,\n markets,\n prices,\n pricesHist,\n lenderData,\n )\n}\n\nexport const getMorphoUserDataConverterWithlens = (\n lender: Lender,\n chainId: string,\n account: string,\n markets: string[],\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [\n (data: any[]) => { [market: string]: MorphoUserReserveResponse } | undefined,\n number,\n] => {\n const expectedNumberOfCalls = Math.ceil(markets.length / CHUNK_SIZE)\n return [\n (data: any[]) => {\n // chunksizes depend on markets\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n // we map the index from the return data\n // to the real chunk\n // it is\n // (chunk number) * (chunksize = 100) + index\n function mapMarketToChunk(indexInChunk: number, chunkIndex: number) {\n return chunkIndex * CHUNK_SIZE + indexInChunk\n }\n\n let marketsHandled: string[] = []\n\n let datas: { [market: string]: MorphoUserReserveResponse } = {}\n\n // we loop over the return dat\n for (let i = 0; i < data.length; i++) {\n // get balance data array for chunk\n const balanceDatas = decodePackedMorphoUserDataset(data[i])\n // itereate of balanceDatas received in chunk\n balanceDatas.forEach((balanceData) => {\n // this will get the market by index\n const markeId = markets[mapMarketToChunk(balanceData.index, i)]\n\n marketsHandled.push(markeId)\n\n const market = lenderData[markeId]?.params?.market\n const { dataForMarket, addedDebt, addedDeposits } =\n createMorphoEntryFromMarketWithLens(\n balanceData,\n chainId,\n market,\n lenderData[markeId].data,\n prices,\n pricesHist,\n )\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': dataForMarket },\n rewards: {},\n userEMode: 0,\n }\n\n const userData = createBaseTypeUserState(\n payload,\n lenderData[markeId].data,\n addedDeposits,\n addedDebt,\n )\n\n datas[market.lender] = {\n ...payload,\n ...userData,\n id: market.id,\n }\n })\n }\n\n for (const marketId of markets) {\n const pubData = lenderData[marketId]\n if (marketsHandled.includes(marketId)) continue\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': {} },\n rewards: {},\n userEMode: 0,\n }\n\n const userData = userDataEmpty(account, chainId)\n // @ts-ignore\n datas[marketId] = {\n ...payload,\n ...userData,\n // @ts-ignore\n id: pubData?.params?.market.id,\n }\n }\n return datas\n },\n expectedNumberOfCalls,\n ]\n}\n\nexport const getListaUserDataConverterWithlens = (\n lender: Lender,\n chainId: string,\n account: string,\n markets: string[],\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [\n (data: any[]) => { [market: string]: MorphoUserReserveResponse } | undefined,\n number,\n] => {\n const expectedNumberOfCalls = Math.ceil(markets.length / CHUNK_SIZE)\n return [\n (data: any[]) => {\n // chunksizes depend on markets\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n // we map the index from the return data\n // to the real chunk\n // it is\n // (chunk number) * (chunksize = 100) + index\n function mapMarketToChunk(indexInChunk: number, chunkIndex: number) {\n return chunkIndex * CHUNK_SIZE + indexInChunk\n }\n\n let marketsHandled: string[] = []\n\n let datas: { [market: string]: MorphoUserReserveResponse } = {}\n let whitelistedFlags: { [market: string]: boolean } = {}\n\n // we loop over the return dat\n for (let i = 0; i < data.length; i++) {\n // get balance data array for chunk\n const { balances, whitelistFlags } = decodePackedListaUserDataset(\n data[i],\n markets.length,\n )\n whitelistFlags.forEach((flag, index) => {\n whitelistedFlags[markets[mapMarketToChunk(index, i)]] = flag\n })\n // itereate of balanceDatas received in chunk\n balances.forEach((balanceData) => {\n // this will get the market by index\n const markeId = markets[mapMarketToChunk(balanceData.index, i)]\n\n marketsHandled.push(markeId)\n\n const market = lenderData[markeId]?.params?.market\n const { dataForMarket, addedDebt, addedDeposits } =\n createMorphoEntryFromMarketWithLens(\n balanceData,\n chainId,\n market,\n lenderData[markeId].data,\n prices,\n pricesHist,\n )\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': dataForMarket },\n rewards: {},\n userEMode: 0,\n notWhitelisted: !whitelistedFlags[markeId],\n }\n\n const userData = createBaseTypeUserState(\n payload,\n lenderData[markeId].data,\n addedDeposits,\n addedDebt,\n )\n\n datas[market.lender] = {\n ...payload,\n ...userData,\n id: market.id,\n }\n })\n }\n\n for (const marketId of markets) {\n const pubData = lenderData[marketId]\n if (marketsHandled.includes(marketId)) continue\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': {} },\n rewards: {},\n userEMode: 0,\n notWhitelisted: !whitelistedFlags[marketId],\n }\n\n const userData = userDataEmpty(\n account,\n chainId,\n !whitelistedFlags[marketId],\n )\n // @ts-ignore\n datas[marketId] = {\n ...payload,\n ...userData,\n // @ts-ignore\n id: pubData?.params?.market.id,\n }\n }\n return datas\n },\n expectedNumberOfCalls,\n ]\n}\n\nfunction createMorphoEntryFromMarketWithLens(\n balanceInfo: BalanceInfo,\n chainId: string,\n market: MorphoMarket,\n lenderData: any,\n prices: any,\n pricesHist: any,\n) {\n const loanAddress = market.loanAddress.toLowerCase()\n const loanMeta = lenderData[loanAddress].asset\n\n const loanKey =\n toOracleKey(loanMeta?.assetGroup) ?? toGenericPriceKey(loanAddress, chainId)\n // prices\n const priceLoan = prices[loanKey] ?? 1\n const priceHistLoan = pricesHist?.[loanKey] ?? priceLoan\n // balances\n const deposits = balanceInfo.supplyAssets\n const borrow = balanceInfo.borrowAssets\n const collateral = balanceInfo.collateral\n // return early if there are zeros\n if (deposits === 0n && borrow === 0n && collateral === 0n)\n return {\n dataForMarket: {},\n addedDeposits: 0,\n addedDebt: 0,\n }\n\n const collateralAddress = market.collateralAddress.toLowerCase()\n\n const collateralAssetMeta = lenderData[collateralAddress].asset\n\n // loan asset deposits\n const loanDepositNumber = parseRawAmount(\n deposits.toString(),\n market.loanDecimals ?? loanMeta?.decimals ?? 18,\n )\n\n // collateral amount\n const decimals =\n market.collateralDecimals ?? collateralAssetMeta?.decimals ?? 18\n const collateralDec = parseRawAmount(collateral.toString(), decimals)\n\n // borrow asset balance\n const borrowDec = parseRawAmount(\n borrow.toString(),\n market.loanDecimals ?? loanMeta?.decimals ?? 18,\n )\n\n const dataForLoanAsset = {\n poolId: loanAddress,\n underlying: loanAddress,\n deposits: loanDepositNumber,\n depositsRaw: deposits.toString(),\n debtStable: '0',\n debt: borrowDec,\n depositsUSD: Number(loanDepositNumber) * priceLoan,\n debtStableUSD: 0,\n debtUSD: Number(borrowDec) * priceLoan,\n stableBorrowRate: '0',\n collateralEnabled: false,\n claimableRewards: 0,\n }\n\n const key =\n toOracleKey(collateralAssetMeta?.assetGroup) ??\n toGenericPriceKey(collateralAddress, chainId)\n // prices\n const price = prices[key] ?? 1\n const priceHist = pricesHist?.[key] ?? price\n\n const dataForCollateralAsset = {\n poolId: collateralAddress,\n underlying: collateralAddress,\n deposits: collateralDec,\n depositsRaw: balanceInfo.collateral.toString(),\n debtStable: '0',\n debt: '0',\n depositsUSD: Number(collateralDec) * price,\n debtStableUSD: 0,\n debtUSD: 0,\n stableBorrowRate: '0',\n collateralEnabled: true,\n claimableRewards: 0,\n }\n\n return {\n dataForMarket: {\n [loanAddress]: dataForLoanAsset,\n [collateralAddress]: dataForCollateralAsset,\n },\n addedDeposits:\n Number(loanDepositNumber) * priceHistLoan +\n Number(collateralDec) * priceHist,\n addedDebt: Number(borrowDec) * priceHistLoan,\n }\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { Call } from '../../../utils/multicall'\nimport {\n getCompoundV2CollateralTokens,\n getCompoundV2Comptroller,\n} from '../../addresses/compoundV2'\n\nexport const buildCompoundV2UserCall = (\n chainId: string,\n lender: Lender,\n account: string,\n assetsOverride?: string[],\n): Call[] => {\n const collateralTokens = getCompoundV2CollateralTokens(chainId, lender)\n const comptroller = getCompoundV2Comptroller(chainId, lender)\n let calls: Call[] = Object.values(collateralTokens).flatMap((tk) => [\n {\n address: tk,\n name: 'balanceOfUnderlying',\n params: [account],\n },\n {\n address: tk,\n name: 'borrowBalanceCurrent',\n params: [account],\n },\n ])\n\n calls = [\n ...calls,\n {\n address: comptroller!,\n name: 'getAssetsIn',\n params: [account],\n },\n ]\n\n return calls\n}\n","import { Lender } from '@1delta/lender-registry'\nimport { toGenericPriceKey, toOracleKey } from '../../../assets'\nimport { CompoundV2UserReserveResponse } from '../../../types/lenderTypes'\nimport { createBaseTypeUserState } from '../utils'\nimport { parseRawAmount } from '../../../utils/parsing'\nimport { GenericCurrency } from '../../../types'\nimport { getCompoundV2CollateralTokens } from '../../addresses/compoundV2'\n\nexport const getCompoundV2UserDataConverter = (\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [asset: string]: number },\n pricesHist: { [asset: string]: number },\n lenderData: any,\n): [(data: any[]) => CompoundV2UserReserveResponse | undefined, number] => {\n switch (lender) {\n default: {\n const assetsToQuery = Object.keys(lenderData)\n const vTokens = getCompoundV2CollateralTokens(chainId, lender)\n const expectedNumberOfCalls = assetsToQuery.length * 2 + 1\n return [\n (data: any[]) => {\n if (data.length !== expectedNumberOfCalls) {\n return undefined\n }\n\n const lendingPositions: { [asset: string]: any } = {}\n let totalDebt24h = 0\n let totalDeposits24h = 0\n const asstsIn = data[data.length - 1].map((a: any) => a.toLowerCase())\n for (let i = 0; i < assetsToQuery.length; i++) {\n const asset = assetsToQuery[i]\n const { dataForAsset, addedDebt, addedDeposits } =\n createCompoundV2Entry(\n i,\n data,\n asstsIn,\n vTokens[asset],\n lenderData[asset].asset,\n prices,\n pricesHist,\n 0,\n )\n if (!dataForAsset) continue\n totalDebt24h += addedDebt\n totalDeposits24h += addedDeposits\n lendingPositions[asset] = dataForAsset\n }\n\n const payload = {\n chainId,\n account,\n lendingPositions: { '0': lendingPositions },\n rewards: {},\n }\n const userData = createBaseTypeUserState(\n payload,\n lenderData,\n totalDeposits24h,\n totalDebt24h,\n )\n return {\n ...payload,\n ...userData,\n }\n },\n expectedNumberOfCalls,\n ]\n }\n }\n}\n\nfunction createCompoundV2Entry(\n i: number,\n data: any[],\n assetsIn: string[],\n vToken: string,\n asset: GenericCurrency,\n prices: any,\n pricesHist: any,\n claimableRewards: any,\n) {\n const depositsRaw = data[2 * i].toString()\n const borrowsRaw = data[2 * i + 1].toString()\n\n const collateralEnabled = Boolean(assetsIn?.includes(vToken))\n\n // skip zeros AND disabled collaterals\n if (!collateralEnabled && depositsRaw === '0' && borrowsRaw === '0') {\n return {\n dataForAsset: undefined,\n addedDeposits: 0,\n addedDebt: 0,\n }\n }\n\n const assetMeta = asset\n const decimals = assetMeta?.decimals ?? 18\n const currentATokenBalance = Number(parseRawAmount(depositsRaw, decimals))\n const currentVariableDebt = Number(parseRawAmount(borrowsRaw, decimals))\n\n const key =\n toOracleKey(assetMeta?.assetGroup) ??\n toGenericPriceKey(asset.address, asset.chainId)\n const price = prices[key] ?? 1\n const priceHist = pricesHist?.[key] ?? price\n\n const dataForAsset = {\n poolId: asset.address,\n underlying: asset.address,\n deposits: currentATokenBalance,\n depositsRaw,\n debtStable: 0,\n debt: currentVariableDebt,\n depositsUSD: currentATokenBalance * price,\n debtStableUSD: 0,\n debtUSD: currentVariableDebt * price,\n collateralEnabled,\n claimableRewards,\n }\n\n return {\n dataForAsset,\n addedDeposits: currentATokenBalance * priceHist,\n addedDebt: currentVariableDebt * priceHist,\n }\n}\n","import { toGenericPriceKey, toOracleKey } from '../assets'\nimport { GenericCurrency, LenderData, PoolData } from '../types'\n\nexport interface ExposureInfo {\n asset: GenericCurrency\n collateralFactor: number\n}\n\n// ---- flattened type\nexport type PoolWithMeta = PoolData & {\n chainId: string\n lender: string\n utilitzation: number\n apr: number\n exposure: ExposureInfo[]\n /** current price (if found) */\n price?: number\n /** past price (if found) */\n histPrice?: number\n}\n\ntype PriceMap = Record<string, number>\n\nfunction resolvePrice(\n map: PriceMap | undefined,\n key: string | undefined,\n fallbackKey?: string,\n): number | undefined {\n if (!map) return undefined\n if (key != null && map[key] != null) return map[key]\n if (fallbackKey != null && map[fallbackKey] != null) return map[fallbackKey]\n return undefined\n}\n\nfunction getPriceKey(asset: GenericCurrency): [string, string] {\n const assetGroup = asset?.assetGroup\n return [\n assetGroup,\n toOracleKey(assetGroup) ??\n toGenericPriceKey(asset?.address, asset?.chainId),\n ]\n}\n\n/**\n * Flattens LenderData and enriches each pool with exposure information.\n */\nexport const generateLendingPools = (\n lenderData: LenderData,\n prices: PriceMap,\n histPrices: PriceMap,\n): PoolWithMeta[] => {\n // 1) First, reuse the earlier logic to flatten and group by market\n const flat: (PoolData & { chainId: string; lender: string })[] = []\n\n for (const [chainId, chain] of Object.entries(lenderData)) {\n for (const [lender, lenderEntry] of Object.entries(chain.data)) {\n for (const pool of Object.values(lenderEntry.data)) {\n flat.push({ ...pool, chainId, lender })\n }\n }\n }\n\n const byMarket = new Map<string, PoolWithMeta[]>()\n for (const pool of flat) {\n const key = `${pool.chainId}:${pool.lender}`\n if (!byMarket.has(key)) byMarket.set(key, [])\n byMarket.get(key)!.push({\n ...pool,\n apr: pool.depositRate + (pool.stakingYield ?? 0),\n utilitzation:\n (Number(pool.totalDebt) + Number(pool.totalDebtStable ?? 0)) /\n Number(pool.totalDeposits),\n exposure: [],\n })\n }\n\n // 2) Compute exposures within each (chainId,lender) market\n for (const group of byMarket.values()) {\n for (const collateralPool of group) {\n // all configs for the collateral asset where it's allowed as collateral\n const collateralConfigs = Object.values(\n collateralPool.config ?? {},\n ).filter((cfg) => cfg && cfg.collateralDisabled !== true)\n if (!collateralConfigs.length) continue\n\n const exposuresByPoolId = new Map<string, ExposureInfo>()\n\n for (const borrowPool of group) {\n // don't expose a pool to itself\n if (borrowPool.poolId === collateralPool.poolId) continue\n\n for (const collateralCfg of collateralConfigs) {\n const cat = collateralCfg.category\n const borrowCfg = borrowPool.config?.[cat]\n if (!borrowCfg || borrowCfg.debtDisabled === true) continue\n\n const candidate = borrowCfg.collateralFactor\n\n const existing = exposuresByPoolId.get(borrowPool.poolId)\n if (!existing || candidate > existing.collateralFactor) {\n exposuresByPoolId.set(borrowPool.poolId, {\n asset: borrowPool.asset,\n collateralFactor: candidate,\n })\n }\n }\n }\n\n collateralPool.exposure = Array.from(exposuresByPoolId.values())\n }\n }\n\n // 3) Attach price + histPrice for each pool using getPriceKey(asset)\n for (const group of byMarket.values()) {\n for (const pool of group) {\n const [assetGroup, key] = getPriceKey(pool.asset) ?? [\n undefined,\n undefined,\n ]\n pool.price = resolvePrice(prices, key, assetGroup)\n pool.histPrice = resolvePrice(histPrices, key, assetGroup)\n }\n }\n\n return Array.from(byMarket.values()).flat()\n}\n","import { LenderData, PoolData } from '../types'\nimport { PoolWithMeta } from './computeLendingPools'\n\n/**\n * Rebuilds the original nested LenderData structure from a flattened array of PoolWithMeta.\n *\n * - Groups by chainId -> lender -> poolId\n * - Removes flattened-only fields: chainId, lender, exposure, price, histPrice, utilitzation\n */\nexport function unflattenLenderData(pools: PoolWithMeta[]): LenderData {\n const result: LenderData = {}\n\n for (const pool of pools) {\n const { chainId, lender, poolId, ...rest } = pool\n\n // Ensure nested objects exist\n if (!result[chainId]) {\n result[chainId] = { data: {}, lastFetched: Date.now() }\n }\n if (!result[chainId].data[lender]) {\n result[chainId].data[lender] = {\n data: {},\n eModes: {},\n chainId: String(chainId),\n }\n }\n\n // Strip flattened-only fields\n const {\n exposure,\n price,\n histPrice,\n utilitzation,\n chainId: _c,\n lender: _l,\n ...poolData\n } = rest as any\n\n // Add pool back\n result[chainId].data[lender].data[poolId] = poolData as PoolData\n }\n\n return result\n}\n","import {\n Call,\n MULTICALL_DEFAULT_BATCH_SIZE,\n multicallViemAbiArray,\n} from '../../utils/multicall'\nimport { Lender } from '@1delta/lender-registry'\nimport {\n isAaveV2Type,\n isAaveV3Type,\n isCompoundV3Type,\n isInit,\n isMorphoType,\n isMultiMarket,\n isYLDR,\n} from '../../utils'\nimport { LenderUserQuery, organizeUserQueries } from '../../types/lenderTypes'\nimport { GetEvmClientFunction, LenderData } from '../../types'\nimport { buildAaveV2UserCall } from './aave-v2-type/userCallBuild'\nimport { buildAaveV3UserCall } from './aave-v3-type/userCallBuild'\nimport { buildInitUserCall } from './init/userCallBuild'\nimport { buildCompoundV3UserCall } from './compound-v3/userCallBuild'\nimport { getAbi } from './abis'\nimport { getAaveV2UserDataConverter } from './aave-v2-type/userCallParse'\nimport { getAaveV3UserDataConverter } from './aave-v3-type/userCallParse'\nimport { getInitUserDataConverter } from './init/userCallParse'\nimport { getCompoundV3UserDataConverter } from './compound-v3/userCallParse'\nimport { getYldrUserDataConverter } from './aave-v3-type/userCallParseYldr'\nimport { buildMorphoTypeUserCallWithLens } from './morpho/userCallBuild'\nimport { getMorphoTypeUserDataConverterWithlens } from './morpho/userCallParse'\nimport {\n buildCompoundV2UserCall,\n getCompoundV2UserDataConverter,\n} from './compound-v2'\nimport { PoolWithMeta, unflattenLenderData } from '../../lending-pools'\nimport { getEvmClientUniversal } from '@1delta/providers'\n\nfunction buildUserCall(\n chainId: string,\n lender: Lender,\n account: string,\n params?: any,\n assets?: any[],\n) {\n if (isAaveV2Type(lender))\n return buildAaveV2UserCall(chainId, lender, account, assets)\n if (isAaveV3Type(lender))\n return buildAaveV3UserCall(chainId, lender, account, assets)\n if (isInit(lender)) return buildInitUserCall(chainId, lender, account)\n if (isMorphoType(lender))\n return buildMorphoTypeUserCallWithLens(chainId, account, lender, params)\n if (isCompoundV3Type(lender))\n return buildCompoundV3UserCall(chainId, lender, account, assets)\n // compound V2\n return buildCompoundV2UserCall(chainId, lender, account, assets)\n}\n\nfunction getUserDataConverter(\n lender: Lender,\n chainId: string,\n account: string,\n prices: { [a: string]: number },\n pricesHist: { [a: string]: number },\n lenderPublicState: any,\n params?: any,\n) {\n if (isYLDR(lender))\n return getYldrUserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n if (isAaveV2Type(lender))\n return getAaveV2UserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n if (isAaveV3Type(lender))\n return getAaveV3UserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n if (isInit(lender))\n return getInitUserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n if (isMorphoType(lender))\n return getMorphoTypeUserDataConverterWithlens(\n lender,\n chainId,\n account,\n params,\n prices,\n pricesHist,\n lenderPublicState?.data,\n )\n if (isCompoundV3Type(lender))\n return getCompoundV3UserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n\n return getCompoundV2UserDataConverter(\n lender,\n chainId,\n account,\n prices,\n pricesHist,\n lenderPublicState?.data?.[lender]?.data,\n )\n}\n\n/**\n * Builds the multicall calls for the given queries and returns the raw results\n * @param chainId - The chain ID\n * @param queries - The queries to fetch data for\n * @param getEvmClient - Injected function to get EVM client\n * @param allowFailure - multicall can fail in single call, default is true - note that this might mess with the retries as it will never error\n * @param batchSize - multicall batch size, default is 4096\n * @param logs - show multicall error logs, default is false\n * @param lenderData - optional public lender data to dynamically use pols and assets provided externally\n * @returns The raw results from the multicall, \"0x\" for failures\n */\nexport const getLenderUserDataResult = async (\n chainId: string,\n queriesRaw: LenderUserQuery[],\n getEvmClient: GetEvmClientFunction,\n allowFailure = true,\n batchSize = MULTICALL_DEFAULT_BATCH_SIZE,\n retries = 3,\n logs = false,\n): Promise<any[]> => {\n let calls: {\n call: Call\n abi: any\n }[] = []\n\n const queries = organizeUserQueries(queriesRaw)\n\n for (const query of queries) {\n const abi = getAbi(query.lender)\n const callData = buildUserCall(\n chainId,\n query.lender,\n query.account,\n query.params,\n query.assets,\n )\n const mappedCalls = callData.map((call) => ({ call, abi }))\n calls = [...calls, ...mappedCalls]\n }\n return await multicallViemAbiArray(\n chainId,\n calls.map((call) => call.abi),\n calls.map((call) => call.call),\n getEvmClient,\n true,\n 0,\n retries,\n allowFailure,\n batchSize,\n logs,\n )\n}\n\n/**\n * Converts the raw results into the desired format\n * @param chainId - The chain ID\n * @param queries - The queries to fetch data for\n * @param rawResults - The raw results from the multicall (getLenderUserDataResult)\n * @param prices - The prices for the assets\n * @param pricesHist - The historical prices for the assets\n * @param lenderState - The state of the lender\n * @returns The converted data\n */\nexport const convertLenderUserDataResult = (\n chainId: string,\n queriesRaw: LenderUserQuery[],\n rawResults: any[],\n prices: any,\n pricesHist: any,\n lenderState: any,\n): { [lender: string]: { [account: string]: BasicReserveResponse } } => {\n const queries = organizeUserQueries(queriesRaw)\n const lenderData: {\n [lender: string]: { [account: string]: BasicReserveResponse }\n } = {}\n let currentSlice = 0\n for (const query of queries) {\n const [converter, sliceLength] = getUserDataConverter(\n query.lender,\n chainId,\n query.account,\n prices,\n pricesHist,\n lenderState[chainId],\n query.params,\n )\n try {\n const data = rawResults.slice(currentSlice, currentSlice + sliceLength)\n const convertedData = converter(data)\n if (convertedData) {\n if (isMultiMarket(query.lender)) {\n Object.keys(convertedData).forEach((market) => {\n lenderData[market] = {\n ...lenderData[market],\n // @ts-ignore\n [query.account.toLowerCase()]: convertedData[market],\n }\n })\n } else {\n // map it to the user address\n // @ts-ignore\n lenderData[query.lender] = {\n ...lenderData[query.lender],\n [query.account.toLowerCase()]: convertedData,\n }\n }\n }\n } catch (e) {}\n currentSlice += sliceLength\n }\n return lenderData\n}\n\nexport interface ChainQuery {\n chainId: string\n providerOptions: ProviderOptions\n /** query details - if not provided, it will be populated with context vars */\n queries?: LenderUserQuery[]\n}\n\nexport interface ProviderOptions {\n getEvmClient?: GetEvmClientFunction\n allowFailure?: boolean\n batchSize?: number\n retries?: number\n logs?: boolean\n}\n\nexport interface BaseLendingPosition {\n // token amounts\n deposits: string\n debt: string\n debtStable: string\n // usd amounts\n depositsUSD: number\n debtUSD: number\n debtStableUSD: number\n\n collateralEnabled: boolean\n claimableRewards?: number\n}\n\nexport interface BalanceData {\n rewards?: any\n borrowDiscountedCollateral: number\n borrowDiscountedCollateralAllActive: number\n collateral: number\n collateralAllActive: number\n deposits: number\n debt: number\n adjustedDebt: number\n nav: number\n deposits24h: number\n debt24h: number\n nav24h: number\n}\n\nexport interface AprData {\n apr: number\n borrowApr: number\n depositApr: number\n rewards: any\n rewardApr: number\n rewardDepositApr: number\n rewardBorrowApr: number\n stakingApr: number\n stakingDepositApr: number\n stakingBorrowApr: number\n}\n\n/** Sinlge market config */\nexport interface UserConfig {\n selectedMode: number\n id: string\n /** if defined and false, the user cannot interact\n * with the market unless whitelisted */\n isWhitelisted?: boolean\n}\n\nexport interface BasicReserveResponse {\n chainId: string\n account: string\n /** Single asset positions within a lender */\n lendingPositions: {\n [id: string]: {\n [poolId: string]: BaseLendingPosition\n }\n }\n /** Totals for account in lender */\n balanceData: { [id: string]: BalanceData }\n /** Apr summary for lender in account */\n aprData: { [id: string]: AprData }\n /** Configs per sub account - determines e.g. E-Modes */\n userConfigs: { [id: string]: UserConfig }\n /** Auxiliary rewards data */\n rewards?: any\n}\n\nconst DEFAULT_OPTIONS: Partial<ProviderOptions> = {\n allowFailure: true,\n batchSize: MULTICALL_DEFAULT_BATCH_SIZE,\n retries: 3,\n logs: false,\n}\n\n/**\n * Fetch structured lender balance set for addresses\n * @param account general account as override in queries\n * @param chainQueries chain quieres -can only be {chainId} array, account required then\n * @param providerOptions provider opions\n * @param prices optional prices\n * @param pricesHist optional historical prices\n * @param lenderState lender state data for rates\n * @returns lender user data map\n */\nexport async function getLenderUserDataMulti(\n account: string | undefined,\n chainQueries: ChainQuery[],\n prices: { [key: string]: number } = {},\n pricesHist: { [key: string]: number } = {},\n lenderState: LenderData | PoolWithMeta[],\n): Promise<{\n [chainId: string]: {\n [lender: string]: {\n [account: string]: BasicReserveResponse\n }\n }\n}> {\n // unflatten the data if needed\n const parsedLenderState = Array.isArray(lenderState)\n ? unflattenLenderData(lenderState)\n : lenderState\n\n // clean inputs\n const cleanChainQueries = chainQueries.map(\n ({ chainId, queries, providerOptions }) => {\n // clean option\n const safeProviderOptions = {\n ...DEFAULT_OPTIONS,\n // override via the package\n getEvmClient: (chain: string, rpcId: number | undefined) =>\n getEvmClientUniversal({ chain, rpcId: rpcId! }),\n ...providerOptions,\n }\n // provide lender queries - if none provided, use all\n if (!queries || queries?.every((q) => !q.lender)) {\n const lenders = Object.keys(parsedLenderState[chainId].data)\n queries = lenders.map((lender) => ({ account: account!, lender }))\n }\n\n return {\n queries,\n providerOptions: safeProviderOptions,\n chainId,\n }\n },\n )\n\n const promises = cleanChainQueries.map(\n async ({ chainId, queries, providerOptions }) => {\n return await getLenderUserDataResult(\n chainId,\n queries,\n providerOptions.getEvmClient,\n providerOptions.allowFailure,\n providerOptions.batchSize,\n providerOptions.retries,\n providerOptions.logs,\n )\n },\n )\n\n const data = await Promise.all(promises)\n\n const returndata: {\n [chainId: string]: {\n [lender: string]: { [account: string]: BasicReserveResponse }\n }\n } = {}\n\n cleanChainQueries.forEach(({ chainId, queries, providerOptions }, i) => {\n try {\n const dataForChain = convertLenderUserDataResult(\n chainId,\n queries,\n data[i],\n prices,\n pricesHist,\n parsedLenderState,\n )\n returndata[chainId] = dataForChain\n } catch (e) {\n if (providerOptions.logs) {\n console.warn('error parsing for ' + chainId, e)\n }\n }\n })\n\n return returndata\n}\n","import { initializeChainData, initializeLenderData } from '@1delta/data-sdk'\n\nconst baseUrl =\n 'https://raw.githubusercontent.com/1delta-DAO/lender-metadata/main'\nconst aavePools = baseUrl + '/config/aave-pools.json'\nconst aaveOracles = baseUrl + '/data/aave-oracles.json'\nconst morphoTypeOracles = baseUrl + '/data/morpho-type-oracles.json'\nconst compoundV2Pools = baseUrl + '/config/compound-v2-pools.json'\nconst compoundV3Pools = baseUrl + '/config/compound-v3-pools.json'\n// const initPools = baseUrl + '/config/init-pools.json'\nconst morphoPools = baseUrl + '/config/morpho-pools.json'\nconst morphoTypeMarkets = baseUrl + '/config/morpho-type-markets.json'\n\nconst aaveReserves = baseUrl + '/data/aave-reserves.json'\nconst compoundV2Reserves = baseUrl + '/data/compound-v2-reserves.json'\nconst compoundV3Reserves = baseUrl + '/data/compound-v3-reserves.json'\nconst initConfig = baseUrl + '/data/init-config.json'\nconst aaveTokens = baseUrl + '/data/aave-tokens.json'\nconst compoundV2CTokens = baseUrl + '/data/compound-v2-c-tokens.json'\nconst compoundV3Base = baseUrl + '/data/compound-v3-base-data.json'\nconst baseUrlChains = 'https://raw.githubusercontent.com/1delta-DAO/chains/main'\n\nconst chains = baseUrlChains + '/data.json'\n\nexport function inititalizeAllData(params: any) {\n const { chainsOverride, ...lenderOverrides } = params\n\n initializeLenderData(lenderOverrides)\n\n initializeChainData({ chainsOverride })\n}\n\nexport async function fetchLenderMetaFromDirAndInitialize() {\n const {\n aavePoolsOverride,\n compoundV2PoolsOverride,\n compoundV3PoolsOverride,\n // initPoolsOverride,\n morphoPoolsOverride,\n aaveReservesOverride,\n compoundV2ReservesOverride,\n compoundV3ReservesOverride,\n initConfigOverride,\n aaveTokensOverride,\n compoundV2TokensOverride,\n compoundV3BaseDataOverride,\n aaveOraclesOverride,\n morphoTypeOraclesOverride,\n morphoTypeMarketsOverride,\n chainsOverride,\n } = await fetchLenderMetaFromDir()\n\n initializeLenderData({\n aaveTokensOverride,\n aavePoolsOverride,\n compoundV3PoolsOverride,\n compoundV3BaseDataOverride,\n morphoPoolsOverride,\n compoundV2TokensOverride,\n compoundV2PoolsOverride,\n initConfigOverride,\n aaveReservesOverride,\n compoundV3ReservesOverride,\n compoundV2ReservesOverride,\n aaveOraclesOverride,\n morphoTypeOraclesOverride,\n morphoTypeMarketsOverride,\n })\n\n initializeChainData({ chainsOverride })\n}\n\nexport async function fetchLenderMetaFromDir() {\n const promises = [\n aavePools,\n compoundV2Pools,\n compoundV3Pools,\n // initPools,\n morphoPools,\n aaveReserves,\n compoundV2Reserves,\n compoundV3Reserves,\n initConfig,\n aaveTokens,\n compoundV2CTokens,\n compoundV3Base,\n aaveOracles,\n morphoTypeOracles,\n morphoTypeMarkets,\n chains,\n ].map(async (a) => fetch(a).then(async (b) => await b.json()))\n\n const [\n aavePoolsOverride,\n compoundV2PoolsOverride,\n compoundV3PoolsOverride,\n // initPoolsOverride,\n morphoPoolsOverride,\n aaveReservesOverride,\n compoundV2ReservesOverride,\n compoundV3ReservesOverride,\n initConfigOverride,\n aaveTokensOverride,\n compoundV2TokensOverride,\n compoundV3BaseDataOverride,\n aaveOraclesOverride,\n morphoTypeOraclesOverride,\n morphoTypeMarketsOverride,\n chainsOverride,\n ] = await Promise.all(promises)\n\n return {\n aavePoolsOverride,\n compoundV2PoolsOverride,\n compoundV3PoolsOverride,\n // initPoolsOverride,\n morphoPoolsOverride,\n aaveReservesOverride,\n compoundV2ReservesOverride,\n compoundV3ReservesOverride,\n initConfigOverride,\n aaveTokensOverride,\n compoundV2TokensOverride,\n compoundV3BaseDataOverride,\n aaveOraclesOverride,\n morphoTypeOraclesOverride,\n morphoTypeMarketsOverride,\n chainsOverride,\n }\n}\n","import { Chain } from '@1delta/chain-registry'\n\nexport interface LiquidityThresholds {\n /** Minimum total deposits in USD */\n minDepositsUSD: number\n /** Minimum total debt/borrows in USD */\n minDebtUSD: number\n /** Minimum total liquidity in USD */\n minLiquidityUSD: number\n}\n\nexport const DEFAULT_LIQUIDITY_THRESHOLDS: LiquidityThresholds = {\n minDepositsUSD: 25_000,\n minDebtUSD: 10_000,\n minLiquidityUSD: 15_000,\n}\n\nexport const ASSET_GROUP_LIQUIDITY_THRESHOLDS: {\n [assetGroup: string]: LiquidityThresholds\n} = {\n USDC: {\n minDepositsUSD: 25_000,\n minDebtUSD: 5_000,\n minLiquidityUSD: 15_000,\n },\n}\n\nexport const CHAIN_THRESHOLD_MULTIPLIERS: { [chainId: string]: number } = {\n [Chain.POLYGON_MAINNET]: 1.0,\n [Chain.ARBITRUM_ONE]: 1.0,\n [Chain.OP_MAINNET]: 1.0,\n [Chain.BASE]: 1.0,\n [Chain.MANTLE]: 0.8,\n [Chain.LINEA]: 0.8,\n [Chain.ZKSYNC_MAINNET]: 0.8,\n [Chain.SCROLL]: 0.8,\n [Chain.TAIKO_ALETHIA]: 0.6,\n [Chain.HEMI_NETWORK]: 0.6,\n}\n\n/**\n * Asset based overrides (per chain)\n * assetKey format: \"chainId-assetAddress\" (lowercase)\n */\nexport const ASSET_SPECIFIC_THRESHOLDS: {\n [assetKey: string]: LiquidityThresholds\n} = {}\n\nexport function getLiquidityThresholds(\n chainId: string,\n assetAddress: string,\n assetGroup?: string,\n): LiquidityThresholds {\n // Check for asset overrides\n const assetKey = `${chainId}-${assetAddress.toLowerCase()}`\n if (ASSET_SPECIFIC_THRESHOLDS[assetKey]) {\n return ASSET_SPECIFIC_THRESHOLDS[assetKey]\n }\n\n let baseThresholds =\n assetGroup && ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]\n ? ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]\n : DEFAULT_LIQUIDITY_THRESHOLDS\n\n const chainMultiplier = CHAIN_THRESHOLD_MULTIPLIERS[chainId] ?? 1.0\n\n return {\n minDepositsUSD: Math.floor(baseThresholds.minDepositsUSD * chainMultiplier),\n minDebtUSD: Math.floor(baseThresholds.minDebtUSD * chainMultiplier),\n minLiquidityUSD: Math.floor(\n baseThresholds.minLiquidityUSD * chainMultiplier,\n ),\n }\n}\n\nexport function meetsLiquidityThresholds(\n pool: {\n totalDepositsUSD: number\n totalDebtUSD: number\n totalLiquidityUSD: number\n },\n thresholds: LiquidityThresholds,\n): boolean {\n return (\n pool.totalDepositsUSD >= thresholds.minDepositsUSD &&\n pool.totalDebtUSD >= thresholds.minDebtUSD &&\n pool.totalLiquidityUSD >= thresholds.minLiquidityUSD\n )\n}\n\nexport function meetsLiquidityThresholdsLong(\n pool: {\n totalDepositsUSD: number\n totalDebtUSD: number\n totalLiquidityUSD: number\n },\n thresholds: LiquidityThresholds,\n): boolean {\n return pool.totalDepositsUSD >= thresholds.minDepositsUSD\n}\n\nexport function meetsLiquidityThresholdsShort(\n pool: {\n totalDepositsUSD: number\n totalDebtUSD: number\n totalLiquidityUSD: number\n },\n thresholds: LiquidityThresholds,\n): boolean {\n return (\n pool.totalDebtUSD >= thresholds.minDebtUSD &&\n pool.totalLiquidityUSD >= thresholds.minLiquidityUSD\n )\n}\n","import { toGenericPriceKey, toOracleKey } from '../assets'\nimport {\n getLiquidityThresholds,\n meetsLiquidityThresholdsLong,\n meetsLiquidityThresholdsShort,\n} from '../assets/liquidityThresholds'\nimport { ConfigEntry, LenderConfigMap, LenderData, PoolData } from '../types'\nimport { GenericCurrency } from '../types/general'\nimport { isAaveV32Type, isAaveV3Type, isInit, isMorphoType } from '../utils'\n\ninterface SimpleAssetInfo {\n asset: GenericCurrency\n poolId: string\n}\n\nexport interface LendingPair {\n // lender info\n chainId: string\n lender: string\n // asset addresses\n assetLong: string\n assetShort: string\n\n /** Full asset info */\n infoLong: SimpleAssetInfo\n infoShort: SimpleAssetInfo\n\n // asset group for long asset\n assetGroupLong: string\n // asset group for short asset\n assetGroupShort: string\n // pair prices\n price: number\n price24h: number\n priceChange: number\n\n // pair props\n maxLeverage: number\n apr: number\n baseApr: number\n rewardApr: number\n tags?: string[]\n eMode?: number\n\n // liquidity data\n longTotalDepositsUSD: number\n longTotalDebtUSD: number\n longTotalLiquidityUSD: number\n shortTotalDepositsUSD: number\n shortTotalDebtUSD: number\n shortTotalLiquidityUSD: number\n\n // status flags\n longIsActive: boolean\n longIsFrozen: boolean\n shortIsActive: boolean\n shortIsFrozen: boolean\n shortBorrowingEnabled: boolean\n}\n\nfunction findMaxBorrowCollateralFactorRatio(\n lender: string,\n configsIn: LenderConfigMap,\n configsOut: LenderConfigMap,\n): { modeId: number; eModeCategory: number } {\n let maxRatio = -Infinity\n let result = { modeId: 0, eModeCategory: 0 }\n for (const modeIdStr of Object.keys(configsIn)) {\n const modeId = Number(modeIdStr)\n\n const dataIn = configsIn[modeId]\n const dataOut = configsOut[modeId]\n\n if (\n dataIn.debtDisabled ||\n (isAaveV32Type(lender) && dataOut.collateralDisabled)\n ) {\n continue // skip if one side is missing\n }\n\n // Avoid division by zero\n if (dataOut.borrowFactor === 0) {\n continue\n }\n\n const ratio = dataIn.borrowCollateralFactor / dataOut.borrowFactor\n if (ratio > maxRatio) {\n maxRatio = ratio\n result = {\n modeId,\n eModeCategory: dataIn.category, // category comes from LenderConfigData\n }\n }\n }\n\n return result\n}\n\nconst isEMode = (lender: string, longData: PoolData, shortData: PoolData) =>\n findMaxBorrowCollateralFactorRatio(\n lender,\n shortData?.config ?? {},\n longData?.config ?? {},\n )\n\nconst intersection = <T>(a0: T[], a1: T[]): T[] => {\n return a0.filter((a) => a1.includes(a))\n}\nconst LENDER_MODE_NO_MODE = 0\n\n// calculate the maximum leverage for a given pair\nconst getMaxLeverage = (\n lender: string,\n longData: PoolData,\n shortData: PoolData,\n) => {\n // for Aave V3 we check for eModes\n if (isAaveV3Type(lender)) {\n const emode = isEMode(lender, longData, shortData).modeId\n const cf =\n longData.config[emode ?? LENDER_MODE_NO_MODE]?.borrowCollateralFactor\n return 1 / (1 - cf)\n }\n // for init, we match the modes and find the one with the highest collatearal factor\n if (isInit(lender)) {\n const modeIntersect = intersection(\n Object.values(longData.config).map((c: ConfigEntry) => c.category),\n Object.values(shortData.config).map((c: ConfigEntry) => c.category),\n )\n\n if (modeIntersect.length === 0) return 1\n const configId = Object.values(longData.config)\n .filter((c: ConfigEntry) => modeIntersect.includes(c.category))\n .sort((c: ConfigEntry, d: ConfigEntry) =>\n c.borrowCollateralFactor < d.borrowCollateralFactor ? 1 : -1,\n )[0].category\n\n // we have to use the adjusted formula with the borrowFactor here\n const cf = longData.config[configId]?.borrowCollateralFactor\n const bf = shortData.config[configId]?.borrowFactor\n return 1 / (1 - cf / bf)\n }\n // all other cases use the default mode no_mode without borrowFactor\n const cf =\n longData?.config?.[LENDER_MODE_NO_MODE]?.borrowCollateralFactor ?? 0.8\n return 1 / (1 - cf)\n}\n\n/** create array of pairs for given lender data */\nexport function generateLendingPairs(\n lenderData: LenderData,\n prices: { [k: string]: number },\n histPrices: { [k: string]: number },\n): LendingPair[] {\n const pairs: LendingPair[] = []\n\n for (const chainId in lenderData) {\n const chainEntry = lenderData[chainId]\n const lenderToData = chainEntry.data ?? chainEntry\n\n for (const lender in lenderToData) {\n const lenderEntry = lenderToData[lender]\n\n // protect agaist error data\n let pools: any[] = Object.values(\n lenderEntry?.data ?? lenderEntry ?? {},\n ).map((a: any) => (a?.data ? a.data : a))\n\n // sometimes error messages are included\n const hasErrorMessages = pools.some(\n (p: any) =>\n typeof p === 'string' &&\n (p.includes('No lenders available') || p.includes('Failed to fetch')),\n )\n\n if (hasErrorMessages) continue\n\n // cast to poolData\n const validPools: PoolData[] = pools.filter(\n (p: any) => typeof p === 'object' && p !== null,\n )\n const poolArray = validPools.filter((p) => !p?.isFrozen)\n\n // Loop through all ordered pairs of pools\n for (let i = 0; i < poolArray.length; i++) {\n for (let j = 0; j < poolArray.length; j++) {\n if (i === j) continue\n\n const long = poolArray[i]\n const short = poolArray[j]\n if (!short.borrowingEnabled) continue\n\n // Skip same asset pairs\n if (long.underlying === short.underlying) continue\n\n const maxDepositLeverage = getMaxLeverage(lender, long, short)\n\n // non-leveraged pair is pointless\n if (maxDepositLeverage < 1.05) continue\n\n const borrowLeverage = maxDepositLeverage - 1\n const depositLeverage = maxDepositLeverage\n let collateralRewards = 0\n let borrowRewards = 0\n const rewards: any = {}\n // get the rewards from the collateral\n for (const [rewardId, baseYields] of Object.entries(\n long.rewards ?? {},\n )) {\n collateralRewards += baseYields.depositRate\n if (baseYields.depositRate > 0)\n rewards[rewardId] = baseYields.depositRate * depositLeverage\n }\n // get the rewards from debt\n for (const [rewardId, baseYields] of Object.entries(\n short.rewards ?? {},\n )) {\n const borrowRate =\n baseYields.stableBorrowRate >= baseYields.variableBorrowRate\n ? baseYields.stableBorrowRate\n : baseYields.variableBorrowRate\n borrowRewards += borrowRate\n if (borrowRate != 0)\n rewards[rewardId] =\n (rewards[rewardId] ?? 0) + borrowRate * borrowLeverage\n }\n const depositApr = long.depositRate + long.stakingYield\n const borrowApr = short.variableBorrowRate + short.stakingYield\n\n const [assetGroupLong, keyLong] = getPriceKey(long.asset)\n const [assetGroupShort, keyShort] = getPriceKey(short.asset)\n const priceLong = prices[keyLong] ?? 0\n const priceShort = prices[keyShort] ?? 0\n\n const price24hLong = histPrices[keyLong] ?? priceLong\n const price24hShort = histPrices[keyShort] ?? priceShort\n\n const price = priceShort !== 0 ? priceLong / priceShort : 0\n const price24h =\n price24hShort !== 0 ? price24hLong / price24hShort : 0\n\n // only base apr\n const baseApr =\n depositApr * depositLeverage - borrowApr * borrowLeverage\n\n // only rewards apr\n const rewardApr =\n collateralRewards * depositLeverage + borrowRewards * borrowLeverage\n\n // total apr\n const totalApr = baseApr + rewardApr\n\n pairs.push({\n chainId,\n lender,\n assetLong: long.underlying,\n assetShort: short.underlying,\n infoLong: { poolId: long.poolId, asset: long.asset },\n infoShort: { poolId: short.poolId, asset: short.asset },\n price,\n price24h,\n assetGroupLong,\n assetGroupShort,\n priceChange: price24h === 0 ? 0 : (price - price24h) / price24h,\n maxLeverage: maxDepositLeverage,\n apr: totalApr,\n baseApr,\n rewardApr,\n eMode: long.eMode?.category ?? 0,\n longTotalDepositsUSD: long.totalDepositsUSD,\n longTotalDebtUSD: long.totalDebtUSD,\n // if the asset cannot be borrowed, liquidity is not a pparameter for longing\n longTotalLiquidityUSD: long.borrowingEnabled\n ? long.totalLiquidityUSD\n : 1e10,\n shortTotalDepositsUSD: short.totalDepositsUSD,\n shortTotalDebtUSD: short.totalDebtUSD,\n shortTotalLiquidityUSD: short.totalLiquidityUSD,\n longIsActive: long.isActive,\n longIsFrozen: long.isFrozen,\n shortIsActive: short.isActive,\n shortIsFrozen: short.isFrozen,\n shortBorrowingEnabled: short.borrowingEnabled,\n })\n }\n }\n }\n }\n\n return pairs\n}\n\nfunction getPriceKey(asset: GenericCurrency): [string, string] {\n const assetGroup = asset?.assetGroup\n return [\n assetGroup,\n toOracleKey(assetGroup) ??\n toGenericPriceKey(asset?.address, asset?.chainId),\n ]\n}\n\nconst MAX_ENTRIES = 10\n\nfunction filterPairsByCategory(\n pairs: LendingPair[],\n longFilter: (group: string) => boolean,\n shortFilter: (group: string) => boolean,\n): LendingPair[] {\n return pairs\n .filter((p) => {\n if (!longFilter(p.assetGroupLong) || !shortFilter(p.assetGroupShort)) {\n return false\n }\n\n if (\n p.assetGroupShort?.includes('PT-') ||\n p.assetGroupLong?.includes('PT-')\n ) {\n return false\n }\n\n if (\n !p.longIsActive ||\n p.longIsFrozen ||\n !p.shortIsActive ||\n p.shortIsFrozen\n ) {\n return false\n }\n\n if (!p.shortBorrowingEnabled) {\n return false\n }\n\n // apply liquidity thresholds\n const longThresholds = getLiquidityThresholds(\n p.chainId,\n p.assetLong,\n p.assetGroupLong,\n )\n const shortThresholds = getLiquidityThresholds(\n p.chainId,\n p.assetShort,\n p.assetGroupShort,\n )\n\n // note: morpho does not allow to borrow collateral\n // therefore, the collateral is always withdrawable if debt is repaid\n const longMeetsThresholds =\n isMorphoType(p.lender) ||\n meetsLiquidityThresholdsLong(\n {\n totalDepositsUSD: p.longTotalDepositsUSD,\n totalDebtUSD: p.longTotalDebtUSD,\n totalLiquidityUSD: p.longTotalLiquidityUSD,\n },\n longThresholds,\n )\n\n const shortMeetsThresholds = meetsLiquidityThresholdsShort(\n {\n totalDepositsUSD: p.shortTotalDepositsUSD,\n totalDebtUSD: p.shortTotalDebtUSD,\n totalLiquidityUSD: p.shortTotalLiquidityUSD,\n },\n shortThresholds,\n )\n if (!longMeetsThresholds || !shortMeetsThresholds) {\n return false\n }\n\n return true\n })\n .sort((a, b) => b.baseApr - a.baseApr)\n .slice(0, MAX_ENTRIES)\n}\n\nexport function getTopPairs(pairs: LendingPair[]) {\n const stables = filterPairsByCategory(\n pairs,\n (group) => group?.includes('USD') ?? false,\n (group) => group?.includes('USD') ?? false,\n )\n\n const btcLst = filterPairsByCategory(\n pairs,\n (group) => group?.includes('BTC') ?? false,\n (group) => group?.includes('BTC') ?? false,\n )\n\n const ethLst = filterPairsByCategory(\n pairs,\n (group) => group?.includes('ETH') ?? false,\n (group) => group?.includes('ETH') ?? false,\n )\n\n return {\n stables,\n btcLst,\n ethLst,\n gainers: getDistinctPairsByShortAsset(pairs).slice(0, MAX_ENTRIES),\n }\n}\n\nfunction isStable(assetGroup: string): boolean {\n return assetGroup.includes('USD')\n}\n\nexport function getDistinctPairsByShortAsset(\n pairs: LendingPair[],\n): LendingPair[] {\n const qualityPairs = pairs.filter((p) => {\n if (!isFinite(p.apr) || !isFinite(p.priceChange)) {\n return false\n }\n\n if (\n !p.longIsActive ||\n p.longIsFrozen ||\n !p.shortIsActive ||\n p.shortIsFrozen\n ) {\n return false\n }\n\n if (!p.shortBorrowingEnabled) {\n return false\n }\n\n // Apply liquidity thresholds\n const longThresholds = getLiquidityThresholds(\n p.chainId,\n p.assetLong,\n p.assetGroupLong,\n )\n const shortThresholds = getLiquidityThresholds(\n p.chainId,\n p.assetShort,\n p.assetGroupShort,\n )\n\n const longMeetsThresholds = meetsLiquidityThresholdsLong(\n {\n totalDepositsUSD: p.longTotalDepositsUSD,\n totalDebtUSD: p.longTotalDebtUSD,\n totalLiquidityUSD: p.longTotalLiquidityUSD,\n },\n longThresholds,\n )\n\n const shortMeetsThresholds = meetsLiquidityThresholdsShort(\n {\n totalDepositsUSD: p.shortTotalDepositsUSD,\n totalDebtUSD: p.shortTotalDebtUSD,\n totalLiquidityUSD: p.shortTotalLiquidityUSD,\n },\n shortThresholds,\n )\n\n if (!longMeetsThresholds || !shortMeetsThresholds) {\n return false\n }\n\n if (\n p.assetGroupShort?.includes('PT-') ||\n p.assetGroupLong?.includes('PT-')\n ) {\n return false\n }\n\n return true\n })\n\n const sorted = [...qualityPairs].sort((a, b) => b.priceChange - a.priceChange)\n\n const blacklist = new Set<string>()\n const blacklistLong = new Set<string>()\n const result: LendingPair[] = []\n\n for (const pair of sorted) {\n const shortGroup = pair.assetGroupShort\n const longGroup = pair.assetGroupLong\n\n if (blacklist.has(shortGroup) || blacklistLong.has(longGroup)) continue\n\n result.push(pair)\n\n // Only blacklist if not a stablecoin\n if (!isStable(shortGroup)) {\n blacklist.add(shortGroup)\n }\n if (!isStable(longGroup)) {\n blacklistLong.add(longGroup)\n }\n if (result.length >= 10) return result\n }\n\n return result\n}\n","import { TokenList } from '../../types'\n\nconst PENDLE_API_BASE = 'https://api-v2.pendle.finance/core'\nconst MARKETS_ENDPOINT = `${PENDLE_API_BASE}/v1/markets/all`\nconst PRICES_ENDPOINT = (types: PendleAssetTypes[] | undefined) =>\n `${PENDLE_API_BASE}/v1/prices/assets${types ? `?type=${types.join(',')}` : ''}`\n\ntype PendleAssetTypes = 'PT' | 'YT' | 'SY' | 'PENDLE_LP'\n\ninterface PendleMarket {\n name: string\n address: string\n expiry: string\n pt: string\n yt: string\n sy: string\n underlyingAsset: string\n details: any\n isNew: boolean\n isPrime: boolean\n timestamp: string\n lpWrapper?: string\n categoryIds: string[]\n chainId: number\n}\n\ninterface PendleMarketsResponse {\n markets: PendleMarket[]\n}\n\ninterface PendlePricesResponse {\n prices: { [address: string]: number }\n total: number\n skip: number\n limit: number\n}\n\ninterface PendleMarketsByChain {\n [chainId: string]: PendleMarket[]\n}\n\nexport async function fetchPendleMarkets(): Promise<PendleMarketsByChain> {\n try {\n const response = await fetch(MARKETS_ENDPOINT)\n\n if (!response.ok) {\n throw new Error(`Failed to fetch all markets data: ${response.status}`)\n }\n\n const data: PendleMarketsResponse = await response.json()\n\n const marketsByChain: PendleMarketsByChain = {}\n\n if (data.markets) {\n for (const market of data.markets) {\n const chainId = market.chainId.toString()\n if (!marketsByChain[chainId]) {\n marketsByChain[chainId] = []\n }\n marketsByChain[chainId].push(market)\n }\n }\n\n return marketsByChain\n } catch (error) {\n console.error('Error fetching all markets data:', error)\n return {}\n }\n}\n\n/**\n * Fetch prices for a specific chain and token type\n */\nasync function fetchPendlePricesForAllChain(\n lists: { [chainId: string]: { list: TokenList } } = {},\n assetType: PendleAssetTypes[] = ['YT', 'PT'],\n): Promise<{\n [address: string]: number\n}> {\n try {\n const data = await fetchPendlePricesRaw(assetType)\n let prices: { [address: string]: number } = {}\n Object.entries(data).forEach(([key, val]) => {\n const [chainId, address] = key.split('-')\n const assetKey =\n lists[chainId]?.list?.[address.toLowerCase()]?.assetGroup ?? key\n prices[assetKey] = val\n })\n return prices\n } catch (error) {\n console.error(`Error fetching prices pendle prices:`, error)\n\n return {}\n }\n}\n\n/**\n * Fetch prices for a specific chain and token type\n */\nasync function fetchPendlePricesRaw(\n assetType: PendleAssetTypes[] = ['YT', 'PT'],\n): Promise<{\n [address: string]: number\n}> {\n try {\n const response = await fetch(PRICES_ENDPOINT(assetType))\n const data = (await response.json()) as PendlePricesResponse\n return data.prices\n } catch (error) {\n console.error(`Error fetching prices pendle prices:`, error)\n\n return {}\n }\n}\n/**\n * Extract relevant token addresses from markets data\n * Note: Seperating the chainId from address is not really required since we do the same when we return results\n * but it allows to extend the file later and use individual addresses (maybe), or we can simplify this\n */\nfunction extractTokenAddressesFromMarkets(markets: PendleMarket[]): {\n [chainId: string]: { pt: string[]; yt: string[]; sy: string[] }\n} {\n const tokensByChain: {\n [chainId: string]: { pt: string[]; yt: string[]; sy: string[] }\n } = {}\n\n markets.forEach((market) => {\n const chain = market.pt?.split('-')[0]\n\n if (chain && !tokensByChain[chain]) {\n tokensByChain[chain] = { pt: [], yt: [], sy: [] }\n }\n\n // Add token addresses to their respective chains\n if (market.pt && chain) {\n const address = market.pt.split('-')[1]\n if (address && !tokensByChain[chain].pt.includes(address)) {\n tokensByChain[chain].pt.push(address)\n }\n }\n\n if (market.yt && chain) {\n const address = market.yt.split('-')[1]\n if (address && !tokensByChain[chain].yt.includes(address)) {\n tokensByChain[chain].yt.push(address)\n }\n }\n\n if (market.sy && chain) {\n const address = market.sy.split('-')[1]\n if (address && !tokensByChain[chain].sy.includes(address)) {\n tokensByChain[chain].sy.push(address)\n }\n }\n })\n\n return tokensByChain\n}\n\n/**\n * Main function to fetch Pendle prices\n */\nexport async function fetchPendlePrices(\n lists: { [chainId: string]: { list: TokenList } } = {},\n assetType: PendleAssetTypes[] = ['YT', 'PT'],\n): Promise<{\n [address: string]: number\n}> {\n try {\n const marketsResponse = await fetchPendleMarkets()\n\n if (!Object.keys(marketsResponse).length) {\n return {}\n }\n\n const allPrices = await fetchPendlePricesForAllChain(lists, assetType) // fetch YT and PT prices per default\n return Object.fromEntries(\n Object.entries(allPrices).filter(([, price]) => !!price),\n )\n } catch (error) {\n console.error('Error in fetchPendlePrices:', error)\n return {}\n }\n}\n\n/**\n * Main function to fetch Pendle yields\n * Provide lists to map to asset groups\n * For all chains\n * Skips 0 APRs\n */\nexport async function fetchPendleYields(\n lists: { [chainId: string]: { list: TokenList } } = {},\n): Promise<{\n [address: string]: number\n}> {\n try {\n const marketsResponse = await fetchPendleMarkets()\n\n if (!Object.keys(marketsResponse).length) {\n return {}\n }\n\n const prices = await fetchPendlePricesRaw() // YT and PT\n let yields: any = {}\n const now = new Date()\n Object.entries(marketsResponse).forEach(([chain, dataArr]) => {\n dataArr.forEach((market) => {\n const ptPrice = prices[market.pt]\n const ytPrice = prices[market.yt]\n if (ytPrice && ytPrice > 0) {\n const yearFraction = yearFractionToExpiry(market.expiry, now)\n const apr = ((ytPrice / ptPrice) * 100) / yearFraction\n\n const [chainId, address] = market.pt.split('-')\n const assetKey =\n lists[chainId]?.list?.[address.toLowerCase()]?.assetGroup ??\n market.pt\n\n yields[assetKey] = apr\n }\n })\n })\n\n return yields\n } catch (error) {\n console.error('Error in fetchPendlePrices:', error)\n return {}\n }\n}\n\nfunction yearFractionToExpiry(expiryISO: string, now = new Date()): number {\n const expiry = new Date(expiryISO)\n\n // Difference in milliseconds\n const diffMs = expiry.getTime() - now.getTime()\n\n // Convert ms → days → years (approx 365.25 to account for leap years)\n const yearFraction = diffMs / (1000 * 60 * 60 * 24 * 365.25)\n\n return yearFraction\n}\n\n// // Example usage:\n// const expiry = '2025-12-25T00:00:00.000Z';\n// console.log(yearFractionToExpiry(expiry)); // e.g. 0.22 years\n","export type YearnVault = {\n address: string\n symbol: string\n name: string\n chainID: number\n token: {\n address: string\n name: string\n symbol: string\n description: string\n decimals: number\n }\n tvl: {\n totalAssets: string\n tvl: number\n price: number\n }\n apr: {\n type: string\n netAPR: number | null\n fees: {\n performance: number\n management: number\n }\n points: {\n weekAgo: number\n monthAgo: number\n inception: number\n }\n pricePerShare: {\n today: number\n weekAgo: number\n monthAgo: number\n }\n extra: {\n stakingRewardsAPR: number | null\n gammaRewardAPR: number | null\n katanaRewardsAPR: number | null\n katanaAppRewardsAPR: number | null\n FixedRateKatanaRewards: number | null\n katanaBonusAPY: number | null\n extrinsicYield: number | null\n katanaNativeYield: number | null\n }\n forwardAPR: {\n type: string\n netAPR: number | null\n composite: {\n boost: number | null\n poolAPY: number | null\n boostedAPR: number | null\n baseAPR: number | null\n cvxAPR: number | null\n rewardsAPR: number | null\n }\n }\n }\n strategies: {\n address: string\n name: string\n status: string\n netAPR?: number\n details: {\n totalDebt: string\n totalLoss: string\n totalGain: string\n performanceFee: number\n lastReport: number\n debtRatio?: number\n }\n }[]\n}\n\nexport const addressToAssetYearn: { [a: string]: string } = {\n '0xe007ca01894c863d7898045ed5a3b4abf0b18f37': 'vbETH yVault::yvvbETH',\n '0x80c34bd3a3569e126e7055831036aa7b212cb159': 'vbUSDC yVault::yvvbUSDC',\n '0x9a6bd7b6fd5c4f87eb66356441502fc7dcdd185b': 'vbUSDT yVault::yvvbUSDT',\n '0xaa0362ecc584b985056e47812931270b99c91f9d': 'vbWBTC yVault::yvvbWBTC',\n '0x93fec6639717b6215a48e5a72a162c50dcc40d68': 'vbAUSD yVault::yvvbAUSD',\n}\n","import { Chain } from '@1delta/chain-registry'\nimport { fetchPendleYields } from '../prices/pendle'\nimport { apyToAprPercent, apyToApr } from '../utils/parsing'\nimport { addressToAssetYearn, YearnVault } from './yieldTypes'\n\nconst hyUSD = 'High Yield USD Base::HYUSD'\nconst bsdETH = 'Based ETH::BSDETH'\n\nconst wstHype = 'Staked HYPE Shares::WSTHYPE'\nconst kHYPE = 'Kinetiq Staked HYPE::kHYPE'\nconst tETH = 'Treehouse ETH::TETH'\nconst osETH = 'StakeWise Staked ETH::OSETH'\n// const ethPlus = 'ETHPlus::ETH+'\nconst ethX = 'Stader ETHx::ETHx'\nconst pufEth = 'PUFETH'\nconst stUSD = 'Angle Staked USDA::stUSD'\nconst stEur = 'Angle Staked EURA::stEUR'\nconst sUsds = 'sUSDS::SUSDS'\nconst srUsd = 'Reservoir srUSD::SRUSD'\nconst wsrusd = 'Wrapped Savings rUSD::WSRUSD'\nconst yusd = 'YieldFi yUSD::yUSD'\nconst rlp = 'Resolv RLP::RLP'\nconst wstusr = 'Resolv wstUSR::WSTUSR'\nconst ethPlus = 'ETHPlus::ETH+'\nconst woEth = 'Wrapped OETH::WOETH'\nconst csusdl = 'Coinshift USDL Morpho Vault::CSUSDL'\nconst sfrxeth = 'Staked Frax Ether::sfrxETH'\nconst ceth = 'cETH::CETH'\nconst sfrax = 'Staked FRAX::SFRAX'\n// const sdeusd = 'Elixir Staked deUSD::SDEUSD'\nconst rsweth = 'Restaked Swell ETH::RSWETH'\nconst ynethx = 'ynETH MAX::YNETHX'\nconst usdZeroPlus = 'Staked USD0::USD0++'\nconst ethZero = 'ETH0::ETH0'\nconst usdThree = 'Web 3 Dollar::USD3'\nconst jitoSol = 'Jito Staked SOL::JitoSOL'\nconst thBill = 'Theo Short Duration US Treasury Fund::THBILL'\nconst ssuperusd = 'SuperReturn sSuperUSD::SSUPERUSD'\nconst hbhype = 'hyperbeat x ether.fi HYPE::beHYPE'\nconst hbuhype = 'Hyperbeat Ultra Hype::hbHYPE'\nconst hlp = 'Wrapped HLP::WHLP'\nconst yoeth = 'Yield Optimizer ETH::YOETH'\nconst yobtc = 'Yield Optimizer BTC::YOBTC'\nconst yousd = 'Yield Optimizer USD::YOUSD'\nconst yoeur = 'Yield Optimizer EUR::yoEUR'\nconst hwhlp = 'Hyperwave HLP::hwHLP'\nconst weeths = 'Super Symbiotic LRT::weETHs'\nconst gmx_eth_usd = 'GMX Market ETH/USD::GM [WETH-USDC]'\nconst gmx_btc_usd = 'GMX Market BTC/USD::GM [WBTC-USDC]'\nconst glv_wbtc_usdc = 'GMX Liquidity Vault [WBTC-USDC]::GLV [WBTC-USDC]'\nconst glv_weth_usdc = 'GMX Liquidity Vault [WETH-USDC]::GLV [WETH-USDC]'\n\nconst gmx_eth_usd_address = '0x70d95587d40a2caf56bd97485ab3eec10bee6336'\nconst gmx_btc_usd_address = '0x47c031236e19d024b42f8ae6780e44a573170703'\nconst glv_wbtc_usdc_address = '0xdf03eed325b82bc1d4db8b49c30ecc9e05104b96'\nconst glv_weth_usdc_address = '0x528a5bac7e746c9a509a1f4f6df58a03d44279f9'\n\nconst susdx = 'SUSDX'\n\nconst FeedData = {\n WSTETH: 'https://eth-api.lido.fi/v1/protocol/steth/apr/sma',\n STMATIC: 'https://polygon.lido.fi/api/stats',\n CBETH: 'https://api.exchange.coinbase.com/wrapped-assets/cbeth',\n MATICX: 'https://universe.staderlabs.com/polygon/apy',\n METH: 'https://meth.mantle.xyz/api/stats/apy',\n SUSDE:\n 'https://yields.llama.fi/poolsEnriched?pool=66985a81-9c51-46ca-9977-42b4fe7bc6df',\n EZETH: 'https://app.renzoprotocol.com/api/stats?chainId=1',\n RETH: 'https://api.rocketpool.net/api/mainnet/payload',\n WEETH: 'https://www.ether.fi/api/apr',\n WEETHS:\n 'https://api.sevenseas.capital/etherfi/ethereum/performance/0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88',\n SAVAX: 'https://api.benqi.fi/liquidstaking/apr',\n RSETH: 'https://universe.kelpdao.xyz/rseth/totalApy',\n TRUMATIC: 'https://api.trufin.io/staker/apy?staker=MATIC',\n RTOKENS: 'https://yields.reserve.org/pools',\n HYPE: 'https://api.hyperlend.finance/data/nativeApy',\n ETHX: 'https://universe.staderlabs.com/eth/apy',\n OSETH:\n 'https://graphs.stakewise.io/mainnet-a/subgraphs/name/stakewise/prod?opName=osTokenApy',\n PUFETH: 'https://api-v2.puffer.fi/backend-for-frontend/tvl/all',\n ANGLE: 'https://exporter.angle.money/v2/savingsApr',\n SUSDS: 'https://info-sky.blockanalitica.com/api/v1/overall/?format=json',\n SRUSD: 'https://app.reservoir.xyz/api/website',\n YUSD: 'https://ctrl.yield.fi/t/yusd/apy',\n RLP: 'https://api.resolv.xyz/apr/rlp/7d',\n WSTUSR: 'https://api.resolv.xyz/apr/staking/7d',\n MORPHO_VAULTS: 'https://blue-api.morpho.org/graphql',\n // SDEUSD: 'https://api-deusd-prod-public.elixir.xyz/public/deusd_apy',\n RSWETH: 'https://v3-lst.svc.swellnetwork.io/api/tokens/sweth/apr',\n YNETHX: 'https://gateway.yieldnest.finance/api/v1/graphql',\n USDZEROPLUS: 'https://app.usual.money/api/rewards/rates/USD0++',\n ETHZERO: 'https://app.usual.money/api/rewards/rates/ETH0',\n JITOSOL: 'https://www.jito.network/api/getJitoPoolStats/',\n THBILL: 'https://thbill-api.theo.xyz/snapshots',\n YEARN_KATANA: 'https://katana-apr-service.vercel.app/api/vaults',\n SSUPERUSD:\n 'https://www.superreturn.ai/api/trpc/cmc.getUSDCPrice,rewardBackend.getYield,rewardBackend.getTvlChange?batch=1&input=%7B%220%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%221%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%222%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%7D',\n HBHYPE:\n 'https://api.hyperbeat.org/api/v1/staking?address=0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b',\n HBUHYPE:\n 'https://app.hyperbeat.org/api/hyperfolio/vault-infos?vaultAddress=0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB',\n HLP: 'https://api-ui.hyperliquid.xyz/info',\n HWHLP: 'https://api.hyperwavefi.xyz/stats/latest?asset=hwhlp_999',\n YO: 'https://api.yo.xyz/api/v1/vault/stats',\n GMX: 'https://arbitrum-api.gmxinfra.io/apy?period=1d',\n SUSDX: 'https://app.usdx.money/v1/base/apyInfo',\n}\n\n// const LenderAPIs = {\n// MERIDIAN:\n// 'https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/lending_yields',\n// }\n\nfunction averageDataLastN<T extends { data: number }>(\n arr: readonly T[],\n n = 7,\n): number {\n const last = arr.slice(-n)\n if (last.length === 0) return 0\n return last.reduce((sum, x) => sum + x.data, 0) / last.length\n}\n\n// Converters from apy to apr and reversed\n\ninterface LenderAssetReward {\n deposit: number\n borrow: number\n additionalDepositData: any\n additionalBorrowData: any\n}\n\nexport interface YieldDataWithTimestamp {\n intrinsicYields: { [asset: string]: number | undefined }\n lenderRewards: {\n [chainId: number]: {\n [lender: string]: { [asset: string]: LenderAssetReward }\n }\n }\n}\n\nconst getListUrl = (chainId: string) =>\n `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`\n\nasync function getDeltaTokenList(chain: string) {\n const data = await fetch(getListUrl(chain))\n // @ts-ignore\n const list = (await data.json()).list as GenericTokenList\n return list\n}\n\nasync function getListsMulti(chainIds: string[]) {\n const ps = chainIds.map(async (chainId) => await getDeltaTokenList(chainId))\n const lists = await Promise.all(ps)\n let res: any = {}\n for (let i = 0; i < chainIds.length; i++) {\n const chainId = chainIds[i]\n res[chainId] = { list: lists[i] }\n }\n return res\n}\n\nconst safeFetch = async <T>(\n label: string,\n fn: () => Promise<T>,\n): Promise<T | undefined> => {\n try {\n return await fn()\n } catch (e) {\n console.error(`Error fetching ${label}:`, e)\n return undefined\n }\n}\n\nexport const fetchGeneralYields = async () => {\n const wstethPromise = safeFetch('WSTETH', async () => {\n const res = await fetch(FeedData.WSTETH).then((r) => r.json())\n return Number(res.data.aprs.at(-1).apr) * 0.9\n })\n\n const ezethPromise = safeFetch('EZETH', async () => {\n const res = await fetch(FeedData.EZETH).then((r) => r.json())\n return Number(res.data.apr.data.rate)\n })\n\n const rethPromise = safeFetch('RETH', async () => {\n const res = await fetch(FeedData.RETH).then((r) => r.json())\n return Number(res.rethAPR)\n })\n\n const weethPromise = safeFetch('WEETH', async () => {\n const wstethRes = await wstethPromise\n let aYield = 0\n try {\n const weethRes = await fetch(FeedData.WEETH).then((r) => r.json())\n aYield = Number(weethRes.lrt2Apr)\n } catch (e) {\n aYield = 0.5\n }\n return aYield + (wstethRes ?? 0)\n })\n\n const stmaticPromise = safeFetch('STMATIC', async () => {\n // const res = await fetch(FeedData.STMATIC).then((r) => r.json())\n // return Number(res.apr) * 0.9\n return 0\n })\n\n const savaxPromise = safeFetch('SAVAX', async () => {\n const res = await fetch(FeedData.SAVAX).then((r) => r.json())\n return Number(res.apr) * 100\n })\n\n const weethsPromise = safeFetch('WEETHS', async () => {\n const res = await fetch(FeedData.WEETHS).then((r) => r.json())\n return apyToApr(res.Response.apy) * 100\n })\n\n const methPromise = safeFetch('METH', async () => {\n const res = await fetch(FeedData.METH).then((r) => r.json())\n return apyToApr(Number(res.data[0]?.OneDayAPY)) * 100\n })\n\n const maticxPromise = safeFetch('MATICX', async () => {\n const res = await fetch(FeedData.MATICX).then((r) => r.json())\n return Number(res.value) * 0.9\n })\n\n const susdePromise = safeFetch('SUSDE', async () => {\n try {\n const res = await fetch(FeedData.SUSDE).then((r) => r.json())\n return apyToAprPercent(res?.data[0]?.apy ?? 0)\n } catch (e) {\n return 0\n }\n })\n\n const hbhypePromise = safeFetch('HBHYPE', async () => {\n try {\n const response = await fetch(FeedData.HBHYPE)\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`)\n }\n\n const result = await response.json()\n\n // Ensure data exists and delegations is an array\n if (\n !result.success ||\n !result.data ||\n !Array.isArray(result.data.delegations)\n ) {\n throw new Error('Invalid response structure')\n }\n\n const delegations = result.data.delegations\n\n // Compute average APR\n const totalApr = delegations.reduce(\n (sum: any, validator: any) => sum + Number(validator.apr ?? 0),\n 0,\n )\n const averageApr = totalApr / delegations.length\n\n return averageApr\n } catch (e) {\n return 0\n }\n })\n\n const hbuhypePromise = safeFetch('HBUHYPE', async () => {\n try {\n const response = await fetch(FeedData.HBUHYPE)\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`)\n }\n const result = await response.json()\n const apy = result.currentAPY?.apy_1d ?? 0\n\n return apyToAprPercent(apy)\n } catch (e) {\n return 0\n }\n })\n\n const ssuperusdPromise = safeFetch('SSUPERUSD', async () => {\n try {\n const res = await fetch(FeedData.SSUPERUSD, {\n method: 'GET',\n headers: { Accept: 'application/json', 'User-Agent': '1delta/yields' },\n }).then((r) => r.json())\n return apyToAprPercent(res?.[1]?.result.data.json ?? 0)\n } catch (e) {\n return 0\n }\n })\n\n const rsethPromise = safeFetch('RSETH', async () => {\n const res = await fetch(FeedData.RSETH).then((r) => r.json())\n return apyToAprPercent(res.totalAPY)\n })\n\n const susdxPromise = safeFetch('SUSDX', async () => {\n const res = await fetch(FeedData.SUSDX).then((r) => r.json())\n return apyToApr(res.result.susdxApy) * 100\n })\n\n const trumaticPromise = safeFetch('TRUMATIC', async () => {\n const res = await fetch(FeedData.TRUMATIC).then((r) => r.json())\n return apyToAprPercent(res.apy)\n })\n\n const thbillPromise = safeFetch('THBILL', async () => {\n const res = await fetch(FeedData.THBILL).then((r) => r.json())\n // the entries are nested as\n // \"cash\": {\n // \"USDC\": 0.0\n // },\n // \"money_market\": {\n // \"ULTRA\": 30364810.9557616\n // },\n // \"pending\": {\n // \"tULTRA\": 16220629.251993446\n // }\n // },\n\n // we read the keys and assign the approx rate of 4.5% to ULTRA\n const entrs = Object.values(res.history[0]?.composition ?? {}).flatMap(\n (a: any) => Object.entries(a),\n )\n const total = entrs.reduce((acc, b) => acc + Number(b[1]), 0)\n const val = entrs\n .filter((a) => a[0] === 'ULTRA')\n .reduce((acc, b) => acc + Number(b[1]), 0)\n return (val / total) * 4.5\n })\n\n const ethxPromise = safeFetch('ETHX', async () => {\n const res = await fetch(FeedData.ETHX).then((r) => r.json())\n return apyToAprPercent(res.value)\n })\n\n const yearnKatanaPromise = safeFetch('YEARN_KATANA', async () => {\n const res: { [address: string]: YearnVault } = await fetch(\n FeedData.YEARN_KATANA,\n ).then((r) => r.json())\n let map: any = {}\n Object.entries(res).forEach(([addr, data]) => {\n const key = addressToAssetYearn[addr.toLowerCase()]\n if (key) {\n const apr =\n ((data.apr.netAPR ?? 0) +\n (data.apr.extra.extrinsicYield ?? 0) +\n (data.apr.extra.katanaNativeYield ?? 0)) *\n 100\n map[key] = apr\n }\n })\n return map\n })\n\n const osEthPromise = safeFetch('OSETH', async () => {\n const res = await fetch(FeedData.OSETH, {\n method: 'POST',\n headers: { Accept: 'application/json' },\n body: JSON.stringify({\n query: 'query osTokenApy { osTokens { apy feePercent }}',\n operationName: 'osTokenApy',\n }),\n }).then((r) => r.json())\n return apyToAprPercent(res.data?.osTokens?.[0]?.apy)\n })\n\n const ynethxPromise = safeFetch('YNETHX', async () => {\n const res = await fetch(FeedData.YNETHX, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n operationName: 'GetTokenMetrics',\n variables: {\n networkType: 'mainnet',\n },\n query:\n 'query GetTokenMetrics($networkType: NetworkType!) {\\n getLRTsData(networkType: $networkType) {\\n summary {\\n total_tvl {\\n value\\n value_raw\\n value_usd\\n __typename\\n }\\n __typename\\n }\\n tokens {\\n token\\n total_tvl {\\n value\\n value_raw\\n value_usd\\n __typename\\n }\\n price\\n blockchains {\\n chainId\\n tvl {\\n value\\n value_raw\\n value_usd\\n __typename\\n }\\n apr {\\n apr7d\\n apr31d\\n restaking7dApr\\n __typename\\n }\\n strategyAssets {\\n tokenAddress\\n symbol\\n apr7d\\n tvl\\n isBuffer\\n protocols\\n manager\\n maturityDate\\n __typename\\n }\\n contract_details {\\n tokenAddress\\n ynViewer\\n referralDepositAdapter\\n rateProvider\\n __typename\\n }\\n historicalData {\\n apy\\n exchangeRate\\n usdPrice\\n baseAsset\\n __typename\\n }\\n __typename\\n }\\n __typename\\n }\\n __typename\\n }\\n}',\n }),\n }).then((r) => r.json())\n\n const dat = res?.data?.getLRTsData?.tokens\n .find((x: any) => x.token === 'ynETHx')\n ?.blockchains?.find((b: any) => b.chainId === 1)?.apr?.apr31d\n\n return Number(dat ?? 0)\n })\n\n const pufEthPromise = safeFetch('PUFETH', async () => {\n const res = await fetch(FeedData.PUFETH, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return apyToAprPercent(res.apy)\n })\n\n const usdZeroPlusPromise = safeFetch('USDZEROPLUS', async () => {\n const res = await fetch(FeedData.USDZEROPLUS, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return Number(res?.rewards[0]?.apr ?? 0) * 100\n })\n\n const jitoSolPromise = safeFetch('JITOSOL', async () => {\n const res = await fetch(FeedData.JITOSOL, {\n method: 'GET',\n headers: { Accept: 'application/json', 'User-Agent': '1delta/yields' },\n }).then((r) => r.json())\n const val = averageDataLastN(res?.getStakePoolStats?.apy, 7)\n return apyToApr(val) * 100\n })\n\n const ethZeroPromise = safeFetch('ETHZERO', async () => {\n const res = await fetch(FeedData.ETHZERO, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return Number(res?.rewards[0]?.apr ?? 0) * 100\n })\n\n const yoPromise = safeFetch('YO', async () => {\n const res = await fetch(FeedData.YO, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n const datas = res?.data as any[]\n const yoETH = datas.find((a) => a.id === 'yoETH').yield?.['1d']\n const yoBTC = datas.find((a) => a.id === 'yoBTC').yield?.['1d']\n const yoUSD = datas.find((a) => a.id === 'yoUSD').yield?.['1d']\n const yoEUR = datas.find((a) => a.id === 'yoEUR').yield?.['1d']\n return {\n [yoeth]: apyToAprPercent(yoETH),\n [yobtc]: apyToAprPercent(yoBTC),\n [yousd]: apyToAprPercent(yoUSD),\n [yoeur]: apyToAprPercent(yoEUR),\n }\n })\n\n const gmxPromise = safeFetch('GMX', async () => {\n const res = await fetch(FeedData.GMX, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n\n let rData: any = {}\n const markets = res.markets as any\n Object.entries(markets).forEach(([m, d]: [string, any]) => {\n if (m.toLowerCase() === gmx_eth_usd_address)\n rData[gmx_eth_usd] = apyToApr(d.apy) * 100\n if (m.toLowerCase() === gmx_btc_usd_address)\n rData[gmx_btc_usd] = apyToApr(d.apy) * 100\n })\n const glvs = res.glvs as any\n Object.entries(glvs).forEach(([m, d]: [string, any]) => {\n if (m.toLowerCase() === glv_wbtc_usdc_address)\n rData[glv_wbtc_usdc] = apyToApr(d.apy) * 100\n if (m.toLowerCase() === glv_weth_usdc_address)\n rData[glv_weth_usdc] = apyToApr(d.apy) * 100\n })\n\n return rData\n })\n\n const susdsPromise = safeFetch('SUSDS', async () => {\n const res = await fetch(FeedData.SUSDS, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return apyToApr(Number(res?.[0]?.sky_savings_rate_apy ?? 0)) * 100\n })\n\n const srusdPromise = safeFetch('SRUSD', async () => {\n const res = await fetch(FeedData.SRUSD, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return apyToAprPercent(Number(res?.srusdApy ?? 0))\n })\n\n const yusdPromise = safeFetch('YUSD', async () => {\n const res = await fetch(FeedData.YUSD, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())\n return apyToAprPercent(Number(res?.apy ?? 0))\n })\n\n const rlpPromise = safeFetch('RLP', async () => {\n const res = await fetch(FeedData.RLP, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'User-Agent': '1delta/yields',\n },\n }).then((r) => r.json())\n return Number(res?.value ?? 0) * 100\n })\n\n const wstusrPromise = safeFetch('WSTUSR', async () => {\n const res = await fetch(FeedData.WSTUSR, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'User-Agent': '1delta/yields',\n },\n }).then((r) => r.json())\n return Number(res?.value ?? 0) * 100\n })\n\n // const sdeusdPromise = safeFetch('SDEUSD', async () => {\n // const res = await fetch(FeedData.SDEUSD, {\n // method: 'GET',\n // headers: { Accept: 'application/json' },\n // }).then((r) => r.json())\n // return apyToAprPercent((res?.deusd_apy ?? 0) / 100) * 100\n // })\n\n const rswethPromise = safeFetch('RSWETH', async () => {\n const res = await fetch(FeedData.RSWETH, {\n method: 'GET',\n headers: { Accept: 'application/json', 'User-Agent': '1delta/yields' },\n }).then((r) => r.text())\n return Number(res) ?? 0\n })\n\n const hwhlpPromise = safeFetch('HWHLP', async () => {\n const res = (await fetch(FeedData.HWHLP, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n }).then((r) => r.json())) as any\n return Number(res.data?.apr_1d ?? 0)\n })\n\n const csusdlPromise = safeFetch('CSUSDL', async () => {\n const res = await fetch(FeedData.MORPHO_VAULTS, {\n method: 'POST',\n headers: { Accept: 'application/json' },\n body: JSON.stringify({\n query:\n 'query GetAllCurrentAPYFromVault($address: String!) {\\n vaultByAddress(address: $address) {\\n state {\\n apy\\n netApy\\n }\\n asset {\\n yield {\\n apr\\n }\\n }\\n }\\n}',\n variables: {\n address: '0xbEeFc011e94f43b8B7b455eBaB290C7Ab4E216f1',\n },\n }),\n }).then((r) => r.json())\n const vba = res?.data?.vaultByAddress\n return (\n apyToAprPercent(vba.state.apy ?? 0) * 100 +\n (vba?.asset?.yield.apr ?? 0) * 100\n )\n })\n\n const hlpPromise = safeFetch('HLP', async () => {\n const res = await fetch(FeedData.HLP, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json', // <-- required\n },\n body: JSON.stringify({\n type: 'vaultDetails',\n vaultAddress: '0xdfc24b077bc1425ad1dea75bcb6f8158e10df303',\n }),\n }).then((r) => r.json())\n let calculated: number\n try {\n const p = res.portfolio[0][1]\n const val = p.accountValueHistory[p.accountValueHistory.length - 1][1]\n const pnl = p.pnlHistory[p.pnlHistory.length - 1][1]\n calculated = (pnl / val) * 100\n } catch {\n calculated = (res?.apr ?? 0) * 100\n }\n return calculated\n })\n\n const rtokensPromise = safeFetch('RTOKENS', async () => {\n const res = await fetch(FeedData.RTOKENS).then((r) => r.json())\n const data = res.rtokens['8453']\n const dataMainnet = res.rtokens['1']\n const dataMainnetColalterals = res.collaterals['1']\n return {\n [bsdETH]: apyToAprPercent(data.bsdETH / 100) * 100,\n [hyUSD]: apyToAprPercent(data.hyUSD / 100) * 100,\n [sfrxeth]: apyToAprPercent(dataMainnetColalterals.sfrxeth / 100) * 100,\n [sfrax]: apyToAprPercent(dataMainnetColalterals.sfrax / 100) * 100,\n [ceth]: apyToAprPercent(dataMainnetColalterals.ceth / 100) * 100,\n [ethPlus]: apyToAprPercent(dataMainnet['ETH+'] / 100) * 100,\n [usdThree]: apyToAprPercent(dataMainnet['USD3'] / 100) * 100,\n [woEth]: apyToAprPercent(dataMainnetColalterals.woeth / 100) * 100,\n }\n })\n\n const hypePromise = safeFetch('HYPE', async () => {\n const res = await fetch(FeedData.HYPE).then((r) => r.json())\n return {\n [wstHype]: res.wstHYPE.latestApr,\n [kHYPE]: res.kHYPE.latestApr,\n }\n })\n\n const anglePromise = safeFetch('ANGLE', async () => {\n const now = Math.floor(Date.now() / 1000)\n const nowMinusWeek = now - 7 * 24 * 3600\n const res = await fetch(\n FeedData.ANGLE + `?from=${nowMinusWeek}&to=${now}`,\n ).then((r) => r.json())\n return {\n [stEur]: apyToAprPercent(res.EURA) * 100,\n [stUSD]: apyToAprPercent(res.USDA) * 100,\n }\n })\n\n const cbethPromise = safeFetch('CBETH', async () => {\n try {\n const res = await fetch(FeedData.CBETH, {\n headers: {\n 'User-Agent': '1delta/yields',\n 'Content-Type': 'application/json',\n },\n }).then((r) => r.json())\n return apyToAprPercent(res.apy) * 100\n } catch (e) {\n console.log('CBETH failed', e)\n return 0\n }\n })\n\n // const meridianPromise = safeFetch('MERIDIAN', async () => {\n // const res = await fetch(LenderAPIs.MERIDIAN).then((r) => r.json())\n // const taikoData = res[MeridainNetwork.TAIKO]\n // return Object.assign(\n // {},\n // ...Object.keys(taikoData).map((key) => ({\n // [formatMeridianKey(key)]: {\n // deposit: taikoData[key].apy_reward,\n // borrow: taikoData[key].apy_reward_borrow,\n // },\n // })),\n // )\n // })\n\n const pendlePromise = getListsMulti([\n Chain.PLASMA_MAINNET,\n Chain.ETHEREUM_MAINNET,\n Chain.BERACHAIN,\n Chain.MANTLE,\n Chain.BASE,\n Chain.OP_MAINNET,\n Chain.ARBITRUM_ONE,\n Chain.SONIC_MAINNET,\n Chain.HYPEREVM,\n Chain.BNB_SMART_CHAIN_MAINNET,\n ]).then((x) => fetchPendleYields(x))\n\n const [\n wstethData,\n ezethData,\n rethData,\n weethData,\n stmaticData,\n methData,\n maticXdata,\n susdeData,\n // meridianData,\n savaxData,\n cbethData,\n rsethData,\n trumaticData,\n rtokensData,\n hypeData,\n osEthData,\n ethXData,\n pufEthData,\n angleData,\n susdsData,\n srUsdData,\n yusdData,\n rlpData,\n wstusrData,\n csusdlData,\n // sdeusdData,\n rswethData,\n ynethxData,\n ethZeroData,\n usdZeroPlusData,\n jitoSolData,\n thBillData,\n yearnKatanaData,\n ssuperusdData,\n hbhypeData,\n pendleData,\n hlpData,\n yoData,\n hwhlpData,\n gmxData,\n weethsData,\n hbuhypeData,\n susdxData,\n ] = await Promise.all([\n wstethPromise,\n ezethPromise,\n rethPromise,\n weethPromise,\n stmaticPromise,\n methPromise,\n maticxPromise,\n susdePromise,\n // meridianPromise,\n savaxPromise,\n cbethPromise,\n rsethPromise,\n trumaticPromise,\n rtokensPromise,\n hypePromise,\n osEthPromise,\n ethxPromise,\n pufEthPromise,\n anglePromise,\n susdsPromise,\n srusdPromise,\n yusdPromise,\n rlpPromise,\n wstusrPromise,\n csusdlPromise,\n // sdeusdPromise,\n rswethPromise,\n ynethxPromise,\n ethZeroPromise,\n usdZeroPlusPromise,\n jitoSolPromise,\n thbillPromise,\n yearnKatanaPromise,\n ssuperusdPromise,\n hbhypePromise,\n pendlePromise,\n hlpPromise,\n yoPromise,\n hwhlpPromise,\n gmxPromise,\n weethsPromise,\n hbuhypePromise,\n susdxPromise,\n ])\n\n const data: YieldDataWithTimestamp = {\n intrinsicYields: {\n MATICX: maticXdata,\n METH: methData,\n CMETH: methData,\n WSTETH: wstethData,\n EZETH: ezethData,\n RETH: rethData,\n WEETH: weethData,\n STMATIC: stmaticData,\n USDY: 4.35,\n SUSDE: susdeData,\n SAVAX: savaxData,\n CBETH: cbethData,\n RSETH: rsethData,\n TRUMATIC: trumaticData,\n [sUsds]: susdsData,\n [ethZero]: ethZeroData,\n [usdZeroPlus]: usdZeroPlusData,\n [csusdl]: csusdlData,\n [srUsd]: srUsdData,\n [wsrusd]: srUsdData,\n // [sdeusd]: sdeusdData,\n [wstusr]: wstusrData,\n [yusd]: yusdData,\n [rlp]: rlpData,\n [rsweth]: rswethData,\n [osETH]: osEthData,\n [ethX]: ethXData,\n [ynethx]: ynethxData,\n [tETH]: wstethData,\n [pufEth]: pufEthData,\n [jitoSol]: jitoSolData,\n [thBill]: thBillData,\n [ssuperusd]: ssuperusdData,\n [hbhype]: hbhypeData,\n [hlp]: hlpData,\n [hwhlp]: hwhlpData,\n [weeths]: weethsData,\n [hbuhype]: hbuhypeData,\n [susdx]: susdxData,\n ...rtokensData,\n ...hypeData,\n ...angleData,\n ...yearnKatanaData,\n ...pendleData,\n ...yoData,\n ...gmxData,\n },\n lenderRewards: {\n // '167000': {\n // MERIDIAN: meridianData,\n // },\n },\n }\n return data\n}\n","const prefixEthereum = 'ethereum:'\nconst RETH = '0xae78736Cd615f374D3085123A210448E74Fc6393'\nconst WBTC = '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'\nconst WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'\nconst MNT = '0x3c3a81e81dc49a522a592e7622a7e711c06bf354'\nconst USDE = '0x4c9edd5852cd905f086c759e8383e09bff1e68b3'\nconst METH = '0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa'\nconst USDC = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'\nconst USDT = '0xdac17f958d2ee523a2206206994597c13d831ec7'\nconst USDY = '0x96f6ef951840721adbf46ac996b59e0235cb985c'\nconst CRV = '0xD533a949740bb3306d119CC777fa900bA034cd52'\nconst BAL = '0xba100000625a3754423978a60c9317c58a424e3D'\nconst AGEUR = '0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8'\nconst LINK = '0x514910771AF9Ca656af840dff83E8264EcF986CA'\nconst DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F'\nconst MATIC = '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'\nconst BNB = '0xB8c77482e45F1F44dE1745F52C74426C631bDD52'\nconst STMATIC = '0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599'\nconst MATICX = '0xf03A7Eb46d01d9EcAA104558C732Cf82f6B6B645'\nconst AAVE = '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'\nconst COMP = '0xc00e94cb662c3520282e6f5717214004a7f26888'\nconst EURS = '0xdB25f211AB05b1c97D595516F45794528a807ad8'\nconst FBTC = '0xC96dE26018A54D51c097160568752c4E3BD6C364'\nconst TAIKO = '0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800'\nconst CMETH = '0xe6829d9a7ee3040e1276fa75293bde931859e8fa'\nconst AUSD = '0x00000000efe302beaa2b3e6e1b18d08d69a9012a'\nconst SUSDE = '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497'\nconst FUEL = '0x675B68AA4d9c2d3BB3F0397048e62E6B7192079c'\nconst GHO = '0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f'\nconst FRAX = '0x853d955acef822db058eb8505911ed77f175b99e'\nconst WEETH = '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee'\nconst ARB = '0xb50721bcf8d664c30412cfbc6cf7a15145234ad1'\nconst WUSDM = '0x57f5e098cad7a3d1eed53991d4d66c45c9af7812'\nconst RSETH = '0xa1290d69c65a6fe4df752f95823fae25cb99e5a7'\nconst CBETH = '0xbe9895146f7af43049ca1c1ae358b0541ea49704'\nconst SNX = '0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'\nconst VUSD = '0x677ddbd918637e5f2c79e164d402454de7da8619'\nconst EZETH = '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110'\nconst LBTC = '0x8236a87084f8B84306f72007F36F2618A5634494'\nconst BRBTC = '0x2eC37d45FCAE65D9787ECf71dc85a444968f6646'\nconst SDAI = '0x83f20f44975d03b1b09e64809b757c47f942beea'\nconst RUSD = '0x09d4214c03d01f49544c0448dbe3a27f768f2b34'\nconst USDF = '0xfa2b947eec368f42195f24f36d2af29f7c24cec2'\nconst USUAL = '0xc4441c2be5d8fa8126822b9929ca0b81ea0de38e'\nconst WOETH = '0xdcee70654261af21c44c093c300ed3bb97b78192'\nconst DEUSD = '0x15700B564Ca08D9439C58cA5053166E8317aa138'\nconst SKY = '0x56072C95FAA701256059aa122697B133aDEd9279'\nconst datasEthereum = [\n RETH,\n WBTC,\n WETH,\n MNT,\n USDC,\n USDT,\n USDE,\n METH,\n USDY,\n CRV,\n BAL,\n AGEUR,\n LINK,\n DAI,\n BNB,\n MATIC,\n STMATIC,\n MATICX,\n AAVE,\n COMP,\n EURS,\n FBTC,\n TAIKO,\n CMETH,\n AUSD,\n SUSDE,\n FUEL,\n GHO,\n FRAX,\n WEETH,\n ARB,\n WUSDM,\n RSETH,\n CBETH,\n SNX,\n EZETH,\n VUSD,\n LBTC,\n BRBTC,\n SDAI,\n RUSD,\n USDF,\n USUAL,\n WOETH,\n DEUSD,\n SKY,\n]\n .map((d) => prefixEthereum + d)\n .join(',')\n\nconst prefixAvalanche = 'avax:'\nconst WAVAX = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7'\nconst SAVAX = '0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE'\n\nconst prefixArbitrum = 'arbitrum:'\nconst GMX = '0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a'\n\nconst prefixOptimism = 'optimism:'\nconst OP = '0x4200000000000000000000000000000000000042'\nconst SUSD = '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9'\nconst WRSETH = '0x87eee96d50fb761ad85b1c982d28a042169d61b1'\n\nconst prefixBase = 'base:'\nconst AERO = '0x940181a94A35A4569E4529A3CDfB74e38FD98631'\n\n// const prefixCore = 'core:'\n// const WCORE = '0xb0788b601c0d712702bc829b52771199ad8e33ff'\n\n// const prefixMetis = 'metis:'\n// const WMETIS = '0x75cb093e4d61d2a2e65d8e0bbb01de8d89b53481'\n\nconst prefixSonic = 'sonic:'\nconst WS = '0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38'\n\nconst prefixFantom = 'fantom:'\nconst WFTM = '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83'\n\nconst prefixPolygon = 'polygon:'\nconst TRUMATIC = '0xf33687811f3ad0cd6b48dd4b39f9f977bd7165a2'\n\nconst prefixHyperEVM = 'hyperliquid:'\n\nconst WYPE = '0x5555555555555555555555555555555555555555'\nconst WSTHYPE = '0x94e8396e0869c9f2200760af0621afd240e1cf38'\nconst kHYPE = '0xfd739d4e423301ce9385c1fb8850539d657c296d'\n\nconst prefixSolana = 'solana:'\nconst JITOSOL = 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn'\nconst SOL = 'So11111111111111111111111111111111111111112'\n\n// const prefixXdc = 'xdc:'\n// const WXDC = '0x951857744785e80e2de051c32ee7b25f9c458c42'\n\nconst prefixBera = 'berachain:'\nconst WBERA = '0x6969696969696969696969696969696969696969'\n\nconst prefixCronos = 'cronos:'\nconst WCRO = '0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23'\n\nconst prefixTelos = 'telos:'\nconst wtlos = '0xd102ce6a4db07d247fcc28f366a623df0938ca9e'\n\nconst prefixManta = 'manta:'\nconst manta = '0x95cef13441be50d20ca4558cc0a27b601ac544e5'\n\nconst prefixbsc = 'bsc:'\nconst xpl = '0x405FBc9004D857903bFD6b3357792D71a50726b0'\n\n// const prefixsei = 'sei:'\n// const wsei = '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7'\n// const prefixKaia = 'kaia:'\n// const WKAIA = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'\n\nconst prefixmoonbeam = 'moonbeam:'\nconst glmr = '0xacc15dc74880c9944775448304b263d191c6077f'\n\nconst datasAvalanche = [WAVAX, SAVAX].map((d) => prefixAvalanche + d).join(',')\nconst datasArbitrum = [GMX].map((d) => prefixArbitrum + d).join(',')\nconst datasOptimism = [OP, SUSD, WRSETH]\n .map((d) => prefixOptimism + d)\n .join(',')\nconst datasBase = [AERO].map((d) => prefixBase + d).join(',')\n// const datasCore = [WCORE].map((d) => prefixCore + d).join(',')\n// const datasMetis = [WMETIS].map((d) => prefixMetis + d).join(',')\nconst datasFantom = [WFTM].map((d) => prefixFantom + d).join(',')\nconst datasPolygon = [TRUMATIC].map((d) => prefixPolygon + d).join(',')\nconst datasSonic = [WS].map((d) => prefixSonic + d).join(',')\nconst datasHyperEvm = [WYPE, WSTHYPE, kHYPE]\n .map((d) => prefixHyperEVM + d)\n .join(',')\nconst datasSolana = [JITOSOL, SOL].map((d) => prefixSolana + d).join(',')\nconst datasBera = [WBERA].map((d) => prefixBera + d).join(',')\n// const datasXdc = [WXDC].map((d) => prefixXdc + d).join(',')\nconst datasCronos = [WCRO].map((d) => prefixCronos + d).join(',')\nconst datasManta = [manta].map((d) => prefixManta + d).join(',')\nconst datasTelos = [wtlos].map((d) => prefixTelos + d).join(',')\nconst datasbsc = [xpl].map((d) => prefixbsc + d).join(',')\n// const datassei = [wsei].map((d) => prefixsei + d).join(',')\nconst datasmoonbeam = [glmr].map((d) => prefixmoonbeam + d).join(',')\n// const datasKaia = [WKAIA].map((d) => prefixKaia + d).join(',')\n\nconst URL = `https://coins.llama.fi/prices/current/${[\n datasEthereum,\n datasAvalanche,\n datasArbitrum,\n datasOptimism,\n datasBase,\n // datasCore,\n // datasMetis,\n datasFantom,\n datasHyperEvm,\n // datasKaia,\n datasmoonbeam,\n datasSonic,\n datasPolygon,\n datasSolana,\n datasBera,\n // datasXdc,\n datasCronos,\n datasManta,\n datasTelos,\n datasbsc,\n // datassei,\n].join(',')}`\nconst URL_HIST = (ref: number) =>\n `https://coins.llama.fi/prices/historical/${ref}/${[\n datasEthereum,\n datasAvalanche,\n datasArbitrum,\n datasOptimism,\n datasBase,\n // datasCore,\n // datasMetis,\n datasFantom,\n // datasKaia,\n datasmoonbeam,\n datasHyperEvm,\n datasPolygon,\n datasSonic,\n datasSolana,\n datasbsc,\n ].join(',')}`\n\nconst SYMBOL_MAP = {\n weth: 'WETH',\n usde: 'USDE',\n meth: 'METH',\n mnt: 'WMNT',\n usdc: 'USDC',\n usdt: 'USDT',\n wbtc: 'WBTC',\n usdy: 'USDY',\n crv: 'CRV',\n op: 'OP',\n bal: 'BAL',\n eura: 'AGEUR',\n link: 'LINK',\n // // dai: 'DAI',\n // bnb: 'WBNB',\n matic: 'WPOL',\n // wpol: 'WPOL',\n // pol: 'WPOL',\n stmatic: 'STMATIC',\n maticx: 'MATICX',\n wavax: 'WAVAX',\n aave: 'AAVE',\n comp: 'COMP',\n eurs: 'EURS',\n fbtc: 'FBTC',\n taiko: 'TAIKO',\n cmeth: 'CMETH',\n ausd: 'AUSD',\n susde: 'SUSDE',\n fuel: 'FUEL',\n gho: 'GHO',\n frax: 'FRAX',\n weeth: 'WEETH',\n arb: 'ARB',\n lusd: 'LUSD',\n reth: 'RETH',\n gmx: 'GMX',\n wusdm: 'WUSDM',\n rseth: 'RSETH',\n susd: 'SUSD',\n wrseth: 'WRSETH',\n cbeth: 'CBETH',\n aero: 'AERO',\n snx: 'SNX',\n wftm: 'WFTM',\n ftm: 'WFTM',\n // wcore: 'WCORE',\n // core: 'WCORE',\n // ws: 'WS',\n // s: 'WS',\n // // wmetis: 'WMETIS',\n // metis: 'WMETIS',\n vusd: 'VUSD',\n ezeth: 'EZETH',\n lbtc: 'LBTC',\n brbtc: 'BRBTC',\n sdai: 'SDAI',\n wkaia: 'KAIA',\n savax: 'SAVAX',\n whype: 'WHYPE',\n // khype: 'Kinetiq Staked HYPE::kHYPE',\n // wsthype: 'Staked HYPE Shares::WSTHYPE',\n // trumatic: 'TRUMATIC',\n rusd: 'Reservoir rUSD::RUSD',\n usdf: 'Falcon Finance::USDF',\n usual: 'Usual::USUAL',\n woeth: 'Wrapped OETH::WOETH',\n jitosol: 'Jito Staked SOL::JitoSOL',\n manta: 'Manta::MANTA',\n sol: 'SOL',\n wcro: 'WCRO',\n // wxdc: 'WXDC',\n wbera: 'WBERA',\n wtlos: 'WTLOS',\n xpl: 'WXPL',\n wglmr: 'WGLMR',\n wsei: 'SEI',\n deusd: 'Elixir deUSD::DEUSD',\n sky: 'SKY Governance Token::SKY',\n}\n\nexport async function fetchDefillamaData() {\n try {\n const res: any = await fetch(URL).then((a) => a.json())\n\n let prices = Object.assign(\n {},\n ...Object.values(res.coins).map((k: any) => {\n // @ts-ignore\n return { [SYMBOL_MAP[k.symbol.toLowerCase()]]: k.price }\n }),\n )\n\n // prices['POL'] = prices['WPOL']\n // prices['BNB'] = prices['WBNB']\n // prices['ETH'] = prices['WETH']\n // prices['S'] = prices['WS']\n // prices['CORE'] = prices['WCORE']\n prices['WSOL'] = prices['SOL']\n prices['AVAX'] = prices['WAVAX']\n // prices['METIS'] = prices['WMETIS']\n prices['CRO'] = prices['WCRO']\n // prices['XDC'] = prices['WXDC']\n prices['BERA'] = prices['WBERA']\n prices['TLOS'] = prices['WTLOS']\n prices['XPL'] = prices['WXPL']\n prices['GLMR'] = prices['WGLMR']\n prices['WSEI'] = prices['SEI']\n // prices['WKAIA'] = prices['KAIA']\n\n // prices['USDBC'] = prices['USDC']\n // prices['BTCB'] = prices['WBTC']\n // prices['CBBTC'] = prices['WBTC']\n // prices['SOLVBTC'] = prices['WBTC']\n // prices['XSOLVBTC'] = prices['WBTC']\n prices['SUBTC'] = prices['WBTC']\n\n prices['IBTC'] = prices['WBTC']\n prices['ENZOBTC'] = prices['WBTC']\n\n // prices['LUSD'] = prices['USDT']\n // prices['XDAI'] = prices['DAI']\n // prices['WXDAI'] = prices['DAI']\n // prices['HYPE'] = prices['WHYPE']\n return prices\n } catch (e: any) {\n console.log('error fetching prices from defillama', e)\n return {}\n }\n}\n\nexport async function fetchDefillamaHistData() {\n try {\n const nowMinus24 = Math.floor(Date.now() / 1000 - 24 * 3600)\n const resHist: any = await fetch(URL_HIST(nowMinus24)).then((a) => a.json())\n\n let histPrices = Object.assign(\n {},\n ...Object.values(resHist.coins).map((k: any) => {\n // @ts-ignore\n return { [SYMBOL_MAP[k.symbol.toLowerCase()]]: k.price }\n }),\n )\n\n // histPrices['POL'] = histPrices['WPOL']\n // histPrices['BNB'] = histPrices['WBNB']\n // histPrices['ETH'] = histPrices['WETH']\n // histPrices['S'] = histPrices['WS']\n histPrices['CORE'] = histPrices['WCORE']\n histPrices['WSOL'] = histPrices['SOL']\n histPrices['AVAX'] = histPrices['WAVAX']\n // histPrices['METIS'] = histPrices['WMETIS']\n histPrices['HYPE'] = histPrices['WHYPE']\n histPrices['BERA'] = histPrices['WBERA']\n histPrices['CRO'] = histPrices['WCRO']\n histPrices['XDC'] = histPrices['WXDC']\n histPrices['TLOS'] = histPrices['WTLOS']\n histPrices['XPL'] = histPrices['WXPL']\n histPrices['GLMR'] = histPrices['WGLMR']\n histPrices['WSEI'] = histPrices['SEI']\n // histPrices['WKAIA'] = histPrices['KAIA']\n\n histPrices['LUSD'] = histPrices['USDT']\n histPrices['XDAI'] = histPrices['DAI']\n histPrices['WXDAI'] = histPrices['DAI']\n\n // histPrices['BTCB'] = histPrices['WBTC']\n // histPrices['M-BTC'] = histPrices['WBTC']\n // histPrices['SOLVBTC'] = histPrices['WBTC']\n // histPrices['XSOLVBTC'] = histPrices['WBTC']\n // histPrices['UNIBTC'] = histPrices['WBTC']\n histPrices['HEMIBTC'] = histPrices['WBTC']\n histPrices['SUBTC'] = histPrices['WBTC']\n histPrices['IBTC'] = histPrices['WBTC']\n histPrices['ENZOBTC'] = histPrices['WBTC']\n histPrices['CBBTC'] = histPrices['WBTC']\n histPrices['PUMPBTC'] = histPrices['WBTC']\n\n return histPrices\n } catch (e: any) {\n console.log('error fetching prices from defillama', e)\n return {}\n }\n}\n","export const AaveOracleAbi = [\n {\n inputs: [],\n name: 'BASE_CURRENCY_UNIT',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n name: 'getAssetPrice',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'assets',\n type: 'address[]',\n },\n ],\n name: 'getAssetsPrices',\n outputs: [\n {\n internalType: 'uint256[]',\n name: '',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'getFallbackOracle',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const ChainLinkAggregatorAbi = [\n {\n inputs: [\n {\n internalType: 'uint80',\n name: '_roundId',\n type: 'uint80',\n },\n ],\n name: 'getRoundData',\n outputs: [\n {\n internalType: 'uint80',\n name: 'roundId',\n type: 'uint80',\n },\n {\n internalType: 'int256',\n name: 'answer',\n type: 'int256',\n },\n {\n internalType: 'uint256',\n name: 'startedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'updatedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint80',\n name: 'answeredInRound',\n type: 'uint80',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '_roundId',\n type: 'uint256',\n },\n ],\n name: 'getTimestamp',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'latestAnswer',\n outputs: [\n {\n internalType: 'int256',\n name: '',\n type: 'int256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'latestRound',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'latestRoundData',\n outputs: [\n {\n internalType: 'uint80',\n name: 'roundId',\n type: 'uint80',\n },\n {\n internalType: 'int256',\n name: 'answer',\n type: 'int256',\n },\n {\n internalType: 'uint256',\n name: 'startedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'updatedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint80',\n name: 'answeredInRound',\n type: 'uint80',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'latestTimestamp',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address payable',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'proposedLatestRoundData',\n outputs: [\n {\n internalType: 'uint80',\n name: 'roundId',\n type: 'uint80',\n },\n {\n internalType: 'int256',\n name: 'answer',\n type: 'int256',\n },\n {\n internalType: 'uint256',\n name: 'startedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'updatedAt',\n type: 'uint256',\n },\n {\n internalType: 'uint80',\n name: 'answeredInRound',\n type: 'uint80',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [\n { internalType: 'contract MToken', name: 'mToken', type: 'address' },\n ],\n name: 'getUnderlyingPrice',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const Api3OracleAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: '_api3ServerV1',\n type: 'address',\n },\n {\n internalType: 'bytes32',\n name: '_dapiNameHash',\n type: 'bytes32',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [],\n name: 'api3ServerV1',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'dapiNameHash',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'read',\n outputs: [\n {\n internalType: 'int224',\n name: 'value',\n type: 'int224',\n },\n {\n internalType: 'uint32',\n name: 'timestamp',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const RWADynamicOracleAbi = [\n {\n inputs: [],\n name: 'getPrice',\n outputs: [\n {\n internalType: 'uint256',\n name: 'price',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { Chain } from '@1delta/chain-registry'\n\nexport const api3OracleAddresses: {\n [chainId: string]: { [asset: string]: string }\n} = {\n [Chain.MANTLE]: {\n ['WETH']: '0x009E9B1eec955E9Fe7FE64f80aE868e661cb4729',\n ['METH']: '0xF55faBDf4C4F19D48d12A94209c735ca5AC43c78',\n ['CMETH']: '0x9B762Ccd8719Adb4c27B176A1817498Ed7946D06',\n ['FBTC']: '0xd13684dC3f4E40AeA1b74eFbfeBDE5cB00574c8e',\n },\n}\n","import { Chain } from '@1delta/chain-registry'\n\nexport enum ChainlinkAggregatorIndexes {\n roundId = 0,\n answer,\n startedAt,\n updatedAt,\n answeredInRound,\n}\n\nexport const chainlinkOracles = {\n 'MIMATIC-USD': {\n [Chain.POLYGON_MAINNET]: '0xd8d483d813547cfb624b8dc33a00f2fcbcd2d428',\n },\n 'BTC-ETH': {\n [Chain.POLYGON_MAINNET]: '0x19b0F0833C78c0848109E3842D34d2fDF2cA69BA',\n },\n 'BTC-USD': {\n [Chain.POLYGON_MAINNET]: '0xc907E116054Ad103354f2D350FD2514433D57F6f',\n [Chain.ETHEREUM_MAINNET]: '0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x264990fbd0A4796A3E3d8E37C4d5F87a3aCa5Ebf',\n },\n 'DAI-USD': {\n [Chain.POLYGON_MAINNET]: '0x4746DeC9e833A82EC7C2C1356372CcF2cfcD2F3D',\n [Chain.ETHEREUM_MAINNET]: '0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x132d3C0B1D2cEa0BC552588063bdBb210FDeecfA',\n },\n 'ETH-USD': {\n [Chain.POLYGON_MAINNET]: '0xF9680D99D6C9589e2a93a78A04A279e509205945',\n [Chain.ETHEREUM_MAINNET]: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e',\n },\n 'BNB-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE',\n },\n 'CAKE-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xB6064eD41d4f67e353768aA239cA86f4F73665a1',\n },\n 'DOGE-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x3AB0A0d137D4F946fBB19eecc6e92E64660231C8',\n },\n 'DOT-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xC333eb0086309a16aa7c8308DfD32c8BBA0a2592',\n },\n 'BUSD-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xcBb98864Ef56E9042e7d2efef76141f15731B82f',\n },\n 'BETH-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x2A3796273d47c4eD363b361D3AEFb7F7E2A13782',\n },\n 'FIL-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xE5dbFD9003bFf9dF5feB2f4F445Ca00fb121fb83',\n },\n 'LTC-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x74E72F37A8c415c8f1a98Ed42E78Ff997435791D',\n },\n 'SXP-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xE188A9875af525d25334d75F3327863B2b8cd0F1',\n },\n 'TRX-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xF4C5e535756D11994fCBB12Ba8adD0192D9b88be',\n },\n 'JPY-USD': {\n [Chain.POLYGON_MAINNET]: '0xD647a6fC9BC6402301583C91decC5989d8Bc382D',\n },\n 'LINK-USD': {\n [Chain.POLYGON_MAINNET]: '0xd9FFdb71EbE7496cC440152d43986Aae0AB76665',\n [Chain.ETHEREUM_MAINNET]: '0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xca236E327F629f9Fc2c30A4E95775EbF0B89fac8',\n },\n 'TUSD-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xa3334A9762090E827413A7495AfeCE76F41dFc06',\n },\n 'LINK-MATIC': {\n [Chain.POLYGON_MAINNET]: '0x5787BefDc0ECd210Dfa948264631CD53E68F7802',\n },\n 'MATIC-USD': {\n [Chain.POLYGON_MAINNET]: '0xAB594600376Ec9fD91F8e885dADF0CE036862dE0',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x7CA57b0cA6367191c94C8914d7Df09A57655905f',\n },\n 'MATICX-USD': {\n [Chain.POLYGON_MAINNET]: '0x5d37E4b374E6907de8Fc7fb33EE3b0af403C7403',\n },\n 'STMATIC-USD': {\n [Chain.POLYGON_MAINNET]: '0x97371dF4492605486e23Da797fA68e55Fc38a13f',\n },\n 'XVS-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xBF63F430A79D4036A5900C19818aFf1fa710f206',\n },\n 'USDC-USD': {\n [Chain.POLYGON_MAINNET]: '0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7',\n [Chain.ETHEREUM_MAINNET]: '0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x51597f405303C4377E36123cBc172b13269EA163',\n },\n 'USDT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',\n [Chain.POLYGON_MAINNET]: '0x0a6513e40db6eb1b165753ad52e80663aea50545',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xB97Ad0E74fa7d920791E90258A6E2085088b4320',\n },\n 'VAI-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x058316f8Bb13aCD442ee7A216C7b60CFB4Ea1B53',\n },\n 'XRP-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x93A67D414896A280bF8FFB3b389fE3686E014fda',\n },\n 'WIN-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x9e7377E194E41d63795907c92c3EB351a2eb0233',\n },\n 'EUR-USD': {\n [Chain.POLYGON_MAINNET]: '0x73366Fe0AA0Ded304479862808e02506FE556a98',\n },\n 'SAND-USD': {},\n 'USDT-USDC': {\n [Chain.POLYGON_MAINNET]: '0x0A6513e40db6EB1b165753AD52E80663aeA50545',\n },\n 'AAVE-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x547a514d5e3769680Ce22B2361c10Ea13619e8a9',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xA8357BF572460fC40f4B0aCacbB2a6A61c89f475',\n },\n 'ADA-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xa767f745331D267c7751297D982b050c93985627',\n },\n 'BCH-USD': {\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0x43d80f616DAf0b0B42a928EeD32147dC59027D41',\n },\n 'BAT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94',\n },\n 'UNI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x553303d460EE0afB37EdFf9bE42922D8FF63220e',\n [Chain.POLYGON_MAINNET]: '0xdf0Fb4e4F928d2dCB76f438575fDD8682386e13C',\n [Chain.BNB_SMART_CHAIN_MAINNET]:\n '0xb57f259E7C24e56a1dA00F66b55A5640d9f9E7e4',\n },\n 'YFI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xA027702dbb89fbd58938e4324ac03B58d812b0E1',\n },\n 'USDP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3',\n },\n 'ZRX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2885d15b8Af22648b98B122b22FDF4D2a56c6023',\n },\n 'MKR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xec1D1B3b0443256cc3860e24a46F108e699484Aa',\n // [Chain.POLYGON_MAINNET]: '0xa070427bF5bA5709f70e98b94Cb2F435a242C46C',\n },\n 'COMP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5',\n [Chain.POLYGON_MAINNET]: '0x2A8758b7257102461BC958279054e372C2b1bDE6',\n },\n 'WSTETH-ETH': {\n [Chain.POLYGON_MAINNET]: '0x10f964234cae09cB6a9854B56FF7D4F38Cda5E6a',\n },\n}\n\nexport const getChainLinkKeys = (chainId: string): string[] => {\n return Object.keys(chainlinkOracles).filter(\n // @ts-ignore\n (x) => chainlinkOracles[x][chainId] !== undefined,\n )\n}\n\nexport const chainlinkOraclesEthereum = {\n '1INCH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xc929ad75B72593967DE83E7F7Cda0493458261D9',\n },\n 'AAPL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x139C8512Cde1778e9b9a8e721ce1aEbd4dD43587',\n },\n 'AAVE-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012',\n },\n 'AAVE-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x547a514d5e3769680Ce22B2361c10Ea13619e8a9',\n },\n 'ADA-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xAE48c91dF1fE419994FFDa27da09D5aC69c30f55',\n },\n 'ADX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10',\n },\n 'ALCX-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x194a9AaF2e0b67c35915cD01101585A33Fe25CAa',\n },\n 'ALCX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xc355e4C0B3ff4Ed0B49EaACD55FE29B311f42976',\n },\n 'ALPHA-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x89c7926c7c15fD5BFDB1edcFf7E7fC8283B578F6',\n },\n 'AMP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x8797ABc4641dE76342b8acE9C63e3301DC35e3d8',\n },\n 'AMPL-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x492575FDD11a0fCf2C6C719867890a7648d526eB',\n },\n 'AMZN-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x8994115d287207144236c13Be5E2bDbf6357D9Fd',\n },\n 'ANKR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7eed379bf00005CfeD29feD4009669dE9Bcc21ce',\n },\n 'ANT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x8f83670260F8f7708143b836a2a6F11eF0aBac01',\n },\n 'APE-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xc7de7f4d4C9c991fF62a07D18b3E31e349833A18',\n },\n 'APE-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xD10aBbC76679a20055E167BB80A24ac851b37056',\n },\n 'ARPA-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xc40ec815A2f8eb9912BD688d3bdE6B6D50A37ff2',\n },\n 'ATOM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x15c8eA24Ba2d36671Fa22aD4Cff0a8eafe144352',\n },\n 'ATOM-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xDC4BDB458C6361093069Ca2aD30D74cc152EdC75',\n },\n 'AUD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x77F9710E7d0A19669A13c055F62cd80d313dF022',\n },\n 'AVAX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7',\n },\n 'AXS-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x8B4fC5b68cD50eAc1dD33f695901624a4a1A0A8b',\n },\n 'BADGER-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x58921Ac140522867bf50b9E009599Da0CA4A2379',\n },\n 'BADGER-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x66a47b7206130e6FF64854EF0E1EDfa237E65339',\n },\n 'BAL-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xC1438AA3823A6Ba0C159CfA8D98dF5A994bA120b',\n },\n 'BAL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xdF2917806E30300537aEB49A7663062F4d1F2b5F',\n },\n 'BAND-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0BDb051e10c9718d1C29efbad442E88D38958274',\n },\n 'BAND-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x919C77ACc7373D000b329c1276C76586ed2Dd19F',\n },\n 'BAT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94',\n },\n 'BCH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x9F0F69428F923D6c95B781F89E165C9b2df9789D',\n },\n 'BIT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7b33EbfA52F215a30FaD5a71b3FeE57a4831f1F0',\n },\n 'BNB-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xc546d2d06144F9DD42815b8bA46Ee7B8FcAFa4a2',\n },\n 'BNB-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x14e613AC84a31f709eadbdF89C6CC390fDc9540A',\n },\n 'BNT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xCf61d1841B178fe82C8895fe60c2EDDa08314416',\n },\n 'BNT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x1E6cF0D433de4FE882A437ABC654F58E1e78548c',\n },\n 'BOND-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xdd22A54e05410D8d1007c38b5c7A3eD74b855281',\n },\n 'BRL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x971E8F1B779A5F1C36e1cd7ef44Ba1Cc2F5EeE0f',\n },\n 'BTC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xdeb288F737066589598e9214E782fa5A8eD689e8',\n },\n 'BTC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c',\n },\n 'BUSD-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x614715d2Af89E6EC99A233818275142cE88d1Cfd',\n },\n 'BUSD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x833D8Eb16D306ed1FbB5D7A2E019e106B960965A',\n },\n 'C98-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xE95CDc33E1F5BfE7eB26f45E29C6C9032B97db7F',\n },\n 'CAD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xa34317DB73e77d453b1B8d04550c44D10e981C8e',\n },\n 'CAKE-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xEb0adf5C06861d6c07174288ce4D0a8128164003',\n },\n 'CBETH-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xF017fcB346A1885194689bA23Eff2fE6fA5C483b',\n },\n 'CEL-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x75FbD83b4bd51dEe765b2a01e8D3aa1B020F9d33',\n },\n 'CELO-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x9ae96129ed8FE0C707D6eeBa7b90bB1e139e543e',\n },\n 'CHF-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x449d117117838fFA61263B61dA6301AA2a88B13A',\n },\n 'CNY-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xeF8A4aF35cd47424672E3C590aBD37FBB7A7759a',\n },\n 'COMP-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x1B39Ee86Ec5979ba5C322b826B3ECb8C79991699',\n },\n 'COMP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5',\n },\n 'CREAM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x82597CFE6af8baad7c0d441AA82cbC3b51759607',\n },\n 'CRO-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x00Cb80Cf097D9aA9A3779ad8EE7cF98437eaE050',\n },\n 'CRV-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x8a12Be339B0cD1829b91Adc01977caa5E9ac121e',\n },\n 'CRV-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f',\n },\n 'CSPR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x9e37a8Ee3bFa8eD6783Db031Dc458d200b226074',\n },\n 'CTSI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0a1d1b9847d602e789be38B802246161FFA24930',\n },\n 'CVX-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xC9CbF687f43176B302F03f5e58470b77D07c61c6',\n },\n 'CVX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xd962fC30A72A84cE50161031391756Bf2876Af5D',\n },\n 'DAI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x773616E4d11A78F511299002da57A0a94577F1f4',\n },\n 'DAI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9',\n },\n 'DASH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xFb0cADFEa136E9E343cfb55B863a6Df8348ab912',\n },\n 'DODO-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x9613A51Ad59EE375e6D8fa12eeef0281f1448739',\n },\n 'DOGE-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2465CefD3b488BE410b941b1d4b2767088e2A028',\n },\n 'DOT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734',\n },\n 'DYDX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x478909D4D798f3a1F11fFB25E4920C959B4aDe0b',\n },\n 'ENJ-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B',\n },\n 'ENJ-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x23905C55dC11D609D5d11Dc604905779545De9a7',\n },\n 'ENS-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x5C00128d4d1c2F4f652C267d7bcdD7aC99C16E16',\n },\n 'EOS-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x10a43289895eAff840E8d45995BBa89f9115ECEe',\n },\n 'ERN-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x0a87e12689374A4EF49729582B474a1013cceBf8',\n },\n 'ETC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xaEA2808407B7319A31A383B6F8B60f04BCa23cE2',\n },\n 'ETH-BTC': {\n [Chain.ETHEREUM_MAINNET]: '0xAc559F25B1619171CbC396a50854A3240b6A4e99',\n },\n 'ETH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419',\n },\n 'EUR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xb49f677943BC038e9857d61E7d053CaA2C1734C1',\n },\n 'EURT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x01D391A48f4F7339aC64CA2c83a07C22F95F587a',\n },\n 'FARM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x611E0d2709416E002A3f38085e4e1cf77c015921',\n },\n 'FB-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xCe1051646393087e706288C1B57Fd26446657A7f',\n },\n 'FEI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x7F0D2c2838c6AC24443d13e23d99490017bDe370',\n },\n 'FIL-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0606Be69451B1C9861Ac6b3626b99093b713E801',\n },\n 'FLOW-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xD9BdD9f5ffa7d89c846A5E3231a093AE4b3469D2',\n },\n 'FOR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x456834f736094Fb0AAD40a9BBc9D4a0f37818A54',\n },\n 'FORTH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7D77Fd73E468baECe26852776BeaF073CDc55fA0',\n },\n 'FRAX-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E',\n },\n 'FRAX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD',\n },\n 'FTM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x2DE7E4a9488488e0058B95854CC2f7955B35dC9b',\n },\n 'FXS-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x6Ebc52C8C1089be9eB3945C4350B68B8E4C2233f',\n },\n 'GBP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5',\n },\n 'GLM-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x83441C3A10F4D05de6e0f2E849A850Ccf27E6fa7',\n },\n 'GNO-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xA614953dF476577E90dcf4e3428960e221EA4727',\n },\n 'GOOGL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x36D39936BeA501755921beB5A382a88179070219',\n },\n 'GRT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x17D054eCac33D91F7340645341eFB5DE9009F1C1',\n },\n 'GRT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x86cF33a451dE9dc61a2862FD94FF4ad4Bd65A5d2',\n },\n 'GTC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x0e773A17a01E2c92F5d4c53435397E2bd48e215F',\n },\n 'GUSD-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x96d15851CBac05aEe4EFD9eA3a3DD9BDEeC9fC28',\n },\n 'GUSD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc',\n },\n 'HBAR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x38C5ae3ee324ee027D88c5117ee58d07c9b4699b',\n },\n 'HIGH-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xe2F95bC12FE8a3C35684Be7586C39fD7c0E5b403',\n },\n 'HT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xE1329B3f6513912CAf589659777b66011AEE5880',\n },\n 'ILV-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xf600984CCa37cd562E74E3EE514289e3613ce8E4',\n },\n 'IMX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xBAEbEFc1D023c0feCcc047Bff42E75F15Ff213E6',\n },\n 'INJ-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xaE2EbE3c4D20cE13cE47cbb49b6d7ee631Cd816e',\n },\n 'INR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x605D5c2fBCeDb217D7987FC0951B5753069bC360',\n },\n 'IOTX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x96c45535d235148Dc3ABA1E48A6E3cFB3510f4E2',\n },\n 'JPY-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3',\n },\n 'KNC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x656c0544eF4C98A6a98491833A89204Abb045d6b',\n },\n 'KNC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc',\n },\n 'KP3R-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xe7015CCb7E5F788B8c1010FC22343473EaaC3741',\n },\n 'KRW-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x01435677FB11763550905594A16B645847C1d0F3',\n },\n 'KSM-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x06E4164E24E72B879D93360D1B9fA05838A62EB5',\n },\n 'LDO-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x4e844125952D32AcdF339BE976c98E22F6F318dB',\n },\n 'LINK-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xDC530D9457755926550b59e8ECcdaE7624181557',\n },\n 'LINK-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c',\n },\n 'LON-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x13A8F2cC27ccC2761ca1b21d2F3E762445f201CE',\n },\n 'LRC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x160AC928A16C93eD4895C2De6f81ECcE9a7eB7b4',\n },\n 'LTC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x6AF09DF7563C363B5763b9102712EbeD3b9e859B',\n },\n 'LUSD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0',\n },\n 'MANA-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9',\n },\n 'MANA-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x56a4857acbcfe3a66965c251628B1c9f1c408C19',\n },\n 'MATIC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676',\n },\n 'MIM-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7A364e8770418566e3eb2001A96116E6138Eb32F',\n },\n 'MKR-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2',\n },\n 'MKR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xec1D1B3b0443256cc3860e24a46F108e699484Aa',\n },\n 'MLN-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xDaeA8386611A157B08829ED4997A8A62B557014C',\n },\n 'MSFT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x021Fb44bfeafA0999C7b07C4791cf4B859C3b431',\n },\n 'NEAR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xC12A6d1D827e23318266Ef16Ba6F397F2F91dA9b',\n },\n 'NFLX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x67C2e69c5272B94AF3C90683a9947C39Dc605ddE',\n },\n 'NMR-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x9cB2A01A7E64992d32A34db7cEea4c919C391f6A',\n },\n 'NMR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xcC445B35b3636bC7cC7051f4769D8982ED0d449A',\n },\n 'NZD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x3977CFc9e4f29C184D4675f4EB8e0013236e5f3e',\n },\n 'OCEAN-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x9b0FC4bb9981e5333689d69BdBF66351B9861E62',\n },\n 'OGN-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x2c881B6f3f6B5ff6C975813F87A4dad0b241C15b',\n },\n 'OHMv2-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x9a72298ae3886221820B1c878d12D872087D3a23',\n },\n 'OM-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xb9583cfBdEeacd2705546F392E43F8E03eB92216',\n },\n 'OMG-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x57C9aB3e56EE4a83752c181f241120a3DBba06a1',\n },\n 'OMG-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7D476f061F8212A8C9317D5784e72B4212436E93',\n },\n 'ONT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xcDa3708C5c2907FCca52BB3f9d3e4c2028b89319',\n },\n 'ORN-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xbA9B2a360eb8aBdb677d6d7f27E12De11AA052ef',\n },\n 'OXT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xd75AAaE4AF0c398ca13e2667Be57AF2ccA8B5de6',\n },\n 'PAXG-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x9B97304EA12EFed0FAd976FBeCAad46016bf269e',\n },\n 'PERP-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x3b41D5571468904D4e53b6a8d93A6BaC43f02dC9',\n },\n 'PERP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x01cE1210Fe8153500F60f7131d63239373D7E26C',\n },\n 'PHA-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2B1248028fe48864c4f1c305E524e2e6702eAFDF',\n },\n 'RAI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x4ad7B025127e89263242aB68F0f9c4E5C033B489',\n },\n 'REN-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x3147D7203354Dc06D9fd350c7a2437bcA92387a4',\n },\n 'REN-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x0f59666EDE214281e956cb3b2D0d69415AfF4A01',\n },\n 'REQ-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2F05888D185970f178f40610306a0Cc305e52bBF',\n },\n 'RLC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x4cba1e1fdc738D0fe8DB3ee07728E2Bc4DA676c6',\n },\n 'RUNE-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x875D60C44cfbC38BaA4Eb2dDB76A767dEB91b97e',\n },\n 'SAND-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x35E3f7E558C04cE7eEE1629258EcbbA03B36Ec56',\n },\n 'SGD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xe25277fF4bbF9081C75Ab0EB13B4A13a721f3E13',\n },\n 'SHIB-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x8dD1CD88F43aF196ae478e91b9F5E4Ac69A97C61',\n },\n 'SNX-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c',\n },\n 'SNX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699',\n },\n 'SOL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x4ffC43a60e009B551865A93d232E33Fce9f01507',\n },\n 'SPELL-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8',\n },\n 'SRM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x050c048c9a0CD0e76f166E2539F87ef2acCEC58f',\n },\n 'STETH-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x86392dC19c0b719886221c78AB11eb8Cf5c52812',\n },\n 'SUSD-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757',\n },\n 'SUSHI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xe572CeF69f43c2E488b33924AF04BDacE19079cf',\n },\n 'SUSHI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7',\n },\n 'SXP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xFb0CfD6c19e25DB4a08D8a204a387cEa48Cc138f',\n },\n 'TOMO-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x3d44925a8E9F9DFd90390E58e92Ec16c996A331b',\n },\n 'TRIBE-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x84a24deCA415Acc0c395872a9e6a63E27D6225c8',\n },\n 'TRU-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x26929b85fE284EeAB939831002e1928183a10fb1',\n },\n 'TRY-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xB09fC5fD3f11Cf9eb5E1C5Dba43114e3C9f477b5',\n },\n 'TSLA-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x1ceDaaB50936881B3e449e47e40A2cDAF5576A4a',\n },\n 'TUSD-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x3886BA987236181D98F2401c507Fb8BeA7871dF2',\n },\n 'TUSD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xec746eCF986E2927Abd291a2A1716c940100f8Ba',\n },\n 'UNI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e',\n },\n 'UNI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x553303d460EE0afB37EdFf9bE42922D8FF63220e',\n },\n 'USDC-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',\n },\n 'USDC-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6',\n },\n 'USDK-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xfAC81Ea9Dd29D8E9b212acd6edBEb6dE38Cb43Af',\n },\n 'USDN-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x7a8544894F7FD0C69cFcBE2b4b2E277B0b9a4355',\n },\n 'USDP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3',\n },\n 'USDT-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',\n },\n 'USDT-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',\n },\n 'WBTC-BTC': {\n [Chain.ETHEREUM_MAINNET]: '0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23',\n },\n 'WING-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x134fE0a225Fb8e6683617C13cEB6B3319fB4fb82',\n },\n 'WNXM-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xe5Dc0A609Ab8bCF15d3f35cFaa1Ff40f521173Ea',\n },\n 'WTI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xf3584F4dd3b467e73C2339EfD008665a70A4185c',\n },\n 'XAG-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x379589227b15F1a12195D3f2d90bBc9F31f95235',\n },\n 'XAU-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6',\n },\n 'XCN-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xeb988B77b94C186053282BfcD8B7ED55142D3cAB',\n },\n 'XMR-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xFA66458Cce7Dd15D8650015c4fce4D278271618F',\n },\n 'XRP-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12',\n },\n 'YFI-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x7c5d4F8345e66f68099581Db340cd65B078C41f4',\n },\n 'YFI-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xA027702dbb89fbd58938e4324ac03B58d812b0E1',\n },\n 'YFII-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0xaaB2f6b45B28E962B3aCd1ee4fC88aEdDf557756',\n },\n 'ZRX-ETH': {\n [Chain.ETHEREUM_MAINNET]: '0x2Da4983a622a8498bb1a21FaE9D8F6C664939962',\n },\n 'ZRX-USD': {\n [Chain.ETHEREUM_MAINNET]: '0x2885d15b8Af22648b98B122b22FDF4D2a56c6023',\n },\n 'sUSD-USD': {\n [Chain.ETHEREUM_MAINNET]: '0xad35Bd71b9aFE6e4bDc266B345c198eaDEf9Ad94',\n },\n}\n","export const ProxyOracleAbi = [\n {\n inputs: [],\n name: 'price',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'asset', type: 'address' }],\n name: 'peek',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapV3Abi = [\n {\n inputs: [],\n name: 'slot0',\n outputs: [\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { AaveOracleAbi } from '../../abis/oracle/AaveOracle'\nimport { UniswapV2PairAbi } from '../../abis/oracle/UniswapV2Pair'\nimport { ChainLinkAggregatorAbi } from '../../abis/oracle/ChainLinkAggregator'\nimport { Api3OracleAbi } from '../../abis/oracle/Api3Oracle'\nimport { RWADynamicOracleAbi } from '../../abis/oracle/RWADynamicOracle'\n\nimport { api3OracleAddresses } from './addresses/api3'\nimport { AAVE_V2_LENDERS, Lender } from '@1delta/lender-registry'\nimport { Chain } from '@1delta/chain-registry'\nimport { formatUnits } from 'viem'\nimport { getAaveAssets } from '../../assets'\nimport {\n chainlinkOracles,\n getChainLinkKeys,\n ChainlinkAggregatorIndexes,\n} from './addresses/chainlink'\nimport { fetchDefillamaData } from '../defillama'\nimport { fetchPendlePrices } from '../pendle'\nimport { getAavesForChain } from '../../utils'\nimport {\n formatAavePrice,\n formatMorphoPrice,\n parseRawAmount,\n} from '../../utils/parsing'\nimport { ProxyOracleAbi } from '../../abis/oracle/ProxyOracle'\nimport { multicallRetry } from '@1delta/providers'\nimport { TokenList } from '../../types'\nimport { UniswapV3Abi } from '../../abis/oracle/UniV3'\nimport { aaveOracles, morphoTypeOracles } from '@1delta/data-sdk'\nimport { CometAbi } from '../../abis/compound-v3/Comet'\nimport { VenusLensAbi } from '../../abis/compound-v2/VenusLens'\n\nconst LENDLE_PAIR_MANTLE = '0x4c57BE599d0e0414785943569E9B6A66dA79Aa6b'\nconst AU_PAIR_MANTLE = '0x709503fbb50b10f921e812c48fbd5c5522a0b20c'\nconst WMNT_USDT_PAIR = '0x3e5922cd0cec71dc2d60ec8b36aa4c05b7c1672f'\nconst RWA_DYNAMIC_ORACLE = '0xA96abbe61AfEdEB0D14a20440Ae7100D9aB4882f'\n\ninterface OracleData {\n [key: string]: number\n}\n\ntype QueryAave = { oracle: string; assets: string[]; fork: string }\n\n/**\n * Fetches Aave and uniswap V2 oracle data\n */\nexport const fetchMainPrices = async (\n chainIds: string[],\n rpcOverrides?: { [chainId: string]: string[] },\n lists: { [chainId: string]: { list: TokenList } } = {},\n retries = 3,\n batchSize: number | undefined = undefined,\n allowFailure = true,\n): Promise<OracleData> => {\n const aaves = getAavesForChain()\n const multicallPromises = chainIds.map(async (chainId) => {\n let aaveForks = aaves?.[chainId]\n if (chainId === Chain.KAIA_MAINNET)\n // paused\n aaveForks = aaveForks?.filter((a) => a !== Lender.KLAP)\n if (chainId === Chain.GNOSIS)\n // shutdown\n aaveForks = aaveForks?.filter((a) => a !== Lender.AGAVE)\n if (chainId === Chain.ETHEREUM_MAINNET)\n // invalid values\n aaveForks = aaveForks?.filter(\n (a) =>\n a !== Lender.ZEROLEND_STABLECOINS_RWA &&\n a !== Lender.ZEROLEND_ETH_LRTS,\n )\n if (chainId === Chain.SCROLL)\n // invalid values\n aaveForks = aaveForks?.filter((a) => a !== Lender.LORE)\n if (chainId === Chain.BNB_SMART_CHAIN_MAINNET)\n // invalid values\n aaveForks = aaveForks?.filter((a) => a !== Lender.AVALON_USDX)\n if (chainId === Chain.MANTA_PACIFIC_MAINNET)\n // broken\n aaveForks = aaveForks?.filter((a) => a !== Lender.ZEROLEND)\n\n const reservesToQuery =\n aaveForks?.map((a) => ({\n fork: a,\n assets: getAaveAssets(chainId, a),\n })) ?? []\n\n const handled: Set<string> = new Set()\n const queries: QueryAave[] = []\n\n for (const e of reservesToQuery) {\n const newAssets = e.assets.filter((a) => !handled.has(a))\n if (newAssets.length > 0) {\n queries.push({\n assets: newAssets,\n // @ts-ignore\n oracle: aaveOracles()?.[e.fork]?.[chainId],\n fork: e.fork,\n })\n newAssets.forEach((a) => handled.add(a))\n }\n }\n\n // use new data: {chainId->fork->data[]}\n const morphoTypeOraclesObtained = morphoTypeOracles()\n let morphoQueries: any = []\n let listaCalls: any = []\n // add lista and morpho prices\n // note that we exclude the ones that we already have\n // this is needed to drasically reduce the calls (from 100s to 10s)\n Object.entries(morphoTypeOraclesObtained[chainId] ?? {}).forEach(\n ([fork, datas]: [string, any]) => {\n datas.forEach((data: any) => {\n if (fork === Lender.LISTA_DAO) {\n if (!handled.has(data.collateralAsset))\n listaCalls.push({\n asset: data.collateralAsset,\n address: data.oracle,\n name: 'peek',\n params: [data.collateralAsset],\n })\n if (!handled.has(data.loanAsset))\n listaCalls.push({\n asset: data.loanAsset,\n address: data.oracle,\n name: 'peek',\n params: [data.loanAsset],\n })\n } else if (\n fork === Lender.MORPHO_BLUE &&\n (!handled.has(data.collateralAsset) || !handled.has(data.loanAsset))\n ) {\n morphoQueries.push({\n fork,\n ...data,\n })\n }\n })\n },\n )\n\n const morphoCalls = getMorphoCalls(morphoQueries)\n const aaveCalls = getAaveCalls(queries)\n const [chainlinkCalls, chainlinkNames] = getChainLinkCalls(chainId)\n const uniswapCalls = getUniswapV2Calls(chainId)\n const uniswapV3Calls = getUniswapV3Calls(chainId)\n const [api3Calls, api3Names] = getApi3Calls(chainId)\n const [rwaCalls, rwaNames] = getRWADynamicOracleCalls(chainId)\n const [cometCalls, cometNames] = getCometCalls(chainId)\n const [compoundV2Calls, compoundV2Names] = getCompoundV2Calls(chainId)\n\n const allCalls = [\n ...chainlinkCalls,\n ...aaveCalls,\n ...uniswapCalls,\n ...uniswapV3Calls,\n ...api3Calls,\n ...rwaCalls,\n ...cometCalls,\n ...compoundV2Calls,\n ...morphoCalls,\n ...listaCalls,\n ]\n\n const abis = [\n ...ChainLinkAggregatorAbi,\n ...UniswapV2PairAbi,\n ...UniswapV3Abi,\n ...AaveOracleAbi,\n ...Api3OracleAbi,\n ...RWADynamicOracleAbi,\n ...ProxyOracleAbi,\n ...CometAbi,\n ...VenusLensAbi,\n ]\n\n const result = await multicallRetry(\n chainId,\n allCalls,\n abis,\n batchSize,\n retries,\n 0,\n allowFailure,\n rpcOverrides,\n )\n\n return {\n chainId,\n result,\n meta: {\n queries,\n chainlink: { calls: chainlinkCalls, names: chainlinkNames },\n api3: { calls: api3Calls, names: api3Names },\n rwa: { calls: rwaCalls, names: rwaNames },\n comet: { calls: cometCalls, names: cometNames },\n compoundV2: { calls: compoundV2Calls, names: compoundV2Names },\n morpho: { queries: morphoQueries },\n listaCalls,\n uniswapCalls,\n uniswapV3Calls,\n aaveCalls,\n },\n }\n })\n\n const otherDataPromises = [fetchDefillamaData(), fetchPendlePrices(lists)]\n const [chainResults, ...otherResults] = await Promise.all([\n Promise.all(multicallPromises),\n ...otherDataPromises,\n ])\n\n let allPrices: OracleData = { ...otherResults[0], ...otherResults[1] }\n\n // Parse all except morpho first\n for (const {\n chainId,\n result,\n meta: {\n queries,\n chainlink,\n api3,\n rwa,\n uniswapCalls,\n uniswapV3Calls,\n comet,\n compoundV2,\n aaveCalls,\n },\n } of chainResults) {\n let offset = 0\n\n const chainlinkSlice = result.slice(offset, offset + chainlink.calls.length)\n const chainlinkData = parseChainLinkResults(\n chainId,\n chainlinkSlice,\n chainlink.names,\n )\n offset += chainlink.calls.length\n\n const aaveSlice = result.slice(offset, offset + aaveCalls.length)\n const aaveData = parseAaveResults(\n chainId,\n aaveSlice,\n queries,\n lists[chainId]?.list,\n allPrices,\n )\n offset += aaveCalls.length\n\n const uniswapSlice = result.slice(offset, offset + uniswapCalls.length)\n const uniswapData = parseUniswapV2results(uniswapSlice, chainId, aaveData)\n offset += uniswapCalls.length\n\n const uniswapV3Slice = result.slice(offset, offset + uniswapV3Calls.length)\n const uniswapV3Data = parseUniswapV3results(\n uniswapV3Slice,\n chainId,\n allPrices,\n )\n offset += uniswapV3Calls.length\n\n const api3Slice = result.slice(offset, offset + api3.calls.length)\n const api3Data = parseApi3Results(chainId, api3Slice, api3.names)\n offset += api3.calls.length\n\n const rwaSlice = result.slice(offset, offset + rwa.calls.length)\n const rwaData = parseRWADynamicOracleResults(chainId, rwaSlice, rwa.names)\n offset += rwa.calls.length\n\n const cometSlice = result.slice(offset, offset + comet.calls.length)\n const cometData = parseCometResults(chainId, cometSlice, comet.names)\n offset += comet.calls.length\n\n const compoundV2Slice = result.slice(\n offset,\n offset + compoundV2.calls.length,\n )\n const compoundV2Data = parseCompoundV2Results(\n chainId,\n compoundV2Slice,\n compoundV2.names,\n aaveData,\n )\n offset += comet.calls.length\n\n allPrices = {\n ...allPrices,\n ...chainlinkData,\n ...aaveData,\n ...uniswapData,\n ...uniswapV3Data,\n ...api3Data,\n ...rwaData,\n ...cometData,\n ...compoundV2Data,\n }\n }\n\n // Parse morpho data (needs allPrices)\n for (const {\n chainId,\n result,\n meta: {\n morpho,\n listaCalls,\n chainlink,\n aaveCalls,\n uniswapCalls,\n uniswapV3Calls,\n api3,\n rwa,\n comet,\n compoundV2,\n },\n } of chainResults) {\n const morphoOffset =\n chainlink.calls.length +\n aaveCalls.length +\n uniswapCalls.length +\n uniswapV3Calls.length +\n api3.calls.length +\n comet.calls.length +\n compoundV2.calls.length +\n rwa.calls.length\n const listaOffset = morphoOffset + morpho.queries.length\n const morphoResult = result.slice(morphoOffset, listaOffset)\n const listaResult = result.slice(listaOffset)\n\n const morphoData = parseMorphoResults(\n chainId,\n morphoResult,\n morpho.queries,\n allPrices,\n lists[chainId]?.list,\n )\n\n const listaData = parseListaResults(\n chainId,\n listaResult,\n listaCalls,\n allPrices,\n lists[chainId]?.list,\n )\n\n allPrices = {\n ...allPrices,\n ...morphoData,\n ...listaData,\n }\n }\n\n // Merge with defillama + pendle prices\n for (const r of otherResults) {\n allPrices = { ...allPrices, ...r }\n }\n\n return allPrices\n}\n\n/**\n * Gets the calls foir the uniswap pools\n * @param chainId network id\n * @returns array of calls\n */\nconst getUniswapV2Calls = (chainId: string) => {\n switch (chainId) {\n case Chain.MANTLE:\n return [\n {\n address: WMNT_USDT_PAIR,\n name: 'getReserves',\n params: [],\n },\n {\n address: LENDLE_PAIR_MANTLE,\n name: 'getReserves',\n params: [],\n },\n {\n address: AU_PAIR_MANTLE,\n name: 'getReserves',\n params: [],\n },\n ]\n case Chain.HYPEREVM: {\n return [\n {\n // PRIME/HYPE\n address: '0x981F145a71Da6DF4A7cBe892807782c9CC9a5515',\n name: 'getReserves',\n params: [],\n },\n ]\n }\n default:\n return []\n }\n}\n\n/**\n * Gets the calls foir the uniswap pools\n * @param chainId network id\n * @returns array of calls\n */\nconst getCometCalls = (\n chainId: string,\n): [\n {\n address: string\n name: string\n params: any[]\n }[],\n string[],\n] => {\n switch (chainId) {\n case Chain.ETHEREUM_MAINNET: {\n const names = [\n 'Staked FRAX::SFRAX', //\n 'Elixir deUSD::DEUSD',\n 'Elixir Staked deUSD::SDEUSD',\n ]\n return [\n [\n {\n address: '0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840', // usdt comet\n name: 'getPrice',\n params: [\n '0x8C74B2811D2F1aD65517ADB5C65773c1E520ed2f', // sfrax\n ],\n },\n {\n address: '0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840',\n name: 'getPrice',\n params: [\n '0x471a6299C027Bd81ed4D66069dc510Bd0569f4F8', // deusd\n ],\n },\n {\n address: '0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840',\n name: 'getPrice',\n params: [\n '0xE4829421ae79f2F44716cCbbb40751cd6Be3d483', // sdeusd\n ],\n },\n ],\n names,\n ]\n }\n default:\n return [[], []]\n }\n}\n\nconst parseCometResults = (chainId: string, data: any[], names: string[]) => {\n switch (chainId) {\n case Chain.ETHEREUM_MAINNET: {\n const targetDecimals = [8, 8, 8]\n return Object.assign(\n {},\n ...data.map((entry, index) => {\n return {\n [names[index]]: Number(\n parseRawAmount(entry ?? '0', targetDecimals[index]),\n ),\n }\n }),\n )\n }\n default: {\n return {}\n }\n }\n}\n\n/**\n * Gets the calls foir the uniswap pools\n * @param chainId network id\n * @returns array of calls\n */\nconst getCompoundV2Calls = (\n chainId: string,\n): [\n {\n address: string\n name: string\n params: any[]\n }[],\n [string, number][],\n] => {\n switch (chainId) {\n case Chain.ARBITRUM_ONE: {\n const feedInfo: any = [\n ['GMX Market ETH/USD::GM [WETH-USDC]', 18], //\n ['GMX Market BTC/USD::GM [WBTC-USDC]', 18],\n ]\n return [\n [\n {\n address: '0x53F34FF95367B2A4542461a6A63fD321F8da22AD', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x9bb8cEc9C0d46F53b4f2173BB2A0221F66c353cC', //\n ],\n },\n {\n address: '0x53F34FF95367B2A4542461a6A63fD321F8da22AD',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x4f3a73f318C5EA67A86eaaCE24309F29f89900dF', //\n ],\n },\n ],\n feedInfo,\n ]\n }\n case Chain.BNB_SMART_CHAIN_MAINNET: {\n const feedInfo: any = [\n ['Cardano Token::ADA', 18], //\n ['Astherus Staked BNB::asBNB', 18],\n ['THE', 18],\n ['Trust Wallet::TWT', 18],\n ['Wrapped Binance Beacon ETH::wBETH', 18],\n ['Tron V2::TRX', 30],\n ['LUNA', 18],\n ['UST', 18],\n ['Tron::TRX', 18],\n ['Cannon::CAN', 18],\n ['Beacon ETH::BETH', 18],\n ['Filecoin::FIL', 18],\n ['Polkadot Token::DOT', 18],\n ['Bitcoin Cash Token::BCH', 18],\n ['XRP Token::XRP', 18],\n ['Litecoin Token::LTC', 18],\n ['Venus::XVS', 18],\n ['SXP', 18],\n ['USD1::USD1', 18],\n ['TUSD', 18],\n ['Staked Lista BNB::slisBNB', 18],\n ['FDUSD', 18],\n ['Cannon::CAN', 18],\n ]\n return [\n [\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x9a0af7fdb2065ce470d72664de73cae409da28ec', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xcc1db43a06d97f736c7b045aedd03c6707c09bdf', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x86e06eafa6a1ea631eab51de500e3d474933739f', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x4d41a36d04d97785bcea57b057c412b278e6edcc', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x6cfdec747f37daf3b87a35a1d9c8ad3063a1a8a0', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xc5d3466aa484b040ee977073fcf337f2c00071c1', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xb91a659e88b51474767cd97ef3196a3e7cedd2c8', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x78366446547d062f45b4c0f320cdaa6d710d87bb', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x61edcfe8dd6ba3c891cb9bec2dc7657b3b422e93', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xebd0070237a0713e8d94fef1b728d3d993d290ef', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x972207a639cc1b374b893cc33fa251b55ceb7c07', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xf91d58b5ae142dacc749f58a49fcbac340cb0343', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x1610bc33319e9398de5f57b33a5b184c806ad217', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x5f0388ebc2b94fa8e123f404b79ccf5f40b29176', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xb248a295732e0225acd3337607cc01068e3b9c10', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x57a5297f2cb2c0aac9d554660acd6d385ab50c6b', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x151b1e2635a717bcdc836ecd6fbb62b674fe3e1d', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x2ff3d0f6990a40261c66e1ff2017acbc282eb6d0', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x0c1da220d301155b87318b90692da8dc43b67340', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x08ceb3f4a7ed3500ca0982bcd0fc7816688084c3', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x89c910eb8c90df818b4649b508ba22130dc73adc', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xc4ef4229fec74ccfe17b2bdef7715fac740ba0ba', //\n ],\n },\n {\n address: '0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xebd0070237a0713e8d94fef1b728d3d993d290ef', //\n ],\n },\n ],\n feedInfo,\n ]\n }\n case Chain.ETHEREUM_MAINNET: {\n const feedInfo = [\n ['SFRXETH', 18], //\n ['Super Symbiotic LRT::weETHs', 18],\n ['USDC-1 yVault::yvUSDC-1', 30],\n ['USDS-1 yVault::yvUSDS-1', 18],\n ['USDT-1 yVault::yvUSDT-1', 30],\n ['WETH-1 yVault::yvWETH-1', 18],\n ]\n return [\n [\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x17142a05fe678e9584FA1d88EfAC1bF181bF7ABe', //\n ],\n },\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xc42E4bfb996ED35235bda505430cBE404Eb49F77', //\n ],\n },\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xf87c0a64dc3a8622D6c63265FA29137788163879', //\n ],\n },\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x520d67226Bc904aC122dcE66ed2f8f61AA1ED764', //\n ],\n },\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x475d0C68a8CD275c15D1F01F4f291804E445F677', //\n ],\n },\n {\n address: '0x277950603178BDD223eB53B9b7cF5D0053aa3473',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xba3916302cBA4aBcB51a01e706fC6051AaF272A0', //\n ],\n },\n ],\n feedInfo as any,\n ]\n }\n case Chain.PLASMA_MAINNET: {\n const feedInfo = [\n ['Staked Plasma USD::splUSD', 18], //\n ['Plasma USD::plUSD', 18],\n // ['Staked Stream USD::xUSD', 30],\n ]\n return [\n [\n {\n address: '0xE67B5097b8dC55aCECaB82102A3042078f016550', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x213824b154458Edb345921bB864d741e285b99F4', //\n ],\n },\n {\n address: '0xE67B5097b8dC55aCECaB82102A3042078f016550', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xa82846aEFCC2DE156b61F7f5c35C5a4680D5D297', //\n ],\n },\n // {\n // address: '0xE67B5097b8dC55aCECaB82102A3042078f016550',\n // name: 'vTokenUnderlyingPrice',\n // params: [\n // '0xbaD1e57EbF56baCb7c39E3ddcD8Fe4DCC2fd4198', //\n // ],\n // },\n ],\n feedInfo as any,\n ]\n }\n case Chain.SONIC_MAINNET: {\n const feedInfo = [\n ['U$D::U$D', 30], //\n ['HLP0::HLP0', 30],\n ['Enclabs Trevee VeETH::enclabsVeETH', 18],\n ['Enclabs Trevee VeUSD::enclabsVeUSD::146::0', 30],\n ['Enclabs Trevee VeUSD::enclabsVeUSD', 30],\n ['Wrapped Stability USD::wmetaUSD', 18],\n ['Bridged EURC::EURC.e', 30],\n ['SJ Yield Token scUSD::YT-scUSD', 18],\n ['Rings scETH::SCETH', 18],\n ['Rings scUSD::SCUSD', 30],\n ['Wrapped Origin Sonic::WOS', 18],\n ]\n return [\n [\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x0e528ae2376Bf60B5c6e4c62aE461F422052b457', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x05C132E75D2775Ca4257FCf824169d99d593eBF1', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x14515De791C58C430b85D837df3E3ac455B88fEd', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x44D5602E26c1C1fD5F284036023e2750F3d855a0', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3', // lens\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x3f0c9dcCa72058950327b5D4a5783fB0CbA520Ce', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x1D801dC616C79c499C5d38c998Ef2D0D6Cf868e8', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x6fFD0B54E2B74FdaFBceC853145372066FE98fC1', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0xAb1fbEE94D9ba79269B3e479cE5D78C60F148716', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x04568dB12221D60C93e1db9Cb7933aD6b7c4280C', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x6770aF27FC5233A70B85BFf631061400a09d2e1c', //\n ],\n },\n {\n address: '0x3567B16050cB90236997eF47B1941502e85d65f3',\n name: 'vTokenUnderlyingPrice',\n params: [\n '0x7FD79432cC704582235DF11b92b783f07ED40e13', //\n ],\n },\n ],\n feedInfo as any,\n ]\n }\n case Chain.MOONBEAM: {\n const feedInfo = [\n ['xcDOT::DOT', 26],\n // ['Bridged WETH (Nomad)::WETH', 18],\n // ['Bridged WBTC (Nomad)::WBTC', 28],\n // ['Bridged USDC (Nomad)::USDC', 18],\n ['Wrapped BTC (Wormhole)::wh.WBTC', 28],\n ['USD Coin (Wormhole)::wh.USDC', 30],\n ]\n return [\n [\n {\n address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n name: 'getUnderlyingPrice',\n params: ['0xd22da948c0ab3a27f5570b604f3adef5f68211c3'],\n },\n // {\n // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n // name: 'getUnderlyingPrice',\n // params: ['0xc3090f41eb54a7f18587fd6651d4d3ab477b07a4'],\n // },\n // {\n // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n // name: 'getUnderlyingPrice',\n // params: ['0x24a9d8f1f350d59cb0368d3d52a77db29c833d1d'],\n // },\n // {\n // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n // name: 'getUnderlyingPrice',\n // params: ['0x8f552a71efe5eefc207bf75485b356a0b3f01ec9'],\n // },\n {\n address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n name: 'getUnderlyingPrice',\n params: ['0xaaa20c5a584a9fecdfedd71e46da7858b774a9ce'],\n },\n {\n address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',\n name: 'getUnderlyingPrice',\n params: ['0x744b1756e7651c6d57f5311767eafe5e931d615b'],\n },\n ],\n feedInfo as any,\n ]\n }\n case Chain.OP_MAINNET: {\n const feedInfo = [\n ['Velodrome V2::VELO', 18],\n ['Velodrome::VELO', 18],\n ]\n return [\n [\n {\n address: '0x2f1490bD6aD10C9CE42a2829afa13EAc0b746dcf',\n name: 'getUnderlyingPrice',\n params: ['0x866b838b97Ee43F2c818B3cb5Cc77A0dc22003Fc'],\n },\n {\n address: '0x2f1490bD6aD10C9CE42a2829afa13EAc0b746dcf',\n name: 'getUnderlyingPrice',\n params: ['0x21d851585840942b0ef9f20d842c00c5f3735eaf'],\n },\n ],\n feedInfo as any,\n ]\n }\n case Chain.BASE: {\n const feedInfo = [\n ['WELL', 18],\n ['MORPHO', 18],\n ['Mamo::MAMO', 18],\n ]\n return [\n [\n {\n address: '0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0',\n name: 'getUnderlyingPrice',\n params: ['0xdC7810B47eAAb250De623F0eE07764afa5F71ED1'],\n },\n {\n address: '0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0',\n name: 'getUnderlyingPrice',\n params: ['0x6308204872bdb7432df97b04b42443c714904f3e'],\n },\n {\n address: '0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0',\n name: 'getUnderlyingPrice',\n params: ['0x2F90Bb22eB3979f5FfAd31EA6C3F0792ca66dA32'],\n },\n ],\n feedInfo as any,\n ]\n }\n default:\n return [[], []]\n }\n}\n\nfunction getValue(v: any) {\n if (typeof v === 'bigint') return v.toString()\n if (v.underlyingPrice) return v?.underlyingPrice?.toString() ?? '0'\n return v\n}\nconst parseCompoundV2Results = (\n chainId: string,\n data: any[],\n names: [string, number][],\n other: any = {},\n) => {\n return Object.assign(\n {},\n ...data.map((entry, index) => {\n const val = getValue(entry)\n let price = Number(parseRawAmount(val, names[index][1]))\n const name = names[index][0]\n if (name === 'SFRXETH') {\n price = other['ETH'] * price\n }\n return {\n [name]: price,\n }\n }),\n )\n}\n\n/**\n * Gets the calls foir the uniswap pools\n * @param chainId network id\n * @returns array of calls\n */\nconst getUniswapV3Calls = (chainId: string) => {\n switch (chainId) {\n case Chain.HEMI_NETWORK:\n return [\n {\n // HMEU/USDC pool\n address: '0xe2f1012fa5e8709ed38888c15615207fac278b57',\n name: 'slot0',\n params: [],\n },\n ]\n case Chain.BASE:\n return [\n //mseth/eth\n {\n address: '0x74f72788f4814d7ff3c49b44684aa98eee140c0e',\n name: 'slot0',\n params: [],\n },\n ]\n default:\n return []\n }\n}\n\nconst BASE_MULTI = 10n ** 18n\n\nexport function getV3PriceFromSqrt(\n sqrtPrice: bigint,\n t0d: number,\n t1d: number,\n) {\n const scalarNumerator = 10n ** BigInt(t0d)\n const scalarDenominator = 10n ** BigInt(t1d)\n const sqrtP = BigInt(sqrtPrice)\n const inputNumerator = sqrtP * sqrtP\n const inputDenominator = 2n ** 192n\n const adjustedForDecimalsNumerator = scalarDenominator * inputDenominator\n const adjustedForDecimalsDenominator = scalarNumerator * inputNumerator\n const price0to1 = Number(\n formatUnits(\n (adjustedForDecimalsDenominator * BASE_MULTI) /\n adjustedForDecimalsNumerator,\n 18, // normalize amount to 18\n ),\n ) // in token1 / token0\n return price0to1\n}\n\nconst parseUniswapV3results = (data: any[], chainId: string, prices: any) => {\n switch (chainId) {\n case Chain.HEMI_NETWORK: {\n let uniswapData: any = {}\n if (data.length > 0) {\n const sqrtPriceX96 = data[0]\n const price = getV3PriceFromSqrt(sqrtPriceX96, 18, 6)\n uniswapData['Hemi::HEMI'] = price\n }\n return uniswapData\n }\n case Chain.BASE: {\n let uniswapData: any = {}\n if (data.length > 0) {\n const sqrtPriceX96 = data[0]\n const price = getV3PriceFromSqrt(sqrtPriceX96, 18, 18)\n uniswapData['Metronome Synth ETH::msETH'] = prices['ETH'] / price\n }\n return uniswapData\n }\n default:\n return {}\n }\n}\n\n/**\n * Create calldata for aave oracles\n * @param chainId network\n * @param addressesAaveUnderlyings address array\n * @returns call data\n */\nconst getAaveCalls = (query: QueryAave[]) => {\n if (query.length === 0) return []\n return query\n .map(({ oracle, assets }) => ({\n address: oracle,\n name: 'getAssetsPrices',\n params: [assets],\n }))\n .flat()\n}\n\n/**\n * Create calldata for aave oracles\n * @param chainId network\n * @param addressesAaveUnderlyings address array\n * @returns call data\n */\nconst getMorphoCalls = (query: any[] = []) => {\n if (query.length === 0) return []\n return query.map(({ oracle }) => ({\n address: oracle,\n name: 'price',\n params: [],\n }))\n}\n\n/**\n * Create calldata for chainLink oracles\n * @param chainId network\n * @param addressesAaveUnderlyings address array\n * @returns call data\n */\nconst getChainLinkCalls = (\n chainId: string,\n): [\n {\n address: string\n name: string\n params: any[]\n }[],\n string[],\n] => {\n switch (chainId) {\n case Chain.MANTLE:\n return [[], []]\n default: {\n const keys = getChainLinkKeys(chainId).filter(\n (k) => k.split('-')[1] === 'USD',\n )\n // @ts-ignore\n const addresses = keys.map((k) => chainlinkOracles[k][chainId])\n return [\n addresses.map((tk) => {\n return {\n address: tk,\n name: 'latestRoundData',\n params: [],\n }\n }),\n keys.map((k) => k.split('-')[0]),\n ]\n }\n }\n}\n\n/**\n * Processes data creeated from fetch through 'getUniswapV2Calls\n * @param data the result data array slice from the multicall\n * @param chainId network id\n * @returns price dictionary asset->number\n */\nconst parseUniswapV2results = (data: any[], chainId: string, prices: any) => {\n switch (chainId) {\n case Chain.MANTLE: {\n let uniswapData: any = {}\n if (data.length > 0) {\n const reserves = data[1]\n // lendle and wmnt are respective token0s\n const lendleReserve = Number(parseRawAmount(reserves[0].toString(), 18))\n const wmntReserve = Number(parseRawAmount(reserves[1].toString(), 18))\n\n const auReserves = data[2]\n const auReserve = Number(parseRawAmount(auReserves[1].toString(), 18))\n const wmntReserve_au = Number(\n parseRawAmount(auReserves[0].toString(), 18),\n )\n\n const reservesWmntUsdt = data[0]\n const usdtReserve = Number(\n parseRawAmount(reservesWmntUsdt[0].toString(), 6),\n )\n const wmnt2Reserve = Number(\n parseRawAmount(reservesWmntUsdt[1].toString(), 18),\n )\n const lendPrice =\n (wmntReserve / lendleReserve / wmnt2Reserve) * usdtReserve\n const auPrice =\n (wmntReserve_au / auReserve / wmnt2Reserve) * usdtReserve\n uniswapData['LEND'] = lendPrice\n uniswapData['AU'] = auPrice\n }\n return uniswapData\n }\n case Chain.HYPEREVM: {\n const reserves = data[0]\n const hypeReserve = Number(parseRawAmount(reserves[0].toString(), 18))\n const primeReserve = Number(parseRawAmount(reserves[1].toString(), 18))\n return { 'PrimeFi::PRFI': (prices['HYPE'] * hypeReserve) / primeReserve }\n }\n default:\n return {}\n }\n}\n\nfunction getExponentForOracle(chainId: string, fork: string) {\n // some chains only have high decimal oracles\n if (chainId === Chain.AVALANCHE_C_CHAIN || chainId === Chain.MODE) {\n return 10n\n }\n if (chainId === Chain.XDC_NETWORK) {\n if (fork === Lender.FATHOM) return 0n\n }\n if (fork === Lender.PRIME_FI) return 10n\n if (chainId === Chain.TELOS_EVM_MAINNET) return 10n\n if (chainId === Chain.SONIC_MAINNET && fork === Lender.POLTER) return 10n\n if (chainId === Chain.ARBITRUM_ONE && fork === Lender.RADIANT_V2) return 10n\n // otherwise, it depends on whether it is aave V3\n return AAVE_V2_LENDERS.includes(fork as any) ? 0n : 10n\n}\n\n/**\n * Parser for aave results in ulticall slice\n * @param chainId network\n * @param data result array slice\n * @param assetName asset names (aligned with the originall addresses called)\n * @returns price mapping asset->number\n */\nconst parseAaveResults = (\n chainId: string,\n data: any[],\n queries: QueryAave[],\n list: TokenList = {},\n otherPrices: any = {},\n) => {\n let prices: any = {}\n\n // define single scale function for chain\n function scaler() {\n if (chainId !== Chain.KAIA_MAINNET) return (p: number, l: string) => p\n return (p: number, l: string) => {\n const scale =\n l === Lender.KLAYBANK ? (otherPrices['KAIA'] ?? prices['KAIA']) : 1\n return p * scale\n }\n }\n\n // resolve it\n const getScale = scaler()\n\n // apply prices\n data.forEach((d, i) => {\n if (d !== '0x') {\n const details = queries[i]\n details.assets.forEach((a, j) => {\n const oracleId = list[a]?.assetGroup ?? chainId + '-' + a\n prices[oracleId] = getScale(\n formatAavePrice(\n d[j].toString(),\n getExponentForOracle(chainId, details.fork as any),\n ),\n details.fork,\n )\n })\n }\n })\n\n return prices\n}\n\nconst parseMorphoResults = (\n chainId: string,\n data: any[],\n queries: any[],\n donePrices: any = {},\n list: TokenList = {},\n) => {\n let prices: any = {}\n data.forEach((d, i) => {\n const details = queries[i]\n const loanAsset = details?.loanAsset\n const collateralAsset = details?.collateralAsset\n const loanAssetDecimals = details?.loanAssetDecimals\n const collateralAssetDecimals = details?.collateralAssetDecimals\n\n const oracleId = list[loanAsset]?.assetGroup ?? chainId + '-' + loanAsset\n // get price from map or just computed ones\n const debtPrice = donePrices[oracleId] ?? prices[oracleId]\n const oracleIdCollateral =\n list[collateralAsset]?.assetGroup ?? chainId + '-' + collateralAsset\n // get price from map or just computed ones\n const collateralPrice =\n donePrices[oracleIdCollateral] ?? prices[oracleIdCollateral]\n const priceDebtToCollateral = formatMorphoPrice(\n d.toString(),\n loanAssetDecimals,\n collateralAssetDecimals,\n )\n\n if (debtPrice) {\n if (!prices[oracleIdCollateral] && !donePrices[oracleIdCollateral]) {\n prices[oracleIdCollateral] = priceDebtToCollateral * debtPrice\n }\n } else {\n if (collateralPrice) {\n if (!prices[oracleId] && !donePrices[oracleId]) {\n prices[oracleId] = collateralPrice / priceDebtToCollateral\n }\n }\n }\n })\n return prices\n}\n\nconst parseListaResults = (\n chainId: string,\n data: any[],\n queries: any[],\n donePrices: any = {},\n list: TokenList = {},\n) => {\n let prices: any = {}\n data.forEach((d, i) => {\n const details = queries[i]\n const asset = details?.asset\n const oracleId = list[asset]?.assetGroup ?? chainId + '-' + asset\n // only update assets that we do not yet have\n if (!donePrices[oracleId]) prices[oracleId] = formatUnits(d, 8)\n })\n return prices\n}\n\n/**\n * Parser for aave results in ulticall slice\n * @param chainId network\n * @param data result array slice\n * @param assetName asset names (aligned with the originall addresses called)\n * @returns price mapping asset->number\n */\nconst parseChainLinkResults = (\n chainId: string,\n data: any[],\n assetName: string[],\n) => {\n switch (chainId) {\n default: {\n return Object.assign(\n {},\n ...data.map((entry, index) => {\n return {\n [assetName[index]]: Number(\n parseRawAmount(\n entry?.[ChainlinkAggregatorIndexes.answer]?.toString() ?? '0',\n 8,\n ),\n ),\n }\n }),\n )\n }\n }\n}\n\n/**\n * Create calldata for api3 oracles\n * @param chainId network\n * @returns call data\n */\nconst getApi3Calls = (\n chainId: string,\n): [\n {\n address: string\n name: string\n params: any[]\n }[],\n string[],\n] => {\n switch (chainId) {\n case Chain.MANTLE: {\n const keys = ['WETH', 'METH', 'FBTC', 'CMETH']\n const addresses = keys.map((k) => api3OracleAddresses[chainId][k])\n return [\n addresses.map((tk) => {\n return {\n address: tk,\n name: 'read',\n params: [],\n }\n }),\n keys,\n ]\n }\n default:\n return [[], []]\n }\n}\n\n/**\n * Parser for api3 results in multicall slice\n * @param chainId network\n * @param data result array slice\n * @param assetName asset names (aligned with the originall addresses called)\n * @returns price mapping asset->number\n */\nconst parseApi3Results = (\n chainId: string,\n data: any[],\n assetName: string[],\n) => {\n switch (chainId) {\n case Chain.MANTLE: {\n let prices = Object.assign(\n {},\n ...data.map((entry, index) => {\n return {\n [assetName[index]]: Number(\n parseRawAmount(entry?.[0]?.toString() ?? '0', 18),\n ),\n }\n }),\n )\n // METH is given in mETH/WETH\n prices['METH'] = prices['METH'] * prices['WETH']\n prices['CMETH'] = prices['CMETH'] * prices['METH']\n return prices\n }\n default: {\n return {}\n }\n }\n}\n\n/**\n * Create calldata for RWADynamicOracle (wrap rate for musd/usdy)\n * @param chainId network\n * @returns call data\n */\nconst getRWADynamicOracleCalls = (\n chainId: string,\n): [\n {\n address: string\n name: string\n params: any[]\n }[],\n string[],\n] => {\n switch (chainId) {\n case Chain.MANTLE: {\n const keys = ['USDY_MUSD']\n return [\n [\n {\n address: RWA_DYNAMIC_ORACLE,\n name: 'getPrice',\n params: [],\n },\n ],\n keys,\n ]\n }\n default:\n return [[], []]\n }\n}\n\n/**\n * Parser for RWADynamicOracle (wrap rate for musd/usdy) results in multicall slice\n * @param chainId network\n * @param data result array slice\n * @param assetName asset names (aligned with the originall addresses called)\n * @returns price mapping asset->number\n */\nconst parseRWADynamicOracleResults = (\n chainId: string,\n data: any[],\n assetName: string[],\n) => {\n switch (chainId) {\n case Chain.MANTLE: {\n let prices = Object.assign(\n {},\n ...data.map((entry, index) => {\n return {\n [assetName[index]]: Number(\n parseRawAmount(entry?.toString() ?? '0', 18),\n ),\n }\n }),\n )\n return prices\n }\n default: {\n return {}\n }\n }\n}\n","import {\n aaveReserves,\n compoundV2Reserves,\n compoundV3Reserves,\n morphoPools,\n} from '@1delta/data-sdk'\nimport {\n BALANCER_V2_FORKS,\n BALANCER_V3_FORKS,\n UNISWAP_V4_FORKS,\n} from '@1delta/dex-registry'\nimport lodash from 'lodash'\n\n// pull the functions you need\nconst { uniq } = lodash\n\nfunction createAssetArrayPerChain() {\n let assetsPerChain: { [chainId: string]: string[] } = {}\n Object.entries(compoundV3Reserves() ?? {}).forEach(([lender, data]) => {\n Object.entries(data).forEach(([chainId, assetArray]) => {\n if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []\n assetsPerChain[chainId] = uniq([\n ...assetsPerChain[chainId],\n ...assetArray,\n ])\n })\n })\n\n Object.entries(aaveReserves() ?? {}).forEach(([lender, data]) => {\n Object.entries(data).forEach(([chainId, assetArray]) => {\n if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []\n assetsPerChain[chainId] = uniq([\n ...assetsPerChain[chainId],\n ...assetArray,\n ])\n })\n })\n\n Object.entries(compoundV2Reserves() ?? {}).forEach(([lender, data]) => {\n Object.entries(data).forEach(([chainId, assetArray]) => {\n if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []\n assetsPerChain[chainId] = uniq([\n ...assetsPerChain[chainId],\n ...assetArray,\n ])\n })\n })\n return assetsPerChain\n}\n\nexport const RELEVANT_LENDING_ASSETS = () => createAssetArrayPerChain()\n\ninterface PoolData {\n pool: string\n address: string\n}\n\nfunction createSimpleArrayPerChain(\n fork: any,\n field: undefined | string = undefined,\n) {\n let pools: { [chainId: string]: PoolData[] } = {}\n Object.entries(fork ?? {}).forEach(([b2, data]: [string, any]) => {\n // @ts-ignore\n Object.entries(field ? data[field] : data).forEach(\n ([chainId, address]: [string, any]) => {\n if (!pools[chainId]) pools[chainId] = []\n pools[chainId] = uniq([...pools[chainId], { address, pool: b2 }])\n },\n )\n })\n return pools\n}\n\nexport const RELEVANT_BALANCER_V2_FORKS =\n createSimpleArrayPerChain(BALANCER_V2_FORKS)\n\nexport const RELEVANT_MORPHOB_FORKS = () =>\n createSimpleArrayPerChain(morphoPools())\n\nexport const RELEVANT_BALANCER_V3_FORKS = createSimpleArrayPerChain(\n BALANCER_V3_FORKS,\n 'vault',\n)\n\nexport const RELEVANT_UNISWAP_V4_FORKS = createSimpleArrayPerChain(\n UNISWAP_V4_FORKS,\n 'pm',\n)\n","export const FlashAbi = [\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'getConfiguration',\n inputs: [\n {\n internalType: 'address',\n name: 'asset',\n type: 'address',\n },\n ],\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n type: 'function',\n stateMutability: 'view',\n outputs: [\n {\n type: 'uint256',\n name: '',\n internalType: 'uint256',\n },\n ],\n name: 'FLASHLOAN_PREMIUM_TOTAL',\n inputs: [],\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n ],\n name: 'getEthBalance',\n outputs: [\n {\n internalType: 'uint256',\n name: 'balance',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import { Chain } from '@1delta/chain-registry'\n\n// Uniswap interface Multicalls\nconst CELO_MULTICALL_ADDRESS = '0x633987602DE5C4F337e3DbF265303A1080324204'\nconst BNB_MULTICALL_ADDRESS = '0x963Df249eD09c358A4819E39d9Cd5736c3087184'\nconst MANTLE_MULTICALL_ADDRESS = '0x2A51f2F647E1883F88C992244dEd171238693107'\nconst ARBITRUM_ONE_MULTICALL_ADDRESS =\n '0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB'\nconst LINEA_MULTICALL_ADDRESS = '0xac1cE734566f390A94b00eb9bf561c2625BF44ea'\nconst AVALANCHE_MULTICALL_ADDRESS = '0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2'\nconst BASE_MULTICALL_ADDRESS = '0x091e99cb1C49331a94dD62755D168E941AbD0693'\nconst BLAST_MULTICALL_ADDRESS = '0xdC7f370de7631cE9e2c2e1DCDA6B3B5744Cf4705'\nconst TAIKO_MULTICALL_ADDRESS = '0x8E24CfC19c6C00c524353CB8816f5f1c2F33c201'\nconst HEMI_MULTICALL_ADDRESS = '0x352A86168e6988A1aDF9A15Cb00017AAd3B67155'\nconst GNOSIS_MULTICALL_ADDRESS = '0x4dfa9a980efE4802E969AC33968E3d6E59B8a19e'\nconst MODE_MULTICALL_ADDRESS = '0xAB39cE30D98a59DFDa40A630b074170800bfF179'\nconst FANTOM_MULTICALL_ADDRESS = '0xDb51CffFf3B989d0cB6b58AbF173371b6F2d0D24'\nconst SCROLL_MULTICALL_ADDRESS = '0x3b615B1AC55bc34e51a81D3dea67467F32bcb8C2'\nconst SHAPE_MULTICALL_ADDRESS = '0x356A450B32f5030ae7083702b86FaFbBe7490411'\nconst SONIC_MULTICALL_ADDRESS = '0x5d6b0f5335ec95cD2aB7E52f2A0750dd86502435'\nconst INK_MULTICALL_ADDRESS = '0xA0fCec583AeE6176527C07B198e5561722332014'\nconst METIS_MULTICALL_ADDRESS = '0x7a59ddbB76521E8982Fa3A08598C9a83b14A6C07'\nconst IOTA_MULTICALL_ADDRESS = '0x9683D433621A83aA7dd290106e1da85251317F55'\nconst KAVA_MULTICALL_ADDRESS = '0x8B741B0D79BE80E135C880F7583d427B4D41F015'\nconst CORN_MULTICALL_ADDRESS = '0x5d6b0f5335ec95cD2aB7E52f2A0750dd86502435'\nconst SAGA_MULTICALL_ADDRESS = '0x743E03cceB4af2efA3CC76838f6E8B50B63F184c'\nconst CYBER_MULTICALL_ADDRESS = '0x906d6eB9CF8f64e100e44f8f491b833a8d40B530'\nconst METAL_MULTICALL_ADDRESS = '0x5d6b0f5335ec95cD2aB7E52f2A0750dd86502435'\nconst ZERO_MULTICALL_ADDRESS = '0x9CA4dcb2505fbf536F6c54AA0a77C79f4fBC35C0'\nconst BOB_MULTICALL_ADDRESS = '0x5d6b0f5335ec95cD2aB7E52f2A0750dd86502435'\nconst WORLDCHAIN_MULTICALL_ADDRESS =\n '0x0a22c04215c97E3F532F4eF30e0aD9458792dAB9'\nconst LISK_MULTICALL_ADDRESS = '0xE3dbcD53f4Ce1b06Ab200f4912BD35672e68f1FA'\nconst REDSTONE_MULTICALL_ADDRESS = '0xd57B52452a0FDfE3ff8e0A40Bd10D00D0bfe0723'\nconst MANTA_MULTICALL_ADDRESS = '0x52dFC0D9960F11A9Ca9FF616e791B91188446a60'\nconst ZORA_MULTICALL_ADDRESS = '0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15'\nconst CORE_MULTICALL_ADDRESS = '0xFe9F82D820757787895Da00B1dBD35c3B8b04894'\nconst MORPH_MULTICALL_ADDRESS = '0xAcD82113982479B25E7c1D09858F0130921Dbbca'\nconst TELOS_MULTICALL_ADDRESS = '0x5d6b0f5335ec95cD2aB7E52f2A0750dd86502435'\n\n/**\n * Uniswap Interface Multicall\n */\nexport const MULTICALL_ADDRESS: { [c: string]: string } = {\n [Chain.OP_MAINNET]: '0x1F98415757620B543A52E61c46B32eB19261F984',\n [Chain.POLYGON_MAINNET]: '0x1F98415757620B543A52E61c46B32eB19261F984',\n [Chain.ETHEREUM_MAINNET]: '0x1F98415757620B543A52E61c46B32eB19261F984',\n [Chain.ARBITRUM_ONE]: ARBITRUM_ONE_MULTICALL_ADDRESS,\n [Chain.BASE]: BASE_MULTICALL_ADDRESS,\n [Chain.CELO_MAINNET]: CELO_MULTICALL_ADDRESS,\n [Chain.BNB_SMART_CHAIN_MAINNET]: BNB_MULTICALL_ADDRESS,\n [Chain.MANTLE]: MANTLE_MULTICALL_ADDRESS,\n [Chain.BLAST]: BLAST_MULTICALL_ADDRESS,\n [Chain.LINEA]: LINEA_MULTICALL_ADDRESS,\n [Chain.AVALANCHE_C_CHAIN]: AVALANCHE_MULTICALL_ADDRESS,\n [Chain.TAIKO_ALETHIA]: TAIKO_MULTICALL_ADDRESS,\n [Chain.HEMI_NETWORK]: HEMI_MULTICALL_ADDRESS,\n [Chain.GNOSIS]: GNOSIS_MULTICALL_ADDRESS,\n [Chain.CORE_BLOCKCHAIN_MAINNET]: CORE_MULTICALL_ADDRESS,\n [Chain.METIS_ANDROMEDA_MAINNET]: METIS_MULTICALL_ADDRESS,\n [Chain.MODE]: MODE_MULTICALL_ADDRESS,\n [Chain.INK]: INK_MULTICALL_ADDRESS,\n [Chain.IOTA_EVM]: IOTA_MULTICALL_ADDRESS,\n [Chain.CORN]: CORN_MULTICALL_ADDRESS,\n [Chain.SONIC_MAINNET]: SONIC_MULTICALL_ADDRESS,\n [Chain.FANTOM_OPERA]: FANTOM_MULTICALL_ADDRESS,\n [Chain.SCROLL]: SCROLL_MULTICALL_ADDRESS,\n [Chain.SHAPE]: SHAPE_MULTICALL_ADDRESS,\n [Chain.CYBER_MAINNET]: CYBER_MULTICALL_ADDRESS,\n [Chain.ZORA]: ZORA_MULTICALL_ADDRESS,\n [Chain.MANTA_PACIFIC_MAINNET]: MANTA_MULTICALL_ADDRESS,\n [Chain.REDSTONE]: REDSTONE_MULTICALL_ADDRESS,\n [Chain.KAVA]: KAVA_MULTICALL_ADDRESS,\n [Chain.METAL_L2]: METAL_MULTICALL_ADDRESS,\n [Chain.LISK]: LISK_MULTICALL_ADDRESS,\n [Chain.BOB]: BOB_MULTICALL_ADDRESS,\n [Chain.ZERO_NETWORK]: ZERO_MULTICALL_ADDRESS,\n [Chain.SAGA]: SAGA_MULTICALL_ADDRESS,\n [Chain.MORPH]: MORPH_MULTICALL_ADDRESS,\n [Chain.TELOS_EVM_MAINNET]: TELOS_MULTICALL_ADDRESS,\n [Chain.WORLD_CHAIN]: WORLDCHAIN_MULTICALL_ADDRESS,\n}\n","import { getAaveStyleProtocolTokenMap, getAaveTypePoolAddress } from '../assets'\nimport { getAavesForChain } from '../utils'\nimport {\n RELEVANT_BALANCER_V2_FORKS,\n RELEVANT_BALANCER_V3_FORKS,\n RELEVANT_LENDING_ASSETS,\n RELEVANT_MORPHOB_FORKS,\n RELEVANT_UNISWAP_V4_FORKS,\n} from './assets'\nimport { Call } from '../utils/multicall'\nimport { MulticallRetryFunction, TokenList } from '../types'\nimport { FlashAbi } from '../abis/flashloan-united/flashAbi'\nimport { FlashLiquiditiesOnChain, FlashLoanIds } from './types'\nimport { FLASH_LOAN_IDS } from '@1delta/dex-registry'\nimport { formatUnits, zeroAddress } from 'viem'\nimport { AAVE_V2_LENDERS, AAVE_V3_LENDERS } from '@1delta/lender-registry'\nimport _ from 'lodash'\nimport { MULTICALL_ADDRESS } from '../utils/constants'\n\nconst DEFAULT_BATCH_SIZE = 4096\n\nenum BalanceFetchCall {\n balanceOf = 'balanceOf',\n getEthBalance = 'getEthBalance',\n}\n\n// Aave V3 flash loan flag enabled flag\nconst FLASHLOAN_ENABLED_MASK = BigInt(\n '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF',\n)\nfunction getFlashLoanEnabled(data: bigint): boolean {\n return (data & ~FLASHLOAN_ENABLED_MASK) !== BigInt(0)\n}\n\nexport async function fetchFlashLiquidityForChain(\n chain: string,\n multicallRetry: MulticallRetryFunction,\n list: TokenList = {},\n) {\n let callLengths: { [l: string]: number } = {}\n let aaveAssets: { [l: string]: string[] } = {}\n\n let aaveCalls: Call[] = []\n\n const aaves = getAavesForChain()\n\n const aaveProtocols = aaves[chain] ?? []\n\n // we only ned to check aave flash liquidity for aave assets\n aaveProtocols.forEach((aaveFork) => {\n const underlyingsAndATokens = Object.entries(\n getAaveStyleProtocolTokenMap(chain, aaveFork),\n )\n\n const pool = getAaveTypePoolAddress(chain, aaveFork)\n\n const tokenCalls = underlyingsAndATokens\n .map(([a, b]: [string, any]) => [\n { name: BalanceFetchCall.balanceOf, address: a, args: [b.aToken] },\n { name: 'getConfiguration', address: pool, args: [a] },\n ])\n .reduce((acc, b) => [...acc, ...b], [])\n\n aaveAssets[aaveFork] = underlyingsAndATokens.map((a) => a[0])\n\n callLengths[aaveFork] = tokenCalls.length * 2 + 1\n\n aaveCalls = [\n ...aaveCalls,\n ...tokenCalls,\n { name: 'FLASHLOAN_PREMIUM_TOTAL', address: pool },\n ]\n })\n\n // @ts-ignore\n const morphoBs = RELEVANT_MORPHOB_FORKS()?.[chain] ?? []\n\n const otherAssets = RELEVANT_LENDING_ASSETS()?.[chain] ?? []\n\n let morphoCalls: Call[] = []\n\n if (morphoBs && morphoBs.length > 0) {\n morphoBs.forEach((bFork) => {\n callLengths[bFork.pool] = otherAssets.length\n morphoCalls = [\n ...morphoCalls,\n ...otherAssets.map((address) =>\n address === zeroAddress\n ? {\n name: BalanceFetchCall.getEthBalance,\n address: MULTICALL_ADDRESS[chain],\n args: [bFork.address],\n }\n : {\n name: BalanceFetchCall.balanceOf,\n address,\n args: [bFork.address],\n },\n ),\n ]\n })\n }\n\n const balancerV2s = RELEVANT_BALANCER_V2_FORKS[chain] ?? []\n\n let balancerV2Calls: Call[] = []\n if (balancerV2s && balancerV2s.length > 0) {\n balancerV2s.forEach((bFork) => {\n callLengths[bFork.pool] = otherAssets.length\n balancerV2Calls = [\n ...balancerV2Calls,\n ...otherAssets.map((address) =>\n address === zeroAddress\n ? {\n name: BalanceFetchCall.getEthBalance,\n address: MULTICALL_ADDRESS[chain],\n args: [bFork.address],\n }\n : {\n name: BalanceFetchCall.balanceOf,\n address,\n args: [bFork.address],\n },\n ),\n ]\n })\n }\n\n const balancerV3s = RELEVANT_BALANCER_V3_FORKS[chain] ?? []\n let balancerV3Calls: Call[] = []\n if (balancerV3s && balancerV3s.length > 0) {\n balancerV3s.forEach((bFork) => {\n callLengths[bFork.pool] = otherAssets.length\n balancerV3Calls = [\n ...balancerV3Calls,\n ...otherAssets.map((address) =>\n address === zeroAddress\n ? {\n name: BalanceFetchCall.getEthBalance,\n address: MULTICALL_ADDRESS[chain],\n args: [bFork.address],\n }\n : {\n name: BalanceFetchCall.balanceOf,\n address,\n args: [bFork.address],\n },\n ),\n ]\n })\n }\n\n const uniswapV4s = RELEVANT_UNISWAP_V4_FORKS[chain] ?? []\n let uniswapV4Calls: Call[] = []\n if (uniswapV4s && uniswapV4s.length > 0) {\n uniswapV4s.forEach((u4Fork) => {\n callLengths[u4Fork.pool] = otherAssets.length\n uniswapV4Calls = [\n ...uniswapV4Calls,\n ...otherAssets.map((address) =>\n address === zeroAddress\n ? {\n name: BalanceFetchCall.getEthBalance,\n address: MULTICALL_ADDRESS[chain],\n args: [u4Fork.address],\n }\n : {\n name: BalanceFetchCall.balanceOf,\n address,\n args: [u4Fork.address],\n },\n ),\n ]\n })\n }\n\n const calls = [\n ...aaveCalls,\n ...balancerV2Calls,\n ...morphoCalls,\n ...balancerV3Calls,\n ...uniswapV4Calls,\n ]\n\n const rawResults = await multicallRetry(\n chain,\n calls,\n FlashAbi,\n DEFAULT_BATCH_SIZE,\n 3,\n 0,\n false,\n )\n\n let liquidity: FlashLiquiditiesOnChain = {}\n\n let currentOffset = 0\n aaveProtocols.forEach((aave) => {\n const callLen = aaveAssets[aave].length * 2 + 1\n\n const data: any[] = rawResults.slice(currentOffset, callLen + currentOffset)\n const fee = data[callLen - 1]\n // update offset\n currentOffset += callLen\n\n aaveAssets[aave].forEach((asset, i) => {\n const decimals = list[asset]?.decimals\n const rawAmount = data[2 * i]\n\n const config = data[2 * i + 1]\n const enabled =\n !AAVE_V3_LENDERS.includes(aave as any) || getFlashLoanEnabled(config)\n if (\n enabled &&\n rawAmount > 0n &&\n FLASH_LOAN_IDS[aave as keyof typeof FLASH_LOAN_IDS] !== undefined\n ) {\n if (!liquidity[asset]) liquidity[asset] = []\n liquidity[asset].push({\n id: FLASH_LOAN_IDS[aave as keyof typeof FLASH_LOAN_IDS],\n name: aave,\n type: AAVE_V2_LENDERS.includes(aave as any)\n ? FlashLoanIds.AAVE_V2\n : FlashLoanIds.AAVE_V3,\n source: getAaveTypePoolAddress(chain, aave),\n fee: fee.toString(),\n availableRaw: rawAmount.toString(),\n available: Number(formatUnits(rawAmount, decimals ?? 18)),\n decimals,\n })\n }\n })\n })\n\n balancerV2s.forEach((balancer) => {\n const callLen = otherAssets.length\n\n const data: any[] = rawResults.slice(currentOffset, callLen + currentOffset)\n // update offset\n currentOffset += callLen\n\n otherAssets.forEach((asset, i) => {\n const decimals = list[asset]?.decimals\n const rawAmount = data[i]\n if (rawAmount > 0n) {\n if (!liquidity[asset]) liquidity[asset] = []\n liquidity[asset].push({\n id: FLASH_LOAN_IDS[balancer.pool as keyof typeof FLASH_LOAN_IDS],\n name: balancer.pool,\n type: FlashLoanIds.BALANCER_V2,\n source: balancer.address,\n fee: '0',\n availableRaw: rawAmount.toString(),\n available: Number(formatUnits(rawAmount, decimals ?? 18)),\n decimals,\n })\n }\n })\n })\n\n morphoBs.forEach((morpho) => {\n const callLen = otherAssets.length\n\n const data: any[] = rawResults.slice(currentOffset, callLen + currentOffset)\n // update offset\n currentOffset += callLen\n\n otherAssets.forEach((asset, i) => {\n const rawAmount = data[i]\n if (rawAmount > 0n) {\n if (!liquidity[asset]) liquidity[asset] = []\n const decimals = list[asset]?.decimals\n liquidity[asset].push({\n id: FLASH_LOAN_IDS[morpho.pool as keyof typeof FLASH_LOAN_IDS],\n name: morpho.pool,\n type: FlashLoanIds.MORPHO,\n source: morpho.address,\n fee: '0',\n availableRaw: rawAmount.toString(),\n available: Number(formatUnits(rawAmount, decimals ?? 18)),\n decimals,\n })\n }\n })\n })\n\n balancerV3s.forEach((balancerV3) => {\n const callLen = otherAssets.length\n\n const data: any[] = rawResults.slice(currentOffset, callLen + currentOffset)\n // update offset\n currentOffset += callLen\n\n otherAssets.forEach((asset, i) => {\n const decimals = list[asset]?.decimals\n const rawAmount = data[i]\n if (rawAmount > 0n) {\n if (!liquidity[asset]) liquidity[asset] = []\n liquidity[asset].push({\n id: FLASH_LOAN_IDS[balancerV3.pool as keyof typeof FLASH_LOAN_IDS],\n name: balancerV3.pool,\n type: FlashLoanIds.SINGLETON,\n source: balancerV3.address,\n fee: '0',\n availableRaw: rawAmount.toString(),\n available: Number(formatUnits(rawAmount, decimals ?? 18)),\n decimals,\n })\n }\n })\n })\n\n uniswapV4s.forEach((uniV4) => {\n const callLen = otherAssets.length\n\n const data: any[] = rawResults.slice(currentOffset, callLen + currentOffset)\n // update offset\n currentOffset += callLen\n\n otherAssets.forEach((asset, i) => {\n const decimals = list[asset]?.decimals\n const rawAmount = data[i]\n if (rawAmount > 0n) {\n if (!liquidity[asset]) liquidity[asset] = []\n liquidity[asset].push({\n id: FLASH_LOAN_IDS[uniV4.pool as keyof typeof FLASH_LOAN_IDS],\n name: uniV4.pool,\n type: FlashLoanIds.SINGLETON,\n source: uniV4.address,\n fee: '0',\n availableRaw: rawAmount.toString(),\n available: Number(formatUnits(rawAmount, decimals ?? 18)),\n decimals,\n })\n }\n })\n })\n\n return liquidity\n}\n","import { toGenericPriceKey } from '../assets'\nimport { TokenList } from '../types'\nimport { FlashLiquiditiesOnChain } from './types'\n\n/**\n * Add prices to get dollar flash liquidties\n * Ideal for de-based flash loans\n */\nexport function attachPricesToFlashLiquidity(\n chainId: string,\n liq: FlashLiquiditiesOnChain,\n prices: { [k: string]: number },\n list: TokenList = {},\n) {\n let liqCopy = { ...liq }\n\n Object.entries(liq).forEach(([asset, entry]) => {\n const priceKey =\n list[asset]?.assetGroup ?? toGenericPriceKey(asset, chainId)\n const price = prices[priceKey] ?? 0\n liqCopy[asset] = entry.map((e) => ({\n ...e,\n availableUSD: e.available * price,\n }))\n })\n\n return liqCopy\n}\n"]}
|