@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
JavaScript
;
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));