@gearbox-protocol/sdk 3.0.0-vfour.4 → 3.0.0-vfour.6

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.
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var viem = require('viem');
4
- var sdkGov = require('@gearbox-protocol/sdk-gov');
5
4
  var utils = require('viem/utils');
6
- var actions = require('viem/actions');
5
+ var dateFns = require('date-fns');
7
6
  var chains$1 = require('viem/chains');
7
+ var actions = require('viem/actions');
8
8
  var eventemitter3 = require('eventemitter3');
9
9
  var evmConnector = require('@redstone-finance/evm-connector');
10
10
  var redstoneProtocol = require('redstone-protocol');
11
+ var sdkGov = require('@gearbox-protocol/sdk-gov');
11
12
  var aura = require('@gearbox-protocol/sdk-gov/lib/tokens/aura');
12
13
 
13
14
  // src/accounts/CreditAccountsService.ts
@@ -12413,6 +12414,18 @@ var routerV3Abi = [
12413
12414
  // src/constants/addresses.ts
12414
12415
  var ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
12415
12416
  var NOT_DEPLOYED = "0xNOT DEPLOYED";
12417
+ var USDC = {
12418
+ Mainnet: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
12419
+ Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
12420
+ Optimism: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
12421
+ Base: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
12422
+ };
12423
+ var TIMELOCK = {
12424
+ Mainnet: "0xa133C9A92Fb8dDB962Af1cbae58b2723A0bdf23b",
12425
+ Arbitrum: "0x148DD932eCe1155c11006F5650c6Ff428f8D374A",
12426
+ Optimism: "0x148DD932eCe1155c11006F5650c6Ff428f8D374A",
12427
+ Base: NOT_DEPLOYED
12428
+ };
12416
12429
 
12417
12430
  // src/constants/address-provider.ts
12418
12431
  var NO_VERSION = 0;
@@ -12449,6 +12462,34 @@ var ADDRESS_PROVIDER = {
12449
12462
  Base: NOT_DEPLOYED
12450
12463
  };
12451
12464
 
12465
+ // src/constants/bot-permissions.ts
12466
+ var BotPermissions = /* @__PURE__ */ ((BotPermissions2) => {
12467
+ BotPermissions2[BotPermissions2["ADD_COLLATERAL"] = 1] = "ADD_COLLATERAL";
12468
+ BotPermissions2[BotPermissions2["INCREASE_DEBT"] = 2] = "INCREASE_DEBT";
12469
+ BotPermissions2[BotPermissions2["DECREASE_DEBT"] = 4] = "DECREASE_DEBT";
12470
+ BotPermissions2[BotPermissions2["ENABLE_TOKEN"] = 8] = "ENABLE_TOKEN";
12471
+ BotPermissions2[BotPermissions2["DISABLE_TOKEN"] = 16] = "DISABLE_TOKEN";
12472
+ BotPermissions2[BotPermissions2["WITHDRAW_COLLATERAL"] = 32] = "WITHDRAW_COLLATERAL";
12473
+ BotPermissions2[BotPermissions2["UPDATE_QUOTA"] = 64] = "UPDATE_QUOTA";
12474
+ BotPermissions2[BotPermissions2["REVOKE_ALLOWANCES"] = 128] = "REVOKE_ALLOWANCES";
12475
+ BotPermissions2[BotPermissions2["EXTERNAL_CALLS"] = 65536] = "EXTERNAL_CALLS";
12476
+ BotPermissions2[BotPermissions2["ALL_CREDIT_FACADE_CALLS"] = 255] = "ALL_CREDIT_FACADE_CALLS";
12477
+ BotPermissions2[BotPermissions2["ALLS"] = 65791] = "ALLS";
12478
+ return BotPermissions2;
12479
+ })(BotPermissions || {});
12480
+ function botPermissionsToString(value) {
12481
+ let result = "";
12482
+ for (let i = 0; i < 16; i++) {
12483
+ if ((value & 1n << BigInt(i)) !== 0n) {
12484
+ if (result.length > 0) {
12485
+ result += " | ";
12486
+ }
12487
+ result += BotPermissions[1 << i];
12488
+ }
12489
+ }
12490
+ return result;
12491
+ }
12492
+
12452
12493
  // src/constants/math.ts
12453
12494
  var MIN_INT96 = -39614081257132168796771975168n;
12454
12495
  var MAX_UINT256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
@@ -12620,6 +12661,128 @@ function createRawTx(to, parameters, description) {
12620
12661
  };
12621
12662
  }
12622
12663
 
12664
+ // src/utils/etherscan.ts
12665
+ function etherscanUrl(entity, network) {
12666
+ let [prefix, domain] = ["", "etherscan.io"];
12667
+ let param;
12668
+ if ("transactionHash" in entity && "blockHash" in entity) {
12669
+ param = { tx: entity.transactionHash };
12670
+ } else if ("creditAccount" in entity && "creditManager" in entity) {
12671
+ param = { address: entity.creditAccount };
12672
+ } else {
12673
+ param = entity;
12674
+ }
12675
+ switch (network) {
12676
+ case "Optimism":
12677
+ prefix = "optimistic.";
12678
+ break;
12679
+ case "Arbitrum":
12680
+ domain = "arbiscan.io";
12681
+ break;
12682
+ case "Base":
12683
+ domain = "basescan.org";
12684
+ break;
12685
+ }
12686
+ const [key, value] = Object.entries(param)[0];
12687
+ return `https://${prefix}${domain}/${key}/${value}`;
12688
+ }
12689
+
12690
+ // src/utils/filterDust.ts
12691
+ function filterDust(account) {
12692
+ const result = {};
12693
+ for (const { token, balance } of account.tokens) {
12694
+ if (balance > 10n) {
12695
+ result[token] = balance;
12696
+ }
12697
+ }
12698
+ return result;
12699
+ }
12700
+ var percentFmt = (v, raw = true) => `${(Number(v) / 100).toFixed(2)}%` + (raw ? ` [${v}]` : "");
12701
+ function formatBNvalue(num, decimals2, precision, raw = true) {
12702
+ return `${formatBN(num, decimals2, precision)}` + (raw ? ` [ ${num} ]` : "");
12703
+ }
12704
+ function formatBN(num, decimals2, precision) {
12705
+ if (num === void 0) {
12706
+ return "-";
12707
+ }
12708
+ const numBInt = BigInt(num);
12709
+ const limitedNum = limitNum(numBInt, decimals2);
12710
+ const limitedPrecision = limitPrecision(limitedNum, precision);
12711
+ return toHumanFormat(limitedNum, limitedPrecision);
12712
+ }
12713
+ var limitPrecision = (n, p) => {
12714
+ const notZero = n !== 0n;
12715
+ if (n <= 10n && notZero) {
12716
+ return 6;
12717
+ }
12718
+ if (n <= 100n && notZero) {
12719
+ return 5;
12720
+ }
12721
+ if (n <= 1000n && notZero) {
12722
+ return 4;
12723
+ }
12724
+ if (n <= 10000n && notZero) {
12725
+ return 3;
12726
+ }
12727
+ if (p === void 0 && n > 10n ** 21n) {
12728
+ return 2;
12729
+ }
12730
+ if (p === void 0 && n > 10n ** 24n) {
12731
+ return 0;
12732
+ }
12733
+ return p;
12734
+ };
12735
+ var limitNum = (n, d = 18) => {
12736
+ let limited = n <= 2n ? 0n : n;
12737
+ if (d <= 6) {
12738
+ return limited * 10n ** BigInt(6 - d);
12739
+ } else {
12740
+ return limited / 10n ** BigInt(d - 6);
12741
+ }
12742
+ };
12743
+ function toHumanFormat(num, precision = 2) {
12744
+ if (num >= BigInt(1e15)) {
12745
+ return `${formatBn4dig(num / BigInt(1e9), precision)}Bn`;
12746
+ }
12747
+ if (num >= BigInt(1e12)) {
12748
+ return `${formatBn4dig(num / BigInt(1e6), precision)}M`;
12749
+ }
12750
+ if (num >= BigInt(1e9)) {
12751
+ return `${formatBn4dig(num / BigInt(1e3), precision)}K`;
12752
+ }
12753
+ return formatBn4dig(num, precision);
12754
+ }
12755
+ function formatBn4dig(num, precision = 2) {
12756
+ if (precision > 6) {
12757
+ throw new Error("Precision is too high, try <= 6");
12758
+ }
12759
+ const numStr = num.toString();
12760
+ if (numStr.length <= 6) {
12761
+ const completed = "0".repeat(6 - numStr.length) + numStr;
12762
+ return `0.${completed.slice(0, precision)}`;
12763
+ }
12764
+ return `${numStr.slice(0, numStr.length - 6)}.${numStr.slice(
12765
+ numStr.length - 6,
12766
+ numStr.length - 6 + precision
12767
+ )}`;
12768
+ }
12769
+ function fmtBinaryMask(mask) {
12770
+ return mask.toString(2).padStart(64, "0");
12771
+ }
12772
+ function numberWithCommas(x) {
12773
+ return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
12774
+ }
12775
+ function formatDuration(seconds, raw = true) {
12776
+ const now = Math.floor(Date.now() / 1e3) * 1e3;
12777
+ const start = new Date(now);
12778
+ const end = new Date(now + seconds * 1e3);
12779
+ const duration = dateFns.intervalToDuration({ start, end });
12780
+ return `${dateFns.formatDuration(duration)}` + (raw ? `[${seconds.toString()}]` : "");
12781
+ }
12782
+ function formatNumberToString_(value) {
12783
+ return value.toLocaleString("en-US", { minimumIntegerDigits: 1, useGrouping: true }).replaceAll(",", "_");
12784
+ }
12785
+
12623
12786
  // src/base/AddressLabeller.ts
12624
12787
  var AddressLabeller = class {
12625
12788
  #labels = new AddressMap();
@@ -12641,29 +12804,6 @@ var AddressLabeller = class {
12641
12804
  return this.#labels.asRecord();
12642
12805
  }
12643
12806
  };
12644
- function initLegacyLabels(labeller, network) {
12645
- Object.entries(sdkGov.tokenDataByNetwork[network]).forEach(([label, address]) => {
12646
- labeller.set(address, label);
12647
- });
12648
- Object.entries(sdkGov.tickerTokensByNetwork[network]).forEach(([label, address]) => {
12649
- labeller.set(address, label);
12650
- });
12651
- Object.entries(sdkGov.contractsByNetwork[network]).forEach(([label, address]) => {
12652
- labeller.set(address, label);
12653
- });
12654
- const multisigs = [
12655
- { safe: sdkGov.MULTISIG, label: "Multisig" },
12656
- { safe: sdkGov.ROUTER_MULTISIG_ADDRESS, label: "RouterMultisig" },
12657
- { safe: sdkGov.VETO_ADMIN, label: "VetoAdmin" },
12658
- { safe: sdkGov.TREASURY, label: "Treasury" }
12659
- ];
12660
- multisigs.forEach(({ safe, label }) => {
12661
- labeller.set(safe[network], label);
12662
- });
12663
- sdkGov.emergencyLiquidators.forEach((address) => {
12664
- labeller.set(address, "EmergencyLiquidator");
12665
- });
12666
- }
12667
12807
 
12668
12808
  // src/base/SDKConstruct.ts
12669
12809
  var SDKConstruct = class {
@@ -12813,12 +12953,48 @@ var VotingContractStatus = /* @__PURE__ */ ((VotingContractStatus2) => {
12813
12953
  VotingContractStatus2[VotingContractStatus2["UNVOTE_ONLY"] = 2] = "UNVOTE_ONLY";
12814
12954
  return VotingContractStatus2;
12815
12955
  })(VotingContractStatus || {});
12956
+ var SUPPORTED_CHAINS = [
12957
+ "Mainnet",
12958
+ "Arbitrum",
12959
+ "Optimism",
12960
+ "Base"
12961
+ ];
12962
+ var chains = {
12963
+ Mainnet: chains$1.mainnet,
12964
+ Arbitrum: chains$1.arbitrum,
12965
+ Optimism: chains$1.optimism,
12966
+ Base: chains$1.base
12967
+ };
12968
+ var Provider = class {
12969
+ chainId;
12970
+ chain;
12971
+ networkType;
12972
+ publicClient;
12973
+ addressLabels;
12974
+ constructor(opts) {
12975
+ const { chainId, networkType, rpcURL, timeout = 12e4 } = opts;
12976
+ this.chainId = chainId;
12977
+ this.networkType = networkType;
12978
+ this.chain = viem.defineChain({
12979
+ ...chains[networkType],
12980
+ id: chainId
12981
+ });
12982
+ this.publicClient = viem.createPublicClient({
12983
+ chain: this.chain,
12984
+ transport: viem.http(rpcURL, { timeout })
12985
+ // for SDK they could be multiple RPCs
12986
+ });
12987
+ this.addressLabels = new AddressLabeller();
12988
+ }
12989
+ };
12990
+
12991
+ // src/utils/viem/detectNetwork.ts
12816
12992
  async function detectNetwork(client) {
12817
- for (const chain of sdkGov.supportedChains) {
12993
+ for (const chain of SUPPORTED_CHAINS) {
12818
12994
  try {
12819
12995
  await client.readContract({
12820
12996
  abi: ierc20MetadataAbi,
12821
- address: sdkGov.tokenDataByNetwork[chain].USDC,
12997
+ address: USDC[chain],
12822
12998
  functionName: "symbol"
12823
12999
  });
12824
13000
  return chain;
@@ -13052,7 +13228,7 @@ var CreditAccountsService = class extends SDKConstruct {
13052
13228
  * TODO: do we want to expose "reverting"?
13053
13229
  * TODO: do we want to expose MarketFilter in any way? If so, we need to check that the MarketFilter is compatibled with attached markets?
13054
13230
  * @param args
13055
- * @returns
13231
+ * @returns returned credit accounts are sorted by health factor in ascending order
13056
13232
  */
13057
13233
  async getCreditAccounts(args) {
13058
13234
  const {
@@ -13087,7 +13263,7 @@ var CreditAccountsService = class extends SDKConstruct {
13087
13263
  offset = newOffset;
13088
13264
  } while (offset !== 0n);
13089
13265
  }
13090
- return allCAs;
13266
+ return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
13091
13267
  }
13092
13268
  /**
13093
13269
  * Generates transaction to liquidate credit account
@@ -13309,43 +13485,6 @@ function rawTxToMulticallPriceUpdate(tx) {
13309
13485
  args
13310
13486
  };
13311
13487
  }
13312
- var SUPPORTED_CHAINS = [
13313
- "Mainnet",
13314
- "Arbitrum",
13315
- "Optimism",
13316
- "Base"
13317
- ];
13318
- var chains = {
13319
- Mainnet: chains$1.mainnet,
13320
- Arbitrum: chains$1.arbitrum,
13321
- Optimism: chains$1.optimism,
13322
- Base: chains$1.base
13323
- };
13324
- var Provider = class {
13325
- chainId;
13326
- chain;
13327
- networkType;
13328
- publicClient;
13329
- /**
13330
- * Note: use interface here to hide implementation that uses sdk-gov
13331
- */
13332
- addressLabels;
13333
- constructor(opts) {
13334
- const { chainId, networkType, rpcURL, timeout = 12e4 } = opts;
13335
- this.chainId = chainId;
13336
- this.networkType = networkType;
13337
- this.chain = viem.defineChain({
13338
- ...chains[networkType],
13339
- id: chainId
13340
- });
13341
- this.publicClient = viem.createPublicClient({
13342
- chain: this.chain,
13343
- transport: viem.http(rpcURL, { timeout })
13344
- // for SDK they could be multiple RPCs
13345
- });
13346
- this.addressLabels = new AddressLabeller();
13347
- }
13348
- };
13349
13488
  var AddressProviderContractV3_1 = class extends BaseContract {
13350
13489
  #addresses = {};
13351
13490
  versions = {};
@@ -13460,7 +13599,7 @@ var BotListContract = class extends BaseContract {
13460
13599
  return [
13461
13600
  this.addressLabels.get(bot),
13462
13601
  this.addressLabels.get(creditManager),
13463
- sdkGov.botPermissionsToString(permissions)
13602
+ botPermissionsToString(permissions)
13464
13603
  ];
13465
13604
  }
13466
13605
  default:
@@ -13491,7 +13630,7 @@ var BotListContract = class extends BaseContract {
13491
13630
  break;
13492
13631
  case "SetBotSpecialPermissions":
13493
13632
  this.logger?.debug(
13494
- `Bot ${parsedLog.args.bot} has been given permissions ${sdkGov.botPermissionsToString(
13633
+ `Bot ${parsedLog.args.bot} has been given permissions ${botPermissionsToString(
13495
13634
  parsedLog.args.permissions
13496
13635
  )} for credit manager ${parsedLog.args.creditManager}`
13497
13636
  );
@@ -13531,16 +13670,18 @@ var GearStakingContract = class extends BaseContract {
13531
13670
  };
13532
13671
  }
13533
13672
  };
13673
+
13674
+ // src/market/CreditConfiguratorContract.ts
13534
13675
  var CreditConfiguratorContract = class extends BaseContract {
13535
13676
  adapters = [];
13536
13677
  emergencyLiquidators = [];
13537
- constructor(sdk, { creditConfigurator, creditManager }, emergencyLiquidators2) {
13678
+ constructor(sdk, { creditConfigurator, creditManager }, emergencyLiquidators) {
13538
13679
  super(sdk, {
13539
13680
  ...creditConfigurator.baseParams,
13540
13681
  name: `CreditConfigurator(${creditManager.name})`,
13541
13682
  abi: creditConfiguratorV3Abi
13542
13683
  });
13543
- this.emergencyLiquidators = [...emergencyLiquidators2];
13684
+ this.emergencyLiquidators = [...emergencyLiquidators];
13544
13685
  }
13545
13686
  get state() {
13546
13687
  return {
@@ -13553,7 +13694,7 @@ var CreditConfiguratorContract = class extends BaseContract {
13553
13694
  case "addCollateralToken":
13554
13695
  case "setLiquidationThreshold": {
13555
13696
  const [token, lt] = params.args;
13556
- return [this.addressLabels.get(token), sdkGov.percentFmt(lt)];
13697
+ return [this.addressLabels.get(token), percentFmt(lt)];
13557
13698
  }
13558
13699
  case "setExpirationDate": {
13559
13700
  const [expirationDate] = params.args;
@@ -13568,11 +13709,11 @@ var CreditConfiguratorContract = class extends BaseContract {
13568
13709
  liquidationPremiumExpired
13569
13710
  ] = params.args;
13570
13711
  return [
13571
- sdkGov.percentFmt(feeInterest),
13572
- sdkGov.percentFmt(feeLiquidation),
13573
- sdkGov.percentFmt(liquidationPremium),
13574
- sdkGov.percentFmt(feeLiquidationExpired),
13575
- sdkGov.percentFmt(liquidationPremiumExpired)
13712
+ percentFmt(feeInterest),
13713
+ percentFmt(feeLiquidation),
13714
+ percentFmt(liquidationPremium),
13715
+ percentFmt(feeLiquidationExpired),
13716
+ percentFmt(liquidationPremiumExpired)
13576
13717
  ];
13577
13718
  }
13578
13719
  // case "setMinDebtLimit":
@@ -13588,9 +13729,9 @@ var CreditConfiguratorContract = class extends BaseContract {
13588
13729
  const [token, liquidationThresholdFinal, rampStart, rampDuration] = params.args;
13589
13730
  return [
13590
13731
  this.addressLabels.get(token),
13591
- sdkGov.percentFmt(liquidationThresholdFinal),
13732
+ percentFmt(liquidationThresholdFinal),
13592
13733
  `${rampStart}`,
13593
- sdkGov.formatDuration(rampDuration)
13734
+ formatDuration(rampDuration)
13594
13735
  ];
13595
13736
  }
13596
13737
  default:
@@ -13598,6 +13739,8 @@ var CreditConfiguratorContract = class extends BaseContract {
13598
13739
  }
13599
13740
  }
13600
13741
  };
13742
+
13743
+ // src/market/CreditFacadeContract.ts
13601
13744
  var CreditFacadeContract = class extends BaseContract {
13602
13745
  state;
13603
13746
  constructor(sdk, { creditFacade, creditManager }) {
@@ -13664,7 +13807,7 @@ var CreditFacadeContract = class extends BaseContract {
13664
13807
  return [
13665
13808
  this.addressLabels.get(creditAccount),
13666
13809
  this.addressLabels.get(bot),
13667
- sdkGov.fmtBinaryMask(permissions)
13810
+ fmtBinaryMask(permissions)
13668
13811
  ];
13669
13812
  }
13670
13813
  default:
@@ -13729,7 +13872,7 @@ var CreditFactory = class {
13729
13872
  // TODO:
13730
13873
  // adapterFactory: AdapterFactory;
13731
13874
  constructor(sdk, marketData, index) {
13732
- const { creditManagers, pool, emergencyLiquidators: emergencyLiquidators2 } = marketData;
13875
+ const { creditManagers, pool, emergencyLiquidators } = marketData;
13733
13876
  const creditManager = creditManagers[index];
13734
13877
  const { name, collateralTokens, liquidationThresholds } = creditManager.creditManager;
13735
13878
  this.name = name;
@@ -13743,7 +13886,7 @@ var CreditFactory = class {
13743
13886
  this.creditConfigurator = new CreditConfiguratorContract(
13744
13887
  sdk,
13745
13888
  creditManager,
13746
- emergencyLiquidators2
13889
+ emergencyLiquidators
13747
13890
  );
13748
13891
  }
13749
13892
  async tvl() {
@@ -13871,7 +14014,7 @@ var PoolContract = class extends BaseContract {
13871
14014
  ...this.contractData,
13872
14015
  lastBaseInterestUpdate: data.lastBaseInterestUpdate,
13873
14016
  underlying: data.underlying,
13874
- decimals: sdkGov.decimals[sdkGov.getTokenSymbol(data.underlying)],
14017
+ decimals: sdk.marketRegister.tokensMeta.mustGet(data.underlying).decimals,
13875
14018
  creditManagerDebtParams,
13876
14019
  withdrawFee: Number(data.withdrawFee)
13877
14020
  };
@@ -13898,7 +14041,7 @@ var PoolContract = class extends BaseContract {
13898
14041
  case "deposit": {
13899
14042
  const [amount, onBehalfOf] = params.args;
13900
14043
  return [
13901
- sdkGov.formatBN(amount, this.state.decimals),
14044
+ formatBN(amount, this.state.decimals),
13902
14045
  this.addressLabels.get(onBehalfOf)
13903
14046
  ];
13904
14047
  }
@@ -13907,6 +14050,8 @@ var PoolContract = class extends BaseContract {
13907
14050
  }
13908
14051
  }
13909
14052
  };
14053
+
14054
+ // src/market/PoolQuotaKeeperContract.ts
13910
14055
  var PoolQuotaKeeperContract = class extends BaseContract {
13911
14056
  decimals;
13912
14057
  state;
@@ -13916,7 +14061,9 @@ var PoolQuotaKeeperContract = class extends BaseContract {
13916
14061
  name: `PoolQuotaKeeper(${pool.name})`,
13917
14062
  abi: poolQuotaKeeperV3Abi
13918
14063
  });
13919
- this.decimals = sdkGov.decimals[sdkGov.getTokenSymbol(pool.underlying)];
14064
+ this.decimals = sdk.marketRegister.tokensMeta.mustGet(
14065
+ pool.underlying
14066
+ ).decimals;
13920
14067
  this.state = {
13921
14068
  ...this.contractData,
13922
14069
  quotas: Object.fromEntries(
@@ -14292,7 +14439,7 @@ var Erc4626PriceFeedContract = class extends AbstractLPPriceFeedContract {
14292
14439
  };
14293
14440
  }
14294
14441
  async getValue() {
14295
- const decimals4 = await this.sdk.provider.publicClient.readContract({
14442
+ const decimals2 = await this.sdk.provider.publicClient.readContract({
14296
14443
  abi: erc20Abi,
14297
14444
  address: this.lpContract,
14298
14445
  functionName: "decimals"
@@ -14301,7 +14448,7 @@ var Erc4626PriceFeedContract = class extends AbstractLPPriceFeedContract {
14301
14448
  abi: viem.erc4626Abi,
14302
14449
  address: this.lpContract,
14303
14450
  functionName: "convertToAssets",
14304
- args: [10n ** BigInt(decimals4)]
14451
+ args: [10n ** BigInt(decimals2)]
14305
14452
  });
14306
14453
  return price;
14307
14454
  }
@@ -14855,7 +15002,8 @@ var PriceOracleContract = class extends BaseContract {
14855
15002
  // }
14856
15003
  #labelPriceFeed(address, usage, token) {
14857
15004
  this.sdk.provider.addressLabels.set(address, (label) => {
14858
- let pricefeedTag = `${sdkGov.getTokenSymbolOrTicker(token)}.${usage}`;
15005
+ const { symbol } = this.sdk.marketRegister.tokensMeta.mustGet(token);
15006
+ let pricefeedTag = `${symbol}.${usage}`;
14859
15007
  if (label) {
14860
15008
  pricefeedTag = `${label}, ${pricefeedTag}`;
14861
15009
  }
@@ -14908,14 +15056,15 @@ var MarketFactory = class {
14908
15056
  creditManagers = [];
14909
15057
  constructor(sdk, marketData) {
14910
15058
  this.riskCurator = marketData.owner;
15059
+ for (const t of marketData.tokens) {
15060
+ sdk.marketRegister.tokensMeta.upsert(t.addr, t);
15061
+ sdk.provider.addressLabels.set(t.addr, t.symbol);
15062
+ }
14911
15063
  this.poolFactory = new PoolFactory(sdk, marketData);
14912
15064
  for (let i = 0; i < marketData.creditManagers.length; i++) {
14913
15065
  this.creditManagers.push(new CreditFactory(sdk, marketData, i));
14914
15066
  }
14915
15067
  this.priceOracle = new PriceOracleContract(sdk, marketData.priceOracleData);
14916
- for (const t of marketData.tokens) {
14917
- sdk.provider.addressLabels.set(t.addr, t.symbol);
14918
- }
14919
15068
  }
14920
15069
  get state() {
14921
15070
  return {
@@ -15076,7 +15225,7 @@ var PathOptionFactory = class _PathOptionFactory {
15076
15225
  }
15077
15226
  static getBalancerPools(balances) {
15078
15227
  const nonZeroBalances = Object.entries(balances).filter(
15079
- ([, balance]) => sdkGov.toBigInt(balance.balance) > 1
15228
+ ([, balance]) => balance.balance > 1
15080
15229
  );
15081
15230
  const balancerPools = nonZeroBalances.map(([token]) => sdkGov.getTokenSymbol(token)).filter((symbol) => sdkGov.isBalancerLPToken(symbol));
15082
15231
  const balancerAuraTokens = Object.entries(aura.auraTokens).filter(([, data]) => sdkGov.isBalancerLPToken(data.underlying)).map(([token]) => token);
@@ -15299,8 +15448,8 @@ var RouterV3Contract = class extends BaseContract {
15299
15448
  const token = t;
15300
15449
  const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
15301
15450
  expectedBalances[token] = { token, balance };
15302
- const decimals4 = this.sdk.marketRegister.tokensMeta.mustGet(token).decimals;
15303
- const minBalance = 10n ** BigInt(Math.max(8, decimals4) - 8);
15451
+ const decimals2 = this.sdk.marketRegister.tokensMeta.mustGet(token).decimals;
15452
+ const minBalance = 10n ** BigInt(Math.max(8, decimals2) - 8);
15304
15453
  if (balance < minBalance || !isEnabled) {
15305
15454
  leftoverBalances[token] = { token, balance };
15306
15455
  }
@@ -15427,7 +15576,9 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
15427
15576
  gearStakingAddress
15428
15577
  );
15429
15578
  this.#marketRegister = new MarketRegister(this);
15430
- await this.#marketRegister.loadMarkets([sdkGov.TIMELOCK.Mainnet]);
15579
+ await this.#marketRegister.loadMarkets([
15580
+ TIMELOCK[this.provider.networkType]
15581
+ ]);
15431
15582
  try {
15432
15583
  const router = this.#addressProvider.getLatestVersion(AP_ROUTER);
15433
15584
  this.#router = new RouterV3Contract(this, router);
@@ -15488,7 +15639,7 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
15488
15639
  async tvl() {
15489
15640
  const { tvl, tvlUSD } = await this.marketRegister.tvl();
15490
15641
  this.logger?.info(tvl);
15491
- this.logger?.info(`Total TVL: ${sdkGov.formatBN(tvlUSD, 8)}`);
15642
+ this.logger?.info(`Total TVL: ${formatBN(tvlUSD, 8)}`);
15492
15643
  }
15493
15644
  async syncState(toBlock, timestamp) {
15494
15645
  if (toBlock <= this.currentBlock) {
@@ -15555,7 +15706,7 @@ var GearboxSDK = class _GearboxSDK extends eventemitter3.EventEmitter {
15555
15706
  return this.#router;
15556
15707
  }
15557
15708
  };
15558
- function convertCreditFacadeStateToHuman(state, decimals4, labelAddress, _raw = true) {
15709
+ function convertCreditFacadeStateToHuman(state, decimals2, labelAddress, _raw = true) {
15559
15710
  return {
15560
15711
  ...convertBaseContractState(state, labelAddress),
15561
15712
  maxQuotaMultiplier: state.maxQuotaMultiplier,
@@ -15565,11 +15716,11 @@ function convertCreditFacadeStateToHuman(state, decimals4, labelAddress, _raw =
15565
15716
  expirationDate: state.expirationDate,
15566
15717
  maxDebtPerBlockMultiplier: state.maxDebtPerBlockMultiplier,
15567
15718
  botList: labelAddress(state.botList),
15568
- minDebt: sdkGov.formatBNvalue(state.minDebt, decimals4),
15569
- maxDebt: sdkGov.formatBNvalue(state.maxDebt, decimals4),
15570
- currentCumulativeLoss: sdkGov.formatBNvalue(state.currentCumulativeLoss, decimals4),
15571
- maxCumulativeLoss: sdkGov.formatBNvalue(state.maxCumulativeLoss, decimals4),
15572
- forbiddenTokenMask: sdkGov.fmtBinaryMask(state.forbiddenTokenMask),
15719
+ minDebt: formatBNvalue(state.minDebt, decimals2),
15720
+ maxDebt: formatBNvalue(state.maxDebt, decimals2),
15721
+ currentCumulativeLoss: formatBNvalue(state.currentCumulativeLoss, decimals2),
15722
+ maxCumulativeLoss: formatBNvalue(state.maxCumulativeLoss, decimals2),
15723
+ forbiddenTokenMask: fmtBinaryMask(state.forbiddenTokenMask),
15573
15724
  isPaused: state.isPaused
15574
15725
  };
15575
15726
  }
@@ -15587,18 +15738,18 @@ function convertCreditManagerStateToHuman(state, labelAddress, raw = true) {
15587
15738
  collateralTokens: Object.fromEntries(
15588
15739
  Object.entries(state.collateralTokens).map(([k, v]) => [
15589
15740
  labelAddress(k),
15590
- sdkGov.percentFmt(v, raw)
15741
+ percentFmt(v, raw)
15591
15742
  ])
15592
15743
  ),
15593
- feeInterest: sdkGov.percentFmt(state.feeInterest, raw),
15594
- feeLiquidation: sdkGov.percentFmt(state.feeLiquidation, raw),
15595
- liquidationDiscount: sdkGov.percentFmt(state.liquidationDiscount, raw),
15596
- feeLiquidationExpired: sdkGov.percentFmt(state.feeLiquidationExpired, raw),
15597
- liquidationDiscountExpired: sdkGov.percentFmt(
15744
+ feeInterest: percentFmt(state.feeInterest, raw),
15745
+ feeLiquidation: percentFmt(state.feeLiquidation, raw),
15746
+ liquidationDiscount: percentFmt(state.liquidationDiscount, raw),
15747
+ feeLiquidationExpired: percentFmt(state.feeLiquidationExpired, raw),
15748
+ liquidationDiscountExpired: percentFmt(
15598
15749
  state.liquidationDiscountExpired,
15599
15750
  raw
15600
15751
  ),
15601
- quotedTokensMask: sdkGov.fmtBinaryMask(state.quotedTokensMask),
15752
+ quotedTokensMask: fmtBinaryMask(state.quotedTokensMask),
15602
15753
  contractsToAdapters: Object.fromEntries(
15603
15754
  Object.entries(state.contractsToAdapters).map(([k, v]) => [
15604
15755
  labelAddress(k),
@@ -15632,6 +15783,8 @@ function convertCreditFactoryStateToHuman(state, labelAddress, _raw = true) {
15632
15783
  )
15633
15784
  };
15634
15785
  }
15786
+
15787
+ // src/state/poolStateHuman.ts
15635
15788
  function convertPoolStateToHuman(state, labelAddress, raw = true) {
15636
15789
  return {
15637
15790
  ...convertBaseContractState(state, labelAddress),
@@ -15639,27 +15792,27 @@ function convertPoolStateToHuman(state, labelAddress, raw = true) {
15639
15792
  symbol: state.symbol,
15640
15793
  name: state.name,
15641
15794
  decimals: state.decimals,
15642
- availableLiquidity: sdkGov.formatBNvalue(
15795
+ availableLiquidity: formatBNvalue(
15643
15796
  state.availableLiquidity,
15644
15797
  state.decimals,
15645
15798
  2,
15646
15799
  raw
15647
15800
  ),
15648
- expectedLiquidity: sdkGov.formatBNvalue(
15801
+ expectedLiquidity: formatBNvalue(
15649
15802
  state.expectedLiquidity,
15650
15803
  state.decimals,
15651
15804
  2,
15652
15805
  raw
15653
15806
  ),
15654
- totalBorrowed: sdkGov.formatBNvalue(state.totalBorrowed, state.decimals, 2, raw),
15655
- totalDebtLimit: sdkGov.formatBNvalue(state.totalDebtLimit, state.decimals, 2, raw),
15807
+ totalBorrowed: formatBNvalue(state.totalBorrowed, state.decimals, 2, raw),
15808
+ totalDebtLimit: formatBNvalue(state.totalDebtLimit, state.decimals, 2, raw),
15656
15809
  creditManagerDebtParams: Object.fromEntries(
15657
15810
  Object.entries(state.creditManagerDebtParams).map(([cm, params]) => [
15658
15811
  labelAddress(cm),
15659
15812
  {
15660
- borrowed: sdkGov.formatBNvalue(params.borrowed, state.decimals, 2, raw),
15661
- limit: sdkGov.formatBNvalue(params.limit, state.decimals, 2, raw),
15662
- availableToBorrow: sdkGov.formatBNvalue(
15813
+ borrowed: formatBNvalue(params.borrowed, state.decimals, 2, raw),
15814
+ limit: formatBNvalue(params.limit, state.decimals, 2, raw),
15815
+ availableToBorrow: formatBNvalue(
15663
15816
  params.availableToBorrow,
15664
15817
  state.decimals,
15665
15818
  2,
@@ -15668,28 +15821,28 @@ function convertPoolStateToHuman(state, labelAddress, raw = true) {
15668
15821
  }
15669
15822
  ])
15670
15823
  ),
15671
- totalAssets: sdkGov.formatBNvalue(state.totalAssets, state.decimals, 2, raw),
15672
- totalSupply: sdkGov.formatBNvalue(state.totalSupply, state.decimals, 2, raw),
15673
- supplyRate: `${sdkGov.formatBNvalue(state.supplyRate, 25, 2, raw)}%`,
15674
- baseInterestIndex: `${sdkGov.formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
15675
- baseInterestRate: `${sdkGov.formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
15676
- withdrawFee: sdkGov.percentFmt(state.withdrawFee),
15824
+ totalAssets: formatBNvalue(state.totalAssets, state.decimals, 2, raw),
15825
+ totalSupply: formatBNvalue(state.totalSupply, state.decimals, 2, raw),
15826
+ supplyRate: `${formatBNvalue(state.supplyRate, 25, 2, raw)}%`,
15827
+ baseInterestIndex: `${formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
15828
+ baseInterestRate: `${formatBNvalue(state.totalSupply, 25, 2, raw)}%`,
15829
+ withdrawFee: percentFmt(state.withdrawFee),
15677
15830
  lastBaseInterestUpdate: state.lastBaseInterestUpdate.toString(),
15678
15831
  baseInterestIndexLU: state.lastBaseInterestUpdate.toString(),
15679
15832
  isPaused: state.isPaused
15680
15833
  };
15681
15834
  }
15682
- function convertPoolQuotaKeeperStateToHuman(state, decimals4, labelAddress, raw = true) {
15835
+ function convertPoolQuotaKeeperStateToHuman(state, decimals2, labelAddress, raw = true) {
15683
15836
  return {
15684
15837
  ...convertBaseContractState(state, labelAddress),
15685
15838
  quotas: Object.entries(state.quotas).reduce(
15686
15839
  (acc, [address, params]) => ({
15687
15840
  ...acc,
15688
15841
  [address]: {
15689
- rate: sdkGov.percentFmt(params.rate, raw),
15690
- quotaIncreaseFee: sdkGov.percentFmt(params.quotaIncreaseFee, raw),
15691
- totalQuoted: sdkGov.formatBNvalue(params.totalQuoted, decimals4, 2, raw),
15692
- limit: sdkGov.formatBNvalue(params.limit, decimals4, 2, raw),
15842
+ rate: percentFmt(params.rate, raw),
15843
+ quotaIncreaseFee: percentFmt(params.quotaIncreaseFee, raw),
15844
+ totalQuoted: formatBNvalue(params.totalQuoted, decimals2, 2, raw),
15845
+ limit: formatBNvalue(params.limit, decimals2, 2, raw),
15693
15846
  isActive: params.isActive
15694
15847
  }
15695
15848
  }),
@@ -15700,12 +15853,12 @@ function convertPoolQuotaKeeperStateToHuman(state, decimals4, labelAddress, raw
15700
15853
  function convertLinearModelStateToHuman(state, labelAddress, raw = true) {
15701
15854
  return {
15702
15855
  ...convertBaseContractState(state, labelAddress),
15703
- U1: sdkGov.percentFmt(state.U1, raw),
15704
- U2: sdkGov.percentFmt(state.U2, raw),
15705
- Rbase: sdkGov.percentFmt(state.Rbase, raw),
15706
- Rslope1: sdkGov.percentFmt(state.Rslope1, raw),
15707
- Rslope2: sdkGov.percentFmt(state.Rslope2, raw),
15708
- Rslope3: sdkGov.percentFmt(state.Rslope3, raw),
15856
+ U1: percentFmt(state.U1, raw),
15857
+ U2: percentFmt(state.U2, raw),
15858
+ Rbase: percentFmt(state.Rbase, raw),
15859
+ Rslope1: percentFmt(state.Rslope1, raw),
15860
+ Rslope2: percentFmt(state.Rslope2, raw),
15861
+ Rslope3: percentFmt(state.Rslope3, raw),
15709
15862
  isBorrowingMoreU2Forbidden: state.isBorrowingMoreU2Forbidden
15710
15863
  };
15711
15864
  }
@@ -15718,11 +15871,11 @@ function convertGaugeStateToHuman(state, labelAddress, raw = true) {
15718
15871
  (acc, [address, params]) => ({
15719
15872
  ...acc,
15720
15873
  [address]: {
15721
- minRate: sdkGov.percentFmt(params.minRate, raw),
15722
- maxRate: sdkGov.percentFmt(params.maxRate, raw),
15874
+ minRate: percentFmt(params.minRate, raw),
15875
+ maxRate: percentFmt(params.maxRate, raw),
15723
15876
  totalVotesLpSide: params.totalVotesLpSide / 1e18,
15724
15877
  totalVotesCaSide: params.totalVotesCaSide / 1e18,
15725
- rate: sdkGov.percentFmt(params.rate, raw)
15878
+ rate: percentFmt(params.rate, raw)
15726
15879
  }
15727
15880
  }),
15728
15881
  {}
@@ -15742,6 +15895,8 @@ function convertPoolFactoryStateToHuman(state, labelAddress, raw = true) {
15742
15895
  gauge: convertGaugeStateToHuman(state.gauge, labelAddress, raw)
15743
15896
  };
15744
15897
  }
15898
+
15899
+ // src/state/priceFactoryStateHuman.ts
15745
15900
  function convertPriceOracleStateToHuman(state, labelAddress, _raw = true) {
15746
15901
  return {
15747
15902
  priceOracleV3: {
@@ -15771,7 +15926,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
15771
15926
  pricefeeds: state.pricefeeds.map(
15772
15927
  (pf) => convertPriceFeedStateToHuman(pf, labelAddress)
15773
15928
  ),
15774
- stalenessPeriod: sdkGov.formatDuration(state.stalenessPeriod, raw)
15929
+ stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
15775
15930
  };
15776
15931
  }
15777
15932
  case "PF_REDSTONE_ORACLE": {
@@ -15779,7 +15934,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
15779
15934
  ...state,
15780
15935
  ...convertBaseContractState(state, labelAddress),
15781
15936
  contractType: "PF_REDSTONE_ORACLE",
15782
- stalenessPeriod: sdkGov.formatDuration(state.stalenessPeriod, raw)
15937
+ stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
15783
15938
  };
15784
15939
  }
15785
15940
  default: {
@@ -15789,7 +15944,7 @@ function convertPriceFeedStateToHuman(state, labelAddress, raw = true) {
15789
15944
  pricefeeds: state.pricefeeds.map(
15790
15945
  (pf) => convertPriceFeedStateToHuman(pf, labelAddress)
15791
15946
  ),
15792
- stalenessPeriod: sdkGov.formatDuration(state.stalenessPeriod, raw)
15947
+ stalenessPeriod: formatDuration(state.stalenessPeriod, raw)
15793
15948
  };
15794
15949
  }
15795
15950
  }
@@ -15956,6 +16111,7 @@ exports.BalancerStablePriceFeedContract = BalancerStablePriceFeedContract;
15956
16111
  exports.BalancerWeightedPriceFeedContract = BalancerWeightedPriceFeedContract;
15957
16112
  exports.BaseContract = BaseContract;
15958
16113
  exports.BotListContract = BotListContract;
16114
+ exports.BotPermissions = BotPermissions;
15959
16115
  exports.BoundedPriceFeedContract = BoundedPriceFeedContract;
15960
16116
  exports.ChainlinkPriceFeedContract = ChainlinkPriceFeedContract;
15961
16117
  exports.CompositePriceFeedContract = CompositePriceFeedContract;
@@ -15989,10 +16145,13 @@ exports.Provider = Provider;
15989
16145
  exports.RedstonePriceFeedContract = RedstonePriceFeedContract;
15990
16146
  exports.SDKConstruct = SDKConstruct;
15991
16147
  exports.SUPPORTED_CHAINS = SUPPORTED_CHAINS;
16148
+ exports.TIMELOCK = TIMELOCK;
16149
+ exports.USDC = USDC;
15992
16150
  exports.VotingContractStatus = VotingContractStatus;
15993
16151
  exports.WstETHPriceFeedContract = WstETHPriceFeedContract;
15994
16152
  exports.YearnPriceFeedContract = YearnPriceFeedContract;
15995
16153
  exports.ZeroPriceFeedContract = ZeroPriceFeedContract;
16154
+ exports.botPermissionsToString = botPermissionsToString;
15996
16155
  exports.bytes32ToString = bytes32ToString;
15997
16156
  exports.chains = chains;
15998
16157
  exports.childLogger = childLogger;
@@ -16013,6 +16172,16 @@ exports.convertRouterStateToHuman = convertRouterStateToHuman;
16013
16172
  exports.convertRouterV3StateToHuman = convertRouterV3StateToHuman;
16014
16173
  exports.convertZapperRegisterStateToHuman = convertZapperRegisterStateToHuman;
16015
16174
  exports.createRawTx = createRawTx;
16016
- exports.initLegacyLabels = initLegacyLabels;
16175
+ exports.etherscanUrl = etherscanUrl;
16176
+ exports.filterDust = filterDust;
16177
+ exports.fmtBinaryMask = fmtBinaryMask;
16178
+ exports.formatBN = formatBN;
16179
+ exports.formatBNvalue = formatBNvalue;
16180
+ exports.formatBn4dig = formatBn4dig;
16181
+ exports.formatDuration = formatDuration;
16182
+ exports.formatNumberToString_ = formatNumberToString_;
16017
16183
  exports.json_parse = json_parse;
16018
16184
  exports.json_stringify = json_stringify;
16185
+ exports.numberWithCommas = numberWithCommas;
16186
+ exports.percentFmt = percentFmt;
16187
+ exports.toHumanFormat = toHumanFormat;