@gearbox-protocol/deploy-tools 5.16.12 → 5.16.13

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 +160 -131
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -371699,12 +371699,13 @@ var PriceOracleBaseContract = class extends BaseContract {
371699
371699
  )
371700
371700
  );
371701
371701
  }
371702
+ const [address] = this.sdk.addressProvider.getLatestVersion(
371703
+ AP_PRICE_FEED_COMPRESSOR
371704
+ );
371702
371705
  return {
371703
371706
  call: {
371704
371707
  abi: iPriceFeedCompressorAbi,
371705
- address: this.sdk.addressProvider.getLatestVersion(
371706
- AP_PRICE_FEED_COMPRESSOR
371707
- ),
371708
+ address,
371708
371709
  functionName: "getPriceFeeds",
371709
371710
  args
371710
371711
  },
@@ -373198,6 +373199,54 @@ var iSwapperV300Abi = [
373198
373199
  }
373199
373200
  ];
373200
373201
 
373202
+ // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/AbstractRouterContract.js
373203
+ var AbstractRouterContract = class extends BaseContract {
373204
+ hooks = new Hooks();
373205
+ addHook = this.hooks.addHook.bind(this.hooks);
373206
+ removeHook = this.hooks.removeHook.bind(this.hooks);
373207
+ getExpectedAndLeftover(ca, cm, balances) {
373208
+ const b = balances || this.getDefaultExpectedAndLeftover(ca);
373209
+ const { leftoverBalances, expectedBalances } = b;
373210
+ const expected = new AddressMap();
373211
+ const leftover = new AddressMap();
373212
+ for (const token of cm.collateralTokens) {
373213
+ const actual = expectedBalances.get(token)?.balance || 0n;
373214
+ expected.upsert(token, { token, balance: actual > 10n ? actual : 0n });
373215
+ leftover.upsert(token, {
373216
+ token,
373217
+ balance: leftoverBalances.get(token)?.balance || 1n
373218
+ });
373219
+ }
373220
+ return { expectedBalances: expected, leftoverBalances: leftover };
373221
+ }
373222
+ getDefaultExpectedAndLeftover(ca) {
373223
+ const expectedBalances = new AddressMap();
373224
+ const leftoverBalances = new AddressMap();
373225
+ for (const { token: t, balance, mask } of ca.tokens) {
373226
+ const token = t;
373227
+ const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
373228
+ expectedBalances.upsert(token, { token, balance });
373229
+ const decimals2 = this.sdk.tokensMeta.decimals(token);
373230
+ const minBalance = 10n ** BigInt(Math.max(8, decimals2) - 8);
373231
+ if (balance < minBalance || !isEnabled) {
373232
+ leftoverBalances.upsert(token, { token, balance });
373233
+ }
373234
+ }
373235
+ return { expectedBalances, leftoverBalances };
373236
+ }
373237
+ };
373238
+
373239
+ // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/helpers.js
373240
+ function balancesMap(assets) {
373241
+ return new AddressMap(assets.map(({ token, balance }) => [token, balance]));
373242
+ }
373243
+ function compareRouterResults(a, b) {
373244
+ return a.amount > b.amount ? a : b;
373245
+ }
373246
+ function assetsMap(assets) {
373247
+ return new AddressMap(assets.map((a) => [a.token, a]));
373248
+ }
373249
+
373201
373250
  // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/PathOptionFactory.js
373202
373251
  var PathOptionFactory = class _PathOptionFactory {
373203
373252
  // TODO: get rid of token data from SDK
@@ -373276,7 +373325,7 @@ var PathOptionFactory = class _PathOptionFactory {
373276
373325
  }
373277
373326
  };
373278
373327
 
373279
- // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/RouterV3Contract.js
373328
+ // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/RouterV300Contract.js
373280
373329
  var MAX_GAS_PER_ROUTE = 200000000n;
373281
373330
  var GAS_PER_BLOCK = 400000000n;
373282
373331
  var LOOPS_PER_TX = Number(GAS_PER_BLOCK / MAX_GAS_PER_ROUTE);
@@ -373293,19 +373342,16 @@ var PT_IN = {
373293
373342
  var OUT = {
373294
373343
  ["0x9D39A5DE30e57443BfF2A8307A4256c8797A3497".toLowerCase()]: "sUSDe"
373295
373344
  };
373296
- var RouterV3Contract = class extends BaseContract {
373345
+ var RouterV300Contract = class extends AbstractRouterContract {
373297
373346
  #connectors;
373298
- #hooks = new Hooks();
373299
373347
  constructor(sdk, address) {
373300
373348
  super(sdk, {
373301
373349
  addr: address,
373302
- name: "RouterV3",
373350
+ name: "RouterV300",
373303
373351
  abi: iRouterV300Abi
373304
373352
  });
373305
373353
  this.#connectors = getConnectors(sdk.provider.networkType);
373306
373354
  }
373307
- addHook = this.#hooks.addHook.bind(this.#hooks);
373308
- removeHook = this.#hooks.removeHook.bind(this.#hooks);
373309
373355
  /**
373310
373356
  * Finds all available swaps for NORMAL tokens
373311
373357
  * @param ca
@@ -373378,7 +373424,7 @@ var RouterV3Contract = class extends BaseContract {
373378
373424
  creditManager.collateralTokens
373379
373425
  );
373380
373426
  const isPTOverrideRedeem = PT_IN[tokenIn.toLowerCase()] && OUT[tokenOut.toLowerCase()];
373381
- const { result } = await (isPTOverrideRedeem ? this.overridePTRedeem(props) : this.contract.simulate.findOneTokenPath(
373427
+ const { result } = await (isPTOverrideRedeem ? this.#overridePTRedeem(props) : this.contract.simulate.findOneTokenPath(
373382
373428
  [
373383
373429
  tokenIn,
373384
373430
  amount,
@@ -373397,74 +373443,6 @@ var RouterV3Contract = class extends BaseContract {
373397
373443
  calls: [...result.calls]
373398
373444
  };
373399
373445
  }
373400
- // TODO: remove me when new router will be added
373401
- async overridePTRedeem({
373402
- creditAccount,
373403
- creditManager,
373404
- tokenIn,
373405
- tokenOut,
373406
- amount,
373407
- slippage
373408
- }) {
373409
- const pendleSwapperAddress = await this.contract.read.componentAddressById([
373410
- 37
373411
- ]);
373412
- const cm = this.sdk.marketRegister.findCreditManager(creditManager.address);
373413
- const PENDLE_ROUTER_BY_NETWORK = {
373414
- Mainnet: "0x888888888889758F76e7103c6CbF23ABbF58F946",
373415
- Arbitrum: "0x0",
373416
- Optimism: "0x0",
373417
- Base: "0x0",
373418
- Sonic: "0x0"
373419
- };
373420
- const pendleRouter = PENDLE_ROUTER_BY_NETWORK[this.sdk.provider.networkType];
373421
- const pendleAdapter = cm.creditManager.adapters.mustGet(pendleRouter);
373422
- const pendleSwapper = getContract({
373423
- address: pendleSwapperAddress,
373424
- abi: iSwapperV300Abi,
373425
- client: this.sdk.provider.publicClient
373426
- });
373427
- const result = await pendleSwapper.simulate.getBestDirectPairSwap([
373428
- {
373429
- swapOperation: 1,
373430
- creditAccount: creditAccount.creditAccount,
373431
- tokenIn,
373432
- tokenOut,
373433
- connectors: [],
373434
- amount,
373435
- leftoverAmount: 0n
373436
- },
373437
- pendleAdapter.address
373438
- ]);
373439
- const minAmount = result.result.amount * (PERCENTAGE_FACTOR - BigInt(slippage)) / PERCENTAGE_FACTOR;
373440
- const storeExpectedBalances = {
373441
- target: creditManager.creditFacade,
373442
- callData: encodeFunctionData({
373443
- abi: iCreditFacadeV300MulticallAbi,
373444
- functionName: "storeExpectedBalances",
373445
- args: [[{ token: tokenOut, amount: minAmount }]]
373446
- })
373447
- };
373448
- const compareBalances = {
373449
- target: creditManager.creditFacade,
373450
- callData: encodeFunctionData({
373451
- abi: iCreditFacadeV300MulticallAbi,
373452
- functionName: "compareBalances",
373453
- args: []
373454
- })
373455
- };
373456
- return {
373457
- result: {
373458
- amount: result.result.amount,
373459
- minAmount,
373460
- calls: [
373461
- storeExpectedBalances,
373462
- result.result.multiCall,
373463
- compareBalances
373464
- ]
373465
- }
373466
- };
373467
- }
373468
373446
  /**
373469
373447
  * @dev Finds the best path for opening Credit Account and converting all NORMAL tokens and LP token in the way to TARGET
373470
373448
  * @param creditManager CreditManagerData which represents credit manager you want to use to open Credit Account
@@ -373545,7 +373523,7 @@ var RouterV3Contract = class extends BaseContract {
373545
373523
  leftoverBalances: assetsMap(balances.leftoverBalances)
373546
373524
  } : void 0
373547
373525
  );
373548
- await this.#hooks.triggerHooks("foundPathOptions", {
373526
+ await this.hooks.triggerHooks("foundPathOptions", {
373549
373527
  creditAccount: ca.creditAccount,
373550
373528
  pathOptions,
373551
373529
  expected,
@@ -373593,61 +373571,112 @@ var RouterV3Contract = class extends BaseContract {
373593
373571
  }
373594
373572
  /**
373595
373573
  * Finds input to be used with findBestClosePath
373574
+ * Is used by batch liquidator
373596
373575
  * @param ca
373597
373576
  * @param cm
373598
373577
  * @returns
373599
373578
  */
373600
373579
  getFindClosePathInput(ca, cm, balances) {
373601
- const b = balances || this.getDefaultExpectedAndLeftover(ca);
373602
- const { leftoverBalances, expectedBalances } = b;
373580
+ const { expectedBalances, leftoverBalances } = this.getExpectedAndLeftover(
373581
+ ca,
373582
+ cm,
373583
+ balances
373584
+ );
373603
373585
  const pathOptions = PathOptionFactory.generatePathOptions(
373604
373586
  ca.tokens,
373605
373587
  this.provider.networkType,
373606
373588
  LOOPS_PER_TX
373607
373589
  );
373608
- const expected = cm.collateralTokens.map((token) => {
373609
- const actual = expectedBalances.get(token)?.balance || 0n;
373610
- return {
373611
- token,
373612
- balance: actual > 10n ? actual : 0n
373613
- };
373614
- });
373615
- const leftover = cm.collateralTokens.map((token) => ({
373616
- token,
373617
- balance: leftoverBalances.get(token)?.balance || 1n
373618
- }));
373619
373590
  const connectors2 = this.getAvailableConnectors(cm.collateralTokens);
373620
- return { expected, leftover, connectors: connectors2, pathOptions };
373621
- }
373622
- getDefaultExpectedAndLeftover(ca) {
373623
- const expectedBalances = new AddressMap();
373624
- const leftoverBalances = new AddressMap();
373625
- for (const { token: t, balance, mask } of ca.tokens) {
373626
- const token = t;
373627
- const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
373628
- expectedBalances.upsert(token, { token, balance });
373629
- const decimals2 = this.sdk.tokensMeta.decimals(token);
373630
- const minBalance = 10n ** BigInt(Math.max(8, decimals2) - 8);
373631
- if (balance < minBalance || !isEnabled) {
373632
- leftoverBalances.upsert(token, { token, balance });
373633
- }
373634
- }
373635
- return { expectedBalances, leftoverBalances };
373591
+ return {
373592
+ expected: expectedBalances.values(),
373593
+ leftover: leftoverBalances.values(),
373594
+ connectors: connectors2,
373595
+ pathOptions
373596
+ };
373636
373597
  }
373637
373598
  getAvailableConnectors(collateralTokens) {
373638
373599
  return collateralTokens.filter(
373639
373600
  (t) => this.#connectors.includes(t.toLowerCase())
373640
373601
  );
373641
373602
  }
373603
+ // TODO: remove me when new router will be added
373604
+ async #overridePTRedeem({
373605
+ creditAccount,
373606
+ creditManager,
373607
+ tokenIn,
373608
+ tokenOut,
373609
+ amount,
373610
+ slippage
373611
+ }) {
373612
+ const pendleSwapperAddress = await this.contract.read.componentAddressById([
373613
+ 37
373614
+ ]);
373615
+ const cm = this.sdk.marketRegister.findCreditManager(creditManager.address);
373616
+ const PENDLE_ROUTER_BY_NETWORK = {
373617
+ Mainnet: "0x888888888889758F76e7103c6CbF23ABbF58F946",
373618
+ Arbitrum: "0x0",
373619
+ Optimism: "0x0",
373620
+ Base: "0x0",
373621
+ Sonic: "0x0"
373622
+ };
373623
+ const pendleRouter = PENDLE_ROUTER_BY_NETWORK[this.sdk.provider.networkType];
373624
+ const pendleAdapter = cm.creditManager.adapters.mustGet(pendleRouter);
373625
+ const pendleSwapper = getContract({
373626
+ address: pendleSwapperAddress,
373627
+ abi: iSwapperV300Abi,
373628
+ client: this.sdk.provider.publicClient
373629
+ });
373630
+ const result = await pendleSwapper.simulate.getBestDirectPairSwap([
373631
+ {
373632
+ swapOperation: 1,
373633
+ creditAccount: creditAccount.creditAccount,
373634
+ tokenIn,
373635
+ tokenOut,
373636
+ connectors: [],
373637
+ amount,
373638
+ leftoverAmount: 0n
373639
+ },
373640
+ pendleAdapter.address
373641
+ ]);
373642
+ const minAmount = result.result.amount * (PERCENTAGE_FACTOR - BigInt(slippage)) / PERCENTAGE_FACTOR;
373643
+ const storeExpectedBalances = {
373644
+ target: creditManager.creditFacade,
373645
+ callData: encodeFunctionData({
373646
+ abi: iCreditFacadeV300MulticallAbi,
373647
+ functionName: "storeExpectedBalances",
373648
+ args: [[{ token: tokenOut, amount: minAmount }]]
373649
+ })
373650
+ };
373651
+ const compareBalances = {
373652
+ target: creditManager.creditFacade,
373653
+ callData: encodeFunctionData({
373654
+ abi: iCreditFacadeV300MulticallAbi,
373655
+ functionName: "compareBalances",
373656
+ args: []
373657
+ })
373658
+ };
373659
+ return {
373660
+ result: {
373661
+ amount: result.result.amount,
373662
+ minAmount,
373663
+ calls: [
373664
+ storeExpectedBalances,
373665
+ result.result.multiCall,
373666
+ compareBalances
373667
+ ]
373668
+ }
373669
+ };
373670
+ }
373642
373671
  };
373643
- function compareRouterResults(a, b) {
373644
- return a.amount > b.amount ? a : b;
373645
- }
373646
- function balancesMap(assets) {
373647
- return new AddressMap(assets.map(({ token, balance }) => [token, balance]));
373648
- }
373649
- function assetsMap(assets) {
373650
- return new AddressMap(assets.map((a) => [a.token, a]));
373672
+
373673
+ // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/router/createRouter.js
373674
+ function createRouter(sdk) {
373675
+ const [address, v] = sdk.addressProvider.getLatestVersion(AP_ROUTER);
373676
+ if (v >= 300 && v < 310) {
373677
+ return new RouterV300Contract(sdk, address);
373678
+ }
373679
+ throw new Error(`Unsupported router version ${v}`);
373651
373680
  }
373652
373681
 
373653
373682
  // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/accounts/CreditAccountsService.js
@@ -373657,7 +373686,7 @@ var CreditAccountsService = class extends SDKConstruct {
373657
373686
  #logger;
373658
373687
  constructor(sdk, options) {
373659
373688
  super(sdk);
373660
- this.#compressor = sdk.addressProvider.getLatestVersion(
373689
+ [this.#compressor] = sdk.addressProvider.getLatestVersion(
373661
373690
  AP_CREDIT_ACCOUNT_COMPRESSOR
373662
373691
  );
373663
373692
  this.#batchSize = options?.batchSize;
@@ -374419,10 +374448,12 @@ var CreditAccountsService = class extends SDKConstruct {
374419
374448
  return this.sdk.marketRegister.marketConfigurators.map((mc) => mc.address);
374420
374449
  }
374421
374450
  get rewardCompressor() {
374422
- return this.sdk.addressProvider.getLatestVersion(AP_REWARDS_COMPRESSOR);
374451
+ return this.sdk.addressProvider.getLatestVersion(AP_REWARDS_COMPRESSOR)[0];
374423
374452
  }
374424
374453
  get peripheryCompressor() {
374425
- return this.sdk.addressProvider.getLatestVersion(AP_PERIPHERY_COMPRESSOR);
374454
+ return this.sdk.addressProvider.getLatestVersion(
374455
+ AP_PERIPHERY_COMPRESSOR
374456
+ )[0];
374426
374457
  }
374427
374458
  };
374428
374459
 
@@ -374456,13 +374487,12 @@ var AbstractAddressProviderContract = class extends BaseContract {
374456
374487
  return result;
374457
374488
  }
374458
374489
  getLatestVersion(contract) {
374459
- if (!this.#latest[contract]) {
374490
+ const version4 = this.#latest[contract];
374491
+ if (!version4) {
374460
374492
  throw new Error(`Latest version for ${contract} not found`);
374461
374493
  }
374462
- this.logger?.debug(
374463
- `Latest version found for ${contract} : ${this.#latest[contract]}`
374464
- );
374465
- return this.getAddress(contract, this.#latest[contract]);
374494
+ this.logger?.debug(`Latest version found for ${contract} : ${version4}`);
374495
+ return [this.getAddress(contract, version4), version4];
374466
374496
  }
374467
374497
  get state() {
374468
374498
  return {
@@ -374626,8 +374656,8 @@ var AddressProviderContractV3 = class extends AbstractAddressProviderContract {
374626
374656
  }
374627
374657
  };
374628
374658
 
374629
- // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/core/address-provider/getAddressProvider.js
374630
- async function getAddressProvider(sdk, address, options) {
374659
+ // ../../node_modules/@gearbox-protocol/sdk/dist/esm/sdk/core/address-provider/createAddressProvider.js
374660
+ async function createAddressProvider(sdk, address, options) {
374631
374661
  const addr = options?.state?.baseParams.addr ?? address;
374632
374662
  let v = options?.state?.baseParams.version ?? options?.version;
374633
374663
  if (!v) {
@@ -374909,7 +374939,7 @@ var GearboxSDK = class _GearboxSDK {
374909
374939
  },
374910
374940
  "attaching"
374911
374941
  );
374912
- this.#addressProvider = await getAddressProvider(this, addressProvider);
374942
+ this.#addressProvider = await createAddressProvider(this, addressProvider);
374913
374943
  this.logger?.debug(
374914
374944
  `address provider version: ${this.#addressProvider.version}`
374915
374945
  );
@@ -374934,8 +374964,7 @@ var GearboxSDK = class _GearboxSDK {
374934
374964
  ignoreUpdateablePrices
374935
374965
  );
374936
374966
  try {
374937
- const router = this.#addressProvider.getLatestVersion(AP_ROUTER);
374938
- this.#router = new RouterV3Contract(this, router);
374967
+ this.#router = createRouter(this);
374939
374968
  } catch (e) {
374940
374969
  this.logger?.warn("Router not found", e);
374941
374970
  }
@@ -407595,7 +407624,7 @@ function getRenderer(opts) {
407595
407624
  var package_default = {
407596
407625
  name: "@gearbox-protocol/deploy-tools",
407597
407626
  description: "Gearbox deploy tools",
407598
- version: "5.16.12",
407627
+ version: "5.16.13",
407599
407628
  homepage: "https://gearbox.fi",
407600
407629
  keywords: [
407601
407630
  "gearbox"
@@ -407638,7 +407667,7 @@ var package_default = {
407638
407667
  "@gearbox-protocol/deploy-tools-node": "0.0.0",
407639
407668
  "@gearbox-protocol/deploy-tools-shared": "0.0.0",
407640
407669
  "@gearbox-protocol/deploy-tools-types": "0.0.0",
407641
- "@gearbox-protocol/sdk": "3.0.0-vfour.277",
407670
+ "@gearbox-protocol/sdk": "3.0.0-vfour.279",
407642
407671
  "@gearbox-protocol/sdk-gov": "^2.36.5",
407643
407672
  "@types/lodash-es": "^4.17.12",
407644
407673
  "@types/node": "^22.13.5",
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": "5.16.12",
4
+ "version": "5.16.13",
5
5
  "homepage": "https://gearbox.fi",
6
6
  "keywords": [
7
7
  "gearbox"
@@ -44,7 +44,7 @@
44
44
  "@gearbox-protocol/deploy-tools-node": "0.0.0",
45
45
  "@gearbox-protocol/deploy-tools-shared": "0.0.0",
46
46
  "@gearbox-protocol/deploy-tools-types": "0.0.0",
47
- "@gearbox-protocol/sdk": "3.0.0-vfour.277",
47
+ "@gearbox-protocol/sdk": "3.0.0-vfour.279",
48
48
  "@gearbox-protocol/sdk-gov": "^2.36.5",
49
49
  "@types/lodash-es": "^4.17.12",
50
50
  "@types/node": "^22.13.5",