@gearbox-protocol/sdk 7.5.0 → 7.6.1

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.
@@ -474,27 +474,30 @@ class GearboxSDK {
474
474
  return this.#marketRegister;
475
475
  }
476
476
  /**
477
- * Returns router contract that will work for given credit manager or credit facade
477
+ * Returns router contract that will work for given credit manager or credit facade, or simply version range
478
478
  * @param params
479
479
  * @returns
480
480
  */
481
481
  routerFor(params) {
482
- let facadeAddr;
483
- if ("creditFacade" in params) {
484
- facadeAddr = (0, import_utils.toAddress)(params.creditFacade);
482
+ let routerRange;
483
+ if (Array.isArray(params)) {
484
+ routerRange = params;
485
485
  } else {
486
- const cm = this.marketRegister.findCreditManager(
487
- (0, import_utils.toAddress)(params.creditManager)
488
- );
489
- facadeAddr = cm.creditFacade.address;
486
+ let facadeAddr;
487
+ if ("creditFacade" in params) {
488
+ facadeAddr = (0, import_utils.toAddress)(params.creditFacade);
489
+ } else {
490
+ const cm = this.marketRegister.findCreditManager(
491
+ (0, import_utils.toAddress)(params.creditManager)
492
+ );
493
+ facadeAddr = cm.creditFacade.address;
494
+ }
495
+ const facadeV = this.contracts.mustGet(facadeAddr).version;
496
+ routerRange = (0, import_constants.isV310)(facadeV) ? import_constants.VERSION_RANGE_310 : import_constants.VERSION_RANGE_300;
490
497
  }
491
- const facadeV = this.contracts.mustGet(facadeAddr).version;
492
- const routerRange = (0, import_constants.isV310)(facadeV) ? import_constants.VERSION_RANGE_310 : import_constants.VERSION_RANGE_300;
493
498
  const routerEntry = this.addressProvider.getLatest(import_constants.AP_ROUTER, routerRange);
494
499
  if (!routerEntry) {
495
- throw new Error(
496
- `router not found for facade v ${facadeV} at ${facadeAddr}`
497
- );
500
+ throw new Error(`router not found in version range ${routerRange}`);
498
501
  }
499
502
  const [routerAddr, routerV] = routerEntry;
500
503
  if (!this.contracts.has(routerAddr)) {
@@ -32,6 +32,7 @@ const abi = import_routerV310.iGearboxRouterV310Abi;
32
32
  const ERR_NOT_IMPLEMENTED = new Error("Not implemented in router v3.1");
33
33
  class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterContract {
34
34
  #numSplits = new import_AddressMap.AddressMap();
35
+ #defaultNumSplits = 4n;
35
36
  constructor(sdk, address, version) {
36
37
  super(sdk, {
37
38
  addr: address,
@@ -208,6 +209,13 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
208
209
  setNumSplits(token, numSplits) {
209
210
  this.#numSplits.upsert(token, numSplits);
210
211
  }
212
+ /**
213
+ * v310-specific method to set default number of splits for a token
214
+ * @param numSplits
215
+ */
216
+ setDefaultNumSplits(numSplits) {
217
+ this.#defaultNumSplits = numSplits;
218
+ }
211
219
  #numSplitsGetter(creditManager, assets) {
212
220
  const { priceOracle } = this.sdk.marketRegister.findByCreditManager(
213
221
  creditManager.address
@@ -232,7 +240,10 @@ class RouterV310Contract extends import_AbstractRouterContract.AbstractRouterCon
232
240
  "balances in usd"
233
241
  );
234
242
  const map = new import_AddressMap.AddressMap(
235
- inUSD.map(({ token }, i) => [token, i === 0 ? 4n : 1n])
243
+ inUSD.map(({ token }, i) => [
244
+ token,
245
+ i === 0 ? this.#defaultNumSplits : 1n
246
+ ])
236
247
  );
237
248
  for (const [token, numSplits] of this.#numSplits.entries()) {
238
249
  map.upsert(token, numSplits);
@@ -472,27 +472,30 @@ class GearboxSDK {
472
472
  return this.#marketRegister;
473
473
  }
474
474
  /**
475
- * Returns router contract that will work for given credit manager or credit facade
475
+ * Returns router contract that will work for given credit manager or credit facade, or simply version range
476
476
  * @param params
477
477
  * @returns
478
478
  */
479
479
  routerFor(params) {
480
- let facadeAddr;
481
- if ("creditFacade" in params) {
482
- facadeAddr = toAddress(params.creditFacade);
480
+ let routerRange;
481
+ if (Array.isArray(params)) {
482
+ routerRange = params;
483
483
  } else {
484
- const cm = this.marketRegister.findCreditManager(
485
- toAddress(params.creditManager)
486
- );
487
- facadeAddr = cm.creditFacade.address;
484
+ let facadeAddr;
485
+ if ("creditFacade" in params) {
486
+ facadeAddr = toAddress(params.creditFacade);
487
+ } else {
488
+ const cm = this.marketRegister.findCreditManager(
489
+ toAddress(params.creditManager)
490
+ );
491
+ facadeAddr = cm.creditFacade.address;
492
+ }
493
+ const facadeV = this.contracts.mustGet(facadeAddr).version;
494
+ routerRange = isV310(facadeV) ? VERSION_RANGE_310 : VERSION_RANGE_300;
488
495
  }
489
- const facadeV = this.contracts.mustGet(facadeAddr).version;
490
- const routerRange = isV310(facadeV) ? VERSION_RANGE_310 : VERSION_RANGE_300;
491
496
  const routerEntry = this.addressProvider.getLatest(AP_ROUTER, routerRange);
492
497
  if (!routerEntry) {
493
- throw new Error(
494
- `router not found for facade v ${facadeV} at ${facadeAddr}`
495
- );
498
+ throw new Error(`router not found in version range ${routerRange}`);
496
499
  }
497
500
  const [routerAddr, routerV] = routerEntry;
498
501
  if (!this.contracts.has(routerAddr)) {
@@ -9,6 +9,7 @@ const abi = iGearboxRouterV310Abi;
9
9
  const ERR_NOT_IMPLEMENTED = new Error("Not implemented in router v3.1");
10
10
  class RouterV310Contract extends AbstractRouterContract {
11
11
  #numSplits = new AddressMap();
12
+ #defaultNumSplits = 4n;
12
13
  constructor(sdk, address, version) {
13
14
  super(sdk, {
14
15
  addr: address,
@@ -185,6 +186,13 @@ class RouterV310Contract extends AbstractRouterContract {
185
186
  setNumSplits(token, numSplits) {
186
187
  this.#numSplits.upsert(token, numSplits);
187
188
  }
189
+ /**
190
+ * v310-specific method to set default number of splits for a token
191
+ * @param numSplits
192
+ */
193
+ setDefaultNumSplits(numSplits) {
194
+ this.#defaultNumSplits = numSplits;
195
+ }
188
196
  #numSplitsGetter(creditManager, assets) {
189
197
  const { priceOracle } = this.sdk.marketRegister.findByCreditManager(
190
198
  creditManager.address
@@ -209,7 +217,10 @@ class RouterV310Contract extends AbstractRouterContract {
209
217
  "balances in usd"
210
218
  );
211
219
  const map = new AddressMap(
212
- inUSD.map(({ token }, i) => [token, i === 0 ? 4n : 1n])
220
+ inUSD.map(({ token }, i) => [
221
+ token,
222
+ i === 0 ? this.#defaultNumSplits : 1n
223
+ ])
213
224
  );
214
225
  for (const [token, numSplits] of this.#numSplits.entries()) {
215
226
  map.upsert(token, numSplits);
@@ -3,6 +3,7 @@ import type { BaseContract, BaseState, IBaseContract } from "./base/index.js";
3
3
  import { TokensMeta } from "./base/index.js";
4
4
  import type { ConnectionOptions, NetworkOptions, TransportOptions } from "./chain/index.js";
5
5
  import { Provider } from "./chain/index.js";
6
+ import type { VersionRange } from "./constants/index.js";
6
7
  import type { IAddressProviderContract } from "./core/index.js";
7
8
  import { BotListContract, GearStakingContract } from "./core/index.js";
8
9
  import { MarketRegister } from "./market/MarketRegister.js";
@@ -152,7 +153,7 @@ export declare class GearboxSDK<const Plugins extends PluginsMap = {}> {
152
153
  get gearStakingContract(): GearStakingContract | undefined;
153
154
  get marketRegister(): MarketRegister;
154
155
  /**
155
- * Returns router contract that will work for given credit manager or credit facade
156
+ * Returns router contract that will work for given credit manager or credit facade, or simply version range
156
157
  * @param params
157
158
  * @returns
158
159
  */
@@ -160,5 +161,5 @@ export declare class GearboxSDK<const Plugins extends PluginsMap = {}> {
160
161
  creditManager: Address | BaseState | IBaseContract;
161
162
  } | {
162
163
  creditFacade: Address | BaseState | IBaseContract;
163
- }): IRouterContract;
164
+ } | VersionRange): IRouterContract;
164
165
  }
@@ -378,6 +378,11 @@ export declare class RouterV310Contract extends AbstractRouterContract<abi> impl
378
378
  * @param numSplits
379
379
  */
380
380
  setNumSplits(token: Address, numSplits: bigint): void;
381
+ /**
382
+ * v310-specific method to set default number of splits for a token
383
+ * @param numSplits
384
+ */
385
+ setDefaultNumSplits(numSplits: bigint): void;
381
386
  /**
382
387
  * Implements {@link IRouterContract.findAllSwaps}
383
388
  * @deprecated v3.0 legacy method
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "7.5.0",
3
+ "version": "7.6.1",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "main": "./dist/cjs/sdk/index.js",