@defisaver/positions-sdk 2.1.20-dev-morpho-2 → 2.1.21-dev-ethena

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.
@@ -0,0 +1,3 @@
1
+ import { EthAddress } from '../types/common';
2
+ export declare const fetchEthenaAirdropReward: (address: EthAddress) => Promise<any>;
3
+ export declare const fetchEthenaAirdropRewards: (walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.fetchEthenaAirdropRewards = exports.fetchEthenaAirdropReward = void 0;
16
+ const tokens_1 = require("@defisaver/tokens");
17
+ const decimal_js_1 = __importDefault(require("decimal.js"));
18
+ const claiming_1 = require("../types/claiming");
19
+ const fetchEthenaAirdropReward = (address) => __awaiter(void 0, void 0, void 0, function* () {
20
+ try {
21
+ const response = yield fetch(`https://airdrop-data-ethena-s4.s3.us-west-2.amazonaws.com/${address}/0x3d99219fbd49ace3f48d6ca1340e505ec1bdf27d1f8d0e15ec9f286cc9215fcd-${address}.json`);
22
+ console.log(response);
23
+ if (!response.ok) {
24
+ throw new Error(`HTTP error! status: ${response.status}`);
25
+ }
26
+ return yield response.json();
27
+ }
28
+ catch (error) {
29
+ console.error('Error fetching Ethena airdrop rewards:', error);
30
+ return '0';
31
+ }
32
+ });
33
+ exports.fetchEthenaAirdropReward = fetchEthenaAirdropReward;
34
+ const fetchEthenaAirdropRewards = (walletAddresses) => __awaiter(void 0, void 0, void 0, function* () {
35
+ console.log('FETCHING ETHENA');
36
+ const apiDataPromises = walletAddresses.map(address => (0, exports.fetchEthenaAirdropReward)(address));
37
+ const apiDataArray = yield Promise.all(apiDataPromises);
38
+ console.log(apiDataArray);
39
+ const results = {};
40
+ for (let i = 0; i < walletAddresses.length; i++) {
41
+ const walletAddress = walletAddresses[i];
42
+ const data = apiDataArray[i];
43
+ if (data.length === 0) {
44
+ results[walletAddress.toLowerCase()] = [];
45
+ continue;
46
+ }
47
+ const processedRewards = [];
48
+ const amount = data.events[0].awardAmount;
49
+ const assetInfo = (0, tokens_1.getAssetInfo)('sENA');
50
+ if (new decimal_js_1.default(amount).gt('0')) {
51
+ processedRewards.push({
52
+ symbol: assetInfo.symbol,
53
+ underlyingSymbol: assetInfo.symbol,
54
+ amount,
55
+ claimType: claiming_1.ClaimType.SPARK_AIRDROP,
56
+ tokenAddress: assetInfo.address,
57
+ walletAddress,
58
+ label: 'Ethena Airdrop',
59
+ });
60
+ }
61
+ results[walletAddress.toLowerCase()] = processedRewards;
62
+ }
63
+ return results;
64
+ });
65
+ exports.fetchEthenaAirdropRewards = fetchEthenaAirdropRewards;
@@ -74237,10 +74237,6 @@ export declare const MorphoBlueView: {
74237
74237
  };
74238
74238
  };
74239
74239
  };
74240
- readonly "42161": {
74241
- readonly address: "0xa3b8b400a2eFF0314fa9605E778692bd4Bd9f880";
74242
- readonly createdBlock: 394369307;
74243
- };
74244
74240
  };
74245
74241
  };
74246
74242
  export declare const FeedRegistry: {
@@ -1055,10 +1055,6 @@ exports.MorphoBlueView = {
1055
1055
  "address": "0xDBCACF59C5063da8B15481F88E7D70E13c92f2a1",
1056
1056
  },
1057
1057
  },
1058
- },
1059
- "42161": {
1060
- "address": "0xa3b8b400a2eFF0314fa9605E778692bd4Bd9f880",
1061
- "createdBlock": 394369307,
1062
1058
  }
1063
1059
  },
1064
1060
  };
@@ -32,7 +32,6 @@ export declare const MORPHO_BLUE_USR_USDC_915: (networkId?: NetworkNumber) => Mo
32
32
  export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
33
33
  export declare const MORPHO_BLUE_LBTC_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
34
34
  export declare const MORPHO_BLUE_LBTC_CBBTC_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
35
- export declare const MORPHO_BLUE_SUSDS_USDT_965: (networkId?: NetworkNumber) => MorphoBlueMarketData;
36
35
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
37
36
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d: (networkId?: NetworkNumber) => MorphoBlueMarketData;
38
37
  export declare const MORPHO_BLUE_WSTETH_ETH_945_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -52,11 +51,6 @@ export declare const MORPHO_BLUE_LBTC_CBBTC_945_BASE: (networkId?: NetworkNumber
52
51
  export declare const MORPHO_BLUE_WSTETH_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
53
52
  export declare const MORPHO_BLUE_CBBTC_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
54
53
  export declare const MORPHO_BLUE_WETH_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
55
- export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
56
- export declare const MorphoBlueWBTCUSDC_860_Arb: (networkId?: NetworkNumber) => MorphoBlueMarketData;
57
- export declare const MORPHO_BLUE_WSTETH_USDC_860_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
58
- export declare const MORPHO_BLUE_ETH_USDC_860_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
59
- export declare const MORPHO_BLUE_SUSDS_USDC_945_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
60
54
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
61
55
  readonly morphobluewstethusdc: MorphoBlueMarketData;
62
56
  readonly morphobluesdaiusdc: MorphoBlueMarketData;
@@ -83,7 +77,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
83
77
  readonly morphobluesyrupusdcusdc_915: MorphoBlueMarketData;
84
78
  readonly morphobluelbtcusdc_860: MorphoBlueMarketData;
85
79
  readonly morphobluelbtccbbtc_945: MorphoBlueMarketData;
86
- readonly morphobluesusdsusdt_965: MorphoBlueMarketData;
87
80
  readonly morphobluewstetheth_945: MorphoBlueMarketData;
88
81
  readonly morphobluewstetheth_945_exchange_rate: MorphoBlueMarketData;
89
82
  readonly morphobluewstetheth_965_exchange_rate: MorphoBlueMarketData;
@@ -110,10 +103,5 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
110
103
  readonly morphobluecbetheth_965_base: MorphoBlueMarketData;
111
104
  readonly morphobluewstetheth_945_base: MorphoBlueMarketData;
112
105
  readonly morphobluewstetheth_965_base: MorphoBlueMarketData;
113
- readonly morphobluesyrupusdcusdc_915_arb: MorphoBlueMarketData;
114
- readonly morphobluewbtcusdc_860_arb: MorphoBlueMarketData;
115
- readonly morphobluewstethusdc_860_arb: MorphoBlueMarketData;
116
- readonly morphoblueethusdc_860_arb: MorphoBlueMarketData;
117
- readonly morphobluesusdsusdc_945_arb: MorphoBlueMarketData;
118
106
  };
119
107
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_SUSDS_USDT_965 = exports.MORPHO_BLUE_LBTC_CBBTC_945 = exports.MORPHO_BLUE_LBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = exports.MORPHO_BLUE_ETH_USDC_860_ARB = exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = exports.MorphoBlueWBTCUSDC_860_Arb = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = exports.MORPHO_BLUE_WETH_EURC_860_BASE = exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = void 0;
3
+ exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945 = exports.MORPHO_BLUE_LBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WETH_EURC_860_BASE = void 0;
5
5
  const utils_1 = require("../../services/utils");
6
6
  const types_1 = require("../../types");
7
7
  const common_1 = require("../../types/common");
@@ -522,22 +522,6 @@ const MORPHO_BLUE_LBTC_CBBTC_945 = (networkId = common_1.NetworkNumber.Eth) => (
522
522
  protocolName: 'morpho-blue',
523
523
  });
524
524
  exports.MORPHO_BLUE_LBTC_CBBTC_945 = MORPHO_BLUE_LBTC_CBBTC_945;
525
- const MORPHO_BLUE_SUSDS_USDT_965 = (networkId = common_1.NetworkNumber.Eth) => ({
526
- chainIds: [1],
527
- label: 'Morpho',
528
- shortLabel: 'sUSDS/USDT',
529
- value: types_1.MorphoBlueVersions.MorphoBluesUSDSUSDT_965,
530
- url: 'susdsusdt-3274643d',
531
- loanToken: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
532
- collateralToken: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
533
- oracle: '0x0C426d174FC88B7A25d59945Ab2F7274Bf7B4C79',
534
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
535
- irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
536
- lltv: 0.965,
537
- marketId: '0x3274643db77a064abd3bc851de77556a4ad2e2f502f4f0c80845fa8f909ecf0b',
538
- protocolName: 'morpho-blue',
539
- });
540
- exports.MORPHO_BLUE_SUSDS_USDT_965 = MORPHO_BLUE_SUSDS_USDT_965;
541
525
  // ###### BASE ########
542
526
  const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
543
527
  chainIds: [common_1.NetworkNumber.Base],
@@ -843,87 +827,6 @@ const MORPHO_BLUE_WETH_EURC_860_BASE = (networkId = common_1.NetworkNumber.Eth)
843
827
  protocolName: 'morpho-blue',
844
828
  });
845
829
  exports.MORPHO_BLUE_WETH_EURC_860_BASE = MORPHO_BLUE_WETH_EURC_860_BASE;
846
- // Arbitrum
847
- const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = (networkId = common_1.NetworkNumber.Eth) => ({
848
- chainIds: [common_1.NetworkNumber.Arb],
849
- label: 'Morpho',
850
- shortLabel: 'syrupUSDC/USDC',
851
- value: types_1.MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb,
852
- url: 'syrupusdcusdc-f86f3edd',
853
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
854
- collateralToken: '0x41CA7586cC1311807B4605fBB748a3B8862b42b5',
855
- oracle: '0x8f30fF3d54e69D4dfD5E99a9937474FaDdf27009',
856
- oracleType: types_1.MorphoBlueOracleType.CONTRACT_RATE,
857
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
858
- lltv: 0.915,
859
- marketId: '0xf86f3edd6f16cd8211f4d206866dc4ecd41be6211063ac11f8508e1b7112ef40',
860
- protocolName: 'morpho-blue',
861
- });
862
- exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB;
863
- const MorphoBlueWBTCUSDC_860_Arb = (networkId = common_1.NetworkNumber.Eth) => ({
864
- chainIds: [common_1.NetworkNumber.Arb],
865
- label: 'Morpho',
866
- shortLabel: 'WBTC/USDC',
867
- value: types_1.MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb,
868
- url: 'wbtcusdc-e6392ff1',
869
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
870
- collateralToken: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',
871
- oracle: '0x88193FcB705d29724A40Bb818eCAA47dD5F014d9',
872
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
873
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
874
- lltv: 0.86,
875
- marketId: '0xe6392ff19d10454b099d692b58c361ef93e31af34ed1ef78232e07c78fe99169',
876
- protocolName: 'morpho-blue',
877
- });
878
- exports.MorphoBlueWBTCUSDC_860_Arb = MorphoBlueWBTCUSDC_860_Arb;
879
- const MORPHO_BLUE_WSTETH_USDC_860_ARB = (networkId = common_1.NetworkNumber.Eth) => ({
880
- chainIds: [common_1.NetworkNumber.Arb],
881
- label: 'Morpho',
882
- shortLabel: 'wstETH/USDC',
883
- value: types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb,
884
- url: 'wstethusdc-33e0c8ab',
885
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
886
- collateralToken: '0x5979D7b546E38E414F7E9822514be443A4800529',
887
- oracle: '0x8e02a9b9Cc29d783b2fCB71C3a72651B591cae31',
888
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
889
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
890
- lltv: 0.86,
891
- marketId: '0x33e0c8ab132390822b07e5dc95033cf250c963153320b7ffca73220664da2ea0',
892
- protocolName: 'morpho-blue',
893
- });
894
- exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = MORPHO_BLUE_WSTETH_USDC_860_ARB;
895
- const MORPHO_BLUE_ETH_USDC_860_ARB = (networkId = common_1.NetworkNumber.Eth) => ({
896
- chainIds: [common_1.NetworkNumber.Arb],
897
- label: 'Morpho',
898
- shortLabel: 'ETH/USDC',
899
- value: types_1.MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb,
900
- url: 'ethusdc-ca83d02b',
901
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
902
- collateralToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
903
- oracle: '0x282FEB10549fde52bD61A6979424Ddf18A4971A2',
904
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
905
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
906
- lltv: 0.86,
907
- marketId: '0xca83d02be579485cc10945c9597a6141e772f1cf0e0aa28d09a327b6cbd8642c',
908
- protocolName: 'morpho-blue',
909
- });
910
- exports.MORPHO_BLUE_ETH_USDC_860_ARB = MORPHO_BLUE_ETH_USDC_860_ARB;
911
- const MORPHO_BLUE_SUSDS_USDC_945_ARB = (networkId = common_1.NetworkNumber.Eth) => ({
912
- chainIds: [common_1.NetworkNumber.Arb],
913
- label: 'Morpho',
914
- shortLabel: 'sUSDS/USDC',
915
- value: types_1.MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb,
916
- url: 'susdsusdc-77fe2f7c',
917
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
918
- collateralToken: '0xdDb46999F8891663a8F2828d25298f70416d7610',
919
- oracle: '0x52CC7c3b27bb61D0a83785B5344acC919F8f7124',
920
- oracleType: types_1.MorphoBlueOracleType.CONTRACT_RATE,
921
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
922
- lltv: 0.945,
923
- marketId: '0x77fe2f7c2dd6f4da6bc5f445b06052ff8df55cb70cfce9afc16ec3c69a5fd3a3',
924
- protocolName: 'morpho-blue',
925
- });
926
- exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = MORPHO_BLUE_SUSDS_USDC_945_ARB;
927
830
  const MorphoBlueMarkets = (networkId) => ({
928
831
  [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
929
832
  [types_1.MorphoBlueVersions.MorphoBlueSDAIUSDC]: (0, exports.MORPHO_BLUE_SDAI_USDC)(networkId),
@@ -950,7 +853,6 @@ const MorphoBlueMarkets = (networkId) => ({
950
853
  [types_1.MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915]: (0, exports.MORPHO_BLUE_SYRUPUSDC_USDC_915)(networkId),
951
854
  [types_1.MorphoBlueVersions.MorphoBlueLBTCUSDC_860]: (0, exports.MORPHO_BLUE_LBTC_USDC_860)(networkId),
952
855
  [types_1.MorphoBlueVersions.MorphoBlueLBTCCbBTC_945]: (0, exports.MORPHO_BLUE_LBTC_CBBTC_945)(networkId),
953
- [types_1.MorphoBlueVersions.MorphoBluesUSDSUSDT_965]: (0, exports.MORPHO_BLUE_SUSDS_USDT_965)(networkId),
954
856
  // wstETH/WETH
955
857
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945)(networkId),
956
858
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Exchange_Rate]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE)(networkId),
@@ -984,12 +886,6 @@ const MorphoBlueMarkets = (networkId) => ({
984
886
  // wstETH/WETH Base
985
887
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945_BASE)(networkId),
986
888
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: (0, exports.MORPHO_BLUE_WSTETH_ETH_965_BASE)(networkId),
987
- // Arbitrum
988
- [types_1.MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb]: (0, exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB)(networkId),
989
- [types_1.MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb]: (0, exports.MorphoBlueWBTCUSDC_860_Arb)(networkId),
990
- [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb]: (0, exports.MORPHO_BLUE_WSTETH_USDC_860_ARB)(networkId),
991
- [types_1.MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb]: (0, exports.MORPHO_BLUE_ETH_USDC_860_ARB)(networkId),
992
- [types_1.MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb]: (0, exports.MORPHO_BLUE_SUSDS_USDC_945_ARB)(networkId),
993
889
  });
994
890
  exports.MorphoBlueMarkets = MorphoBlueMarkets;
995
891
  const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = common_1.NetworkNumber.Eth) => {
@@ -39,6 +39,7 @@ const compV3_1 = require("../claiming/compV3");
39
39
  const spark_2 = require("../claiming/spark");
40
40
  const morphoBlue_2 = require("../claiming/morphoBlue");
41
41
  const king_1 = require("../claiming/king");
42
+ const ethena_1 = require("../claiming/ethena");
42
43
  function getPortfolioData(provider, network, defaultProvider, addresses, summerFiAddresses) {
43
44
  return __awaiter(this, void 0, void 0, function* () {
44
45
  const isMainnet = network === common_1.NetworkNumber.Eth;
@@ -139,6 +140,7 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
139
140
  spk: {},
140
141
  king: {},
141
142
  morpho: {},
143
+ ethena: {},
142
144
  };
143
145
  }
144
146
  yield Promise.allSettled([
@@ -395,6 +397,27 @@ function getPortfolioData(provider, network, defaultProvider, addresses, summerF
395
397
  }
396
398
  }
397
399
  }))(),
400
+ (() => __awaiter(this, void 0, void 0, function* () {
401
+ try {
402
+ const ethenaAirdropRewards = yield (0, ethena_1.fetchEthenaAirdropRewards)(addresses);
403
+ for (const address of addresses) {
404
+ const lowerAddress = address.toLowerCase();
405
+ rewardsData[lowerAddress].spk = {
406
+ error: '',
407
+ data: ethenaAirdropRewards[lowerAddress] || [],
408
+ };
409
+ }
410
+ }
411
+ catch (error) {
412
+ console.error('Error fetching Ethena Airdrop rewards data:', error);
413
+ for (const address of addresses) {
414
+ rewardsData[address.toLowerCase()].ethena = {
415
+ error: 'Error fetching Ethena Airdrop rewards data in batch',
416
+ data: null,
417
+ };
418
+ }
419
+ }
420
+ }))(),
398
421
  ]);
399
422
  yield Promise.all([
400
423
  ...aaveV3Markets.map((market) => allAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
@@ -71,7 +71,7 @@ const getApyFromDfsApi = (asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...
71
71
  exports.STAKING_ASSETS = [
72
72
  'cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH',
73
73
  'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
74
- 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC',
74
+ 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
75
75
  ];
76
76
  exports.getStakingApy = (0, memoizee_1.default)((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = common_1.NetworkNumber.Eth) {
77
77
  try {
@@ -129,6 +129,8 @@ exports.getStakingApy = (0, memoizee_1.default)((asset_1, ...args_1) => __awaite
129
129
  return yield getApyFromDfsApi('syrupUSDT');
130
130
  if (asset === 'syrupUSDC')
131
131
  return yield getApyFromDfsApi('syrupUSDC');
132
+ if (asset === 'wstUSR')
133
+ return yield getApyFromDfsApi('wstUSR');
132
134
  }
133
135
  catch (e) {
134
136
  console.error(`Failed to fetch APY for ${asset}`);
@@ -15,7 +15,8 @@ export declare enum ClaimType {
15
15
  /** Spark Airdrop */
16
16
  SPARK_AIRDROP = "SPARK_AIRDROP",
17
17
  /** Spark Airdrop */
18
- SPARK_WST_ETH_REWARDS = "SPARK_WST_ETH_REWARDS"
18
+ SPARK_WST_ETH_REWARDS = "SPARK_WST_ETH_REWARDS",// TODO: This will be removed once we fully refactor spark rewards
19
+ ETHENA_AIRDROP = "ETHENA_AIRDROP"
19
20
  }
20
21
  type _ClaimableTokenPartial = {
21
22
  symbol: string;
@@ -89,5 +90,8 @@ export type SparkAirdropClaimableToken = _ClaimableTokenPartial & {
89
90
  export type SparkWstEthRewardsClaimableToken = _ClaimableTokenPartial & {
90
91
  claimType: ClaimType.SPARK_WST_ETH_REWARDS;
91
92
  };
92
- export type ClaimableToken = AaveRewardsClaimableToken | AaveMeritRewardsClaimableToken | CompoundV3CompClaimableToken | MorphoClaimableToken | SparkRewardsClaimableToken | KingRewardsClaimableToken | SparkAirdropClaimableToken | SparkWstEthRewardsClaimableToken;
93
+ export type EthenaAirdropClaimableToken = _ClaimableTokenPartial & {
94
+ claimType: ClaimType.ETHENA_AIRDROP;
95
+ };
96
+ export type ClaimableToken = AaveRewardsClaimableToken | AaveMeritRewardsClaimableToken | CompoundV3CompClaimableToken | MorphoClaimableToken | SparkRewardsClaimableToken | KingRewardsClaimableToken | SparkAirdropClaimableToken | SparkWstEthRewardsClaimableToken | EthenaAirdropClaimableToken;
93
97
  export {};
@@ -19,6 +19,7 @@ var ClaimType;
19
19
  ClaimType["SPARK_AIRDROP"] = "SPARK_AIRDROP";
20
20
  /** Spark Airdrop */
21
21
  ClaimType["SPARK_WST_ETH_REWARDS"] = "SPARK_WST_ETH_REWARDS";
22
+ ClaimType["ETHENA_AIRDROP"] = "ETHENA_AIRDROP";
22
23
  })(ClaimType || (exports.ClaimType = ClaimType = {}));
23
24
  var SparkAirdropType;
24
25
  (function (SparkAirdropType) {
@@ -22,7 +22,6 @@ export declare enum MorphoBlueVersions {
22
22
  MorphoBlueLBTCCbBTC_945 = "morphobluelbtccbbtc_945",// LBTC/cbBTC
23
23
  MorphoBlueUSRUSDC_915 = "morphoblueusrusdc_915",// USR/USDC
24
24
  MorphoBlueSyrupUSDCUSDC_915 = "morphobluesyrupusdcusdc_915",// syrupUSDC/USDC
25
- MorphoBluesUSDSUSDT_965 = "morphobluesusdsusdt_965",// sUSDS/USDT
26
25
  MorphoBlueEzEthEth_860 = "morphoblueezetheth_860",
27
26
  MorphoBlueEzEthEth_945 = "morphoblueezetheth_945",
28
27
  MorphoBlueWeEthEth_945 = "morphoblueweetheth_945",
@@ -51,12 +50,7 @@ export declare enum MorphoBlueVersions {
51
50
  MorphoBlueLBTCCbBTC_945_Base = "morphobluelbtccbbtc_945_base",// LBTC/cbBTC
52
51
  MorphoBlueWstEthEURC_860_Base = "morphobluewstetheurc_860_base",// wstETH/EURC
53
52
  MorphoBlueCbBTCEURC_860_Base = "morphobluecbbtceurc_860_base",// cbBTC/EURC
54
- MorphoBlueWETHEURC_860_Base = "morphobluewetheurc_860_base",// WETH/EURC
55
- MorphoBlueSyrupUSDCUSDC_915_Arb = "morphobluesyrupusdcusdc_915_arb",// syrupUSDC/USDC
56
- MorphoBlueWBTCUSDC_860_Arb = "morphobluewbtcusdc_860_arb",// WBTC/USDC
57
- MorphoBlueWstEthUSDC_860_Arb = "morphobluewstethusdc_860_arb",// wstETH/USDC
58
- MorphoBlueEthUSDC_860_Arb = "morphoblueethusdc_860_arb",// ETH/USDC
59
- MorphoBluesUSDSUSDC_945_Arb = "morphobluesusdsusdc_945_arb"
53
+ MorphoBlueWETHEURC_860_Base = "morphobluewetheurc_860_base"
60
54
  }
61
55
  export declare enum MorphoBlueOracleType {
62
56
  MARKET_RATE = "Market rate",
@@ -26,7 +26,6 @@ var MorphoBlueVersions;
26
26
  MorphoBlueVersions["MorphoBlueLBTCCbBTC_945"] = "morphobluelbtccbbtc_945";
27
27
  MorphoBlueVersions["MorphoBlueUSRUSDC_915"] = "morphoblueusrusdc_915";
28
28
  MorphoBlueVersions["MorphoBlueSyrupUSDCUSDC_915"] = "morphobluesyrupusdcusdc_915";
29
- MorphoBlueVersions["MorphoBluesUSDSUSDT_965"] = "morphobluesusdsusdt_965";
30
29
  // ezETH/ETH
31
30
  MorphoBlueVersions["MorphoBlueEzEthEth_860"] = "morphoblueezetheth_860";
32
31
  MorphoBlueVersions["MorphoBlueEzEthEth_945"] = "morphoblueezetheth_945";
@@ -62,12 +61,6 @@ var MorphoBlueVersions;
62
61
  MorphoBlueVersions["MorphoBlueWstEthEURC_860_Base"] = "morphobluewstetheurc_860_base";
63
62
  MorphoBlueVersions["MorphoBlueCbBTCEURC_860_Base"] = "morphobluecbbtceurc_860_base";
64
63
  MorphoBlueVersions["MorphoBlueWETHEURC_860_Base"] = "morphobluewetheurc_860_base";
65
- // ARBITRUM
66
- MorphoBlueVersions["MorphoBlueSyrupUSDCUSDC_915_Arb"] = "morphobluesyrupusdcusdc_915_arb";
67
- MorphoBlueVersions["MorphoBlueWBTCUSDC_860_Arb"] = "morphobluewbtcusdc_860_arb";
68
- MorphoBlueVersions["MorphoBlueWstEthUSDC_860_Arb"] = "morphobluewstethusdc_860_arb";
69
- MorphoBlueVersions["MorphoBlueEthUSDC_860_Arb"] = "morphoblueethusdc_860_arb";
70
- MorphoBlueVersions["MorphoBluesUSDSUSDC_945_Arb"] = "morphobluesusdsusdc_945_arb";
71
64
  })(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));
72
65
  var MorphoBlueOracleType;
73
66
  (function (MorphoBlueOracleType) {
@@ -0,0 +1,3 @@
1
+ import { EthAddress } from '../types/common';
2
+ export declare const fetchEthenaAirdropReward: (address: EthAddress) => Promise<any>;
3
+ export declare const fetchEthenaAirdropRewards: (walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
@@ -0,0 +1,57 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getAssetInfo } from '@defisaver/tokens';
11
+ import Dec from 'decimal.js';
12
+ import { ClaimType } from '../types/claiming';
13
+ export const fetchEthenaAirdropReward = (address) => __awaiter(void 0, void 0, void 0, function* () {
14
+ try {
15
+ const response = yield fetch(`https://airdrop-data-ethena-s4.s3.us-west-2.amazonaws.com/${address}/0x3d99219fbd49ace3f48d6ca1340e505ec1bdf27d1f8d0e15ec9f286cc9215fcd-${address}.json`);
16
+ console.log(response);
17
+ if (!response.ok) {
18
+ throw new Error(`HTTP error! status: ${response.status}`);
19
+ }
20
+ return yield response.json();
21
+ }
22
+ catch (error) {
23
+ console.error('Error fetching Ethena airdrop rewards:', error);
24
+ return '0';
25
+ }
26
+ });
27
+ export const fetchEthenaAirdropRewards = (walletAddresses) => __awaiter(void 0, void 0, void 0, function* () {
28
+ console.log('FETCHING ETHENA');
29
+ const apiDataPromises = walletAddresses.map(address => fetchEthenaAirdropReward(address));
30
+ const apiDataArray = yield Promise.all(apiDataPromises);
31
+ console.log(apiDataArray);
32
+ const results = {};
33
+ for (let i = 0; i < walletAddresses.length; i++) {
34
+ const walletAddress = walletAddresses[i];
35
+ const data = apiDataArray[i];
36
+ if (data.length === 0) {
37
+ results[walletAddress.toLowerCase()] = [];
38
+ continue;
39
+ }
40
+ const processedRewards = [];
41
+ const amount = data.events[0].awardAmount;
42
+ const assetInfo = getAssetInfo('sENA');
43
+ if (new Dec(amount).gt('0')) {
44
+ processedRewards.push({
45
+ symbol: assetInfo.symbol,
46
+ underlyingSymbol: assetInfo.symbol,
47
+ amount,
48
+ claimType: ClaimType.SPARK_AIRDROP,
49
+ tokenAddress: assetInfo.address,
50
+ walletAddress,
51
+ label: 'Ethena Airdrop',
52
+ });
53
+ }
54
+ results[walletAddress.toLowerCase()] = processedRewards;
55
+ }
56
+ return results;
57
+ });
@@ -74237,10 +74237,6 @@ export declare const MorphoBlueView: {
74237
74237
  };
74238
74238
  };
74239
74239
  };
74240
- readonly "42161": {
74241
- readonly address: "0xa3b8b400a2eFF0314fa9605E778692bd4Bd9f880";
74242
- readonly createdBlock: 394369307;
74243
- };
74244
74240
  };
74245
74241
  };
74246
74242
  export declare const FeedRegistry: {
@@ -1051,10 +1051,6 @@ export const MorphoBlueView = {
1051
1051
  "address": "0xDBCACF59C5063da8B15481F88E7D70E13c92f2a1",
1052
1052
  },
1053
1053
  },
1054
- },
1055
- "42161": {
1056
- "address": "0xa3b8b400a2eFF0314fa9605E778692bd4Bd9f880",
1057
- "createdBlock": 394369307,
1058
1054
  }
1059
1055
  },
1060
1056
  };
@@ -32,7 +32,6 @@ export declare const MORPHO_BLUE_USR_USDC_915: (networkId?: NetworkNumber) => Mo
32
32
  export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
33
33
  export declare const MORPHO_BLUE_LBTC_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
34
34
  export declare const MORPHO_BLUE_LBTC_CBBTC_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
35
- export declare const MORPHO_BLUE_SUSDS_USDT_965: (networkId?: NetworkNumber) => MorphoBlueMarketData;
36
35
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
37
36
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d: (networkId?: NetworkNumber) => MorphoBlueMarketData;
38
37
  export declare const MORPHO_BLUE_WSTETH_ETH_945_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -52,11 +51,6 @@ export declare const MORPHO_BLUE_LBTC_CBBTC_945_BASE: (networkId?: NetworkNumber
52
51
  export declare const MORPHO_BLUE_WSTETH_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
53
52
  export declare const MORPHO_BLUE_CBBTC_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
54
53
  export declare const MORPHO_BLUE_WETH_EURC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
55
- export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
56
- export declare const MorphoBlueWBTCUSDC_860_Arb: (networkId?: NetworkNumber) => MorphoBlueMarketData;
57
- export declare const MORPHO_BLUE_WSTETH_USDC_860_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
58
- export declare const MORPHO_BLUE_ETH_USDC_860_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
59
- export declare const MORPHO_BLUE_SUSDS_USDC_945_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
60
54
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
61
55
  readonly morphobluewstethusdc: MorphoBlueMarketData;
62
56
  readonly morphobluesdaiusdc: MorphoBlueMarketData;
@@ -83,7 +77,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
83
77
  readonly morphobluesyrupusdcusdc_915: MorphoBlueMarketData;
84
78
  readonly morphobluelbtcusdc_860: MorphoBlueMarketData;
85
79
  readonly morphobluelbtccbbtc_945: MorphoBlueMarketData;
86
- readonly morphobluesusdsusdt_965: MorphoBlueMarketData;
87
80
  readonly morphobluewstetheth_945: MorphoBlueMarketData;
88
81
  readonly morphobluewstetheth_945_exchange_rate: MorphoBlueMarketData;
89
82
  readonly morphobluewstetheth_965_exchange_rate: MorphoBlueMarketData;
@@ -110,10 +103,5 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
110
103
  readonly morphobluecbetheth_965_base: MorphoBlueMarketData;
111
104
  readonly morphobluewstetheth_945_base: MorphoBlueMarketData;
112
105
  readonly morphobluewstetheth_965_base: MorphoBlueMarketData;
113
- readonly morphobluesyrupusdcusdc_915_arb: MorphoBlueMarketData;
114
- readonly morphobluewbtcusdc_860_arb: MorphoBlueMarketData;
115
- readonly morphobluewstethusdc_860_arb: MorphoBlueMarketData;
116
- readonly morphoblueethusdc_860_arb: MorphoBlueMarketData;
117
- readonly morphobluesusdsusdc_945_arb: MorphoBlueMarketData;
118
106
  };
119
107
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
@@ -486,21 +486,6 @@ export const MORPHO_BLUE_LBTC_CBBTC_945 = (networkId = NetworkNumber.Eth) => ({
486
486
  marketId: '0x444bbce85350aae535b037d090c8bdf6cc4cfc6d79e17725413b4cb0f6183ad4',
487
487
  protocolName: 'morpho-blue',
488
488
  });
489
- export const MORPHO_BLUE_SUSDS_USDT_965 = (networkId = NetworkNumber.Eth) => ({
490
- chainIds: [1],
491
- label: 'Morpho',
492
- shortLabel: 'sUSDS/USDT',
493
- value: MorphoBlueVersions.MorphoBluesUSDSUSDT_965,
494
- url: 'susdsusdt-3274643d',
495
- loanToken: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
496
- collateralToken: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
497
- oracle: '0x0C426d174FC88B7A25d59945Ab2F7274Bf7B4C79',
498
- oracleType: MorphoBlueOracleType.MARKET_RATE,
499
- irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
500
- lltv: 0.965,
501
- marketId: '0x3274643db77a064abd3bc851de77556a4ad2e2f502f4f0c80845fa8f909ecf0b',
502
- protocolName: 'morpho-blue',
503
- });
504
489
  // ###### BASE ########
505
490
  export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = NetworkNumber.Eth) => ({
506
491
  chainIds: [NetworkNumber.Base],
@@ -787,82 +772,6 @@ export const MORPHO_BLUE_WETH_EURC_860_BASE = (networkId = NetworkNumber.Eth) =>
787
772
  marketId: '0xa9b5142fa687a24c275faf731f13b52faa9873252bb4e1cb6077aa1f412edb0b',
788
773
  protocolName: 'morpho-blue',
789
774
  });
790
- // Arbitrum
791
- export const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = (networkId = NetworkNumber.Eth) => ({
792
- chainIds: [NetworkNumber.Arb],
793
- label: 'Morpho',
794
- shortLabel: 'syrupUSDC/USDC',
795
- value: MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb,
796
- url: 'syrupusdcusdc-f86f3edd',
797
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
798
- collateralToken: '0x41CA7586cC1311807B4605fBB748a3B8862b42b5',
799
- oracle: '0x8f30fF3d54e69D4dfD5E99a9937474FaDdf27009',
800
- oracleType: MorphoBlueOracleType.CONTRACT_RATE,
801
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
802
- lltv: 0.915,
803
- marketId: '0xf86f3edd6f16cd8211f4d206866dc4ecd41be6211063ac11f8508e1b7112ef40',
804
- protocolName: 'morpho-blue',
805
- });
806
- export const MorphoBlueWBTCUSDC_860_Arb = (networkId = NetworkNumber.Eth) => ({
807
- chainIds: [NetworkNumber.Arb],
808
- label: 'Morpho',
809
- shortLabel: 'WBTC/USDC',
810
- value: MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb,
811
- url: 'wbtcusdc-e6392ff1',
812
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
813
- collateralToken: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',
814
- oracle: '0x88193FcB705d29724A40Bb818eCAA47dD5F014d9',
815
- oracleType: MorphoBlueOracleType.MARKET_RATE,
816
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
817
- lltv: 0.86,
818
- marketId: '0xe6392ff19d10454b099d692b58c361ef93e31af34ed1ef78232e07c78fe99169',
819
- protocolName: 'morpho-blue',
820
- });
821
- export const MORPHO_BLUE_WSTETH_USDC_860_ARB = (networkId = NetworkNumber.Eth) => ({
822
- chainIds: [NetworkNumber.Arb],
823
- label: 'Morpho',
824
- shortLabel: 'wstETH/USDC',
825
- value: MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb,
826
- url: 'wstethusdc-33e0c8ab',
827
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
828
- collateralToken: '0x5979D7b546E38E414F7E9822514be443A4800529',
829
- oracle: '0x8e02a9b9Cc29d783b2fCB71C3a72651B591cae31',
830
- oracleType: MorphoBlueOracleType.MARKET_RATE,
831
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
832
- lltv: 0.86,
833
- marketId: '0x33e0c8ab132390822b07e5dc95033cf250c963153320b7ffca73220664da2ea0',
834
- protocolName: 'morpho-blue',
835
- });
836
- export const MORPHO_BLUE_ETH_USDC_860_ARB = (networkId = NetworkNumber.Eth) => ({
837
- chainIds: [NetworkNumber.Arb],
838
- label: 'Morpho',
839
- shortLabel: 'ETH/USDC',
840
- value: MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb,
841
- url: 'ethusdc-ca83d02b',
842
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
843
- collateralToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
844
- oracle: '0x282FEB10549fde52bD61A6979424Ddf18A4971A2',
845
- oracleType: MorphoBlueOracleType.MARKET_RATE,
846
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
847
- lltv: 0.86,
848
- marketId: '0xca83d02be579485cc10945c9597a6141e772f1cf0e0aa28d09a327b6cbd8642c',
849
- protocolName: 'morpho-blue',
850
- });
851
- export const MORPHO_BLUE_SUSDS_USDC_945_ARB = (networkId = NetworkNumber.Eth) => ({
852
- chainIds: [NetworkNumber.Arb],
853
- label: 'Morpho',
854
- shortLabel: 'sUSDS/USDC',
855
- value: MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb,
856
- url: 'susdsusdc-77fe2f7c',
857
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
858
- collateralToken: '0xdDb46999F8891663a8F2828d25298f70416d7610',
859
- oracle: '0x52CC7c3b27bb61D0a83785B5344acC919F8f7124',
860
- oracleType: MorphoBlueOracleType.CONTRACT_RATE,
861
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
862
- lltv: 0.945,
863
- marketId: '0x77fe2f7c2dd6f4da6bc5f445b06052ff8df55cb70cfce9afc16ec3c69a5fd3a3',
864
- protocolName: 'morpho-blue',
865
- });
866
775
  export const MorphoBlueMarkets = (networkId) => ({
867
776
  [MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
868
777
  [MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
@@ -889,7 +798,6 @@ export const MorphoBlueMarkets = (networkId) => ({
889
798
  [MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915]: MORPHO_BLUE_SYRUPUSDC_USDC_915(networkId),
890
799
  [MorphoBlueVersions.MorphoBlueLBTCUSDC_860]: MORPHO_BLUE_LBTC_USDC_860(networkId),
891
800
  [MorphoBlueVersions.MorphoBlueLBTCCbBTC_945]: MORPHO_BLUE_LBTC_CBBTC_945(networkId),
892
- [MorphoBlueVersions.MorphoBluesUSDSUSDT_965]: MORPHO_BLUE_SUSDS_USDT_965(networkId),
893
801
  // wstETH/WETH
894
802
  [MorphoBlueVersions.MorphoBlueWstEthEth_945]: MORPHO_BLUE_WSTETH_ETH_945(networkId),
895
803
  [MorphoBlueVersions.MorphoBlueWstEthEth_945_Exchange_Rate]: MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE(networkId),
@@ -923,12 +831,6 @@ export const MorphoBlueMarkets = (networkId) => ({
923
831
  // wstETH/WETH Base
924
832
  [MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: MORPHO_BLUE_WSTETH_ETH_945_BASE(networkId),
925
833
  [MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: MORPHO_BLUE_WSTETH_ETH_965_BASE(networkId),
926
- // Arbitrum
927
- [MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb]: MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB(networkId),
928
- [MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb]: MorphoBlueWBTCUSDC_860_Arb(networkId),
929
- [MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb]: MORPHO_BLUE_WSTETH_USDC_860_ARB(networkId),
930
- [MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb]: MORPHO_BLUE_ETH_USDC_860_ARB(networkId),
931
- [MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb]: MORPHO_BLUE_SUSDS_USDC_945_ARB(networkId),
932
834
  });
933
835
  export const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = NetworkNumber.Eth) => {
934
836
  const markets = MorphoBlueMarkets(network);
@@ -33,6 +33,7 @@ import { getCompoundV3Rewards } from '../claiming/compV3';
33
33
  import { fetchSparkAirdropRewards, fetchSparkRewards } from '../claiming/spark';
34
34
  import { fetchMorphoBlueRewards } from '../claiming/morphoBlue';
35
35
  import { getKingRewards } from '../claiming/king';
36
+ import { fetchEthenaAirdropRewards } from '../claiming/ethena';
36
37
  export function getPortfolioData(provider, network, defaultProvider, addresses, summerFiAddresses) {
37
38
  return __awaiter(this, void 0, void 0, function* () {
38
39
  const isMainnet = network === NetworkNumber.Eth;
@@ -133,6 +134,7 @@ export function getPortfolioData(provider, network, defaultProvider, addresses,
133
134
  spk: {},
134
135
  king: {},
135
136
  morpho: {},
137
+ ethena: {},
136
138
  };
137
139
  }
138
140
  yield Promise.allSettled([
@@ -389,6 +391,27 @@ export function getPortfolioData(provider, network, defaultProvider, addresses,
389
391
  }
390
392
  }
391
393
  }))(),
394
+ (() => __awaiter(this, void 0, void 0, function* () {
395
+ try {
396
+ const ethenaAirdropRewards = yield fetchEthenaAirdropRewards(addresses);
397
+ for (const address of addresses) {
398
+ const lowerAddress = address.toLowerCase();
399
+ rewardsData[lowerAddress].spk = {
400
+ error: '',
401
+ data: ethenaAirdropRewards[lowerAddress] || [],
402
+ };
403
+ }
404
+ }
405
+ catch (error) {
406
+ console.error('Error fetching Ethena Airdrop rewards data:', error);
407
+ for (const address of addresses) {
408
+ rewardsData[address.toLowerCase()].ethena = {
409
+ error: 'Error fetching Ethena Airdrop rewards data in batch',
410
+ data: null,
411
+ };
412
+ }
413
+ }
414
+ }))(),
392
415
  ]);
393
416
  yield Promise.all([
394
417
  ...aaveV3Markets.map((market) => allAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
@@ -65,7 +65,7 @@ const getApyFromDfsApi = (asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...
65
65
  export const STAKING_ASSETS = [
66
66
  'cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH',
67
67
  'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
68
- 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC',
68
+ 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
69
69
  ];
70
70
  export const getStakingApy = memoize((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = NetworkNumber.Eth) {
71
71
  try {
@@ -123,6 +123,8 @@ export const getStakingApy = memoize((asset_1, ...args_1) => __awaiter(void 0, [
123
123
  return yield getApyFromDfsApi('syrupUSDT');
124
124
  if (asset === 'syrupUSDC')
125
125
  return yield getApyFromDfsApi('syrupUSDC');
126
+ if (asset === 'wstUSR')
127
+ return yield getApyFromDfsApi('wstUSR');
126
128
  }
127
129
  catch (e) {
128
130
  console.error(`Failed to fetch APY for ${asset}`);
@@ -15,7 +15,8 @@ export declare enum ClaimType {
15
15
  /** Spark Airdrop */
16
16
  SPARK_AIRDROP = "SPARK_AIRDROP",
17
17
  /** Spark Airdrop */
18
- SPARK_WST_ETH_REWARDS = "SPARK_WST_ETH_REWARDS"
18
+ SPARK_WST_ETH_REWARDS = "SPARK_WST_ETH_REWARDS",// TODO: This will be removed once we fully refactor spark rewards
19
+ ETHENA_AIRDROP = "ETHENA_AIRDROP"
19
20
  }
20
21
  type _ClaimableTokenPartial = {
21
22
  symbol: string;
@@ -89,5 +90,8 @@ export type SparkAirdropClaimableToken = _ClaimableTokenPartial & {
89
90
  export type SparkWstEthRewardsClaimableToken = _ClaimableTokenPartial & {
90
91
  claimType: ClaimType.SPARK_WST_ETH_REWARDS;
91
92
  };
92
- export type ClaimableToken = AaveRewardsClaimableToken | AaveMeritRewardsClaimableToken | CompoundV3CompClaimableToken | MorphoClaimableToken | SparkRewardsClaimableToken | KingRewardsClaimableToken | SparkAirdropClaimableToken | SparkWstEthRewardsClaimableToken;
93
+ export type EthenaAirdropClaimableToken = _ClaimableTokenPartial & {
94
+ claimType: ClaimType.ETHENA_AIRDROP;
95
+ };
96
+ export type ClaimableToken = AaveRewardsClaimableToken | AaveMeritRewardsClaimableToken | CompoundV3CompClaimableToken | MorphoClaimableToken | SparkRewardsClaimableToken | KingRewardsClaimableToken | SparkAirdropClaimableToken | SparkWstEthRewardsClaimableToken | EthenaAirdropClaimableToken;
93
97
  export {};
@@ -16,6 +16,7 @@ export var ClaimType;
16
16
  ClaimType["SPARK_AIRDROP"] = "SPARK_AIRDROP";
17
17
  /** Spark Airdrop */
18
18
  ClaimType["SPARK_WST_ETH_REWARDS"] = "SPARK_WST_ETH_REWARDS";
19
+ ClaimType["ETHENA_AIRDROP"] = "ETHENA_AIRDROP";
19
20
  })(ClaimType || (ClaimType = {}));
20
21
  export var SparkAirdropType;
21
22
  (function (SparkAirdropType) {
@@ -22,7 +22,6 @@ export declare enum MorphoBlueVersions {
22
22
  MorphoBlueLBTCCbBTC_945 = "morphobluelbtccbbtc_945",// LBTC/cbBTC
23
23
  MorphoBlueUSRUSDC_915 = "morphoblueusrusdc_915",// USR/USDC
24
24
  MorphoBlueSyrupUSDCUSDC_915 = "morphobluesyrupusdcusdc_915",// syrupUSDC/USDC
25
- MorphoBluesUSDSUSDT_965 = "morphobluesusdsusdt_965",// sUSDS/USDT
26
25
  MorphoBlueEzEthEth_860 = "morphoblueezetheth_860",
27
26
  MorphoBlueEzEthEth_945 = "morphoblueezetheth_945",
28
27
  MorphoBlueWeEthEth_945 = "morphoblueweetheth_945",
@@ -51,12 +50,7 @@ export declare enum MorphoBlueVersions {
51
50
  MorphoBlueLBTCCbBTC_945_Base = "morphobluelbtccbbtc_945_base",// LBTC/cbBTC
52
51
  MorphoBlueWstEthEURC_860_Base = "morphobluewstetheurc_860_base",// wstETH/EURC
53
52
  MorphoBlueCbBTCEURC_860_Base = "morphobluecbbtceurc_860_base",// cbBTC/EURC
54
- MorphoBlueWETHEURC_860_Base = "morphobluewetheurc_860_base",// WETH/EURC
55
- MorphoBlueSyrupUSDCUSDC_915_Arb = "morphobluesyrupusdcusdc_915_arb",// syrupUSDC/USDC
56
- MorphoBlueWBTCUSDC_860_Arb = "morphobluewbtcusdc_860_arb",// WBTC/USDC
57
- MorphoBlueWstEthUSDC_860_Arb = "morphobluewstethusdc_860_arb",// wstETH/USDC
58
- MorphoBlueEthUSDC_860_Arb = "morphoblueethusdc_860_arb",// ETH/USDC
59
- MorphoBluesUSDSUSDC_945_Arb = "morphobluesusdsusdc_945_arb"
53
+ MorphoBlueWETHEURC_860_Base = "morphobluewetheurc_860_base"
60
54
  }
61
55
  export declare enum MorphoBlueOracleType {
62
56
  MARKET_RATE = "Market rate",
@@ -23,7 +23,6 @@ export var MorphoBlueVersions;
23
23
  MorphoBlueVersions["MorphoBlueLBTCCbBTC_945"] = "morphobluelbtccbbtc_945";
24
24
  MorphoBlueVersions["MorphoBlueUSRUSDC_915"] = "morphoblueusrusdc_915";
25
25
  MorphoBlueVersions["MorphoBlueSyrupUSDCUSDC_915"] = "morphobluesyrupusdcusdc_915";
26
- MorphoBlueVersions["MorphoBluesUSDSUSDT_965"] = "morphobluesusdsusdt_965";
27
26
  // ezETH/ETH
28
27
  MorphoBlueVersions["MorphoBlueEzEthEth_860"] = "morphoblueezetheth_860";
29
28
  MorphoBlueVersions["MorphoBlueEzEthEth_945"] = "morphoblueezetheth_945";
@@ -59,12 +58,6 @@ export var MorphoBlueVersions;
59
58
  MorphoBlueVersions["MorphoBlueWstEthEURC_860_Base"] = "morphobluewstetheurc_860_base";
60
59
  MorphoBlueVersions["MorphoBlueCbBTCEURC_860_Base"] = "morphobluecbbtceurc_860_base";
61
60
  MorphoBlueVersions["MorphoBlueWETHEURC_860_Base"] = "morphobluewetheurc_860_base";
62
- // ARBITRUM
63
- MorphoBlueVersions["MorphoBlueSyrupUSDCUSDC_915_Arb"] = "morphobluesyrupusdcusdc_915_arb";
64
- MorphoBlueVersions["MorphoBlueWBTCUSDC_860_Arb"] = "morphobluewbtcusdc_860_arb";
65
- MorphoBlueVersions["MorphoBlueWstEthUSDC_860_Arb"] = "morphobluewstethusdc_860_arb";
66
- MorphoBlueVersions["MorphoBlueEthUSDC_860_Arb"] = "morphoblueethusdc_860_arb";
67
- MorphoBlueVersions["MorphoBluesUSDSUSDC_945_Arb"] = "morphobluesusdsusdc_945_arb";
68
61
  })(MorphoBlueVersions || (MorphoBlueVersions = {}));
69
62
  export var MorphoBlueOracleType;
70
63
  (function (MorphoBlueOracleType) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "2.1.20-dev-morpho-2",
3
+ "version": "2.1.21-dev-ethena",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -21,7 +21,7 @@
21
21
  "author": "",
22
22
  "license": "ISC",
23
23
  "dependencies": {
24
- "@defisaver/tokens": "^1.7.10-dev-syrupusdc",
24
+ "@defisaver/tokens": "^1.7.9",
25
25
  "@types/lodash": "^4.17.15",
26
26
  "@types/memoizee": "^0.4.12",
27
27
  "decimal.js": "^10.6.0",
@@ -0,0 +1,58 @@
1
+ import { getAssetInfo } from '@defisaver/tokens';
2
+ import Dec from 'decimal.js';
3
+ import { EthAddress } from '../types/common';
4
+ import { ClaimType } from '../types/claiming';
5
+
6
+ export const fetchEthenaAirdropReward = async (address: EthAddress) => {
7
+ try {
8
+ const response = await fetch(`https://airdrop-data-ethena-s4.s3.us-west-2.amazonaws.com/${address}/0x3d99219fbd49ace3f48d6ca1340e505ec1bdf27d1f8d0e15ec9f286cc9215fcd-${address}.json`);
9
+
10
+ console.log(response);
11
+ if (!response.ok) {
12
+ throw new Error(`HTTP error! status: ${response.status}`);
13
+ }
14
+
15
+ return await response.json();
16
+ } catch (error) {
17
+ console.error('Error fetching Ethena airdrop rewards:', error);
18
+ return '0';
19
+ }
20
+ };
21
+
22
+ export const fetchEthenaAirdropRewards = async (walletAddresses: EthAddress[]): Promise<Record<string, any[]>> => {
23
+ console.log('FETCHING ETHENA');
24
+ const apiDataPromises = walletAddresses.map(address => fetchEthenaAirdropReward(address));
25
+ const apiDataArray = await Promise.all(apiDataPromises);
26
+
27
+ console.log(apiDataArray);
28
+ const results: Record<string, any[]> = {};
29
+ for (let i = 0; i < walletAddresses.length; i++) {
30
+ const walletAddress = walletAddresses[i];
31
+ const data = apiDataArray[i];
32
+
33
+ if (data.length === 0) {
34
+ results[walletAddress.toLowerCase() as EthAddress] = [];
35
+ continue;
36
+ }
37
+
38
+ const processedRewards = [];
39
+ const amount = data.events[0].awardAmount;
40
+ const assetInfo = getAssetInfo('sENA');
41
+
42
+ if (new Dec(amount).gt('0')) {
43
+ processedRewards.push({
44
+ symbol: assetInfo.symbol,
45
+ underlyingSymbol: assetInfo.symbol,
46
+ amount,
47
+ claimType: ClaimType.SPARK_AIRDROP,
48
+ tokenAddress: assetInfo.address,
49
+ walletAddress,
50
+ label: 'Ethena Airdrop',
51
+ });
52
+ }
53
+
54
+ results[walletAddress.toLowerCase() as EthAddress] = processedRewards;
55
+ }
56
+
57
+ return results;
58
+ };
@@ -1053,10 +1053,6 @@ export const MorphoBlueView = {
1053
1053
  "address": "0xDBCACF59C5063da8B15481F88E7D70E13c92f2a1",
1054
1054
  },
1055
1055
  },
1056
- },
1057
- "42161": {
1058
- "address": "0xa3b8b400a2eFF0314fa9605E778692bd4Bd9f880",
1059
- "createdBlock": 394369307,
1060
1056
  }
1061
1057
  },
1062
1058
  } as const;
@@ -495,22 +495,6 @@ export const MORPHO_BLUE_LBTC_CBBTC_945 = (networkId: NetworkNumber = NetworkNum
495
495
  protocolName: 'morpho-blue',
496
496
  });
497
497
 
498
- export const MORPHO_BLUE_SUSDS_USDT_965 = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
499
- chainIds: [1],
500
- label: 'Morpho',
501
- shortLabel: 'sUSDS/USDT',
502
- value: MorphoBlueVersions.MorphoBluesUSDSUSDT_965,
503
- url: 'susdsusdt-3274643d',
504
- loanToken: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
505
- collateralToken: '0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD',
506
- oracle: '0x0C426d174FC88B7A25d59945Ab2F7274Bf7B4C79',
507
- oracleType: MorphoBlueOracleType.MARKET_RATE,
508
- irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
509
- lltv: 0.965,
510
- marketId: '0x3274643db77a064abd3bc851de77556a4ad2e2f502f4f0c80845fa8f909ecf0b',
511
- protocolName: 'morpho-blue',
512
- });
513
-
514
498
  // ###### BASE ########
515
499
 
516
500
  export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
@@ -805,87 +789,6 @@ export const MORPHO_BLUE_WETH_EURC_860_BASE = (networkId: NetworkNumber = Networ
805
789
  protocolName: 'morpho-blue',
806
790
  });
807
791
 
808
- // Arbitrum
809
- export const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
810
- chainIds: [NetworkNumber.Arb],
811
- label: 'Morpho',
812
- shortLabel: 'syrupUSDC/USDC',
813
- value: MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb,
814
- url: 'syrupusdcusdc-f86f3edd',
815
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
816
- collateralToken: '0x41CA7586cC1311807B4605fBB748a3B8862b42b5',
817
- oracle: '0x8f30fF3d54e69D4dfD5E99a9937474FaDdf27009',
818
- oracleType: MorphoBlueOracleType.CONTRACT_RATE,
819
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
820
- lltv: 0.915,
821
- marketId: '0xf86f3edd6f16cd8211f4d206866dc4ecd41be6211063ac11f8508e1b7112ef40',
822
- protocolName: 'morpho-blue',
823
- });
824
-
825
- export const MorphoBlueWBTCUSDC_860_Arb = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
826
- chainIds: [NetworkNumber.Arb],
827
- label: 'Morpho',
828
- shortLabel: 'WBTC/USDC',
829
- value: MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb,
830
- url: 'wbtcusdc-e6392ff1',
831
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
832
- collateralToken: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f',
833
- oracle: '0x88193FcB705d29724A40Bb818eCAA47dD5F014d9',
834
- oracleType: MorphoBlueOracleType.MARKET_RATE,
835
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
836
- lltv: 0.86,
837
- marketId: '0xe6392ff19d10454b099d692b58c361ef93e31af34ed1ef78232e07c78fe99169',
838
- protocolName: 'morpho-blue',
839
- });
840
-
841
- export const MORPHO_BLUE_WSTETH_USDC_860_ARB = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
842
- chainIds: [NetworkNumber.Arb],
843
- label: 'Morpho',
844
- shortLabel: 'wstETH/USDC',
845
- value: MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb,
846
- url: 'wstethusdc-33e0c8ab',
847
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
848
- collateralToken: '0x5979D7b546E38E414F7E9822514be443A4800529',
849
- oracle: '0x8e02a9b9Cc29d783b2fCB71C3a72651B591cae31',
850
- oracleType: MorphoBlueOracleType.MARKET_RATE,
851
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
852
- lltv: 0.86,
853
- marketId: '0x33e0c8ab132390822b07e5dc95033cf250c963153320b7ffca73220664da2ea0',
854
- protocolName: 'morpho-blue',
855
- });
856
-
857
- export const MORPHO_BLUE_ETH_USDC_860_ARB = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
858
- chainIds: [NetworkNumber.Arb],
859
- label: 'Morpho',
860
- shortLabel: 'ETH/USDC',
861
- value: MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb,
862
- url: 'ethusdc-ca83d02b',
863
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
864
- collateralToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
865
- oracle: '0x282FEB10549fde52bD61A6979424Ddf18A4971A2',
866
- oracleType: MorphoBlueOracleType.MARKET_RATE,
867
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
868
- lltv: 0.86,
869
- marketId: '0xca83d02be579485cc10945c9597a6141e772f1cf0e0aa28d09a327b6cbd8642c',
870
- protocolName: 'morpho-blue',
871
- });
872
-
873
- export const MORPHO_BLUE_SUSDS_USDC_945_ARB = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
874
- chainIds: [NetworkNumber.Arb],
875
- label: 'Morpho',
876
- shortLabel: 'sUSDS/USDC',
877
- value: MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb,
878
- url: 'susdsusdc-77fe2f7c',
879
- loanToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
880
- collateralToken: '0xdDb46999F8891663a8F2828d25298f70416d7610',
881
- oracle: '0x52CC7c3b27bb61D0a83785B5344acC919F8f7124',
882
- oracleType: MorphoBlueOracleType.CONTRACT_RATE,
883
- irm: '0x66F30587FB8D4206918deb78ecA7d5eBbafD06DA',
884
- lltv: 0.945,
885
- marketId: '0x77fe2f7c2dd6f4da6bc5f445b06052ff8df55cb70cfce9afc16ec3c69a5fd3a3',
886
- protocolName: 'morpho-blue',
887
- });
888
-
889
792
  export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
890
793
  [MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
891
794
  [MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
@@ -912,7 +815,6 @@ export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
912
815
  [MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915]: MORPHO_BLUE_SYRUPUSDC_USDC_915(networkId),
913
816
  [MorphoBlueVersions.MorphoBlueLBTCUSDC_860]: MORPHO_BLUE_LBTC_USDC_860(networkId),
914
817
  [MorphoBlueVersions.MorphoBlueLBTCCbBTC_945]: MORPHO_BLUE_LBTC_CBBTC_945(networkId),
915
- [MorphoBlueVersions.MorphoBluesUSDSUSDT_965]: MORPHO_BLUE_SUSDS_USDT_965(networkId),
916
818
 
917
819
  // wstETH/WETH
918
820
  [MorphoBlueVersions.MorphoBlueWstEthEth_945]: MORPHO_BLUE_WSTETH_ETH_945(networkId),
@@ -952,13 +854,6 @@ export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
952
854
  // wstETH/WETH Base
953
855
  [MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: MORPHO_BLUE_WSTETH_ETH_945_BASE(networkId),
954
856
  [MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: MORPHO_BLUE_WSTETH_ETH_965_BASE(networkId),
955
-
956
- // Arbitrum
957
- [MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915_Arb]: MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB(networkId),
958
- [MorphoBlueVersions.MorphoBlueWBTCUSDC_860_Arb]: MorphoBlueWBTCUSDC_860_Arb(networkId),
959
- [MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Arb]: MORPHO_BLUE_WSTETH_USDC_860_ARB(networkId),
960
- [MorphoBlueVersions.MorphoBlueEthUSDC_860_Arb]: MORPHO_BLUE_ETH_USDC_860_ARB(networkId),
961
- [MorphoBlueVersions.MorphoBluesUSDSUSDC_945_Arb]: MORPHO_BLUE_SUSDS_USDC_945_ARB(networkId),
962
857
  }) as const;
963
858
 
964
859
  export const findMorphoBlueMarket = (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network = NetworkNumber.Eth) => {
@@ -48,6 +48,7 @@ import { getCompoundV3Rewards } from '../claiming/compV3';
48
48
  import { fetchSparkAirdropRewards, fetchSparkRewards } from '../claiming/spark';
49
49
  import { fetchMorphoBlueRewards } from '../claiming/morphoBlue';
50
50
  import { getKingRewards } from '../claiming/king';
51
+ import { fetchEthenaAirdropRewards } from '../claiming/ethena';
51
52
 
52
53
  export async function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], summerFiAddresses: EthAddress[]): Promise<{
53
54
  positions: PortfolioPositionsData;
@@ -161,6 +162,7 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
161
162
  spk: {},
162
163
  king: {},
163
164
  morpho: {},
165
+ ethena: {},
164
166
  };
165
167
  }
166
168
 
@@ -402,6 +404,26 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
402
404
  }
403
405
  }
404
406
  })(),
407
+ (async () => {
408
+ try {
409
+ const ethenaAirdropRewards = await fetchEthenaAirdropRewards(addresses);
410
+ for (const address of addresses) {
411
+ const lowerAddress = address.toLowerCase() as EthAddress;
412
+ rewardsData[lowerAddress].spk = {
413
+ error: '',
414
+ data: ethenaAirdropRewards[lowerAddress] || [],
415
+ };
416
+ }
417
+ } catch (error) {
418
+ console.error('Error fetching Ethena Airdrop rewards data:', error);
419
+ for (const address of addresses) {
420
+ rewardsData[address.toLowerCase() as EthAddress].ethena = {
421
+ error: 'Error fetching Ethena Airdrop rewards data in batch',
422
+ data: null,
423
+ };
424
+ }
425
+ }
426
+ })(),
405
427
  ]);
406
428
 
407
429
 
@@ -63,7 +63,7 @@ const getApyFromDfsApi = async (asset: string, network: number = NetworkNumber.E
63
63
  export const STAKING_ASSETS = [
64
64
  'cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH',
65
65
  'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep',
66
- 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC',
66
+ 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'syrupUSDC', 'wstUSR',
67
67
  ];
68
68
 
69
69
  export const getStakingApy = memoize(async (asset: string, network: number = NetworkNumber.Eth) => {
@@ -95,6 +95,7 @@ export const getStakingApy = memoize(async (asset: string, network: number = Net
95
95
  if (asset === 'PT sUSDe Jan') return await getApyFromDfsApi('PT sUSDe Jan', network);
96
96
  if (asset === 'syrupUSDT') return await getApyFromDfsApi('syrupUSDT');
97
97
  if (asset === 'syrupUSDC') return await getApyFromDfsApi('syrupUSDC');
98
+ if (asset === 'wstUSR') return await getApyFromDfsApi('wstUSR');
98
99
  } catch (e) {
99
100
  console.error(`Failed to fetch APY for ${asset}`);
100
101
  }
@@ -17,6 +17,8 @@ export enum ClaimType {
17
17
  SPARK_AIRDROP = 'SPARK_AIRDROP',
18
18
  /** Spark Airdrop */
19
19
  SPARK_WST_ETH_REWARDS = 'SPARK_WST_ETH_REWARDS', // TODO: This will be removed once we fully refactor spark rewards
20
+
21
+ ETHENA_AIRDROP = 'ETHENA_AIRDROP',
20
22
  }
21
23
 
22
24
  type _ClaimableTokenPartial = {
@@ -98,6 +100,8 @@ export type SparkAirdropClaimableToken = _ClaimableTokenPartial & {
98
100
 
99
101
  export type SparkWstEthRewardsClaimableToken = _ClaimableTokenPartial & { claimType: ClaimType.SPARK_WST_ETH_REWARDS };
100
102
 
103
+ export type EthenaAirdropClaimableToken = _ClaimableTokenPartial & { claimType: ClaimType.ETHENA_AIRDROP };
104
+
101
105
  export type ClaimableToken =
102
106
  AaveRewardsClaimableToken
103
107
  | AaveMeritRewardsClaimableToken
@@ -106,4 +110,5 @@ export type ClaimableToken =
106
110
  | SparkRewardsClaimableToken
107
111
  | KingRewardsClaimableToken
108
112
  | SparkAirdropClaimableToken
109
- | SparkWstEthRewardsClaimableToken;
113
+ | SparkWstEthRewardsClaimableToken
114
+ | EthenaAirdropClaimableToken;
@@ -26,7 +26,6 @@ export enum MorphoBlueVersions {
26
26
  MorphoBlueLBTCCbBTC_945 = 'morphobluelbtccbbtc_945', // LBTC/cbBTC
27
27
  MorphoBlueUSRUSDC_915 = 'morphoblueusrusdc_915', // USR/USDC
28
28
  MorphoBlueSyrupUSDCUSDC_915 = 'morphobluesyrupusdcusdc_915', // syrupUSDC/USDC
29
- MorphoBluesUSDSUSDT_965 = 'morphobluesusdsusdt_965', // sUSDS/USDT
30
29
  // ezETH/ETH
31
30
  MorphoBlueEzEthEth_860 = 'morphoblueezetheth_860',
32
31
  MorphoBlueEzEthEth_945 = 'morphoblueezetheth_945',
@@ -63,13 +62,6 @@ export enum MorphoBlueVersions {
63
62
  MorphoBlueWstEthEURC_860_Base = 'morphobluewstetheurc_860_base', // wstETH/EURC
64
63
  MorphoBlueCbBTCEURC_860_Base = 'morphobluecbbtceurc_860_base', // cbBTC/EURC
65
64
  MorphoBlueWETHEURC_860_Base = 'morphobluewetheurc_860_base', // WETH/EURC
66
-
67
- // ARBITRUM
68
- MorphoBlueSyrupUSDCUSDC_915_Arb = 'morphobluesyrupusdcusdc_915_arb', // syrupUSDC/USDC
69
- MorphoBlueWBTCUSDC_860_Arb = 'morphobluewbtcusdc_860_arb', // WBTC/USDC
70
- MorphoBlueWstEthUSDC_860_Arb = 'morphobluewstethusdc_860_arb', // wstETH/USDC
71
- MorphoBlueEthUSDC_860_Arb = 'morphoblueethusdc_860_arb', // ETH/USDC
72
- MorphoBluesUSDSUSDC_945_Arb = 'morphobluesusdsusdc_945_arb', // sUSDS/USDC
73
65
  }
74
66
 
75
67
  export enum MorphoBlueOracleType {