@defisaver/positions-sdk 2.1.6-dev-debt-in-front → 2.1.6-dev-plasma-1

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 (134) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/aaveV3/index.js +3 -3
  5. package/cjs/aaveV3/merit.js +3 -0
  6. package/cjs/aaveV3/merkl.d.ts +1 -1
  7. package/cjs/config/contracts.d.ts +17 -0
  8. package/cjs/config/contracts.js +17 -0
  9. package/cjs/helpers/aaveHelpers/index.d.ts +1 -1
  10. package/cjs/helpers/aaveHelpers/index.js +6 -4
  11. package/cjs/helpers/morphoBlueHelpers/index.d.ts +1 -1
  12. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  13. package/cjs/liquityV2/index.d.ts +0 -2
  14. package/cjs/liquityV2/index.js +9 -52
  15. package/cjs/markets/aave/index.js +1 -1
  16. package/cjs/markets/aave/marketAssets.d.ts +4 -0
  17. package/cjs/markets/aave/marketAssets.js +5 -1
  18. package/cjs/markets/compound/index.js +11 -0
  19. package/cjs/markets/compound/marketsAssets.d.ts +7 -0
  20. package/cjs/markets/compound/marketsAssets.js +7 -0
  21. package/cjs/markets/spark/marketAssets.d.ts +1 -0
  22. package/cjs/markets/spark/marketAssets.js +1 -0
  23. package/cjs/services/utils.d.ts +8 -4
  24. package/cjs/services/utils.js +30 -10
  25. package/cjs/services/viem.d.ts +54 -15
  26. package/cjs/services/viem.js +2 -0
  27. package/cjs/types/common.d.ts +2 -1
  28. package/cjs/types/common.js +1 -0
  29. package/esm/aaveV3/index.js +4 -4
  30. package/esm/aaveV3/merit.js +3 -0
  31. package/esm/aaveV3/merkl.d.ts +1 -1
  32. package/esm/config/contracts.d.ts +17 -0
  33. package/esm/config/contracts.js +17 -0
  34. package/esm/helpers/aaveHelpers/index.d.ts +1 -1
  35. package/esm/helpers/aaveHelpers/index.js +7 -5
  36. package/esm/helpers/morphoBlueHelpers/index.d.ts +1 -1
  37. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  38. package/esm/liquityV2/index.d.ts +0 -2
  39. package/esm/liquityV2/index.js +7 -48
  40. package/esm/markets/aave/index.js +1 -1
  41. package/esm/markets/aave/marketAssets.d.ts +4 -0
  42. package/esm/markets/aave/marketAssets.js +4 -0
  43. package/esm/markets/compound/index.js +11 -0
  44. package/esm/markets/compound/marketsAssets.d.ts +7 -0
  45. package/esm/markets/compound/marketsAssets.js +7 -0
  46. package/esm/markets/spark/marketAssets.d.ts +1 -0
  47. package/esm/markets/spark/marketAssets.js +1 -0
  48. package/esm/services/utils.d.ts +8 -4
  49. package/esm/services/utils.js +21 -5
  50. package/esm/services/viem.d.ts +54 -15
  51. package/esm/services/viem.js +3 -1
  52. package/esm/types/common.d.ts +2 -1
  53. package/esm/types/common.js +1 -0
  54. package/package.json +47 -47
  55. package/src/aaveV2/index.ts +240 -240
  56. package/src/aaveV3/index.ts +614 -614
  57. package/src/aaveV3/merit.ts +97 -94
  58. package/src/aaveV3/merkl.ts +74 -74
  59. package/src/claiming/aaveV3.ts +154 -154
  60. package/src/claiming/compV3.ts +22 -22
  61. package/src/claiming/index.ts +12 -12
  62. package/src/claiming/king.ts +66 -66
  63. package/src/claiming/morphoBlue.ts +118 -118
  64. package/src/claiming/spark.ts +225 -225
  65. package/src/compoundV2/index.ts +244 -244
  66. package/src/compoundV3/index.ts +274 -274
  67. package/src/config/contracts.ts +1245 -1228
  68. package/src/constants/index.ts +10 -10
  69. package/src/contracts.ts +120 -120
  70. package/src/curveUsd/index.ts +254 -254
  71. package/src/eulerV2/index.ts +324 -324
  72. package/src/exchange/index.ts +25 -25
  73. package/src/fluid/index.ts +1638 -1638
  74. package/src/helpers/aaveHelpers/index.ts +187 -185
  75. package/src/helpers/compoundHelpers/index.ts +283 -283
  76. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  77. package/src/helpers/eulerHelpers/index.ts +222 -222
  78. package/src/helpers/fluidHelpers/index.ts +326 -326
  79. package/src/helpers/index.ts +10 -10
  80. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  81. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  82. package/src/helpers/makerHelpers/index.ts +52 -52
  83. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  84. package/src/helpers/sparkHelpers/index.ts +155 -155
  85. package/src/index.ts +47 -47
  86. package/src/liquity/index.ts +159 -159
  87. package/src/liquityV2/index.ts +657 -703
  88. package/src/llamaLend/index.ts +305 -305
  89. package/src/maker/index.ts +223 -223
  90. package/src/markets/aave/index.ts +116 -116
  91. package/src/markets/aave/marketAssets.ts +54 -49
  92. package/src/markets/compound/index.ts +238 -227
  93. package/src/markets/compound/marketsAssets.ts +97 -90
  94. package/src/markets/curveUsd/index.ts +69 -69
  95. package/src/markets/euler/index.ts +26 -26
  96. package/src/markets/fluid/index.ts +2456 -2456
  97. package/src/markets/index.ts +25 -25
  98. package/src/markets/liquityV2/index.ts +102 -102
  99. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  100. package/src/markets/llamaLend/index.ts +235 -235
  101. package/src/markets/morphoBlue/index.ts +895 -895
  102. package/src/markets/spark/index.ts +29 -29
  103. package/src/markets/spark/marketAssets.ts +12 -11
  104. package/src/moneymarket/moneymarketCommonService.ts +80 -80
  105. package/src/morphoBlue/index.ts +274 -274
  106. package/src/portfolio/index.ts +570 -570
  107. package/src/services/priceService.ts +159 -159
  108. package/src/services/utils.ts +115 -99
  109. package/src/services/viem.ts +34 -32
  110. package/src/setup.ts +8 -8
  111. package/src/spark/index.ts +445 -445
  112. package/src/staking/eligibility.ts +59 -59
  113. package/src/staking/index.ts +1 -1
  114. package/src/staking/staking.ts +170 -170
  115. package/src/types/aave.ts +189 -189
  116. package/src/types/claiming.ts +109 -109
  117. package/src/types/common.ts +106 -105
  118. package/src/types/compound.ts +136 -136
  119. package/src/types/curveUsd.ts +123 -123
  120. package/src/types/euler.ts +175 -175
  121. package/src/types/fluid.ts +448 -448
  122. package/src/types/index.ts +13 -13
  123. package/src/types/liquity.ts +30 -30
  124. package/src/types/liquityV2.ts +126 -126
  125. package/src/types/llamaLend.ts +159 -159
  126. package/src/types/maker.ts +63 -63
  127. package/src/types/merit.ts +1 -1
  128. package/src/types/merkl.ts +70 -70
  129. package/src/types/morphoBlue.ts +194 -194
  130. package/src/types/portfolio.ts +60 -60
  131. package/src/types/spark.ts +135 -135
  132. package/src/umbrella/index.ts +69 -69
  133. package/src/umbrella/umbrellaUtils.ts +29 -29
  134. package/CLAUDE.md +0 -32
package/.mocharc.json CHANGED
@@ -1,4 +1,4 @@
1
- {
2
- "require": "ts-node/register",
3
- "extension": ["ts"]
4
- }
1
+ {
2
+ "require": "ts-node/register",
3
+ "extension": ["ts"]
4
+ }
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- v20.17.0
1
+ v20.17.0
package/README.md CHANGED
@@ -1,64 +1,64 @@
1
- # DeFi Saver Positions SDK
2
-
3
- Supported protocols:
4
- - [Maker](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/maker)
5
- - [Spark](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/spark)
6
- - [CrvUSD](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/curveUsd)
7
- - [Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV2)
8
- - [Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV3)
9
- - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
10
- - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
11
- - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
12
-
13
- ## Setup
14
- Supported Node version is v10.
15
-
16
- - run `npm install` (first time)
17
- - run `npm run build`
18
-
19
- `build` command will generate contracts and build ejs and esm folders
20
-
21
- ## How to use
22
- [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
23
-
24
- This is a Compound V3 example, and every other protocol is similar
25
- ```js
26
- import { compoundV3 } from '@defisaver/positions-sdk';
27
-
28
-
29
- // every protocol has market data and user data getters
30
- const {
31
- getCompoundV3MarketsData,
32
- getCompoundV3AccountData,
33
- } = compoundV3;
34
-
35
- const provider = 'Your RPC provider';
36
-
37
- const user = '0x123...';
38
-
39
- const { assetsData } = await getCompoundV3MarketsData(
40
- provider, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
41
- 1, // network
42
- selectedMarket, // market object like in /src/markets/compound/index.ts
43
- provider, // this must be mainnet rpc - used for getting prices onchain and calculating apys
44
- );
45
-
46
- const userData = await getCompoundV3AccountData(
47
- provider,
48
- 1, // network
49
- userAddress, // EOA or DSProxy
50
- '', // proxy address of the user, or just empty string if checking for EOA
51
- {
52
- selectedMarket, // market object as in /src/markets/compound/index.ts
53
- assetsData,
54
- }
55
- );
56
- ```
57
-
58
- More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
59
-
60
- ## Testing
61
-
62
- `npm run test` - Run all tests
63
-
64
- `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
1
+ # DeFi Saver Positions SDK
2
+
3
+ Supported protocols:
4
+ - [Maker](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/maker)
5
+ - [Spark](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/spark)
6
+ - [CrvUSD](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/curveUsd)
7
+ - [Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV2)
8
+ - [Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV3)
9
+ - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
10
+ - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
11
+ - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
12
+
13
+ ## Setup
14
+ Supported Node version is v10.
15
+
16
+ - run `npm install` (first time)
17
+ - run `npm run build`
18
+
19
+ `build` command will generate contracts and build ejs and esm folders
20
+
21
+ ## How to use
22
+ [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
23
+
24
+ This is a Compound V3 example, and every other protocol is similar
25
+ ```js
26
+ import { compoundV3 } from '@defisaver/positions-sdk';
27
+
28
+
29
+ // every protocol has market data and user data getters
30
+ const {
31
+ getCompoundV3MarketsData,
32
+ getCompoundV3AccountData,
33
+ } = compoundV3;
34
+
35
+ const provider = 'Your RPC provider';
36
+
37
+ const user = '0x123...';
38
+
39
+ const { assetsData } = await getCompoundV3MarketsData(
40
+ provider, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
41
+ 1, // network
42
+ selectedMarket, // market object like in /src/markets/compound/index.ts
43
+ provider, // this must be mainnet rpc - used for getting prices onchain and calculating apys
44
+ );
45
+
46
+ const userData = await getCompoundV3AccountData(
47
+ provider,
48
+ 1, // network
49
+ userAddress, // EOA or DSProxy
50
+ '', // proxy address of the user, or just empty string if checking for EOA
51
+ {
52
+ selectedMarket, // market object as in /src/markets/compound/index.ts
53
+ assetsData,
54
+ }
55
+ );
56
+ ```
57
+
58
+ More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
59
+
60
+ ## Testing
61
+
62
+ `npm run test` - Run all tests
63
+
64
+ `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
@@ -58,12 +58,12 @@ const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
58
58
  exports.aaveV3EmodeCategoriesMapping = aaveV3EmodeCategoriesMapping;
59
59
  function _getAaveV3MarketData(provider_1, network_1, market_1) {
60
60
  return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
61
- const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a), network).address);
61
+ const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.getWrappedNativeAssetFromUnwrapped)(a), network).address);
62
62
  const isL2 = (0, utils_1.isLayer2Network)(network);
63
63
  const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network);
64
64
  const aaveIncentivesContract = (0, contracts_1.AaveIncentiveDataProviderV3ContractViem)(provider, network);
65
65
  const marketAddress = market.providerAddress;
66
- const networksWithIncentives = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Opt, common_1.NetworkNumber.Linea];
66
+ const networksWithIncentives = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Opt, common_1.NetworkNumber.Linea, common_1.NetworkNumber.Plasma];
67
67
  // eslint-disable-next-line prefer-const
68
68
  let [loanInfo, eModesInfo, isBorrowAllowed, rewardInfo, merkleRewardsMap, meritRewardsMap] = yield Promise.all([
69
69
  loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses], (0, viem_1.setViemBlockNumber)(blockNumber)),
@@ -366,7 +366,7 @@ const _getAaveV3AccountData = (provider_1, network_1, address_1, extractedState_
366
366
  const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network);
367
367
  const lendingPoolContract = (0, contracts_1.createViemContractFromConfigFunc)(market.lendingPool, market.lendingPoolAddress)(provider, network);
368
368
  const marketAddress = market.providerAddress;
369
- const _addresses = market.assets.map((a) => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a), network).address);
369
+ const _addresses = market.assets.map((a) => (0, tokens_1.getAssetInfo)((0, utils_1.getWrappedNativeAssetFromUnwrapped)(a), network).address);
370
370
  const middleAddressIndex = Math.floor(_addresses.length / 2); // split addresses in half to avoid gas limit by multicall
371
371
  const [eModeCategory, tokenBalances1, tokenBalances2] = yield Promise.all([
372
372
  lendingPoolContract.read.getUserEMode([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
@@ -46,6 +46,9 @@ const MERIT_DATA_MAP = {
46
46
  [common_1.NetworkNumber.Linea]: {
47
47
  [types_1.AaveVersions.AaveV3]: {},
48
48
  },
49
+ [common_1.NetworkNumber.Plasma]: {
50
+ [types_1.AaveVersions.AaveV3]: {},
51
+ },
49
52
  };
50
53
  /**
51
54
  * Fetches merit rewards data from Aave API
@@ -1,6 +1,6 @@
1
1
  import { MerkleRewardMap } from '../types';
2
2
  import { NetworkNumber } from '../types/common';
3
- export declare const getAaveUnderlyingSymbol: (_symbol?: string) => any;
3
+ export declare const getAaveUnderlyingSymbol: (_symbol?: string) => string;
4
4
  /**
5
5
  * aEthLidoUSDC -> aUSDC
6
6
  * USDC -> USDC
@@ -28303,6 +28303,11 @@ export declare const AaveV3View: {
28303
28303
  };
28304
28304
  };
28305
28305
  };
28306
+ readonly "9745": {
28307
+ readonly address: "0xD8E67968d8a0df4beCf2D50daE1e34d4d80C701C";
28308
+ readonly createdBlock: 1880799;
28309
+ readonly oldVersions: {};
28310
+ };
28306
28311
  };
28307
28312
  };
28308
28313
  export declare const AaveV3PoolAddressesProvider: {
@@ -28763,6 +28768,9 @@ export declare const AaveV3PoolAddressesProvider: {
28763
28768
  readonly "59144": {
28764
28769
  readonly address: "0x89502c3731F69DDC95B65753708A07F8Cd0373F4";
28765
28770
  };
28771
+ readonly "9745": {
28772
+ readonly address: "0x061D8e131F26512348ee5FA42e2DF1bA9d6505E9";
28773
+ };
28766
28774
  };
28767
28775
  };
28768
28776
  export declare const AaveV3LidoPoolAddressesProvider: {
@@ -31133,6 +31141,9 @@ export declare const AaveV3LendingPool: {
31133
31141
  readonly "59144": {
31134
31142
  readonly address: "0xc47b8C00b0f69a36fa203Ffeac0334874574a8Ac";
31135
31143
  };
31144
+ readonly "9745": {
31145
+ readonly address: "0x925a2A7214Ed92428B5b1B090F80b25700095e12";
31146
+ };
31136
31147
  };
31137
31148
  };
31138
31149
  export declare const AaveV3LidoLendingPool: {
@@ -34467,6 +34478,9 @@ export declare const AaveV3ProtocolDataProvider: {
34467
34478
  readonly "59144": {
34468
34479
  readonly address: "0x47cd4b507B81cB831669c71c7077f4daF6762FF4";
34469
34480
  };
34481
+ readonly "9745": {
34482
+ readonly address: "0xf2D6E38B407e31E7E7e4a16E6769728b76c7419F";
34483
+ };
34470
34484
  };
34471
34485
  };
34472
34486
  export declare const AaveV3LidoProtocolDataProvider: {
@@ -35805,6 +35819,9 @@ export declare const AaveUiIncentiveDataProviderV3: {
35805
35819
  readonly "59144": {
35806
35820
  readonly address: "0x117684358D990E42Eb1649E7e8C4691951dc1E71";
35807
35821
  };
35822
+ readonly "9745": {
35823
+ readonly address: "0xcb85C501B3A5e9851850d66648d69B26A4c90942";
35824
+ };
35808
35825
  };
35809
35826
  };
35810
35827
  export declare const cUSDCv3: {
@@ -231,6 +231,11 @@ exports.AaveV3View = {
231
231
  "address": "0xc9D6EfA6e08B66a5Cdc516Bcd5807c2fa69E0f2A"
232
232
  }
233
233
  },
234
+ },
235
+ "9745": {
236
+ "address": "0xD8E67968d8a0df4beCf2D50daE1e34d4d80C701C",
237
+ "createdBlock": 1880799,
238
+ "oldVersions": {},
234
239
  }
235
240
  }
236
241
  };
@@ -251,6 +256,9 @@ exports.AaveV3PoolAddressesProvider = {
251
256
  },
252
257
  "59144": {
253
258
  "address": "0x89502c3731F69DDC95B65753708A07F8Cd0373F4"
259
+ },
260
+ "9745": {
261
+ "address": "0x061D8e131F26512348ee5FA42e2DF1bA9d6505E9"
254
262
  }
255
263
  }
256
264
  };
@@ -287,6 +295,9 @@ exports.AaveV3LendingPool = {
287
295
  },
288
296
  "59144": {
289
297
  "address": "0xc47b8C00b0f69a36fa203Ffeac0334874574a8Ac"
298
+ },
299
+ "9745": {
300
+ "address": "0x925a2A7214Ed92428B5b1B090F80b25700095e12"
290
301
  }
291
302
  }
292
303
  };
@@ -323,6 +334,9 @@ exports.AaveV3ProtocolDataProvider = {
323
334
  },
324
335
  "59144": {
325
336
  "address": "0x47cd4b507B81cB831669c71c7077f4daF6762FF4"
337
+ },
338
+ "9745": {
339
+ "address": "0xf2D6E38B407e31E7E7e4a16E6769728b76c7419F"
326
340
  }
327
341
  }
328
342
  };
@@ -359,6 +373,9 @@ exports.AaveUiIncentiveDataProviderV3 = {
359
373
  },
360
374
  "59144": {
361
375
  "address": "0x117684358D990E42Eb1649E7e8C4691951dc1E71"
376
+ },
377
+ "9745": {
378
+ "address": "0xcb85C501B3A5e9851850d66648d69B26A4c90942"
362
379
  }
363
380
  }
364
381
  };
@@ -44,4 +44,4 @@ export declare const getApyAfterValuesEstimation: (selectedMarket: AaveMarketInf
44
44
  /**
45
45
  * won't cover all cases
46
46
  */
47
- export declare const getAaveUnderlyingSymbol: (_symbol?: string) => any;
47
+ export declare const getAaveUnderlyingSymbol: (_symbol?: string) => string;
@@ -65,7 +65,7 @@ const aaveAnyGetSuppliableAsCollAssets = (_a) => {
65
65
  };
66
66
  exports.aaveAnyGetSuppliableAsCollAssets = aaveAnyGetSuppliableAsCollAssets;
67
67
  const aaveAnyGetEmodeMutableProps = ({ eModeCategory, eModeCategoriesData, assetsData, }, _asset) => {
68
- const asset = (0, utils_1.wethToEth)(_asset);
68
+ const asset = (0, utils_1.getNativeAssetFromWrapped)(_asset);
69
69
  const assetData = assetsData[asset];
70
70
  const eModeCategoryData = (eModeCategoriesData === null || eModeCategoriesData === void 0 ? void 0 : eModeCategoriesData[eModeCategory]) || { collateralAssets: [], collateralFactor: '0', liquidationRatio: '0' };
71
71
  if (eModeCategory === 0
@@ -125,7 +125,7 @@ const getApyAfterValuesEstimationInner = (selectedMarket, actions, client, netwo
125
125
  const params = actions.map(({ action, asset, amount }) => {
126
126
  const isDebtAsset = constants_1.borrowOperations.includes(action);
127
127
  const amountInWei = (0, tokens_1.assetAmountInWei)(amount, asset);
128
- const assetInfo = (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(asset), network);
128
+ const assetInfo = (0, tokens_1.getAssetInfo)((0, utils_1.getWrappedNativeAssetFromUnwrapped)(asset), network);
129
129
  let liquidityAdded;
130
130
  let liquidityTaken;
131
131
  if (isDebtAsset) {
@@ -147,7 +147,7 @@ const getApyAfterValuesEstimationInner = (selectedMarket, actions, client, netwo
147
147
  const data = yield viewContract.read.getApyAfterValuesEstimation([selectedMarket.providerAddress, params]);
148
148
  const rates = {};
149
149
  data.forEach((d) => {
150
- const asset = (0, utils_1.wethToEth)((0, tokens_1.getAssetInfoByAddress)(d.reserveAddress, network).symbol);
150
+ const asset = (0, utils_1.getNativeAssetFromWrapped)((0, tokens_1.getAssetInfoByAddress)(d.reserveAddress, network).symbol);
151
151
  rates[asset] = {
152
152
  supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(d.supplyRate.toString()).div(1e25).toString()),
153
153
  borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(d.variableBorrowRate.toString()).div(1e25).toString()),
@@ -167,9 +167,11 @@ const getAaveUnderlyingSymbol = (_symbol = '') => {
167
167
  .replace(/^aEth/, '')
168
168
  .replace(/^aArb/, '')
169
169
  .replace(/^aOpt/, '')
170
+ .replace(/^aLin/, '')
171
+ .replace(/^aPla/, '')
170
172
  .replace(/^aBas/, '');
171
173
  if (symbol.startsWith('a'))
172
174
  symbol = symbol.slice(1);
173
- return (0, utils_1.wethToEth)(symbol);
175
+ return (0, utils_1.getNativeAssetFromWrapped)(symbol);
174
176
  };
175
177
  exports.getAaveUnderlyingSymbol = getAaveUnderlyingSymbol;
@@ -56,4 +56,4 @@ export declare const getRewardsForMarket: (marketId: string, network?: NetworkNu
56
56
  supplyApy: string;
57
57
  borrowApy: string;
58
58
  }>;
59
- export declare const getMorphoUnderlyingSymbol: (_symbol: string) => any;
59
+ export declare const getMorphoUnderlyingSymbol: (_symbol: string) => string;
@@ -128,73 +128,73 @@ const getApyAfterValuesEstimation = (selectedMarket, actions, provider, network)
128
128
  });
129
129
  exports.getApyAfterValuesEstimation = getApyAfterValuesEstimation;
130
130
  const API_URL = 'https://blue-api.morpho.org/graphql';
131
- const MARKET_QUERY = `
132
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
133
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
134
- reallocatableLiquidityAssets
135
- targetBorrowUtilization
136
- loanAsset {
137
- address
138
- decimals
139
- priceUsd
140
- }
141
- state {
142
- liquidityAssets
143
- borrowAssets
144
- supplyAssets
145
- }
146
- publicAllocatorSharedLiquidity {
147
- assets
148
- vault {
149
- address
150
- name
151
- }
152
- allocationMarket {
153
- uniqueKey
154
- loanAsset {
155
- address
156
- }
157
- collateralAsset {
158
- address
159
- }
160
- irmAddress
161
- oracle {
162
- address
163
- }
164
- lltv
165
- }
166
- }
167
- loanAsset {
168
- address
169
- }
170
- collateralAsset {
171
- address
172
- }
173
- oracle {
174
- address
175
- }
176
- irmAddress
177
- lltv
178
- }
179
- }
131
+ const MARKET_QUERY = `
132
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
133
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
134
+ reallocatableLiquidityAssets
135
+ targetBorrowUtilization
136
+ loanAsset {
137
+ address
138
+ decimals
139
+ priceUsd
140
+ }
141
+ state {
142
+ liquidityAssets
143
+ borrowAssets
144
+ supplyAssets
145
+ }
146
+ publicAllocatorSharedLiquidity {
147
+ assets
148
+ vault {
149
+ address
150
+ name
151
+ }
152
+ allocationMarket {
153
+ uniqueKey
154
+ loanAsset {
155
+ address
156
+ }
157
+ collateralAsset {
158
+ address
159
+ }
160
+ irmAddress
161
+ oracle {
162
+ address
163
+ }
164
+ lltv
165
+ }
166
+ }
167
+ loanAsset {
168
+ address
169
+ }
170
+ collateralAsset {
171
+ address
172
+ }
173
+ oracle {
174
+ address
175
+ }
176
+ irmAddress
177
+ lltv
178
+ }
179
+ }
180
180
  `;
181
- const REWARDS_QUERY = `
182
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
183
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
184
- uniqueKey
185
- state {
186
- rewards {
187
- amountPerSuppliedToken
188
- supplyApr
189
- amountPerBorrowedToken
190
- borrowApr
191
- asset {
192
- address
193
- }
194
- }
195
- }
196
- }
197
- }
181
+ const REWARDS_QUERY = `
182
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
183
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
184
+ uniqueKey
185
+ state {
186
+ rewards {
187
+ amountPerSuppliedToken
188
+ supplyApr
189
+ amountPerBorrowedToken
190
+ borrowApr
191
+ asset {
192
+ address
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
198
  `;
199
199
  /**
200
200
  * Get reallocatable liquidity to a given market and target borrow utilization
@@ -23,8 +23,6 @@ export declare const getLiquityV2UserTroveIds: (provider: EthereumProvider, netw
23
23
  }[];
24
24
  nextFreeTroveIndex: string;
25
25
  }>;
26
- export declare const calculateDebtInFrontLiquityV2: (markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, allMarketsUnbackedDebts: Record<LiquityV2Versions, string>, interestRateDebtInFront: string) => string;
27
- export declare const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2: (newDebt: string, markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: Client, network: NetworkNumber, interestRate: string) => Promise<string>;
28
26
  export declare const getDebtInFrontForInterestRateLiquityV2: (markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: EthereumProvider, network: NetworkNumber, isLegacy: boolean, interestRate: string, debtInFrontBeingMoved?: string) => Promise<string>;
29
27
  export declare const _getLiquityV2TroveData: (provider: Client, network: NetworkNumber, { selectedMarket, assetsData, troveId, allMarketsData, }: {
30
28
  selectedMarket: LiquityV2MarketInfo;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getLiquitySAndYBold = exports.getLiquityV2Staking = exports.getLiquityV2ClaimableCollateral = exports.getLiquityV2TroveData = exports._getLiquityV2TroveData = exports.getDebtInFrontForInterestRateLiquityV2 = exports.getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = exports.calculateDebtInFrontLiquityV2 = exports.getLiquityV2UserTroveIds = exports._getLiquityV2UserTroveIds = exports.getLiquityV2MarketData = exports._getLiquityV2MarketData = void 0;
15
+ exports.getLiquitySAndYBold = exports.getLiquityV2Staking = exports.getLiquityV2ClaimableCollateral = exports.getLiquityV2TroveData = exports._getLiquityV2TroveData = exports.getDebtInFrontForInterestRateLiquityV2 = exports.getLiquityV2UserTroveIds = exports._getLiquityV2UserTroveIds = exports.getLiquityV2MarketData = exports._getLiquityV2MarketData = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const tokens_1 = require("@defisaver/tokens");
18
18
  const contracts_1 = require("../contracts");
@@ -201,39 +201,11 @@ const getAllMarketsUnbackedDebts = (markets, isLegacy, provider, network) => __a
201
201
  return Object.fromEntries(allMarketsUnbackedDebt);
202
202
  });
203
203
  const calculateDebtInFrontLiquityV2 = (markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront) => {
204
- // Sanity check to avoid division by 0. Very unlikely to ever happen.
205
- const selectedMarketTotalBorrow = new decimal_js_1.default(markets[selectedMarket].assetsData[(0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[selectedMarket].debtToken].totalBorrow);
206
- if (selectedMarketTotalBorrow.eq(0))
207
- return new decimal_js_1.default(0).toString();
208
204
  const selectedMarketUnbackedDebt = new decimal_js_1.default(allMarketsUnbackedDebts[selectedMarket]);
209
205
  const { isLegacy } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[selectedMarket];
210
- const totalUnbackedDebt = Object.values(allMarketsUnbackedDebts).reduce((acc, val) => acc.plus(new decimal_js_1.default(val)), new decimal_js_1.default(0));
211
- // When totalUnbackedDebt is 0, redemptions will be proportional with the branch size and not to unbacked debt.
212
- // When unbacked debt is 0 for branch, next redemption call won't touch that branch, so in order to estimate total debt in front we will:
213
- // - First add up all the unbacked debt from other branches, as that will be the only debt that will be redeemed on the fist redemption call
214
- // - Perform split the same way as we would do when totalUnbackedDebt == 0, this would represent the second call to the redemption function
215
- if (selectedMarketUnbackedDebt.eq(0)) {
216
- // Special case if the branch debt in front is 0, it means that all debt in front is unbacked debt from other branches.
217
- if (new decimal_js_1.default(interestRateDebtInFront).eq(0))
218
- return totalUnbackedDebt.toString();
219
- // Then calculate how much of that estimated amount would go to each branch
220
- // Second redemption call - calculate proportional redemption based on updated total debt
221
- const amountBeingRedeemedOnEachMarketByTotalBorrow = Object.entries(markets).map(([version, market]) => {
222
- const { isLegacy: isLegacyMarket } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[version];
223
- if (version === selectedMarket && isLegacyMarket !== isLegacy)
224
- return new decimal_js_1.default(interestRateDebtInFront);
225
- const { assetsData } = market;
226
- const { debtToken } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[version];
227
- // For other markets, subtract their unbacked debt as it will be cleared in first redemption call
228
- const marketUnbackedDebt = new decimal_js_1.default(allMarketsUnbackedDebts[version]);
229
- const totalBorrow = new decimal_js_1.default(assetsData[debtToken].totalBorrow).sub(marketUnbackedDebt);
230
- const amountToRedeem = new decimal_js_1.default(interestRateDebtInFront).mul(totalBorrow).div(selectedMarketTotalBorrow);
231
- return decimal_js_1.default.min(amountToRedeem, totalBorrow);
232
- });
233
- const redemptionAmount = amountBeingRedeemedOnEachMarketByTotalBorrow.reduce((acc, val) => acc.plus(val), new decimal_js_1.default(0));
234
- return totalUnbackedDebt.plus(redemptionAmount).toString();
235
- }
236
- const amountBeingRedeemedOnEachMarketByUnbackedDebt = Object.entries(markets).map(([version, market]) => {
206
+ if (selectedMarketUnbackedDebt.eq(0))
207
+ return interestRateDebtInFront;
208
+ const amountBeingReedemedOnEachMarket = Object.entries(markets).map(([version, market]) => {
237
209
  const { isLegacy: isLegacyMarket } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[version];
238
210
  if (version === selectedMarket && isLegacyMarket !== isLegacy)
239
211
  return new decimal_js_1.default(interestRateDebtInFront);
@@ -241,31 +213,16 @@ const calculateDebtInFrontLiquityV2 = (markets, selectedMarket, allMarketsUnback
241
213
  const { debtToken } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[version];
242
214
  const unbackedDebt = new decimal_js_1.default(allMarketsUnbackedDebts[version]);
243
215
  const totalBorrow = new decimal_js_1.default(assetsData[debtToken].totalBorrow);
244
- const amountToRedeem = new decimal_js_1.default(interestRateDebtInFront).mul(unbackedDebt).div(selectedMarketUnbackedDebt);
245
- return decimal_js_1.default.min(amountToRedeem, totalBorrow);
216
+ const amountToReedem = new decimal_js_1.default(interestRateDebtInFront).mul(unbackedDebt).div(selectedMarketUnbackedDebt);
217
+ return decimal_js_1.default.min(amountToReedem, totalBorrow);
246
218
  });
247
- return amountBeingRedeemedOnEachMarketByUnbackedDebt.reduce((acc, val) => acc.plus(val), new decimal_js_1.default(0)).toString();
219
+ return amountBeingReedemedOnEachMarket.reduce((acc, val) => acc.plus(val), new decimal_js_1.default(0)).toString();
248
220
  };
249
- exports.calculateDebtInFrontLiquityV2 = calculateDebtInFrontLiquityV2;
250
- // @dev The amount redeemed on each branch depends on the unbacked debt of every branch (the difference between total borrow and stability pool deposits).
251
- // When new debt is generated on the selected market, the unbacked debt will increase, resulting in a higher redemption amount on that branch.
252
- // This function accepts the new debt that's about to be generated (e.g., trove creation) and estimates the debt in front based on the new state.
253
- const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = (newDebt, markets, selectedMarket, provider, network, interestRate) => __awaiter(void 0, void 0, void 0, function* () {
254
- const marketsWithNewDebt = structuredClone(markets);
255
- const selectedMarketDebtToken = (0, markets_1.LiquityV2Markets)(network)[selectedMarket].debtToken;
256
- const currentTotalBorrow = new decimal_js_1.default(marketsWithNewDebt[selectedMarket].assetsData[selectedMarketDebtToken].totalBorrow);
257
- marketsWithNewDebt[selectedMarket].assetsData[selectedMarketDebtToken].totalBorrow = currentTotalBorrow.add(newDebt).toString();
258
- const { isLegacy } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[selectedMarket];
259
- const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(marketsWithNewDebt, isLegacy, provider, network);
260
- const interestRateDebtInFront = new decimal_js_1.default(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, (0, markets_1.LiquityV2Markets)(network)[selectedMarket].marketAddress, interestRate));
261
- return (0, exports.calculateDebtInFrontLiquityV2)(marketsWithNewDebt, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
262
- });
263
- exports.getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = getDebtInFrontForInterestRateIncludingNewDebtLiquityV2;
264
221
  const getDebtInFrontLiquityV2 = (markets, selectedMarket, provider, network, viewContract, troveId) => __awaiter(void 0, void 0, void 0, function* () {
265
222
  const { isLegacy } = (0, markets_1.LiquityV2Markets)(common_1.NetworkNumber.Eth)[selectedMarket];
266
223
  const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network);
267
224
  const interestRateDebtInFront = yield getDebtInFrontForSingleMarketLiquityV2(provider, network, isLegacy, (0, markets_1.LiquityV2Markets)(network)[selectedMarket].marketAddress, troveId);
268
- return (0, exports.calculateDebtInFrontLiquityV2)(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
225
+ return calculateDebtInFrontLiquityV2(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
269
226
  });
270
227
  /**
271
228
  * @param markets
@@ -280,7 +237,7 @@ const _getDebtInFrontForInterestRateLiquityV2 = (markets_2, selectedMarket_1, pr
280
237
  const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network);
281
238
  const interestRateDebtInFront = new decimal_js_1.default(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, (0, markets_1.LiquityV2Markets)(network)[selectedMarket].marketAddress, interestRate))
282
239
  .sub(debtInFrontBeingMoved);
283
- return (0, exports.calculateDebtInFrontLiquityV2)(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
240
+ return calculateDebtInFrontLiquityV2(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
284
241
  });
285
242
  const getDebtInFrontForInterestRateLiquityV2 = (markets_2, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1) => __awaiter(void 0, [markets_2, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, isLegacy, interestRate, debtInFrontBeingMoved = '0') { return _getDebtInFrontForInterestRateLiquityV2(markets, selectedMarket, (0, viem_1.getViemProvider)(provider, network), network, isLegacy, interestRate, debtInFrontBeingMoved); });
286
243
  exports.getDebtInFrontForInterestRateLiquityV2 = getDebtInFrontForInterestRateLiquityV2;
@@ -45,7 +45,7 @@ exports.AAVE_V2 = {
45
45
  protocolName: 'aave',
46
46
  };
47
47
  const AAVE_V3 = (networkId) => ({
48
- chainIds: [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Opt, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Linea],
48
+ chainIds: [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Opt, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Linea, common_1.NetworkNumber.Plasma],
49
49
  label: networkId === common_1.NetworkNumber.Eth ? 'Aave v3 Core' : 'Aave v3',
50
50
  shortLabel: 'v3',
51
51
  value: types_1.AaveVersions.AaveV3,
@@ -6,12 +6,14 @@ export declare const aaveV3AssetsDefaultMarketOpt: string[];
6
6
  export declare const aaveV3AssetsDefaultMarketArb: string[];
7
7
  export declare const aaveV3AssetsDefaultMarketBase: string[];
8
8
  export declare const aaveV3AssetsDefaultMarketLinea: string[];
9
+ export declare const aaveV3AssetsDefaultMarketPlasma: string[];
9
10
  export declare const aaveV3AssetsDefaultMarket: {
10
11
  readonly 1: string[];
11
12
  readonly 10: string[];
12
13
  readonly 42161: string[];
13
14
  readonly 8453: string[];
14
15
  readonly 59144: string[];
16
+ readonly 9745: string[];
15
17
  };
16
18
  export declare const aaveV3AssetsLidoMarketEth: string[];
17
19
  export declare const aaveV3AssetsLidoMarket: {
@@ -20,6 +22,7 @@ export declare const aaveV3AssetsLidoMarket: {
20
22
  readonly 42161: readonly [];
21
23
  readonly 8453: readonly [];
22
24
  readonly 59144: readonly [];
25
+ readonly 9745: readonly [];
23
26
  };
24
27
  export declare const aaveV3AssetsEtherfiMarketEth: string[];
25
28
  export declare const aaveV3AssetsEtherfiMarket: {
@@ -28,4 +31,5 @@ export declare const aaveV3AssetsEtherfiMarket: {
28
31
  readonly 42161: readonly [];
29
32
  readonly 8453: readonly [];
30
33
  readonly 59144: readonly [];
34
+ readonly 9745: readonly [];
31
35
  };