@defisaver/positions-sdk 0.0.166-dev4 → 0.0.166-dev5

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.
@@ -34,7 +34,7 @@ export declare const EMPTY_EULER_V2_DATA: {
34
34
  hasBorrowInDifferentVault: boolean;
35
35
  addressSpaceTakenByAnotherAccount: boolean;
36
36
  };
37
- export declare const getEulerV2AccountData: (web3: Web3, network: NetworkNumber, address: string, extractedState: ({
37
+ export declare const getEulerV2AccountData: (web3: Web3, network: NetworkNumber, addressForPosition: string, ownerAddress: string, extractedState: ({
38
38
  selectedMarket: EulerV2Market;
39
39
  assetsData: EulerV2AssetsData;
40
40
  marketData: EulerV2MarketInfoData;
@@ -175,23 +175,23 @@ exports.EMPTY_EULER_V2_DATA = {
175
175
  hasBorrowInDifferentVault: false,
176
176
  addressSpaceTakenByAnotherAccount: false,
177
177
  };
178
- const getEulerV2AccountData = (web3, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
179
- if (!address)
178
+ const getEulerV2AccountData = (web3, network, addressForPosition, ownerAddress, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
179
+ if (!addressForPosition)
180
180
  throw new Error('No address provided');
181
181
  const { selectedMarket, assetsData, marketData, } = extractedState;
182
182
  let payload = Object.assign(Object.assign({}, exports.EMPTY_EULER_V2_DATA), { lastUpdated: Date.now() });
183
183
  const isInUSD = marketData.isInUSD;
184
184
  const parsingDecimals = isInUSD ? 18 : (0, tokens_1.getAssetInfoByAddress)(marketData.unitOfAccount).decimals;
185
185
  const contract = (0, contracts_1.EulerV2ViewContract)(web3, network);
186
- const loanData = yield contract.methods.getUserData(address).call();
186
+ const loanData = yield contract.methods.getUserData(addressForPosition).call();
187
187
  const usedAssets = {};
188
188
  // there is no user position check for a specific market, only global check
189
189
  // but we need to make sure it works for the UI and show position only for the selected market
190
190
  if (!(0, utils_1.compareAddresses)(loanData.borrowVault, selectedMarket.marketAddress)) {
191
- payload = Object.assign(Object.assign({}, payload), { borrowVault: constants_1.ZERO_ADDRESS, borrowAmountInUnit: '0', inLockDownMode: false, inPermitDisabledMode: false, hasBorrowInDifferentVault: !(0, utils_1.compareAddresses)(loanData.borrowVault, constants_1.ZERO_ADDRESS), addressSpaceTakenByAnotherAccount: !(0, utils_1.compareAddresses)(loanData.owner, address) && !(0, utils_1.compareAddresses)(loanData.owner, constants_1.ZERO_ADDRESS) });
191
+ payload = Object.assign(Object.assign({}, payload), { borrowVault: constants_1.ZERO_ADDRESS, borrowAmountInUnit: '0', inLockDownMode: false, inPermitDisabledMode: false, hasBorrowInDifferentVault: !(0, utils_1.compareAddresses)(loanData.borrowVault, constants_1.ZERO_ADDRESS), addressSpaceTakenByAnotherAccount: !(0, utils_1.compareAddresses)(loanData.owner, ownerAddress) && !(0, utils_1.compareAddresses)(loanData.owner, constants_1.ZERO_ADDRESS) });
192
192
  }
193
193
  else {
194
- payload = Object.assign(Object.assign({}, payload), { borrowVault: loanData.borrowVault, borrowAmountInUnit: loanData.borrowAmountInUnit, inLockDownMode: loanData.inLockDownMode, inPermitDisabledMode: loanData.inPermitDisabledMode, addressSpaceTakenByAnotherAccount: !(0, utils_1.compareAddresses)(loanData.owner, address) && !(0, utils_1.compareAddresses)(loanData.owner, constants_1.ZERO_ADDRESS) });
194
+ payload = Object.assign(Object.assign({}, payload), { borrowVault: loanData.borrowVault, borrowAmountInUnit: loanData.borrowAmountInUnit, inLockDownMode: loanData.inLockDownMode, inPermitDisabledMode: loanData.inPermitDisabledMode, addressSpaceTakenByAnotherAccount: !(0, utils_1.compareAddresses)(loanData.owner, ownerAddress) && !(0, utils_1.compareAddresses)(loanData.owner, constants_1.ZERO_ADDRESS) });
195
195
  const borrowedInUnit = (0, utils_1.getEthAmountForDecimals)(loanData.borrowAmountInUnit, parsingDecimals);
196
196
  const borrowedInAsset = (0, utils_1.getEthAmountForDecimals)(loanData.borrowAmountInAsset, marketData.decimals);
197
197
  const borrowVault = loanData.borrowVault;
@@ -208,7 +208,7 @@ const getEulerV2AccountData = (web3, network, address, extractedState) => __awai
208
208
  const suppliedInUnit = (0, utils_1.getEthAmountForDecimals)(collateral.collateralAmountInUnit, parsingDecimals);
209
209
  const suppliedInAsset = (0, utils_1.getEthAmountForDecimals)(collateral.collateralAmountInAsset, collInfo.decimals);
210
210
  const collateralAmountInUSD = (0, utils_1.getEthAmountForDecimals)(collateral.collateralAmountInUSD, 18);
211
- usedAssets[key] = Object.assign(Object.assign({}, exports.EMPTY_USED_ASSET), { collateral: true, isSupplied: true, supplied: suppliedInAsset, suppliedUsd: collateralAmountInUSD, vaultAddress: collateral.collateralVault, symbol: collInfo.symbol });
211
+ usedAssets[key] = Object.assign(Object.assign({}, exports.EMPTY_USED_ASSET), { collateral: true, isSupplied: !new decimal_js_1.default(suppliedInAsset).eq(0), supplied: suppliedInAsset, suppliedUsd: collateralAmountInUSD, vaultAddress: collateral.collateralVault, symbol: collInfo.symbol });
212
212
  });
213
213
  payload = Object.assign(Object.assign(Object.assign({}, payload), { usedAssets }), (0, eulerHelpers_1.getEulerV2AggregatedData)({
214
214
  usedAssets, assetsData, network,
@@ -200,6 +200,8 @@ const getApyAfterValuesEstimationEulerV2 = (actions, web3, network) => __awaiter
200
200
  target: eulerV2ViewContract.options.address,
201
201
  abiItem: eulerV2ViewContract.options.jsonInterface.find(({ name }) => name === 'getVaultInfoFull'),
202
202
  params: [vaultAddress],
203
+ // @DEV gas usage is HUGE if vault has a lot of collaterals, so be careful, this can break if they add more collaterals
204
+ gasLimit: 10000000,
203
205
  });
204
206
  });
205
207
  multicallData.push({
@@ -34,7 +34,7 @@ export declare const EMPTY_EULER_V2_DATA: {
34
34
  hasBorrowInDifferentVault: boolean;
35
35
  addressSpaceTakenByAnotherAccount: boolean;
36
36
  };
37
- export declare const getEulerV2AccountData: (web3: Web3, network: NetworkNumber, address: string, extractedState: ({
37
+ export declare const getEulerV2AccountData: (web3: Web3, network: NetworkNumber, addressForPosition: string, ownerAddress: string, extractedState: ({
38
38
  selectedMarket: EulerV2Market;
39
39
  assetsData: EulerV2AssetsData;
40
40
  marketData: EulerV2MarketInfoData;
@@ -168,23 +168,23 @@ export const EMPTY_EULER_V2_DATA = {
168
168
  hasBorrowInDifferentVault: false,
169
169
  addressSpaceTakenByAnotherAccount: false,
170
170
  };
171
- export const getEulerV2AccountData = (web3, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
172
- if (!address)
171
+ export const getEulerV2AccountData = (web3, network, addressForPosition, ownerAddress, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
172
+ if (!addressForPosition)
173
173
  throw new Error('No address provided');
174
174
  const { selectedMarket, assetsData, marketData, } = extractedState;
175
175
  let payload = Object.assign(Object.assign({}, EMPTY_EULER_V2_DATA), { lastUpdated: Date.now() });
176
176
  const isInUSD = marketData.isInUSD;
177
177
  const parsingDecimals = isInUSD ? 18 : getAssetInfoByAddress(marketData.unitOfAccount).decimals;
178
178
  const contract = EulerV2ViewContract(web3, network);
179
- const loanData = yield contract.methods.getUserData(address).call();
179
+ const loanData = yield contract.methods.getUserData(addressForPosition).call();
180
180
  const usedAssets = {};
181
181
  // there is no user position check for a specific market, only global check
182
182
  // but we need to make sure it works for the UI and show position only for the selected market
183
183
  if (!compareAddresses(loanData.borrowVault, selectedMarket.marketAddress)) {
184
- payload = Object.assign(Object.assign({}, payload), { borrowVault: ZERO_ADDRESS, borrowAmountInUnit: '0', inLockDownMode: false, inPermitDisabledMode: false, hasBorrowInDifferentVault: !compareAddresses(loanData.borrowVault, ZERO_ADDRESS), addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, address) && !compareAddresses(loanData.owner, ZERO_ADDRESS) });
184
+ payload = Object.assign(Object.assign({}, payload), { borrowVault: ZERO_ADDRESS, borrowAmountInUnit: '0', inLockDownMode: false, inPermitDisabledMode: false, hasBorrowInDifferentVault: !compareAddresses(loanData.borrowVault, ZERO_ADDRESS), addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, ownerAddress) && !compareAddresses(loanData.owner, ZERO_ADDRESS) });
185
185
  }
186
186
  else {
187
- payload = Object.assign(Object.assign({}, payload), { borrowVault: loanData.borrowVault, borrowAmountInUnit: loanData.borrowAmountInUnit, inLockDownMode: loanData.inLockDownMode, inPermitDisabledMode: loanData.inPermitDisabledMode, addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, address) && !compareAddresses(loanData.owner, ZERO_ADDRESS) });
187
+ payload = Object.assign(Object.assign({}, payload), { borrowVault: loanData.borrowVault, borrowAmountInUnit: loanData.borrowAmountInUnit, inLockDownMode: loanData.inLockDownMode, inPermitDisabledMode: loanData.inPermitDisabledMode, addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, ownerAddress) && !compareAddresses(loanData.owner, ZERO_ADDRESS) });
188
188
  const borrowedInUnit = getEthAmountForDecimals(loanData.borrowAmountInUnit, parsingDecimals);
189
189
  const borrowedInAsset = getEthAmountForDecimals(loanData.borrowAmountInAsset, marketData.decimals);
190
190
  const borrowVault = loanData.borrowVault;
@@ -201,7 +201,7 @@ export const getEulerV2AccountData = (web3, network, address, extractedState) =>
201
201
  const suppliedInUnit = getEthAmountForDecimals(collateral.collateralAmountInUnit, parsingDecimals);
202
202
  const suppliedInAsset = getEthAmountForDecimals(collateral.collateralAmountInAsset, collInfo.decimals);
203
203
  const collateralAmountInUSD = getEthAmountForDecimals(collateral.collateralAmountInUSD, 18);
204
- usedAssets[key] = Object.assign(Object.assign({}, EMPTY_USED_ASSET), { collateral: true, isSupplied: true, supplied: suppliedInAsset, suppliedUsd: collateralAmountInUSD, vaultAddress: collateral.collateralVault, symbol: collInfo.symbol });
204
+ usedAssets[key] = Object.assign(Object.assign({}, EMPTY_USED_ASSET), { collateral: true, isSupplied: !new Dec(suppliedInAsset).eq(0), supplied: suppliedInAsset, suppliedUsd: collateralAmountInUSD, vaultAddress: collateral.collateralVault, symbol: collInfo.symbol });
205
205
  });
206
206
  payload = Object.assign(Object.assign(Object.assign({}, payload), { usedAssets }), getEulerV2AggregatedData({
207
207
  usedAssets, assetsData, network,
@@ -188,6 +188,8 @@ export const getApyAfterValuesEstimationEulerV2 = (actions, web3, network) => __
188
188
  target: eulerV2ViewContract.options.address,
189
189
  abiItem: eulerV2ViewContract.options.jsonInterface.find(({ name }) => name === 'getVaultInfoFull'),
190
190
  params: [vaultAddress],
191
+ // @DEV gas usage is HUGE if vault has a lot of collaterals, so be careful, this can break if they add more collaterals
192
+ gasLimit: 10000000,
191
193
  });
192
194
  });
193
195
  multicallData.push({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "0.0.166-dev4",
3
+ "version": "0.0.166-dev5",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -205,14 +205,15 @@ export const EMPTY_EULER_V2_DATA = {
205
205
  export const getEulerV2AccountData = async (
206
206
  web3: Web3,
207
207
  network: NetworkNumber,
208
- address: string,
208
+ addressForPosition: string,
209
+ ownerAddress: string,
209
210
  extractedState: ({
210
211
  selectedMarket: EulerV2Market,
211
212
  assetsData: EulerV2AssetsData,
212
213
  marketData: EulerV2MarketInfoData,
213
214
  }),
214
215
  ): Promise<EulerV2PositionData> => {
215
- if (!address) throw new Error('No address provided');
216
+ if (!addressForPosition) throw new Error('No address provided');
216
217
 
217
218
  const {
218
219
  selectedMarket, assetsData, marketData,
@@ -228,7 +229,7 @@ export const getEulerV2AccountData = async (
228
229
  const parsingDecimals = isInUSD ? 18 : getAssetInfoByAddress(marketData.unitOfAccount).decimals;
229
230
  const contract = EulerV2ViewContract(web3, network);
230
231
 
231
- const loanData = await contract.methods.getUserData(address).call();
232
+ const loanData = await contract.methods.getUserData(addressForPosition).call();
232
233
  const usedAssets: EulerV2UsedAssets = {};
233
234
  // there is no user position check for a specific market, only global check
234
235
  // but we need to make sure it works for the UI and show position only for the selected market
@@ -240,7 +241,7 @@ export const getEulerV2AccountData = async (
240
241
  inLockDownMode: false,
241
242
  inPermitDisabledMode: false,
242
243
  hasBorrowInDifferentVault: !compareAddresses(loanData.borrowVault, ZERO_ADDRESS),
243
- addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, address) && !compareAddresses(loanData.owner, ZERO_ADDRESS),
244
+ addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, ownerAddress) && !compareAddresses(loanData.owner, ZERO_ADDRESS),
244
245
  };
245
246
  } else {
246
247
  payload = {
@@ -249,7 +250,7 @@ export const getEulerV2AccountData = async (
249
250
  borrowAmountInUnit: loanData.borrowAmountInUnit,
250
251
  inLockDownMode: loanData.inLockDownMode,
251
252
  inPermitDisabledMode: loanData.inPermitDisabledMode,
252
- addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, address) && !compareAddresses(loanData.owner, ZERO_ADDRESS),
253
+ addressSpaceTakenByAnotherAccount: !compareAddresses(loanData.owner, ownerAddress) && !compareAddresses(loanData.owner, ZERO_ADDRESS),
253
254
  };
254
255
 
255
256
  const borrowedInUnit = getEthAmountForDecimals(loanData.borrowAmountInUnit, parsingDecimals);
@@ -281,7 +282,7 @@ export const getEulerV2AccountData = async (
281
282
  usedAssets[key] = {
282
283
  ...EMPTY_USED_ASSET,
283
284
  collateral: true,
284
- isSupplied: true,
285
+ isSupplied: !new Dec(suppliedInAsset).eq(0),
285
286
  supplied: suppliedInAsset,
286
287
  suppliedUsd: collateralAmountInUSD,
287
288
  vaultAddress: collateral.collateralVault,
@@ -198,6 +198,8 @@ export const getApyAfterValuesEstimationEulerV2 = async (actions: { action: stri
198
198
  target: eulerV2ViewContract.options.address,
199
199
  abiItem: eulerV2ViewContract.options.jsonInterface.find(({ name }) => name === 'getVaultInfoFull'),
200
200
  params: [vaultAddress],
201
+ // @DEV gas usage is HUGE if vault has a lot of collaterals, so be careful, this can break if they add more collaterals
202
+ gasLimit: 10_000_000,
201
203
  });
202
204
  });
203
205
  multicallData.push({