@curvefi/api 2.53.7 → 2.53.9
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 -32
- package/lib/external-api.js +98 -61
- package/lib/interfaces.d.ts +12 -0
- package/lib/pools/PoolTemplate.js +23 -65
- package/lib/utils.d.ts +2 -1
- package/lib/utils.js +26 -19
- package/package.json +1 -1
package/lib/external-api.d.ts
CHANGED
|
@@ -1,45 +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, mode?: 'stable' | 'crypto') => Promise<{
|
|
30
|
-
poolAddress: string;
|
|
31
|
-
apy: number;
|
|
32
|
-
volume: number;
|
|
33
|
-
}[]>) & memoize.Memoized<(network: string, mode?: 'stable' | 'crypto') => Promise<{
|
|
34
|
-
poolAddress: string;
|
|
35
|
-
apy: number;
|
|
36
|
-
volume: number;
|
|
37
|
-
}[]>>;
|
|
38
|
-
export declare const _getTotalVolumes: ((network: string, mode?: 'stable' | 'crypto') => Promise<{
|
|
39
|
-
totalVolumeUsd: number;
|
|
40
|
-
}>) & memoize.Memoized<(network: string, mode?: 'stable' | 'crypto') => Promise<{
|
|
41
|
-
totalVolumeUsd: number;
|
|
42
|
-
}>>;
|
|
43
17
|
export declare const _getAllGauges: (() => Promise<IDict<IGaugesDataFromApi>>) & memoize.Memoized<() => Promise<IDict<IGaugesDataFromApi>>>;
|
|
44
18
|
export declare const _getHiddenPools: (() => Promise<IDict<string[]>>) & memoize.Memoized<() => Promise<IDict<string[]>>>;
|
|
45
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,73 +109,93 @@ 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
|
-
|
|
123
|
-
|
|
124
|
-
return
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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;
|
|
145
|
+
return __generator(this, function (_b) {
|
|
146
|
+
switch (_b.label) {
|
|
147
|
+
case 0:
|
|
148
|
+
urlStable = "https://api.curve.fi/api/getFactoryAPYs/".concat(network, "/stable");
|
|
149
|
+
urlCrypto = "https://api.curve.fi/api/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 = _b.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.poolDetails, true), response[1].data.data.poolDetails, true).map(function (item) {
|
|
159
|
+
var _a, _b, _c;
|
|
160
|
+
return {
|
|
161
|
+
address: item.poolAddress,
|
|
162
|
+
volumeUSD: (_a = item.totalVolumeUsd) !== null && _a !== void 0 ? _a : 0,
|
|
163
|
+
day: (_b = item.apy) !== null && _b !== void 0 ? _b : 0,
|
|
164
|
+
week: (_c = item.apy * 7) !== null && _c !== void 0 ? _c : 0, //Because api does not return week apy
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
return [2 /*return*/, {
|
|
168
|
+
poolsData: poolsData !== null && poolsData !== void 0 ? poolsData : [],
|
|
169
|
+
totalVolume: (_a = stableVolume + cryptoVolume) !== null && _a !== void 0 ? _a : 0,
|
|
170
|
+
cryptoVolume: cryptoVolume !== null && cryptoVolume !== void 0 ? cryptoVolume : 0,
|
|
171
|
+
cryptoShare: 100 * cryptoVolume / (stableVolume + cryptoVolume) || 0,
|
|
172
|
+
}];
|
|
173
|
+
}
|
|
139
174
|
});
|
|
140
|
-
}, {
|
|
175
|
+
}); }, {
|
|
141
176
|
promise: true,
|
|
142
177
|
maxAge: 5 * 60 * 1000, // 5m
|
|
143
178
|
});
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
179
|
+
//4
|
|
180
|
+
export var _getTotalVolumes = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
181
|
+
var url, response;
|
|
182
|
+
return __generator(this, function (_a) {
|
|
183
|
+
switch (_a.label) {
|
|
184
|
+
case 0:
|
|
185
|
+
if (network === "aurora")
|
|
186
|
+
return [2 /*return*/, {
|
|
187
|
+
totalVolume: 0,
|
|
188
|
+
cryptoVolume: 0,
|
|
189
|
+
cryptoShare: 0,
|
|
190
|
+
}]; // Exclude Aurora
|
|
191
|
+
url = "https://api.curve.fi/api/getSubgraphData/".concat(network);
|
|
192
|
+
return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
|
|
193
|
+
case 1:
|
|
194
|
+
response = _a.sent();
|
|
195
|
+
return [2 /*return*/, response.data.data];
|
|
196
|
+
}
|
|
160
197
|
});
|
|
161
|
-
}, {
|
|
198
|
+
}); }, {
|
|
162
199
|
promise: true,
|
|
163
200
|
maxAge: 5 * 60 * 1000, // 5m
|
|
164
201
|
});
|
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,83 +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, 'stable'),
|
|
230
|
-
_getFactoryAPYsAndVolumes(curve.constants.NETWORK_NAME, 'crypto'),
|
|
231
|
-
])];
|
|
232
|
-
case 1:
|
|
233
|
-
_response = _e.sent();
|
|
234
|
-
_c = [_response[0], __spreadArray(__spreadArray([], _response[1], true), _response[2], true)], mainPoolsData = _c[0], factoryPoolsData = _c[1];
|
|
235
|
-
if (this.id in mainPoolsData) {
|
|
236
|
-
return [2 /*return*/, ((_d = mainPoolsData[this.id].volume) !== null && _d !== void 0 ? _d : 0).toString()];
|
|
237
|
-
}
|
|
238
|
-
poolData_1 = factoryPoolsData.find(function (d) { return d.poolAddress.toLowerCase() === _this.address; });
|
|
239
|
-
if (!poolData_1)
|
|
240
|
-
throw Error("Can't get Volume for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
241
|
-
return [4 /*yield*/, _getUsdRate(this.lpToken)];
|
|
242
|
-
case 2:
|
|
243
|
-
lpPrice = _e.sent();
|
|
244
|
-
return [2 /*return*/, (poolData_1.volume * lpPrice).toString()];
|
|
245
|
-
case 3:
|
|
246
225
|
network = curve.constants.NETWORK_NAME;
|
|
247
|
-
return [4 /*yield*/,
|
|
248
|
-
case
|
|
249
|
-
poolsData = (
|
|
226
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
227
|
+
case 1:
|
|
228
|
+
poolsData = (_c.sent()).poolsData;
|
|
250
229
|
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
251
|
-
if (
|
|
252
|
-
|
|
253
|
-
|
|
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, ")"));
|
|
254
234
|
}
|
|
255
235
|
});
|
|
256
236
|
}); };
|
|
257
237
|
this.statsBaseApy = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
258
|
-
var
|
|
238
|
+
var network, poolsData, poolData;
|
|
259
239
|
var _this = this;
|
|
260
|
-
return __generator(this, function (
|
|
261
|
-
switch (
|
|
240
|
+
return __generator(this, function (_c) {
|
|
241
|
+
switch (_c.label) {
|
|
262
242
|
case 0:
|
|
263
|
-
|
|
264
|
-
return [4 /*yield*/,
|
|
265
|
-
_getLegacyAPYsAndVolumes(curve.constants.NETWORK_NAME),
|
|
266
|
-
_getFactoryAPYsAndVolumes(curve.constants.NETWORK_NAME, 'stable'),
|
|
267
|
-
_getFactoryAPYsAndVolumes(curve.constants.NETWORK_NAME, 'crypto'),
|
|
268
|
-
])];
|
|
243
|
+
network = curve.constants.NETWORK_NAME;
|
|
244
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
269
245
|
case 1:
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if (
|
|
246
|
+
poolsData = (_c.sent()).poolsData;
|
|
247
|
+
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
248
|
+
if (poolData) {
|
|
273
249
|
return [2 /*return*/, {
|
|
274
|
-
day:
|
|
275
|
-
week:
|
|
250
|
+
day: poolData.day.toString(),
|
|
251
|
+
week: poolData.week.toString(),
|
|
276
252
|
}];
|
|
277
253
|
}
|
|
278
|
-
|
|
279
|
-
if (!poolData_2)
|
|
280
|
-
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
281
|
-
return [2 /*return*/, {
|
|
282
|
-
day: poolData_2.apy.toString(),
|
|
283
|
-
week: poolData_2.apy.toString(),
|
|
284
|
-
}];
|
|
285
|
-
case 2:
|
|
286
|
-
network = curve.constants.NETWORK_NAME;
|
|
287
|
-
return [4 /*yield*/, _getSubgraphData(network)];
|
|
288
|
-
case 3:
|
|
289
|
-
poolsData = (_d.sent()).poolsData;
|
|
290
|
-
poolData = poolsData.find(function (d) { return d.address.toLowerCase() === _this.address; });
|
|
291
|
-
if (!poolData)
|
|
292
|
-
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
293
|
-
return [2 /*return*/, {
|
|
294
|
-
day: poolData.latestDailyApy.toString(),
|
|
295
|
-
week: poolData.latestWeeklyApy.toString(),
|
|
296
|
-
}];
|
|
254
|
+
throw Error("Can't get base APY for ".concat(this.name, " (id: ").concat(this.id, ")"));
|
|
297
255
|
}
|
|
298
256
|
});
|
|
299
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 { _getAllPoolsFromApi, _getSubgraphData,
|
|
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,30 +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
|
-
return __generator(this, function (
|
|
786
|
-
switch (
|
|
804
|
+
var _a, totalVolume, cryptoVolume, cryptoShare;
|
|
805
|
+
return __generator(this, function (_b) {
|
|
806
|
+
switch (_b.label) {
|
|
787
807
|
case 0:
|
|
788
808
|
network = _getNetworkName(network);
|
|
789
|
-
|
|
790
|
-
chainId = _getChainId(network);
|
|
791
|
-
if (curve.chainId !== chainId)
|
|
792
|
-
throw Error("To get volume for ZkSync, Moonbeam, Kava, Base, Celo, Aurora or Bsc connect to the network first");
|
|
793
|
-
return [4 /*yield*/, Promise.all([
|
|
794
|
-
_getTotalVolumes(network, 'stable'),
|
|
795
|
-
_getTotalVolumes(network, 'crypto'),
|
|
796
|
-
])];
|
|
809
|
+
return [4 /*yield*/, getVolumeApiController(network)];
|
|
797
810
|
case 1:
|
|
798
|
-
_a =
|
|
799
|
-
stableVolume = factoryPoolsData.totalVolumeUsd;
|
|
800
|
-
cryptoVolume_1 = cryptoPoolsData.totalVolumeUsd;
|
|
801
|
-
return [2 /*return*/, { totalVolume: stableVolume + cryptoVolume_1, cryptoVolume: cryptoVolume_1, cryptoShare: cryptoVolume_1 / (stableVolume + cryptoVolume_1) }];
|
|
802
|
-
case 2: return [4 /*yield*/, _getSubgraphData(network)];
|
|
803
|
-
case 3:
|
|
804
|
-
_b = _c.sent(), totalVolume = _b.totalVolume, cryptoVolume = _b.cryptoVolume, cryptoShare = _b.cryptoShare;
|
|
811
|
+
_a = _b.sent(), totalVolume = _a.totalVolume, cryptoVolume = _a.cryptoVolume, cryptoShare = _a.cryptoShare;
|
|
805
812
|
return [2 /*return*/, { totalVolume: totalVolume, cryptoVolume: cryptoVolume, cryptoShare: cryptoShare }];
|
|
806
813
|
}
|
|
807
814
|
});
|