@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.
- package/CLAUDE.md +32 -0
- package/cjs/config/contracts.d.ts +12 -0
- package/cjs/config/contracts.js +7 -3
- package/cjs/contracts.d.ts +100947 -134653
- package/cjs/fluid/index.js +116 -38
- package/cjs/markets/fluid/index.d.ts +46 -0
- package/cjs/markets/fluid/index.js +436 -1
- package/cjs/portfolio/index.js +4 -1
- package/cjs/services/priceService.d.ts +489 -0
- package/cjs/services/priceService.js +111 -2
- package/cjs/services/viem.d.ts +2 -3254
- package/cjs/types/fluid.d.ts +30 -1
- package/cjs/types/fluid.js +31 -1
- package/esm/config/contracts.d.ts +12 -0
- package/esm/config/contracts.js +7 -3
- package/esm/contracts.d.ts +100947 -134653
- package/esm/fluid/index.js +118 -40
- package/esm/markets/fluid/index.d.ts +46 -0
- package/esm/markets/fluid/index.js +415 -1
- package/esm/portfolio/index.js +4 -1
- package/esm/services/priceService.d.ts +489 -0
- package/esm/services/priceService.js +102 -2
- package/esm/services/viem.d.ts +2 -3254
- package/esm/types/fluid.d.ts +30 -1
- package/esm/types/fluid.js +30 -0
- package/package.json +2 -2
- package/src/config/contracts.ts +7 -3
- package/src/fluid/index.ts +153 -47
- package/src/markets/fluid/index.ts +442 -2
- package/src/portfolio/index.ts +3 -1
- package/src/services/priceService.ts +123 -4
- package/src/types/fluid.ts +32 -1
package/esm/types/fluid.d.ts
CHANGED
|
@@ -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
|
|
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",
|
package/esm/types/fluid.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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",
|
package/src/config/contracts.ts
CHANGED
|
@@ -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;
|
package/src/fluid/index.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
22
|
+
FluidVaultType,
|
|
23
|
+
InnerFluidMarketData,
|
|
23
24
|
} from '../types';
|
|
24
25
|
import {
|
|
25
|
-
BTCPriceFeedContractViem,
|
|
26
|
+
BTCPriceFeedContractViem,
|
|
27
|
+
DFSFeedRegistryContractViem,
|
|
28
|
+
ETHPriceFeedContractViem,
|
|
29
|
+
FeedRegistryContractViem,
|
|
30
|
+
FluidViewContractViem,
|
|
26
31
|
} from '../contracts';
|
|
27
32
|
import {
|
|
28
|
-
compareAddresses,
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
230
|
-
|
|
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
|
|
278
|
-
const
|
|
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(
|
|
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
|
|
396
|
-
const
|
|
397
|
-
const
|
|
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([
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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
|
|
586
|
-
const
|
|
587
|
-
const
|
|
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([
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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
|
|
773
|
-
const
|
|
774
|
-
const
|
|
775
|
-
const
|
|
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
|
-
[
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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) {
|