@curvefi/api 1.20.2 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -41
- package/lib/constants/abis/abis-ethereum.js +138 -0
- package/lib/constants/abis/abis-polygon.js +12 -0
- package/lib/curve.d.ts +4 -4
- package/lib/curve.js +37 -18
- package/lib/external-api.d.ts +3 -0
- package/lib/external-api.js +67 -0
- package/lib/factory/constants.d.ts +18 -0
- package/lib/factory/constants.js +149 -0
- package/lib/factory/factory-api.d.ts +2 -0
- package/lib/factory/factory-api.js +273 -0
- package/lib/factory/factory-crypto.d.ts +2 -0
- package/lib/{factory-crypto.js → factory/factory-crypto.js} +41 -54
- package/lib/factory/factory.d.ts +2 -0
- package/lib/{factory.js → factory/factory.js} +66 -64
- package/lib/index.d.ts +13 -2
- package/lib/index.js +14 -4
- package/lib/interfaces.d.ts +74 -3
- package/lib/pools.d.ts +17 -3
- package/lib/pools.js +641 -111
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +67 -7
- package/package.json +1 -1
- package/lib/factory-crypto.d.ts +0 -32
- package/lib/factory.d.ts +0 -32
package/lib/utils.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export declare const _ensureAllowance: (coins: string[], amounts: ethers.BigNumb
|
|
|
21
21
|
export declare const ensureAllowanceEstimateGas: (coins: string[], amounts: string[], spender: string) => Promise<number>;
|
|
22
22
|
export declare const ensureAllowance: (coins: string[], amounts: string[], spender: string) => Promise<string[]>;
|
|
23
23
|
export declare const getPoolNameBySwapAddress: (swapAddress: string) => string;
|
|
24
|
+
export declare const _getUsdPricesFromApi: () => Promise<DictInterface<number>>;
|
|
24
25
|
export declare const _getUsdRate: (assetId: string) => Promise<number>;
|
|
25
26
|
export declare const _getFactoryStatsUrl: () => string;
|
|
26
27
|
export declare const _getStatsUrl: (isCrypto?: boolean) => string;
|
|
@@ -31,3 +32,4 @@ export declare const getPoolList: () => string[];
|
|
|
31
32
|
export declare const getFactoryPoolList: () => string[];
|
|
32
33
|
export declare const getCryptoFactoryPoolList: () => string[];
|
|
33
34
|
export declare const getUsdRate: (coin: string) => Promise<number>;
|
|
35
|
+
export declare const getTVL: (chainId?: number) => Promise<number>;
|
package/lib/utils.js
CHANGED
|
@@ -59,13 +59,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
59
59
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
60
60
|
};
|
|
61
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
-
exports.getUsdRate = exports.getCryptoFactoryPoolList = exports.getFactoryPoolList = exports.getPoolList = exports._getFactoryStatsPolygon = exports._getFactoryStatsEthereum = exports._getStats = exports._getStatsUrl = exports._getFactoryStatsUrl = exports._getUsdRate = exports.getPoolNameBySwapAddress = exports.ensureAllowance = exports.ensureAllowanceEstimateGas = exports._ensureAllowance = exports.hasAllowance = exports.getAllowance = exports._getAllowance = exports.getBalances = exports._prepareAddresses = exports._getBalances = exports._getCoinDecimals = exports._getCoinAddresses = exports.getEthIndex = exports.isEth = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = void 0;
|
|
62
|
+
exports.getTVL = exports.getUsdRate = exports.getCryptoFactoryPoolList = exports.getFactoryPoolList = exports.getPoolList = exports._getFactoryStatsPolygon = exports._getFactoryStatsEthereum = exports._getStats = exports._getStatsUrl = exports._getFactoryStatsUrl = exports._getUsdRate = exports._getUsdPricesFromApi = exports.getPoolNameBySwapAddress = exports.ensureAllowance = exports.ensureAllowanceEstimateGas = exports._ensureAllowance = exports.hasAllowance = exports.getAllowance = exports._getAllowance = exports.getBalances = exports._prepareAddresses = exports._getBalances = exports._getCoinDecimals = exports._getCoinAddresses = exports.getEthIndex = exports.isEth = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = void 0;
|
|
63
63
|
var axios_1 = __importDefault(require("axios"));
|
|
64
64
|
var memoizee_1 = __importDefault(require("memoizee"));
|
|
65
65
|
var ethers_1 = require("ethers");
|
|
66
66
|
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
67
67
|
var curve_1 = require("./curve");
|
|
68
68
|
var curve_2 = require("./curve");
|
|
69
|
+
var external_api_1 = require("./external-api");
|
|
69
70
|
var ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
|
|
70
71
|
exports.MAX_ALLOWANCE = ethers_1.ethers.BigNumber.from(2).pow(ethers_1.ethers.BigNumber.from(256)).sub(ethers_1.ethers.BigNumber.from(1));
|
|
71
72
|
// bignumber.js
|
|
@@ -374,13 +375,49 @@ var getPoolNameBySwapAddress = function (swapAddress) {
|
|
|
374
375
|
})[0][0];
|
|
375
376
|
};
|
|
376
377
|
exports.getPoolNameBySwapAddress = getPoolNameBySwapAddress;
|
|
378
|
+
var _getUsdPricesFromApi = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
379
|
+
var network, promises, allTypesExtendedPoolData, priceDict, _i, allTypesExtendedPoolData_1, extendedPoolData, _a, _b, pool, _c, _d, coin;
|
|
380
|
+
return __generator(this, function (_e) {
|
|
381
|
+
switch (_e.label) {
|
|
382
|
+
case 0:
|
|
383
|
+
network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
|
|
384
|
+
promises = [
|
|
385
|
+
(0, external_api_1._getPoolsFromApi)(network, "main"),
|
|
386
|
+
(0, external_api_1._getPoolsFromApi)(network, "crypto"),
|
|
387
|
+
(0, external_api_1._getPoolsFromApi)(network, "factory"),
|
|
388
|
+
(0, external_api_1._getPoolsFromApi)(network, "factory-crypto"),
|
|
389
|
+
];
|
|
390
|
+
return [4 /*yield*/, Promise.all(promises)];
|
|
391
|
+
case 1:
|
|
392
|
+
allTypesExtendedPoolData = _e.sent();
|
|
393
|
+
priceDict = {};
|
|
394
|
+
for (_i = 0, allTypesExtendedPoolData_1 = allTypesExtendedPoolData; _i < allTypesExtendedPoolData_1.length; _i++) {
|
|
395
|
+
extendedPoolData = allTypesExtendedPoolData_1[_i];
|
|
396
|
+
for (_a = 0, _b = extendedPoolData.poolData; _a < _b.length; _a++) {
|
|
397
|
+
pool = _b[_a];
|
|
398
|
+
for (_c = 0, _d = pool.coins; _c < _d.length; _c++) {
|
|
399
|
+
coin = _d[_c];
|
|
400
|
+
if (typeof coin.usdPrice === "number")
|
|
401
|
+
priceDict[coin.address.toLowerCase()] = coin.usdPrice;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return [2 /*return*/, priceDict];
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
}); };
|
|
409
|
+
exports._getUsdPricesFromApi = _getUsdPricesFromApi;
|
|
377
410
|
var _usdRatesCache = {};
|
|
378
411
|
var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
379
|
-
var chainName, url, response;
|
|
412
|
+
var pricesFromApi, chainName, url, response;
|
|
380
413
|
var _a, _b;
|
|
381
414
|
return __generator(this, function (_c) {
|
|
382
415
|
switch (_c.label) {
|
|
383
|
-
case 0:
|
|
416
|
+
case 0: return [4 /*yield*/, (0, exports._getUsdPricesFromApi)()];
|
|
417
|
+
case 1:
|
|
418
|
+
pricesFromApi = _c.sent();
|
|
419
|
+
if (assetId.toLowerCase() in pricesFromApi)
|
|
420
|
+
return [2 /*return*/, pricesFromApi[assetId.toLowerCase()]];
|
|
384
421
|
if (assetId === 'USD' || (curve_1.curve.chainId === 137 && (assetId.toLowerCase() === curve_2.COINS.am3crv.toLowerCase())))
|
|
385
422
|
return [2 /*return*/, 1];
|
|
386
423
|
chainName = {
|
|
@@ -403,12 +440,12 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
|
|
|
403
440
|
chainName = 'ethereum';
|
|
404
441
|
assetId = '0xC581b735A1688071A1746c968e0798D642EDE491'.toLowerCase(); // EURT Ethereum
|
|
405
442
|
}
|
|
406
|
-
if (!((((_a = _usdRatesCache[assetId]) === null || _a === void 0 ? void 0 : _a.time) || 0) + 600000 < Date.now())) return [3 /*break*/,
|
|
443
|
+
if (!((((_a = _usdRatesCache[assetId]) === null || _a === void 0 ? void 0 : _a.time) || 0) + 600000 < Date.now())) return [3 /*break*/, 3];
|
|
407
444
|
url = ['bitcoin', 'ethereum', 'link'].includes(assetId.toLowerCase()) ?
|
|
408
445
|
"https://api.coingecko.com/api/v3/simple/price?ids=".concat(assetId, "&vs_currencies=usd") :
|
|
409
446
|
"https://api.coingecko.com/api/v3/simple/token_price/".concat(chainName, "?contract_addresses=").concat(assetId, "&vs_currencies=usd");
|
|
410
447
|
return [4 /*yield*/, axios_1.default.get(url)];
|
|
411
|
-
case
|
|
448
|
+
case 2:
|
|
412
449
|
response = _c.sent();
|
|
413
450
|
try {
|
|
414
451
|
_usdRatesCache[assetId] = { 'rate': (_b = response.data[assetId]['usd']) !== null && _b !== void 0 ? _b : 1, 'time': Date.now() };
|
|
@@ -416,8 +453,8 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
|
|
|
416
453
|
catch (err) { // TODO pay attention!
|
|
417
454
|
_usdRatesCache[assetId] = { 'rate': 1, 'time': Date.now() };
|
|
418
455
|
}
|
|
419
|
-
_c.label =
|
|
420
|
-
case
|
|
456
|
+
_c.label = 3;
|
|
457
|
+
case 3: return [2 /*return*/, _usdRatesCache[assetId]['rate']];
|
|
421
458
|
}
|
|
422
459
|
});
|
|
423
460
|
}); };
|
|
@@ -546,3 +583,26 @@ var getUsdRate = function (coin) { return __awaiter(void 0, void 0, void 0, func
|
|
|
546
583
|
});
|
|
547
584
|
}); };
|
|
548
585
|
exports.getUsdRate = getUsdRate;
|
|
586
|
+
var getTVL = function (chainId) {
|
|
587
|
+
if (chainId === void 0) { chainId = curve_1.curve.chainId; }
|
|
588
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
589
|
+
var network, promises, allTypesExtendedPoolData;
|
|
590
|
+
return __generator(this, function (_a) {
|
|
591
|
+
switch (_a.label) {
|
|
592
|
+
case 0:
|
|
593
|
+
network = chainId === 137 ? "polygon" : "ethereum";
|
|
594
|
+
promises = [
|
|
595
|
+
(0, external_api_1._getPoolsFromApi)(network, "main"),
|
|
596
|
+
(0, external_api_1._getPoolsFromApi)(network, "crypto"),
|
|
597
|
+
(0, external_api_1._getPoolsFromApi)(network, "factory"),
|
|
598
|
+
(0, external_api_1._getPoolsFromApi)(network, "factory-crypto"),
|
|
599
|
+
];
|
|
600
|
+
return [4 /*yield*/, Promise.all(promises)];
|
|
601
|
+
case 1:
|
|
602
|
+
allTypesExtendedPoolData = _a.sent();
|
|
603
|
+
return [2 /*return*/, allTypesExtendedPoolData.reduce(function (sum, data) { var _a; return sum + ((_a = data.tvl) !== null && _a !== void 0 ? _a : data.tvlAll); }, 0)];
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
};
|
|
608
|
+
exports.getTVL = getTVL;
|
package/package.json
CHANGED
package/lib/factory-crypto.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Contract, ethers } from "ethers";
|
|
2
|
-
import { Contract as MulticallContract, Provider as MulticallProvider } from "ethcall";
|
|
3
|
-
import { DictInterface, PoolDataInterface } from "./interfaces";
|
|
4
|
-
interface CurveInterface {
|
|
5
|
-
provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
|
|
6
|
-
multicallProvider: MulticallProvider;
|
|
7
|
-
signer: ethers.Signer | null;
|
|
8
|
-
signerAddress: string;
|
|
9
|
-
chainId: number;
|
|
10
|
-
contracts: {
|
|
11
|
-
[index: string]: {
|
|
12
|
-
contract: Contract;
|
|
13
|
-
multicallContract: MulticallContract;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
feeData: {
|
|
17
|
-
gasPrice?: number;
|
|
18
|
-
maxFeePerGas?: number;
|
|
19
|
-
maxPriorityFeePerGas?: number;
|
|
20
|
-
};
|
|
21
|
-
constantOptions: {
|
|
22
|
-
gasLimit: number;
|
|
23
|
-
};
|
|
24
|
-
options: {
|
|
25
|
-
gasPrice?: number | ethers.BigNumber;
|
|
26
|
-
maxFeePerGas?: number | ethers.BigNumber;
|
|
27
|
-
maxPriorityFeePerGas?: number | ethers.BigNumber;
|
|
28
|
-
};
|
|
29
|
-
constants: DictInterface<any>;
|
|
30
|
-
}
|
|
31
|
-
export declare function getCryptoFactoryPoolData(this: CurveInterface): Promise<DictInterface<PoolDataInterface>>;
|
|
32
|
-
export {};
|
package/lib/factory.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Contract, ethers } from "ethers";
|
|
2
|
-
import { Contract as MulticallContract, Provider as MulticallProvider } from "ethcall";
|
|
3
|
-
import { DictInterface, PoolDataInterface } from "./interfaces";
|
|
4
|
-
interface CurveInterface {
|
|
5
|
-
provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
|
|
6
|
-
multicallProvider: MulticallProvider;
|
|
7
|
-
signer: ethers.Signer | null;
|
|
8
|
-
signerAddress: string;
|
|
9
|
-
chainId: number;
|
|
10
|
-
contracts: {
|
|
11
|
-
[index: string]: {
|
|
12
|
-
contract: Contract;
|
|
13
|
-
multicallContract: MulticallContract;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
feeData: {
|
|
17
|
-
gasPrice?: number;
|
|
18
|
-
maxFeePerGas?: number;
|
|
19
|
-
maxPriorityFeePerGas?: number;
|
|
20
|
-
};
|
|
21
|
-
constantOptions: {
|
|
22
|
-
gasLimit: number;
|
|
23
|
-
};
|
|
24
|
-
options: {
|
|
25
|
-
gasPrice?: number | ethers.BigNumber;
|
|
26
|
-
maxFeePerGas?: number | ethers.BigNumber;
|
|
27
|
-
maxPriorityFeePerGas?: number | ethers.BigNumber;
|
|
28
|
-
};
|
|
29
|
-
constants: DictInterface<any>;
|
|
30
|
-
}
|
|
31
|
-
export declare function getFactoryPoolData(this: CurveInterface): Promise<DictInterface<PoolDataInterface>>;
|
|
32
|
-
export {};
|