UNPKG

@admin-jigsaw/jigsaw-sdk

Version:

Returns predefined data for Jigsaw platform and exposes functionality to retrieve the necessary data

136 lines (135 loc) 7.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PENDLE_MARKETS_ETHEREUM = exports.PROTOCOL_STRATEGY_MAP_ETHEREUM = exports.PROTOCOLS_ASSETS_ETHEREUM = exports.generateProtocolStrategyMap = exports.ACTIVE_PENDLE_STRATEGIES_ETHEREUM = exports.PENDLE_STRATEGIES_ETHEREUM = exports.DINERO_STRATEGIES_ETHEREUM = exports.RESERVOIR_STRATEGIES_ETHEREUM = exports.AAVE_STRATEGIES_ETHEREUM = void 0; const viem_1 = require("viem"); const strategiesSharedConstants_1 = require("../../strategiesSharedConstants"); const coinsConstants_1 = require("./coinsConstants"); // One strategy per collateral exports.AAVE_STRATEGIES_ETHEREUM = { [coinsConstants_1.COLLATERALS_ETHEREUM.WETH.symbol]: { stratAddress: "0x0EE2B97EA5e8c69bE42539439E052A1C6627bBd7", }, [coinsConstants_1.COLLATERALS_ETHEREUM.wstETH.symbol]: { stratAddress: "0xDD9C98758c39D7b631ac93c6537d950C02DdB13C", }, [coinsConstants_1.COLLATERALS_ETHEREUM.weETH.symbol]: { stratAddress: "0x99e15e69ceDd7233E00AcA77c0312072C3FB087c", }, [coinsConstants_1.COLLATERALS_ETHEREUM.WBTC.symbol]: { stratAddress: "0x1CACe39d1D0A43Bb95f40e3F2B623cB0E138318a", }, [coinsConstants_1.COLLATERALS_ETHEREUM.USDT.symbol]: { stratAddress: "0x05329BbE8b9DEcf80A09ee84998250e6B137Bda2", }, [coinsConstants_1.COLLATERALS_ETHEREUM.USDC.symbol]: { stratAddress: "0x37AAd25a5DA6738E1B7E5Af29604618D00232A9d", }, }; exports.RESERVOIR_STRATEGIES_ETHEREUM = { [coinsConstants_1.COLLATERALS_ETHEREUM.USDC.symbol]: { apy: "12", stratAddress: "0x8EE9Cc2D6788EEf59593d77733592314BE317209", }, [coinsConstants_1.COLLATERALS_ETHEREUM.rUSD.symbol]: { apy: "10", stratAddress: "0x0a1754Fab76bd3963F5413523B4054B6670F5434", }, }; exports.DINERO_STRATEGIES_ETHEREUM = { [coinsConstants_1.COLLATERALS_ETHEREUM.WETH.symbol]: { apy: "3.78", stratAddress: "0x883Fc3E0C4719c0A113F2ef4bB19a26781E88E4D", }, }; // Array-based strategies with expiry dates for dynamic maturity detection exports.PENDLE_STRATEGIES_ETHEREUM = { [coinsConstants_1.COLLATERALS_ETHEREUM["USD0++"].symbol]: [ { stratAddress: "0x30C57337482110Cd7891bAC5236743cc71781804", expiryDate: "2025-06-26", // 26 June 2025 marketAddress: "0x048680F64d6DFf1748ba6D9a01F578433787e24B", // USD0++ market }, { stratAddress: "0x27C70b007567b96c874A17Ed9AEa5450C96df043", // new USD0++ strategy expiryDate: "2025-11-27", // 27 November 2025 marketAddress: "0xf8094570485b124b4f2abe98909a87511489c162", // USD0++ market }, ], [coinsConstants_1.COLLATERALS_ETHEREUM.lvlUSD.symbol]: [ { stratAddress: "0xe12b93B12b369f1Fe0Eb4FCC9878DE3F605B9d1E", expiryDate: "2025-09-25", // 25 September 2025 marketAddress: "0x461bc2ac3f80801BC11B0F20d63B73feF60C8076", // lvlUSD market address }, ], [coinsConstants_1.COLLATERALS_ETHEREUM.cUSDO.symbol]: [ { stratAddress: "0xB588C4D441ED64bED86AE0732A387085c703e8B6", expiryDate: "2025-06-19", // 19 June 2025 marketAddress: "0xA77c0DE4d26B7C97D1D42ABD6733201206122E25", // cUSDO market }, { stratAddress: "0xD744C84C1C09B580F4b1796DAaeBca913a88D31d", expiryDate: "2025-11-20", // 20 November 2025 marketAddress: "0x3F53eb4c57c7E7118BE8566bCd503EA502639581", // cUSDO market }, ], [coinsConstants_1.COLLATERALS_ETHEREUM.rUSD.symbol]: [ { stratAddress: "0xE801d4cF6DbF22666cB481D866F9218fc8e1069d", expiryDate: "2025-07-31", // 31 July 2025 marketAddress: "0x88c4f34b86907b7221c0061f7a0bbec9391ea727", // rUSD market address }, ], [coinsConstants_1.COLLATERALS_ETHEREUM.hwHLP.symbol]: [ { stratAddress: "0xA743cBb8e18F9F4781A9F44ABc6d81344dC55284", expiryDate: "2025-09-25", // 25 September 2025 marketAddress: "0x71d4a6bAc0FE7210309b6A3807cf2BaD13d7C1E1", // hwHLP market }, ], }; exports.ACTIVE_PENDLE_STRATEGIES_ETHEREUM = Object.fromEntries(Object.entries(exports.PENDLE_STRATEGIES_ETHEREUM) .map(([asset, strategies]) => [ asset, strategies.filter((strategy) => !(new Date() > new Date(strategy.expiryDate))), ]) .filter(([_, activeStrategies]) => activeStrategies.length > 0)); const generateProtocolStrategyMap = () => { const protocolStrategyMap = {}; protocolStrategyMap[strategiesSharedConstants_1.PROTOCOLS_DATA.AAVE.name] = Object.values(exports.AAVE_STRATEGIES_ETHEREUM).map((strategy) => strategy.stratAddress || viem_1.zeroAddress); protocolStrategyMap[strategiesSharedConstants_1.PROTOCOLS_DATA.PENDLE.name] = Object.values(exports.PENDLE_STRATEGIES_ETHEREUM) .flatMap((strategies) => strategies.map((strategy) => strategy.stratAddress)) .filter(Boolean); protocolStrategyMap[strategiesSharedConstants_1.PROTOCOLS_DATA.RESERVOIR.name] = Object.values(exports.RESERVOIR_STRATEGIES_ETHEREUM).map((strategy) => strategy.stratAddress || viem_1.zeroAddress); protocolStrategyMap[strategiesSharedConstants_1.PROTOCOLS_DATA.DINERO.name] = Object.values(exports.DINERO_STRATEGIES_ETHEREUM).map((strategy) => strategy.stratAddress || viem_1.zeroAddress); return protocolStrategyMap; }; exports.generateProtocolStrategyMap = generateProtocolStrategyMap; const generateProtocolAssets = () => { const protocolAssets = []; const protocolSources = { [strategiesSharedConstants_1.PROTOCOLS_DATA.AAVE.name]: exports.AAVE_STRATEGIES_ETHEREUM, [strategiesSharedConstants_1.PROTOCOLS_DATA.PENDLE.name]: exports.ACTIVE_PENDLE_STRATEGIES_ETHEREUM, [strategiesSharedConstants_1.PROTOCOLS_DATA.RESERVOIR.name]: exports.RESERVOIR_STRATEGIES_ETHEREUM, [strategiesSharedConstants_1.PROTOCOLS_DATA.DINERO.name]: exports.DINERO_STRATEGIES_ETHEREUM, }; Object.entries(protocolSources).forEach(([protocol, strategies]) => { const assets = new Set(); Object.keys(strategies).forEach((asset) => { assets.add(asset); }); protocolAssets.push({ name: protocol, icon: strategiesSharedConstants_1.PROTOCOLS_DATA[protocol]?.icon || "", assets: Array.from(assets), }); }); return protocolAssets; }; // Assets for each protocol, keep in sync with strategies dictionaries exports.PROTOCOLS_ASSETS_ETHEREUM = generateProtocolAssets(); // Strategies for each protocol in a flat array, keep in sync with PROTOCOLS_ASSETS exports.PROTOCOL_STRATEGY_MAP_ETHEREUM = (0, exports.generateProtocolStrategyMap)(); // Dynamically generated Pendle markets based on strategies exports.PENDLE_MARKETS_ETHEREUM = Object.values(exports.PENDLE_STRATEGIES_ETHEREUM).flatMap((strategies) => strategies.map((strategy) => strategy.marketAddress || viem_1.zeroAddress));