@curvefi/api 2.1.0 → 2.2.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.
@@ -55,10 +55,9 @@ var ethcall_1 = require("ethcall");
55
55
  var gauge_factory_json_1 = __importDefault(require("../constants/abis/gauge_factory.json"));
56
56
  var deposit_json_1 = __importDefault(require("../constants/abis/factoryPools/deposit.json"));
57
57
  var ERC20_json_1 = __importDefault(require("../constants/abis/ERC20.json"));
58
- var DepositZapMetaUsdPolygon_json_1 = __importDefault(require("../constants/abis/factory-v2/DepositZapMetaUsdPolygon.json"));
59
- var DepositZapMetaBtcPolygon_json_1 = __importDefault(require("../constants/abis/factory-v2/DepositZapMetaBtcPolygon.json"));
60
58
  var factory_crypto_pool_2_json_1 = __importDefault(require("../constants/abis/factory-crypto/factory-crypto-pool-2.json"));
61
59
  var constants_1 = require("./constants");
60
+ var common_1 = require("./common");
62
61
  function setFactorySwapContracts(rawPoolList, isCrypto) {
63
62
  var _this = this;
64
63
  if (isCrypto) {
@@ -71,7 +70,7 @@ function setFactorySwapContracts(rawPoolList, isCrypto) {
71
70
  });
72
71
  }
73
72
  else {
74
- var implementationABIDict_1 = this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
73
+ var implementationABIDict_1 = constants_1.FACTORY_CONSTANTS[this.chainId].implementationABIDict;
75
74
  rawPoolList.forEach(function (pool) {
76
75
  var addr = pool.address.toLowerCase();
77
76
  _this.contracts[addr] = {
@@ -134,27 +133,6 @@ function setFactoryRewardCoinsContracts(rawPoolList) {
134
133
  }
135
134
  }
136
135
  }
137
- function setFactoryZapContracts() {
138
- if (this.chainId === 137) {
139
- var metaUsdZapAddress = "0x5ab5C56B9db92Ba45a0B46a207286cD83C15C939".toLowerCase();
140
- this.contracts[metaUsdZapAddress] = {
141
- contract: new ethers_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default, this.signer || this.provider),
142
- multicallContract: new ethcall_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default),
143
- };
144
- var metaBtcZapAddress = "0xE2e6DC1708337A6e59f227921db08F21e3394723".toLowerCase();
145
- this.contracts[metaBtcZapAddress] = {
146
- contract: new ethers_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default, this.signer || this.provider),
147
- multicallContract: new ethcall_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default),
148
- };
149
- }
150
- else {
151
- var metaSBtcZapAddress = "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase();
152
- this.contracts[metaSBtcZapAddress] = {
153
- contract: new ethers_1.Contract(metaSBtcZapAddress, deposit_json_1.default, this.signer || this.provider),
154
- multicallContract: new ethcall_1.Contract(metaSBtcZapAddress, deposit_json_1.default),
155
- };
156
- }
157
- }
158
136
  function getFactoryPoolsDataFromApi(isCrypto) {
159
137
  return __awaiter(this, void 0, void 0, function () {
160
138
  var network, factoryType, url, response, rawPoolList, mainAddresses, FACTORY_POOLS_DATA;
@@ -162,7 +140,7 @@ function getFactoryPoolsDataFromApi(isCrypto) {
162
140
  return __generator(this, function (_a) {
163
141
  switch (_a.label) {
164
142
  case 0:
165
- network = this.chainId === 137 ? "polygon" : "ethereum";
143
+ network = this.constants.NETWORK_NAME;
166
144
  factoryType = isCrypto ? "factory-crypto" : "factory";
167
145
  url = "https://api.curve.fi/api/getPools/".concat(network, "/").concat(factoryType);
168
146
  return [4 /*yield*/, axios_1.default.get(url)];
@@ -178,7 +156,7 @@ function getFactoryPoolsDataFromApi(isCrypto) {
178
156
  setFactoryCoinsContracts.call(this, rawPoolList);
179
157
  setFactoryRewardCoinsContracts.call(this, rawPoolList);
180
158
  if (!isCrypto)
181
- setFactoryZapContracts.call(this);
159
+ common_1.setFactoryZapContracts.call(this);
182
160
  FACTORY_POOLS_DATA = {};
183
161
  rawPoolList.forEach(function (pool) {
184
162
  var _a, _b, _c, _d, _e, _f;
@@ -212,18 +190,21 @@ function getFactoryPoolsDataFromApi(isCrypto) {
212
190
  };
213
191
  }
214
192
  else if (pool.implementation.startsWith("meta")) {
215
- var implementationABIDict = _this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
216
- var implementationBasePoolAddressDict = _this.chainId === 137 ? constants_1.implementationBasePoolAddressDictPolygon : constants_1.implementationBasePoolAddressDictEthereum;
217
- var basePoolAddressCoinsDict = _this.chainId === 137 ? constants_1.basePoolAddressCoinsDictPolygon : constants_1.basePoolAddressCoinsDictEthereum;
218
- var basePoolAddressNameDict = _this.chainId === 137 ? constants_1.basePoolAddressNameDictPolygon : constants_1.basePoolAddressNameDictEthereum;
219
- var basePoolAddressCoinAddressesDict = _this.chainId === 137 ? constants_1.basePoolAddressCoinAddressesDictPolygon : constants_1.basePoolAddressCoinAddressesDictEthereum;
220
- var basePoolAddressDecimalsDict = _this.chainId === 137 ? constants_1.basePoolAddressDecimalsDictPolygon : constants_1.basePoolAddressDecimalsDictEthereum;
221
- var basePoolAddressZapDict = _this.chainId === 137 ? constants_1.basePoolAddressZapDictPolygon : constants_1.basePoolAddressZapDictEthereum;
193
+ var implementationABIDict = constants_1.FACTORY_CONSTANTS[_this.chainId].implementationABIDict;
194
+ var implementationBasePoolAddressDict = constants_1.FACTORY_CONSTANTS[_this.chainId].implementationBasePoolAddressDict;
195
+ var basePoolAddressIdDict = constants_1.FACTORY_CONSTANTS[_this.chainId].basePoolAddressIdDict; // @ts-ignore
196
+ var basePoolIdCoinsDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_coins]; }));
197
+ // @ts-ignore
198
+ var basePoolIdCoinAddressesDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_coin_addresses]; }));
199
+ // @ts-ignore
200
+ var basePoolIdDecimalsDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_decimals]; }));
201
+ var basePoolIdZapDict = constants_1.FACTORY_CONSTANTS[_this.chainId].basePoolIdZapDict;
222
202
  var basePoolAddress = implementationBasePoolAddressDict[pool.implementationAddress];
223
- var basePoolCoinNames = basePoolAddressCoinsDict[basePoolAddress];
224
- var basePoolCoinAddresses = basePoolAddressCoinAddressesDict[basePoolAddress];
225
- var basePoolDecimals = basePoolAddressDecimalsDict[basePoolAddress];
226
- var basePoolZap = basePoolAddressZapDict[basePoolAddress];
203
+ var basePoolId = basePoolAddressIdDict[basePoolAddress];
204
+ var basePoolCoinNames = basePoolIdCoinsDict[basePoolId];
205
+ var basePoolCoinAddresses = basePoolIdCoinAddressesDict[basePoolId];
206
+ var basePoolDecimals = basePoolIdDecimalsDict[basePoolId];
207
+ var basePoolZap = basePoolIdZapDict[basePoolId];
227
208
  FACTORY_POOLS_DATA[pool.id] = {
228
209
  name: pool.name.split(": ")[1].trim(),
229
210
  full_name: pool.name,
@@ -235,7 +216,7 @@ function getFactoryPoolsDataFromApi(isCrypto) {
235
216
  deposit_address: basePoolZap,
236
217
  is_meta: true,
237
218
  is_factory: true,
238
- base_pool: basePoolAddressNameDict[basePoolAddress],
219
+ base_pool: basePoolId,
239
220
  underlying_coins: __spreadArray([coinNames[0]], basePoolCoinNames, true),
240
221
  wrapped_coins: coinNames,
241
222
  underlying_coin_addresses: __spreadArray([coinAddresses[0]], basePoolCoinAddresses, true),
@@ -250,7 +231,7 @@ function getFactoryPoolsDataFromApi(isCrypto) {
250
231
  };
251
232
  }
252
233
  else {
253
- var implementationABIDict = _this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
234
+ var implementationABIDict = constants_1.FACTORY_CONSTANTS[_this.chainId].implementationABIDict;
254
235
  FACTORY_POOLS_DATA[pool.id] = {
255
236
  name: pool.name.split(": ")[1].trim(),
256
237
  full_name: pool.name,
@@ -45,7 +45,7 @@ var ethcall_1 = require("ethcall");
45
45
  var ERC20_json_1 = __importDefault(require("../constants/abis/ERC20.json"));
46
46
  var factory_crypto_pool_2_json_1 = __importDefault(require("../constants/abis/factory-crypto/factory-crypto-pool-2.json"));
47
47
  var gauge_factory_json_1 = __importDefault(require("../constants/abis/gauge_factory.json"));
48
- var WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
48
+ var constants_1 = require("./constants");
49
49
  var deepFlatten = function (arr) { return [].concat.apply([], arr.map(function (v) { return (Array.isArray(v) ? deepFlatten(v) : v); })); };
50
50
  function getCryptoFactoryIdsAndSwapAddresses() {
51
51
  return __awaiter(this, void 0, void 0, function () {
@@ -198,7 +198,7 @@ function setCryptoFactoryCoinsContracts(coinAddresses) {
198
198
  function getCryptoFactoryUnderlyingCoinAddresses(coinAddresses) {
199
199
  return __awaiter(this, void 0, void 0, function () {
200
200
  return __generator(this, function (_a) {
201
- return [2 /*return*/, coinAddresses.map(function (coins) { return coins.map(function (c) { return c === WETH_ADDRESS ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : c; }); })];
201
+ return [2 /*return*/, coinAddresses.map(function (coins) { return coins.map(function (c) { return c === constants_1.WETH_ADDRESS ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : c; }); })];
202
202
  });
203
203
  });
204
204
  }
@@ -220,8 +220,12 @@ function getExistingCoinAddressNameDict() {
220
220
  var poolData = _a[_i];
221
221
  _loop_1(poolData);
222
222
  }
223
+ if (this.chainId === 1)
224
+ dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "ETH";
223
225
  if (this.chainId === 137)
224
226
  dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "MATIC";
227
+ if (this.chainId === 43114)
228
+ dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "AVAX";
225
229
  return dict;
226
230
  }
227
231
  function getCoinAddressNameDict(coinAddresses, existingCoinAddrNameDict) {
@@ -288,6 +292,7 @@ function getCoinAddressDecimalsDict(coinAddresses, existingCoinAddressDecimalsDi
288
292
  newCoinAddresses.forEach(function (addr, i) {
289
293
  coinAddrNamesDict[addr] = decimals[i];
290
294
  });
295
+ coinAddrNamesDict['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] = 18;
291
296
  return [2 /*return*/, coinAddrNamesDict];
292
297
  }
293
298
  });
@@ -324,11 +329,9 @@ function getCryptoFactoryPoolData() {
324
329
  return [4 /*yield*/, getCoinAddressNameDict.call(this, coinAddresses, existingCoinAddressNameDict)];
325
330
  case 7:
326
331
  coinAddressNameDict = _c.sent();
327
- coinAddressNameDict['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] = 'ETH';
328
332
  return [4 /*yield*/, getCoinAddressDecimalsDict.call(this, coinAddresses, this.constants.DECIMALS)];
329
333
  case 8:
330
334
  coinAddressDecimalsDict = _c.sent();
331
- coinAddressDecimalsDict['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] = 18;
332
335
  CRYPTO_FACTORY_POOLS_DATA = {};
333
336
  for (i = 0; i < poolIds.length; i++) {
334
337
  CRYPTO_FACTORY_POOLS_DATA[poolIds[i]] = {
@@ -52,137 +52,19 @@ exports.getFactoryPoolData = void 0;
52
52
  var ethers_1 = require("ethers");
53
53
  var ethcall_1 = require("ethcall");
54
54
  var ERC20_json_1 = __importDefault(require("../constants/abis/ERC20.json"));
55
- var swap_json_1 = __importDefault(require("../constants/abis/factoryPools/swap.json"));
56
55
  var deposit_json_1 = __importDefault(require("../constants/abis/factoryPools/deposit.json"));
57
56
  var gauge_factory_json_1 = __importDefault(require("../constants/abis/gauge_factory.json"));
58
- var DepositZapMetaUsdPolygon_json_1 = __importDefault(require("../constants/abis/factory-v2/DepositZapMetaUsdPolygon.json"));
59
- var DepositZapMetaBtcPolygon_json_1 = __importDefault(require("../constants/abis/factory-v2/DepositZapMetaBtcPolygon.json"));
60
- var MetaUSD_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaUSD.json"));
61
- var MetaUSDBalances_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaUSDBalances.json"));
62
- var MetaBTC_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaBTC.json"));
63
- var MetaBTCBalances_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaBTCBalances.json"));
64
- var MetaBTCRen_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaBTCRen.json"));
65
- var MetaBTCBalancesRen_json_1 = __importDefault(require("../constants/abis/factory-v2/MetaBTCBalancesRen.json"));
66
- var Plain2Basic_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain2Basic.json"));
67
- var Plain2Balances_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain2Balances.json"));
68
- var Plain2ETH_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain2ETH.json"));
69
- var Plain2Optimized_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain2Optimized.json"));
70
- var Plain3Basic_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain3Basic.json"));
71
- var Plain3Balances_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain3Balances.json"));
72
- var Plain3ETH_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain3ETH.json"));
73
- var Plain3Optimized_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain3Optimized.json"));
74
- var Plain4Basic_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain4Basic.json"));
75
- var Plain4Balances_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain4Balances.json"));
76
- var Plain4ETH_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain4ETH.json"));
77
- var Plain4Optimized_json_1 = __importDefault(require("../constants/abis/factory-v2/Plain4Optimized.json"));
78
- var implementationABIDictEthereum = {
79
- "0x5F890841f657d90E081bAbdB532A05996Af79Fe6": swap_json_1.default,
80
- "0x213be373FDff327658139C7df330817DAD2d5bBE": MetaUSD_json_1.default,
81
- "0x55Aa9BF126bCABF0bDC17Fa9E39Ec9239e1ce7A9": MetaUSDBalances_json_1.default,
82
- "0xC6A8466d128Fbfd34AdA64a9FFFce325D57C9a52": MetaBTC_json_1.default,
83
- "0xc4C78b08fA0c3d0a312605634461A88184Ecd630": MetaBTCBalances_json_1.default,
84
- "0xECAaecd9d2193900b424774133B1f51ae0F29d9E": MetaBTCRen_json_1.default,
85
- "0x40fD58D44cFE63E8517c9Bb3ac98676838Ea56A8": MetaBTCBalancesRen_json_1.default,
86
- "0x6523Ac15EC152Cb70a334230F6c5d62C5Bd963f1": Plain2Basic_json_1.default,
87
- "0x24D937143d3F5cF04c72bA112735151A8CAE2262": Plain2Balances_json_1.default,
88
- "0x6326DEbBAa15bCFE603d831e7D75f4fc10d9B43E": Plain2ETH_json_1.default,
89
- "0x4A4d7868390EF5CaC51cDA262888f34bD3025C3F": Plain2Optimized_json_1.default,
90
- "0x9B52F13DF69D79Ec5aAB6D1aCe3157d29B409cC3": Plain3Basic_json_1.default,
91
- "0x50b085f2e5958C4A87baf93A8AB79F6bec068494": Plain3Balances_json_1.default,
92
- "0x8c1aB78601c259E1B43F19816923609dC7d7de9B": Plain3ETH_json_1.default,
93
- "0xE5F4b89E0A16578B3e0e7581327BDb4C712E44De": Plain3Optimized_json_1.default,
94
- "0x5Bd47eA4494e0F8DE6e3Ca10F1c05F55b72466B8": Plain4Basic_json_1.default,
95
- "0xd35B58386705CE75CE6d09842E38E9BE9CDe5bF6": Plain4Balances_json_1.default,
96
- "0x88855cdF2b0A8413D470B86952E726684de915be": Plain4ETH_json_1.default,
97
- "0xaD4753D045D3Aed5C1a6606dFb6a7D7AD67C1Ad7": Plain4Optimized_json_1.default,
57
+ var common_1 = require("./common");
58
+ var constants_1 = require("./constants");
59
+ var BLACK_LIST = {
60
+ 1: [],
61
+ 137: [
62
+ "0x666dc3b4babfd063faf965bd020024af0dc51b64",
63
+ "0xe4199bc5c5c1f63dba47b56b6db7144c51cf0bf8",
64
+ "0x88c4d6534165510b2e2caf0a130d4f70aa4b6d71",
65
+ ],
66
+ 43114: [],
98
67
  };
99
- var implementationABIDictPolygon = {
100
- "0x4fb93D7d320E8A263F22f62C2059dFC2A8bCbC4c": MetaUSD_json_1.default,
101
- "0x39fE1824f98CD828050D7c51dA443E84121c7cf1": MetaUSDBalances_json_1.default,
102
- "0xC05EB760A135d3D0c839f1141423002681157a17": MetaBTCRen_json_1.default,
103
- "0xD8336532f6ED7b94282fAF724fe41d6145E07Cfc": MetaBTCBalancesRen_json_1.default,
104
- "0x571FF5b7b346F706aa48d696a9a4a288e9Bb4091": Plain2Basic_json_1.default,
105
- "0x8925D9d9B4569D737a48499DeF3f67BaA5a144b9": Plain2Balances_json_1.default,
106
- "0xAe00f57663F4C85FC948B13963cd4627dAF01061": Plain2ETH_json_1.default,
107
- "0x8101E6760130be2C8Ace79643AB73500571b7162": Plain2Optimized_json_1.default,
108
- "0x493084cA44C779Af27a416ac1F71e3823BF21b53": Plain3Basic_json_1.default,
109
- "0x9B4Ed6F8904E976146b3dC0233CD48Cf81835240": Plain3Balances_json_1.default,
110
- "0xA9134FaE98F92217f457918505375Ae91fdc5e3c": Plain3ETH_json_1.default,
111
- "0xCC9fd96C26c450Dd4580893afF75efd5cb6C12Fc": Plain3Optimized_json_1.default,
112
- "0x991b05d5316fa3A2C053F84658b84987cd5c9970": Plain4Basic_json_1.default,
113
- "0xC7c46488566b9ef9B981b87E328939CaA5ca152f": Plain4Balances_json_1.default,
114
- "0xf31bcdf0B9a5eCD7AB463eB905551fBc32e51856": Plain4ETH_json_1.default,
115
- "0xAc273d5b4FC06625d8b1abA3BE8De15bDFb8E39f": Plain4Optimized_json_1.default,
116
- };
117
- var basePoolAddressNameDictEthereum = {
118
- "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": "3pool",
119
- "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": "sbtc",
120
- "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": "ren",
121
- };
122
- var basePoolAddressNameDictPolygon = {
123
- "0x445FE580eF8d70FF569aB36e80c647af338db351": "aave",
124
- "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": "ren",
125
- };
126
- var basePoolAddressCoinsDictEthereum = {
127
- "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": ['DAI', 'USDC', 'USDT'],
128
- "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": ['renBTC', 'WBTC', 'sBTC'],
129
- "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": ['renBTC', 'WBTC'], // ren
130
- };
131
- var basePoolAddressCoinsDictPolygon = {
132
- "0x445FE580eF8d70FF569aB36e80c647af338db351": ['DAI', 'USDC', 'USDT'],
133
- "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": ['WBTC', 'renBTC'], // ren
134
- };
135
- var basePoolAddressCoinAddressesDictEthereum = {
136
- "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": [
137
- '0x6B175474E89094C44Da98b954EedeAC495271d0F',
138
- '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
139
- '0xdAC17F958D2ee523a2206206994597C13D831ec7',
140
- ].map(function (addr) { return addr.toLowerCase(); }),
141
- "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": [
142
- '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',
143
- '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
144
- '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6',
145
- ].map(function (addr) { return addr.toLowerCase(); }),
146
- "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": [
147
- '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',
148
- '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
149
- ].map(function (addr) { return addr.toLowerCase(); }),
150
- };
151
- var basePoolAddressCoinAddressesDictPolygon = {
152
- "0x445FE580eF8d70FF569aB36e80c647af338db351": [
153
- '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',
154
- '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
155
- '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
156
- ].map(function (addr) { return addr.toLowerCase(); }),
157
- "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": [
158
- '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6',
159
- '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501',
160
- ].map(function (addr) { return addr.toLowerCase(); }),
161
- };
162
- var basePoolAddressDecimalsDictEthereum = {
163
- "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": [18, 6, 6],
164
- "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": [8, 8, 18],
165
- "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": [8, 8], // ren
166
- };
167
- var basePoolAddressDecimalsDictPolygon = {
168
- "0x445FE580eF8d70FF569aB36e80c647af338db351": [18, 6, 6],
169
- "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": [8, 8], // ren
170
- };
171
- var basePoolAddressZapDictEthereum = {
172
- "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": "0xA79828DF1850E8a3A3064576f380D90aECDD3359".toLowerCase(),
173
- "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase(),
174
- "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase(), // ren TODO CHECK!!!
175
- };
176
- var basePoolAddressZapDictPolygon = {
177
- "0x445FE580eF8d70FF569aB36e80c647af338db351": "0x5ab5C56B9db92Ba45a0B46a207286cD83C15C939".toLowerCase(),
178
- "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": "0xE2e6DC1708337A6e59f227921db08F21e3394723".toLowerCase(), // ren
179
- };
180
- var blackListPolygon = [
181
- "0x666dc3b4babfd063faf965bd020024af0dc51b64",
182
- "0xe4199bc5c5c1f63dba47b56b6db7144c51cf0bf8",
183
- "0x88c4d6534165510b2e2caf0a130d4f70aa4b6d71",
184
- ];
185
- var blackListEthereum = [];
186
68
  var deepFlatten = function (arr) { return [].concat.apply([], arr.map(function (v) { return (Array.isArray(v) ? deepFlatten(v) : v); })); };
187
69
  function getFactoryIdsAndSwapAddresses() {
188
70
  return __awaiter(this, void 0, void 0, function () {
@@ -205,7 +87,7 @@ function getFactoryIdsAndSwapAddresses() {
205
87
  case 2:
206
88
  factories = (_e.sent()).map(function (addr, i) { return ({ id: "factory-v2-".concat(i), address: addr.toLowerCase() }); });
207
89
  swapAddresses = Object.values(this.constants.POOLS_DATA).map(function (pool) { return pool.swap_address.toLowerCase(); });
208
- blacklist = this.chainId === 137 ? blackListPolygon : blackListEthereum;
90
+ blacklist = BLACK_LIST[this.chainId];
209
91
  factories = factories.filter(function (f) { return !swapAddresses.includes(f.address) && !blacklist.includes(f.address); });
210
92
  return [2 /*return*/, [factories.map(function (f) { return f.id; }), factories.map(function (f) { return f.address; })]];
211
93
  }
@@ -218,7 +100,7 @@ function getFactorySwapABIs(factorySwapAddresses) {
218
100
  return __generator(this, function (_a) {
219
101
  switch (_a.label) {
220
102
  case 0:
221
- implementationABIDict = this.chainId === 137 ? implementationABIDictPolygon : implementationABIDictEthereum;
103
+ implementationABIDict = constants_1.FACTORY_CONSTANTS[this.chainId].implementationABIDict;
222
104
  return [4 /*yield*/, this.contracts[this.constants.ALIASES.factory].multicallContract];
223
105
  case 1:
224
106
  factoryMulticallContract = _a.sent();
@@ -373,8 +255,12 @@ function getExistingCoinAddressNameDict() {
373
255
  var poolData = _a[_i];
374
256
  _loop_1(poolData);
375
257
  }
258
+ if (this.chainId === 1)
259
+ dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "ETH";
376
260
  if (this.chainId === 137)
377
261
  dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "MATIC";
262
+ if (this.chainId === 43114)
263
+ dict["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"] = "AVAX";
378
264
  return dict;
379
265
  }
380
266
  function getCoinAddressNameDict(coinAddresses, existingCoinAddrNameDict) {
@@ -438,6 +324,7 @@ function getCoinAddressDecimalsDict(coinAddresses, existingCoinAddressDecimalsDi
438
324
  newCoinAddresses.forEach(function (addr, i) {
439
325
  coinAddrNamesDict[addr] = decimals[i];
440
326
  });
327
+ coinAddrNamesDict['0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'] = 18;
441
328
  return [2 /*return*/, coinAddrNamesDict];
442
329
  }
443
330
  });
@@ -481,30 +368,10 @@ function getFactoryBasePoolAddresses(factorySwapAddresses) {
481
368
  });
482
369
  });
483
370
  }
484
- function setFactoryZapContracts() {
485
- if (this.chainId === 137) {
486
- var metaUsdZapAddress = "0x5ab5C56B9db92Ba45a0B46a207286cD83C15C939".toLowerCase();
487
- this.contracts[metaUsdZapAddress] = {
488
- contract: new ethers_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default, this.signer || this.provider),
489
- multicallContract: new ethcall_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default),
490
- };
491
- var metaBtcZapAddress = "0xE2e6DC1708337A6e59f227921db08F21e3394723".toLowerCase();
492
- this.contracts[metaBtcZapAddress] = {
493
- contract: new ethers_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default, this.signer || this.provider),
494
- multicallContract: new ethcall_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default),
495
- };
496
- }
497
- else {
498
- var metaSBtcZapAddress = "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase();
499
- this.contracts[metaSBtcZapAddress] = {
500
- contract: new ethers_1.Contract(metaSBtcZapAddress, deposit_json_1.default, this.signer || this.provider),
501
- multicallContract: new ethcall_1.Contract(metaSBtcZapAddress, deposit_json_1.default),
502
- };
503
- }
504
- }
505
371
  function getFactoryPoolData() {
506
372
  return __awaiter(this, void 0, void 0, function () {
507
- var _a, poolIds, swapAddresses, swapABIs, gaugeAddresses, _b, poolSymbols, poolNames, referenceAssets, coinAddresses, existingCoinAddressNameDict, coinAddressNameDict, coinAddressDecimalsDict, isMeta, basePoolAddresses, basePoolAddressCoinsDict, basePoolAddressNameDict, basePoolAddressCoinAddressesDict, basePoolAddressDecimalsDict, basePoolAddressZapDict, FACTORY_POOLS_DATA, i;
373
+ var _a, poolIds, swapAddresses, swapABIs, gaugeAddresses, _b, poolSymbols, poolNames, referenceAssets, coinAddresses, existingCoinAddressNameDict, coinAddressNameDict, coinAddressDecimalsDict, isMeta, basePoolAddresses, basePoolAddressIdDict, basePoolIds, basePoolIdCoinsDict, basePoolIdCoinAddressesDict, basePoolIdDecimalsDict, basePoolIdZapDict, FACTORY_POOLS_DATA, i;
374
+ var _this = this;
508
375
  return __generator(this, function (_c) {
509
376
  switch (_c.label) {
510
377
  case 0: return [4 /*yield*/, getFactoryIdsAndSwapAddresses.call(this)];
@@ -541,12 +408,13 @@ function getFactoryPoolData() {
541
408
  return [4 /*yield*/, getFactoryBasePoolAddresses.call(this, swapAddresses)];
542
409
  case 10:
543
410
  basePoolAddresses = _c.sent();
544
- setFactoryZapContracts.call(this);
545
- basePoolAddressCoinsDict = this.chainId === 137 ? basePoolAddressCoinsDictPolygon : basePoolAddressCoinsDictEthereum;
546
- basePoolAddressNameDict = this.chainId === 137 ? basePoolAddressNameDictPolygon : basePoolAddressNameDictEthereum;
547
- basePoolAddressCoinAddressesDict = this.chainId === 137 ? basePoolAddressCoinAddressesDictPolygon : basePoolAddressCoinAddressesDictEthereum;
548
- basePoolAddressDecimalsDict = this.chainId === 137 ? basePoolAddressDecimalsDictPolygon : basePoolAddressDecimalsDictEthereum;
549
- basePoolAddressZapDict = this.chainId === 137 ? basePoolAddressZapDictPolygon : basePoolAddressZapDictEthereum;
411
+ common_1.setFactoryZapContracts.call(this);
412
+ basePoolAddressIdDict = constants_1.FACTORY_CONSTANTS[this.chainId].basePoolAddressIdDict;
413
+ basePoolIds = basePoolAddresses.map(function (addr) { return basePoolAddressIdDict[addr]; });
414
+ basePoolIdCoinsDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_coins]; }));
415
+ basePoolIdCoinAddressesDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_coin_addresses]; }));
416
+ basePoolIdDecimalsDict = Object.fromEntries(Object.values(basePoolAddressIdDict).map(function (poolId) { return [poolId, _this.constants.POOLS_DATA[poolId].underlying_decimals]; }));
417
+ basePoolIdZapDict = constants_1.FACTORY_CONSTANTS[this.chainId].basePoolIdZapDict;
550
418
  FACTORY_POOLS_DATA = {};
551
419
  for (i = 0; i < poolIds.length; i++) {
552
420
  if (!isMeta[i]) {
@@ -579,15 +447,15 @@ function getFactoryPoolData() {
579
447
  swap_address: swapAddresses[i],
580
448
  token_address: swapAddresses[i],
581
449
  gauge_address: gaugeAddresses[i],
582
- deposit_address: basePoolAddressZapDict[basePoolAddresses[i]],
450
+ deposit_address: basePoolIdZapDict[basePoolIds[i]],
583
451
  is_meta: true,
584
452
  is_factory: true,
585
- base_pool: basePoolAddressNameDict[basePoolAddresses[i]],
586
- underlying_coins: __spreadArray([coinAddressNameDict[coinAddresses[i][0]]], basePoolAddressCoinsDict[basePoolAddresses[i]], true),
453
+ base_pool: basePoolIds[i],
454
+ underlying_coins: __spreadArray([coinAddressNameDict[coinAddresses[i][0]]], basePoolIdCoinsDict[basePoolIds[i]], true),
587
455
  wrapped_coins: coinAddresses[i].map(function (addr) { return coinAddressNameDict[addr]; }),
588
- underlying_coin_addresses: coinAddresses[i],
456
+ underlying_coin_addresses: __spreadArray([coinAddresses[i][0]], basePoolIdCoinAddressesDict[basePoolIds[i]], true),
589
457
  wrapped_coin_addresses: coinAddresses[i],
590
- underlying_decimals: __spreadArray([coinAddressDecimalsDict[coinAddresses[i][0]]], basePoolAddressDecimalsDict[basePoolAddresses[i]], true),
458
+ underlying_decimals: __spreadArray([coinAddressDecimalsDict[coinAddresses[i][0]]], basePoolIdDecimalsDict[basePoolIds[i]], true),
591
459
  wrapped_decimals: coinAddresses[i].map(function (addr) { return coinAddressDecimalsDict[addr]; }),
592
460
  swap_abi: swapABIs[i],
593
461
  gauge_abi: gauge_factory_json_1.default,
@@ -3,33 +3,7 @@ import { Contract as MulticallContract, Provider as MulticallProvider } from "et
3
3
  export interface IDict<T> {
4
4
  [index: string]: T;
5
5
  }
6
- export interface ICurve {
7
- provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
8
- multicallProvider: MulticallProvider;
9
- signer: ethers.Signer | null;
10
- signerAddress: string;
11
- chainId: number;
12
- contracts: {
13
- [index: string]: {
14
- contract: Contract;
15
- multicallContract: MulticallContract;
16
- };
17
- };
18
- feeData: {
19
- gasPrice?: number;
20
- maxFeePerGas?: number;
21
- maxPriorityFeePerGas?: number;
22
- };
23
- constantOptions: {
24
- gasLimit: number;
25
- };
26
- options: {
27
- gasPrice?: number | ethers.BigNumber;
28
- maxFeePerGas?: number | ethers.BigNumber;
29
- maxPriorityFeePerGas?: number | ethers.BigNumber;
30
- };
31
- constants: IDict<any>;
32
- }
6
+ export declare type INetworkName = "ethereum" | "polygon" | "avalanche";
33
7
  export declare type REFERENCE_ASSET = 'USD' | 'EUR' | 'BTC' | 'ETH' | 'LINK' | 'CRYPTO' | 'OTHER';
34
8
  export interface IPoolData {
35
9
  name: string;
@@ -63,6 +37,42 @@ export interface IPoolData {
63
37
  deposit_abi?: any;
64
38
  sCurveRewards_abi?: any;
65
39
  }
40
+ export interface ICurve {
41
+ provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
42
+ multicallProvider: MulticallProvider;
43
+ signer: ethers.Signer | null;
44
+ signerAddress: string;
45
+ chainId: number;
46
+ contracts: {
47
+ [index: string]: {
48
+ contract: Contract;
49
+ multicallContract: MulticallContract;
50
+ };
51
+ };
52
+ feeData: {
53
+ gasPrice?: number;
54
+ maxFeePerGas?: number;
55
+ maxPriorityFeePerGas?: number;
56
+ };
57
+ constantOptions: {
58
+ gasLimit: number;
59
+ };
60
+ options: {
61
+ gasPrice?: number | ethers.BigNumber;
62
+ maxFeePerGas?: number | ethers.BigNumber;
63
+ maxPriorityFeePerGas?: number | ethers.BigNumber;
64
+ };
65
+ constants: {
66
+ NETWORK_NAME: INetworkName;
67
+ ALIASES: IDict<string>;
68
+ POOLS_DATA: IDict<IPoolData>;
69
+ FACTORY_POOLS_DATA: IDict<IPoolData>;
70
+ CRYPTO_FACTORY_POOLS_DATA: IDict<IPoolData>;
71
+ COINS: IDict<string>;
72
+ DECIMALS: IDict<number>;
73
+ GAUGES: string[];
74
+ };
75
+ }
66
76
  export interface ICoinFromPoolDataApi {
67
77
  address: string;
68
78
  symbol: string;
@@ -119,7 +119,7 @@ var PoolTemplate = /** @class */ (function () {
119
119
  switch (_c.label) {
120
120
  case 0:
121
121
  if (!useApi) return [3 /*break*/, 2];
122
- network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
122
+ network = curve_1.curve.constants.NETWORK_NAME;
123
123
  poolType = !this.isFactory && !this.isCrypto ? "main" :
124
124
  !this.isFactory ? "crypto" :
125
125
  !(this.isCrypto && this.isFactory) ? "factory" :
@@ -158,7 +158,7 @@ var PoolTemplate = /** @class */ (function () {
158
158
  return __generator(this, function (_a) {
159
159
  switch (_a.label) {
160
160
  case 0:
161
- network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
161
+ network = curve_1.curve.constants.NETWORK_NAME;
162
162
  return [4 /*yield*/, (0, external_api_1._getSubgraphData)(network)];
163
163
  case 1:
164
164
  poolsData = (_a.sent());
@@ -175,7 +175,7 @@ var PoolTemplate = /** @class */ (function () {
175
175
  return __generator(this, function (_a) {
176
176
  switch (_a.label) {
177
177
  case 0:
178
- network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
178
+ network = curve_1.curve.constants.NETWORK_NAME;
179
179
  return [4 /*yield*/, (0, external_api_1._getSubgraphData)(network)];
180
180
  case 1:
181
181
  poolsData = (_a.sent());
@@ -196,7 +196,7 @@ var PoolTemplate = /** @class */ (function () {
196
196
  case 0:
197
197
  if (this.gauge === ethers_1.ethers.constants.AddressZero)
198
198
  throw Error("".concat(this.name, " doesn't have gauge"));
199
- if (curve_1.curve.chainId === 137)
199
+ if (curve_1.curve.chainId !== 1)
200
200
  throw Error("No such method on network with id ".concat(curve_1.curve.chainId, ". Use getRewardsApy instead"));
201
201
  gaugeContract = curve_1.curve.contracts[this.gauge].multicallContract;
202
202
  lpTokenContract = curve_1.curve.contracts[this.lpToken].multicallContract;
@@ -267,7 +267,7 @@ var PoolTemplate = /** @class */ (function () {
267
267
  return [3 /*break*/, 1];
268
268
  case 7: return [2 /*return*/, apy];
269
269
  case 8:
270
- network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
270
+ network = curve_1.curve.constants.NETWORK_NAME;
271
271
  promises = [
272
272
  (0, external_api_1._getMainPoolsGaugeRewards)(),
273
273
  (0, external_api_1._getPoolsFromApi)(network, "main"),
@@ -2182,7 +2182,7 @@ var PoolTemplate = /** @class */ (function () {
2182
2182
  return [4 /*yield*/, this._swapExpected(i, j, _amount)];
2183
2183
  case 1:
2184
2184
  _output = _c.sent();
2185
- target = (0, utils_1.BN)(1000000);
2185
+ target = (0, utils_1.BN)(Math.pow(10, 15));
2186
2186
  amountIntBN = (0, utils_1.BN)(amount).times(Math.pow(10, inputCoinDecimals));
2187
2187
  outputIntBN = (0, utils_1.toBN)(_output, 0);
2188
2188
  k = bignumber_js_1.default.min(bignumber_js_1.default.max(target.div(amountIntBN), target.div(outputIntBN)), 0.2);
@@ -2206,7 +2206,7 @@ var PoolTemplate = /** @class */ (function () {
2206
2206
  });
2207
2207
  };
2208
2208
  PoolTemplate.prototype._swapContractAddress = function () {
2209
- return (this.isCrypto && this.isMeta) || (curve_1.curve.chainId === 137 && this.isMetaFactory) ? this.zap : this.address;
2209
+ return (this.isCrypto && this.isMeta) || ([137, 43114].includes(curve_1.curve.chainId) && this.isMetaFactory) ? this.zap : this.address;
2210
2210
  };
2211
2211
  PoolTemplate.prototype.swapIsApproved = function (inputCoin, amount) {
2212
2212
  return __awaiter(this, void 0, void 0, function () {
@@ -2302,7 +2302,7 @@ var PoolTemplate = /** @class */ (function () {
2302
2302
  return [4 /*yield*/, this._swapWrappedExpected(i, j, _amount)];
2303
2303
  case 1:
2304
2304
  _output = _c.sent();
2305
- target = (0, utils_1.BN)(1000000);
2305
+ target = (0, utils_1.BN)(Math.pow(10, 15));
2306
2306
  amountIntBN = (0, utils_1.BN)(amount).times(Math.pow(10, inputCoinDecimals));
2307
2307
  outputIntBN = (0, utils_1.toBN)(_output, 0);
2308
2308
  k = bignumber_js_1.default.min(bignumber_js_1.default.max(target.div(amountIntBN), target.div(outputIntBN)), 0.2);
@@ -44,7 +44,7 @@ var getPool = function (poolId) {
44
44
  return Pool;
45
45
  }(PoolTemplate_1.PoolTemplate));
46
46
  // statsBalances
47
- if (poolId === "atricrypto3") {
47
+ if (poolDummy.isFake) {
48
48
  Object.assign(Pool.prototype, poolBalancesMixin_1.poolBalancesAtricrypto3Mixin);
49
49
  }
50
50
  else if (poolDummy.isMeta) {
@@ -101,7 +101,7 @@ var getPool = function (poolId) {
101
101
  Object.assign(Pool.prototype, depositWrappedMixins_1.depositWrapped2argsMixin);
102
102
  }
103
103
  // withdrawExpected
104
- if (poolId === 'atricrypto3') {
104
+ if (poolDummy.isFake) {
105
105
  Object.assign(Pool.prototype, withdrawExpectedMixins_1.withdrawExpectedAtricrypto3Mixin);
106
106
  }
107
107
  else if (poolDummy.isMeta) {
@@ -207,7 +207,7 @@ var getPool = function (poolId) {
207
207
  if (poolId === 'tricrypto2') {
208
208
  Object.assign(Pool.prototype, swapMixins_1.swapTricrypto2Mixin);
209
209
  }
210
- else if (curve_1.curve.chainId === 137 && poolDummy.isMetaFactory) {
210
+ else if ([137, 43114].includes(curve_1.curve.chainId) && poolDummy.isMetaFactory) {
211
211
  Object.assign(Pool.prototype, swapMixins_1.swapMetaFactoryMixin);
212
212
  }
213
213
  else {