@defisaver/positions-sdk 2.1.16 → 2.1.17

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.
@@ -142,7 +142,30 @@ export declare enum FluidBaseVersions {
142
142
  FLUID_LBTC_USDC_21_BASE = "FLUID_LBTC_USDC_21_BASE",
143
143
  FLUID_LBTC_SUSDS_22_BASE = "FLUID_LBTC_SUSDS_22_BASE"
144
144
  }
145
- export type FluidVersions = FluidArbitrumVersion | FluidBaseVersions | FluidMainnetVersion;
145
+ export declare enum FluidPlasmaVersions {
146
+ FLUID_ETH_USDT_1_PLASMA = "FLUID_ETH_USDT_1_PLASMA",
147
+ FLUID_ETH_USDE_2_PLASMA = "FLUID_ETH_USDE_2_PLASMA",
148
+ FLUID_WEETH_ETH_3_PLASMA = "FLUID_WEETH_ETH_3_PLASMA",
149
+ FLUID_SUSDE_USDT_4_PLASMA = "FLUID_SUSDE_USDT_4_PLASMA",
150
+ FLUID_WEETH_USDT_5_PLASMA = "FLUID_WEETH_USDT_5_PLASMA",
151
+ FLUID_WEETH_USDE_6_PLASMA = "FLUID_WEETH_USDE_6_PLASMA",
152
+ FLUID_XAUT_USDT_7_PLASMA = "FLUID_XAUT_USDT_7_PLASMA",
153
+ FLUID_XAUT_USDE_8_PLASMA = "FLUID_XAUT_USDE_8_PLASMA",
154
+ FLUID_USDE_USDT_9_PLASMA = "FLUID_USDE_USDT_9_PLASMA",
155
+ FLUID_USDAI_USDT_10_PLASMA = "FLUID_USDAI_USDT_10_PLASMA",
156
+ FLUID_ETH_WEETH_ETH_11_PLASMA = "FLUID_ETH_WEETH_ETH_11_PLASMA",
157
+ FLUID_SUSDE_USDT_USDT_12_PLASMA = "FLUID_SUSDE_USDT_USDT_12_PLASMA",
158
+ FLUID_USDE_USDT_USDT_13_PLASMA = "FLUID_USDE_USDT_USDT_13_PLASMA",
159
+ FLUID_USDAI_USDT_USDT_14_PLASMA = "FLUID_USDAI_USDT_USDT_14_PLASMA",
160
+ FLUID_USDT_SYRUPUSDT_USDT_15_PLASMA = "FLUID_USDT_SYRUPUSDT_USDT_15_PLASMA",
161
+ FLUID_XPL_USDT_16_PLASMA = "FLUID_XPL_USDT_16_PLASMA",
162
+ FLUID_XPL_USDE_17_PLASMA = "FLUID_XPL_USDE_17_PLASMA",
163
+ FLUID_WSTUSR_USDT_18_PLASMA = "FLUID_WSTUSR_USDT_18_PLASMA",
164
+ FLUID_WSTUSR_USDT_USDT_19_PLASMA = "FLUID_WSTUSR_USDT_USDT_19_PLASMA",
165
+ FLUID_SYRUPUSDT_USDT_20_PLASMA = "FLUID_SYRUPUSDT_USDT_20_PLASMA",
166
+ FLUID_ETH_WRSETH_ETH_21_PLASMA = "FLUID_ETH_WRSETH_ETH_21_PLASMA"
167
+ }
168
+ export type FluidVersions = FluidArbitrumVersion | FluidBaseVersions | FluidMainnetVersion | FluidPlasmaVersions;
146
169
  export declare enum FluidMainnetDepositToken {
147
170
  ETH = "ETH",
148
171
  wstETH = "wstETH",
@@ -169,10 +192,16 @@ export declare enum FluidBaseDepositToken {
169
192
  sUSDS = "sUSDS",
170
193
  GHO = "GHO"
171
194
  }
195
+ export declare enum FluidPlasmaDepositToken {
196
+ USDe = "USDe",
197
+ USDT = "USDT",
198
+ ETH = "ETH"
199
+ }
172
200
  export type FluidDepositTokenByNetwork = {
173
201
  [NetworkNumber.Eth]: FluidMainnetDepositToken;
174
202
  [NetworkNumber.Arb]: FluidArbitrumDepositToken;
175
203
  [NetworkNumber.Base]: FluidBaseDepositToken;
204
+ [NetworkNumber.Plasma]: FluidPlasmaDepositToken;
176
205
  };
177
206
  export declare enum FluidVaultType {
178
207
  T1 = "T1",
@@ -125,6 +125,30 @@ export var FluidBaseVersions;
125
125
  FluidBaseVersions["FLUID_LBTC_USDC_21_BASE"] = "FLUID_LBTC_USDC_21_BASE";
126
126
  FluidBaseVersions["FLUID_LBTC_SUSDS_22_BASE"] = "FLUID_LBTC_SUSDS_22_BASE";
127
127
  })(FluidBaseVersions || (FluidBaseVersions = {}));
128
+ export var FluidPlasmaVersions;
129
+ (function (FluidPlasmaVersions) {
130
+ FluidPlasmaVersions["FLUID_ETH_USDT_1_PLASMA"] = "FLUID_ETH_USDT_1_PLASMA";
131
+ FluidPlasmaVersions["FLUID_ETH_USDE_2_PLASMA"] = "FLUID_ETH_USDE_2_PLASMA";
132
+ FluidPlasmaVersions["FLUID_WEETH_ETH_3_PLASMA"] = "FLUID_WEETH_ETH_3_PLASMA";
133
+ FluidPlasmaVersions["FLUID_SUSDE_USDT_4_PLASMA"] = "FLUID_SUSDE_USDT_4_PLASMA";
134
+ FluidPlasmaVersions["FLUID_WEETH_USDT_5_PLASMA"] = "FLUID_WEETH_USDT_5_PLASMA";
135
+ FluidPlasmaVersions["FLUID_WEETH_USDE_6_PLASMA"] = "FLUID_WEETH_USDE_6_PLASMA";
136
+ FluidPlasmaVersions["FLUID_XAUT_USDT_7_PLASMA"] = "FLUID_XAUT_USDT_7_PLASMA";
137
+ FluidPlasmaVersions["FLUID_XAUT_USDE_8_PLASMA"] = "FLUID_XAUT_USDE_8_PLASMA";
138
+ FluidPlasmaVersions["FLUID_USDE_USDT_9_PLASMA"] = "FLUID_USDE_USDT_9_PLASMA";
139
+ FluidPlasmaVersions["FLUID_USDAI_USDT_10_PLASMA"] = "FLUID_USDAI_USDT_10_PLASMA";
140
+ FluidPlasmaVersions["FLUID_ETH_WEETH_ETH_11_PLASMA"] = "FLUID_ETH_WEETH_ETH_11_PLASMA";
141
+ FluidPlasmaVersions["FLUID_SUSDE_USDT_USDT_12_PLASMA"] = "FLUID_SUSDE_USDT_USDT_12_PLASMA";
142
+ FluidPlasmaVersions["FLUID_USDE_USDT_USDT_13_PLASMA"] = "FLUID_USDE_USDT_USDT_13_PLASMA";
143
+ FluidPlasmaVersions["FLUID_USDAI_USDT_USDT_14_PLASMA"] = "FLUID_USDAI_USDT_USDT_14_PLASMA";
144
+ FluidPlasmaVersions["FLUID_USDT_SYRUPUSDT_USDT_15_PLASMA"] = "FLUID_USDT_SYRUPUSDT_USDT_15_PLASMA";
145
+ FluidPlasmaVersions["FLUID_XPL_USDT_16_PLASMA"] = "FLUID_XPL_USDT_16_PLASMA";
146
+ FluidPlasmaVersions["FLUID_XPL_USDE_17_PLASMA"] = "FLUID_XPL_USDE_17_PLASMA";
147
+ FluidPlasmaVersions["FLUID_WSTUSR_USDT_18_PLASMA"] = "FLUID_WSTUSR_USDT_18_PLASMA";
148
+ FluidPlasmaVersions["FLUID_WSTUSR_USDT_USDT_19_PLASMA"] = "FLUID_WSTUSR_USDT_USDT_19_PLASMA";
149
+ FluidPlasmaVersions["FLUID_SYRUPUSDT_USDT_20_PLASMA"] = "FLUID_SYRUPUSDT_USDT_20_PLASMA";
150
+ FluidPlasmaVersions["FLUID_ETH_WRSETH_ETH_21_PLASMA"] = "FLUID_ETH_WRSETH_ETH_21_PLASMA";
151
+ })(FluidPlasmaVersions || (FluidPlasmaVersions = {}));
128
152
  export var FluidMainnetDepositToken;
129
153
  (function (FluidMainnetDepositToken) {
130
154
  FluidMainnetDepositToken["ETH"] = "ETH";
@@ -154,6 +178,12 @@ export var FluidBaseDepositToken;
154
178
  FluidBaseDepositToken["sUSDS"] = "sUSDS";
155
179
  FluidBaseDepositToken["GHO"] = "GHO";
156
180
  })(FluidBaseDepositToken || (FluidBaseDepositToken = {}));
181
+ export var FluidPlasmaDepositToken;
182
+ (function (FluidPlasmaDepositToken) {
183
+ FluidPlasmaDepositToken["USDe"] = "USDe";
184
+ FluidPlasmaDepositToken["USDT"] = "USDT";
185
+ FluidPlasmaDepositToken["ETH"] = "ETH";
186
+ })(FluidPlasmaDepositToken || (FluidPlasmaDepositToken = {}));
157
187
  export var FluidVaultType;
158
188
  (function (FluidVaultType) {
159
189
  FluidVaultType["T1"] = "T1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "2.1.16",
3
+ "version": "2.1.17",
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.7",
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",
@@ -987,7 +987,8 @@ export const ETHPriceFeed = {
987
987
  "1": { "address": "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419" },
988
988
  "10": { "address": "0x13e3Ee699D1909E989722E753853AE30b17e08c5" },
989
989
  "8453": { "address": "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70" },
990
- "42161": { "address": "0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612" }
990
+ "42161": { "address": "0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612" },
991
+ "9745": { "address": "0x43A7dd2125266c5c4c26EB86cd61241132426Fe7" },
991
992
  },
992
993
  } as const;
993
994
  export const BTCPriceFeed = {
@@ -996,7 +997,8 @@ export const BTCPriceFeed = {
996
997
  "1": { "address": "0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c" },
997
998
  "10": { "address": "0xD702DD976Fb76Fffc2D3963D037dfDae5b04E593" },
998
999
  "8453": { "address": "0x64c911996D3c6aC71f9b455B1E8E7266BcbD848F" },
999
- "42161": { "address": "0x6ce185860a4963106506C203335A2910413708e9" }
1000
+ "42161": { "address": "0x6ce185860a4963106506C203335A2910413708e9" },
1001
+ "9745": { "address": "0x3Bc5434dd1Fc6a1B68625e0269B9818cDd9E21B5" }
1000
1002
  },
1001
1003
  } as const;
1002
1004
  export const USDCPriceFeed = {
@@ -1064,7 +1066,8 @@ export const DFSFeedRegistry = {
1064
1066
  "abi": [{"inputs":[],"name":"NonContractCall","type":"error"},{"inputs":[],"name":"SenderNotAdmin","type":"error"},{"inputs":[],"name":"SenderNotOwner","type":"error"},{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"aggregators","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"getFeed","outputs":[{"internalType":"address","name":"aggregator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"},{"internalType":"address","name":"aggregator","type":"address"}],"name":"setFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bases","type":"address[]"},{"internalType":"address[]","name":"quotes","type":"address[]"},{"internalType":"address[]","name":"aggregator","type":"address[]"}],"name":"setFeeds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],
1065
1067
  "networks": {
1066
1068
  "8453": { "address": "0x7dFF34190d0307fC234fc7E8C152C9715083eB02" },
1067
- "42161": { "address": "0x158E27De8B5E5bC3FA1C6D5b365a291c54f6b0Fd" }
1069
+ "42161": { "address": "0x158E27De8B5E5bC3FA1C6D5b365a291c54f6b0Fd" },
1070
+ "9745": { "address": "0x2226836ec16FF5974dFD8DF740CD461B42FAffD5" }
1068
1071
  }
1069
1072
  } as const;
1070
1073
  export const LlamaLendView = {
@@ -1124,6 +1127,7 @@ export const FluidView = {
1124
1127
  "networks": {
1125
1128
  "1": { "address": "0xc8df052bD7A8d76a34c09e758Dff3c6298C0115c" },
1126
1129
  "8453": { "address": "0x6cd4D6af4F292817eA2A2311F099dF26cd015028" },
1130
+ "9745": { "address": "0x27C0BAe2338cE28097122393faF90375B9395dd1" },
1127
1131
  "42161": { "address": "0xf9e6d5568887ac8eC6fA33B7eefD2A176A958e71" }
1128
1132
  }
1129
1133
  } as const;
@@ -1,7 +1,6 @@
1
1
  import Dec from 'decimal.js';
2
2
  import {
3
- assetAmountInEth,
4
- AssetData, getAssetInfo, getAssetInfoByAddress,
3
+ assetAmountInEth, AssetData, getAssetInfo, getAssetInfoByAddress,
5
4
  } from '@defisaver/tokens';
6
5
  import { Client, PublicClient } from 'viem';
7
6
  import {
@@ -9,7 +8,8 @@ import {
9
8
  } from '../types/common';
10
9
  import {
11
10
  FluidAggregatedVaultData,
12
- FluidAssetData, FluidAssetsData,
11
+ FluidAssetData,
12
+ FluidAssetsData,
13
13
  FluidFTokenDataStructOutput,
14
14
  FluidMarketData,
15
15
  FluidMarketInfo,
@@ -19,13 +19,22 @@ import {
19
19
  FluidUserPositionStructOutputStruct,
20
20
  FluidVaultData,
21
21
  FluidVaultDataStructOutputStruct,
22
- FluidVaultType, InnerFluidMarketData,
22
+ FluidVaultType,
23
+ InnerFluidMarketData,
23
24
  } from '../types';
24
25
  import {
25
- BTCPriceFeedContractViem, DFSFeedRegistryContractViem, ETHPriceFeedContractViem, FeedRegistryContractViem, FluidViewContractViem,
26
+ BTCPriceFeedContractViem,
27
+ DFSFeedRegistryContractViem,
28
+ ETHPriceFeedContractViem,
29
+ FeedRegistryContractViem,
30
+ FluidViewContractViem,
26
31
  } from '../contracts';
27
32
  import {
28
- compareAddresses, DEFAULT_TIMEOUT, getEthAmountForDecimals, isMainnetNetwork,
33
+ compareAddresses,
34
+ DEFAULT_TIMEOUT,
35
+ getEthAmountForDecimals,
36
+ getNativeAssetFromWrapped,
37
+ isMainnetNetwork,
29
38
  } from '../services/utils';
30
39
  import {
31
40
  getFluidAggregatedData,
@@ -38,13 +47,22 @@ import { getFluidMarketInfoById, getFluidVersionsDataForNetwork, getFTokenAddres
38
47
  import { USD_QUOTE, ZERO_ADDRESS } from '../constants';
39
48
  import {
40
49
  getChainlinkAssetAddress,
50
+ getSyrupUSDTChainLinkPriceCalls,
51
+ getSyrupUSDTPrice,
41
52
  getWeETHChainLinkPriceCalls,
42
53
  getWeETHPrice,
54
+ getWsrETHChainLinkPriceCalls,
55
+ getWsrETHPrice,
43
56
  getWstETHChainLinkPriceCalls,
44
57
  getWstETHPrice,
45
58
  getWstETHPriceFluid,
59
+ getWstUSRChainLinkPriceCalls,
60
+ getWstUSRPrice,
61
+ parseSyrupUSDTPriceCalls,
46
62
  parseWeETHPriceCalls,
63
+ parseWrsETHPriceCalls,
47
64
  parseWstETHPriceCalls,
65
+ parseWstUSRPriceCalls,
48
66
  } from '../services/priceService';
49
67
  import { getStakingApy, STAKING_ASSETS } from '../staking';
50
68
  import { getViemProvider } from '../services/viem';
@@ -105,7 +123,10 @@ const getChainLinkPricesForTokens = async (
105
123
  const chainLinkFeedAddress = getChainlinkAssetAddress(assetInfo.symbol, network);
106
124
 
107
125
  if (assetInfo.symbol === 'wstETH') return getWstETHChainLinkPriceCalls(client, network);
108
- if (assetInfo.symbol === 'weETH') return getWeETHChainLinkPriceCalls(client, network);
126
+ if (assetInfo.symbol === 'weETH' && network !== NetworkNumber.Plasma) return getWeETHChainLinkPriceCalls(client, network);
127
+ if (assetInfo.symbol === 'wrsETH' && network === NetworkNumber.Plasma) return getWsrETHChainLinkPriceCalls(client, network);
128
+ if (assetInfo.symbol === 'syrupUSDT') return getSyrupUSDTChainLinkPriceCalls(client, network);
129
+ if (assetInfo.symbol === 'wstUSR') return getWstUSRChainLinkPriceCalls(client, network);
109
130
 
110
131
  if (isMainnet) {
111
132
  const feedRegistryContract = FeedRegistryContractViem(client, NetworkNumber.Eth);
@@ -156,6 +177,50 @@ const getChainLinkPricesForTokens = async (
156
177
  break;
157
178
  }
158
179
 
180
+ case 'wrsETH': {
181
+ const {
182
+ ethPrice,
183
+ wrsETHRate,
184
+ } = parseWrsETHPriceCalls(
185
+ // @ts-ignore
186
+ results[i + offset].result[1]!.toString(),
187
+ // @ts-ignore
188
+ results[i + offset + 1].result[1]!.toString(),
189
+ );
190
+ offset += 1;
191
+ acc[token] = new Dec(ethPrice).mul(wrsETHRate).toString();
192
+ break;
193
+ }
194
+
195
+ case 'syrupUSDT': {
196
+ const {
197
+ syrupUSDTRate,
198
+ USDTRate,
199
+ } = parseSyrupUSDTPriceCalls(
200
+ // @ts-ignore
201
+ results[i + offset].result[1]!.toString(),
202
+ // @ts-ignore
203
+ results[i + offset + 1].result[1]!.toString(),
204
+ );
205
+ offset += 1;
206
+ acc[token] = new Dec(syrupUSDTRate).mul(USDTRate).toString();
207
+ break;
208
+ }
209
+ case 'wstUSR': {
210
+ const {
211
+ wstUSRRate,
212
+ USRRate,
213
+ } = parseWstUSRPriceCalls(
214
+ // @ts-ignore
215
+ results[i + offset].result[1]!.toString(),
216
+ // @ts-ignore
217
+ results[i + offset + 1].result[1]!.toString(),
218
+ );
219
+ offset += 1;
220
+ acc[token] = new Dec(wstUSRRate).mul(USRRate).toString();
221
+ break;
222
+ }
223
+
159
224
  // TODO: These addresses do not have chainlink feeds, so we need to handle them separately, this is hotfix
160
225
  case 'ezETH': {
161
226
  acc[token] = new Dec(ethPriceChainlink).mul(1.049).toString();
@@ -179,17 +244,29 @@ const getChainLinkPricesForTokens = async (
179
244
  }
180
245
 
181
246
  case 'weETH': {
182
- const {
183
- ethPrice,
184
- weETHRate,
185
- } = parseWeETHPriceCalls(
186
- results[i + offset].result!.toString(),
247
+ if (network !== NetworkNumber.Plasma) {
248
+ const {
249
+ ethPrice,
250
+ weETHRate,
251
+ } = parseWeETHPriceCalls(
252
+ results[i + offset].result!.toString(),
253
+ // @ts-ignore
254
+ results[i + offset + 1].result[1]!.toString(),
255
+ results[i + offset + 2].result!.toString(),
256
+ );
257
+ offset += 2;
258
+ acc[token] = new Dec(ethPrice).mul(weETHRate).toString();
187
259
  // @ts-ignore
188
- results[i + offset + 1].result[1]!.toString(),
189
- results[i + offset + 2].result!.toString(),
190
- );
191
- offset += 2;
192
- acc[token] = new Dec(ethPrice).mul(weETHRate).toString();
260
+ } else if (results[i + offset].result?.[1]) {
261
+ // For Plasma, use default chainlink feed (latestRoundData format)
262
+ // @ts-ignore
263
+ acc[token] = new Dec(results[i + offset].result[1]!.toString() as string).div(1e8).toString();
264
+ } else if (results[i + offset].result) {
265
+ // For Plasma, use default chainlink feed (latestAnswer format)
266
+ acc[token] = new Dec(results[i + offset].result!.toString() as string).div(1e8).toString();
267
+ } else {
268
+ acc[token] = '0';
269
+ }
193
270
  break;
194
271
  }
195
272
 
@@ -226,8 +303,13 @@ const getTokenPriceFromChainlink = async (asset: AssetData, network: NetworkNumb
226
303
  } else {
227
304
  // Currently only base network is supported
228
305
  const feedRegistryContract = DFSFeedRegistryContractViem(provider, network);
229
- const roundPriceData = isTokenUSDA ? [0, '100000000'] : await feedRegistryContract.read.latestRoundData([loanTokenFeedAddress, USD_QUOTE]);
230
- loanTokenPrice = roundPriceData[1].toString();
306
+ try {
307
+ const roundPriceData = isTokenUSDA ? [0, '100000000'] : await feedRegistryContract.read.latestRoundData([loanTokenFeedAddress, USD_QUOTE]);
308
+ loanTokenPrice = roundPriceData[1].toString();
309
+ } catch (err) {
310
+ console.error(`Error fetching price for ${asset.symbol} on ${network}: ${err}`);
311
+ loanTokenPrice = '0';
312
+ }
231
313
  }
232
314
 
233
315
  return new Dec(loanTokenPrice).div(1e8).toString();
@@ -274,8 +356,10 @@ const getTradingApy = async (poolAddress: EthAddress) => {
274
356
  };
275
357
 
276
358
  const parseT1MarketData = async (provider: PublicClient, data: FluidVaultDataStructOutputStruct, network: NetworkNumber, tokenPrices: Record<string, string> | null = null) => {
277
- const collAsset = getAssetInfoByAddress(data.supplyToken0, network);
278
- const debtAsset = getAssetInfoByAddress(data.borrowToken0, network);
359
+ const collAssetContract = getAssetInfoByAddress(data.supplyToken0, network);
360
+ const collAsset = getAssetInfo(getNativeAssetFromWrapped(collAssetContract.symbol), network);
361
+ const debtAssetContract = getAssetInfoByAddress(data.borrowToken0, network);
362
+ const debtAsset = getAssetInfo(getNativeAssetFromWrapped(debtAssetContract.symbol), network);
279
363
 
280
364
  const supplyRate = new Dec(data.supplyRateVault).div(100).toString();
281
365
  const borrowRate = new Dec(data.borrowRateVault).div(100).toString();
@@ -287,7 +371,7 @@ const parseT1MarketData = async (provider: PublicClient, data: FluidVaultDataStr
287
371
  if (tokenPrices) {
288
372
  debtPriceParsed = tokenPrices[debtAsset.symbol] || '0';
289
373
  } else {
290
- debtPriceParsed = await getTokenPriceFromChainlink(debtAsset, network, provider);
374
+ debtPriceParsed = await getTokenPriceFromChainlink(debtAssetContract, network, provider);
291
375
  }
292
376
 
293
377
  const collAssetData: FluidAssetData = {
@@ -392,9 +476,12 @@ const parseT1MarketData = async (provider: PublicClient, data: FluidVaultDataStr
392
476
  };
393
477
 
394
478
  const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStructOutputStruct, network: NetworkNumber, tokenPrices: Record<string, string> | null = null) => {
395
- const collAsset0 = getAssetInfoByAddress(data.supplyToken0, network);
396
- const collAsset1 = getAssetInfoByAddress(data.supplyToken1, network);
397
- const debtAsset = getAssetInfoByAddress(data.borrowToken0, network);
479
+ const collAsset0Contract = getAssetInfoByAddress(data.supplyToken0, network);
480
+ const collAsset0 = getAssetInfo(getNativeAssetFromWrapped(collAsset0Contract.symbol), network);
481
+ const collAsset1Contract = getAssetInfoByAddress(data.supplyToken1, network);
482
+ const collAsset1 = getAssetInfo(getNativeAssetFromWrapped(collAsset1Contract.symbol), network);
483
+ const debtAssetContract = getAssetInfoByAddress(data.borrowToken0, network);
484
+ const debtAsset = getAssetInfo(getNativeAssetFromWrapped(debtAssetContract.symbol), network);
398
485
 
399
486
  // 18 because collateral is represented in shares for which they use 18 decimals
400
487
  const oracleScaleFactor = new Dec(27).add(debtAsset.decimals).sub(18).toString();
@@ -405,7 +492,7 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
405
492
  if (tokenPrices) {
406
493
  prices = tokenPrices;
407
494
  } else {
408
- prices = await getChainLinkPricesForTokens([collAsset0.address, collAsset1.address, debtAsset.address], network, provider);
495
+ prices = await getChainLinkPricesForTokens([collAsset0Contract.address, collAsset1Contract.address, debtAssetContract.address], network, provider);
409
496
  }
410
497
 
411
498
  const {
@@ -432,7 +519,7 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
432
519
  const collFirstAssetData: Partial<FluidAssetData> = {
433
520
  symbol: collAsset0.symbol,
434
521
  address: collAsset0.address,
435
- price: prices[tokenPrices ? collAsset0.symbol : collAsset0.address],
522
+ price: prices[tokenPrices ? collAsset0.symbol : collAsset0Contract.address],
436
523
  totalSupply: new Dec(totalSupplyShares).mul(token0PerSupplyShare).toString(),
437
524
  canBeSupplied: true,
438
525
  supplyRate: supplyRate0,
@@ -455,7 +542,7 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
455
542
  const collSecondAssetData: Partial<FluidAssetData> = {
456
543
  symbol: collAsset1.symbol,
457
544
  address: collAsset1.address,
458
- price: prices[tokenPrices ? collAsset1.symbol : collAsset1.address],
545
+ price: prices[tokenPrices ? collAsset1.symbol : collAsset1Contract.address],
459
546
  totalSupply: new Dec(totalSupplyShares).mul(token1PerSupplyShare).toString(),
460
547
  canBeSupplied: true,
461
548
  supplyRate: supplyRate1,
@@ -482,7 +569,7 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
482
569
  const borrowRate = new Dec(data.borrowRateVault).div(100).toString();
483
570
  const debtAssetData: Partial<FluidAssetData> = {
484
571
  symbol: debtAsset.symbol,
485
- price: prices[tokenPrices ? debtAsset.symbol : debtAsset.address],
572
+ price: prices[tokenPrices ? debtAsset.symbol : debtAssetContract.address],
486
573
  address: debtAsset.address,
487
574
  totalBorrow: data.totalBorrowVault.toString(),
488
575
  canBeBorrowed: true,
@@ -520,7 +607,7 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
520
607
  const liqFactor = new Dec(data.liquidationThreshold).div(10_000).toString();
521
608
 
522
609
  const totalSupplySharesInVault = assetAmountInEth(data.totalSupplyVault.toString());
523
- const collSharePrice = new Dec(oraclePrice).mul(prices[tokenPrices ? debtAsset.symbol : debtAsset.address]).toString();
610
+ const collSharePrice = new Dec(oraclePrice).mul(prices[tokenPrices ? debtAsset.symbol : debtAssetContract.address]).toString();
524
611
  const totalSupplyVaultUsd = new Dec(totalSupplySharesInVault).mul(collSharePrice).toString();
525
612
  const maxSupplySharesUsd = new Dec(maxSupplyShares).mul(collSharePrice).toString();
526
613
 
@@ -582,9 +669,12 @@ const parseT2MarketData = async (provider: PublicClient, data: FluidVaultDataStr
582
669
  };
583
670
 
584
671
  const parseT3MarketData = async (provider: PublicClient, data: FluidVaultDataStructOutputStruct, network: NetworkNumber, tokenPrices: Record<string, string> | null = null) => {
585
- const collAsset = getAssetInfoByAddress(data.supplyToken0, network);
586
- const debtAsset0 = getAssetInfoByAddress(data.borrowToken0, network);
587
- const debtAsset1 = getAssetInfoByAddress(data.borrowToken1, network);
672
+ const collAssetContract = getAssetInfoByAddress(data.supplyToken0, network);
673
+ const collAsset = getAssetInfo(getNativeAssetFromWrapped(collAssetContract.symbol), network);
674
+ const debtAsset0Contract = getAssetInfoByAddress(data.borrowToken0, network);
675
+ const debtAsset0 = getAssetInfo(getNativeAssetFromWrapped(debtAsset0Contract.symbol), network);
676
+ const debtAsset1Contract = getAssetInfoByAddress(data.borrowToken1, network);
677
+ const debtAsset1 = getAssetInfo(getNativeAssetFromWrapped(debtAsset1Contract.symbol), network);
588
678
 
589
679
  const {
590
680
  borrowableShares,
@@ -616,14 +706,14 @@ const parseT3MarketData = async (provider: PublicClient, data: FluidVaultDataStr
616
706
  if (tokenPrices) {
617
707
  prices = tokenPrices;
618
708
  } else {
619
- prices = await getChainLinkPricesForTokens([collAsset.address, debtAsset0.address, debtAsset1.address], network, provider);
709
+ prices = await getChainLinkPricesForTokens([collAssetContract.address, debtAsset0Contract.address, debtAsset1Contract.address], network, provider);
620
710
  }
621
711
 
622
712
  const supplyRate = new Dec(data.supplyRateVault).div(100).toString();
623
713
  const collAssetData: Partial<FluidAssetData> = {
624
714
  symbol: collAsset.symbol,
625
715
  address: collAsset.address,
626
- price: prices[tokenPrices ? collAsset.symbol : collAsset.address],
716
+ price: prices[tokenPrices ? collAsset.symbol : collAssetContract.address],
627
717
  totalSupply: data.totalSupplyVault.toString(),
628
718
  canBeSupplied: true,
629
719
  supplyRate,
@@ -644,7 +734,7 @@ const parseT3MarketData = async (provider: PublicClient, data: FluidVaultDataStr
644
734
  const debtAsset0Data: Partial<FluidAssetData> = {
645
735
  symbol: debtAsset0.symbol,
646
736
  address: debtAsset0.address,
647
- price: prices[tokenPrices ? debtAsset0.symbol : debtAsset0.address],
737
+ price: prices[tokenPrices ? debtAsset0.symbol : debtAsset0Contract.address],
648
738
  totalBorrow: new Dec(totalBorrowShares).mul(token0PerBorrowShare).toString(),
649
739
  canBeBorrowed: true,
650
740
  borrowRate: borrowRate0,
@@ -667,7 +757,7 @@ const parseT3MarketData = async (provider: PublicClient, data: FluidVaultDataStr
667
757
  const debtAsset1Data: Partial<FluidAssetData> = {
668
758
  symbol: debtAsset1.symbol,
669
759
  address: debtAsset1.address,
670
- price: prices[tokenPrices ? debtAsset1.symbol : debtAsset1.address],
760
+ price: prices[tokenPrices ? debtAsset1.symbol : debtAsset1Contract.address],
671
761
  totalBorrow: new Dec(totalBorrowShares).mul(token1PerBorrowShare).toString(),
672
762
  canBeBorrowed: true,
673
763
  borrowRate: borrowRate1,
@@ -769,10 +859,14 @@ const parseT3MarketData = async (provider: PublicClient, data: FluidVaultDataStr
769
859
  };
770
860
 
771
861
  const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStructOutputStruct, network: NetworkNumber, tokenPrices: Record<string, string> | null = null) => {
772
- const collAsset0 = getAssetInfoByAddress(data.supplyToken0, network);
773
- const collAsset1 = getAssetInfoByAddress(data.supplyToken1, network);
774
- const debtAsset0 = getAssetInfoByAddress(data.borrowToken0, network);
775
- const debtAsset1 = getAssetInfoByAddress(data.borrowToken1, network);
862
+ const collAsset0Contract = getAssetInfoByAddress(data.supplyToken0, network);
863
+ const collAsset0 = getAssetInfo(getNativeAssetFromWrapped(collAsset0Contract.symbol), network);
864
+ const collAsset1Contract = getAssetInfoByAddress(data.supplyToken1, network);
865
+ const collAsset1 = getAssetInfo(getNativeAssetFromWrapped(collAsset1Contract.symbol), network);
866
+ const debtAsset0Contract = getAssetInfoByAddress(data.borrowToken0, network);
867
+ const debtAsset0 = getAssetInfo(getNativeAssetFromWrapped(debtAsset0Contract.symbol), network);
868
+ const debtAsset1Contract = getAssetInfoByAddress(data.borrowToken1, network);
869
+ const debtAsset1 = getAssetInfo(getNativeAssetFromWrapped(debtAsset1Contract.symbol), network);
776
870
  const quoteToken = getAssetInfoByAddress(data.dexBorrowData.quoteToken, network);
777
871
 
778
872
  // 27 - 18 + 18
@@ -785,7 +879,7 @@ const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStr
785
879
  prices = tokenPrices;
786
880
  } else {
787
881
  prices = await getChainLinkPricesForTokens(
788
- [collAsset0.address, collAsset1.address, debtAsset0.address, debtAsset1.address],
882
+ [collAsset0Contract.address, collAsset1Contract.address, debtAsset0Contract.address, debtAsset1Contract.address],
789
883
  network, provider);
790
884
  }
791
885
 
@@ -835,7 +929,7 @@ const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStr
835
929
  const collAsset0Data: Partial<FluidAssetData> = {
836
930
  symbol: collAsset0.symbol,
837
931
  address: collAsset0.address,
838
- price: prices[tokenPrices ? collAsset0.symbol : collAsset0.address],
932
+ price: prices[tokenPrices ? collAsset0.symbol : collAsset0Contract.address],
839
933
  totalSupply: new Dec(totalSupplyShares).mul(token0PerSupplyShare).toString(),
840
934
  canBeSupplied: true,
841
935
  supplyRate: supplyRate0,
@@ -858,7 +952,7 @@ const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStr
858
952
  const collAsset1Data: Partial<FluidAssetData> = {
859
953
  symbol: collAsset1.symbol,
860
954
  address: collAsset1.address,
861
- price: prices[tokenPrices ? collAsset1.symbol : collAsset1.address],
955
+ price: prices[tokenPrices ? collAsset1.symbol : collAsset1Contract.address],
862
956
  totalSupply: new Dec(totalSupplyShares).mul(token1PerSupplyShare).toString(),
863
957
  canBeSupplied: true,
864
958
  supplyRate: supplyRate1,
@@ -881,7 +975,7 @@ const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStr
881
975
  const debtAsset0Data: Partial<FluidAssetData> = {
882
976
  symbol: debtAsset0.symbol,
883
977
  address: debtAsset0.address,
884
- price: prices[tokenPrices ? debtAsset0.symbol : debtAsset0.address],
978
+ price: prices[tokenPrices ? debtAsset0.symbol : debtAsset0Contract.address],
885
979
  totalBorrow: new Dec(totalBorrowShares).mul(token0PerBorrowShare).toString(),
886
980
  canBeBorrowed: true,
887
981
  borrowRate: borrowRate0,
@@ -904,7 +998,7 @@ const parseT4MarketData = async (provider: PublicClient, data: FluidVaultDataStr
904
998
  const debtAsset1Data: Partial<FluidAssetData> = {
905
999
  symbol: debtAsset1.symbol,
906
1000
  address: debtAsset1.address,
907
- price: prices[tokenPrices ? debtAsset1.symbol : debtAsset1.address],
1001
+ price: prices[tokenPrices ? debtAsset1.symbol : debtAsset1Contract.address],
908
1002
  totalBorrow: new Dec(totalBorrowShares).mul(token1PerBorrowShare).toString(),
909
1003
  canBeBorrowed: true,
910
1004
  borrowRate: borrowRate1,
@@ -1580,10 +1674,22 @@ const getTokenPricePortfolio = async (token: string, provider: PublicClient, net
1580
1674
  if (token === 'wstETH') {
1581
1675
  return getWstETHPrice(provider, network);
1582
1676
  }
1583
- if (token === 'weETH') {
1677
+ if (token === 'weETH' && network !== NetworkNumber.Plasma) {
1584
1678
  return getWeETHPrice(provider, network);
1585
1679
  }
1586
1680
 
1681
+ if (token === 'wrsETH') {
1682
+ return getWsrETHPrice(provider, network);
1683
+ }
1684
+
1685
+ if (token === 'syrupUSDT') {
1686
+ return getSyrupUSDTPrice(provider, network);
1687
+ }
1688
+
1689
+ if (token === 'wstUSR') {
1690
+ return getWstUSRPrice(provider, network);
1691
+ }
1692
+
1587
1693
  const isMainnet = isMainnetNetwork(network);
1588
1694
  const chainLinkFeedAddress = getChainlinkAssetAddress(token, network);
1589
1695
  if (isMainnet) {