@curvefi/api 2.53.6 → 2.53.8
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/lib/constants/volumeNetworks.d.ts +7 -0
- package/lib/constants/volumeNetworks.js +5 -0
- package/lib/external-api.d.ts +6 -27
- package/lib/external-api.js +94 -34
- package/lib/interfaces.d.ts +12 -0
- package/lib/pools/PoolTemplate.js +23 -61
- package/lib/utils.d.ts +2 -1
- package/lib/utils.js +26 -43
- package/package.json +1 -1
package/lib/external-api.d.ts
CHANGED
|
@@ -1,40 +1,19 @@
|
|
|
1
1
|
import memoize from "memoizee";
|
|
2
|
-
import { IExtendedPoolDataFromApi,
|
|
2
|
+
import { IExtendedPoolDataFromApi, IDict, INetworkName, IPoolType, IGaugesDataFromApi, IDaoProposal, IDaoProposalListItem, IVolumeAndAPYs } from "./interfaces";
|
|
3
3
|
export declare const _getPoolsFromApi: ((network: INetworkName, poolType: IPoolType) => Promise<IExtendedPoolDataFromApi>) & memoize.Memoized<(network: INetworkName, poolType: IPoolType) => Promise<IExtendedPoolDataFromApi>>;
|
|
4
4
|
export declare const _getAllPoolsFromApi: (network: INetworkName) => Promise<IExtendedPoolDataFromApi[]>;
|
|
5
|
-
export declare const _getSubgraphData: ((network: INetworkName) => Promise<
|
|
6
|
-
|
|
5
|
+
export declare const _getSubgraphData: ((network: INetworkName) => Promise<IVolumeAndAPYs>) & memoize.Memoized<(network: INetworkName) => Promise<IVolumeAndAPYs>>;
|
|
6
|
+
export declare const _getVolumes: ((network: string) => Promise<IVolumeAndAPYs>) & memoize.Memoized<(network: string) => Promise<IVolumeAndAPYs>>;
|
|
7
|
+
export declare const _getFactoryAPYs: ((network: string) => Promise<IVolumeAndAPYs>) & memoize.Memoized<(network: string) => Promise<IVolumeAndAPYs>>;
|
|
8
|
+
export declare const _getTotalVolumes: ((network: string) => Promise<{
|
|
7
9
|
totalVolume: number;
|
|
8
10
|
cryptoVolume: number;
|
|
9
11
|
cryptoShare: number;
|
|
10
|
-
}>) & memoize.Memoized<(network:
|
|
11
|
-
poolsData: ISubgraphPoolData[];
|
|
12
|
+
}>) & memoize.Memoized<(network: string) => Promise<{
|
|
12
13
|
totalVolume: number;
|
|
13
14
|
cryptoVolume: number;
|
|
14
15
|
cryptoShare: number;
|
|
15
16
|
}>>;
|
|
16
|
-
export declare const _getLegacyAPYsAndVolumes: ((network: string) => Promise<IDict<{
|
|
17
|
-
apy: {
|
|
18
|
-
day: number;
|
|
19
|
-
week: number;
|
|
20
|
-
};
|
|
21
|
-
volume: number;
|
|
22
|
-
}>>) & memoize.Memoized<(network: string) => Promise<IDict<{
|
|
23
|
-
apy: {
|
|
24
|
-
day: number;
|
|
25
|
-
week: number;
|
|
26
|
-
};
|
|
27
|
-
volume: number;
|
|
28
|
-
}>>>;
|
|
29
|
-
export declare const _getFactoryAPYsAndVolumes: ((network: string) => Promise<{
|
|
30
|
-
poolAddress: string;
|
|
31
|
-
apy: number;
|
|
32
|
-
volume: number;
|
|
33
|
-
}[]>) & memoize.Memoized<(network: string) => Promise<{
|
|
34
|
-
poolAddress: string;
|
|
35
|
-
apy: number;
|
|
36
|
-
volume: number;
|
|
37
|
-
}[]>>;
|
|
38
17
|
export declare const _getAllGauges: (() => Promise<IDict<IGaugesDataFromApi>>) & memoize.Memoized<() => Promise<IDict<IGaugesDataFromApi>>>;
|
|
39
18
|
export declare const _getHiddenPools: (() => Promise<IDict<string[]>>) & memoize.Memoized<() => Promise<IDict<string[]>>>;
|
|
40
19
|
export declare const _generateBoostingProof: ((block: number, address: string) => Promise<{
|
package/lib/external-api.js
CHANGED
|
@@ -34,6 +34,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
+
if (ar || !(i in from)) {
|
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
+
ar[i] = from[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
+
};
|
|
37
46
|
import axios from "axios";
|
|
38
47
|
import memoize from "memoizee";
|
|
39
48
|
export var _getPoolsFromApi = memoize(function (network, poolType) { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -71,20 +80,28 @@ export var _getAllPoolsFromApi = function (network) { return __awaiter(void 0, v
|
|
|
71
80
|
});
|
|
72
81
|
}); };
|
|
73
82
|
export var _getSubgraphData = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
74
|
-
var url, response;
|
|
75
|
-
var _a, _b, _c
|
|
76
|
-
return __generator(this, function (
|
|
77
|
-
switch (
|
|
83
|
+
var url, response, poolsData;
|
|
84
|
+
var _a, _b, _c;
|
|
85
|
+
return __generator(this, function (_d) {
|
|
86
|
+
switch (_d.label) {
|
|
78
87
|
case 0:
|
|
79
88
|
url = "https://api.curve.fi/api/getSubgraphData/".concat(network);
|
|
80
89
|
return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
|
|
81
90
|
case 1:
|
|
82
|
-
response =
|
|
91
|
+
response = _d.sent();
|
|
92
|
+
poolsData = response.data.data.poolList.map(function (item) {
|
|
93
|
+
return {
|
|
94
|
+
address: item.address,
|
|
95
|
+
volumeUSD: item.volumeUSD,
|
|
96
|
+
day: item.latestDailyApy,
|
|
97
|
+
week: item.latestWeeklyApy,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
83
100
|
return [2 /*return*/, {
|
|
84
|
-
poolsData:
|
|
85
|
-
totalVolume: (
|
|
86
|
-
cryptoVolume: (
|
|
87
|
-
cryptoShare: (
|
|
101
|
+
poolsData: poolsData !== null && poolsData !== void 0 ? poolsData : [],
|
|
102
|
+
totalVolume: (_a = response.data.data.totalVolume) !== null && _a !== void 0 ? _a : 0,
|
|
103
|
+
cryptoVolume: (_b = response.data.data.cryptoVolume) !== null && _b !== void 0 ? _b : 0,
|
|
104
|
+
cryptoShare: (_c = response.data.data.cryptoShare) !== null && _c !== void 0 ? _c : 0,
|
|
88
105
|
}];
|
|
89
106
|
}
|
|
90
107
|
});
|
|
@@ -92,46 +109,89 @@ export var _getSubgraphData = memoize(function (network) { return __awaiter(void
|
|
|
92
109
|
promise: true,
|
|
93
110
|
maxAge: 5 * 60 * 1000, // 5m
|
|
94
111
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
var
|
|
98
|
-
return __generator(this, function (
|
|
99
|
-
switch (
|
|
112
|
+
export var _getVolumes = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
113
|
+
var url, response, poolsData;
|
|
114
|
+
var _a, _b, _c;
|
|
115
|
+
return __generator(this, function (_d) {
|
|
116
|
+
switch (_d.label) {
|
|
100
117
|
case 0:
|
|
101
|
-
|
|
102
|
-
return [2 /*return*/, {}]; // Exclude Kava, Celo, ZkSync, Base and Bsc
|
|
103
|
-
url = "https://api.curve.fi/api/getMainPoolsAPYs/" + network;
|
|
118
|
+
url = "https://api.curve.fi/api/getVolumes/".concat(network);
|
|
104
119
|
return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
|
|
105
120
|
case 1:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
121
|
+
response = _d.sent();
|
|
122
|
+
poolsData = response.data.data.pools.map(function (item) {
|
|
123
|
+
return {
|
|
124
|
+
address: item.address,
|
|
125
|
+
volumeUSD: item.volumeUSD,
|
|
126
|
+
day: item.latestDailyApyPcent,
|
|
127
|
+
week: item.latestWeeklyApyPcent,
|
|
128
|
+
};
|
|
113
129
|
});
|
|
114
|
-
return [2 /*return*/,
|
|
130
|
+
return [2 /*return*/, {
|
|
131
|
+
poolsData: poolsData !== null && poolsData !== void 0 ? poolsData : [],
|
|
132
|
+
totalVolume: (_a = response.data.data.totalVolumes.totalVolume) !== null && _a !== void 0 ? _a : 0,
|
|
133
|
+
cryptoVolume: (_b = response.data.data.totalVolumes.totalCryptoVolume) !== null && _b !== void 0 ? _b : 0,
|
|
134
|
+
cryptoShare: (_c = response.data.data.totalVolumes.cryptoVolumeSharePcent) !== null && _c !== void 0 ? _c : 0,
|
|
135
|
+
}];
|
|
115
136
|
}
|
|
116
137
|
});
|
|
117
138
|
}); }, {
|
|
118
139
|
promise: true,
|
|
119
140
|
maxAge: 5 * 60 * 1000, // 5m
|
|
120
141
|
});
|
|
121
|
-
|
|
122
|
-
|
|
142
|
+
export var _getFactoryAPYs = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
143
|
+
var urlStable, urlCrypto, response, stableVolume, cryptoVolume, poolsData;
|
|
144
|
+
var _a, _b;
|
|
145
|
+
return __generator(this, function (_c) {
|
|
146
|
+
switch (_c.label) {
|
|
147
|
+
case 0:
|
|
148
|
+
urlStable = "getFactoryAPYs/".concat(network, "/stable}");
|
|
149
|
+
urlCrypto = "getFactoryAPYs/".concat(network, "/crypto}");
|
|
150
|
+
return [4 /*yield*/, Promise.all([
|
|
151
|
+
axios.get(urlStable, { validateStatus: function () { return true; } }),
|
|
152
|
+
axios.get(urlCrypto, { validateStatus: function () { return true; } }),
|
|
153
|
+
])];
|
|
154
|
+
case 1:
|
|
155
|
+
response = _c.sent();
|
|
156
|
+
stableVolume = response[0].data.data.totalVolumeUsd || response[0].data.data.totalVolume;
|
|
157
|
+
cryptoVolume = response[1].data.data.totalVolumeUsd || response[1].data.data.totalVolume;
|
|
158
|
+
poolsData = __spreadArray(__spreadArray([], response[0].data.data.pools, true), response[1].data.data.pools, true).map(function (item) {
|
|
159
|
+
return {
|
|
160
|
+
address: item.poolAddress,
|
|
161
|
+
volumeUSD: item.totalVolumeUsd,
|
|
162
|
+
day: item.apy,
|
|
163
|
+
week: item.apy * 7, //Because api does not return week apy
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
return [2 /*return*/, {
|
|
167
|
+
poolsData: poolsData !== null && poolsData !== void 0 ? poolsData : [],
|
|
168
|
+
totalVolume: (_a = stableVolume + cryptoVolume) !== null && _a !== void 0 ? _a : 0,
|
|
169
|
+
cryptoVolume: cryptoVolume !== null && cryptoVolume !== void 0 ? cryptoVolume : 0,
|
|
170
|
+
cryptoShare: (_b = 100 * cryptoVolume / (stableVolume + cryptoVolume)) !== null && _b !== void 0 ? _b : 0,
|
|
171
|
+
}];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}); }, {
|
|
175
|
+
promise: true,
|
|
176
|
+
maxAge: 5 * 60 * 1000, // 5m
|
|
177
|
+
});
|
|
178
|
+
//4
|
|
179
|
+
export var _getTotalVolumes = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
123
180
|
var url, response;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
switch (_b.label) {
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
switch (_a.label) {
|
|
127
183
|
case 0:
|
|
128
184
|
if (network === "aurora")
|
|
129
|
-
return [2 /*return*/,
|
|
130
|
-
|
|
185
|
+
return [2 /*return*/, {
|
|
186
|
+
totalVolume: 0,
|
|
187
|
+
cryptoVolume: 0,
|
|
188
|
+
cryptoShare: 0,
|
|
189
|
+
}]; // Exclude Aurora
|
|
190
|
+
url = "https://api.curve.fi/api/getSubgraphData/".concat(network);
|
|
131
191
|
return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
|
|
132
192
|
case 1:
|
|
133
|
-
response =
|
|
134
|
-
return [2 /*return*/,
|
|
193
|
+
response = _a.sent();
|
|
194
|
+
return [2 /*return*/, response.data.data];
|
|
135
195
|
}
|
|
136
196
|
});
|
|
137
197
|
}); }, {
|
package/lib/interfaces.d.ts
CHANGED
|
@@ -247,3 +247,15 @@ export interface IDaoProposal extends IDaoProposalListItem {
|
|
|
247
247
|
script: string;
|
|
248
248
|
votes: IDaoProposalVote[];
|
|
249
249
|
}
|
|
250
|
+
export interface IVolumeAndAPYsPoolData {
|
|
251
|
+
address: string;
|
|
252
|
+
volumeUSD: number;
|
|
253
|
+
day: number;
|
|
254
|
+
week: number;
|
|
255
|
+
}
|
|
256
|
+
export interface IVolumeAndAPYs {
|
|
257
|
+
totalVolume: number;
|
|
258
|
+
cryptoVolume: number;
|
|
259
|
+
cryptoShare: number;
|
|
260
|
+
poolsData: IVolumeAndAPYsPoolData[];
|
|
261
|
+
}
|
|
@@ -55,8 +55,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
55
55
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
56
56
|
};
|
|
57
57
|
import memoize from "memoizee";
|
|
58
|
-
import { _getPoolsFromApi
|
|
59
|
-
import { _getCoinAddresses, _getBalances, _prepareAddresses, _ensureAllowance, _getUsdRate, hasAllowance, ensureAllowance, ensureAllowanceEstimateGas, BN, toBN, toStringFromBN, parseUnits, getEthIndex, fromBN, _cutZeros, _setContracts, _get_small_x, _get_price_impact, checkNumber, _getCrvApyFromApi, _getRewardsFromApi, mulBy1_3, smartNumber, DIGas, _getAddress, isMethodExist, } from '../utils.js';
|
|
58
|
+
import { _getPoolsFromApi } from '../external-api.js';
|
|
59
|
+
import { _getCoinAddresses, _getBalances, _prepareAddresses, _ensureAllowance, _getUsdRate, hasAllowance, ensureAllowance, ensureAllowanceEstimateGas, BN, toBN, toStringFromBN, parseUnits, getEthIndex, fromBN, _cutZeros, _setContracts, _get_small_x, _get_price_impact, checkNumber, _getCrvApyFromApi, _getRewardsFromApi, mulBy1_3, smartNumber, DIGas, _getAddress, isMethodExist, getVolumeApiController, } from '../utils.js';
|
|
60
60
|
import { curve } from "../curve.js";
|
|
61
61
|
import ERC20Abi from '../constants/abis/ERC20.json' assert { type: 'json' };
|
|
62
62
|
var DAY = 86400;
|
|
@@ -217,79 +217,41 @@ var PoolTemplate = /** @class */ (function () {
|
|
|
217
217
|
});
|
|
218
218
|
};
|
|
219
219
|
this.statsVolume = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
220
|
-
var
|
|
220
|
+
var network, poolsData, poolData;
|
|
221
221
|
var _this = this;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
switch (_e.label) {
|
|
222
|
+
return __generator(this, function (_c) {
|
|
223
|
+
switch (_c.label) {
|
|
225
224
|
case 0:
|
|
226
|
-
if (![56, 324, 1284, 2222, 8453, 42220, 1313161554].includes(curve.chainId)) return [3 /*break*/, 3];
|
|
227
|
-
return [4 /*yield*/, Promise.all([
|
|
228
|
-
_getLegacyAPYsAndVolumes(curve.constants.NETWORK_NAME),
|
|
229
|
-
_getFactoryAPYsAndVolumes(curve.constants.NETWORK_NAME),
|
|
230
|
-
])];
|
|
231
|
-
case 1:
|
|
232
|
-
_c = _e.sent(), mainPoolsData = _c[0], factoryPoolsData = _c[1];
|
|
233
|
-
if (this.id in mainPoolsData) {
|
|
234
|
-
return [2 /*return*/, ((_d = mainPoolsData[this.id].volume) !== null && _d !== void 0 ? _d : 0).toString()];
|
|
235
|
-
}
|
|
236
|
-
poolData_1 = factoryPoolsData.find(function (d) { return d.poolAddress.toLowerCase() === _this.address; });
|
|
237
|
-
if (!poolData_1)
|
|
238
|
-
throw Error("Can't get Volume for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
239
|
-
return [4 /*yield*/, _getUsdRate(this.lpToken)];
|
|
240
|
-
case 2:
|
|
241
|
-
lpPrice = _e.sent();
|
|
242
|
-
return [2 /*return*/, (poolData_1.volume * lpPrice).toString()];
|
|
243
|
-
case 3:
|
|
244
225
|
network = curve.constants.NETWORK_NAME;
|
|
245
|
-
return [4 /*yield*/,
|
|
246
|
-
case
|
|
247
|
-
poolsData = (
|
|
226
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
227
|
+
case 1:
|
|
228
|
+
poolsData = (_c.sent()).poolsData;
|
|
248
229
|
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
249
|
-
if (
|
|
250
|
-
|
|
251
|
-
|
|
230
|
+
if (poolData) {
|
|
231
|
+
return [2 /*return*/, poolData.volumeUSD.toString()];
|
|
232
|
+
}
|
|
233
|
+
throw Error("Can't get Volume for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
252
234
|
}
|
|
253
235
|
});
|
|
254
236
|
}); };
|
|
255
237
|
this.statsBaseApy = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
256
|
-
var
|
|
238
|
+
var network, poolsData, poolData;
|
|
257
239
|
var _this = this;
|
|
258
|
-
return __generator(this, function (
|
|
259
|
-
switch (
|
|
240
|
+
return __generator(this, function (_c) {
|
|
241
|
+
switch (_c.label) {
|
|
260
242
|
case 0:
|
|
261
|
-
|
|
262
|
-
return [4 /*yield*/,
|
|
263
|
-
_getLegacyAPYsAndVolumes(curve.constants.NETWORK_NAME),
|
|
264
|
-
_getFactoryAPYsAndVolumes(curve.constants.NETWORK_NAME),
|
|
265
|
-
])];
|
|
243
|
+
network = curve.constants.NETWORK_NAME;
|
|
244
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
266
245
|
case 1:
|
|
267
|
-
|
|
268
|
-
|
|
246
|
+
poolsData = (_c.sent()).poolsData;
|
|
247
|
+
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
248
|
+
if (poolData) {
|
|
269
249
|
return [2 /*return*/, {
|
|
270
|
-
day:
|
|
271
|
-
week:
|
|
250
|
+
day: poolData.day.toString(),
|
|
251
|
+
week: poolData.week.toString(),
|
|
272
252
|
}];
|
|
273
253
|
}
|
|
274
|
-
|
|
275
|
-
if (!poolData_2)
|
|
276
|
-
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
277
|
-
return [2 /*return*/, {
|
|
278
|
-
day: poolData_2.apy.toString(),
|
|
279
|
-
week: poolData_2.apy.toString(),
|
|
280
|
-
}];
|
|
281
|
-
case 2:
|
|
282
|
-
network = curve.constants.NETWORK_NAME;
|
|
283
|
-
return [4 /*yield*/, _getSubgraphData(network)];
|
|
284
|
-
case 3:
|
|
285
|
-
poolsData = (_d.sent()).poolsData;
|
|
286
|
-
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
287
|
-
if (!poolData)
|
|
288
|
-
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
289
|
-
return [2 /*return*/, {
|
|
290
|
-
day: poolData.latestDailyApy.toString(),
|
|
291
|
-
week: poolData.latestWeeklyApy.toString(),
|
|
292
|
-
}];
|
|
254
|
+
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
293
255
|
}
|
|
294
256
|
});
|
|
295
257
|
}); };
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Contract } from 'ethers';
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
|
-
import { IChainId, IDict, INetworkName, IRewardFromApi, REFERENCE_ASSET } from './interfaces';
|
|
3
|
+
import { IChainId, IDict, INetworkName, IRewardFromApi, IVolumeAndAPYs, REFERENCE_ASSET } from './interfaces';
|
|
4
4
|
export declare const ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
5
5
|
export declare const MAX_ALLOWANCE: bigint;
|
|
6
6
|
export declare const _cutZeros: (strn: string) => string;
|
|
@@ -41,6 +41,7 @@ export declare const getGasPriceFromL1: () => Promise<number>;
|
|
|
41
41
|
export declare const getGasPriceFromL2: () => Promise<number>;
|
|
42
42
|
export declare const getTxCostsUsd: (ethUsdRate: number, gasPrice: number, gas: number | number[], gasPriceL1?: number) => number;
|
|
43
43
|
export declare const getTVL: (network?: INetworkName | IChainId) => Promise<number>;
|
|
44
|
+
export declare const getVolumeApiController: (network: INetworkName) => Promise<IVolumeAndAPYs>;
|
|
44
45
|
export declare const getVolume: (network?: INetworkName | IChainId) => Promise<{
|
|
45
46
|
totalVolume: number;
|
|
46
47
|
cryptoVolume: number;
|
package/lib/utils.js
CHANGED
|
@@ -59,9 +59,10 @@ import { Contract } from 'ethers';
|
|
|
59
59
|
import { Contract as MulticallContract } from "ethcall";
|
|
60
60
|
import BigNumber from 'bignumber.js';
|
|
61
61
|
import { curve, NETWORK_CONSTANTS } from "./curve.js";
|
|
62
|
-
import {
|
|
62
|
+
import { _getAllPoolsFromApi, _getFactoryAPYs, _getSubgraphData, _getVolumes, } from "./external-api.js";
|
|
63
63
|
import ERC20Abi from './constants/abis/ERC20.json' assert { type: 'json' };
|
|
64
64
|
import { L2Networks } from './constants/L2Networks.js';
|
|
65
|
+
import { volumeNetworks } from "./constants/volumeNetworks";
|
|
65
66
|
export var ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
66
67
|
// export const MAX_ALLOWANCE = curve.parseUnits(new BigNumber(2).pow(256).minus(1).toFixed(), 0);
|
|
67
68
|
export var MAX_ALLOWANCE = BigInt("115792089237316195423570985008687907853269984665640564039457584007913129639935"); // 2**256 - 1
|
|
@@ -778,54 +779,36 @@ export var getTVL = function (network) {
|
|
|
778
779
|
});
|
|
779
780
|
});
|
|
780
781
|
};
|
|
782
|
+
export var getVolumeApiController = function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
783
|
+
return __generator(this, function (_a) {
|
|
784
|
+
switch (_a.label) {
|
|
785
|
+
case 0:
|
|
786
|
+
if (!volumeNetworks.getVolumes.includes(curve.chainId)) return [3 /*break*/, 2];
|
|
787
|
+
return [4 /*yield*/, _getVolumes(network)];
|
|
788
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
789
|
+
case 2:
|
|
790
|
+
if (!volumeNetworks.getFactoryAPYs.includes(curve.chainId)) return [3 /*break*/, 4];
|
|
791
|
+
return [4 /*yield*/, _getFactoryAPYs(network)];
|
|
792
|
+
case 3: return [2 /*return*/, _a.sent()];
|
|
793
|
+
case 4:
|
|
794
|
+
if (!volumeNetworks.getSubgraphData.includes(curve.chainId)) return [3 /*break*/, 6];
|
|
795
|
+
return [4 /*yield*/, _getSubgraphData(network)];
|
|
796
|
+
case 5: return [2 /*return*/, _a.sent()];
|
|
797
|
+
case 6: throw Error("Can't get volume for network: ".concat(network));
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
}); };
|
|
781
801
|
export var getVolume = function (network) {
|
|
782
802
|
if (network === void 0) { network = curve.chainId; }
|
|
783
803
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
784
|
-
var
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
switch (_e.label) {
|
|
804
|
+
var _a, totalVolume, cryptoVolume, cryptoShare;
|
|
805
|
+
return __generator(this, function (_b) {
|
|
806
|
+
switch (_b.label) {
|
|
788
807
|
case 0:
|
|
789
808
|
network = _getNetworkName(network);
|
|
790
|
-
|
|
791
|
-
chainId = _getChainId(network);
|
|
792
|
-
if (curve.chainId !== chainId)
|
|
793
|
-
throw Error("To get volume for ZkSync, Moonbeam, Kava, Base, Celo, Aurora or Bsc connect to the network first");
|
|
794
|
-
return [4 /*yield*/, Promise.all([
|
|
795
|
-
_getLegacyAPYsAndVolumes(network),
|
|
796
|
-
_getFactoryAPYsAndVolumes(network),
|
|
797
|
-
])];
|
|
809
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
798
810
|
case 1:
|
|
799
|
-
_a =
|
|
800
|
-
volume = 0;
|
|
801
|
-
for (id in mainPoolsData) {
|
|
802
|
-
volume += (_d = mainPoolsData[id].volume) !== null && _d !== void 0 ? _d : 0;
|
|
803
|
-
}
|
|
804
|
-
_i = 0, factoryPoolsData_1 = factoryPoolsData;
|
|
805
|
-
_e.label = 2;
|
|
806
|
-
case 2:
|
|
807
|
-
if (!(_i < factoryPoolsData_1.length)) return [3 /*break*/, 7];
|
|
808
|
-
pool = factoryPoolsData_1[_i];
|
|
809
|
-
lpToken = _getTokenAddressBySwapAddress(pool.poolAddress);
|
|
810
|
-
if (!lpToken) return [3 /*break*/, 4];
|
|
811
|
-
return [4 /*yield*/, _getUsdRate(lpToken)];
|
|
812
|
-
case 3:
|
|
813
|
-
_b = _e.sent();
|
|
814
|
-
return [3 /*break*/, 5];
|
|
815
|
-
case 4:
|
|
816
|
-
_b = 0;
|
|
817
|
-
_e.label = 5;
|
|
818
|
-
case 5:
|
|
819
|
-
lpPrice = _b;
|
|
820
|
-
volume += pool.volume * lpPrice;
|
|
821
|
-
_e.label = 6;
|
|
822
|
-
case 6:
|
|
823
|
-
_i++;
|
|
824
|
-
return [3 /*break*/, 2];
|
|
825
|
-
case 7: return [2 /*return*/, { totalVolume: volume, cryptoVolume: 0, cryptoShare: 0 }];
|
|
826
|
-
case 8: return [4 /*yield*/, _getSubgraphData(network)];
|
|
827
|
-
case 9:
|
|
828
|
-
_c = _e.sent(), totalVolume = _c.totalVolume, cryptoVolume = _c.cryptoVolume, cryptoShare = _c.cryptoShare;
|
|
811
|
+
_a = _b.sent(), totalVolume = _a.totalVolume, cryptoVolume = _a.cryptoVolume, cryptoShare = _a.cryptoShare;
|
|
829
812
|
return [2 /*return*/, { totalVolume: totalVolume, cryptoVolume: cryptoVolume, cryptoShare: cryptoShare }];
|
|
830
813
|
}
|
|
831
814
|
});
|