@defisaver/positions-sdk 2.1.29 → 2.1.31-syrup-dev

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 (133) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/CLAUDE.md +32 -0
  4. package/README.md +64 -64
  5. package/cjs/config/contracts.d.ts +57 -0
  6. package/cjs/config/contracts.js +4 -1
  7. package/cjs/contracts.d.ts +46351 -0
  8. package/cjs/contracts.js +20 -2
  9. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  10. package/cjs/markets/aave/marketAssets.js +2 -2
  11. package/cjs/savings/index.d.ts +4 -3
  12. package/cjs/savings/index.js +9 -1
  13. package/cjs/savings/morphoVaults/index.js +17 -17
  14. package/cjs/savings/sparkSavingsVaults/index.d.ts +7 -0
  15. package/cjs/savings/sparkSavingsVaults/index.js +98 -0
  16. package/cjs/savings/sparkSavingsVaults/options.d.ts +6 -0
  17. package/cjs/savings/sparkSavingsVaults/options.js +35 -0
  18. package/cjs/types/savings/index.d.ts +3 -1
  19. package/cjs/types/savings/index.js +1 -0
  20. package/cjs/types/savings/sparkSavingsVaults.d.ts +14 -0
  21. package/cjs/types/savings/sparkSavingsVaults.js +9 -0
  22. package/esm/config/contracts.d.ts +57 -0
  23. package/esm/config/contracts.js +3 -0
  24. package/esm/contracts.d.ts +46351 -0
  25. package/esm/contracts.js +16 -0
  26. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  27. package/esm/markets/aave/marketAssets.js +2 -2
  28. package/esm/savings/index.d.ts +4 -3
  29. package/esm/savings/index.js +8 -1
  30. package/esm/savings/morphoVaults/index.js +17 -17
  31. package/esm/savings/sparkSavingsVaults/index.d.ts +7 -0
  32. package/esm/savings/sparkSavingsVaults/index.js +57 -0
  33. package/esm/savings/sparkSavingsVaults/options.d.ts +6 -0
  34. package/esm/savings/sparkSavingsVaults/options.js +31 -0
  35. package/esm/types/savings/index.d.ts +3 -1
  36. package/esm/types/savings/index.js +1 -0
  37. package/esm/types/savings/sparkSavingsVaults.d.ts +14 -0
  38. package/esm/types/savings/sparkSavingsVaults.js +6 -0
  39. package/package.json +48 -48
  40. package/src/aaveV2/index.ts +240 -240
  41. package/src/aaveV3/index.ts +614 -614
  42. package/src/aaveV3/merit.ts +97 -97
  43. package/src/aaveV3/merkl.ts +74 -74
  44. package/src/claiming/aaveV3.ts +154 -154
  45. package/src/claiming/compV3.ts +22 -22
  46. package/src/claiming/ethena.ts +61 -61
  47. package/src/claiming/index.ts +12 -12
  48. package/src/claiming/king.ts +66 -66
  49. package/src/claiming/morphoBlue.ts +118 -118
  50. package/src/claiming/spark.ts +225 -225
  51. package/src/compoundV2/index.ts +244 -244
  52. package/src/compoundV3/index.ts +274 -274
  53. package/src/config/contracts.ts +1285 -1282
  54. package/src/constants/index.ts +10 -10
  55. package/src/contracts.ts +160 -142
  56. package/src/curveUsd/index.ts +254 -254
  57. package/src/eulerV2/index.ts +324 -324
  58. package/src/exchange/index.ts +25 -25
  59. package/src/fluid/index.ts +1800 -1800
  60. package/src/helpers/aaveHelpers/index.ts +187 -187
  61. package/src/helpers/compoundHelpers/index.ts +283 -283
  62. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  63. package/src/helpers/eulerHelpers/index.ts +222 -222
  64. package/src/helpers/fluidHelpers/index.ts +326 -326
  65. package/src/helpers/index.ts +10 -10
  66. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  67. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  68. package/src/helpers/makerHelpers/index.ts +52 -52
  69. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  70. package/src/helpers/sparkHelpers/index.ts +158 -158
  71. package/src/index.ts +49 -49
  72. package/src/liquity/index.ts +159 -159
  73. package/src/liquityV2/index.ts +703 -703
  74. package/src/llamaLend/index.ts +305 -305
  75. package/src/maker/index.ts +223 -223
  76. package/src/markets/aave/index.ts +118 -118
  77. package/src/markets/aave/marketAssets.ts +54 -54
  78. package/src/markets/compound/index.ts +243 -243
  79. package/src/markets/compound/marketsAssets.ts +97 -97
  80. package/src/markets/curveUsd/index.ts +69 -69
  81. package/src/markets/euler/index.ts +26 -26
  82. package/src/markets/fluid/index.ts +2900 -2900
  83. package/src/markets/index.ts +25 -25
  84. package/src/markets/liquityV2/index.ts +102 -102
  85. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  86. package/src/markets/llamaLend/index.ts +235 -235
  87. package/src/markets/morphoBlue/index.ts +971 -971
  88. package/src/markets/spark/index.ts +29 -29
  89. package/src/markets/spark/marketAssets.ts +12 -12
  90. package/src/moneymarket/moneymarketCommonService.ts +85 -85
  91. package/src/morphoBlue/index.ts +274 -274
  92. package/src/portfolio/index.ts +598 -598
  93. package/src/savings/index.ts +55 -46
  94. package/src/savings/makerDsr/index.ts +53 -53
  95. package/src/savings/makerDsr/options.ts +9 -9
  96. package/src/savings/morphoVaults/index.ts +80 -80
  97. package/src/savings/morphoVaults/options.ts +203 -203
  98. package/src/savings/sparkSavingsVaults/index.ts +61 -0
  99. package/src/savings/sparkSavingsVaults/options.ts +36 -0
  100. package/src/savings/yearnVaults/index.ts +73 -73
  101. package/src/savings/yearnVaults/options.ts +32 -32
  102. package/src/services/priceService.ts +278 -278
  103. package/src/services/utils.ts +115 -115
  104. package/src/services/viem.ts +34 -34
  105. package/src/setup.ts +8 -8
  106. package/src/spark/index.ts +456 -456
  107. package/src/staking/eligibility.ts +53 -53
  108. package/src/staking/index.ts +1 -1
  109. package/src/staking/staking.ts +186 -186
  110. package/src/types/aave.ts +196 -196
  111. package/src/types/claiming.ts +114 -114
  112. package/src/types/common.ts +107 -107
  113. package/src/types/compound.ts +144 -144
  114. package/src/types/curveUsd.ts +123 -123
  115. package/src/types/euler.ts +175 -175
  116. package/src/types/fluid.ts +483 -483
  117. package/src/types/index.ts +14 -14
  118. package/src/types/liquity.ts +30 -30
  119. package/src/types/liquityV2.ts +126 -126
  120. package/src/types/llamaLend.ts +159 -159
  121. package/src/types/maker.ts +63 -63
  122. package/src/types/merit.ts +1 -1
  123. package/src/types/merkl.ts +70 -70
  124. package/src/types/morphoBlue.ts +200 -200
  125. package/src/types/portfolio.ts +60 -60
  126. package/src/types/savings/index.ts +20 -18
  127. package/src/types/savings/makerDsr.ts +13 -13
  128. package/src/types/savings/morphoVaults.ts +33 -33
  129. package/src/types/savings/sparkSavingsVaults.ts +16 -0
  130. package/src/types/savings/yearnVaults.ts +14 -14
  131. package/src/types/spark.ts +133 -133
  132. package/src/umbrella/index.ts +69 -69
  133. package/src/umbrella/umbrellaUtils.ts +29 -29
package/esm/contracts.js CHANGED
@@ -61,6 +61,22 @@ export const getYearnVaultContractViem = (client, address) => {
61
61
  client,
62
62
  });
63
63
  };
64
+ export const getSparkSavingsVaultContractViem = (client, address) => {
65
+ const abi = getConfigContractAbi('SparkSavingsVault');
66
+ return getContract({
67
+ address,
68
+ abi,
69
+ client,
70
+ });
71
+ };
72
+ export const getErc20ContractViem = (client, address) => {
73
+ const abi = getConfigContractAbi('Erc20');
74
+ return getContract({
75
+ address,
76
+ abi,
77
+ client,
78
+ });
79
+ };
64
80
  export const MorphoBlueViewContractViem = createViemContractFromConfigFunc('MorphoBlueView');
65
81
  export const AaveLoanInfoV2ContractViem = createViemContractFromConfigFunc('AaveLoanInfoV2');
66
82
  export const AaveV3ViewContractViem = createViemContractFromConfigFunc('AaveV3View');
@@ -118,73 +118,73 @@ export const getApyAfterValuesEstimation = (selectedMarket, actions, provider, n
118
118
  return { borrowRate, supplyRate };
119
119
  });
120
120
  const API_URL = 'https://blue-api.morpho.org/graphql';
121
- const MARKET_QUERY = `
122
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
123
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
124
- reallocatableLiquidityAssets
125
- targetBorrowUtilization
126
- loanAsset {
127
- address
128
- decimals
129
- priceUsd
130
- }
131
- state {
132
- liquidityAssets
133
- borrowAssets
134
- supplyAssets
135
- }
136
- publicAllocatorSharedLiquidity {
137
- assets
138
- vault {
139
- address
140
- name
141
- }
142
- allocationMarket {
143
- uniqueKey
144
- loanAsset {
145
- address
146
- }
147
- collateralAsset {
148
- address
149
- }
150
- irmAddress
151
- oracle {
152
- address
153
- }
154
- lltv
155
- }
156
- }
157
- loanAsset {
158
- address
159
- }
160
- collateralAsset {
161
- address
162
- }
163
- oracle {
164
- address
165
- }
166
- irmAddress
167
- lltv
168
- }
169
- }
121
+ const MARKET_QUERY = `
122
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
123
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
124
+ reallocatableLiquidityAssets
125
+ targetBorrowUtilization
126
+ loanAsset {
127
+ address
128
+ decimals
129
+ priceUsd
130
+ }
131
+ state {
132
+ liquidityAssets
133
+ borrowAssets
134
+ supplyAssets
135
+ }
136
+ publicAllocatorSharedLiquidity {
137
+ assets
138
+ vault {
139
+ address
140
+ name
141
+ }
142
+ allocationMarket {
143
+ uniqueKey
144
+ loanAsset {
145
+ address
146
+ }
147
+ collateralAsset {
148
+ address
149
+ }
150
+ irmAddress
151
+ oracle {
152
+ address
153
+ }
154
+ lltv
155
+ }
156
+ }
157
+ loanAsset {
158
+ address
159
+ }
160
+ collateralAsset {
161
+ address
162
+ }
163
+ oracle {
164
+ address
165
+ }
166
+ irmAddress
167
+ lltv
168
+ }
169
+ }
170
170
  `;
171
- const REWARDS_QUERY = `
172
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
173
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
174
- uniqueKey
175
- state {
176
- rewards {
177
- amountPerSuppliedToken
178
- supplyApr
179
- amountPerBorrowedToken
180
- borrowApr
181
- asset {
182
- address
183
- }
184
- }
185
- }
186
- }
187
- }
171
+ const REWARDS_QUERY = `
172
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
173
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
174
+ uniqueKey
175
+ state {
176
+ rewards {
177
+ amountPerSuppliedToken
178
+ supplyApr
179
+ amountPerBorrowedToken
180
+ borrowApr
181
+ asset {
182
+ address
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
188
  `;
189
189
  /**
190
190
  * Get reallocatable liquidity to a given market and target borrow utilization
@@ -7,14 +7,14 @@ export const aaveV1AssetsDefaultMarket = [
7
7
  export const aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', 'UNI', 'AAVE', 'BAT', 'BUSD', 'DAI', 'ENJ', 'KNCL', 'LINK', 'MANA', 'MKR', 'REN', 'SNX', 'SUSD', 'TUSD', 'USDC', 'CRV', 'GUSD', 'BAL', 'xSUSHI', 'RENFIL', 'RAI', 'AMPL', 'USDP', 'DPI', 'FRAX', 'FEI', 'stETH', 'ENS', 'UST', 'CVX', '1INCH', 'LUSD'];
8
8
  export const aaveV3AssetsDefaultMarketEth = [
9
9
  'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
10
- 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb',
10
+ 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep', 'PT USDe Sep', 'tETH', 'ezETH', 'XAUt', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Feb', 'PT USDe Feb', 'mmUSD', 'syrupUSDT',
11
11
  ];
12
12
  export const aaveV3AssetsDefaultMarketOpt = [
13
13
  'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
14
14
  ];
15
15
  export const aaveV3AssetsDefaultMarketArb = ['DAI', 'LINK', 'USDC.e', 'WBTC', 'ETH', 'USDT', 'AAVE', 'EURS', 'wstETH', 'MAI', 'rETH', 'LUSD', 'USDC', 'FRAX', 'ARB', 'weETH', 'GHO', 'ezETH', 'rsETH', 'tBTC'];
16
16
  export const aaveV3AssetsDefaultMarketBase = ['ETH', 'cbETH', 'USDbC', 'wstETH', 'USDC', 'weETH', 'cbBTC', 'ezETH', 'GHO', 'wrsETH', 'LBTC', 'EURC', 'AAVE', 'tBTC'];
17
- export const aaveV3AssetsDefaultMarketLinea = ['ETH', 'USDC', 'weETH', 'ezETH', 'USDT', 'wstETH', 'wrsETH', 'WBTC'];
17
+ export const aaveV3AssetsDefaultMarketLinea = ['ETH', 'USDC', 'weETH', 'ezETH', 'USDT', 'wstETH', 'wrsETH', 'WBTC', 'mmUSD'];
18
18
  export const aaveV3AssetsDefaultMarketPlasma = ['ETH', 'USDT', 'sUSDe', 'USDe', 'weETH', 'XAUt', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH', 'syrupUSDT', 'XPL'];
19
19
  // @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
20
20
  export const aaveV3AssetsDefaultMarket = {
@@ -1,7 +1,8 @@
1
- import { MakerDsrType, MorphoVaultType, YearnVaultType } from '../types';
1
+ import { MakerDsrType, MorphoVaultType, SparkSavingsVaultType, YearnVaultType } from '../types';
2
2
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
3
  import * as morphoVaults from './morphoVaults';
4
4
  import * as yearnVaults from './yearnVaults';
5
5
  import * as makerDsr from './makerDSR';
6
- export { morphoVaults, yearnVaults, makerDsr, };
7
- export declare const getSavingsData: (provider: EthereumProvider, network: NetworkNumber, accounts: EthAddress[]) => Promise<Partial<Record<MakerDsrType | MorphoVaultType | YearnVaultType, import("../types").SavingsVaultData>>>;
6
+ import * as sparkSavingsVaults from './sparkSavingsVaults';
7
+ export { morphoVaults, yearnVaults, makerDsr, sparkSavingsVaults, };
8
+ export declare const getSavingsData: (provider: EthereumProvider, network: NetworkNumber, accounts: EthAddress[]) => Promise<Partial<Record<MakerDsrType | MorphoVaultType | SparkSavingsVaultType | YearnVaultType, import("../types").SavingsVaultData>>>;
@@ -11,10 +11,12 @@ import { MakerDsrType, } from '../types';
11
11
  import * as morphoVaults from './morphoVaults';
12
12
  import * as yearnVaults from './yearnVaults';
13
13
  import * as makerDsr from './makerDSR';
14
- export { morphoVaults, yearnVaults, makerDsr, };
14
+ import * as sparkSavingsVaults from './sparkSavingsVaults';
15
+ export { morphoVaults, yearnVaults, makerDsr, sparkSavingsVaults, };
15
16
  export const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
16
17
  const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS);
17
18
  const yearnVaultsList = Object.keys(yearnVaults.yearnVaultsOptions.YEARN_VAULTS);
19
+ const sparkSavingsVaultsList = Object.keys(sparkSavingsVaults.sparkSavingsVaultsOptions.SPARK_SAVINGS_VAULTS);
18
20
  const savingsData = {};
19
21
  yield Promise.all([
20
22
  ...morphoVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
@@ -27,6 +29,11 @@ export const getSavingsData = (provider, network, accounts) => __awaiter(void 0,
27
29
  const data = yield yearnVaults.getYearnVaultData(provider, network, vault, accounts);
28
30
  savingsData[vaultKey] = data;
29
31
  })),
32
+ ...sparkSavingsVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
33
+ const vault = sparkSavingsVaults.sparkSavingsVaultsOptions.getSparkSavingsVault(vaultKey);
34
+ const data = yield sparkSavingsVaults.getSparkSavingsVaultData(provider, network, vault, accounts);
35
+ savingsData[vaultKey] = data;
36
+ })),
30
37
  (() => __awaiter(void 0, void 0, void 0, function* () {
31
38
  const data = yield makerDsr.getMakerDsrData(provider, network, accounts);
32
39
  savingsData[MakerDsrType.MakerDsrVault] = data;
@@ -14,23 +14,23 @@ import * as morphoVaultsOptions from './options';
14
14
  import { getViemProvider } from '../../services/viem';
15
15
  import { getMorphoVaultContractViem } from '../../contracts';
16
16
  export { morphoVaultsOptions, };
17
- const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
18
- vaultByAddress(chainId: 1, address: "${vaultAddress}") {
19
- id,
20
- dailyApy,
21
- dailyApys {
22
- apy, netApy
23
- },
24
- monthlyApys {
25
- apy, netApy
26
- },
27
- liquidity {
28
- underlying, usd,
29
- },
30
- asset {
31
- priceUsd
32
- }
33
- }
17
+ const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
18
+ vaultByAddress(chainId: 1, address: "${vaultAddress}") {
19
+ id,
20
+ dailyApy,
21
+ dailyApys {
22
+ apy, netApy
23
+ },
24
+ monthlyApys {
25
+ apy, netApy
26
+ },
27
+ liquidity {
28
+ underlying, usd,
29
+ },
30
+ asset {
31
+ priceUsd
32
+ }
33
+ }
34
34
  }`;
35
35
  const MORPHO_BLUE_API = 'https://blue-api.morpho.org/graphql';
36
36
  export const _getMorphoVaultData = (provider, network, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
@@ -0,0 +1,7 @@
1
+ import { Client } from 'viem';
2
+ import { SavingsVaultData, SparkSavingsVault } from '../../types';
3
+ import { EthAddress, EthereumProvider, NetworkNumber } from '../../types/common';
4
+ import * as sparkSavingsVaultsOptions from './options';
5
+ export { sparkSavingsVaultsOptions, };
6
+ export declare const _getSparkSavingsVaultData: (provider: Client, network: NetworkNumber, sparkSavingsVault: SparkSavingsVault, accounts: EthAddress[]) => Promise<SavingsVaultData>;
7
+ export declare function getSparkSavingsVaultData(provider: EthereumProvider, network: NetworkNumber, sparkSavingsVault: SparkSavingsVault, accounts: EthAddress[]): Promise<SavingsVaultData>;
@@ -0,0 +1,57 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import Dec from 'decimal.js';
11
+ import { assetAmountInEth, getAssetInfo } from '@defisaver/tokens';
12
+ import * as sparkSavingsVaultsOptions from './options';
13
+ import { getViemProvider } from '../../services/viem';
14
+ import { getErc20ContractViem, getSparkSavingsVaultContractViem } from '../../contracts';
15
+ export { sparkSavingsVaultsOptions, };
16
+ export const _getSparkSavingsVaultData = (provider, network, sparkSavingsVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const sparkSavingsVaultContract = getSparkSavingsVaultContractViem(provider, sparkSavingsVault.address);
18
+ const underlyingAssetContract = getErc20ContractViem(provider, getAssetInfo(sparkSavingsVault.asset, network).address);
19
+ const shares = {};
20
+ const [totalAssets, decimals, nowChi, RAY, liquidityWei] = yield Promise.all([
21
+ sparkSavingsVaultContract.read.totalAssets(),
22
+ sparkSavingsVaultContract.read.decimals(),
23
+ sparkSavingsVaultContract.read.nowChi(),
24
+ sparkSavingsVaultContract.read.RAY(),
25
+ underlyingAssetContract.read.balanceOf([sparkSavingsVault.address]),
26
+ ...accounts.map((account) => __awaiter(void 0, void 0, void 0, function* () {
27
+ const share = yield sparkSavingsVaultContract.read.balanceOf([account]);
28
+ shares[account] = share;
29
+ })),
30
+ ]);
31
+ const poolSize = assetAmountInEth(totalAssets.toString(), sparkSavingsVault.asset);
32
+ const liquidity = assetAmountInEth(liquidityWei.toString(), sparkSavingsVault.asset);
33
+ const supplied = {};
34
+ accounts.forEach((account) => {
35
+ const share = shares[account] || BigInt(0);
36
+ supplied[account.toLowerCase()] = assetAmountInEth(new Dec(share).mul(nowChi).div(RAY).toFixed(0)
37
+ .toString(), sparkSavingsVault.asset);
38
+ });
39
+ return {
40
+ poolSize,
41
+ supplied,
42
+ liquidity,
43
+ asset: sparkSavingsVault.asset,
44
+ optionType: sparkSavingsVault.type,
45
+ };
46
+ });
47
+ export function getSparkSavingsVaultData(provider, network, sparkSavingsVault, accounts) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ return _getSparkSavingsVaultData(getViemProvider(provider, network, {
50
+ batch: {
51
+ multicall: {
52
+ batchSize: 2500000,
53
+ },
54
+ },
55
+ }), network, sparkSavingsVault, accounts);
56
+ });
57
+ }
@@ -0,0 +1,6 @@
1
+ import { SparkSavingsVault, SparkSavingsVaultType } from '../../types';
2
+ export declare const SPARK_SAVINGS_VAULT_USDC: SparkSavingsVault;
3
+ export declare const SPARK_SAVINGS_VAULT_USDT: SparkSavingsVault;
4
+ export declare const SPARK_SAVINGS_VAULT_WETH: SparkSavingsVault;
5
+ export declare const SPARK_SAVINGS_VAULTS: Record<SparkSavingsVaultType, SparkSavingsVault>;
6
+ export declare const getSparkSavingsVault: (type: SparkSavingsVaultType) => SparkSavingsVault;
@@ -0,0 +1,31 @@
1
+ import { SparkSavingsVaultType } from '../../types';
2
+ export const SPARK_SAVINGS_VAULT_USDC = {
3
+ type: SparkSavingsVaultType.SparkSavingsUSDC,
4
+ name: 'Spark Savings USDC',
5
+ address: '0x28B3a8fb53B741A8Fd78c0fb9A6B2393d896a43d',
6
+ asset: 'USDC',
7
+ deploymentBlock: 23484422,
8
+ isLegacy: false,
9
+ };
10
+ export const SPARK_SAVINGS_VAULT_USDT = {
11
+ type: SparkSavingsVaultType.SparkSavingsUSDT,
12
+ name: 'Spark Savings USDT',
13
+ address: '0xe2e7a17dFf93280dec073C995595155283e3C372',
14
+ asset: 'USDT',
15
+ deploymentBlock: 23484439,
16
+ isLegacy: false,
17
+ };
18
+ export const SPARK_SAVINGS_VAULT_WETH = {
19
+ type: SparkSavingsVaultType.SparkSavingsETH,
20
+ name: 'Spark Savings WETH',
21
+ address: '0xfE6eb3b609a7C8352A241f7F3A21CEA4e9209B8f',
22
+ asset: 'WETH',
23
+ deploymentBlock: 23484474,
24
+ isLegacy: false,
25
+ };
26
+ export const SPARK_SAVINGS_VAULTS = {
27
+ [SparkSavingsVaultType.SparkSavingsUSDC]: SPARK_SAVINGS_VAULT_USDC,
28
+ [SparkSavingsVaultType.SparkSavingsUSDT]: SPARK_SAVINGS_VAULT_USDT,
29
+ [SparkSavingsVaultType.SparkSavingsETH]: SPARK_SAVINGS_VAULT_WETH,
30
+ };
31
+ export const getSparkSavingsVault = (type) => SPARK_SAVINGS_VAULTS[type];
@@ -1,10 +1,12 @@
1
1
  import { EthAddress } from '../common';
2
2
  import { MakerDsrType } from './makerDsr';
3
3
  import { MorphoVaultType } from './morphoVaults';
4
+ import { SparkSavingsVaultType } from './sparkSavingsVaults';
4
5
  import { YearnVaultType } from './yearnVaults';
5
6
  export * from './morphoVaults';
6
7
  export * from './yearnVaults';
7
8
  export * from './makerDsr';
9
+ export * from './sparkSavingsVaults';
8
10
  export interface SavingsVaultData {
9
11
  poolSize: string;
10
12
  liquidity: string;
@@ -12,4 +14,4 @@ export interface SavingsVaultData {
12
14
  asset: string;
13
15
  optionType: string;
14
16
  }
15
- export type SavingsData = Partial<Record<MorphoVaultType | YearnVaultType | MakerDsrType, SavingsVaultData>>;
17
+ export type SavingsData = Partial<Record<MorphoVaultType | YearnVaultType | MakerDsrType | SparkSavingsVaultType, SavingsVaultData>>;
@@ -1,3 +1,4 @@
1
1
  export * from './morphoVaults';
2
2
  export * from './yearnVaults';
3
3
  export * from './makerDsr';
4
+ export * from './sparkSavingsVaults';
@@ -0,0 +1,14 @@
1
+ import { EthAddress } from '../common';
2
+ export declare enum SparkSavingsVaultType {
3
+ SparkSavingsUSDC = "spark_savings_usdc",
4
+ SparkSavingsUSDT = "spark_savings_usdt",
5
+ SparkSavingsETH = "spark_savings_eth"
6
+ }
7
+ export interface SparkSavingsVault {
8
+ type: SparkSavingsVaultType;
9
+ name: string;
10
+ address: EthAddress;
11
+ asset: string;
12
+ deploymentBlock: number;
13
+ isLegacy: boolean;
14
+ }
@@ -0,0 +1,6 @@
1
+ export var SparkSavingsVaultType;
2
+ (function (SparkSavingsVaultType) {
3
+ SparkSavingsVaultType["SparkSavingsUSDC"] = "spark_savings_usdc";
4
+ SparkSavingsVaultType["SparkSavingsUSDT"] = "spark_savings_usdt";
5
+ SparkSavingsVaultType["SparkSavingsETH"] = "spark_savings_eth";
6
+ })(SparkSavingsVaultType || (SparkSavingsVaultType = {}));
package/package.json CHANGED
@@ -1,48 +1,48 @@
1
- {
2
- "name": "@defisaver/positions-sdk",
3
- "version": "2.1.29",
4
- "description": "",
5
- "main": "./cjs/index.js",
6
- "module": "./esm/index.js",
7
- "types": "./esm/index.d.ts",
8
- "scripts": {
9
- "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json",
10
- "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json",
11
- "build": "npm run lint && npm run build:cjs && npm run build:esm",
12
- "dev": "tsc -p tsconfig.json --watch",
13
- "lint": "eslint src/ --fix",
14
- "lint-check": "eslint src/",
15
- "test": "mocha tests/*",
16
- "test-single": "mocha ./tests/$npm_config_name.ts",
17
- "test:debugger": "mocha --inspect-brk tests/*",
18
- "version-bump": "git commit -am \"Version bump to $(npm version patch | cut -c 2-)\""
19
- },
20
- "keywords": [],
21
- "author": "",
22
- "license": "ISC",
23
- "dependencies": {
24
- "@defisaver/tokens": "^1.7.13",
25
- "@types/lodash": "^4.17.15",
26
- "@types/memoizee": "^0.4.12",
27
- "decimal.js": "^10.6.0",
28
- "lodash": "^4.17.21",
29
- "memoizee": "^0.4.17",
30
- "viem": "^2.37.9",
31
- "graphql-request": "^1.8.2"
32
- },
33
- "devDependencies": {
34
- "@defisaver/eslint-config": "^1.0.1",
35
- "@metamask/eth-json-rpc-middleware": "^15.0.1",
36
- "@metamask/eth-json-rpc-provider": "^4.1.6",
37
- "@types/chai": "^5.0.0",
38
- "@types/mocha": "^10.0.9",
39
- "chai": "^4.3.8",
40
- "dotenv": "^16.3.1",
41
- "eslint": "^8.49.0",
42
- "eslint-plugin-import": "^2.31.0",
43
- "mocha": "^10.2.0",
44
- "nock": "^14.0.0",
45
- "ts-node": "^10.9.2",
46
- "typescript": "^5.2.2"
47
- }
48
- }
1
+ {
2
+ "name": "@defisaver/positions-sdk",
3
+ "version": "2.1.31-syrup-dev",
4
+ "description": "",
5
+ "main": "./cjs/index.js",
6
+ "module": "./esm/index.js",
7
+ "types": "./esm/index.d.ts",
8
+ "scripts": {
9
+ "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json",
10
+ "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json",
11
+ "build": "npm run lint && npm run build:cjs && npm run build:esm",
12
+ "dev": "tsc -p tsconfig.json --watch",
13
+ "lint": "eslint src/ --fix",
14
+ "lint-check": "eslint src/",
15
+ "test": "mocha tests/*",
16
+ "test-single": "mocha ./tests/$npm_config_name.ts",
17
+ "test:debugger": "mocha --inspect-brk tests/*",
18
+ "version-bump": "git commit -am \"Version bump to $(npm version patch | cut -c 2-)\""
19
+ },
20
+ "keywords": [],
21
+ "author": "",
22
+ "license": "ISC",
23
+ "dependencies": {
24
+ "@defisaver/tokens": "^1.7.15",
25
+ "@types/lodash": "^4.17.15",
26
+ "@types/memoizee": "^0.4.12",
27
+ "decimal.js": "^10.6.0",
28
+ "lodash": "^4.17.21",
29
+ "memoizee": "^0.4.17",
30
+ "viem": "^2.37.9",
31
+ "graphql-request": "^1.8.2"
32
+ },
33
+ "devDependencies": {
34
+ "@defisaver/eslint-config": "^1.0.1",
35
+ "@metamask/eth-json-rpc-middleware": "^15.0.1",
36
+ "@metamask/eth-json-rpc-provider": "^4.1.6",
37
+ "@types/chai": "^5.0.0",
38
+ "@types/mocha": "^10.0.9",
39
+ "chai": "^4.3.8",
40
+ "dotenv": "^16.3.1",
41
+ "eslint": "^8.49.0",
42
+ "eslint-plugin-import": "^2.31.0",
43
+ "mocha": "^10.2.0",
44
+ "nock": "^14.0.0",
45
+ "ts-node": "^10.9.2",
46
+ "typescript": "^5.2.2"
47
+ }
48
+ }