@curvefi/llamalend-api 1.0.3 → 1.0.4

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.
@@ -109,16 +109,16 @@ export var ALIASES_FRAXTAL = lowerCaseValues({
109
109
  "crv": "0x331B9182088e2A7d6D3Fe4742AbA1fB231aEcc56",
110
110
  "one_way_factory": "0xf3c9bdAB17B7016fBE3B77D17b1602A7db93ac66",
111
111
  "gauge_controller": "0x0000000000000000000000000000000000000000",
112
- "gauge_factory": "0xeF672bD94913CB6f1d2812a6e18c1fFdEd8eFf5c",
112
+ "gauge_factory_old": "0xeF672bD94913CB6f1d2812a6e18c1fFdEd8eFf5c",
113
+ "gauge_factory": "0x0b8d6b6cefc7aa1c2852442e518443b1b22e1c52",
113
114
  "leverage_zap": "0x37c5ab57AF7100Bdc9B668d766e193CCbF6614FD",
114
115
  "leverage_markets_start_id": "0",
115
116
  });
116
117
  export var ALIASES_SONIC = lowerCaseValues({
117
- "crv": "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978",
118
- "one_way_factory": "0xcaEC110C784c9DF37240a8Ce096D352A75922DeA",
118
+ "crv": "0x5Af79133999f7908953E94b7A5CF367740Ebee35",
119
+ "one_way_factory": "0x30d1859dad5a52ae03b6e259d1b48c4b12933993",
119
120
  "gauge_controller": "0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB",
120
- "gauge_factory": "0xabC000d88f23Bb45525E447528DBF656A9D55bf5",
121
- // "leverage_zap": "0x0000000000000000000000000000000000000000", // 1inch
122
- "leverage_zap": "0xb7b240CFa985306563A301bC417Bc9715059a117",
123
- "leverage_markets_start_id": "9",
121
+ "gauge_factory": "0xf3A431008396df8A8b2DF492C913706BDB0874ef",
122
+ "leverage_zap": "0x5552b631e2aD801fAa129Aacf4B701071cC9D1f7",
123
+ "leverage_markets_start_id": "0",
124
124
  });
@@ -3,8 +3,8 @@ import { Contract as MulticallContract, Provider as MulticallProvider } from "@c
3
3
  export interface IDict<T> {
4
4
  [index: string]: T;
5
5
  }
6
- export type INetworkName = "ethereum" | "optimism" | "bsc" | "xdai" | "polygon" | "x-layer" | "fantom" | "fraxtal" | "zksync" | "moonbeam" | "kava" | "mantle" | "base" | "arbitrum" | "celo" | "avalanche" | "aurora";
7
- export type IChainId = 1 | 10 | 56 | 100 | 137 | 196 | 250 | 252 | 324 | 1284 | 2222 | 5000 | 8453 | 42161 | 42220 | 43114 | 1313161554;
6
+ export type INetworkName = "ethereum" | "optimism" | "bsc" | "xdai" | "polygon" | 'sonic' | "x-layer" | "fantom" | "fraxtal" | "zksync" | "moonbeam" | "kava" | "mantle" | "base" | "arbitrum" | "celo" | "avalanche" | "aurora";
7
+ export type IChainId = 1 | 10 | 56 | 100 | 137 | 146 | 196 | 250 | 252 | 324 | 1284 | 2222 | 5000 | 8453 | 42161 | 42220 | 43114 | 1313161554;
8
8
  export type IPoolFactory = "main" | "crypto" | "factory" | "factory-crvusd" | "factory-crypto" | "factory-twocrypto" | "factory-tricrypto" | "factory-stable-ng";
9
9
  export interface ICurveContract {
10
10
  contract: Contract;
@@ -1506,24 +1506,45 @@ var LendMarketTemplate = /** @class */ (function () {
1506
1506
  };
1507
1507
  LendMarketTemplate.prototype._vaultClaimCrv = function (estimateGas) {
1508
1508
  return __awaiter(this, void 0, void 0, function () {
1509
- var contract, gas, gasLimit;
1509
+ var isOldFactory, contract, oldFactoryContract, lpToken, gaugeAddress, gas, gasLimit;
1510
1510
  return __generator(this, function (_a) {
1511
1511
  switch (_a.label) {
1512
1512
  case 0:
1513
1513
  if (this.vaultRewardsOnly())
1514
1514
  throw Error("".concat(this.name, " has Rewards-Only Gauge. Use claimRewards instead"));
1515
- contract = llamalend.contracts[llamalend.constants.ALIASES.minter].contract;
1515
+ isOldFactory = false;
1516
+ if (!(llamalend.chainId !== 1)) return [3 /*break*/, 3];
1517
+ if (!(llamalend.constants.ALIASES.gauge_factory_old && llamalend.constants.ALIASES.gauge_factory_old !== llamalend.constants.ZERO_ADDRESS)) return [3 /*break*/, 3];
1518
+ oldFactoryContract = llamalend.contracts[llamalend.constants.ALIASES.gauge_factory_old].contract;
1519
+ return [4 /*yield*/, llamalend.contracts[this.addresses.gauge].contract.lp_token()];
1520
+ case 1:
1521
+ lpToken = _a.sent();
1522
+ return [4 /*yield*/, oldFactoryContract.get_gauge_from_lp_token(lpToken)];
1523
+ case 2:
1524
+ gaugeAddress = _a.sent();
1525
+ isOldFactory = gaugeAddress.toLowerCase() === this.addresses.gauge.toLowerCase();
1526
+ if (isOldFactory) {
1527
+ contract = oldFactoryContract;
1528
+ }
1529
+ _a.label = 3;
1530
+ case 3:
1531
+ if (!isOldFactory) {
1532
+ contract = llamalend.contracts[llamalend.constants.ALIASES.minter].contract;
1533
+ }
1534
+ if (!contract) {
1535
+ throw Error("".concat(this.name, " couldn't match gauge factory"));
1536
+ }
1516
1537
  return [4 /*yield*/, contract.mint.estimateGas(this.addresses.gauge, llamalend.constantOptions)];
1517
- case 1:
1538
+ case 4:
1518
1539
  gas = _a.sent();
1519
1540
  if (estimateGas)
1520
1541
  return [2 /*return*/, smartNumber(gas)];
1521
1542
  return [4 /*yield*/, llamalend.updateFeeData()];
1522
- case 2:
1543
+ case 5:
1523
1544
  _a.sent();
1524
1545
  gasLimit = _mulBy1_3(DIGas(gas));
1525
1546
  return [4 /*yield*/, contract.mint(this.addresses.gauge, __assign(__assign({}, llamalend.options), { gasLimit: gasLimit }))];
1526
- case 3: return [2 /*return*/, (_a.sent()).hash];
1547
+ case 6: return [2 /*return*/, (_a.sent()).hash];
1527
1548
  }
1528
1549
  });
1529
1550
  });
package/lib/llamalend.js CHANGED
@@ -76,6 +76,7 @@ import gasOracleBlobABI from './constants/abis/gas_oracle_optimism_blob.json' as
76
76
  // crvUSD ABIs
77
77
  import llammaABI from "./constants/abis/crvUSD/llamma.json" assert { type: 'json' };
78
78
  import controllerABI from "./constants/abis/crvUSD/controller.json" assert { type: 'json' };
79
+ import controllerV2ABI from "./constants/abis/crvUSD/controller_v2.json";
79
80
  import PegKeeper from "./constants/abis/crvUSD/PegKeeper.json" assert { type: 'json' };
80
81
  import FactoryABI from "./constants/abis/crvUSD/Factory.json" assert { type: 'json' };
81
82
  import MonetaryPolicy2ABI from "./constants/abis/crvUSD/MonetaryPolicy2.json" assert { type: 'json' };
@@ -506,9 +507,9 @@ var Llamalend = /** @class */ (function () {
506
507
  var _a;
507
508
  if (options === void 0) { options = {}; }
508
509
  return __awaiter(this, void 0, void 0, function () {
509
- var jsonRpcApiProviderOptions, _b, e_1, _c, network, _d, err_1, _i, _e, llamma, monetary_policy_address, _f, _g, pegKeeper, factoryContract, factoryMulticallContract, N1, N2, calls, i, res, collaterals, amms, controllers, _h, collaterals_1, collateral, _j, collaterals_2, collateral, res_1, i, is_eth, _k, collateral_symbol, collateral_decimals, monetary_policy_address, _llammaId, llammaId, j, lendingInstance_1, originalEstimate_1, oldEstimate, newEstimate;
510
- return __generator(this, function (_l) {
511
- switch (_l.label) {
510
+ var jsonRpcApiProviderOptions, _b, e_1, _c, network, _d, err_1, _i, _e, llamma, monetary_policy_address, _f, _g, pegKeeper, factoryContract, factoryMulticallContract, N1, N2, calls, i, res, collaterals, amms, controllers, _h, collaterals_1, collateral, _j, collaterals_2, collateral, res_1, _k, amms_1, amm, AParams, i, is_eth, _l, collateral_symbol, collateral_decimals, monetary_policy_address, _llammaId, llammaId, j, lendingInstance_1, originalEstimate_1, oldEstimate, newEstimate;
511
+ return __generator(this, function (_m) {
512
+ switch (_m.label) {
512
513
  case 0:
513
514
  // @ts-ignore
514
515
  this.provider = null;
@@ -560,16 +561,16 @@ var Llamalend = /** @class */ (function () {
560
561
  return [3 /*break*/, 5];
561
562
  case 1:
562
563
  if (!!((_a = providerSettings.url) === null || _a === void 0 ? void 0 : _a.startsWith("https://rpc.gnosischain.com"))) return [3 /*break*/, 5];
563
- _l.label = 2;
564
+ _m.label = 2;
564
565
  case 2:
565
- _l.trys.push([2, 4, , 5]);
566
+ _m.trys.push([2, 4, , 5]);
566
567
  _b = this;
567
568
  return [4 /*yield*/, this.provider.getSigner()];
568
569
  case 3:
569
- _b.signer = _l.sent();
570
+ _b.signer = _m.sent();
570
571
  return [3 /*break*/, 5];
571
572
  case 4:
572
- e_1 = _l.sent();
573
+ e_1 = _m.sent();
573
574
  this.signer = null;
574
575
  return [3 /*break*/, 5];
575
576
  case 5: return [3 /*break*/, 9];
@@ -580,7 +581,7 @@ var Llamalend = /** @class */ (function () {
580
581
  _c = this;
581
582
  return [4 /*yield*/, this.provider.getSigner()];
582
583
  case 7:
583
- _c.signer = _l.sent();
584
+ _c.signer = _m.sent();
584
585
  return [3 /*break*/, 9];
585
586
  case 8:
586
587
  if (providerType.toLowerCase() === 'Infura'.toLowerCase()) {
@@ -597,10 +598,10 @@ var Llamalend = /** @class */ (function () {
597
598
  else {
598
599
  throw Error('Wrong providerType');
599
600
  }
600
- _l.label = 9;
601
+ _m.label = 9;
601
602
  case 9: return [4 /*yield*/, this.provider.getNetwork()];
602
603
  case 10:
603
- network = _l.sent();
604
+ network = _m.sent();
604
605
  this.chainId = Number(network.chainId) === 133 || Number(network.chainId) === 31337 ? 1 : Number(network.chainId);
605
606
  console.log("CURVE-LENDING-JS IS CONNECTED TO NETWORK:", { name: network.name.toUpperCase(), chainId: Number(this.chainId) });
606
607
  if (this.chainId === 42161) {
@@ -618,27 +619,27 @@ var Llamalend = /** @class */ (function () {
618
619
  this.constants.DECIMALS[this.constants.ALIASES.st_crvUSD] = 18;
619
620
  this.multicallProvider = new MulticallProvider(this.chainId, this.provider);
620
621
  if (!this.signer) return [3 /*break*/, 15];
621
- _l.label = 11;
622
+ _m.label = 11;
622
623
  case 11:
623
- _l.trys.push([11, 13, , 14]);
624
+ _m.trys.push([11, 13, , 14]);
624
625
  _d = this;
625
626
  return [4 /*yield*/, this.signer.getAddress()];
626
627
  case 12:
627
- _d.signerAddress = _l.sent();
628
+ _d.signerAddress = _m.sent();
628
629
  return [3 /*break*/, 14];
629
630
  case 13:
630
- err_1 = _l.sent();
631
+ err_1 = _m.sent();
631
632
  this.signer = null;
632
633
  return [3 /*break*/, 14];
633
634
  case 14: return [3 /*break*/, 16];
634
635
  case 15:
635
636
  this.signerAddress = '';
636
- _l.label = 16;
637
+ _m.label = 16;
637
638
  case 16:
638
639
  this.feeData = { gasPrice: options.gasPrice, maxFeePerGas: options.maxFeePerGas, maxPriorityFeePerGas: options.maxPriorityFeePerGas };
639
640
  return [4 /*yield*/, this.updateFeeData()];
640
641
  case 17:
641
- _l.sent();
642
+ _m.sent();
642
643
  // oneWayMarkets contracts
643
644
  this.setContract(this.constants.ALIASES['one_way_factory'], OneWayLendingFactoryABI);
644
645
  this.setContract(this.constants.ALIASES['gauge_controller'], GaugeControllerABI);
@@ -648,13 +649,23 @@ var Llamalend = /** @class */ (function () {
648
649
  this.setContract(this.constants.ALIASES.gauge_factory, GaugeFactoryMainnetABI);
649
650
  }
650
651
  else {
651
- this.constants.ALIASES.minter = this.constants.ALIASES.gauge_factory;
652
- this.setContract(this.constants.ALIASES.gauge_factory, GaugeFactorySidechainABI);
652
+ if (this.constants.ALIASES.gauge_factory_old && this.constants.ALIASES.gauge_factory_old !== this.constants.ZERO_ADDRESS) {
653
+ // set old gauge factory
654
+ this.constants.ALIASES.minter_old = this.constants.ALIASES.gauge_factory_old;
655
+ this.setContract(this.constants.ALIASES.gauge_factory_old, GaugeFactorySidechainABI);
656
+ // set new gauge factory
657
+ this.constants.ALIASES.minter = this.constants.ALIASES.gauge_factory;
658
+ this.setContract(this.constants.ALIASES.gauge_factory, GaugeFactorySidechainABI);
659
+ }
660
+ else {
661
+ this.constants.ALIASES.minter = this.constants.ALIASES.gauge_factory;
662
+ this.setContract(this.constants.ALIASES.gauge_factory, GaugeFactorySidechainABI);
663
+ }
653
664
  }
654
665
  if (!(this.chainId === 1)) return [3 /*break*/, 22];
655
666
  this.setContract(this.constants.COINS.crvusd.toLowerCase(), ERC20ABI);
656
667
  _i = 0, _e = Object.values(this.constants.LLAMMAS);
657
- _l.label = 18;
668
+ _m.label = 18;
658
669
  case 18:
659
670
  if (!(_i < _e.length)) return [3 /*break*/, 21];
660
671
  llamma = _e[_i];
@@ -662,7 +673,7 @@ var Llamalend = /** @class */ (function () {
662
673
  this.setContract(llamma.controller_address, controllerABI);
663
674
  return [4 /*yield*/, this.contracts[llamma.controller_address].contract.monetary_policy(this.constantOptions)];
664
675
  case 19:
665
- monetary_policy_address = _l.sent();
676
+ monetary_policy_address = _m.sent();
666
677
  llamma.monetary_policy_address = monetary_policy_address.toLowerCase();
667
678
  this.setContract(llamma.monetary_policy_address, llamma.monetary_policy_abi);
668
679
  if (llamma.collateral_address === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") {
@@ -675,7 +686,7 @@ var Llamalend = /** @class */ (function () {
675
686
  this.setContract(llamma.deleverage_zap, DeleverageZapABI);
676
687
  if (llamma.health_calculator_zap)
677
688
  this.setContract(llamma.health_calculator_zap, HealthCalculatorZapABI);
678
- _l.label = 20;
689
+ _m.label = 20;
679
690
  case 20:
680
691
  _i++;
681
692
  return [3 /*break*/, 18];
@@ -684,7 +695,7 @@ var Llamalend = /** @class */ (function () {
684
695
  pegKeeper = _g[_f];
685
696
  this.setContract(pegKeeper, PegKeeper);
686
697
  }
687
- _l.label = 22;
698
+ _m.label = 22;
688
699
  case 22:
689
700
  // TODO Put it in a separate method
690
701
  // Fetch new llammas
@@ -694,18 +705,18 @@ var Llamalend = /** @class */ (function () {
694
705
  N1 = Object.keys(this.constants.LLAMMAS).length;
695
706
  return [4 /*yield*/, factoryContract.n_collaterals(this.constantOptions)];
696
707
  case 23:
697
- N2 = _l.sent();
708
+ N2 = _m.sent();
698
709
  calls = [];
699
710
  for (i = N1; i < N2; i++) {
700
711
  calls.push(factoryMulticallContract.collaterals(i), factoryMulticallContract.amms(i), factoryMulticallContract.controllers(i));
701
712
  }
702
713
  return [4 /*yield*/, this.multicallProvider.all(calls)];
703
714
  case 24:
704
- res = (_l.sent()).map(function (c) { return c.toLowerCase(); });
715
+ res = (_m.sent()).map(function (c) { return c.toLowerCase(); });
705
716
  collaterals = res.filter(function (a, i) { return i % 3 == 0; });
706
717
  amms = res.filter(function (a, i) { return i % 3 == 1; });
707
718
  controllers = res.filter(function (a, i) { return i % 3 == 2; });
708
- if (!(collaterals.length > 0)) return [3 /*break*/, 29];
719
+ if (!(collaterals.length > 0)) return [3 /*break*/, 30];
709
720
  for (_h = 0, collaterals_1 = collaterals; _h < collaterals_1.length; _h++) {
710
721
  collateral = collaterals_1[_h];
711
722
  this.setContract(collateral, ERC20ABI);
@@ -717,22 +728,38 @@ var Llamalend = /** @class */ (function () {
717
728
  }
718
729
  return [4 /*yield*/, this.multicallProvider.all(calls)];
719
730
  case 25:
720
- res_1 = (_l.sent()).map(function (x) {
731
+ res_1 = (_m.sent()).map(function (x) {
721
732
  if (typeof x === "string")
722
733
  return x.toLowerCase();
723
734
  return x;
724
735
  });
725
- i = 0;
726
- _l.label = 26;
736
+ calls = [];
737
+ for (_k = 0, amms_1 = amms; _k < amms_1.length; _k++) {
738
+ amm = amms_1[_k];
739
+ this.setContract(amm, llammaABI);
740
+ calls.push(this.contracts[amm].multicallContract.A());
741
+ }
742
+ return [4 /*yield*/, this.multicallProvider.all(calls)];
727
743
  case 26:
728
- if (!(i < collaterals.length)) return [3 /*break*/, 29];
744
+ AParams = (_m.sent()).map(function (x) {
745
+ return Number(x);
746
+ });
747
+ i = 0;
748
+ _m.label = 27;
749
+ case 27:
750
+ if (!(i < collaterals.length)) return [3 /*break*/, 30];
729
751
  is_eth = collaterals[i] === this.constants.WETH;
730
- _k = res_1.splice(0, 2), collateral_symbol = _k[0], collateral_decimals = _k[1];
731
- this.setContract(amms[i], llammaABI);
752
+ _l = res_1.splice(0, 2), collateral_symbol = _l[0], collateral_decimals = _l[1];
753
+ if (i >= collaterals.length - 3) {
754
+ this.setContract(controllers[i], controllerV2ABI);
755
+ }
756
+ else {
757
+ this.setContract(controllers[i], controllerABI);
758
+ }
732
759
  this.setContract(controllers[i], controllerABI);
733
760
  return [4 /*yield*/, this.contracts[controllers[i]].contract.monetary_policy(this.constantOptions)];
734
- case 27:
735
- monetary_policy_address = (_l.sent()).toLowerCase();
761
+ case 28:
762
+ monetary_policy_address = (_m.sent()).toLowerCase();
736
763
  this.setContract(monetary_policy_address, MonetaryPolicy2ABI);
737
764
  _llammaId = is_eth ? "eth" : collateral_symbol.toLowerCase();
738
765
  llammaId = _llammaId;
@@ -751,14 +778,14 @@ var Llamalend = /** @class */ (function () {
751
778
  min_bands: 4,
752
779
  max_bands: 50,
753
780
  default_bands: 10,
754
- A: 100,
781
+ A: AParams[i],
755
782
  monetary_policy_abi: MonetaryPolicy2ABI,
756
783
  };
757
- _l.label = 28;
758
- case 28:
759
- i++;
760
- return [3 /*break*/, 26];
784
+ _m.label = 29;
761
785
  case 29:
786
+ i++;
787
+ return [3 /*break*/, 27];
788
+ case 30:
762
789
  this.constants.DECIMALS = extractDecimals(this.constants.LLAMMAS);
763
790
  this.constants.DECIMALS[this.address] = 18;
764
791
  if (L2Networks.includes(this.chainId)) {
package/lib/utils.js CHANGED
@@ -426,7 +426,7 @@ export var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, v
426
426
  56: "binance-smart-chain",
427
427
  100: 'xdai',
428
428
  137: 'polygon-pos',
429
- 156: 'sonic',
429
+ 146: 'sonic',
430
430
  196: 'x-layer',
431
431
  250: 'fantom',
432
432
  252: 'fraxtal',
@@ -446,7 +446,7 @@ export var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, v
446
446
  56: 'binancecoin',
447
447
  100: 'xdai',
448
448
  137: 'matic-network',
449
- 156: 'sonic-3',
449
+ 146: 'sonic-3',
450
450
  196: 'okb',
451
451
  250: 'fantom',
452
452
  252: 'frax-ether',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/llamalend-api",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "JavaScript library for Curve Lending",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",