@gearbox-protocol/deploy-tools 4.14.2 → 4.15.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.
Files changed (2) hide show
  1. package/dist/index.mjs +74 -51
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -292752,6 +292752,19 @@ function parseLog(contract, log2) {
292752
292752
  return out;
292753
292753
  }
292754
292754
 
292755
+ // ../../packages/shared/dist/etherscan.js
292756
+ function etherscanApiUrl(chainId) {
292757
+ switch (chainId) {
292758
+ case 1:
292759
+ return `https://api.etherscan.io`;
292760
+ case 10:
292761
+ return `https://api-optimistic.etherscan.io`;
292762
+ case 42161:
292763
+ return `https://api.arbiscan.io`;
292764
+ }
292765
+ throw new Error(`etherscan api for ${chainId} not configured`);
292766
+ }
292767
+
292755
292768
  // ../../packages/shared/dist/hex.js
292756
292769
  function hexEq(a, b3) {
292757
292770
  const [aa, bb] = [a, b3].map((s) => s.replace(/^0x/, "").toLowerCase());
@@ -343959,10 +343972,7 @@ var container = new Container();
343959
343972
  import { mkdirSync as mkdirSync2 } from "node:fs";
343960
343973
  import { readFile as readFile3, writeFile as writeFile2 } from "node:fs/promises";
343961
343974
  import path3 from "node:path";
343962
- var API_SUBDOMAINS = {
343963
- Mainnet: "api",
343964
- Optimism: "api-optimistic"
343965
- };
343975
+ var import_sdk_gov2 = __toESM(require_lib222(), 1);
343966
343976
  var API_KEYS = {
343967
343977
  Mainnet: (o) => o.etherscanApiKey,
343968
343978
  Optimism: (o) => o.etherscanOptimism,
@@ -343977,11 +343987,7 @@ var EtherscanVerifier = class {
343977
343987
  #etherscanApiKey;
343978
343988
  constructor(network, opts) {
343979
343989
  this.#cachePolicy = opts.cachePolicy;
343980
- const subdomain = API_SUBDOMAINS[network];
343981
- if (!subdomain) {
343982
- throw new Error(`etherscan api subdomain not specified for ${network}`);
343983
- }
343984
- this.#etherscanBase = `https://${subdomain}.etherscan.io`;
343990
+ this.#etherscanBase = etherscanApiUrl(import_sdk_gov2.CHAINS[network]);
343985
343991
  const apikey = API_KEYS[network]?.(opts);
343986
343992
  if (!apikey) {
343987
343993
  throw new Error(`etherscan api key not specified for ${network}`);
@@ -344079,7 +344085,7 @@ var EtherscanVerifier = class {
344079
344085
  // ../../packages/node/dist/ProviderBase.js
344080
344086
  import { readFile as readFile4 } from "node:fs/promises";
344081
344087
  import { setTimeout as setTimeout2 } from "node:timers/promises";
344082
- var import_sdk_gov2 = __toESM(require_lib222(), 1);
344088
+ var import_sdk_gov3 = __toESM(require_lib222(), 1);
344083
344089
  var import_api_kit = __toESM(require_src8(), 1);
344084
344090
 
344085
344091
  // ../../packages/node/dist/providers/RetryProvider.js
@@ -344172,16 +344178,16 @@ var RetryProvider = class extends JsonRpcProvider {
344172
344178
 
344173
344179
  // ../../packages/node/dist/ProviderBase.js
344174
344180
  var utilityContracts = {
344175
- ADDRESS_PROVIDER: import_sdk_gov2.ADDRESS_PROVIDER,
344176
- TIMELOCK: import_sdk_gov2.TIMELOCK,
344177
- GOVERNOR: import_sdk_gov2.GOVERNOR,
344178
- BLACKLIST_HELPER: import_sdk_gov2.BLACKLIST_HELPER,
344179
- CREATE2FACTORY: import_sdk_gov2.CREATE2FACTORY,
344180
- ROUTER_MULTISIG_ADDRESS: import_sdk_gov2.ROUTER_MULTISIG_ADDRESS,
344181
- ROUTER_CREATE2FACTORY: import_sdk_gov2.ROUTER_CREATE2FACTORY,
344182
- MULTISIG: import_sdk_gov2.MULTISIG,
344183
- VETO_ADMIN: import_sdk_gov2.VETO_ADMIN,
344184
- TREASURY: import_sdk_gov2.TREASURY
344181
+ ADDRESS_PROVIDER: import_sdk_gov3.ADDRESS_PROVIDER,
344182
+ TIMELOCK: import_sdk_gov3.TIMELOCK,
344183
+ GOVERNOR: import_sdk_gov3.GOVERNOR,
344184
+ BLACKLIST_HELPER: import_sdk_gov3.BLACKLIST_HELPER,
344185
+ CREATE2FACTORY: import_sdk_gov3.CREATE2FACTORY,
344186
+ ROUTER_MULTISIG_ADDRESS: import_sdk_gov3.ROUTER_MULTISIG_ADDRESS,
344187
+ ROUTER_CREATE2FACTORY: import_sdk_gov3.ROUTER_CREATE2FACTORY,
344188
+ MULTISIG: import_sdk_gov3.MULTISIG,
344189
+ VETO_ADMIN: import_sdk_gov3.VETO_ADMIN,
344190
+ TREASURY: import_sdk_gov3.TREASURY
344185
344191
  };
344186
344192
  var NetworkMismatchError = class extends Error {
344187
344193
  constructor(expected, received) {
@@ -344205,8 +344211,8 @@ var ProviderBase = class {
344205
344211
  this.#options = opts;
344206
344212
  }
344207
344213
  async init() {
344208
- this.#network = await (0, import_sdk_gov2.detectNetwork)(this.#provider);
344209
- this.#chainId = import_sdk_gov2.CHAINS[this.#network];
344214
+ this.#network = await (0, import_sdk_gov3.detectNetwork)(this.#provider);
344215
+ this.#chainId = import_sdk_gov3.CHAINS[this.#network];
344210
344216
  this.#service = new import_api_kit.default.default({
344211
344217
  chainId: BigInt(this.#chainId)
344212
344218
  });
@@ -344327,7 +344333,7 @@ var ProviderBase = class {
344327
344333
  import { mkdirSync as mkdirSync3 } from "node:fs";
344328
344334
  import { readFile as readFile5, writeFile as writeFile3 } from "node:fs/promises";
344329
344335
  import path4 from "node:path";
344330
- var import_sdk_gov8 = __toESM(require_lib222(), 1);
344336
+ var import_sdk_gov9 = __toESM(require_lib222(), 1);
344331
344337
 
344332
344338
  // ../../node_modules/queue/index.js
344333
344339
  var has = Object.prototype.hasOwnProperty;
@@ -344673,7 +344679,7 @@ var SourcifyLoggerAdaper = class _SourcifyLoggerAdaper {
344673
344679
  };
344674
344680
 
344675
344681
  // ../../packages/node/dist/tree/visitors/AbstractVisitor.js
344676
- var import_sdk_gov3 = __toESM(require_lib222(), 1);
344682
+ var import_sdk_gov4 = __toESM(require_lib222(), 1);
344677
344683
  var AbstractVisitor = class {
344678
344684
  logger;
344679
344685
  contractType;
@@ -344684,7 +344690,7 @@ var AbstractVisitor = class {
344684
344690
  }
344685
344691
  async visit(entry, provider, block) {
344686
344692
  this.logger.trace(`visiting ${entry.address} at [${entry.lastVisitBlock}:${block}]`);
344687
- if (!this.allowZeroAddress && entry.address === import_sdk_gov3.ADDRESS_0X0) {
344693
+ if (!this.allowZeroAddress && entry.address === import_sdk_gov4.ADDRESS_0X0) {
344688
344694
  throw new Error(`detected ${entry.contract} with zero address`);
344689
344695
  }
344690
344696
  if (entry.contract !== this.contractType) {
@@ -344931,6 +344937,9 @@ var AddressProviderV3Visitor = class extends AbstractVisitor {
344931
344937
  case "MULTIPAUSE":
344932
344938
  contract = "MULTIPAUSE";
344933
344939
  break;
344940
+ case "INFLATION_ATTACK_BLOCKER":
344941
+ contract = "INFLATION_ATTACK_BLOCKER";
344942
+ break;
344934
344943
  default:
344935
344944
  throw new Error(`unknown address provider key '${contract}'`);
344936
344945
  }
@@ -345020,7 +345029,7 @@ var ContractsRegisterVisitor = class extends AbstractVisitor {
345020
345029
  };
345021
345030
 
345022
345031
  // ../../packages/node/dist/tree/visitors/adapters.js
345023
- var import_sdk_gov4 = __toESM(require_lib222(), 1);
345032
+ var import_sdk_gov5 = __toESM(require_lib222(), 1);
345024
345033
  async function loadAdapters(provider, entries) {
345025
345034
  const addresses = entries.filter((e) => e.contract === "ADAPTER_UNKNOWN").map((e) => e.address.toLowerCase());
345026
345035
  const iAdapter = IAdapter__factory.createInterface();
@@ -345044,7 +345053,7 @@ async function loadAdapters(provider, entries) {
345044
345053
  const { value } = resps[i];
345045
345054
  if (value != null) {
345046
345055
  if (method === "_gearboxAdapterType") {
345047
- adapterTypes.set(address, "ADAPTER_" + import_sdk_gov4.AdapterInterface[value]);
345056
+ adapterTypes.set(address, "ADAPTER_" + import_sdk_gov5.AdapterInterface[value]);
345048
345057
  } else {
345049
345058
  adapterVersions.set(address, value);
345050
345059
  }
@@ -345436,14 +345445,14 @@ var GaugeV3Visitor = class extends AbstractVisitor {
345436
345445
  };
345437
345446
 
345438
345447
  // ../../packages/node/dist/tree/visitors/NoopVisitor.js
345439
- var import_sdk_gov5 = __toESM(require_lib222(), 1);
345448
+ var import_sdk_gov6 = __toESM(require_lib222(), 1);
345440
345449
  var NoopVisitor = class {
345441
345450
  #allowZeroAddress;
345442
345451
  constructor(allowZeroAddress = false) {
345443
345452
  this.#allowZeroAddress = allowZeroAddress;
345444
345453
  }
345445
345454
  async visit(entry, provider, block) {
345446
- if (!this.#allowZeroAddress && entry.address === import_sdk_gov5.ADDRESS_0X0) {
345455
+ if (!this.#allowZeroAddress && entry.address === import_sdk_gov6.ADDRESS_0X0) {
345447
345456
  throw new Error(`detected ${entry.contract} with zero address`);
345448
345457
  }
345449
345458
  return [];
@@ -345549,7 +345558,7 @@ var PoolV3Visitor = class extends AbstractVisitor {
345549
345558
  };
345550
345559
 
345551
345560
  // ../../packages/node/dist/tree/visitors/priceFeeds.js
345552
- var import_sdk_gov6 = __toESM(require_lib222(), 1);
345561
+ var import_sdk_gov7 = __toESM(require_lib222(), 1);
345553
345562
  async function loadPriceFeedTypes(provider, entries) {
345554
345563
  const addresses = entries.map((e) => e.address.toLowerCase());
345555
345564
  const iPriceFeed = IPriceFeed__factory.createInterface();
@@ -345566,7 +345575,7 @@ async function loadPriceFeedTypes(provider, entries) {
345566
345575
  if (error || !value) {
345567
345576
  pfTypes.set(address, "PRICE_FEED_CHAINLINK_ORACLE");
345568
345577
  } else {
345569
- pfTypes.set(address, `PRICE_FEED_${import_sdk_gov6.PriceFeedType[value]}`);
345578
+ pfTypes.set(address, `PRICE_FEED_${import_sdk_gov7.PriceFeedType[value]}`);
345570
345579
  }
345571
345580
  }
345572
345581
  for (const entry of entries) {
@@ -345595,7 +345604,7 @@ var PriceOracleV2Visitor = class extends AbstractVisitor {
345595
345604
  };
345596
345605
 
345597
345606
  // ../../packages/node/dist/tree/visitors/PriceOracleV3Visitor.js
345598
- var import_sdk_gov7 = __toESM(require_lib222(), 1);
345607
+ var import_sdk_gov8 = __toESM(require_lib222(), 1);
345599
345608
  var PriceOracleV3Visitor = class extends AbstractVisitor {
345600
345609
  async _visit({ address, lastVisitBlock }, provider, block) {
345601
345610
  const contract = IPriceOracleV3__factory.connect(address, provider);
@@ -345637,7 +345646,7 @@ var PriceOracleV3Visitor = class extends AbstractVisitor {
345637
345646
  if (error || !value) {
345638
345647
  pfTypes.set(address, "PRICE_FEED_UNKNOWN");
345639
345648
  } else {
345640
- pfTypes.set(address, `PRICE_FEED_${import_sdk_gov7.PriceFeedType[value]}`);
345649
+ pfTypes.set(address, `PRICE_FEED_${import_sdk_gov8.PriceFeedType[value]}`);
345641
345650
  }
345642
345651
  }
345643
345652
  for (const entry of entries) {
@@ -345857,7 +345866,7 @@ var GearboxAddressTree = class _GearboxAddressTree extends ProviderBase {
345857
345866
  return;
345858
345867
  }
345859
345868
  const newEntries = await visitorFor(entry).visit(entry, this.provider, block);
345860
- if (entry.address === import_sdk_gov8.ADDRESS_0X0) {
345869
+ if (entry.address === import_sdk_gov9.ADDRESS_0X0) {
345861
345870
  return;
345862
345871
  }
345863
345872
  const etherscanEntry = await this.etherscan.verify(entry.address);
@@ -345994,7 +346003,7 @@ function augmentInterface(iFace, ...extraFunctions) {
345994
346003
  }
345995
346004
 
345996
346005
  // ../../packages/node/dist/parsers/helpers/parameterParsers.js
345997
- var import_sdk_gov9 = __toESM(require_lib222(), 1);
346006
+ var import_sdk_gov10 = __toESM(require_lib222(), 1);
345998
346007
  var import_date_fns = __toESM(require_date_fns(), 1);
345999
346008
  var defaultParser = (parameter, parameters, address) => {
346000
346009
  switch (parameter.type) {
@@ -346127,7 +346136,7 @@ var parseAddress = (humanName) => (parameter) => {
346127
346136
  raw: parameter,
346128
346137
  name: humanName ?? parameter.name,
346129
346138
  type: "address",
346130
- value: parameter.value === import_sdk_gov9.ADDRESS_0X0 ? "0x0" : parameter.value
346139
+ value: parameter.value === import_sdk_gov10.ADDRESS_0X0 ? "0x0" : parameter.value
346131
346140
  };
346132
346141
  };
346133
346142
  function numberToDuration(n3) {
@@ -346168,7 +346177,7 @@ var parseAddressArray = (humanName) => (parameter) => {
346168
346177
  };
346169
346178
  };
346170
346179
  function getParsedToken(address) {
346171
- let symbol = import_sdk_gov9.tokenSymbolByAddress[address.toLowerCase()];
346180
+ let symbol = import_sdk_gov10.tokenSymbolByAddress[address.toLowerCase()];
346172
346181
  let isCreate2;
346173
346182
  if (!symbol) {
346174
346183
  const pool = container.addressTree.getContract(address);
@@ -346195,11 +346204,11 @@ var parseToken = (humanName) => (parameter) => {
346195
346204
  };
346196
346205
  };
346197
346206
  var parseTokenAmount = (token, humanName) => (parameter) => {
346198
- const symbol = import_sdk_gov9.tokenSymbolByAddress[token.toLowerCase()];
346207
+ const symbol = import_sdk_gov10.tokenSymbolByAddress[token.toLowerCase()];
346199
346208
  if (!symbol) {
346200
346209
  throw new Error(`unknown token ${token}`);
346201
346210
  }
346202
- const decimals = (0, import_sdk_gov9.getDecimals)(token);
346211
+ const decimals = (0, import_sdk_gov10.getDecimals)(token);
346203
346212
  return {
346204
346213
  raw: parameter,
346205
346214
  name: humanName ?? parameter.name,
@@ -347015,7 +347024,7 @@ var CreditConfiguratorV2Parser = class extends AbstractParser {
347015
347024
  };
347016
347025
 
347017
347026
  // ../../packages/node/dist/parsers/CreditConfiguratorV3Parser.js
347018
- var import_sdk_gov10 = __toESM(require_lib222(), 1);
347027
+ var import_sdk_gov11 = __toESM(require_lib222(), 1);
347019
347028
  var constructorV300 = {
347020
347029
  inputs: [
347021
347030
  {
@@ -347172,7 +347181,7 @@ var CreditConfiguratorV3Parser = class extends AbstractParser {
347172
347181
  const { maxDebt, minDebt, collateralTokens, degenNFT, expirable, name } = parameter.value;
347173
347182
  const cmAddr = parameters[0].value;
347174
347183
  const underlying = this.getUnderlying(cmAddr, "CREDIT_MANAGER_V3").toLowerCase();
347175
- const symbol = import_sdk_gov10.tokenSymbolByAddress[underlying];
347184
+ const symbol = import_sdk_gov11.tokenSymbolByAddress[underlying];
347176
347185
  return {
347177
347186
  raw: parameter,
347178
347187
  name: "options",
@@ -347188,12 +347197,12 @@ var CreditConfiguratorV3Parser = class extends AbstractParser {
347188
347197
  })) ?? [],
347189
347198
  minDebt: {
347190
347199
  amount: minDebt,
347191
- decimals: (0, import_sdk_gov10.getDecimals)(underlying),
347200
+ decimals: (0, import_sdk_gov11.getDecimals)(underlying),
347192
347201
  symbol
347193
347202
  },
347194
347203
  maxDebt: {
347195
347204
  amount: maxDebt,
347196
- decimals: (0, import_sdk_gov10.getDecimals)(underlying),
347205
+ decimals: (0, import_sdk_gov11.getDecimals)(underlying),
347197
347206
  symbol
347198
347207
  }
347199
347208
  }
@@ -347980,6 +347989,17 @@ var GovernorV3Parser = class extends AbstractParser {
347980
347989
  }
347981
347990
  };
347982
347991
 
347992
+ // ../../packages/node/dist/parsers/InflationAttackBlockerParser.js
347993
+ var InflationAttackBlockerParser = class extends AbstractParser {
347994
+ constructor(contractType) {
347995
+ super(contractType, "constructor()");
347996
+ this._iFace = new Interface2([
347997
+ "function transferOwnership(address newOwner)",
347998
+ "function mintDeadShares(address pool)"
347999
+ ]);
348000
+ }
348001
+ };
348002
+
347983
348003
  // ../../packages/node/dist/parsers/InterestRateModelV1Parser.js
347984
348004
  var InterestRateModelV1Parser = class extends AbstractParser {
347985
348005
  constructor(contractType) {
@@ -348256,6 +348276,7 @@ var CONTRACT_NAME_TO_TYPE = new Map([
348256
348276
  ["FarmingPool", "ONE_INCH_FARMING_POOL"],
348257
348277
  ["GaugeV3", "GAUGE_V3"],
348258
348278
  ["GearStakingV3", "GEAR_STAKING"],
348279
+ ["InflationAttackBlocker", "INFLATION_ATTACK_BLOCKER"],
348259
348280
  ["LinearInterestRateModelV3", "INTEREST_RATE_MODEL_V3"],
348260
348281
  ["PoolQuotaKeeperV3", "POOL_QUOTA_KEEPER_V3"],
348261
348282
  ["PoolV3", "POOL_V3"],
@@ -348326,6 +348347,8 @@ function parserForContractType(contract, version5, contractName) {
348326
348347
  return new GearStakingV3Parser(contract);
348327
348348
  case "GOVERNOR_V3":
348328
348349
  return new GovernorV3Parser(contract);
348350
+ case "INFLATION_ATTACK_BLOCKER":
348351
+ return new InflationAttackBlockerParser(contract);
348329
348352
  case "INTEREST_RATE_MODEL_V1":
348330
348353
  return new InterestRateModelV1Parser(contract);
348331
348354
  case "INTEREST_RATE_MODEL_V3":
@@ -348503,7 +348526,7 @@ var UpdateParser = class extends ProviderBase {
348503
348526
  };
348504
348527
 
348505
348528
  // ../../packages/node/dist/ZeroLT.js
348506
- var import_sdk_gov11 = __toESM(require_lib222(), 1);
348529
+ var import_sdk_gov12 = __toESM(require_lib222(), 1);
348507
348530
  var ZeroLT = class extends ProviderBase {
348508
348531
  #acl;
348509
348532
  #dc210;
@@ -348541,9 +348564,9 @@ var ZeroLT = class extends ProviderBase {
348541
348564
  const cc = ICreditConfiguratorV2__factory.connect(cm.creditConfigurator, root2);
348542
348565
  const newFeeLiquidation = Number(cm.liquidationDiscount) - 1;
348543
348566
  logger2.trace("setFees part 1");
348544
- await cc.setFees(cm.feeInterest, newFeeLiquidation, import_sdk_gov11.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348567
+ await cc.setFees(cm.feeInterest, newFeeLiquidation, import_sdk_gov12.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348545
348568
  logger2.trace("setFees part 2");
348546
- await cc.setFees(cm.feeInterest, cm.feeLiquidation, import_sdk_gov11.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348569
+ await cc.setFees(cm.feeInterest, cm.feeLiquidation, import_sdk_gov12.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348547
348570
  logger2.trace("setFees done");
348548
348571
  const ccRoot = await impersonate(this.provider, cm.creditConfigurator);
348549
348572
  logger2.trace(`impresonating creditConfigurator ${cm.creditConfigurator}`);
@@ -348569,9 +348592,9 @@ var ZeroLT = class extends ProviderBase {
348569
348592
  const cc = ICreditConfiguratorV3__factory.connect(cm.creditConfigurator, root2);
348570
348593
  const newFeeLiquidation = Number(cm.liquidationDiscount) - 1;
348571
348594
  logger2.trace("setFees part 1");
348572
- await cc.setFees(cm.feeInterest, newFeeLiquidation, import_sdk_gov11.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348595
+ await cc.setFees(cm.feeInterest, newFeeLiquidation, import_sdk_gov12.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348573
348596
  logger2.trace("setFees part 2");
348574
- await cc.setFees(cm.feeInterest, cm.feeLiquidation, import_sdk_gov11.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348597
+ await cc.setFees(cm.feeInterest, cm.feeLiquidation, import_sdk_gov12.PERCENTAGE_FACTOR - BigInt(cm.liquidationDiscount), cm.feeLiquidationExpired, cm.liquidationDiscountExpired);
348575
348598
  logger2.trace("setFees done");
348576
348599
  const ccRoot = await impersonate(this.provider, cm.creditConfigurator);
348577
348600
  logger2.trace(`impresonating creditConfigurator ${cm.creditConfigurator}`);
@@ -349175,7 +349198,7 @@ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
349175
349198
  var source_default = chalk;
349176
349199
 
349177
349200
  // src/renderer/cli/BaseRenderer.ts
349178
- var import_sdk_gov12 = __toESM(require_lib222(), 1);
349201
+ var import_sdk_gov13 = __toESM(require_lib222(), 1);
349179
349202
  var import_date_fns2 = __toESM(require_date_fns(), 1);
349180
349203
 
349181
349204
  // src/renderer/helpers/emojis.ts
@@ -349285,7 +349308,7 @@ var BaseRenderer = class {
349285
349308
  return `${prefix}${p.value.symbol}`;
349286
349309
  }
349287
349310
  case "token_amount":
349288
- return `${(0, import_sdk_gov12.formatBN)(p.value.amount, p.value.decimals)} ${p.value.symbol}`;
349311
+ return `${(0, import_sdk_gov13.formatBN)(p.value.amount, p.value.decimals)} ${p.value.symbol}`;
349289
349312
  case "percent":
349290
349313
  return formatPercent(p.value);
349291
349314
  case "timestamp":
@@ -349716,7 +349739,7 @@ function getRenderer(opts) {
349716
349739
  }
349717
349740
 
349718
349741
  // package.json
349719
- var version3 = "4.14.2";
349742
+ var version3 = "4.15.0";
349720
349743
 
349721
349744
  // src/version.ts
349722
349745
  var version_default = version3;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/deploy-tools",
3
3
  "description": "Gearbox deploy tools",
4
- "version": "4.14.2",
4
+ "version": "4.15.0",
5
5
  "homepage": "https://gearbox.fi",
6
6
  "keywords": [
7
7
  "gearbox"