@curvefi/api 2.53.7 → 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.
@@ -0,0 +1,7 @@
1
+ import { IChainId } from "../interfaces";
2
+ export interface IVolumeNetworks {
3
+ getVolumes: IChainId[];
4
+ getSubgraphData: IChainId[];
5
+ getFactoryAPYs: IChainId[];
6
+ }
7
+ export declare const volumeNetworks: IVolumeNetworks;
@@ -0,0 +1,5 @@
1
+ export var volumeNetworks = {
2
+ getVolumes: [1, 137, 8453, 42161],
3
+ getSubgraphData: [10, 100, 250, 1284, 42220, 43114, 1313161554],
4
+ getFactoryAPYs: [56, 324, 2222],
5
+ };
@@ -1,45 +1,19 @@
1
1
  import memoize from "memoizee";
2
- import { IExtendedPoolDataFromApi, ISubgraphPoolData, IDict, INetworkName, IPoolType, IGaugesDataFromApi, IDaoProposal, IDaoProposalListItem } from "./interfaces";
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
- poolsData: ISubgraphPoolData[];
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: INetworkName) => Promise<{
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<{
@@ -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, _d;
76
- return __generator(this, function (_e) {
77
- switch (_e.label) {
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 = _e.sent();
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: (_a = response.data.data.poolList) !== null && _a !== void 0 ? _a : [],
85
- totalVolume: (_b = response.data.data.totalVolume) !== null && _b !== void 0 ? _b : 0,
86
- cryptoVolume: (_c = response.data.data.cryptoVolume) !== null && _c !== void 0 ? _c : 0,
87
- cryptoShare: (_d = response.data.data.cryptoShare) !== null && _d !== void 0 ? _d : 0,
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,92 @@ export var _getSubgraphData = memoize(function (network) { return __awaiter(void
92
109
  promise: true,
93
110
  maxAge: 5 * 60 * 1000, // 5m
94
111
  });
95
- // Moonbeam and Aurora only
96
- export var _getLegacyAPYsAndVolumes = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
97
- var url, data, result;
98
- return __generator(this, function (_a) {
99
- switch (_a.label) {
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
- if (["kava", "celo", "zksync", "base", "bsc"].includes(network))
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
- data = (_a.sent()).data;
107
- result = {};
108
- Object.keys(data.apy.day).forEach(function (poolId) {
109
- result[poolId] = { apy: { day: 0, week: 0 }, volume: 0 };
110
- result[poolId].apy.day = data.apy.day[poolId] * 100;
111
- result[poolId].apy.week = data.apy.week[poolId] * 100;
112
- result[poolId].volume = data.volume[poolId];
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*/, result];
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
- // Base, Bsc, ZkSync, Moonbeam, Kava and Celo only
122
- export var _getFactoryAPYsAndVolumes = memoize(function (network, mode) {
123
- if (mode === void 0) { mode = 'stable'; }
124
- return __awaiter(void 0, void 0, void 0, function () {
125
- var url, response;
126
- var _a;
127
- return __generator(this, function (_b) {
128
- switch (_b.label) {
129
- case 0:
130
- if (network === "aurora")
131
- return [2 /*return*/, []]; // Exclude Aurora
132
- url = "https://api.curve.fi/api/getFactoryAPYs/".concat(network, "/").concat(mode);
133
- return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
134
- case 1:
135
- response = _b.sent();
136
- return [2 /*return*/, (_a = response.data.data.poolDetails) !== null && _a !== void 0 ? _a : []];
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, _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
+ }
139
173
  });
140
- }, {
174
+ }); }, {
141
175
  promise: true,
142
176
  maxAge: 5 * 60 * 1000, // 5m
143
177
  });
144
- export var _getTotalVolumes = memoize(function (network, mode) {
145
- if (mode === void 0) { mode = 'stable'; }
146
- return __awaiter(void 0, void 0, void 0, function () {
147
- var url, response;
148
- return __generator(this, function (_a) {
149
- switch (_a.label) {
150
- case 0:
151
- if (network === "aurora")
152
- return [2 /*return*/, { totalVolumeUsd: 0 }]; // Exclude Aurora
153
- url = "https://api.curve.fi/api/getFactoryAPYs/".concat(network, "/").concat(mode);
154
- return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
155
- case 1:
156
- response = _a.sent();
157
- return [2 /*return*/, response.data.data];
158
- }
159
- });
178
+ //4
179
+ export var _getTotalVolumes = memoize(function (network) { return __awaiter(void 0, void 0, void 0, function () {
180
+ var url, response;
181
+ return __generator(this, function (_a) {
182
+ switch (_a.label) {
183
+ case 0:
184
+ if (network === "aurora")
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);
191
+ return [4 /*yield*/, axios.get(url, { validateStatus: function () { return true; } })];
192
+ case 1:
193
+ response = _a.sent();
194
+ return [2 /*return*/, response.data.data];
195
+ }
160
196
  });
161
- }, {
197
+ }); }, {
162
198
  promise: true,
163
199
  maxAge: 5 * 60 * 1000, // 5m
164
200
  });
@@ -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, _getSubgraphData, _getFactoryAPYsAndVolumes, _getLegacyAPYsAndVolumes } 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, } 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 _response, _c, mainPoolsData, factoryPoolsData, poolData_1, lpPrice, network, poolsData, poolData;
220
+ var network, poolsData, poolData;
221
221
  var _this = this;
222
- var _d;
223
- return __generator(this, function (_e) {
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*/, _getSubgraphData(network)];
248
- case 4:
249
- poolsData = (_e.sent()).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 (!poolData)
252
- throw Error("Can't get Volume for ".concat(this.name, " (id: ").concat(this.id, ")"));
253
- return [2 /*return*/, poolData.volumeUSD.toString()];
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 _response, _c, mainPoolsData, factoryPoolsData, poolData_2, network, poolsData, poolData;
238
+ var network, poolsData, poolData;
259
239
  var _this = this;
260
- return __generator(this, function (_d) {
261
- switch (_d.label) {
240
+ return __generator(this, function (_c) {
241
+ switch (_c.label) {
262
242
  case 0:
263
- if (![56, 324, 1284, 2222, 8453, 42220, 1313161554].includes(curve.chainId)) return [3 /*break*/, 2];
264
- return [4 /*yield*/, Promise.all([
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
- _response = _d.sent();
271
- _c = [_response[0], __spreadArray(__spreadArray([], _response[1], true), _response[2], true)], mainPoolsData = _c[0], factoryPoolsData = _c[1];
272
- if (this.id in mainPoolsData) {
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: mainPoolsData[this.id].apy.day.toString(),
275
- week: mainPoolsData[this.id].apy.week.toString(),
250
+ day: poolData.day.toString(),
251
+ week: poolData.week.toString(),
276
252
  }];
277
253
  }
278
- poolData_2 = factoryPoolsData.find(function (d) { return d.poolAddress.toLowerCase() === _this.address; });
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, _getTotalVolumes, } from "./external-api.js";
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 chainId, _a, factoryPoolsData, cryptoPoolsData, stableVolume, cryptoVolume_1, _b, totalVolume, cryptoVolume, cryptoShare;
785
- return __generator(this, function (_c) {
786
- switch (_c.label) {
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
- if (!["zksync", "moonbeam", "kava", "base", "celo", "aurora", "bsc"].includes(network)) return [3 /*break*/, 2];
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 = _c.sent(), factoryPoolsData = _a[0], cryptoPoolsData = _a[1];
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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/api",
3
- "version": "2.53.7",
3
+ "version": "2.53.8",
4
4
  "description": "JavaScript library for curve.fi",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",