@ichidao/ichi-vaults-sdk 0.0.111 → 0.0.113
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 +3 -0
- package/dist/abis/types/ClPool.d.ts +986 -0
- package/dist/abis/types/ClPool.js +3 -0
- package/dist/abis/types/ClPool.js.map +1 -0
- package/dist/abis/types/factories/ClPool__factory.d.ts +1020 -0
- package/dist/abis/types/factories/ClPool__factory.js +1317 -0
- package/dist/abis/types/factories/ClPool__factory.js.map +1 -0
- package/dist/abis/types/factories/index.d.ts +1 -0
- package/dist/abis/types/factories/index.js +3 -1
- package/dist/abis/types/factories/index.js.map +1 -1
- package/dist/abis/types/index.d.ts +2 -0
- package/dist/abis/types/index.js +3 -1
- package/dist/abis/types/index.js.map +1 -1
- package/dist/src/abis/types/ClPool.d.ts +986 -0
- package/dist/src/abis/types/factories/ClPool__factory.d.ts +1020 -0
- package/dist/src/abis/types/factories/index.d.ts +1 -0
- package/dist/src/abis/types/index.d.ts +2 -0
- package/dist/src/contracts/index.d.ts +2 -1
- package/dist/src/contracts/index.js +11 -1
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/functions/priceFromPool.d.ts +2 -1
- package/dist/src/functions/priceFromPool.js +63 -33
- package/dist/src/functions/priceFromPool.js.map +1 -1
- package/dist/src/functions/vaultMetrics.js +31 -55
- package/dist/src/functions/vaultMetrics.js.map +1 -1
- package/dist/src/graphql/constants.js +57 -44
- package/dist/src/graphql/constants.js.map +1 -1
- package/dist/src/index.cjs.js +1 -1
- package/dist/src/index.esm.js +1 -1
- package/dist/src/src/contracts/index.d.ts +2 -1
- package/dist/src/src/functions/priceFromPool.d.ts +2 -1
- package/dist/src/src/types/index.d.ts +3 -0
- package/dist/src/src/utils/config/addresses.d.ts +4 -0
- package/dist/src/types/index.d.ts +3 -0
- package/dist/src/types/index.js +3 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/utils/config/addresses.d.ts +4 -0
- package/dist/src/utils/config/addresses.js +144 -118
- package/dist/src/utils/config/addresses.js.map +1 -1
- package/package.json +1 -1
@@ -3,5 +3,6 @@ export { ERC20__factory } from "./ERC20__factory";
|
|
3
3
|
export { IchiVault__factory } from "./IchiVault__factory";
|
4
4
|
export { AlgebraIntegralPool__factory } from "./AlgebraIntegralPool__factory";
|
5
5
|
export { AlgebraPool__factory } from "./AlgebraPool__factory";
|
6
|
+
export { ClPool__factory } from "./ClPool__factory";
|
6
7
|
export { Multicall__factory } from "./Multicall__factory";
|
7
8
|
export { UniswapV3Pool__factory } from "./UniswapV3Pool__factory";
|
@@ -3,11 +3,13 @@ export type { ERC20 } from "./ERC20";
|
|
3
3
|
export type { IchiVault } from "./IchiVault";
|
4
4
|
export type { AlgebraIntegralPool } from "./AlgebraIntegralPool";
|
5
5
|
export type { AlgebraPool } from "./AlgebraPool";
|
6
|
+
export type { ClPool } from "./ClPool";
|
6
7
|
export type { Multicall } from "./Multicall";
|
7
8
|
export type { UniswapV3Pool } from "./UniswapV3Pool";
|
8
9
|
export * as factories from "./factories";
|
9
10
|
export { AlgebraIntegralPool__factory } from "./factories/AlgebraIntegralPool__factory";
|
10
11
|
export { AlgebraPool__factory } from "./factories/AlgebraPool__factory";
|
12
|
+
export { ClPool__factory } from "./factories/ClPool__factory";
|
11
13
|
export { DepositGuard__factory } from "./factories/DepositGuard__factory";
|
12
14
|
export { ERC20__factory } from "./factories/ERC20__factory";
|
13
15
|
export { IchiVault__factory } from "./factories/IchiVault__factory";
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { JsonRpcProvider } from '@ethersproject/providers';
|
2
2
|
import { SignerOrProvider } from '../types';
|
3
|
-
import { ERC20, IchiVault, DepositGuard, UniswapV3Pool, AlgebraPool, AlgebraIntegralPool } from '../../abis/types';
|
3
|
+
import { ERC20, IchiVault, DepositGuard, UniswapV3Pool, AlgebraPool, AlgebraIntegralPool, ClPool } from '../../abis/types';
|
4
4
|
export declare function getERC20Contract(address: string, signerOrProvider: SignerOrProvider): ERC20;
|
5
5
|
export declare function getDepositGuardContract(address: string, signerOrProvider: SignerOrProvider): DepositGuard;
|
6
6
|
export declare function getIchiVaultContract(address: string, signerOrProvider: SignerOrProvider): IchiVault;
|
7
7
|
export declare function getUniswapV3PoolContract(address: string, provider: JsonRpcProvider): UniswapV3Pool;
|
8
8
|
export declare function getAlgebraPoolContract(address: string, provider: JsonRpcProvider): AlgebraPool;
|
9
9
|
export declare function getAlgebraIntegralPoolContract(address: string, provider: JsonRpcProvider): AlgebraIntegralPool;
|
10
|
+
export declare function getClPoolContract(address: string, provider: JsonRpcProvider): ClPool;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getAlgebraIntegralPoolContract = exports.getAlgebraPoolContract = exports.getUniswapV3PoolContract = exports.getIchiVaultContract = exports.getDepositGuardContract = exports.getERC20Contract = void 0;
|
3
|
+
exports.getClPoolContract = exports.getAlgebraIntegralPoolContract = exports.getAlgebraPoolContract = exports.getUniswapV3PoolContract = exports.getIchiVaultContract = exports.getDepositGuardContract = exports.getERC20Contract = void 0;
|
4
4
|
/* eslint-disable camelcase */
|
5
5
|
var address_1 = require("@ethersproject/address");
|
6
6
|
var types_1 = require("../../abis/types");
|
@@ -49,4 +49,14 @@ function getAlgebraIntegralPoolContract(address, provider) {
|
|
49
49
|
}
|
50
50
|
}
|
51
51
|
exports.getAlgebraIntegralPoolContract = getAlgebraIntegralPoolContract;
|
52
|
+
function getClPoolContract(address, provider) {
|
53
|
+
try {
|
54
|
+
return types_1.ClPool__factory.connect(address, provider);
|
55
|
+
}
|
56
|
+
catch (e) {
|
57
|
+
console.error("Couldn't create ClPool contract with address: ".concat(address));
|
58
|
+
throw e;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
exports.getClPoolContract = getClPoolContract;
|
52
62
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,kDAAoD;AAGpD,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,kDAAoD;AAGpD,0CAe0B;AAE1B,SAAgB,gBAAgB,CAAC,OAAe,EAAE,gBAAkC;IAClF,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;IACpB,OAAO,sBAAY,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACzD,CAAC;AAHD,4CAGC;AAED,SAAgB,uBAAuB,CAAC,OAAe,EAAE,gBAAkC;IACzF,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;IACpB,OAAO,6BAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAHD,0DAGC;AAED,SAAgB,oBAAoB,CAAC,OAAe,EAAE,gBAAkC;IACtF,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;IACpB,OAAO,0BAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC;AAHD,oDAGC;AAED,SAAgB,wBAAwB,CAAC,OAAe,EAAE,QAAyB;IACjF,IAAI;QACF,OAAO,8BAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC1D;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,+DAAwD,OAAO,CAAE,CAAC,CAAC;QACjF,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAPD,4DAOC;AACD,SAAgB,sBAAsB,CAAC,OAAe,EAAE,QAAyB;IAC/E,IAAI;QACF,OAAO,4BAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACxD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,6DAAsD,OAAO,CAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAPD,wDAOC;AACD,SAAgB,8BAA8B,CAAC,OAAe,EAAE,QAAyB;IACvF,IAAI;QACF,OAAO,oCAA4B,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAChE;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,qEAA8D,OAAO,CAAE,CAAC,CAAC;QACvF,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAPD,wEAOC;AACD,SAAgB,iBAAiB,CAAC,OAAe,EAAE,QAAyB;IAC1E,IAAI;QACF,OAAO,uBAAe,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,wDAAiD,OAAO,CAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AAPD,8CAOC"}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { JsonRpcProvider } from '@ethersproject/providers';
|
2
2
|
import { BigNumber } from '@ethersproject/bignumber';
|
3
3
|
import { IchiVault, SupportedChainId, SupportedDex } from '../types';
|
4
|
-
export declare function getSqrtPriceFromPool(
|
4
|
+
export declare function getSqrtPriceFromPool(poolAddress: string, jsonProvider: JsonRpcProvider, chainId: SupportedChainId, dex: SupportedDex): Promise<BigNumber>;
|
5
|
+
export declare function getSqrtPriceFromVault(vault: IchiVault, jsonProvider: JsonRpcProvider, chainId: SupportedChainId, dex: SupportedDex): Promise<BigNumber>;
|
5
6
|
export declare function getCurrPrice(vault: IchiVault, jsonProvider: JsonRpcProvider, chainId: SupportedChainId, dex: SupportedDex, isVaultInverted: boolean, token0decimals: number, token1decimals: number): Promise<number>;
|
6
7
|
export declare function getVaultTvl(vault: IchiVault, jsonProvider: JsonRpcProvider, chainId: SupportedChainId, dex: SupportedDex, isVaultInverted: boolean, token0decimals: number, token1decimals: number): Promise<number>;
|
7
8
|
export declare function getCurrLpPrice(vault: IchiVault, jsonProvider: JsonRpcProvider, dex: SupportedDex, chainId: SupportedChainId, isVaultInverted: boolean, token0decimals: number, token1decimals: number): Promise<number>;
|
@@ -41,7 +41,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
42
42
|
};
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
44
|
-
exports.getCurrentDtr = exports.getCurrLpPrice = exports.getVaultTvl = exports.getCurrPrice = exports.getSqrtPriceFromPool = void 0;
|
44
|
+
exports.getCurrentDtr = exports.getCurrLpPrice = exports.getVaultTvl = exports.getCurrPrice = exports.getSqrtPriceFromVault = exports.getSqrtPriceFromPool = void 0;
|
45
45
|
var types_1 = require("../types");
|
46
46
|
// eslint-disable-next-line import/no-cycle
|
47
47
|
var vault_1 = require("./vault");
|
@@ -50,58 +50,88 @@ var getPrice_1 = __importDefault(require("../utils/getPrice"));
|
|
50
50
|
var contracts_1 = require("../contracts");
|
51
51
|
var addresses_1 = require("../utils/config/addresses");
|
52
52
|
var _totalBalances_1 = require("./_totalBalances");
|
53
|
-
function getSqrtPriceFromPool(
|
54
|
-
var _a
|
53
|
+
function getSqrtPriceFromPool(poolAddress, jsonProvider, chainId, dex) {
|
54
|
+
var _a;
|
55
55
|
return __awaiter(this, void 0, void 0, function () {
|
56
|
-
var
|
57
|
-
return __generator(this, function (
|
58
|
-
switch (
|
56
|
+
var dexConfig, poolContract, globalState, poolContract, globalState, poolContract, slot0, poolContract, slot0, e_1;
|
57
|
+
return __generator(this, function (_b) {
|
58
|
+
switch (_b.label) {
|
59
59
|
case 0:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
if (!
|
66
|
-
if (!(
|
60
|
+
_b.trys.push([0, 10, , 11]);
|
61
|
+
dexConfig = (_a = addresses_1.addressConfig[chainId]) === null || _a === void 0 ? void 0 : _a[dex];
|
62
|
+
if (!dexConfig) {
|
63
|
+
throw new Error("Config not found for dex ".concat(dex, " on chain ").concat(chainId));
|
64
|
+
}
|
65
|
+
if (!dexConfig.isAlgebra) return [3 /*break*/, 5];
|
66
|
+
if (!(dexConfig.ammVersion === addresses_1.AMM_VERSIONS.ALGEBRA_INTEGRAL)) return [3 /*break*/, 2];
|
67
67
|
poolContract = (0, contracts_1.getAlgebraIntegralPoolContract)(poolAddress, jsonProvider);
|
68
68
|
return [4 /*yield*/, poolContract.globalState()];
|
69
|
-
case
|
70
|
-
globalState =
|
69
|
+
case 1:
|
70
|
+
globalState = _b.sent();
|
71
71
|
return [2 /*return*/, globalState[0]];
|
72
|
-
case
|
72
|
+
case 2:
|
73
73
|
poolContract = (0, contracts_1.getAlgebraPoolContract)(poolAddress, jsonProvider);
|
74
74
|
return [4 /*yield*/, poolContract.globalState()];
|
75
|
-
case
|
76
|
-
globalState =
|
75
|
+
case 3:
|
76
|
+
globalState = _b.sent();
|
77
77
|
return [2 /*return*/, globalState.price];
|
78
|
-
case
|
78
|
+
case 4: return [3 /*break*/, 9];
|
79
|
+
case 5:
|
80
|
+
if (!(dexConfig.ammVersion === addresses_1.AMM_VERSIONS.VELODROME)) return [3 /*break*/, 7];
|
81
|
+
poolContract = (0, contracts_1.getClPoolContract)(poolAddress, jsonProvider);
|
82
|
+
return [4 /*yield*/, poolContract.slot0()];
|
79
83
|
case 6:
|
84
|
+
slot0 = _b.sent();
|
85
|
+
return [2 /*return*/, slot0[0]];
|
86
|
+
case 7:
|
80
87
|
poolContract = (0, contracts_1.getUniswapV3PoolContract)(poolAddress, jsonProvider);
|
81
88
|
return [4 /*yield*/, poolContract.slot0()];
|
82
|
-
case
|
83
|
-
slot0 =
|
89
|
+
case 8:
|
90
|
+
slot0 = _b.sent();
|
84
91
|
return [2 /*return*/, slot0[0]];
|
85
|
-
case
|
86
|
-
case
|
87
|
-
e_1 =
|
88
|
-
console.error("Could not get price from
|
92
|
+
case 9: return [3 /*break*/, 11];
|
93
|
+
case 10:
|
94
|
+
e_1 = _b.sent();
|
95
|
+
console.error("Could not get price from pool ".concat(poolAddress));
|
89
96
|
throw e_1;
|
90
|
-
case
|
97
|
+
case 11: return [2 /*return*/];
|
91
98
|
}
|
92
99
|
});
|
93
100
|
});
|
94
101
|
}
|
95
102
|
exports.getSqrtPriceFromPool = getSqrtPriceFromPool;
|
103
|
+
function getSqrtPriceFromVault(vault, jsonProvider, chainId, dex) {
|
104
|
+
return __awaiter(this, void 0, void 0, function () {
|
105
|
+
var vaultContract, poolAddress, e_2;
|
106
|
+
return __generator(this, function (_a) {
|
107
|
+
switch (_a.label) {
|
108
|
+
case 0:
|
109
|
+
_a.trys.push([0, 3, , 4]);
|
110
|
+
vaultContract = (0, contracts_1.getIchiVaultContract)(vault.id, jsonProvider);
|
111
|
+
return [4 /*yield*/, vaultContract.pool()];
|
112
|
+
case 1:
|
113
|
+
poolAddress = _a.sent();
|
114
|
+
return [4 /*yield*/, getSqrtPriceFromPool(poolAddress, jsonProvider, chainId, dex)];
|
115
|
+
case 2: return [2 /*return*/, _a.sent()];
|
116
|
+
case 3:
|
117
|
+
e_2 = _a.sent();
|
118
|
+
console.error("Could not get price from vault ".concat(vault.id, " "));
|
119
|
+
throw e_2;
|
120
|
+
case 4: return [2 /*return*/];
|
121
|
+
}
|
122
|
+
});
|
123
|
+
});
|
124
|
+
}
|
125
|
+
exports.getSqrtPriceFromVault = getSqrtPriceFromVault;
|
96
126
|
// current price in pool of scarse token in deposit tokens
|
97
127
|
function getCurrPrice(vault, jsonProvider, chainId, dex, isVaultInverted, token0decimals, token1decimals) {
|
98
128
|
return __awaiter(this, void 0, void 0, function () {
|
99
|
-
var sqrtPrice, depositTokenDecimals, scarceTokenDecimals, price,
|
129
|
+
var sqrtPrice, depositTokenDecimals, scarceTokenDecimals, price, e_3;
|
100
130
|
return __generator(this, function (_a) {
|
101
131
|
switch (_a.label) {
|
102
132
|
case 0:
|
103
133
|
_a.trys.push([0, 2, , 3]);
|
104
|
-
return [4 /*yield*/,
|
134
|
+
return [4 /*yield*/, getSqrtPriceFromVault(vault, jsonProvider, chainId, dex)];
|
105
135
|
case 1:
|
106
136
|
sqrtPrice = _a.sent();
|
107
137
|
depositTokenDecimals = isVaultInverted ? token1decimals : token0decimals;
|
@@ -109,9 +139,9 @@ function getCurrPrice(vault, jsonProvider, chainId, dex, isVaultInverted, token0
|
|
109
139
|
price = (0, getPrice_1.default)(isVaultInverted, sqrtPrice, depositTokenDecimals, scarceTokenDecimals, 15);
|
110
140
|
return [2 /*return*/, price];
|
111
141
|
case 2:
|
112
|
-
|
142
|
+
e_3 = _a.sent();
|
113
143
|
console.error("Could not get price from vault ".concat(vault.id, " "));
|
114
|
-
throw
|
144
|
+
throw e_3;
|
115
145
|
case 3: return [2 /*return*/];
|
116
146
|
}
|
117
147
|
});
|
@@ -141,7 +171,7 @@ exports.getVaultTvl = getVaultTvl;
|
|
141
171
|
// current LP price in pool in deposit tokens
|
142
172
|
function getCurrLpPrice(vault, jsonProvider, dex, chainId, isVaultInverted, token0decimals, token1decimals) {
|
143
173
|
return __awaiter(this, void 0, void 0, function () {
|
144
|
-
var currTvl, totalSupply, result,
|
174
|
+
var currTvl, totalSupply, result, e_4;
|
145
175
|
return __generator(this, function (_a) {
|
146
176
|
switch (_a.label) {
|
147
177
|
case 0:
|
@@ -158,9 +188,9 @@ function getCurrLpPrice(vault, jsonProvider, dex, chainId, isVaultInverted, toke
|
|
158
188
|
result = currTvl / Number(totalSupply);
|
159
189
|
return [2 /*return*/, result];
|
160
190
|
case 3:
|
161
|
-
|
191
|
+
e_4 = _a.sent();
|
162
192
|
console.error("Could not get LP price from vault ".concat(vault.id, " "));
|
163
|
-
throw
|
193
|
+
throw e_4;
|
164
194
|
case 4: return [2 /*return*/];
|
165
195
|
}
|
166
196
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"priceFromPool.js","sourceRoot":"","sources":["../../../src/functions/priceFromPool.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIjD,kCAAqE;AACrE,2CAA2C;AAC3C,iCAA2C;AAC3C,iDAAkD;AAClD,+DAAyC;AACzC,
|
1
|
+
{"version":3,"file":"priceFromPool.js","sourceRoot":"","sources":["../../../src/functions/priceFromPool.ts"],"names":[],"mappings":"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"}
|
@@ -58,27 +58,25 @@ var timestamps_1 = require("../utils/timestamps");
|
|
58
58
|
var getPrice_1 = __importDefault(require("../utils/getPrice"));
|
59
59
|
var contracts_1 = require("../contracts");
|
60
60
|
var formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
|
61
|
-
var addresses_1 = require("../utils/config/addresses");
|
62
61
|
var calculateDtr_1 = require("./calculateDtr");
|
63
62
|
var calculateFees_1 = require("./calculateFees");
|
64
63
|
var calculateApr_1 = require("./calculateApr");
|
65
64
|
var _vaultEvents_1 = require("./_vaultEvents");
|
66
65
|
function getVaultMetrics(vaultAddress, jsonProvider, dex, timeIntervals) {
|
67
|
-
var _a, _b;
|
68
66
|
return __awaiter(this, void 0, void 0, function () {
|
69
|
-
var
|
70
|
-
var
|
71
|
-
return __generator(this, function (
|
72
|
-
switch (
|
67
|
+
var _a, chainId, vault, decimals0, decimals1, isInv, depositTokenDecimals, scarceTokenDecimals, vaultContract, arrDays, maxTimeInterval, currLpPrice, currTvl, totalAmountsBN, totalAmounts, poolAddress, sqrtPrice, price, totalSupplyBN, totalSupply, e_1, rebalances, collectedFees, deposits, withdraws, vaultEvents, arrRebalances, arrOtherFees, arrDeposits, arrWithdraws, currentDtr, allDtrs, result;
|
68
|
+
var _b;
|
69
|
+
return __generator(this, function (_c) {
|
70
|
+
switch (_c.label) {
|
73
71
|
case 0: return [4 /*yield*/, (0, vault_1.validateVaultData)(vaultAddress, jsonProvider, dex)];
|
74
72
|
case 1:
|
75
|
-
|
73
|
+
_a = _c.sent(), chainId = _a.chainId, vault = _a.vault;
|
76
74
|
return [4 /*yield*/, (0, _totalBalances_1.getTokenDecimals)(vault.tokenA, jsonProvider, chainId)];
|
77
75
|
case 2:
|
78
|
-
decimals0 =
|
76
|
+
decimals0 = _c.sent();
|
79
77
|
return [4 /*yield*/, (0, _totalBalances_1.getTokenDecimals)(vault.tokenB, jsonProvider, chainId)];
|
80
78
|
case 3:
|
81
|
-
decimals1 =
|
79
|
+
decimals1 = _c.sent();
|
82
80
|
isInv = vault.allowTokenB;
|
83
81
|
depositTokenDecimals = isInv ? decimals1 : decimals0;
|
84
82
|
scarceTokenDecimals = isInv ? decimals0 : decimals1;
|
@@ -87,81 +85,59 @@ function getVaultMetrics(vaultAddress, jsonProvider, dex, timeIntervals) {
|
|
87
85
|
maxTimeInterval = Math.max.apply(Math, arrDays);
|
88
86
|
currLpPrice = 0;
|
89
87
|
currTvl = 0;
|
90
|
-
|
88
|
+
_c.label = 4;
|
91
89
|
case 4:
|
92
|
-
|
90
|
+
_c.trys.push([4, 9, , 10]);
|
93
91
|
return [4 /*yield*/, vaultContract.getTotalAmounts()];
|
94
92
|
case 5:
|
95
|
-
totalAmountsBN =
|
93
|
+
totalAmountsBN = _c.sent();
|
96
94
|
totalAmounts = {
|
97
95
|
total0: (0, formatBigInt_1.default)(totalAmountsBN.total0, decimals0),
|
98
96
|
total1: (0, formatBigInt_1.default)(totalAmountsBN.total1, decimals1),
|
99
97
|
0: (0, formatBigInt_1.default)(totalAmountsBN.total0, decimals0),
|
100
98
|
1: (0, formatBigInt_1.default)(totalAmountsBN.total1, decimals1),
|
101
99
|
};
|
102
|
-
sqrtPrice = void 0;
|
103
100
|
return [4 /*yield*/, vaultContract.pool()];
|
104
101
|
case 6:
|
105
|
-
poolAddress =
|
106
|
-
|
107
|
-
if (!(((_b = addresses_1.addressConfig[chainId][dex]) === null || _b === void 0 ? void 0 : _b.ammVersion) === 'algebraIntegral')) return [3 /*break*/, 8];
|
108
|
-
poolContract = (0, contracts_1.getAlgebraIntegralPoolContract)(poolAddress, jsonProvider);
|
109
|
-
return [4 /*yield*/, poolContract.globalState()];
|
102
|
+
poolAddress = _c.sent();
|
103
|
+
return [4 /*yield*/, (0, priceFromPool_1.getSqrtPriceFromPool)(poolAddress, jsonProvider, chainId, dex)];
|
110
104
|
case 7:
|
111
|
-
|
112
|
-
sqrtPrice = globalState.price;
|
113
|
-
return [3 /*break*/, 10];
|
114
|
-
case 8:
|
115
|
-
poolContract = (0, contracts_1.getAlgebraPoolContract)(poolAddress, jsonProvider);
|
116
|
-
return [4 /*yield*/, poolContract.globalState()];
|
117
|
-
case 9:
|
118
|
-
globalState = _e.sent();
|
119
|
-
sqrtPrice = globalState.price;
|
120
|
-
_e.label = 10;
|
121
|
-
case 10: return [3 /*break*/, 13];
|
122
|
-
case 11:
|
123
|
-
poolContract = (0, contracts_1.getUniswapV3PoolContract)(poolAddress, jsonProvider);
|
124
|
-
return [4 /*yield*/, poolContract.slot0()];
|
125
|
-
case 12:
|
126
|
-
slot0 = _e.sent();
|
127
|
-
sqrtPrice = slot0.sqrtPriceX96;
|
128
|
-
_e.label = 13;
|
129
|
-
case 13:
|
105
|
+
sqrtPrice = _c.sent();
|
130
106
|
price = (0, getPrice_1.default)(isInv, sqrtPrice, depositTokenDecimals, scarceTokenDecimals, 15);
|
131
107
|
currTvl = !isInv
|
132
108
|
? Number(totalAmounts.total0) + Number(totalAmounts.total1) * price
|
133
109
|
: Number(totalAmounts.total1) + Number(totalAmounts.total0) * price;
|
134
110
|
return [4 /*yield*/, vaultContract.totalSupply()];
|
135
|
-
case
|
136
|
-
totalSupplyBN =
|
111
|
+
case 8:
|
112
|
+
totalSupplyBN = _c.sent();
|
137
113
|
totalSupply = (0, formatBigInt_1.default)(totalSupplyBN, types_1.ichiVaultDecimals);
|
138
114
|
if (Number(totalSupply) === 0) {
|
139
115
|
throw new Error("Could not get LP price. Vault total supply is 0 for vault ".concat(vaultAddress, " on chain ").concat(chainId));
|
140
116
|
}
|
141
117
|
currLpPrice = currTvl / Number(totalSupply);
|
142
|
-
return [3 /*break*/,
|
143
|
-
case
|
144
|
-
e_1 =
|
118
|
+
return [3 /*break*/, 10];
|
119
|
+
case 9:
|
120
|
+
e_1 = _c.sent();
|
145
121
|
console.error("Could not get LP price from vault ".concat(vaultAddress, " "));
|
146
122
|
throw e_1;
|
147
|
-
case
|
148
|
-
case
|
149
|
-
rebalances = (
|
123
|
+
case 10: return [4 /*yield*/, (0, _vaultEvents_1._getRebalances)(vaultAddress, chainId, dex)];
|
124
|
+
case 11:
|
125
|
+
rebalances = (_c.sent());
|
150
126
|
if (!rebalances)
|
151
127
|
throw new Error("Error getting vault rebalances on ".concat(chainId, " for ").concat(vaultAddress));
|
152
128
|
return [4 /*yield*/, (0, _vaultEvents_1._getFeesCollectedEvents)(vaultAddress, chainId, dex)];
|
153
|
-
case
|
154
|
-
collectedFees = (
|
129
|
+
case 12:
|
130
|
+
collectedFees = (_c.sent());
|
155
131
|
if (!collectedFees)
|
156
132
|
throw new Error("Error getting vault collected fees on ".concat(chainId, " for ").concat(vaultAddress));
|
157
133
|
return [4 /*yield*/, (0, _vaultEvents_1._getDeposits)(vaultAddress, chainId, dex)];
|
158
|
-
case
|
159
|
-
deposits = (
|
134
|
+
case 13:
|
135
|
+
deposits = (_c.sent());
|
160
136
|
if (!deposits)
|
161
137
|
throw new Error("Error getting vault deposits on ".concat(chainId, " for ").concat(vaultAddress));
|
162
138
|
return [4 /*yield*/, (0, _vaultEvents_1._getWithdraws)(vaultAddress, chainId, dex)];
|
163
|
-
case
|
164
|
-
withdraws = (
|
139
|
+
case 14:
|
140
|
+
withdraws = (_c.sent());
|
165
141
|
if (!withdraws)
|
166
142
|
throw new Error("Error getting vault withdraws on ".concat(chainId, " for ").concat(vaultAddress));
|
167
143
|
vaultEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], deposits, true), withdraws, true), rebalances, true), collectedFees, true).sort(function (a, b) { return Number(b.createdAtTimestamp) - Number(a.createdAtTimestamp); });
|
@@ -181,13 +157,13 @@ function getVaultMetrics(vaultAddress, jsonProvider, dex, timeIntervals) {
|
|
181
157
|
.slice()
|
182
158
|
.filter(function (r) { return Number(r.createdAtTimestamp) * 1000 > Date.now() - (0, timestamps_1.daysToMilliseconds)(maxTimeInterval); })
|
183
159
|
.map(function (e) { return (0, calculateDtr_1.getDtrAtTransactionEvent)(e, isInv, decimals0, decimals1); });
|
184
|
-
|
160
|
+
_b = {
|
185
161
|
atTimestamp: Math.floor(Date.now() / 1000).toString()
|
186
162
|
};
|
187
163
|
return [4 /*yield*/, (0, priceFromPool_1.getCurrentDtr)(vaultAddress, jsonProvider, dex, isInv, decimals0, decimals1)];
|
188
|
-
case
|
189
|
-
currentDtr = (
|
190
|
-
|
164
|
+
case 15:
|
165
|
+
currentDtr = (_b.percent = _c.sent(),
|
166
|
+
_b);
|
191
167
|
allDtrs = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], arrDeposits, true), arrWithdraws, true), arrRebalances, true), arrOtherFees, true), [currentDtr], false).sort(function (a, b) { return Number(b.atTimestamp) - Number(a.atTimestamp); });
|
192
168
|
result = [];
|
193
169
|
arrDays.forEach(function (d) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"vaultMetrics.js","sourceRoot":"","sources":["../../../src/functions/vaultMetrics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"vaultMetrics.js","sourceRoot":"","sources":["../../../src/functions/vaultMetrics.ts"],"names":[],"mappings":"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"}
|