@curvefi/api 2.20.0 → 2.21.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 CHANGED
@@ -17,10 +17,10 @@ import curve from "@curvefi/api";
17
17
  await curve.init('JsonRpc', {}, {}); // In this case JsonRpc url, privateKey, fee data and chainId will be specified automatically
18
18
 
19
19
  // 2. Infura
20
- curve.init("Infura", { network: "homestead", apiKey: <INFURA_KEY> }, { chainId: 1 });
20
+ await curve.init("Infura", { network: "homestead", apiKey: <INFURA_KEY> }, { chainId: 1 });
21
21
 
22
22
  // 3. Web3 provider
23
- curve.init('Web3', { externalProvider: <WEB3_PROVIDER> }, { chainId: 1 });
23
+ await curve.init('Web3', { externalProvider: <WEB3_PROVIDER> }, { chainId: 1 });
24
24
 
25
25
  // Fetch factory pools
26
26
  await curve.fetchFactoryPools();
@@ -964,12 +964,14 @@ import curve from "@curvefi/api";
964
964
 
965
965
  (async () => {
966
966
  await curve.init('JsonRpc', {}, { gasPrice: 0, maxFeePerGas: 0, maxPriorityFeePerGas: 0 });
967
+ await curve.fetchFactoryPools();
968
+ await curve.getCryptoFactoryPoolList();
967
969
 
968
970
  await curve.getBalances(['DAI', 'CRV']);
969
971
  // [ '9900.0', '100049.744832225238317557' ]
970
972
 
971
973
  const { route, output } = await curve.router.getBestRouteAndOutput('DAI', 'CRV', '1000');
972
- // OR await curve.router.getBestPoolAndOutput('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0xD533a949740bb3306d119CC777fa900bA034cd52', '1000');
974
+ // OR await curve.router.getBestRouteAndOutput('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0xD533a949740bb3306d119CC777fa900bA034cd52', '1000');
973
975
  const expected = await curve.router.expected('DAI', 'CRV', '1000');
974
976
  // OR await curve.router.expected('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0xD533a949740bb3306d119CC777fa900bA034cd52', '1000');
975
977
  const priceImpact = await curve.router.priceImpact('DAI', 'CRV', '1000');
@@ -8,3 +8,4 @@ export declare const ALIASES_XDAI: import("../interfaces").IDict<string>;
8
8
  export declare const ALIASES_MOONBEAM: import("../interfaces").IDict<string>;
9
9
  export declare const ALIASES_AURORA: import("../interfaces").IDict<string>;
10
10
  export declare const ALIASES_KAVA: import("../interfaces").IDict<string>;
11
+ export declare const ALIASES_CELO: import("../interfaces").IDict<string>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ALIASES_KAVA = exports.ALIASES_AURORA = exports.ALIASES_MOONBEAM = exports.ALIASES_XDAI = exports.ALIASES_OPTIMISM = exports.ALIASES_ARBITRUM = exports.ALIASES_AVALANCHE = exports.ALIASES_FANTOM = exports.ALIASES_POLYGON = exports.ALIASES_ETHEREUM = void 0;
3
+ exports.ALIASES_CELO = exports.ALIASES_KAVA = exports.ALIASES_AURORA = exports.ALIASES_MOONBEAM = exports.ALIASES_XDAI = exports.ALIASES_OPTIMISM = exports.ALIASES_ARBITRUM = exports.ALIASES_AVALANCHE = exports.ALIASES_FANTOM = exports.ALIASES_POLYGON = exports.ALIASES_ETHEREUM = void 0;
4
4
  var utils_1 = require("./utils");
5
5
  exports.ALIASES_ETHEREUM = (0, utils_1.lowerCaseValues)({
6
6
  "crv": "0xD533a949740bb3306d119CC777fa900bA034cd52",
@@ -132,3 +132,16 @@ exports.ALIASES_KAVA = (0, utils_1.lowerCaseValues)({
132
132
  "crypto_factory": '0xF18056Bbd320E96A48e3Fbf8bC061322531aac99',
133
133
  "registry_exchange": "",
134
134
  });
135
+ exports.ALIASES_CELO = (0, utils_1.lowerCaseValues)({
136
+ "crv": "0x0a7432cF27F1aE3825c313F3C81e7D3efD7639aB",
137
+ "minter": "0xabC000d88f23Bb45525E447528DBF656A9D55bf5",
138
+ "voting_escrow": "0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2",
139
+ "fee_distributor": "0xA464e6DCda8AC41e03616F95f4BC98a13b8922Dc",
140
+ "gauge_controller": "0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB",
141
+ "address_provider": "0x0000000022d53366457f9d5e68ec105046fc4383",
142
+ "router": "0xfA9a30350048B2BF66865ee20363067c66f67e58",
143
+ "deposit_and_stake": "0xB7De33440B7171159a9718CBE748086cecDd9685",
144
+ "factory": '0x5277A0226d10392295E8D383E9724D6E416d6e6C',
145
+ "crypto_factory": '0xF18056Bbd320E96A48e3Fbf8bC061322531aac99',
146
+ "registry_exchange": "",
147
+ });
@@ -0,0 +1,7 @@
1
+ export declare const COINS_CELO: {
2
+ [index: string]: string;
3
+ };
4
+ export declare const cTokensCelo: never[];
5
+ export declare const yTokensCelo: never[];
6
+ export declare const ycTokensCelo: never[];
7
+ export declare const aTokensCelo: never[];
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aTokensCelo = exports.ycTokensCelo = exports.yTokensCelo = exports.cTokensCelo = exports.COINS_CELO = void 0;
4
+ var utils_1 = require("../utils");
5
+ exports.COINS_CELO = (0, utils_1.lowerCaseValues)({
6
+ 'crv': '0x0a7432cF27F1aE3825c313F3C81e7D3efD7639aB',
7
+ // --- USD ---
8
+ 'dai': '0x90Ca507a5D4458a4C6C6249d186b6dCb02a5BCCd',
9
+ 'usdc': '0xef4229c8c3250C675F21BCefa42f58EfbfF6002a',
10
+ 'usdt': '0x88eeC49252c8cbc039DCdB394c0c2BA2f1637EA0',
11
+ '3crv': '0x998395fEd908d33CF27115A1D9Ab6555def6cd45',
12
+ });
13
+ exports.cTokensCelo = []; //.map((a) => a.toLowerCase());
14
+ exports.yTokensCelo = []; //.map((a) => a.toLowerCase());
15
+ exports.ycTokensCelo = []; //.map((a) => a.toLowerCase());
16
+ exports.aTokensCelo = []; //.map((a) => a.toLowerCase());
@@ -0,0 +1,4 @@
1
+ import { IPoolData } from "../../interfaces";
2
+ export declare const POOLS_DATA_CELO: {
3
+ [index: string]: IPoolData;
4
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POOLS_DATA_CELO = void 0;
4
+ var utils_1 = require("../utils");
5
+ exports.POOLS_DATA_CELO = (0, utils_1.lowerCasePoolDataAddresses)({});
@@ -8,4 +8,5 @@ import { POOLS_DATA_XDAI } from "./xdai";
8
8
  import { POOLS_DATA_MOONBEAM } from "./moonbeam";
9
9
  import { POOLS_DATA_AURORA } from "./aurora";
10
10
  import { POOLS_DATA_KAVA } from "./kava";
11
- export { POOLS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_FANTOM, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, };
11
+ import { POOLS_DATA_CELO } from "./celo";
12
+ export { POOLS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_FANTOM, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POOLS_DATA_KAVA = exports.POOLS_DATA_AURORA = exports.POOLS_DATA_MOONBEAM = exports.POOLS_DATA_XDAI = exports.POOLS_DATA_OPTIMISM = exports.POOLS_DATA_ARBITRUM = exports.POOLS_DATA_AVALANCHE = exports.POOLS_DATA_FANTOM = exports.POOLS_DATA_POLYGON = exports.POOLS_DATA_ETHEREUM = void 0;
3
+ exports.POOLS_DATA_CELO = exports.POOLS_DATA_KAVA = exports.POOLS_DATA_AURORA = exports.POOLS_DATA_MOONBEAM = exports.POOLS_DATA_XDAI = exports.POOLS_DATA_OPTIMISM = exports.POOLS_DATA_ARBITRUM = exports.POOLS_DATA_AVALANCHE = exports.POOLS_DATA_FANTOM = exports.POOLS_DATA_POLYGON = exports.POOLS_DATA_ETHEREUM = void 0;
4
4
  var ethereum_1 = require("./ethereum");
5
5
  Object.defineProperty(exports, "POOLS_DATA_ETHEREUM", { enumerable: true, get: function () { return ethereum_1.POOLS_DATA_ETHEREUM; } });
6
6
  var polygon_1 = require("./polygon");
@@ -21,3 +21,5 @@ var aurora_1 = require("./aurora");
21
21
  Object.defineProperty(exports, "POOLS_DATA_AURORA", { enumerable: true, get: function () { return aurora_1.POOLS_DATA_AURORA; } });
22
22
  var kava_1 = require("./kava");
23
23
  Object.defineProperty(exports, "POOLS_DATA_KAVA", { enumerable: true, get: function () { return kava_1.POOLS_DATA_KAVA; } });
24
+ var celo_1 = require("./celo");
25
+ Object.defineProperty(exports, "POOLS_DATA_CELO", { enumerable: true, get: function () { return celo_1.POOLS_DATA_CELO; } });
@@ -3,4 +3,4 @@ export declare const lowerCasePoolDataAddresses: (poolsData: IDict<IPoolData>) =
3
3
  export declare const extractDecimals: (poolsData: IDict<IPoolData>) => IDict<number>;
4
4
  export declare const extractGauges: (poolsData: IDict<IPoolData>) => string[];
5
5
  export declare const lowerCaseValues: (dict: IDict<string>) => IDict<string>;
6
- export declare const lowerCaseKeys: (dict: IDict<string>) => IDict<string>;
6
+ export declare const lowerCaseKeys: (dict: IDict<any>) => IDict<any>;
package/lib/curve.js CHANGED
@@ -92,6 +92,7 @@ var xdai_1 = require("./constants/coins/xdai");
92
92
  var moonbeam_1 = require("./constants/coins/moonbeam");
93
93
  var aurora_1 = require("./constants/coins/aurora");
94
94
  var kava_1 = require("./constants/coins/kava");
95
+ var celo_1 = require("./constants/coins/celo");
95
96
  var utils_1 = require("./constants/utils");
96
97
  exports.NATIVE_TOKENS = {
97
98
  1: {
@@ -136,6 +137,12 @@ exports.NATIVE_TOKENS = {
136
137
  address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
137
138
  wrappedAddress: '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b'.toLowerCase(),
138
139
  },
140
+ 42220: {
141
+ symbol: 'CELO',
142
+ wrappedSymbol: 'WCELO',
143
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
144
+ wrappedAddress: '0x3Ad443d769A07f287806874F8E5405cE3Ac902b9'.toLowerCase(),
145
+ },
139
146
  43114: {
140
147
  symbol: 'AVAX',
141
148
  wrappedSymbol: 'WAVAX',
@@ -226,6 +233,16 @@ exports.NETWORK_CONSTANTS = {
226
233
  ycTokens: kava_1.ycTokensKava,
227
234
  aTokens: kava_1.aTokensKava,
228
235
  },
236
+ 42220: {
237
+ NAME: 'celo',
238
+ ALIASES: aliases_1.ALIASES_CELO,
239
+ POOLS_DATA: pools_1.POOLS_DATA_CELO,
240
+ COINS: celo_1.COINS_CELO,
241
+ cTokens: celo_1.cTokensCelo,
242
+ yTokens: celo_1.yTokensCelo,
243
+ ycTokens: celo_1.ycTokensCelo,
244
+ aTokens: celo_1.aTokensCelo,
245
+ },
229
246
  43114: {
230
247
  NAME: 'avalanche',
231
248
  ALIASES: aliases_1.ALIASES_AVALANCHE,
@@ -99,8 +99,8 @@ exports._getLegacyAPYsAndVolumes = (0, memoizee_1.default)(function (network) {
99
99
  return __generator(this, function (_a) {
100
100
  switch (_a.label) {
101
101
  case 0:
102
- if (curve_1.curve.chainId === 2222)
103
- return [2 /*return*/, {}]; // Exclude Kava
102
+ if (curve_1.curve.chainId === 2222 || curve_1.curve.chainId === 42220)
103
+ return [2 /*return*/, {}]; // Exclude Kava and Celo
104
104
  url = "https://stats.curve.fi/raw-stats-".concat(network, "/apys.json");
105
105
  return [4 /*yield*/, axios_1.default.get(url, { validateStatus: function () { return true; } })];
106
106
  case 1:
@@ -119,15 +119,15 @@ exports._getLegacyAPYsAndVolumes = (0, memoizee_1.default)(function (network) {
119
119
  promise: true,
120
120
  maxAge: 5 * 60 * 1000, // 5m
121
121
  });
122
- // Moonbeam and Kava only
122
+ // Moonbeam, Kava and Celo only
123
123
  exports._getFactoryAPYsAndVolumes = (0, memoizee_1.default)(function (network) { return __awaiter(void 0, void 0, void 0, function () {
124
124
  var url, response;
125
125
  var _a;
126
126
  return __generator(this, function (_b) {
127
127
  switch (_b.label) {
128
128
  case 0:
129
- if (curve_1.curve.chainId !== 1284 && curve_1.curve.chainId !== 2222)
130
- return [2 /*return*/, []];
129
+ if (curve_1.curve.chainId === 1313161554)
130
+ return [2 /*return*/, []]; // Exclude Aurora
131
131
  url = "https://api.curve.fi/api/getFactoryAPYs-".concat(network);
132
132
  return [4 /*yield*/, axios_1.default.get(url, { validateStatus: function () { return true; } })];
133
133
  case 1:
@@ -8,6 +8,7 @@ export declare const lpTokenBasePoolIdDictOptimism: IDict<string>;
8
8
  export declare const lpTokenBasePoolIdDictXDai: IDict<string>;
9
9
  export declare const lpTokenBasePoolIdDictMoonbeam: IDict<string>;
10
10
  export declare const lpTokenBasePoolIdDictKava: IDict<string>;
11
+ export declare const lpTokenBasePoolIdDictCelo: IDict<string>;
11
12
  export declare const basePoolIdZapDictEthereum: IDict<{
12
13
  address: string;
13
14
  ABI: any;
@@ -44,6 +45,10 @@ export declare const basePoolIdZapDictKava: IDict<{
44
45
  address: string;
45
46
  ABI: any;
46
47
  }>;
48
+ export declare const basePoolIdZapDictCelo: IDict<{
49
+ address: string;
50
+ ABI: any;
51
+ }>;
47
52
  export declare const CRYPTO_FACTORY_CONSTANTS: {
48
53
  [index: number]: {
49
54
  lpTokenBasePoolIdDict: IDict<string>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CRYPTO_FACTORY_CONSTANTS = exports.basePoolIdZapDictKava = exports.basePoolIdZapDictMoonbeam = exports.basePoolIdZapDictXDai = exports.basePoolIdZapDictOptimism = exports.basePoolIdZapDictArbitrum = exports.basePoolIdZapDictAvalanche = exports.basePoolIdZapDictFantom = exports.basePoolIdZapDictPolygon = exports.basePoolIdZapDictEthereum = exports.lpTokenBasePoolIdDictKava = exports.lpTokenBasePoolIdDictMoonbeam = exports.lpTokenBasePoolIdDictXDai = exports.lpTokenBasePoolIdDictOptimism = exports.lpTokenBasePoolIdDictArbitrum = exports.lpTokenBasePoolIdDictAvalanche = exports.lpTokenBasePoolIdDictFantom = exports.lpTokenBasePoolIdDictPolygon = exports.lpTokenBasePoolIdDictEthereum = void 0;
6
+ exports.CRYPTO_FACTORY_CONSTANTS = exports.basePoolIdZapDictCelo = exports.basePoolIdZapDictKava = exports.basePoolIdZapDictMoonbeam = exports.basePoolIdZapDictXDai = exports.basePoolIdZapDictOptimism = exports.basePoolIdZapDictArbitrum = exports.basePoolIdZapDictAvalanche = exports.basePoolIdZapDictFantom = exports.basePoolIdZapDictPolygon = exports.basePoolIdZapDictEthereum = exports.lpTokenBasePoolIdDictCelo = exports.lpTokenBasePoolIdDictKava = exports.lpTokenBasePoolIdDictMoonbeam = exports.lpTokenBasePoolIdDictXDai = exports.lpTokenBasePoolIdDictOptimism = exports.lpTokenBasePoolIdDictArbitrum = exports.lpTokenBasePoolIdDictAvalanche = exports.lpTokenBasePoolIdDictFantom = exports.lpTokenBasePoolIdDictPolygon = exports.lpTokenBasePoolIdDictEthereum = void 0;
7
7
  var utils_1 = require("../constants/utils");
8
8
  // --- ZAPS --
9
9
  var base_pool_zap_json_1 = __importDefault(require("../constants/abis/atricrypto3/base_pool_zap.json"));
@@ -23,6 +23,7 @@ exports.lpTokenBasePoolIdDictOptimism = (0, utils_1.lowerCaseKeys)({});
23
23
  exports.lpTokenBasePoolIdDictXDai = (0, utils_1.lowerCaseKeys)({});
24
24
  exports.lpTokenBasePoolIdDictMoonbeam = (0, utils_1.lowerCaseKeys)({});
25
25
  exports.lpTokenBasePoolIdDictKava = (0, utils_1.lowerCaseKeys)({});
26
+ exports.lpTokenBasePoolIdDictCelo = (0, utils_1.lowerCaseKeys)({});
26
27
  exports.basePoolIdZapDictEthereum = {
27
28
  '3pool': {
28
29
  address: "0x97aDC08FA1D849D2C48C5dcC1DaB568B169b0267".toLowerCase(),
@@ -46,6 +47,7 @@ exports.basePoolIdZapDictOptimism = {};
46
47
  exports.basePoolIdZapDictXDai = {};
47
48
  exports.basePoolIdZapDictMoonbeam = {};
48
49
  exports.basePoolIdZapDictKava = {};
50
+ exports.basePoolIdZapDictCelo = {};
49
51
  exports.CRYPTO_FACTORY_CONSTANTS = {
50
52
  1: {
51
53
  lpTokenBasePoolIdDict: exports.lpTokenBasePoolIdDictEthereum,
@@ -75,6 +77,10 @@ exports.CRYPTO_FACTORY_CONSTANTS = {
75
77
  lpTokenBasePoolIdDict: exports.lpTokenBasePoolIdDictKava,
76
78
  basePoolIdZapDict: exports.basePoolIdZapDictKava,
77
79
  },
80
+ 42220: {
81
+ lpTokenBasePoolIdDict: exports.lpTokenBasePoolIdDictCelo,
82
+ basePoolIdZapDict: exports.basePoolIdZapDictCelo,
83
+ },
78
84
  43114: {
79
85
  lpTokenBasePoolIdDict: exports.lpTokenBasePoolIdDictAvalanche,
80
86
  basePoolIdZapDict: exports.basePoolIdZapDictAvalanche,
@@ -8,6 +8,7 @@ export declare const implementationABIDictOptimism: IDict<any>;
8
8
  export declare const implementationABIDictXDai: IDict<any>;
9
9
  export declare const implementationABIDictMoonbeam: IDict<any>;
10
10
  export declare const implementationABIDictKava: IDict<any>;
11
+ export declare const implementationABIDictCelo: IDict<any>;
11
12
  export declare const implementationBasePoolIdDictEthereum: IDict<string>;
12
13
  export declare const implementationBasePoolIdDictPolygon: IDict<string>;
13
14
  export declare const implementationBasePoolIdDictFantom: IDict<string>;
@@ -17,6 +18,7 @@ export declare const implementationBasePoolIdDictOptimism: IDict<string>;
17
18
  export declare const implementationBasePoolIdDictXDai: IDict<string>;
18
19
  export declare const implementationBasePoolIdDictMoonbeam: IDict<string>;
19
20
  export declare const implementationBasePoolIdDictKava: IDict<string>;
21
+ export declare const implementationBasePoolIdDictCelo: IDict<string>;
20
22
  export declare const basePoolIdZapDictEthereum: IDict<{
21
23
  address: string;
22
24
  ABI: any;
@@ -53,6 +55,10 @@ export declare const basePoolIdZapDictKava: IDict<{
53
55
  address: string;
54
56
  ABI: any;
55
57
  }>;
58
+ export declare const basePoolIdZapDictCelo: IDict<{
59
+ address: string;
60
+ ABI: any;
61
+ }>;
56
62
  export declare const FACTORY_CONSTANTS: {
57
63
  [index: number]: {
58
64
  implementationABIDict: IDict<any>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FACTORY_CONSTANTS = exports.basePoolIdZapDictKava = exports.basePoolIdZapDictMoonbeam = exports.basePoolIdZapDictXDai = exports.basePoolIdZapDictOptimism = exports.basePoolIdZapDictArbitrum = exports.basePoolIdZapDictAvalanche = exports.basePoolIdZapDictFantom = exports.basePoolIdZapDictPolygon = exports.basePoolIdZapDictEthereum = exports.implementationBasePoolIdDictKava = exports.implementationBasePoolIdDictMoonbeam = exports.implementationBasePoolIdDictXDai = exports.implementationBasePoolIdDictOptimism = exports.implementationBasePoolIdDictArbitrum = exports.implementationBasePoolIdDictAvalanche = exports.implementationBasePoolIdDictFantom = exports.implementationBasePoolIdDictPolygon = exports.implementationBasePoolIdDictEthereum = exports.implementationABIDictKava = exports.implementationABIDictMoonbeam = exports.implementationABIDictXDai = exports.implementationABIDictOptimism = exports.implementationABIDictArbitrum = exports.implementationABIDictAvalanche = exports.implementationABIDictFantom = exports.implementationABIDictPolygon = exports.implementationABIDictEthereum = void 0;
6
+ exports.FACTORY_CONSTANTS = exports.basePoolIdZapDictCelo = exports.basePoolIdZapDictKava = exports.basePoolIdZapDictMoonbeam = exports.basePoolIdZapDictXDai = exports.basePoolIdZapDictOptimism = exports.basePoolIdZapDictArbitrum = exports.basePoolIdZapDictAvalanche = exports.basePoolIdZapDictFantom = exports.basePoolIdZapDictPolygon = exports.basePoolIdZapDictEthereum = exports.implementationBasePoolIdDictCelo = exports.implementationBasePoolIdDictKava = exports.implementationBasePoolIdDictMoonbeam = exports.implementationBasePoolIdDictXDai = exports.implementationBasePoolIdDictOptimism = exports.implementationBasePoolIdDictArbitrum = exports.implementationBasePoolIdDictAvalanche = exports.implementationBasePoolIdDictFantom = exports.implementationBasePoolIdDictPolygon = exports.implementationBasePoolIdDictEthereum = exports.implementationABIDictCelo = exports.implementationABIDictKava = exports.implementationABIDictMoonbeam = exports.implementationABIDictXDai = exports.implementationABIDictOptimism = exports.implementationABIDictArbitrum = exports.implementationABIDictAvalanche = exports.implementationABIDictFantom = exports.implementationABIDictPolygon = exports.implementationABIDictEthereum = void 0;
7
7
  var swap_json_1 = __importDefault(require("../constants/abis/factoryPools/swap.json"));
8
8
  var MetaUSD_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaUSD.json"));
9
9
  var MetaUSDBalances_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaUSDBalances.json"));
@@ -196,6 +196,20 @@ exports.implementationABIDictKava = {
196
196
  "0x6378dd741b24bd884f3590d7bc7555fdb2f5b003": Plain4ETH_json_1.default,
197
197
  "0x509495dfeec3a53acb2f60669985d868131ad9a5": Plain4Optimized_json_1.default,
198
198
  };
199
+ exports.implementationABIDictCelo = {
200
+ "0xfEE7166C32Bdf6356Ef60636f43400AA55551A96": Plain2Basic_json_1.default,
201
+ "0x183Bb362aAa53f24BDF76a5E0FE11eEEce21F44d": Plain2Balances_json_1.default,
202
+ "0x469CF0874E62cfbaD342AE7e11aBCfC0F08dC17d": Plain2ETH_json_1.default,
203
+ "0xE5ddCc991c29d3a5350E1Eb669439F0237dB7490": Plain2Optimized_json_1.default,
204
+ "0xBcdCADB91446366d10b293152c967e64dE789B92": Plain3Basic_json_1.default,
205
+ "0x9Adb8f6B5c4A6Be6625E46e2fd352B859B4bf711": Plain3Balances_json_1.default,
206
+ "0x15Eb833Fa0689458Dc7B11517932780DfdFaa046": Plain3ETH_json_1.default,
207
+ "0xa72F339708461537223Bc415008eD61338Fe0CA2": Plain3Optimized_json_1.default,
208
+ "0x59395Ef4FB6F266F7B117CF0a7223eC45d78A2AF": Plain4Basic_json_1.default,
209
+ "0x3730D8B82BF3fF6Cc6dFDBe2Fd7B2A655e74eAae": Plain4Balances_json_1.default,
210
+ "0x0F5390AB4C5456a769056C96E4D7C71770b52319": Plain4ETH_json_1.default,
211
+ "0xA73b02a97B45604cd9f0BBAA153eCfe01f409350": Plain4Optimized_json_1.default,
212
+ };
199
213
  exports.implementationBasePoolIdDictEthereum = {
200
214
  "0x5F890841f657d90E081bAbdB532A05996Af79Fe6": "3pool",
201
215
  "0x213be373FDff327658139C7df330817DAD2d5bBE": "3pool",
@@ -247,6 +261,7 @@ exports.implementationBasePoolIdDictXDai = {
247
261
  };
248
262
  exports.implementationBasePoolIdDictMoonbeam = {};
249
263
  exports.implementationBasePoolIdDictKava = {};
264
+ exports.implementationBasePoolIdDictCelo = {};
250
265
  exports.basePoolIdZapDictEthereum = {
251
266
  '3pool': {
252
267
  address: "0xA79828DF1850E8a3A3064576f380D90aECDD3359".toLowerCase(),
@@ -331,6 +346,7 @@ exports.basePoolIdZapDictXDai = {
331
346
  };
332
347
  exports.basePoolIdZapDictMoonbeam = {};
333
348
  exports.basePoolIdZapDictKava = {};
349
+ exports.basePoolIdZapDictCelo = {};
334
350
  exports.FACTORY_CONSTANTS = {
335
351
  1: {
336
352
  implementationABIDict: exports.implementationABIDictEthereum,
@@ -367,6 +383,11 @@ exports.FACTORY_CONSTANTS = {
367
383
  implementationBasePoolIdDict: exports.implementationBasePoolIdDictKava,
368
384
  basePoolIdZapDict: exports.basePoolIdZapDictKava,
369
385
  },
386
+ 42220: {
387
+ implementationABIDict: exports.implementationABIDictCelo,
388
+ implementationBasePoolIdDict: exports.implementationBasePoolIdDictCelo,
389
+ basePoolIdZapDict: exports.basePoolIdZapDictCelo,
390
+ },
370
391
  43114: {
371
392
  implementationABIDict: exports.implementationABIDictAvalanche,
372
393
  implementationBasePoolIdDict: exports.implementationBasePoolIdDictAvalanche,
@@ -273,24 +273,7 @@ function getExistingCoinAddressNameDict() {
273
273
  var poolData = _a[_i];
274
274
  _loop_1(poolData);
275
275
  }
276
- if (this.chainId === 1)
277
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
278
- if (this.chainId === 10)
279
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
280
- if (this.chainId === 100)
281
- dict[this.constants.NATIVE_TOKEN.address] = "XDAI";
282
- if (this.chainId === 137)
283
- dict[this.constants.NATIVE_TOKEN.address] = "MATIC";
284
- if (this.chainId === 250)
285
- dict[this.constants.NATIVE_TOKEN.address] = "FTM";
286
- if (this.chainId === 1284)
287
- dict[this.constants.NATIVE_TOKEN.address] = "GLMR";
288
- if (this.chainId === 2222)
289
- dict[this.constants.NATIVE_TOKEN.address] = "KAVA";
290
- if (this.chainId === 43114)
291
- dict[this.constants.NATIVE_TOKEN.address] = "AVAX";
292
- if (this.chainId === 42161)
293
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
276
+ dict[this.constants.NATIVE_TOKEN.address] = this.constants.NATIVE_TOKEN.symbol;
294
277
  return dict;
295
278
  }
296
279
  function getCoinAddressNameDict(coinAddresses, existingCoinAddrNameDict) {
@@ -69,19 +69,11 @@ var gauge_child_json_1 = __importDefault(require("../constants/abis/gauge_child.
69
69
  var common_1 = require("./common");
70
70
  var constants_1 = require("./constants");
71
71
  var BLACK_LIST = {
72
- 1: [],
73
- 10: [],
74
- 100: [],
75
72
  137: [
76
73
  "0x666dc3b4babfd063faf965bd020024af0dc51b64",
77
74
  "0xe4199bc5c5c1f63dba47b56b6db7144c51cf0bf8",
78
75
  "0x88c4d6534165510b2e2caf0a130d4f70aa4b6d71",
79
76
  ],
80
- 250: [],
81
- 1284: [],
82
- 2222: [],
83
- 43114: [],
84
- 42161: [],
85
77
  };
86
78
  var deepFlatten = function (arr) { return [].concat.apply([], arr.map(function (v) { return (Array.isArray(v) ? deepFlatten(v) : v); })); };
87
79
  function getRecentlyCreatedPoolId(swapAddress) {
@@ -115,27 +107,28 @@ function getRecentlyCreatedPoolId(swapAddress) {
115
107
  });
116
108
  }
117
109
  function getFactoryIdsAndSwapAddresses() {
110
+ var _a;
118
111
  return __awaiter(this, void 0, void 0, function () {
119
- var factoryContract, factoryMulticallContract, poolCount, _a, _b, _c, calls, i, factories, swapAddresses, blacklist;
120
- return __generator(this, function (_e) {
121
- switch (_e.label) {
112
+ var factoryContract, factoryMulticallContract, poolCount, _b, _c, _e, calls, i, factories, swapAddresses, blacklist;
113
+ return __generator(this, function (_f) {
114
+ switch (_f.label) {
122
115
  case 0:
123
116
  factoryContract = this.contracts[this.constants.ALIASES.factory].contract;
124
117
  factoryMulticallContract = this.contracts[this.constants.ALIASES.factory].multicallContract;
125
- _a = Number;
126
- _c = (_b = ethers_1.ethers.utils).formatUnits;
118
+ _b = Number;
119
+ _e = (_c = ethers_1.ethers.utils).formatUnits;
127
120
  return [4 /*yield*/, factoryContract.pool_count(this.constantOptions)];
128
121
  case 1:
129
- poolCount = _a.apply(void 0, [_c.apply(_b, [_e.sent(), 0])]);
122
+ poolCount = _b.apply(void 0, [_e.apply(_c, [_f.sent(), 0])]);
130
123
  calls = [];
131
124
  for (i = 0; i < poolCount; i++) {
132
125
  calls.push(factoryMulticallContract.pool_list(i));
133
126
  }
134
127
  return [4 /*yield*/, this.multicallProvider.all(calls)];
135
128
  case 2:
136
- factories = (_e.sent()).map(function (addr, i) { return ({ id: "factory-v2-".concat(i), address: addr.toLowerCase() }); });
129
+ factories = (_f.sent()).map(function (addr, i) { return ({ id: "factory-v2-".concat(i), address: addr.toLowerCase() }); });
137
130
  swapAddresses = Object.values(this.constants.POOLS_DATA).map(function (pool) { return pool.swap_address.toLowerCase(); });
138
- blacklist = BLACK_LIST[this.chainId];
131
+ blacklist = (_a = BLACK_LIST[this.chainId]) !== null && _a !== void 0 ? _a : [];
139
132
  factories = factories.filter(function (f) { return !swapAddresses.includes(f.address) && !blacklist.includes(f.address); });
140
133
  return [2 /*return*/, [factories.map(function (f) { return f.id; }), factories.map(function (f) { return f.address; })]];
141
134
  }
@@ -299,24 +292,7 @@ function getExistingCoinAddressNameDict() {
299
292
  var poolData = _a[_i];
300
293
  _loop_1(poolData);
301
294
  }
302
- if (this.chainId === 1)
303
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
304
- if (this.chainId === 10)
305
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
306
- if (this.chainId === 100)
307
- dict[this.constants.NATIVE_TOKEN.address] = "XDAI";
308
- if (this.chainId === 137)
309
- dict[this.constants.NATIVE_TOKEN.address] = "MATIC";
310
- if (this.chainId === 250)
311
- dict[this.constants.NATIVE_TOKEN.address] = "FTM";
312
- if (this.chainId === 1284)
313
- dict[this.constants.NATIVE_TOKEN.address] = "GLMR";
314
- if (this.chainId === 2222)
315
- dict[this.constants.NATIVE_TOKEN.address] = "KAVA";
316
- if (this.chainId === 43114)
317
- dict[this.constants.NATIVE_TOKEN.address] = "AVAX";
318
- if (this.chainId === 42161)
319
- dict[this.constants.NATIVE_TOKEN.address] = "ETH";
295
+ dict[this.constants.NATIVE_TOKEN.address] = this.constants.NATIVE_TOKEN.symbol;
320
296
  return dict;
321
297
  }
322
298
  function getCoinAddressNameDict(coinAddresses, existingCoinAddrNameDict) {
package/lib/index.d.ts CHANGED
@@ -52,6 +52,10 @@ declare const curve: {
52
52
  getAllowance: (coins: string[], address: string, spender: string) => Promise<string[]>;
53
53
  hasAllowance: (coins: string[], amounts: (string | number)[], address: string, spender: string) => Promise<boolean>;
54
54
  ensureAllowance: (coins: string[], amounts: (string | number)[], spender: string) => Promise<string[]>;
55
+ getCoinNamesAndSymbols: (coins: string[]) => Promise<{
56
+ name: string;
57
+ symbol: string;
58
+ }[]>;
55
59
  factory: {
56
60
  deployPlainPool: (name: string, symbol: string, coins: string[], A: number, fee: number, assetType: 0 | 1 | 2 | 3, implementationIdx: 0 | 1 | 2 | 3) => Promise<ethers.ContractTransaction>;
57
61
  deployMetaPool: (basePool: string, name: string, symbol: string, coin: string, A: number, fee: number, implementationIdx: 0 | 1) => Promise<ethers.ContractTransaction>;
package/lib/index.js CHANGED
@@ -132,6 +132,7 @@ var curve = {
132
132
  getAllowance: utils_2.getAllowance,
133
133
  hasAllowance: utils_2.hasAllowance,
134
134
  ensureAllowance: utils_2.ensureAllowance,
135
+ getCoinNamesAndSymbols: utils_2.getCoinNamesAndSymbols,
135
136
  factory: {
136
137
  deployPlainPool: deploy_1.deployStablePlainPool,
137
138
  deployMetaPool: deploy_1.deployStableMetaPool,
@@ -167,7 +167,7 @@ var PoolTemplate = /** @class */ (function () {
167
167
  return __generator(this, function (_e) {
168
168
  switch (_e.label) {
169
169
  case 0:
170
- if (![1284, 2222, 1313161554].includes(curve_1.curve.chainId)) return [3 /*break*/, 3];
170
+ if (![1284, 2222, 42220, 1313161554].includes(curve_1.curve.chainId)) return [3 /*break*/, 3];
171
171
  return [4 /*yield*/, Promise.all([
172
172
  (0, external_api_1._getLegacyAPYsAndVolumes)(curve_1.curve.constants.NETWORK_NAME),
173
173
  (0, external_api_1._getFactoryAPYsAndVolumes)(curve_1.curve.constants.NETWORK_NAME),
@@ -202,7 +202,7 @@ var PoolTemplate = /** @class */ (function () {
202
202
  return __generator(this, function (_d) {
203
203
  switch (_d.label) {
204
204
  case 0:
205
- if (![1284, 2222, 1313161554].includes(curve_1.curve.chainId)) return [3 /*break*/, 2];
205
+ if (![1284, 2222, 42220, 1313161554].includes(curve_1.curve.chainId)) return [3 /*break*/, 2];
206
206
  return [4 /*yield*/, Promise.all([
207
207
  (0, external_api_1._getLegacyAPYsAndVolumes)(curve_1.curve.constants.NETWORK_NAME),
208
208
  (0, external_api_1._getFactoryAPYsAndVolumes)(curve_1.curve.constants.NETWORK_NAME),
@@ -1116,8 +1116,8 @@ var PoolTemplate = /** @class */ (function () {
1116
1116
  };
1117
1117
  }
1118
1118
  PoolTemplate.prototype.rewardsOnly = function () {
1119
- if (curve_1.curve.chainId === 2222)
1120
- return true; // TODO remove this for Kava
1119
+ if (curve_1.curve.chainId === 2222 || curve_1.curve.chainId === 42220)
1120
+ return true; // TODO remove this for Kava and Celo
1121
1121
  if (this.gauge === ethers_1.ethers.constants.AddressZero)
1122
1122
  throw Error("".concat(this.name, " doesn't have gauge"));
1123
1123
  var gaugeContract = curve_1.curve.contracts[this.gauge].contract;
@@ -2714,7 +2714,7 @@ var PoolTemplate = /** @class */ (function () {
2714
2714
  case 2:
2715
2715
  _smallOutput = _d.sent();
2716
2716
  priceImpactBN = (0, utils_1._get_price_impact)(_amount, _output, _smallAmount, _smallOutput, inputCoinDecimals, outputCoinDecimals);
2717
- return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)).replace('-', ''))];
2717
+ return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)))];
2718
2718
  }
2719
2719
  });
2720
2720
  });
@@ -2825,7 +2825,7 @@ var PoolTemplate = /** @class */ (function () {
2825
2825
  case 2:
2826
2826
  _smallOutput = _d.sent();
2827
2827
  priceImpactBN = (0, utils_1._get_price_impact)(_amount, _output, _smallAmount, _smallOutput, inputCoinDecimals, outputCoinDecimals);
2828
- return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)).replace('-', ''))];
2828
+ return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)))];
2829
2829
  }
2830
2830
  });
2831
2831
  });
@@ -182,7 +182,7 @@ var _getUserClaimable = function (pools, address, useCache) { return __awaiter(v
182
182
  for (_i = 0, poolsToFetch_3 = poolsToFetch; _i < poolsToFetch_3.length; _i++) {
183
183
  poolId = poolsToFetch_3[_i];
184
184
  pool = (0, poolConstructor_1.getPool)(poolId);
185
- if (curve_1.curve.chainId === 2222 || pool.gauge === ethers_1.ethers.constants.AddressZero) { // TODO remove this for Kava
185
+ if (curve_1.curve.chainId === 2222 || curve_1.curve.chainId === 42220 || pool.gauge === ethers_1.ethers.constants.AddressZero) { // TODO remove this for Kava and Celo
186
186
  hasCrvReward.push(false);
187
187
  continue;
188
188
  }
package/lib/router.js CHANGED
@@ -765,7 +765,7 @@ var swapPriceImpact = function (inputCoin, outputCoin, amount) { return __awaite
765
765
  case 2:
766
766
  _smallOutput = _d.sent();
767
767
  priceImpactBN = (0, utils_1._get_price_impact)(_amount, _output, _smallAmount, _smallOutput, inputCoinDecimals, outputCoinDecimals);
768
- return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)).replace('-', ''))];
768
+ return [2 /*return*/, Number((0, utils_1._cutZeros)(priceImpactBN.toFixed(4)))];
769
769
  }
770
770
  });
771
771
  }); };
package/lib/utils.d.ts CHANGED
@@ -33,3 +33,7 @@ export declare const getTVL: (chainId?: number) => Promise<number>;
33
33
  export declare const _setContracts: (address: string, abi: any) => void;
34
34
  export declare const _get_small_x: (_x: ethers.BigNumber, _y: ethers.BigNumber, x_decimals: number, y_decimals: number) => BigNumber;
35
35
  export declare const _get_price_impact: (_x: ethers.BigNumber, _y: ethers.BigNumber, _small_x: ethers.BigNumber, _small_y: ethers.BigNumber, x_decimals: number, y_decimals: number) => BigNumber;
36
+ export declare const getCoinNamesAndSymbols: (coins: string[]) => Promise<{
37
+ name: string;
38
+ symbol: string;
39
+ }[]>;
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._get_price_impact = exports._get_small_x = exports._setContracts = exports.getTVL = exports.getUsdRate = 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._getCoinAddressesNoCheck = exports.getEthIndex = exports.isEth = exports.parseUnits = exports.formatNumber = exports.checkNumber = exports._cutZeros = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = exports.ETH_ADDRESS = void 0;
62
+ exports.getCoinNamesAndSymbols = exports._get_price_impact = exports._get_small_x = exports._setContracts = exports.getTVL = exports.getUsdRate = 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._getCoinAddressesNoCheck = exports.getEthIndex = exports.isEth = exports.parseUnits = exports.formatNumber = exports.checkNumber = exports._cutZeros = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = exports.ETH_ADDRESS = void 0;
63
63
  var axios_1 = __importDefault(require("axios"));
64
64
  var ethers_1 = require("ethers");
65
+ var ethcall_1 = require("ethcall");
65
66
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
66
67
  var curve_1 = require("./curve");
67
68
  var external_api_1 = require("./external-api");
68
- var ethcall_1 = require("ethcall");
69
+ var ERC20_json_1 = __importDefault(require("./constants/abis/ERC20.json"));
69
70
  exports.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
@@ -472,6 +473,7 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
472
473
  250: 'fantom',
473
474
  1284: 'moonbeam',
474
475
  2222: 'kava',
476
+ 42220: 'celo',
475
477
  43114: 'avalanche',
476
478
  42161: 'arbitrum-one',
477
479
  1313161554: 'aurora',
@@ -484,6 +486,7 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
484
486
  250: 'fantom',
485
487
  1284: 'moonbeam',
486
488
  2222: 'kava',
489
+ 42220: 'celo',
487
490
  43114: 'avalanche-2',
488
491
  42161: 'ethereum',
489
492
  1313161554: 'ethereum',
@@ -555,6 +558,7 @@ var getTVL = function (chainId) {
555
558
  250: "fantom",
556
559
  1284: "moonbeam",
557
560
  2222: 'kava',
561
+ 42220: 'celo',
558
562
  43114: "avalanche",
559
563
  42161: "arbitrum",
560
564
  1313161554: "aurora",
@@ -600,6 +604,42 @@ var _get_price_impact = function (_x, _y, _small_x, _small_y, x_decimals, y_deci
600
604
  var small_y_BN = (0, exports.toBN)(_small_y, y_decimals);
601
605
  var rateBN = y_BN.div(x_BN);
602
606
  var smallRateBN = small_y_BN.div(small_x_BN);
607
+ if (rateBN.gt(smallRateBN))
608
+ return (0, exports.BN)(0);
603
609
  return (0, exports.BN)(1).minus(rateBN.div(smallRateBN)).times(100);
604
610
  };
605
611
  exports._get_price_impact = _get_price_impact;
612
+ var getCoinNamesAndSymbols = function (coins) { return __awaiter(void 0, void 0, void 0, function () {
613
+ var coinAddresses, ethIndex, contractCalls, _i, coinAddresses_3, coinAddr, coinContract, _response, res;
614
+ return __generator(this, function (_a) {
615
+ switch (_a.label) {
616
+ case 0:
617
+ coinAddresses = (0, exports._getCoinAddressesNoCheck)(coins);
618
+ ethIndex = (0, exports.getEthIndex)(coinAddresses);
619
+ if (ethIndex !== -1) {
620
+ coinAddresses.splice(ethIndex, 1);
621
+ }
622
+ contractCalls = [];
623
+ for (_i = 0, coinAddresses_3 = coinAddresses; _i < coinAddresses_3.length; _i++) {
624
+ coinAddr = coinAddresses_3[_i];
625
+ coinContract = new ethcall_1.Contract(coinAddr, ERC20_json_1.default);
626
+ contractCalls.push(coinContract.name(), coinContract.symbol());
627
+ }
628
+ return [4 /*yield*/, curve_1.curve.multicallProvider.all(contractCalls)];
629
+ case 1:
630
+ _response = _a.sent();
631
+ if (ethIndex !== -1) {
632
+ _response.splice.apply(_response, __spreadArray([ethIndex * 2, 0], ['Ethereum', 'ETH'], false));
633
+ }
634
+ res = [];
635
+ coins.forEach(function (address, i) {
636
+ res.push({
637
+ name: _response.shift(),
638
+ symbol: _response.shift(),
639
+ });
640
+ });
641
+ return [2 /*return*/, res];
642
+ }
643
+ });
644
+ }); };
645
+ exports.getCoinNamesAndSymbols = getCoinNamesAndSymbols;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/api",
3
- "version": "2.20.0",
3
+ "version": "2.21.0",
4
4
  "description": "JavaScript library for curve.fi",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",
@@ -34,7 +34,7 @@
34
34
  "@ethersproject/networks": "^5.5.0",
35
35
  "axios": "^0.21.1",
36
36
  "bignumber.js": "^9.0.1",
37
- "ethcall": "^4.8.4",
37
+ "ethcall": "^4.8.9",
38
38
  "ethers": "^5.4.6",
39
39
  "memoizee": "^0.4.15"
40
40
  }