@curvefi/api 1.20.2 → 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"));
@@ -449,34 +450,52 @@ var Curve = /** @class */ (function () {
449
450
  });
450
451
  });
451
452
  };
452
- Curve.prototype.fetchFactoryPools = function () {
453
+ Curve.prototype.fetchFactoryPools = function (useApi) {
454
+ if (useApi === void 0) { useApi = true; }
453
455
  return __awaiter(this, void 0, void 0, function () {
454
- var _a;
455
- return __generator(this, function (_b) {
456
- switch (_b.label) {
456
+ var _a, _b;
457
+ return __generator(this, function (_c) {
458
+ switch (_c.label) {
457
459
  case 0:
460
+ if (!useApi) return [3 /*break*/, 2];
458
461
  _a = this.constants;
459
- return [4 /*yield*/, factory_1.getFactoryPoolData.call(this)];
462
+ return [4 /*yield*/, factory_api_1.getFactoryPoolsDataFromApi.call(this, false)];
460
463
  case 1:
461
- _a.FACTORY_POOLS_DATA = _b.sent();
462
- 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*/];
463
473
  }
464
474
  });
465
475
  });
466
476
  };
467
- Curve.prototype.fetchCryptoFactoryPools = function () {
477
+ Curve.prototype.fetchCryptoFactoryPools = function (useApi) {
478
+ if (useApi === void 0) { useApi = true; }
468
479
  return __awaiter(this, void 0, void 0, function () {
469
- var _a;
470
- return __generator(this, function (_b) {
471
- switch (_b.label) {
480
+ var _a, _b;
481
+ return __generator(this, function (_c) {
482
+ switch (_c.label) {
472
483
  case 0:
473
- 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];
474
487
  _a = this.constants;
475
- return [4 /*yield*/, factory_crypto_1.getCryptoFactoryPoolData.call(this)];
488
+ return [4 /*yield*/, factory_api_1.getFactoryPoolsDataFromApi.call(this, true)];
476
489
  case 1:
477
- _a.CRYPTO_FACTORY_POOLS_DATA = _b.sent();
478
- _b.label = 2;
479
- 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*/];
480
499
  }
481
500
  });
482
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>>;