@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.
- package/cjs/eulerV2/index.d.ts +1 -1
- package/cjs/eulerV2/index.js +6 -6
- package/cjs/helpers/eulerHelpers/index.js +2 -0
- package/esm/eulerV2/index.d.ts +1 -1
- package/esm/eulerV2/index.js +6 -6
- package/esm/helpers/eulerHelpers/index.js +2 -0
- package/package.json +1 -1
- package/src/eulerV2/index.ts +7 -6
- package/src/helpers/eulerHelpers/index.ts +2 -0
package/cjs/eulerV2/index.d.ts
CHANGED
|
@@ -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,
|
|
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;
|
package/cjs/eulerV2/index.js
CHANGED
|
@@ -175,23 +175,23 @@ exports.EMPTY_EULER_V2_DATA = {
|
|
|
175
175
|
hasBorrowInDifferentVault: false,
|
|
176
176
|
addressSpaceTakenByAnotherAccount: false,
|
|
177
177
|
};
|
|
178
|
-
const getEulerV2AccountData = (web3, network,
|
|
179
|
-
if (!
|
|
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(
|
|
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,
|
|
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,
|
|
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:
|
|
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({
|
package/esm/eulerV2/index.d.ts
CHANGED
|
@@ -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,
|
|
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;
|
package/esm/eulerV2/index.js
CHANGED
|
@@ -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,
|
|
172
|
-
if (!
|
|
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(
|
|
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,
|
|
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,
|
|
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:
|
|
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
package/src/eulerV2/index.ts
CHANGED
|
@@ -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
|
-
|
|
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 (!
|
|
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(
|
|
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,
|
|
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,
|
|
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:
|
|
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({
|