@curvefi/api 1.20.0 → 1.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/lib/curve.js CHANGED
@@ -62,8 +62,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
62
62
  exports.curve = exports.ALIASES = exports.DECIMALS_LOWER_CASE = exports.DECIMALS = exports.COINS = exports.USD_COINS_LOWER_CASE = exports.USD_COINS = exports.EUR_COINS_LOWER_CASE = exports.EUR_COINS = exports.LINK_COINS_LOWER_CASE = exports.LINK_COINS = exports.ETH_COINS_LOWER_CASE = exports.ETH_COINS = exports.BTC_COINS_LOWER_CASE = exports.BTC_COINS = exports.GAUGES = exports.LP_TOKENS = exports.POOLS_DATA = void 0;
63
63
  var ethers_1 = require("ethers");
64
64
  var ethcall_1 = require("ethcall");
65
- var factory_1 = require("./factory");
66
- var factory_crypto_1 = require("./factory-crypto");
65
+ var factory_1 = require("./factory/factory");
66
+ var factory_api_1 = require("./factory/factory-api");
67
+ var factory_crypto_1 = require("./factory/factory-crypto");
67
68
  var ERC20_json_1 = __importDefault(require("./constants/abis/json/ERC20.json"));
68
69
  var cERC20_json_1 = __importDefault(require("./constants/abis/json/cERC20.json"));
69
70
  var yERC20_json_1 = __importDefault(require("./constants/abis/json/yERC20.json"));
@@ -144,10 +145,13 @@ var Curve = /** @class */ (function () {
144
145
  else if (providerType.toLowerCase() === 'Infura'.toLowerCase()) {
145
146
  providerSettings = providerSettings;
146
147
  this.provider = new ethers_1.ethers.providers.InfuraProvider(providerSettings.network, providerSettings.apiKey);
148
+ this.signer = null;
149
+ // Alchemy provider
147
150
  }
148
151
  else if (providerType.toLowerCase() === 'Alchemy'.toLowerCase()) {
149
152
  providerSettings = providerSettings;
150
153
  this.provider = new ethers_1.ethers.providers.AlchemyProvider(providerSettings.network, providerSettings.apiKey);
154
+ this.signer = null;
151
155
  }
152
156
  else {
153
157
  throw Error('Wrong providerType');
@@ -438,40 +442,60 @@ var Curve = /** @class */ (function () {
438
442
  DECIMALS_LOWER_CASE: exports.DECIMALS_LOWER_CASE,
439
443
  LP_TOKENS: exports.LP_TOKENS,
440
444
  GAUGES: exports.GAUGES,
445
+ FACTORY_POOLS_DATA: [],
446
+ CRYPTO_FACTORY_POOLS_DATA: [],
441
447
  };
442
448
  return [2 /*return*/];
443
449
  }
444
450
  });
445
451
  });
446
452
  };
447
- Curve.prototype.fetchFactoryPools = function () {
453
+ Curve.prototype.fetchFactoryPools = function (useApi) {
454
+ if (useApi === void 0) { useApi = true; }
448
455
  return __awaiter(this, void 0, void 0, function () {
449
- var _a;
450
- return __generator(this, function (_b) {
451
- switch (_b.label) {
456
+ var _a, _b;
457
+ return __generator(this, function (_c) {
458
+ switch (_c.label) {
452
459
  case 0:
460
+ if (!useApi) return [3 /*break*/, 2];
453
461
  _a = this.constants;
454
- return [4 /*yield*/, factory_1.getFactoryPoolData.call(this)];
462
+ return [4 /*yield*/, factory_api_1.getFactoryPoolsDataFromApi.call(this, false)];
455
463
  case 1:
456
- _a.FACTORY_POOLS_DATA = _b.sent();
457
- return [2 /*return*/];
464
+ _a.FACTORY_POOLS_DATA = _c.sent();
465
+ return [3 /*break*/, 4];
466
+ case 2:
467
+ _b = this.constants;
468
+ return [4 /*yield*/, factory_1.getFactoryPoolData.call(this)];
469
+ case 3:
470
+ _b.FACTORY_POOLS_DATA = _c.sent();
471
+ _c.label = 4;
472
+ case 4: return [2 /*return*/];
458
473
  }
459
474
  });
460
475
  });
461
476
  };
462
- Curve.prototype.fetchCryptoFactoryPools = function () {
477
+ Curve.prototype.fetchCryptoFactoryPools = function (useApi) {
478
+ if (useApi === void 0) { useApi = true; }
463
479
  return __awaiter(this, void 0, void 0, function () {
464
- var _a;
465
- return __generator(this, function (_b) {
466
- switch (_b.label) {
480
+ var _a, _b;
481
+ return __generator(this, function (_c) {
482
+ switch (_c.label) {
467
483
  case 0:
468
- if (!(this.chainId === 1 || this.chainId === 1337)) return [3 /*break*/, 2];
484
+ if (this.chainId !== 1 && this.chainId !== 1337)
485
+ return [2 /*return*/];
486
+ if (!useApi) return [3 /*break*/, 2];
469
487
  _a = this.constants;
470
- return [4 /*yield*/, factory_crypto_1.getCryptoFactoryPoolData.call(this)];
488
+ return [4 /*yield*/, factory_api_1.getFactoryPoolsDataFromApi.call(this, true)];
471
489
  case 1:
472
- _a.CRYPTO_FACTORY_POOLS_DATA = _b.sent();
473
- _b.label = 2;
474
- case 2: return [2 /*return*/];
490
+ _a.CRYPTO_FACTORY_POOLS_DATA = _c.sent();
491
+ return [3 /*break*/, 4];
492
+ case 2:
493
+ _b = this.constants;
494
+ return [4 /*yield*/, factory_crypto_1.getCryptoFactoryPoolData.call(this)];
495
+ case 3:
496
+ _b.CRYPTO_FACTORY_POOLS_DATA = _c.sent();
497
+ _c.label = 4;
498
+ case 4: return [2 /*return*/];
475
499
  }
476
500
  });
477
501
  });
@@ -0,0 +1,18 @@
1
+ import { DictInterface } from "../interfaces";
2
+ export declare const implementationABIDictEthereum: DictInterface<any>;
3
+ export declare const implementationABIDictPolygon: DictInterface<any>;
4
+ export declare const implementationBasePoolAddressDictEthereum: DictInterface<any>;
5
+ export declare const implementationBasePoolAddressDictPolygon: DictInterface<any>;
6
+ export declare const basePoolAddressNameDictEthereum: DictInterface<string>;
7
+ export declare const basePoolAddressNameDictPolygon: DictInterface<string>;
8
+ export declare const basePoolAddressCoinsDictEthereum: DictInterface<string[]>;
9
+ export declare const basePoolAddressCoinsDictPolygon: DictInterface<string[]>;
10
+ export declare const basePoolAddressCoinAddressesDictEthereum: DictInterface<string[]>;
11
+ export declare const basePoolAddressCoinAddressesDictPolygon: DictInterface<string[]>;
12
+ export declare const basePoolAddressDecimalsDictEthereum: DictInterface<number[]>;
13
+ export declare const basePoolAddressDecimalsDictPolygon: DictInterface<number[]>;
14
+ export declare const basePoolAddressZapDictEthereum: DictInterface<string>;
15
+ export declare const basePoolAddressZapDictPolygon: DictInterface<string>;
16
+ export declare const blackListPolygon: string[];
17
+ export declare const WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
18
+ export declare const ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ETH_ADDRESS = exports.WETH_ADDRESS = exports.blackListPolygon = exports.basePoolAddressZapDictPolygon = exports.basePoolAddressZapDictEthereum = exports.basePoolAddressDecimalsDictPolygon = exports.basePoolAddressDecimalsDictEthereum = exports.basePoolAddressCoinAddressesDictPolygon = exports.basePoolAddressCoinAddressesDictEthereum = exports.basePoolAddressCoinsDictPolygon = exports.basePoolAddressCoinsDictEthereum = exports.basePoolAddressNameDictPolygon = exports.basePoolAddressNameDictEthereum = exports.implementationBasePoolAddressDictPolygon = exports.implementationBasePoolAddressDictEthereum = exports.implementationABIDictPolygon = exports.implementationABIDictEthereum = void 0;
7
+ var swap_json_1 = __importDefault(require("../constants/abis/json/factoryPools/swap.json"));
8
+ var MetaUSD_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaUSD.json"));
9
+ var MetaUSDBalances_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaUSDBalances.json"));
10
+ var MetaBTC_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaBTC.json"));
11
+ var MetaBTCBalances_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaBTCBalances.json"));
12
+ var MetaBTCRen_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaBTCRen.json"));
13
+ var MetaBTCBalancesRen_json_1 = __importDefault(require("../constants/abis/json/factory-v2/MetaBTCBalancesRen.json"));
14
+ var Plain2Basic_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain2Basic.json"));
15
+ var Plain2Balances_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain2Balances.json"));
16
+ var Plain2ETH_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain2ETH.json"));
17
+ var Plain2Optimized_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain2Optimized.json"));
18
+ var Plain3Basic_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain3Basic.json"));
19
+ var Plain3Balances_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain3Balances.json"));
20
+ var Plain3ETH_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain3ETH.json"));
21
+ var Plain3Optimized_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain3Optimized.json"));
22
+ var Plain4Basic_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain4Basic.json"));
23
+ var Plain4Balances_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain4Balances.json"));
24
+ var Plain4ETH_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain4ETH.json"));
25
+ var Plain4Optimized_json_1 = __importDefault(require("../constants/abis/json/factory-v2/Plain4Optimized.json"));
26
+ exports.implementationABIDictEthereum = {
27
+ "0x5F890841f657d90E081bAbdB532A05996Af79Fe6": swap_json_1.default,
28
+ "0x213be373FDff327658139C7df330817DAD2d5bBE": MetaUSD_json_1.default,
29
+ "0x55Aa9BF126bCABF0bDC17Fa9E39Ec9239e1ce7A9": MetaUSDBalances_json_1.default,
30
+ "0xC6A8466d128Fbfd34AdA64a9FFFce325D57C9a52": MetaBTC_json_1.default,
31
+ "0xc4C78b08fA0c3d0a312605634461A88184Ecd630": MetaBTCBalances_json_1.default,
32
+ "0xECAaecd9d2193900b424774133B1f51ae0F29d9E": MetaBTCRen_json_1.default,
33
+ "0x40fD58D44cFE63E8517c9Bb3ac98676838Ea56A8": MetaBTCBalancesRen_json_1.default,
34
+ "0x6523Ac15EC152Cb70a334230F6c5d62C5Bd963f1": Plain2Basic_json_1.default,
35
+ "0x24D937143d3F5cF04c72bA112735151A8CAE2262": Plain2Balances_json_1.default,
36
+ "0x6326DEbBAa15bCFE603d831e7D75f4fc10d9B43E": Plain2ETH_json_1.default,
37
+ "0x4A4d7868390EF5CaC51cDA262888f34bD3025C3F": Plain2Optimized_json_1.default,
38
+ "0x9B52F13DF69D79Ec5aAB6D1aCe3157d29B409cC3": Plain3Basic_json_1.default,
39
+ "0x50b085f2e5958C4A87baf93A8AB79F6bec068494": Plain3Balances_json_1.default,
40
+ "0x8c1aB78601c259E1B43F19816923609dC7d7de9B": Plain3ETH_json_1.default,
41
+ "0xE5F4b89E0A16578B3e0e7581327BDb4C712E44De": Plain3Optimized_json_1.default,
42
+ "0x5Bd47eA4494e0F8DE6e3Ca10F1c05F55b72466B8": Plain4Basic_json_1.default,
43
+ "0xd35B58386705CE75CE6d09842E38E9BE9CDe5bF6": Plain4Balances_json_1.default,
44
+ "0x88855cdF2b0A8413D470B86952E726684de915be": Plain4ETH_json_1.default,
45
+ "0xaD4753D045D3Aed5C1a6606dFb6a7D7AD67C1Ad7": Plain4Optimized_json_1.default,
46
+ };
47
+ exports.implementationABIDictPolygon = {
48
+ "0x4fb93D7d320E8A263F22f62C2059dFC2A8bCbC4c": MetaUSD_json_1.default,
49
+ "0x39fE1824f98CD828050D7c51dA443E84121c7cf1": MetaUSDBalances_json_1.default,
50
+ "0xC05EB760A135d3D0c839f1141423002681157a17": MetaBTCRen_json_1.default,
51
+ "0xD8336532f6ED7b94282fAF724fe41d6145E07Cfc": MetaBTCBalancesRen_json_1.default,
52
+ "0x571FF5b7b346F706aa48d696a9a4a288e9Bb4091": Plain2Basic_json_1.default,
53
+ "0x8925D9d9B4569D737a48499DeF3f67BaA5a144b9": Plain2Balances_json_1.default,
54
+ "0xAe00f57663F4C85FC948B13963cd4627dAF01061": Plain2ETH_json_1.default,
55
+ "0x8101E6760130be2C8Ace79643AB73500571b7162": Plain2Optimized_json_1.default,
56
+ "0x493084cA44C779Af27a416ac1F71e3823BF21b53": Plain3Basic_json_1.default,
57
+ "0x9B4Ed6F8904E976146b3dC0233CD48Cf81835240": Plain3Balances_json_1.default,
58
+ "0xA9134FaE98F92217f457918505375Ae91fdc5e3c": Plain3ETH_json_1.default,
59
+ "0xCC9fd96C26c450Dd4580893afF75efd5cb6C12Fc": Plain3Optimized_json_1.default,
60
+ "0x991b05d5316fa3A2C053F84658b84987cd5c9970": Plain4Basic_json_1.default,
61
+ "0xC7c46488566b9ef9B981b87E328939CaA5ca152f": Plain4Balances_json_1.default,
62
+ "0xf31bcdf0B9a5eCD7AB463eB905551fBc32e51856": Plain4ETH_json_1.default,
63
+ "0xAc273d5b4FC06625d8b1abA3BE8De15bDFb8E39f": Plain4Optimized_json_1.default,
64
+ };
65
+ exports.implementationBasePoolAddressDictEthereum = {
66
+ "0x5F890841f657d90E081bAbdB532A05996Af79Fe6": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",
67
+ "0x213be373FDff327658139C7df330817DAD2d5bBE": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",
68
+ "0x55Aa9BF126bCABF0bDC17Fa9E39Ec9239e1ce7A9": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",
69
+ "0xC6A8466d128Fbfd34AdA64a9FFFce325D57C9a52": "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714",
70
+ "0xc4C78b08fA0c3d0a312605634461A88184Ecd630": "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714",
71
+ "0xECAaecd9d2193900b424774133B1f51ae0F29d9E": "0x93054188d876f558f4a66B2EF1d97d16eDf0895B",
72
+ "0x40fD58D44cFE63E8517c9Bb3ac98676838Ea56A8": "0x93054188d876f558f4a66B2EF1d97d16eDf0895B", // ren
73
+ };
74
+ exports.implementationBasePoolAddressDictPolygon = {
75
+ "0x4fb93D7d320E8A263F22f62C2059dFC2A8bCbC4c": "0x445FE580eF8d70FF569aB36e80c647af338db351",
76
+ "0x39fE1824f98CD828050D7c51dA443E84121c7cf1": "0x445FE580eF8d70FF569aB36e80c647af338db351",
77
+ "0xC05EB760A135d3D0c839f1141423002681157a17": "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67",
78
+ "0xD8336532f6ED7b94282fAF724fe41d6145E07Cfc": "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67", // ren
79
+ };
80
+ exports.basePoolAddressNameDictEthereum = {
81
+ "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": "3pool",
82
+ "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": "sbtc",
83
+ "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": "ren",
84
+ };
85
+ exports.basePoolAddressNameDictPolygon = {
86
+ "0x445FE580eF8d70FF569aB36e80c647af338db351": "aave",
87
+ "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": "ren",
88
+ };
89
+ exports.basePoolAddressCoinsDictEthereum = {
90
+ "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": ['DAI', 'USDC', 'USDT'],
91
+ "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": ['renBTC', 'WBTC', 'sBTC'],
92
+ "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": ['renBTC', 'WBTC'], // ren
93
+ };
94
+ exports.basePoolAddressCoinsDictPolygon = {
95
+ "0x445FE580eF8d70FF569aB36e80c647af338db351": ['DAI', 'USDC', 'USDT'],
96
+ "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": ['WBTC', 'renBTC'], // ren
97
+ };
98
+ exports.basePoolAddressCoinAddressesDictEthereum = {
99
+ "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": [
100
+ '0x6B175474E89094C44Da98b954EedeAC495271d0F',
101
+ '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
102
+ '0xdAC17F958D2ee523a2206206994597C13D831ec7',
103
+ ].map(function (addr) { return addr.toLowerCase(); }),
104
+ "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": [
105
+ '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',
106
+ '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
107
+ '0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6',
108
+ ].map(function (addr) { return addr.toLowerCase(); }),
109
+ "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": [
110
+ '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D',
111
+ '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
112
+ ].map(function (addr) { return addr.toLowerCase(); }),
113
+ };
114
+ exports.basePoolAddressCoinAddressesDictPolygon = {
115
+ "0x445FE580eF8d70FF569aB36e80c647af338db351": [
116
+ '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',
117
+ '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
118
+ '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
119
+ ].map(function (addr) { return addr.toLowerCase(); }),
120
+ "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": [
121
+ '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6',
122
+ '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501',
123
+ ].map(function (addr) { return addr.toLowerCase(); }),
124
+ };
125
+ exports.basePoolAddressDecimalsDictEthereum = {
126
+ "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": [18, 6, 6],
127
+ "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": [8, 8, 18],
128
+ "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": [8, 8], // ren
129
+ };
130
+ exports.basePoolAddressDecimalsDictPolygon = {
131
+ "0x445FE580eF8d70FF569aB36e80c647af338db351": [18, 6, 6],
132
+ "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": [8, 8], // ren
133
+ };
134
+ exports.basePoolAddressZapDictEthereum = {
135
+ "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7": "0xA79828DF1850E8a3A3064576f380D90aECDD3359".toLowerCase(),
136
+ "0x7fC77b5c7614E1533320Ea6DDc2Eb61fa00A9714": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase(),
137
+ "0x93054188d876f558f4a66B2EF1d97d16eDf0895B": "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase(), // ren TODO CHECK!!!
138
+ };
139
+ exports.basePoolAddressZapDictPolygon = {
140
+ "0x445FE580eF8d70FF569aB36e80c647af338db351": "0x5ab5C56B9db92Ba45a0B46a207286cD83C15C939".toLowerCase(),
141
+ "0xC2d95EEF97Ec6C17551d45e77B590dc1F9117C67": "0xE2e6DC1708337A6e59f227921db08F21e3394723".toLowerCase(), // ren
142
+ };
143
+ exports.blackListPolygon = [
144
+ "0x666dc3b4babfd063faf965bd020024af0dc51b64",
145
+ "0xe4199bc5c5c1f63dba47b56b6db7144c51cf0bf8",
146
+ "0x88c4d6534165510b2e2caf0a130d4f70aa4b6d71",
147
+ ];
148
+ exports.WETH_ADDRESS = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
149
+ exports.ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
@@ -0,0 +1,2 @@
1
+ import { DictInterface, PoolDataInterface, ICurve } from "../interfaces";
2
+ export declare function getFactoryPoolsDataFromApi(this: ICurve, isCrypto: boolean): Promise<DictInterface<PoolDataInterface>>;
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.getFactoryPoolsDataFromApi = void 0;
52
+ var axios_1 = __importDefault(require("axios"));
53
+ var ethers_1 = require("ethers");
54
+ var ethcall_1 = require("ethcall");
55
+ var gauge_factory_json_1 = __importDefault(require("../constants/abis/json/gauge_factory.json"));
56
+ var deposit_json_1 = __importDefault(require("../constants/abis/json/factoryPools/deposit.json"));
57
+ var ERC20_json_1 = __importDefault(require("../constants/abis/json/ERC20.json"));
58
+ var DepositZapMetaUsdPolygon_json_1 = __importDefault(require("../constants/abis/json/factory-v2/DepositZapMetaUsdPolygon.json"));
59
+ var DepositZapMetaBtcPolygon_json_1 = __importDefault(require("../constants/abis/json/factory-v2/DepositZapMetaBtcPolygon.json"));
60
+ var factory_crypto_pool_2_json_1 = __importDefault(require("../constants/abis/json/factory-crypto/factory-crypto-pool-2.json"));
61
+ var constants_1 = require("./constants");
62
+ function setFactorySwapContracts(rawPoolList, isCrypto) {
63
+ var _this = this;
64
+ if (isCrypto) {
65
+ rawPoolList.forEach(function (pool) {
66
+ var addr = pool.address.toLowerCase();
67
+ _this.contracts[addr] = {
68
+ contract: new ethers_1.Contract(addr, factory_crypto_pool_2_json_1.default, _this.signer || _this.provider),
69
+ multicallContract: new ethcall_1.Contract(addr, factory_crypto_pool_2_json_1.default),
70
+ };
71
+ });
72
+ }
73
+ else {
74
+ var implementationABIDict_1 = this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
75
+ rawPoolList.forEach(function (pool) {
76
+ var addr = pool.address.toLowerCase();
77
+ _this.contracts[addr] = {
78
+ contract: new ethers_1.Contract(addr, implementationABIDict_1[pool.implementationAddress], _this.signer || _this.provider),
79
+ multicallContract: new ethcall_1.Contract(addr, implementationABIDict_1[pool.implementationAddress]),
80
+ };
81
+ _this.constants.LP_TOKENS.push(addr);
82
+ });
83
+ }
84
+ }
85
+ function setCryptoFactoryTokenContracts(rawPoolList) {
86
+ var _this = this;
87
+ rawPoolList.forEach(function (pool) {
88
+ var addr = pool.lpTokenAddress.toLowerCase();
89
+ _this.contracts[addr] = {
90
+ contract: new ethers_1.Contract(addr, ERC20_json_1.default, _this.signer || _this.provider),
91
+ multicallContract: new ethcall_1.Contract(addr, ERC20_json_1.default),
92
+ };
93
+ _this.constants.LP_TOKENS.push(addr);
94
+ });
95
+ }
96
+ function setFactoryGaugeContracts(rawPoolList) {
97
+ var _this = this;
98
+ rawPoolList.forEach(function (pool) {
99
+ if (pool.gaugeAddress) {
100
+ var addr = pool.gaugeAddress.toLowerCase();
101
+ _this.contracts[addr] = {
102
+ contract: new ethers_1.Contract(addr, gauge_factory_json_1.default, _this.signer || _this.provider),
103
+ multicallContract: new ethcall_1.Contract(addr, gauge_factory_json_1.default),
104
+ };
105
+ _this.constants.GAUGES.push(addr);
106
+ }
107
+ });
108
+ }
109
+ function setFactoryCoinsContracts(rawPoolList) {
110
+ for (var _i = 0, rawPoolList_1 = rawPoolList; _i < rawPoolList_1.length; _i++) {
111
+ var pool = rawPoolList_1[_i];
112
+ for (var _a = 0, _b = pool.coins; _a < _b.length; _a++) {
113
+ var coin = _b[_a];
114
+ var addr = coin.address.toLowerCase();
115
+ if (addr in this.contracts)
116
+ continue;
117
+ this.contracts[addr] = {
118
+ contract: new ethers_1.Contract(addr, ERC20_json_1.default, this.signer || this.provider),
119
+ multicallContract: new ethcall_1.Contract(addr, ERC20_json_1.default),
120
+ };
121
+ this.constants.DECIMALS_LOWER_CASE[addr] = Number(coin.decimals);
122
+ }
123
+ }
124
+ }
125
+ function setFactoryZapContracts() {
126
+ if (this.chainId === 137) {
127
+ var metaUsdZapAddress = "0x5ab5C56B9db92Ba45a0B46a207286cD83C15C939".toLowerCase();
128
+ this.contracts[metaUsdZapAddress] = {
129
+ contract: new ethers_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default, this.signer || this.provider),
130
+ multicallContract: new ethcall_1.Contract(metaUsdZapAddress, DepositZapMetaUsdPolygon_json_1.default),
131
+ };
132
+ var metaBtcZapAddress = "0xE2e6DC1708337A6e59f227921db08F21e3394723".toLowerCase();
133
+ this.contracts[metaBtcZapAddress] = {
134
+ contract: new ethers_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default, this.signer || this.provider),
135
+ multicallContract: new ethcall_1.Contract(metaBtcZapAddress, DepositZapMetaBtcPolygon_json_1.default),
136
+ };
137
+ }
138
+ else {
139
+ var metaSBtcZapAddress = "0x7abdbaf29929e7f8621b757d2a7c04d78d633834".toLowerCase();
140
+ this.contracts[metaSBtcZapAddress] = {
141
+ contract: new ethers_1.Contract(metaSBtcZapAddress, deposit_json_1.default, this.signer || this.provider),
142
+ multicallContract: new ethcall_1.Contract(metaSBtcZapAddress, deposit_json_1.default),
143
+ };
144
+ }
145
+ }
146
+ function getFactoryPoolsDataFromApi(isCrypto) {
147
+ return __awaiter(this, void 0, void 0, function () {
148
+ var network, factoryType, url, response, rawPoolList, FACTORY_POOLS_DATA;
149
+ var _this = this;
150
+ return __generator(this, function (_a) {
151
+ switch (_a.label) {
152
+ case 0:
153
+ network = this.chainId === 137 ? "polygon" : "ethereum";
154
+ factoryType = isCrypto ? "factory-crypto" : "factory";
155
+ url = "https://api.curve.fi/api/getPools/".concat(network, "/").concat(factoryType);
156
+ return [4 /*yield*/, axios_1.default.get(url)];
157
+ case 1:
158
+ response = _a.sent();
159
+ rawPoolList = response.data.data.poolData;
160
+ setFactorySwapContracts.call(this, rawPoolList, isCrypto);
161
+ if (isCrypto)
162
+ setCryptoFactoryTokenContracts.call(this, rawPoolList);
163
+ setFactoryGaugeContracts.call(this, rawPoolList);
164
+ setFactoryCoinsContracts.call(this, rawPoolList);
165
+ if (!isCrypto)
166
+ setFactoryZapContracts.call(this);
167
+ FACTORY_POOLS_DATA = {};
168
+ rawPoolList.forEach(function (pool) {
169
+ var coinAddresses = pool.coins.map(function (c) { return c.address.toLowerCase(); });
170
+ var coinNames = pool.coins.map(function (c) { return c.symbol; });
171
+ var coinDecimals = pool.coins.map(function (c) { return Number(c.decimals); });
172
+ if (isCrypto) {
173
+ var cryptoCoinNames = pool.coins.map(function (c) { return c.symbol === "ETH" ? "WETH" : c.symbol; });
174
+ var underlyingCoinNames = pool.coins.map(function (c) { return c.symbol === "WETH" ? "ETH" : c.symbol; });
175
+ var underlyingCoinAddresses = pool.coins.map(function (c) { return c.address.toLowerCase() === constants_1.WETH_ADDRESS ? constants_1.ETH_ADDRESS : c.address.toLowerCase(); });
176
+ FACTORY_POOLS_DATA[pool.id] = {
177
+ name: pool.name.split(": ")[1].trim(),
178
+ full_name: pool.name,
179
+ symbol: pool.symbol,
180
+ reference_asset: "CRYPTO",
181
+ N_COINS: coinAddresses.length,
182
+ is_crypto: true,
183
+ underlying_decimals: coinDecimals,
184
+ decimals: coinDecimals,
185
+ use_lending: coinAddresses.map(function () { return false; }),
186
+ is_plain: coinAddresses.map(function () { return true; }),
187
+ underlying_coins: underlyingCoinNames,
188
+ coins: cryptoCoinNames,
189
+ swap_address: pool.address.toLowerCase(),
190
+ token_address: pool.lpTokenAddress.toLowerCase(),
191
+ gauge_address: pool.gaugeAddress ? pool.gaugeAddress.toLowerCase() : ethers_1.ethers.constants.AddressZero,
192
+ underlying_coin_addresses: underlyingCoinAddresses,
193
+ coin_addresses: coinAddresses,
194
+ swap_abi: factory_crypto_pool_2_json_1.default,
195
+ gauge_abi: gauge_factory_json_1.default,
196
+ is_factory: true,
197
+ is_crypto_factory: true,
198
+ };
199
+ }
200
+ else if (pool.implementation.startsWith("meta")) {
201
+ var implementationABIDict = _this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
202
+ var implementationBasePoolAddressDict = _this.chainId === 137 ? constants_1.implementationBasePoolAddressDictPolygon : constants_1.implementationBasePoolAddressDictEthereum;
203
+ var basePoolAddressCoinsDict = _this.chainId === 137 ? constants_1.basePoolAddressCoinsDictPolygon : constants_1.basePoolAddressCoinsDictEthereum;
204
+ var basePoolAddressNameDict = _this.chainId === 137 ? constants_1.basePoolAddressNameDictPolygon : constants_1.basePoolAddressNameDictEthereum;
205
+ var basePoolAddressCoinAddressesDict = _this.chainId === 137 ? constants_1.basePoolAddressCoinAddressesDictPolygon : constants_1.basePoolAddressCoinAddressesDictEthereum;
206
+ var basePoolAddressDecimalsDict = _this.chainId === 137 ? constants_1.basePoolAddressDecimalsDictPolygon : constants_1.basePoolAddressDecimalsDictEthereum;
207
+ var basePoolAddressZapDict = _this.chainId === 137 ? constants_1.basePoolAddressZapDictPolygon : constants_1.basePoolAddressZapDictEthereum;
208
+ var basePoolAddress = implementationBasePoolAddressDict[pool.implementationAddress];
209
+ var basePoolCoinNames = basePoolAddressCoinsDict[basePoolAddress];
210
+ var basePoolCoinAddresses = basePoolAddressCoinAddressesDict[basePoolAddress];
211
+ var basePoolDecimals = basePoolAddressDecimalsDict[basePoolAddress];
212
+ var basePoolZap = basePoolAddressZapDict[basePoolAddress];
213
+ FACTORY_POOLS_DATA[pool.id] = {
214
+ name: pool.name.split(": ")[1].trim(),
215
+ full_name: pool.name,
216
+ symbol: pool.symbol,
217
+ reference_asset: pool.assetTypeName.toUpperCase(),
218
+ N_COINS: coinAddresses.length,
219
+ underlying_decimals: coinDecimals,
220
+ decimals: coinDecimals,
221
+ use_lending: coinAddresses.map(function () { return false; }),
222
+ is_plain: coinAddresses.map(function () { return true; }),
223
+ swap_address: pool.address.toLowerCase(),
224
+ token_address: pool.address.toLowerCase(),
225
+ gauge_address: pool.gaugeAddress ? pool.gaugeAddress.toLowerCase() : ethers_1.ethers.constants.AddressZero,
226
+ underlying_coins: __spreadArray([coinNames[0]], basePoolCoinNames, true),
227
+ coins: coinNames,
228
+ underlying_coin_addresses: coinAddresses,
229
+ coin_addresses: coinAddresses,
230
+ swap_abi: implementationABIDict[pool.implementationAddress],
231
+ gauge_abi: gauge_factory_json_1.default,
232
+ is_factory: true,
233
+ is_meta_factory: true,
234
+ is_meta: true,
235
+ base_pool: basePoolAddressNameDict[basePoolAddress],
236
+ meta_coin_addresses: basePoolCoinAddresses,
237
+ meta_coin_decimals: __spreadArray([coinDecimals[0]], basePoolDecimals, true),
238
+ deposit_address: basePoolZap,
239
+ deposit_abi: deposit_json_1.default,
240
+ };
241
+ }
242
+ else {
243
+ var implementationABIDict = _this.chainId === 137 ? constants_1.implementationABIDictPolygon : constants_1.implementationABIDictEthereum;
244
+ FACTORY_POOLS_DATA[pool.id] = {
245
+ name: pool.name.split(": ")[1].trim(),
246
+ full_name: pool.name,
247
+ symbol: pool.symbol,
248
+ reference_asset: pool.assetTypeName.toUpperCase(),
249
+ N_COINS: coinAddresses.length,
250
+ underlying_decimals: coinDecimals,
251
+ decimals: coinDecimals,
252
+ use_lending: coinAddresses.map(function () { return false; }),
253
+ is_plain: coinAddresses.map(function () { return true; }),
254
+ swap_address: pool.address.toLowerCase(),
255
+ token_address: pool.address.toLowerCase(),
256
+ gauge_address: pool.gaugeAddress ? pool.gaugeAddress.toLowerCase() : ethers_1.ethers.constants.AddressZero,
257
+ underlying_coins: coinNames,
258
+ coins: coinNames,
259
+ underlying_coin_addresses: coinAddresses,
260
+ coin_addresses: coinAddresses,
261
+ swap_abi: implementationABIDict[pool.implementationAddress],
262
+ gauge_abi: gauge_factory_json_1.default,
263
+ is_factory: true,
264
+ is_plain_factory: true,
265
+ };
266
+ }
267
+ });
268
+ return [2 /*return*/, FACTORY_POOLS_DATA];
269
+ }
270
+ });
271
+ });
272
+ }
273
+ exports.getFactoryPoolsDataFromApi = getFactoryPoolsDataFromApi;
@@ -0,0 +1,2 @@
1
+ import { DictInterface, PoolDataInterface, ICurve } from "../interfaces";
2
+ export declare function getCryptoFactoryPoolData(this: ICurve): Promise<DictInterface<PoolDataInterface>>;