@ichidao/ichi-vaults-sdk 0.1.43 → 2.0.0
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/README.md +61 -208
- package/dist/abis/types/AlgebraIntegralPool.d.ts +702 -793
- package/dist/abis/types/AlgebraPool.d.ts +693 -730
- package/dist/abis/types/ClPool.d.ts +789 -871
- package/dist/abis/types/DepositGuard.d.ts +193 -178
- package/dist/abis/types/DepositGuardWithHtsWrapping.d.ts +300 -297
- package/dist/abis/types/ERC20.d.ts +120 -147
- package/dist/abis/types/ERC20Wrapper.d.ts +147 -155
- package/dist/abis/types/IchiVault.d.ts +598 -728
- package/dist/abis/types/MultiFeeDistributer.d.ts +314 -423
- package/dist/abis/types/Multicall.d.ts +58 -73
- package/dist/abis/types/UniswapV3Pool.d.ts +654 -693
- package/dist/abis/types/common.d.ts +40 -12
- package/dist/abis/types/factories/AlgebraIntegralPool__factory.d.ts +2 -3
- package/dist/abis/types/factories/AlgebraIntegralPool__factory.js +10 -13
- package/dist/abis/types/factories/AlgebraIntegralPool__factory.js.map +1 -1
- package/dist/abis/types/factories/AlgebraPool__factory.d.ts +2 -3
- package/dist/abis/types/factories/AlgebraPool__factory.js +10 -13
- package/dist/abis/types/factories/AlgebraPool__factory.js.map +1 -1
- package/dist/abis/types/factories/ClPool__factory.d.ts +2 -3
- package/dist/abis/types/factories/ClPool__factory.js +10 -13
- package/dist/abis/types/factories/ClPool__factory.js.map +1 -1
- package/dist/abis/types/factories/DepositGuardWithHtsWrapping__factory.d.ts +2 -3
- package/dist/abis/types/factories/DepositGuardWithHtsWrapping__factory.js +10 -13
- package/dist/abis/types/factories/DepositGuardWithHtsWrapping__factory.js.map +1 -1
- package/dist/abis/types/factories/DepositGuard__factory.d.ts +2 -3
- package/dist/abis/types/factories/DepositGuard__factory.js +10 -13
- package/dist/abis/types/factories/DepositGuard__factory.js.map +1 -1
- package/dist/abis/types/factories/ERC20Wrapper__factory.d.ts +2 -3
- package/dist/abis/types/factories/ERC20Wrapper__factory.js +10 -13
- package/dist/abis/types/factories/ERC20Wrapper__factory.js.map +1 -1
- package/dist/abis/types/factories/ERC20__factory.d.ts +2 -3
- package/dist/abis/types/factories/ERC20__factory.js +10 -13
- package/dist/abis/types/factories/ERC20__factory.js.map +1 -1
- package/dist/abis/types/factories/IchiVault__factory.d.ts +2 -3
- package/dist/abis/types/factories/IchiVault__factory.js +10 -13
- package/dist/abis/types/factories/IchiVault__factory.js.map +1 -1
- package/dist/abis/types/factories/MultiFeeDistributer__factory.d.ts +2 -3
- package/dist/abis/types/factories/MultiFeeDistributer__factory.js +10 -13
- package/dist/abis/types/factories/MultiFeeDistributer__factory.js.map +1 -1
- package/dist/abis/types/factories/Multicall__factory.d.ts +2 -3
- package/dist/abis/types/factories/Multicall__factory.js +10 -13
- package/dist/abis/types/factories/Multicall__factory.js.map +1 -1
- package/dist/abis/types/factories/UniswapV3Pool__factory.d.ts +2 -3
- package/dist/abis/types/factories/UniswapV3Pool__factory.js +10 -13
- package/dist/abis/types/factories/UniswapV3Pool__factory.js.map +1 -1
- package/dist/src/__tests__/index.test.js +356 -738
- package/dist/src/__tests__/index.test.js.map +1 -1
- package/dist/src/abis/types/AlgebraIntegralPool.d.ts +702 -793
- package/dist/src/abis/types/AlgebraPool.d.ts +693 -730
- package/dist/src/abis/types/ClPool.d.ts +789 -871
- package/dist/src/abis/types/DepositGuard.d.ts +193 -178
- package/dist/src/abis/types/DepositGuardWithHtsWrapping.d.ts +300 -297
- package/dist/src/abis/types/ERC20.d.ts +120 -147
- package/dist/src/abis/types/ERC20Wrapper.d.ts +147 -155
- package/dist/src/abis/types/IchiVault.d.ts +598 -728
- package/dist/src/abis/types/MultiFeeDistributer.d.ts +314 -423
- package/dist/src/abis/types/Multicall.d.ts +58 -73
- package/dist/src/abis/types/UniswapV3Pool.d.ts +654 -693
- package/dist/src/abis/types/common.d.ts +40 -12
- package/dist/src/abis/types/factories/AlgebraIntegralPool__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/AlgebraPool__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/ClPool__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/DepositGuardWithHtsWrapping__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/DepositGuard__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/ERC20Wrapper__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/ERC20__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/IchiVault__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/MultiFeeDistributer__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/Multicall__factory.d.ts +2 -3
- package/dist/src/abis/types/factories/UniswapV3Pool__factory.d.ts +2 -3
- package/dist/src/contracts/index.d.ts +1 -1
- package/dist/src/contracts/index.js +12 -12
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/functions/_totalBalances.d.ts +2 -3
- package/dist/src/functions/_totalBalances.js +46 -117
- package/dist/src/functions/_totalBalances.js.map +1 -1
- package/dist/src/functions/_vaultEvents.js +347 -488
- package/dist/src/functions/_vaultEvents.js.map +1 -1
- package/dist/src/functions/_withdrawHelpers.d.ts +2 -3
- package/dist/src/functions/_withdrawHelpers.js +13 -62
- package/dist/src/functions/_withdrawHelpers.js.map +1 -1
- package/dist/src/functions/calculateApr.d.ts +1 -1
- package/dist/src/functions/calculateApr.js +77 -150
- package/dist/src/functions/calculateApr.js.map +1 -1
- package/dist/src/functions/calculateDtr.d.ts +1 -1
- package/dist/src/functions/calculateDtr.js +84 -169
- package/dist/src/functions/calculateDtr.js.map +1 -1
- package/dist/src/functions/calculateFees.d.ts +1 -1
- package/dist/src/functions/calculateFees.js +97 -172
- package/dist/src/functions/calculateFees.js.map +1 -1
- package/dist/src/functions/chains.js +6 -6
- package/dist/src/functions/chains.js.map +1 -1
- package/dist/src/functions/claimRewards.d.ts +3 -4
- package/dist/src/functions/claimRewards.js +29 -92
- package/dist/src/functions/claimRewards.js.map +1 -1
- package/dist/src/functions/deposit.d.ts +7 -9
- package/dist/src/functions/deposit.js +199 -364
- package/dist/src/functions/deposit.js.map +1 -1
- package/dist/src/functions/depositWithHtsWrapping.d.ts +4 -6
- package/dist/src/functions/depositWithHtsWrapping.js +109 -226
- package/dist/src/functions/depositWithHtsWrapping.js.map +1 -1
- package/dist/src/functions/getFeeAprs.d.ts +1 -1
- package/dist/src/functions/getFeeAprs.js +55 -111
- package/dist/src/functions/getFeeAprs.js.map +1 -1
- package/dist/src/functions/priceFromPool.d.ts +3 -4
- package/dist/src/functions/priceFromPool.js +99 -208
- package/dist/src/functions/priceFromPool.js.map +1 -1
- package/dist/src/functions/rewardInfo.js +79 -159
- package/dist/src/functions/rewardInfo.js.map +1 -1
- package/dist/src/functions/totalBalances.d.ts +2 -3
- package/dist/src/functions/totalBalances.js +14 -67
- package/dist/src/functions/totalBalances.js.map +1 -1
- package/dist/src/functions/userBalances.d.ts +2 -3
- package/dist/src/functions/userBalances.js +244 -368
- package/dist/src/functions/userBalances.js.map +1 -1
- package/dist/src/functions/userRewards.d.ts +1 -1
- package/dist/src/functions/userRewards.js +87 -145
- package/dist/src/functions/userRewards.js.map +1 -1
- package/dist/src/functions/vault.d.ts +1 -1
- package/dist/src/functions/vault.js +203 -383
- package/dist/src/functions/vault.js.map +1 -1
- package/dist/src/functions/vaultBasics.js +6 -7
- package/dist/src/functions/vaultBasics.js.map +1 -1
- package/dist/src/functions/vaultMetrics.d.ts +1 -1
- package/dist/src/functions/vaultMetrics.js +111 -189
- package/dist/src/functions/vaultMetrics.js.map +1 -1
- package/dist/src/functions/vaultPositions.d.ts +1 -1
- package/dist/src/functions/vaultPositions.js +69 -134
- package/dist/src/functions/vaultPositions.js.map +1 -1
- package/dist/src/functions/vaultTvl.d.ts +1 -1
- package/dist/src/functions/vaultTvl.js +80 -165
- package/dist/src/functions/vaultTvl.js.map +1 -1
- package/dist/src/functions/withdraw.d.ts +6 -8
- package/dist/src/functions/withdraw.js +165 -295
- package/dist/src/functions/withdraw.js.map +1 -1
- package/dist/src/functions/withdrawWithErc20Wrapping.d.ts +2 -4
- package/dist/src/functions/withdrawWithErc20Wrapping.js +59 -126
- package/dist/src/functions/withdrawWithErc20Wrapping.js.map +1 -1
- package/dist/src/graphql/constants.js +211 -212
- package/dist/src/graphql/constants.js.map +1 -1
- package/dist/src/graphql/functions.js +30 -102
- package/dist/src/graphql/functions.js.map +1 -1
- package/dist/src/graphql/queries.js +407 -42
- package/dist/src/graphql/queries.js.map +1 -1
- package/dist/src/index.cjs.js +2 -2
- package/dist/src/index.esm.js +2 -2
- package/dist/src/src/contracts/index.d.ts +1 -1
- package/dist/src/src/functions/_totalBalances.d.ts +2 -3
- package/dist/src/src/functions/_withdrawHelpers.d.ts +2 -3
- package/dist/src/src/functions/calculateApr.d.ts +1 -1
- package/dist/src/src/functions/calculateDtr.d.ts +1 -1
- package/dist/src/src/functions/calculateFees.d.ts +1 -1
- package/dist/src/src/functions/claimRewards.d.ts +3 -4
- package/dist/src/src/functions/deposit.d.ts +7 -9
- package/dist/src/src/functions/depositWithHtsWrapping.d.ts +4 -6
- package/dist/src/src/functions/getFeeAprs.d.ts +1 -1
- package/dist/src/src/functions/priceFromPool.d.ts +3 -4
- package/dist/src/src/functions/totalBalances.d.ts +2 -3
- package/dist/src/src/functions/userBalances.d.ts +2 -3
- package/dist/src/src/functions/userRewards.d.ts +1 -1
- package/dist/src/src/functions/vault.d.ts +1 -1
- package/dist/src/src/functions/vaultMetrics.d.ts +1 -1
- package/dist/src/src/functions/vaultPositions.d.ts +1 -1
- package/dist/src/src/functions/vaultTvl.d.ts +1 -1
- package/dist/src/src/functions/withdraw.d.ts +6 -8
- package/dist/src/src/functions/withdrawWithErc20Wrapping.d.ts +2 -4
- package/dist/src/src/types/calculateGasMargin.d.ts +1 -2
- package/dist/src/src/types/index.d.ts +11 -13
- package/dist/src/src/utils/amountWithSlippage.d.ts +1 -2
- package/dist/src/src/utils/config/addresses.d.ts +1 -1
- package/dist/src/src/utils/formatBigInt.d.ts +1 -2
- package/dist/src/src/utils/getPrice.d.ts +1 -2
- package/dist/src/src/utils/multicallUtils.d.ts +9 -10
- package/dist/src/src/utils/parseBigInt.d.ts +1 -2
- package/dist/src/types/calculateGasMargin.d.ts +1 -2
- package/dist/src/types/calculateGasMargin.js +4 -5
- package/dist/src/types/calculateGasMargin.js.map +1 -1
- package/dist/src/types/index.d.ts +11 -13
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/utils/amountWithSlippage.d.ts +1 -2
- package/dist/src/utils/amountWithSlippage.js +1 -1
- package/dist/src/utils/amountWithSlippage.js.map +1 -1
- package/dist/src/utils/cache.js +2 -2
- package/dist/src/utils/cache.js.map +1 -1
- package/dist/src/utils/config/addresses.d.ts +1 -1
- package/dist/src/utils/config/addresses.js +267 -268
- package/dist/src/utils/config/addresses.js.map +1 -1
- package/dist/src/utils/formatBigInt.d.ts +1 -2
- package/dist/src/utils/formatBigInt.js +4 -5
- package/dist/src/utils/formatBigInt.js.map +1 -1
- package/dist/src/utils/getConfigByFactory.js +24 -28
- package/dist/src/utils/getConfigByFactory.js.map +1 -1
- package/dist/src/utils/getGraphUrls.js +8 -12
- package/dist/src/utils/getGraphUrls.js.map +1 -1
- package/dist/src/utils/getPrice.d.ts +1 -2
- package/dist/src/utils/getPrice.js +5 -6
- package/dist/src/utils/getPrice.js.map +1 -1
- package/dist/src/utils/isVelodrome.js +2 -3
- package/dist/src/utils/isVelodrome.js.map +1 -1
- package/dist/src/utils/multicallUtils.d.ts +9 -10
- package/dist/src/utils/multicallUtils.js +38 -93
- package/dist/src/utils/multicallUtils.js.map +1 -1
- package/dist/src/utils/parseBigInt.d.ts +1 -2
- package/dist/src/utils/parseBigInt.js +5 -7
- package/dist/src/utils/parseBigInt.js.map +1 -1
- package/dist/src/utils/positionKey.js +2 -4
- package/dist/src/utils/positionKey.js.map +1 -1
- package/package.json +5 -17
|
@@ -1,62 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* eslint-disable no-redeclare */
|
|
3
3
|
/* eslint-disable import/prefer-default-export */
|
|
4
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
14
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
15
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
16
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
17
|
-
function step(op) {
|
|
18
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
19
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
20
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
21
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
22
|
-
switch (op[0]) {
|
|
23
|
-
case 0: case 1: t = op; break;
|
|
24
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
25
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
26
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
27
|
-
default:
|
|
28
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
29
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
30
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
31
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
32
|
-
if (t[2]) _.ops.pop();
|
|
33
|
-
_.trys.pop(); continue;
|
|
34
|
-
}
|
|
35
|
-
op = body.call(thisArg, _);
|
|
36
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
37
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
4
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
6
|
};
|
|
43
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
8
|
exports.getAllUserAmounts = exports.getUserAmounts = exports.getAllUserBalances = exports.sendUserBalancesQueryRequest = exports.getUserBalance = void 0;
|
|
45
|
-
var ethers_1 = require("ethers");
|
|
46
9
|
// eslint-disable-next-line import/no-unresolved
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
10
|
+
const graphql_request_1 = require("graphql-request");
|
|
11
|
+
const contracts_1 = require("../contracts");
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
|
|
51
14
|
// eslint-disable-next-line import/no-cycle
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
15
|
+
const vault_1 = require("./vault");
|
|
16
|
+
const queries_1 = require("../graphql/queries");
|
|
17
|
+
const parseBigInt_1 = __importDefault(require("../utils/parseBigInt"));
|
|
18
|
+
const getGraphUrls_1 = require("../utils/getGraphUrls");
|
|
19
|
+
const _totalBalances_1 = require("./_totalBalances");
|
|
20
|
+
const multicallUtils_1 = require("../utils/multicallUtils");
|
|
21
|
+
const isVelodrome_1 = require("../utils/isVelodrome");
|
|
22
|
+
const promises = {};
|
|
60
23
|
/**
|
|
61
24
|
* Helper function to get token address regardless of naming convention (token0/1 or tokenA/B)
|
|
62
25
|
* @param vault The vault object from API
|
|
@@ -72,345 +35,258 @@ function getTokenAddress(vault, index) {
|
|
|
72
35
|
}
|
|
73
36
|
}
|
|
74
37
|
// eslint-disable-next-line no-underscore-dangle
|
|
75
|
-
function _getUserBalance(accountAddress, vaultAddress, jsonProvider, farmingContract, raw) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
case 2:
|
|
89
|
-
shares = _b.apply(_a, [_c.sent()]);
|
|
90
|
-
return [3 /*break*/, 5];
|
|
91
|
-
case 3:
|
|
92
|
-
vaultContract = (0, contracts_1.getIchiVaultContract)(vaultAddress, jsonProvider);
|
|
93
|
-
return [4 /*yield*/, vaultContract.balanceOf(accountAddress)];
|
|
94
|
-
case 4:
|
|
95
|
-
shares = _c.sent();
|
|
96
|
-
_c.label = 5;
|
|
97
|
-
case 5: return [2 /*return*/, raw ? shares : (0, formatBigInt_1.default)(shares, types_1.ichiVaultDecimals)];
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
});
|
|
38
|
+
async function _getUserBalance(accountAddress, vaultAddress, jsonProvider, farmingContract, raw) {
|
|
39
|
+
let shares;
|
|
40
|
+
// if there is farmingContract, balance is the sum of staked and unstaked amounts
|
|
41
|
+
if (farmingContract) {
|
|
42
|
+
const vaultContract = (0, contracts_1.getIchiVaultContract)(vaultAddress, jsonProvider);
|
|
43
|
+
const mdfContract = (0, contracts_1.getMultiFeeDistributorContract)(farmingContract, jsonProvider);
|
|
44
|
+
shares = (await vaultContract.balanceOf(accountAddress)) + (await mdfContract.totalBalance(accountAddress));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const vaultContract = (0, contracts_1.getIchiVaultContract)(vaultAddress, jsonProvider);
|
|
48
|
+
shares = await vaultContract.balanceOf(accountAddress);
|
|
49
|
+
}
|
|
50
|
+
return raw ? shares : (0, formatBigInt_1.default)(shares, types_1.ichiVaultDecimals);
|
|
101
51
|
}
|
|
102
|
-
function getUserBalance(accountAddress, vaultAddress, jsonProvider, dex, raw) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
case 1:
|
|
109
|
-
vault = (_a.sent()).vault;
|
|
110
|
-
return [2 /*return*/, raw
|
|
111
|
-
? _getUserBalance(accountAddress, vaultAddress, jsonProvider, vault.farmingContract || null, true)
|
|
112
|
-
: _getUserBalance(accountAddress, vaultAddress, jsonProvider, vault.farmingContract || null)];
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
});
|
|
52
|
+
async function getUserBalance(accountAddress, vaultAddress, jsonProvider, dex, raw) {
|
|
53
|
+
// eslint-disable-next-line no-return-await
|
|
54
|
+
const { vault } = await (0, vault_1.validateVaultData)(vaultAddress, jsonProvider, dex);
|
|
55
|
+
return raw
|
|
56
|
+
? _getUserBalance(accountAddress, vaultAddress, jsonProvider, vault.farmingContract || null, true)
|
|
57
|
+
: _getUserBalance(accountAddress, vaultAddress, jsonProvider, vault.farmingContract || null);
|
|
116
58
|
}
|
|
117
59
|
exports.getUserBalance = getUserBalance;
|
|
118
|
-
function sendUserBalancesQueryRequest(url, accountAddress, query, vaultAddress) {
|
|
119
|
-
|
|
120
|
-
return
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
else {
|
|
131
|
-
return [2 /*return*/, (0, graphql_request_1.request)(url, query, {
|
|
132
|
-
accountAddress: accountAddress.toLowerCase(),
|
|
133
|
-
}).then(function (_a) {
|
|
134
|
-
var user = _a.user;
|
|
135
|
-
return user;
|
|
136
|
-
})];
|
|
137
|
-
}
|
|
138
|
-
return [2 /*return*/];
|
|
139
|
-
});
|
|
140
|
-
});
|
|
60
|
+
async function sendUserBalancesQueryRequest(url, accountAddress, query, vaultAddress) {
|
|
61
|
+
if (vaultAddress) {
|
|
62
|
+
return (0, graphql_request_1.request)(url, query, {
|
|
63
|
+
accountAddress: accountAddress.toLowerCase(),
|
|
64
|
+
vaultAddress: vaultAddress.toLowerCase(),
|
|
65
|
+
}).then(({ user }) => user);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return (0, graphql_request_1.request)(url, query, {
|
|
69
|
+
accountAddress: accountAddress.toLowerCase(),
|
|
70
|
+
}).then(({ user }) => user);
|
|
71
|
+
}
|
|
141
72
|
}
|
|
142
73
|
exports.sendUserBalancesQueryRequest = sendUserBalancesQueryRequest;
|
|
143
74
|
function storeResult(key, result) {
|
|
144
|
-
|
|
75
|
+
const cacheTtl = process.env.CACHE_TTL && !Number.isNaN(process.env.CACHE_TTL) ? Number(process.env.CACHE_TTL) : 120000; // 120000 = 2min
|
|
145
76
|
promises[key] = Promise.resolve(result);
|
|
146
|
-
setTimeout(
|
|
77
|
+
setTimeout(() => {
|
|
147
78
|
delete promises[key];
|
|
148
79
|
}, cacheTtl);
|
|
149
80
|
}
|
|
150
|
-
function getAllUserBalances(accountAddress, jsonProvider, dex, raw) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
strUserBalancesQuery = (0, queries_1.getUserBalancesQuery)(chainId, dex);
|
|
163
|
-
_b.label = 2;
|
|
164
|
-
case 2:
|
|
165
|
-
_b.trys.push([2, 6, , 11]);
|
|
166
|
-
if (!publishedUrl) return [3 /*break*/, 4];
|
|
167
|
-
return [4 /*yield*/, sendUserBalancesQueryRequest(publishedUrl, accountAddress, strUserBalancesQuery)];
|
|
168
|
-
case 3:
|
|
169
|
-
result = _b.sent();
|
|
170
|
-
storeResult(key, result);
|
|
171
|
-
return [3 /*break*/, 5];
|
|
172
|
-
case 4: throw new Error("Published URL is invalid for dex ".concat(dex, " on chain ").concat(chainId));
|
|
173
|
-
case 5: return [3 /*break*/, 11];
|
|
174
|
-
case 6:
|
|
175
|
-
error_1 = _b.sent();
|
|
176
|
-
if (publishedUrl) {
|
|
177
|
-
console.error('Request to published graph URL failed:', error_1);
|
|
178
|
-
}
|
|
179
|
-
_b.label = 7;
|
|
180
|
-
case 7:
|
|
181
|
-
_b.trys.push([7, 9, , 10]);
|
|
182
|
-
return [4 /*yield*/, sendUserBalancesQueryRequest(url, accountAddress, strUserBalancesQuery)];
|
|
183
|
-
case 8:
|
|
184
|
-
result = _b.sent();
|
|
185
|
-
storeResult(key, result);
|
|
186
|
-
return [3 /*break*/, 10];
|
|
187
|
-
case 9:
|
|
188
|
-
error2_1 = _b.sent();
|
|
189
|
-
console.error('Request to public graph URL failed:', error2_1);
|
|
190
|
-
throw new Error("Could not get user balances for ".concat(accountAddress, " on chain ").concat(chainId));
|
|
191
|
-
case 10: return [3 /*break*/, 11];
|
|
192
|
-
case 11: return [4 /*yield*/, promises[key]];
|
|
193
|
-
case 12:
|
|
194
|
-
balances = _b.sent();
|
|
195
|
-
if (balances) {
|
|
196
|
-
userBalances = balances.vaultShares;
|
|
197
|
-
shares = userBalances.map(function (balance) {
|
|
198
|
-
var vShares = isVelodrome
|
|
199
|
-
? (Number(balance.vaultShareBalance) + Number(balance.stakedVaultShareBalance)).toString()
|
|
200
|
-
: balance.vaultShareBalance;
|
|
201
|
-
return isVelodrome
|
|
202
|
-
? { vaultAddress: balance.vault.id, shares: vShares, stakedShares: balance.stakedVaultShareBalance }
|
|
203
|
-
: { vaultAddress: balance.vault.id, shares: balance.vaultShareBalance };
|
|
204
|
-
});
|
|
205
|
-
return [2 /*return*/, raw
|
|
206
|
-
? shares.map(function (s) {
|
|
207
|
-
return isVelodrome
|
|
208
|
-
? {
|
|
209
|
-
vaultAddress: s.vaultAddress,
|
|
210
|
-
shares: (0, parseBigInt_1.default)(s.shares, types_1.ichiVaultDecimals),
|
|
211
|
-
stakedShares: (0, parseBigInt_1.default)(s.stakedShares || '0', types_1.ichiVaultDecimals),
|
|
212
|
-
}
|
|
213
|
-
: { vaultAddress: s.vaultAddress, shares: (0, parseBigInt_1.default)(s.shares, types_1.ichiVaultDecimals) };
|
|
214
|
-
})
|
|
215
|
-
: shares];
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
return [2 /*return*/, []];
|
|
219
|
-
}
|
|
220
|
-
return [2 /*return*/];
|
|
81
|
+
async function getAllUserBalances(accountAddress, jsonProvider, dex, raw) {
|
|
82
|
+
const { chainId } = await (0, vault_1.getChainByProvider)(jsonProvider);
|
|
83
|
+
const { publishedUrl, url } = (0, getGraphUrls_1.getGraphUrls)(chainId, dex, true);
|
|
84
|
+
const isVelodrome = (0, isVelodrome_1.isVelodromeDex)(chainId, dex);
|
|
85
|
+
let shares;
|
|
86
|
+
const key = `${chainId + accountAddress}-balances`;
|
|
87
|
+
if (!Object.prototype.hasOwnProperty.call(promises, key)) {
|
|
88
|
+
const strUserBalancesQuery = (0, queries_1.getUserBalancesQuery)(chainId, dex);
|
|
89
|
+
try {
|
|
90
|
+
if (publishedUrl) {
|
|
91
|
+
const result = await sendUserBalancesQueryRequest(publishedUrl, accountAddress, strUserBalancesQuery);
|
|
92
|
+
storeResult(key, result);
|
|
221
93
|
}
|
|
94
|
+
else {
|
|
95
|
+
throw new Error(`Published URL is invalid for dex ${dex} on chain ${chainId}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (publishedUrl) {
|
|
100
|
+
console.error('Request to published graph URL failed:', error);
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const result = await sendUserBalancesQueryRequest(url, accountAddress, strUserBalancesQuery);
|
|
104
|
+
storeResult(key, result);
|
|
105
|
+
}
|
|
106
|
+
catch (error2) {
|
|
107
|
+
console.error('Request to public graph URL failed:', error2);
|
|
108
|
+
throw new Error(`Could not get user balances for ${accountAddress} on chain ${chainId}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const balances = await promises[key];
|
|
113
|
+
if (balances) {
|
|
114
|
+
const userBalances = balances.vaultShares;
|
|
115
|
+
shares = userBalances.map((balance) => {
|
|
116
|
+
const vShares = isVelodrome
|
|
117
|
+
? (Number(balance.vaultShareBalance) + Number(balance.stakedVaultShareBalance)).toString()
|
|
118
|
+
: balance.vaultShareBalance;
|
|
119
|
+
return isVelodrome
|
|
120
|
+
? { vaultAddress: balance.vault.id, shares: vShares, stakedShares: balance.stakedVaultShareBalance }
|
|
121
|
+
: { vaultAddress: balance.vault.id, shares: balance.vaultShareBalance };
|
|
222
122
|
});
|
|
223
|
-
|
|
123
|
+
return raw
|
|
124
|
+
? shares.map((s) => {
|
|
125
|
+
return isVelodrome
|
|
126
|
+
? {
|
|
127
|
+
vaultAddress: s.vaultAddress,
|
|
128
|
+
shares: (0, parseBigInt_1.default)(s.shares, types_1.ichiVaultDecimals),
|
|
129
|
+
stakedShares: (0, parseBigInt_1.default)(s.stakedShares || '0', types_1.ichiVaultDecimals),
|
|
130
|
+
}
|
|
131
|
+
: { vaultAddress: s.vaultAddress, shares: (0, parseBigInt_1.default)(s.shares, types_1.ichiVaultDecimals) };
|
|
132
|
+
})
|
|
133
|
+
: shares;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
224
138
|
}
|
|
225
139
|
exports.getAllUserBalances = getAllUserBalances;
|
|
226
|
-
function getUserAmounts(accountAddress, vaultAddress, jsonProvider, dex, raw) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
140
|
+
async function getUserAmounts(accountAddress, vaultAddress, jsonProvider, dex, raw) {
|
|
141
|
+
const { chainId, vault } = await (0, vault_1.validateVaultData)(vaultAddress, jsonProvider, dex);
|
|
142
|
+
const totalAmountsBN = await (0, _totalBalances_1._getTotalAmounts)(vault, jsonProvider, chainId, true);
|
|
143
|
+
const totalSupplyBN = await (0, _totalBalances_1._getTotalSupply)(vaultAddress, jsonProvider, true);
|
|
144
|
+
const userBalanceBN = await _getUserBalance(accountAddress, vaultAddress, jsonProvider, vault.farmingContract || null, true);
|
|
145
|
+
if (totalSupplyBN !== 0n) {
|
|
146
|
+
const userAmountsBN = {
|
|
147
|
+
amount0: (userBalanceBN * totalAmountsBN[0]) / totalSupplyBN,
|
|
148
|
+
amount1: (userBalanceBN * totalAmountsBN[1]) / totalSupplyBN,
|
|
149
|
+
0: (userBalanceBN * totalAmountsBN[0]) / totalSupplyBN,
|
|
150
|
+
1: (userBalanceBN * totalAmountsBN[1]) / totalSupplyBN,
|
|
151
|
+
};
|
|
152
|
+
if (!raw) {
|
|
153
|
+
const token0Decimals = await (0, _totalBalances_1.getTokenDecimals)(vault.tokenA, jsonProvider, chainId);
|
|
154
|
+
const token1Decimals = await (0, _totalBalances_1.getTokenDecimals)(vault.tokenB, jsonProvider, chainId);
|
|
155
|
+
const userAmounts = {
|
|
156
|
+
amount0: (0, formatBigInt_1.default)(userAmountsBN.amount0, token0Decimals),
|
|
157
|
+
amount1: (0, formatBigInt_1.default)(userAmountsBN.amount1, token1Decimals),
|
|
158
|
+
0: (0, formatBigInt_1.default)(userAmountsBN.amount0, token0Decimals),
|
|
159
|
+
1: (0, formatBigInt_1.default)(userAmountsBN.amount1, token1Decimals),
|
|
160
|
+
};
|
|
161
|
+
return userAmounts;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return userAmountsBN;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (!raw) {
|
|
168
|
+
return {
|
|
169
|
+
amount0: '0',
|
|
170
|
+
amount1: '0',
|
|
171
|
+
0: '0',
|
|
172
|
+
1: '0',
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
return {
|
|
177
|
+
amount0: 0n,
|
|
178
|
+
amount1: 0n,
|
|
179
|
+
0: 0n,
|
|
180
|
+
1: 0n,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.getUserAmounts = getUserAmounts;
|
|
185
|
+
async function getAllUserAmounts(accountAddress, jsonProvider, dex, raw) {
|
|
186
|
+
const { chainId } = await (0, vault_1.getChainByProvider)(jsonProvider);
|
|
187
|
+
const { publishedUrl, url } = (0, getGraphUrls_1.getGraphUrls)(chainId, dex, true);
|
|
188
|
+
const key = `${chainId + accountAddress}-all-user-amounts`;
|
|
189
|
+
if (!Object.prototype.hasOwnProperty.call(promises, key)) {
|
|
190
|
+
const strUserBalancesQuery = (0, queries_1.getUserBalancesQuery)(chainId, dex);
|
|
191
|
+
try {
|
|
192
|
+
if (publishedUrl) {
|
|
193
|
+
const result = await sendUserBalancesQueryRequest(publishedUrl, accountAddress, strUserBalancesQuery);
|
|
194
|
+
storeResult(key, result);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
throw new Error(`Published URL is invalid for dex ${dex} on chain ${chainId}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
if (publishedUrl) {
|
|
202
|
+
console.error('Request to published graph URL failed:', error);
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
const result = await sendUserBalancesQueryRequest(url, accountAddress, strUserBalancesQuery);
|
|
206
|
+
storeResult(key, result);
|
|
207
|
+
}
|
|
208
|
+
catch (error2) {
|
|
209
|
+
console.error('Request to public graph URL failed:', error2);
|
|
210
|
+
throw new Error(`Could not get user balances for ${accountAddress} on chain ${chainId}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const balances = await promises[key];
|
|
216
|
+
if (!balances?.vaultShares?.length) {
|
|
217
|
+
return [];
|
|
218
|
+
}
|
|
219
|
+
// Prepare multicall calls
|
|
220
|
+
const calls = balances.vaultShares.flatMap((share) => {
|
|
221
|
+
// Normalize token naming by checking which properties exist
|
|
222
|
+
const token0Address = getTokenAddress(share.vault, 0);
|
|
223
|
+
const token1Address = getTokenAddress(share.vault, 1);
|
|
224
|
+
return [
|
|
225
|
+
(0, multicallUtils_1.encodeTotalAmountsCall)(share.vault.id),
|
|
226
|
+
(0, multicallUtils_1.encodeTotalSupplyCall)(share.vault.id),
|
|
227
|
+
(0, multicallUtils_1.encodeDecimalsCall)(token0Address),
|
|
228
|
+
(0, multicallUtils_1.encodeDecimalsCall)(token1Address),
|
|
229
|
+
];
|
|
230
|
+
});
|
|
231
|
+
// Execute multicall
|
|
232
|
+
const results = await (0, multicallUtils_1.multicall)(calls, chainId, jsonProvider);
|
|
233
|
+
// Process results
|
|
234
|
+
const processedResults = balances.vaultShares.map((share, index) => {
|
|
235
|
+
const baseIndex = index * 4;
|
|
236
|
+
const totalAmounts = (0, multicallUtils_1.decodeTotalAmountsResult)(results[baseIndex], share.vault.id);
|
|
237
|
+
const totalSupply = (0, multicallUtils_1.decodeTotalSupplyResult)(results[baseIndex + 1], share.vault.id);
|
|
238
|
+
const token0Address = getTokenAddress(share.vault, 0);
|
|
239
|
+
const token1Address = getTokenAddress(share.vault, 1);
|
|
240
|
+
const token0Decimals = (0, multicallUtils_1.decodeDecimalsResult)(results[baseIndex + 2], token0Address);
|
|
241
|
+
const token1Decimals = (0, multicallUtils_1.decodeDecimalsResult)(results[baseIndex + 3], token1Address);
|
|
242
|
+
const userBalance = (0, parseBigInt_1.default)(share.vaultShareBalance, types_1.ichiVaultDecimals);
|
|
243
|
+
if (totalSupply !== 0n) {
|
|
244
|
+
const amount0 = (userBalance * totalAmounts.total0) / totalSupply;
|
|
245
|
+
const amount1 = (userBalance * totalAmounts.total1) / totalSupply;
|
|
246
|
+
if (!raw) {
|
|
247
|
+
const userAmounts = {
|
|
248
|
+
amount0: (0, formatBigInt_1.default)(amount0, token0Decimals),
|
|
249
|
+
amount1: (0, formatBigInt_1.default)(amount1, token1Decimals),
|
|
250
|
+
0: (0, formatBigInt_1.default)(amount0, token0Decimals),
|
|
251
|
+
1: (0, formatBigInt_1.default)(amount1, token1Decimals),
|
|
249
252
|
};
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
amount0: (0, formatBigInt_1.default)(userAmountsBN.amount0, token0Decimals),
|
|
259
|
-
amount1: (0, formatBigInt_1.default)(userAmountsBN.amount1, token1Decimals),
|
|
260
|
-
0: (0, formatBigInt_1.default)(userAmountsBN.amount0, token0Decimals),
|
|
261
|
-
1: (0, formatBigInt_1.default)(userAmountsBN.amount1, token1Decimals),
|
|
253
|
+
return { vaultAddress: share.vault.id, userAmounts };
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
const userAmountsBN = {
|
|
257
|
+
amount0,
|
|
258
|
+
amount1,
|
|
259
|
+
0: amount0,
|
|
260
|
+
1: amount1,
|
|
262
261
|
};
|
|
263
|
-
return
|
|
264
|
-
|
|
265
|
-
case 8: return [3 /*break*/, 10];
|
|
266
|
-
case 9:
|
|
267
|
-
if (!raw) {
|
|
268
|
-
return [2 /*return*/, {
|
|
269
|
-
amount0: '0',
|
|
270
|
-
amount1: '0',
|
|
271
|
-
0: '0',
|
|
272
|
-
1: '0',
|
|
273
|
-
}];
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
return [2 /*return*/, {
|
|
277
|
-
amount0: ethers_1.BigNumber.from(0),
|
|
278
|
-
amount1: ethers_1.BigNumber.from(0),
|
|
279
|
-
0: ethers_1.BigNumber.from(0),
|
|
280
|
-
1: ethers_1.BigNumber.from(0),
|
|
281
|
-
}];
|
|
282
|
-
}
|
|
283
|
-
_b.label = 10;
|
|
284
|
-
case 10: return [2 /*return*/];
|
|
262
|
+
return { vaultAddress: share.vault.id, userAmounts: userAmountsBN };
|
|
263
|
+
}
|
|
285
264
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
switch (_c.label) {
|
|
296
|
-
case 0: return [4 /*yield*/, (0, vault_1.getChainByProvider)(jsonProvider)];
|
|
297
|
-
case 1:
|
|
298
|
-
chainId = (_c.sent()).chainId;
|
|
299
|
-
_b = (0, getGraphUrls_1.getGraphUrls)(chainId, dex, true), publishedUrl = _b.publishedUrl, url = _b.url;
|
|
300
|
-
key = "".concat(chainId + accountAddress, "-all-user-amounts");
|
|
301
|
-
if (!!Object.prototype.hasOwnProperty.call(promises, key)) return [3 /*break*/, 11];
|
|
302
|
-
strUserBalancesQuery = (0, queries_1.getUserBalancesQuery)(chainId, dex);
|
|
303
|
-
_c.label = 2;
|
|
304
|
-
case 2:
|
|
305
|
-
_c.trys.push([2, 6, , 11]);
|
|
306
|
-
if (!publishedUrl) return [3 /*break*/, 4];
|
|
307
|
-
return [4 /*yield*/, sendUserBalancesQueryRequest(publishedUrl, accountAddress, strUserBalancesQuery)];
|
|
308
|
-
case 3:
|
|
309
|
-
result = _c.sent();
|
|
310
|
-
storeResult(key, result);
|
|
311
|
-
return [3 /*break*/, 5];
|
|
312
|
-
case 4: throw new Error("Published URL is invalid for dex ".concat(dex, " on chain ").concat(chainId));
|
|
313
|
-
case 5: return [3 /*break*/, 11];
|
|
314
|
-
case 6:
|
|
315
|
-
error_2 = _c.sent();
|
|
316
|
-
if (publishedUrl) {
|
|
317
|
-
console.error('Request to published graph URL failed:', error_2);
|
|
318
|
-
}
|
|
319
|
-
_c.label = 7;
|
|
320
|
-
case 7:
|
|
321
|
-
_c.trys.push([7, 9, , 10]);
|
|
322
|
-
return [4 /*yield*/, sendUserBalancesQueryRequest(url, accountAddress, strUserBalancesQuery)];
|
|
323
|
-
case 8:
|
|
324
|
-
result = _c.sent();
|
|
325
|
-
storeResult(key, result);
|
|
326
|
-
return [3 /*break*/, 10];
|
|
327
|
-
case 9:
|
|
328
|
-
error2_2 = _c.sent();
|
|
329
|
-
console.error('Request to public graph URL failed:', error2_2);
|
|
330
|
-
throw new Error("Could not get user balances for ".concat(accountAddress, " on chain ").concat(chainId));
|
|
331
|
-
case 10: return [3 /*break*/, 11];
|
|
332
|
-
case 11:
|
|
333
|
-
_c.trys.push([11, 14, , 15]);
|
|
334
|
-
return [4 /*yield*/, promises[key]];
|
|
335
|
-
case 12:
|
|
336
|
-
balances = _c.sent();
|
|
337
|
-
if (!((_a = balances === null || balances === void 0 ? void 0 : balances.vaultShares) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
338
|
-
return [2 /*return*/, []];
|
|
339
|
-
}
|
|
340
|
-
calls = balances.vaultShares.flatMap(function (share) {
|
|
341
|
-
// Normalize token naming by checking which properties exist
|
|
342
|
-
var token0Address = getTokenAddress(share.vault, 0);
|
|
343
|
-
var token1Address = getTokenAddress(share.vault, 1);
|
|
344
|
-
return [
|
|
345
|
-
(0, multicallUtils_1.encodeTotalAmountsCall)(share.vault.id),
|
|
346
|
-
(0, multicallUtils_1.encodeTotalSupplyCall)(share.vault.id),
|
|
347
|
-
(0, multicallUtils_1.encodeDecimalsCall)(token0Address),
|
|
348
|
-
(0, multicallUtils_1.encodeDecimalsCall)(token1Address),
|
|
349
|
-
];
|
|
350
|
-
});
|
|
351
|
-
signer = jsonProvider.getSigner(accountAddress);
|
|
352
|
-
return [4 /*yield*/, (0, multicallUtils_1.multicall)(calls, chainId, signer)];
|
|
353
|
-
case 13:
|
|
354
|
-
results_1 = _c.sent();
|
|
355
|
-
processedResults = balances.vaultShares.map(function (share, index) {
|
|
356
|
-
var baseIndex = index * 4;
|
|
357
|
-
var totalAmounts = (0, multicallUtils_1.decodeTotalAmountsResult)(results_1[baseIndex], share.vault.id);
|
|
358
|
-
var totalSupply = (0, multicallUtils_1.decodeTotalSupplyResult)(results_1[baseIndex + 1], share.vault.id);
|
|
359
|
-
var token0Address = getTokenAddress(share.vault, 0);
|
|
360
|
-
var token1Address = getTokenAddress(share.vault, 1);
|
|
361
|
-
var token0Decimals = (0, multicallUtils_1.decodeDecimalsResult)(results_1[baseIndex + 2], token0Address);
|
|
362
|
-
var token1Decimals = (0, multicallUtils_1.decodeDecimalsResult)(results_1[baseIndex + 3], token1Address);
|
|
363
|
-
var userBalance = (0, parseBigInt_1.default)(share.vaultShareBalance, types_1.ichiVaultDecimals);
|
|
364
|
-
if (!totalSupply.isZero()) {
|
|
365
|
-
var amount0 = userBalance.mul(totalAmounts.total0).div(totalSupply);
|
|
366
|
-
var amount1 = userBalance.mul(totalAmounts.total1).div(totalSupply);
|
|
367
|
-
if (!raw) {
|
|
368
|
-
var userAmounts = {
|
|
369
|
-
amount0: (0, formatBigInt_1.default)(amount0, token0Decimals),
|
|
370
|
-
amount1: (0, formatBigInt_1.default)(amount1, token1Decimals),
|
|
371
|
-
0: (0, formatBigInt_1.default)(amount0, token0Decimals),
|
|
372
|
-
1: (0, formatBigInt_1.default)(amount1, token1Decimals),
|
|
373
|
-
};
|
|
374
|
-
return { vaultAddress: share.vault.id, userAmounts: userAmounts };
|
|
375
|
-
}
|
|
376
|
-
else {
|
|
377
|
-
var userAmountsBN = {
|
|
378
|
-
amount0: amount0,
|
|
379
|
-
amount1: amount1,
|
|
380
|
-
0: amount0,
|
|
381
|
-
1: amount1,
|
|
382
|
-
};
|
|
383
|
-
return { vaultAddress: share.vault.id, userAmounts: userAmountsBN };
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
return {
|
|
388
|
-
vaultAddress: share.vault.id,
|
|
389
|
-
userAmounts: !raw
|
|
390
|
-
? {
|
|
391
|
-
amount0: '0',
|
|
392
|
-
amount1: '0',
|
|
393
|
-
0: '0',
|
|
394
|
-
1: '0',
|
|
395
|
-
}
|
|
396
|
-
: {
|
|
397
|
-
amount0: ethers_1.BigNumber.from(0),
|
|
398
|
-
amount1: ethers_1.BigNumber.from(0),
|
|
399
|
-
0: ethers_1.BigNumber.from(0),
|
|
400
|
-
1: ethers_1.BigNumber.from(0),
|
|
401
|
-
},
|
|
402
|
-
};
|
|
265
|
+
else {
|
|
266
|
+
return {
|
|
267
|
+
vaultAddress: share.vault.id,
|
|
268
|
+
userAmounts: !raw
|
|
269
|
+
? {
|
|
270
|
+
amount0: '0',
|
|
271
|
+
amount1: '0',
|
|
272
|
+
0: '0',
|
|
273
|
+
1: '0',
|
|
403
274
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
275
|
+
: {
|
|
276
|
+
amount0: 0n,
|
|
277
|
+
amount1: 0n,
|
|
278
|
+
0: 0n,
|
|
279
|
+
1: 0n,
|
|
280
|
+
},
|
|
281
|
+
};
|
|
411
282
|
}
|
|
412
283
|
});
|
|
413
|
-
|
|
284
|
+
return processedResults;
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
console.error('Could not get user amounts', error);
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
414
290
|
}
|
|
415
291
|
exports.getAllUserAmounts = getAllUserAmounts;
|
|
416
292
|
//# sourceMappingURL=userBalances.js.map
|