@defisaver/positions-sdk 0.0.201-fluid-dev → 0.0.201-fluid-dev-2

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.
Files changed (42) hide show
  1. package/cjs/config/contracts.d.ts +11 -5
  2. package/cjs/config/contracts.js +4 -2
  3. package/cjs/fluid/index.d.ts +1 -0
  4. package/cjs/fluid/index.js +65 -12
  5. package/cjs/markets/fluid/index.d.ts +8 -10
  6. package/cjs/markets/fluid/index.js +466 -77
  7. package/cjs/markets/index.d.ts +1 -1
  8. package/cjs/markets/index.js +3 -1
  9. package/cjs/morphoBlue/index.js +1 -2
  10. package/cjs/multicall/index.d.ts +1 -0
  11. package/cjs/multicall/index.js +8 -1
  12. package/cjs/services/utils.d.ts +1 -0
  13. package/cjs/services/utils.js +3 -1
  14. package/cjs/types/contracts/generated/FluidView.d.ts +125 -41
  15. package/cjs/types/fluid.d.ts +16 -1
  16. package/cjs/types/fluid.js +3 -0
  17. package/esm/config/contracts.d.ts +11 -5
  18. package/esm/config/contracts.js +4 -2
  19. package/esm/fluid/index.d.ts +1 -0
  20. package/esm/fluid/index.js +65 -13
  21. package/esm/markets/fluid/index.d.ts +8 -10
  22. package/esm/markets/fluid/index.js +460 -71
  23. package/esm/markets/index.d.ts +1 -1
  24. package/esm/markets/index.js +1 -1
  25. package/esm/morphoBlue/index.js +1 -2
  26. package/esm/multicall/index.d.ts +1 -0
  27. package/esm/multicall/index.js +6 -0
  28. package/esm/services/utils.d.ts +1 -0
  29. package/esm/services/utils.js +1 -0
  30. package/esm/types/contracts/generated/FluidView.d.ts +125 -41
  31. package/esm/types/fluid.d.ts +16 -1
  32. package/esm/types/fluid.js +3 -0
  33. package/package.json +5 -3
  34. package/src/config/contracts.js +4 -2
  35. package/src/fluid/index.ts +69 -12
  36. package/src/markets/fluid/index.ts +467 -74
  37. package/src/markets/index.ts +1 -1
  38. package/src/morphoBlue/index.ts +1 -3
  39. package/src/multicall/index.ts +10 -1
  40. package/src/services/utils.ts +3 -1
  41. package/src/types/contracts/generated/FluidView.ts +159 -79
  42. package/src/types/fluid.ts +15 -0
@@ -22,4 +22,4 @@ export { MorphoBlueMarkets, findMorphoBlueMarket } from './morphoBlue';
22
22
  export { LlamaLendMarkets } from './llamaLend';
23
23
  export { LiquityV2Markets } from './liquityV2';
24
24
  export { EulerV2Markets } from './euler';
25
- export { FluidMarkets } from './fluid';
25
+ export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById } from './fluid';
@@ -10,14 +10,12 @@ import {
10
10
  } from '../types';
11
11
  import { USD_QUOTE, WAD } from '../constants';
12
12
  import { getStakingApy, STAKING_ASSETS } from '../staking';
13
- import { wethToEth } from '../services/utils';
13
+ import { isMainnetNetwork, wethToEth } from '../services/utils';
14
14
  import {
15
15
  getBorrowRate, getMorphoBlueAggregatedPositionData, getRewardsForMarket, getSupplyRate,
16
16
  } from '../helpers/morphoBlueHelpers';
17
17
  import { getChainlinkAssetAddress } from '../services/priceService';
18
18
 
19
- const isMainnetNetwork = (network: NetworkNumber) => network === NetworkNumber.Eth;
20
-
21
19
  export async function getMorphoBlueMarketData(web3: Web3, network: NetworkNumber, selectedMarket: MorphoBlueMarketData, mainnetWeb3: Web3): Promise<MorphoBlueMarketInfo> {
22
20
  const {
23
21
  loanToken, collateralToken, oracle, irm, lltv, oracleType,
@@ -1,4 +1,5 @@
1
1
  import Web3 from 'web3';
2
+ import { chunk } from 'lodash';
2
3
  import { UniMulticallContract } from '../contracts';
3
4
  import { NetworkNumber } from '../types/common';
4
5
 
@@ -20,4 +21,12 @@ export const multicall = async (calls: any[], web3: Web3, network: NetworkNumber
20
21
  });
21
22
 
22
23
  return formattedResult;
23
- };
24
+ };
25
+
26
+ export const chunkAndMulticall = async (calls: any[], chunkSize: number, blockNumber: 'latest' | number = 'latest', web3: Web3, network: NetworkNumber = NetworkNumber.Eth) => {
27
+ const chunkedCalls = chunk(calls, chunkSize);
28
+
29
+ const results = await Promise.all(chunkedCalls.map((cnk) => multicall(cnk, web3, network, blockNumber)));
30
+
31
+ return results.flat(1);
32
+ };
@@ -54,4 +54,6 @@ export const isEnabledOnBitmap = (bitmap: number, assetId: number) => (BigInt(bi
54
54
 
55
55
  export const MAXUINT:string = '115792089237316195423570985008687907853269984665640564039457584007913129639935';
56
56
 
57
- export const isMaxuint = (amount: string) => compareAddresses(MAXUINT, amount);
57
+ export const isMaxuint = (amount: string) => compareAddresses(MAXUINT, amount);
58
+
59
+ export const isMainnetNetwork = (network: NetworkNumber) => network === NetworkNumber.Eth;
@@ -22,6 +22,112 @@ export interface EventOptions {
22
22
  }
23
23
 
24
24
  export declare namespace FluidView {
25
+ export type FTokenDataStruct =
26
+ | [
27
+ string,
28
+ boolean,
29
+ string,
30
+ string,
31
+ number | string | BN,
32
+ string,
33
+ number | string | BN,
34
+ number | string | BN,
35
+ number | string | BN,
36
+ number | string | BN,
37
+ number | string | BN,
38
+ number | string | BN,
39
+ number | string | BN,
40
+ boolean,
41
+ number | string | BN,
42
+ number | string | BN
43
+ ]
44
+ | {
45
+ tokenAddress: string;
46
+ isNativeUnderlying: boolean;
47
+ name: string;
48
+ symbol: string;
49
+ decimals: number | string | BN;
50
+ asset: string;
51
+ totalAssets: number | string | BN;
52
+ totalSupply: number | string | BN;
53
+ convertToShares: number | string | BN;
54
+ convertToAssets: number | string | BN;
55
+ rewardsRate: number | string | BN;
56
+ supplyRate: number | string | BN;
57
+ withdrawable: number | string | BN;
58
+ modeWithInterest: boolean;
59
+ expandPercent: number | string | BN;
60
+ expandDuration: number | string | BN;
61
+ };
62
+
63
+ export type FTokenDataStructOutputArray = [
64
+ string,
65
+ boolean,
66
+ string,
67
+ string,
68
+ string,
69
+ string,
70
+ string,
71
+ string,
72
+ string,
73
+ string,
74
+ string,
75
+ string,
76
+ string,
77
+ boolean,
78
+ string,
79
+ string
80
+ ];
81
+ export type FTokenDataStructOutputStruct = {
82
+ tokenAddress: string;
83
+ isNativeUnderlying: boolean;
84
+ name: string;
85
+ symbol: string;
86
+ decimals: string;
87
+ asset: string;
88
+ totalAssets: string;
89
+ totalSupply: string;
90
+ convertToShares: string;
91
+ convertToAssets: string;
92
+ rewardsRate: string;
93
+ supplyRate: string;
94
+ withdrawable: string;
95
+ modeWithInterest: boolean;
96
+ expandPercent: string;
97
+ expandDuration: string;
98
+ };
99
+ export type FTokenDataStructOutput = FTokenDataStructOutputArray &
100
+ FTokenDataStructOutputStruct;
101
+
102
+ export type UserEarnPositionStruct =
103
+ | [
104
+ number | string | BN,
105
+ number | string | BN,
106
+ number | string | BN,
107
+ number | string | BN
108
+ ]
109
+ | {
110
+ fTokenShares: number | string | BN;
111
+ underlyingAssets: number | string | BN;
112
+ underlyingBalance: number | string | BN;
113
+ allowance: number | string | BN;
114
+ };
115
+
116
+ export type UserEarnPositionStructOutputArray = [
117
+ string,
118
+ string,
119
+ string,
120
+ string
121
+ ];
122
+ export type UserEarnPositionStructOutputStruct = {
123
+ fTokenShares: string;
124
+ underlyingAssets: string;
125
+ underlyingBalance: string;
126
+ allowance: string;
127
+ };
128
+ export type UserEarnPositionStructOutput = UserEarnPositionStructOutputArray &
129
+ UserEarnPositionStructOutputStruct;
130
+
25
131
  export type UserPositionStruct =
26
132
  | [
27
133
  number | string | BN,
@@ -118,10 +224,6 @@ export declare namespace FluidView {
118
224
  number | string | BN,
119
225
  number | string | BN,
120
226
  number | string | BN,
121
- number | string | BN,
122
- number | string | BN,
123
- number | string | BN,
124
- number | string | BN,
125
227
  number | string | BN
126
228
  ]
127
229
  | {
@@ -147,10 +249,6 @@ export declare namespace FluidView {
147
249
  oracle: string;
148
250
  oraclePriceOperate: number | string | BN;
149
251
  oraclePriceLiquidate: number | string | BN;
150
- priceOfSupplyToken0InUSD: number | string | BN;
151
- priceOfSupplyToken1InUSD: number | string | BN;
152
- priceOfBorrowToken0InUSD: number | string | BN;
153
- priceOfBorrowToken1InUSD: number | string | BN;
154
252
  vaultSupplyExchangePrice: number | string | BN;
155
253
  vaultBorrowExchangePrice: number | string | BN;
156
254
  supplyRateVault: number | string | BN;
@@ -223,10 +321,6 @@ export declare namespace FluidView {
223
321
  string,
224
322
  string,
225
323
  string,
226
- string,
227
- string,
228
- string,
229
- string,
230
324
  string
231
325
  ];
232
326
  export type VaultDataStructOutputStruct = {
@@ -252,10 +346,6 @@ export declare namespace FluidView {
252
346
  oracle: string;
253
347
  oraclePriceOperate: string;
254
348
  oraclePriceLiquidate: string;
255
- priceOfSupplyToken0InUSD: string;
256
- priceOfSupplyToken1InUSD: string;
257
- priceOfBorrowToken0InUSD: string;
258
- priceOfBorrowToken1InUSD: string;
259
349
  vaultSupplyExchangePrice: string;
260
350
  vaultBorrowExchangePrice: string;
261
351
  supplyRateVault: string;
@@ -283,6 +373,23 @@ export declare namespace FluidView {
283
373
  };
284
374
  export type VaultDataStructOutput = VaultDataStructOutputArray &
285
375
  VaultDataStructOutputStruct;
376
+
377
+ export type NftWithVaultStruct =
378
+ | [number | string | BN, number | string | BN, string]
379
+ | {
380
+ nftId: number | string | BN;
381
+ vaultId: number | string | BN;
382
+ vaultAddr: string;
383
+ };
384
+
385
+ export type NftWithVaultStructOutputArray = [string, string, string];
386
+ export type NftWithVaultStructOutputStruct = {
387
+ nftId: string;
388
+ vaultId: string;
389
+ vaultAddr: string;
390
+ };
391
+ export type NftWithVaultStructOutput = NftWithVaultStructOutputArray &
392
+ NftWithVaultStructOutputStruct;
286
393
  }
287
394
 
288
395
  export interface FluidView extends BaseContract {
@@ -293,36 +400,27 @@ export interface FluidView extends BaseContract {
293
400
  ): FluidView;
294
401
  clone(): FluidView;
295
402
  methods: {
296
- feedRegistry(): NonPayableTransactionObject<string>;
297
-
298
- getAaveTokenPriceInETH(
299
- _tokenAddr: string
300
- ): NonPayableTransactionObject<string>;
301
-
302
- getAaveTokenPriceInUSD(
303
- _tokenAddr: string
304
- ): NonPayableTransactionObject<string>;
403
+ getAllFTokens(): NonPayableTransactionObject<string[]>;
305
404
 
306
- getAaveV3TokenPriceInETH(
307
- _tokenAddr: string
308
- ): NonPayableTransactionObject<string>;
309
-
310
- getAaveV3TokenPriceInUSD(
311
- _tokenAddr: string
312
- ): NonPayableTransactionObject<string>;
313
-
314
- getAddrForChainlinkOracle(
315
- _inputTokenAddr: string
316
- ): NonPayableTransactionObject<string>;
405
+ getAllFTokensData(): NonPayableTransactionObject<
406
+ FluidView.FTokenDataStructOutput[]
407
+ >;
317
408
 
318
- getChainlinkPriceInETH(
319
- _inputTokenAddr: string
320
- ): NonPayableTransactionObject<string>;
409
+ getAllUserEarnPositionsWithFTokens(
410
+ _user: string
411
+ ): NonPayableTransactionObject<
412
+ [
413
+ FluidView.UserEarnPositionStructOutput[],
414
+ FluidView.FTokenDataStructOutput[]
415
+ ] & {
416
+ userPositions: FluidView.UserEarnPositionStructOutput[];
417
+ fTokensData: FluidView.FTokenDataStructOutput[];
418
+ }
419
+ >;
321
420
 
322
- getChainlinkPriceInUSD(
323
- _inputTokenAddr: string,
324
- _useFallback: boolean
325
- ): NonPayableTransactionObject<string>;
421
+ getFTokenData(
422
+ _fToken: string
423
+ ): NonPayableTransactionObject<FluidView.FTokenDataStructOutput>;
326
424
 
327
425
  getPositionByNftId(
328
426
  _nftId: number | string | BN
@@ -333,37 +431,32 @@ export interface FluidView extends BaseContract {
333
431
  }
334
432
  >;
335
433
 
336
- getPriceInETH(_inputTokenAddr: string): NonPayableTransactionObject<string>;
337
-
338
- getPriceInUSD(_inputTokenAddr: string): NonPayableTransactionObject<string>;
339
-
340
434
  getRatio(_nftId: number | string | BN): NonPayableTransactionObject<string>;
341
435
 
342
- "getRoundInfo(address,uint80,address)"(
343
- _inputTokenAddr: string,
344
- _roundId: number | string | BN,
345
- aggregator: string
346
- ): NonPayableTransactionObject<
347
- [string, string] & { updateTimestamp: string }
348
- >;
436
+ getUserEarnPosition(
437
+ _fToken: string,
438
+ _user: string
439
+ ): NonPayableTransactionObject<FluidView.UserEarnPositionStructOutput>;
349
440
 
350
- "getRoundInfo(address,uint80)"(
351
- _inputTokenAddr: string,
352
- _roundId: number | string | BN
441
+ getUserEarnPositionWithFToken(
442
+ _fToken: string,
443
+ _user: string
353
444
  ): NonPayableTransactionObject<
354
- [string, string] & { updateTimestamp: string }
445
+ [
446
+ FluidView.UserEarnPositionStructOutput,
447
+ FluidView.FTokenDataStructOutput
448
+ ] & {
449
+ userPosition: FluidView.UserEarnPositionStructOutput;
450
+ fTokenData: FluidView.FTokenDataStructOutput;
451
+ }
355
452
  >;
356
453
 
357
- getSparkTokenPriceInETH(
358
- _tokenAddr: string
359
- ): NonPayableTransactionObject<string>;
360
-
361
- getSparkTokenPriceInUSD(
362
- _tokenAddr: string
363
- ): NonPayableTransactionObject<string>;
364
-
365
454
  getUserNftIds(_user: string): NonPayableTransactionObject<string[]>;
366
455
 
456
+ getUserNftIdsWithVaultIds(
457
+ _user: string
458
+ ): NonPayableTransactionObject<FluidView.NftWithVaultStructOutput[]>;
459
+
367
460
  getUserPositions(
368
461
  _user: string
369
462
  ): NonPayableTransactionObject<
@@ -376,22 +469,9 @@ export interface FluidView extends BaseContract {
376
469
  }
377
470
  >;
378
471
 
379
- getVaultAddresses(
380
- _ids: number | string | BN[],
381
- _fetchAll: boolean
382
- ): NonPayableTransactionObject<string[]>;
383
-
384
472
  getVaultData(
385
473
  _vault: string
386
474
  ): NonPayableTransactionObject<FluidView.VaultDataStructOutput>;
387
-
388
- getWBtcPrice(
389
- _btcPrice: number | string | BN
390
- ): NonPayableTransactionObject<string>;
391
-
392
- getWStEthPrice(
393
- _stEthPrice: number | string | BN
394
- ): NonPayableTransactionObject<string>;
395
475
  };
396
476
  events: {
397
477
  allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
@@ -12,6 +12,11 @@ export interface FluidMarketInfo {
12
12
  hasSmartDebt: boolean
13
13
  collateralAsset: string
14
14
  debtAsset: string
15
+ ethBased?: boolean,
16
+ btcBased?: boolean,
17
+ wstETHBased?: boolean,
18
+ stableBased?: boolean,
19
+ type: FluidVaultType
15
20
  }
16
21
 
17
22
  export enum FluidMainnetVersion {
@@ -71,6 +76,9 @@ export enum FluidMainnetVersion {
71
76
  RSETH_ETH_WSTETH_78 = 'RSETH_ETH_WSTETH_78',
72
77
  RSETH_WSTETH_79 = 'RSETH_WSTETH_79',
73
78
  WEETHS_ETH_WSTETH_80 = 'WEETHS_ETH_WSTETH_80',
79
+ SUSDE_USDT_USDT_92 = 'SUSDE_USDT_USDT_92',
80
+ USDE_USDT_USDT_93 = 'USDE_USDT_USDT_93',
81
+ LBTC_CBBTC_WBTC_97 = 'LBTC_CBBTC_WBTC_97',
74
82
  }
75
83
 
76
84
  export enum FluidArbitrumVersion {
@@ -169,17 +177,22 @@ export interface InnerFluidMarketData {
169
177
  isSmartDebt: boolean,
170
178
  marketAddress: string,
171
179
  vaultType: FluidVaultType,
180
+ vaultValue?: FluidVersions
172
181
  oracle: string,
173
182
  liquidationPenaltyPercent: string,
174
183
  collFactor: string,
175
184
  liquidationRatio: string,
185
+ liqFactor: string,
186
+ minRatio: string,
176
187
  collAsset0: string,
177
188
  collAsset1?: string,
178
189
  debtAsset0: string,
179
190
  debtAsset1?: string,
180
191
  totalPositions: string,
181
192
  totalSupplyVault: string,
193
+ totalSupplyVaultUsd: string,
182
194
  totalBorrowVault: string,
195
+ totalBorrowVaultUsd: string,
183
196
  withdrawalLimit: string,
184
197
  withdrawableUntilLimit: string,
185
198
  withdrawable: string,
@@ -190,6 +203,8 @@ export interface InnerFluidMarketData {
190
203
  maxBorrowLimit: string,
191
204
  baseBorrowLimit: string,
192
205
  minimumBorrowing: string,
206
+ supplyRate: string,
207
+ borrowRate: string,
193
208
  }
194
209
 
195
210
  export interface FluidMarketData {