@defisaver/positions-sdk 2.1.24-dev-savings-1 → 2.1.24-dev-savings-3

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 (113) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/fluid/index.js +16 -4
  5. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  6. package/cjs/savings/makerDSR/options.js +1 -0
  7. package/cjs/savings/morphoVaults/index.js +17 -17
  8. package/cjs/savings/morphoVaults/options.js +13 -0
  9. package/cjs/savings/yearnVaults/options.js +3 -0
  10. package/cjs/types/savings/makerDsr.d.ts +1 -0
  11. package/cjs/types/savings/morphoVaults.d.ts +1 -0
  12. package/cjs/types/savings/yearnVaults.d.ts +1 -0
  13. package/esm/fluid/index.js +16 -4
  14. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  15. package/esm/savings/makerDSR/options.js +1 -0
  16. package/esm/savings/morphoVaults/index.js +17 -17
  17. package/esm/savings/morphoVaults/options.js +13 -0
  18. package/esm/savings/yearnVaults/options.js +3 -0
  19. package/esm/types/savings/makerDsr.d.ts +1 -0
  20. package/esm/types/savings/morphoVaults.d.ts +1 -0
  21. package/esm/types/savings/yearnVaults.d.ts +1 -0
  22. package/package.json +48 -48
  23. package/src/aaveV2/index.ts +240 -240
  24. package/src/aaveV3/index.ts +614 -614
  25. package/src/aaveV3/merit.ts +97 -97
  26. package/src/aaveV3/merkl.ts +74 -74
  27. package/src/claiming/aaveV3.ts +154 -154
  28. package/src/claiming/compV3.ts +22 -22
  29. package/src/claiming/ethena.ts +61 -61
  30. package/src/claiming/index.ts +12 -12
  31. package/src/claiming/king.ts +66 -66
  32. package/src/claiming/morphoBlue.ts +118 -118
  33. package/src/claiming/spark.ts +225 -225
  34. package/src/compoundV2/index.ts +244 -244
  35. package/src/compoundV3/index.ts +274 -274
  36. package/src/config/contracts.ts +1281 -1281
  37. package/src/constants/index.ts +10 -10
  38. package/src/contracts.ts +142 -142
  39. package/src/curveUsd/index.ts +254 -254
  40. package/src/eulerV2/index.ts +324 -324
  41. package/src/exchange/index.ts +25 -25
  42. package/src/fluid/index.ts +1787 -1774
  43. package/src/helpers/aaveHelpers/index.ts +187 -187
  44. package/src/helpers/compoundHelpers/index.ts +283 -283
  45. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  46. package/src/helpers/eulerHelpers/index.ts +222 -222
  47. package/src/helpers/fluidHelpers/index.ts +326 -326
  48. package/src/helpers/index.ts +10 -10
  49. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  50. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  51. package/src/helpers/makerHelpers/index.ts +52 -52
  52. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  53. package/src/helpers/sparkHelpers/index.ts +158 -158
  54. package/src/index.ts +49 -49
  55. package/src/liquity/index.ts +159 -159
  56. package/src/liquityV2/index.ts +703 -703
  57. package/src/llamaLend/index.ts +305 -305
  58. package/src/maker/index.ts +223 -223
  59. package/src/markets/aave/index.ts +116 -116
  60. package/src/markets/aave/marketAssets.ts +54 -54
  61. package/src/markets/compound/index.ts +238 -238
  62. package/src/markets/compound/marketsAssets.ts +97 -97
  63. package/src/markets/curveUsd/index.ts +69 -69
  64. package/src/markets/euler/index.ts +26 -26
  65. package/src/markets/fluid/index.ts +2900 -2900
  66. package/src/markets/index.ts +25 -25
  67. package/src/markets/liquityV2/index.ts +102 -102
  68. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  69. package/src/markets/llamaLend/index.ts +235 -235
  70. package/src/markets/morphoBlue/index.ts +971 -971
  71. package/src/markets/spark/index.ts +29 -29
  72. package/src/markets/spark/marketAssets.ts +12 -12
  73. package/src/moneymarket/moneymarketCommonService.ts +84 -84
  74. package/src/morphoBlue/index.ts +274 -274
  75. package/src/portfolio/index.ts +598 -598
  76. package/src/savings/index.ts +43 -43
  77. package/src/savings/makerDsr/index.ts +53 -53
  78. package/src/savings/makerDsr/options.ts +8 -7
  79. package/src/savings/morphoVaults/index.ts +80 -80
  80. package/src/savings/morphoVaults/options.ts +122 -109
  81. package/src/savings/yearnVaults/index.ts +73 -73
  82. package/src/savings/yearnVaults/options.ts +29 -26
  83. package/src/services/priceService.ts +278 -278
  84. package/src/services/utils.ts +115 -115
  85. package/src/services/viem.ts +34 -34
  86. package/src/setup.ts +8 -8
  87. package/src/spark/index.ts +456 -456
  88. package/src/staking/eligibility.ts +53 -53
  89. package/src/staking/index.ts +1 -1
  90. package/src/staking/staking.ts +183 -183
  91. package/src/types/aave.ts +189 -189
  92. package/src/types/claiming.ts +114 -114
  93. package/src/types/common.ts +107 -107
  94. package/src/types/compound.ts +136 -136
  95. package/src/types/curveUsd.ts +123 -123
  96. package/src/types/euler.ts +175 -175
  97. package/src/types/fluid.ts +483 -483
  98. package/src/types/index.ts +14 -14
  99. package/src/types/liquity.ts +30 -30
  100. package/src/types/liquityV2.ts +126 -126
  101. package/src/types/llamaLend.ts +159 -159
  102. package/src/types/maker.ts +63 -63
  103. package/src/types/merit.ts +1 -1
  104. package/src/types/merkl.ts +70 -70
  105. package/src/types/morphoBlue.ts +200 -200
  106. package/src/types/portfolio.ts +60 -60
  107. package/src/types/savings/index.ts +17 -17
  108. package/src/types/savings/makerDsr.ts +12 -11
  109. package/src/types/savings/morphoVaults.ts +24 -23
  110. package/src/types/savings/yearnVaults.ts +13 -12
  111. package/src/types/spark.ts +133 -133
  112. package/src/umbrella/index.ts +69 -69
  113. package/src/umbrella/umbrellaUtils.ts +29 -29
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
@@ -1146,11 +1146,23 @@ exports._getAllFluidMarketDataChunked = _getAllFluidMarketDataChunked;
1146
1146
  const getAllFluidMarketDataChunked = (network, provider) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAllFluidMarketDataChunked)(network, (0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } })); });
1147
1147
  exports.getAllFluidMarketDataChunked = getAllFluidMarketDataChunked;
1148
1148
  const _getFluidTokenData = (provider, network, token) => __awaiter(void 0, void 0, void 0, function* () {
1149
+ var _a, _b;
1149
1150
  const view = (0, contracts_1.FluidViewContractViem)(provider, network);
1150
1151
  const fTokenAddress = (0, markets_1.getFTokenAddress)(token, network);
1151
- const data = yield view.read.getFTokenData([fTokenAddress]);
1152
- const supplyRate = new decimal_js_1.default(data.supplyRate).div(100).toString();
1153
- const rewardsRate = new decimal_js_1.default(data.rewardsRate).div(1e12).toString();
1152
+ const [data, rewardsApiResponse,] = yield Promise.all([
1153
+ yield view.read.getFTokenData([fTokenAddress]),
1154
+ fetch(`https://api.fluid.instadapp.io/v2/lending/${network}/tokens/${fTokenAddress}`),
1155
+ ]);
1156
+ let rewardsData = { rewards: [] };
1157
+ if (!rewardsApiResponse.ok) {
1158
+ console.log('External API Failure: Failed to fetch fluid rewards APY');
1159
+ }
1160
+ else {
1161
+ rewardsData = yield rewardsApiResponse.json();
1162
+ }
1163
+ const supplyRate = new decimal_js_1.default((rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.supplyRate) || '0').div(100).toString();
1164
+ const rewardRates = ((_a = rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.rewards) === null || _a === void 0 ? void 0 : _a.reduce((acc, item) => acc.add(new decimal_js_1.default(item.rate || '0').div(100)), new decimal_js_1.default(0))) || '0';
1165
+ const stakeRate = new decimal_js_1.default(((_b = rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.asset) === null || _b === void 0 ? void 0 : _b.stakingApr) || '0').div(100).toString();
1154
1166
  const decimals = data.decimals.toString();
1155
1167
  const depositRate = new decimal_js_1.default((0, utils_1.getEthAmountForDecimals)(data.convertToShares.toString(), decimals)).toString();
1156
1168
  const withdrawRate = new decimal_js_1.default((0, utils_1.getEthAmountForDecimals)(data.convertToAssets.toString(), decimals)).toString();
@@ -1160,7 +1172,7 @@ const _getFluidTokenData = (provider, network, token) => __awaiter(void 0, void
1160
1172
  decimals,
1161
1173
  totalDeposited: (0, utils_1.getEthAmountForDecimals)(data.totalAssets.toString(), decimals),
1162
1174
  withdrawable: (0, utils_1.getEthAmountForDecimals)(data.withdrawable.toString(), decimals),
1163
- apy: new decimal_js_1.default(supplyRate).add(rewardsRate).toString(),
1175
+ apy: new decimal_js_1.default(supplyRate).plus(rewardRates).plus(stakeRate).toString(),
1164
1176
  depositRate,
1165
1177
  withdrawRate,
1166
1178
  };
@@ -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
@@ -7,4 +7,5 @@ exports.MAKER_DSR_VAULT = {
7
7
  name: 'Maker DSR',
8
8
  address: '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7',
9
9
  asset: 'DAI',
10
+ deploymentBlock: 8928160,
10
11
  };
@@ -54,23 +54,23 @@ const morphoVaultsOptions = __importStar(require("./options"));
54
54
  exports.morphoVaultsOptions = morphoVaultsOptions;
55
55
  const viem_1 = require("../../services/viem");
56
56
  const contracts_1 = require("../../contracts");
57
- const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
58
- vaultByAddress(chainId: 1, address: "${vaultAddress}") {
59
- id,
60
- dailyApy,
61
- dailyApys {
62
- apy, netApy
63
- },
64
- monthlyApys {
65
- apy, netApy
66
- },
67
- liquidity {
68
- underlying, usd,
69
- },
70
- asset {
71
- priceUsd
72
- }
73
- }
57
+ const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
58
+ vaultByAddress(chainId: 1, address: "${vaultAddress}") {
59
+ id,
60
+ dailyApy,
61
+ dailyApys {
62
+ apy, netApy
63
+ },
64
+ monthlyApys {
65
+ apy, netApy
66
+ },
67
+ liquidity {
68
+ underlying, usd,
69
+ },
70
+ asset {
71
+ priceUsd
72
+ }
73
+ }
74
74
  }`;
75
75
  const MORPHO_BLUE_API = 'https://blue-api.morpho.org/graphql';
76
76
  const _getMorphoVaultData = (provider, network, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
@@ -7,78 +7,91 @@ exports.MORPHO_VAULT_FLAGSHIP_ETH = {
7
7
  name: 'Flagship ETH',
8
8
  address: '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D',
9
9
  asset: 'ETH',
10
+ deploymentBlock: 18927491,
10
11
  };
11
12
  exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = {
12
13
  type: types_1.MorphoVaultType.MorphoVaultGauntletUSDCCore,
13
14
  name: 'Gauntlet USDC Core',
14
15
  address: '0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458',
15
16
  asset: 'USDC',
17
+ deploymentBlock: 19777569,
16
18
  };
17
19
  exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = {
18
20
  type: types_1.MorphoVaultType.MorphoVaultGauntletUSDCPrime,
19
21
  name: 'Gauntlet USDC Prime',
20
22
  address: '0xdd0f28e19C1780eb6396170735D45153D261490d',
21
23
  asset: 'USDC',
24
+ deploymentBlock: 19777569,
22
25
  };
23
26
  exports.MORPHO_VAULT_RE7_WETH = {
24
27
  type: types_1.MorphoVaultType.MorphoVaultRe7Weth,
25
28
  name: 'RE7 WETH',
26
29
  address: '0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0',
27
30
  asset: 'ETH',
31
+ deploymentBlock: 19121118,
28
32
  };
29
33
  exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = {
30
34
  type: types_1.MorphoVaultType.MorphoVaultGauntletWETHCore,
31
35
  name: 'Gauntlet WETH Core',
32
36
  address: '0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658',
33
37
  asset: 'ETH',
38
+ deploymentBlock: 19541126,
34
39
  };
35
40
  exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = {
36
41
  type: types_1.MorphoVaultType.MorphoVaultGauntletWETHPrime,
37
42
  name: 'Gauntlet WETH Prime',
38
43
  address: '0x2371e134e3455e0593363cBF89d3b6cf53740618',
39
44
  asset: 'ETH',
45
+ deploymentBlock: 19372149,
40
46
  };
41
47
  exports.MORPHO_VAULT_BOOSTED_USDC = {
42
48
  type: types_1.MorphoVaultType.MorphoVaultBoostedUSDC,
43
49
  name: 'Boosted USDC',
44
50
  address: '0xd63070114470f685b75B74D60EEc7c1113d33a3D',
45
51
  asset: 'USDC',
52
+ deploymentBlock: 20377233,
46
53
  };
47
54
  exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = {
48
55
  type: types_1.MorphoVaultType.MorphoVaultSteakhousePYUSD,
49
56
  name: 'Steakhouse PYUSD',
50
57
  address: '0xbEEF02e5E13584ab96848af90261f0C8Ee04722a',
51
58
  asset: 'PYUSD',
59
+ deploymentBlock: 19043398,
52
60
  };
53
61
  exports.MORPHO_VAULT_FLAGSHIP_USDT = {
54
62
  type: types_1.MorphoVaultType.MorphoVaultFlagshipUSDT,
55
63
  name: 'Flagship USDT',
56
64
  address: '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1',
57
65
  asset: 'USDT',
66
+ deploymentBlock: 19127039,
58
67
  };
59
68
  exports.MORPHO_VAULT_STEAKHOUSE_USDT = {
60
69
  type: types_1.MorphoVaultType.MorphoVaultSteakhouseUSDT,
61
70
  name: 'Steakhouse USDT',
62
71
  address: '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa',
63
72
  asset: 'USDT',
73
+ deploymentBlock: 19043398,
64
74
  };
65
75
  exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = {
66
76
  type: types_1.MorphoVaultType.MorphoVaultGauntletUSDACore,
67
77
  name: 'Gauntlet USDA Core',
68
78
  address: '0x125D41A6e5dbf455cD9Df8F80BCC6fd172D52Cc6',
69
79
  asset: 'USDA',
80
+ deploymentBlock: 19633608,
70
81
  };
71
82
  exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = {
72
83
  type: types_1.MorphoVaultType.MorphoVaultGauntletUSDTPrime,
73
84
  name: 'Gauntlet USDT Prime',
74
85
  address: '0x8CB3649114051cA5119141a34C200D65dc0Faa73',
75
86
  asset: 'USDT',
87
+ deploymentBlock: 19486541,
76
88
  };
77
89
  exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = {
78
90
  type: types_1.MorphoVaultType.MorphoVaultGauntletResolvUSDC,
79
91
  name: 'Gauntlet Resolv USDC',
80
92
  address: '0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb',
81
93
  asset: 'USDC',
94
+ deploymentBlock: 21487882,
82
95
  };
83
96
  exports.MORPHO_VAULTS = {
84
97
  [types_1.MorphoVaultType.MorphoVaultFlagshipEth]: exports.MORPHO_VAULT_FLAGSHIP_ETH,
@@ -6,16 +6,19 @@ exports.YEARN_VAULT_DAI = {
6
6
  type: yearnVaults_1.YearnVaultType.YearnVaultDAI,
7
7
  address: '0xdA816459F1AB5631232FE5e97a05BBBb94970c95',
8
8
  asset: 'DAI',
9
+ deploymentBlock: 12796965,
9
10
  };
10
11
  exports.YEARN_VAULT_USDC = {
11
12
  type: yearnVaults_1.YearnVaultType.YearnVaultUSDC,
12
13
  address: '0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE',
13
14
  asset: 'USDC',
15
+ deploymentBlock: 13513457,
14
16
  };
15
17
  exports.YEARN_VAULT_USDT = {
16
18
  type: yearnVaults_1.YearnVaultType.YearnVaultUSDT,
17
19
  address: '0x3B27F92C0e212C671EA351827EDF93DB27cc0c65',
18
20
  asset: 'USDT',
21
+ deploymentBlock: 14980240,
19
22
  };
20
23
  exports.YEARN_VAULTS = {
21
24
  [yearnVaults_1.YearnVaultType.YearnVaultDAI]: exports.YEARN_VAULT_DAI,
@@ -7,4 +7,5 @@ export interface MakerDsrVault {
7
7
  name: string;
8
8
  address: EthAddress;
9
9
  asset: string;
10
+ deploymentBlock: number;
10
11
  }
@@ -19,4 +19,5 @@ export interface MorphoVault {
19
19
  name: string;
20
20
  address: EthAddress;
21
21
  asset: string;
22
+ deploymentBlock: number;
22
23
  }
@@ -8,4 +8,5 @@ export interface YearnVault {
8
8
  type: YearnVaultType;
9
9
  address: EthAddress;
10
10
  asset: string;
11
+ deploymentBlock: number;
11
12
  }
@@ -1130,11 +1130,23 @@ export const _getAllFluidMarketDataChunked = (network, provider) => __awaiter(vo
1130
1130
  });
1131
1131
  export const getAllFluidMarketDataChunked = (network, provider) => __awaiter(void 0, void 0, void 0, function* () { return _getAllFluidMarketDataChunked(network, getViemProvider(provider, network, { batch: { multicall: true } })); });
1132
1132
  export const _getFluidTokenData = (provider, network, token) => __awaiter(void 0, void 0, void 0, function* () {
1133
+ var _a, _b;
1133
1134
  const view = FluidViewContractViem(provider, network);
1134
1135
  const fTokenAddress = getFTokenAddress(token, network);
1135
- const data = yield view.read.getFTokenData([fTokenAddress]);
1136
- const supplyRate = new Dec(data.supplyRate).div(100).toString();
1137
- const rewardsRate = new Dec(data.rewardsRate).div(1e12).toString();
1136
+ const [data, rewardsApiResponse,] = yield Promise.all([
1137
+ yield view.read.getFTokenData([fTokenAddress]),
1138
+ fetch(`https://api.fluid.instadapp.io/v2/lending/${network}/tokens/${fTokenAddress}`),
1139
+ ]);
1140
+ let rewardsData = { rewards: [] };
1141
+ if (!rewardsApiResponse.ok) {
1142
+ console.log('External API Failure: Failed to fetch fluid rewards APY');
1143
+ }
1144
+ else {
1145
+ rewardsData = yield rewardsApiResponse.json();
1146
+ }
1147
+ const supplyRate = new Dec((rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.supplyRate) || '0').div(100).toString();
1148
+ const rewardRates = ((_a = rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.rewards) === null || _a === void 0 ? void 0 : _a.reduce((acc, item) => acc.add(new Dec(item.rate || '0').div(100)), new Dec(0))) || '0';
1149
+ const stakeRate = new Dec(((_b = rewardsData === null || rewardsData === void 0 ? void 0 : rewardsData.asset) === null || _b === void 0 ? void 0 : _b.stakingApr) || '0').div(100).toString();
1138
1150
  const decimals = data.decimals.toString();
1139
1151
  const depositRate = new Dec(getEthAmountForDecimals(data.convertToShares.toString(), decimals)).toString();
1140
1152
  const withdrawRate = new Dec(getEthAmountForDecimals(data.convertToAssets.toString(), decimals)).toString();
@@ -1144,7 +1156,7 @@ export const _getFluidTokenData = (provider, network, token) => __awaiter(void 0
1144
1156
  decimals,
1145
1157
  totalDeposited: getEthAmountForDecimals(data.totalAssets.toString(), decimals),
1146
1158
  withdrawable: getEthAmountForDecimals(data.withdrawable.toString(), decimals),
1147
- apy: new Dec(supplyRate).add(rewardsRate).toString(),
1159
+ apy: new Dec(supplyRate).plus(rewardRates).plus(stakeRate).toString(),
1148
1160
  depositRate,
1149
1161
  withdrawRate,
1150
1162
  };