@gearbox-protocol/sdk 3.0.0-vfour.285 → 3.0.0-vfour.286

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 (41) hide show
  1. package/dist/cjs/adapters/{plugin.js → GearboxAdaptersPlugin.js} +34 -31
  2. package/dist/cjs/adapters/index.js +2 -2
  3. package/dist/cjs/dev/index.js +2 -2
  4. package/dist/cjs/dev/migrateFaucet.js +94 -0
  5. package/dist/cjs/sdk/GearboxSDK.js +32 -12
  6. package/dist/cjs/sdk/market/MarketRegister.js +1 -51
  7. package/dist/cjs/sdk/market/adapters/factory.js +4 -4
  8. package/dist/cjs/zappers/GearboxZappersPlugin.js +94 -0
  9. package/dist/cjs/zappers/index.js +24 -0
  10. package/dist/cjs/zappers/package.json +1 -0
  11. package/dist/cjs/zappers/types.js +16 -0
  12. package/dist/esm/adapters/{plugin.js → GearboxAdaptersPlugin.js} +32 -29
  13. package/dist/esm/adapters/index.js +1 -1
  14. package/dist/esm/dev/index.js +1 -1
  15. package/dist/esm/dev/migrateFaucet.js +70 -0
  16. package/dist/esm/sdk/GearboxSDK.js +32 -12
  17. package/dist/esm/sdk/market/MarketRegister.js +3 -60
  18. package/dist/esm/sdk/market/adapters/factory.js +4 -4
  19. package/dist/esm/zappers/GearboxZappersPlugin.js +73 -0
  20. package/dist/esm/zappers/index.js +2 -0
  21. package/dist/esm/zappers/package.json +1 -0
  22. package/dist/esm/zappers/types.js +0 -0
  23. package/dist/types/adapters/GearboxAdaptersPlugin.d.ts +7 -0
  24. package/dist/types/adapters/index.d.ts +1 -1
  25. package/dist/types/dev/index.d.ts +1 -1
  26. package/dist/types/dev/migrateFaucet.d.ts +6 -0
  27. package/dist/types/sdk/GearboxSDK.d.ts +7 -7
  28. package/dist/types/sdk/base/types.d.ts +0 -1
  29. package/dist/types/sdk/market/MarketRegister.d.ts +2 -8
  30. package/dist/types/sdk/market/adapters/factory.d.ts +2 -1
  31. package/dist/types/sdk/plugins/index.d.ts +20 -2
  32. package/dist/types/sdk/sdk-legacy/payload/pool.d.ts +7 -1
  33. package/dist/types/sdk/types/state-human.d.ts +1 -5
  34. package/dist/types/zappers/GearboxZappersPlugin.d.ts +10 -0
  35. package/dist/types/zappers/index.d.ts +2 -0
  36. package/dist/types/zappers/types.d.ts +12 -0
  37. package/package.json +1 -1
  38. package/dist/cjs/dev/SDKExample.js +0 -177
  39. package/dist/esm/dev/SDKExample.js +0 -153
  40. package/dist/types/adapters/plugin.d.ts +0 -2
  41. package/dist/types/dev/SDKExample.d.ts +0 -17
@@ -16,11 +16,11 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var plugin_exports = {};
20
- __export(plugin_exports, {
19
+ var GearboxAdaptersPlugin_exports = {};
20
+ __export(GearboxAdaptersPlugin_exports, {
21
21
  GearboxAdaptersPlugin: () => GearboxAdaptersPlugin
22
22
  });
23
- module.exports = __toCommonJS(plugin_exports);
23
+ module.exports = __toCommonJS(GearboxAdaptersPlugin_exports);
24
24
  var import_sdk = require("../sdk/index.js");
25
25
  var import_BalancerV2VaultAdapterContract = require("./BalancerV2VaultAdapterContract.js");
26
26
  var import_BalancerV3RouterAdapterContract = require("./BalancerV3RouterAdapterContract.js");
@@ -43,71 +43,74 @@ var import_UniswapV3AdapterContract = require("./UniswapV3AdapterContract.js");
43
43
  var import_VelodromeV2AdapterContract = require("./VelodromeV2AdapterContract.js");
44
44
  var import_WstETHV1AdapterContract = require("./WstETHV1AdapterContract.js");
45
45
  var import_YearnV2AdapterContract = require("./YearnV2AdapterContract.js");
46
- const GearboxAdaptersPlugin = {
47
- name: "Adapters",
48
- createContract(sdk, data) {
46
+ class GearboxAdaptersPlugin extends import_sdk.SDKConstruct {
47
+ name = "Adapters";
48
+ createContract(data) {
49
49
  const args = data;
50
50
  const adapterType = (0, import_sdk.bytes32ToString)(
51
51
  args.baseParams.contractType
52
52
  );
53
53
  switch (adapterType) {
54
54
  case "ADAPTER::UNISWAP_V2_ROUTER":
55
- return new import_UniswapV2AdapterContract.UniswapV2AdapterContract(sdk, args);
55
+ return new import_UniswapV2AdapterContract.UniswapV2AdapterContract(this.sdk, args);
56
56
  case "ADAPTER::UNISWAP_V3_ROUTER":
57
- return new import_UniswapV3AdapterContract.UniswapV3AdapterContract(sdk, args);
57
+ return new import_UniswapV3AdapterContract.UniswapV3AdapterContract(this.sdk, args);
58
58
  case "ADAPTER::CURVE_V1_2ASSETS":
59
- return new import_Curve2AssetsAdapterContract.Curve2AssetsAdapterContract(sdk, args);
59
+ return new import_Curve2AssetsAdapterContract.Curve2AssetsAdapterContract(this.sdk, args);
60
60
  case "ADAPTER::CURVE_V1_3ASSETS":
61
- return new import_Curve3AssetsAdapterContract.Curve3AssetsAdapterContract(sdk, args);
61
+ return new import_Curve3AssetsAdapterContract.Curve3AssetsAdapterContract(this.sdk, args);
62
62
  case "ADAPTER::CURVE_V1_4ASSETS":
63
- return new import_Curve4AssetsAdapterContract.Curve4AssetsAdapterContract(sdk, args);
63
+ return new import_Curve4AssetsAdapterContract.Curve4AssetsAdapterContract(this.sdk, args);
64
64
  case "ADAPTER::CURVE_V1_STECRV_POOL":
65
- return new import_CurveV1AdapterStETHContract.CurveV1AdapterStETHContract(sdk, args);
65
+ return new import_CurveV1AdapterStETHContract.CurveV1AdapterStETHContract(this.sdk, args);
66
66
  case "ADAPTER::CURVE_V1_WRAPPER":
67
- return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(sdk, args);
67
+ return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(this.sdk, args);
68
68
  case "ADAPTER::CVX_V1_BASE_REWARD_POOL":
69
- return new import_ConvexV1BaseRewardPoolAdapterContract.ConvexV1BaseRewardPoolAdapterContract(sdk, args);
69
+ return new import_ConvexV1BaseRewardPoolAdapterContract.ConvexV1BaseRewardPoolAdapterContract(this.sdk, args);
70
70
  case "ADAPTER::CVX_V1_BOOSTER":
71
- return new import_ConvexV1BoosterAdapterContract.ConvexV1BoosterAdapterContract(sdk, args);
71
+ return new import_ConvexV1BoosterAdapterContract.ConvexV1BoosterAdapterContract(this.sdk, args);
72
72
  case "ADAPTER::CURVE_STABLE_NG":
73
- return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(sdk, args);
73
+ return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(this.sdk, args);
74
74
  case "ADAPTER::LIDO_WSTETH_V1":
75
- return new import_WstETHV1AdapterContract.WstETHV1AdapterContract(sdk, args);
75
+ return new import_WstETHV1AdapterContract.WstETHV1AdapterContract(this.sdk, args);
76
76
  case "ADAPTER::BALANCER_VAULT":
77
- return new import_BalancerV2VaultAdapterContract.BalancerV2VaultAdapterContract(sdk, args);
77
+ return new import_BalancerV2VaultAdapterContract.BalancerV2VaultAdapterContract(this.sdk, args);
78
78
  case "ADAPTER::BALANCER_V3_ROUTER":
79
- return new import_BalancerV3RouterAdapterContract.BalancerV3RouterAdapterContract(sdk, args);
79
+ return new import_BalancerV3RouterAdapterContract.BalancerV3RouterAdapterContract(this.sdk, args);
80
80
  case "ADAPTER::ERC4626_VAULT":
81
- return new import_ERC4626AdapterContract.ERC4626AdapterContract(sdk, args);
81
+ return new import_ERC4626AdapterContract.ERC4626AdapterContract(this.sdk, args);
82
82
  case "ADAPTER::VELODROME_V2_ROUTER":
83
- return new import_VelodromeV2AdapterContract.VelodromeV2RouterAdapterContract(sdk, args);
83
+ return new import_VelodromeV2AdapterContract.VelodromeV2RouterAdapterContract(this.sdk, args);
84
84
  case "ADAPTER::CAMELOT_V3_ROUTER":
85
- return new import_CamelotV3AdapterContract.CamelotV3AdapterContract(sdk, args);
85
+ return new import_CamelotV3AdapterContract.CamelotV3AdapterContract(this.sdk, args);
86
86
  case "ADAPTER::YEARN_V2":
87
- return new import_YearnV2AdapterContract.YearnV2RouterAdapterContract(sdk, args);
87
+ return new import_YearnV2AdapterContract.YearnV2RouterAdapterContract(this.sdk, args);
88
88
  case "ADAPTER::MELLOW_LRT_VAULT":
89
- return new import_MellowVaultAdapterContract.MellowVaultAdapterContract(sdk, args);
89
+ return new import_MellowVaultAdapterContract.MellowVaultAdapterContract(this.sdk, args);
90
90
  case "ADAPTER::MELLOW_ERC4626_VAULT":
91
- return new import_MellowERC4626VaultAdapterContract.MellowERC4626VaultAdapterContract(sdk, args);
91
+ return new import_MellowERC4626VaultAdapterContract.MellowERC4626VaultAdapterContract(this.sdk, args);
92
92
  case "ADAPTER::PENDLE_ROUTER":
93
- return new import_PendleRouterAdapterContract.PendleRouterAdapterContract(sdk, args);
93
+ return new import_PendleRouterAdapterContract.PendleRouterAdapterContract(this.sdk, args);
94
94
  case "ADAPTER::DAI_USDS_EXCHANGE":
95
- return new import_DaiUsdsAdapterContract.DaiUsdsAdapterContract(sdk, args);
95
+ return new import_DaiUsdsAdapterContract.DaiUsdsAdapterContract(this.sdk, args);
96
96
  case "ADAPTER::STAKING_REWARDS":
97
- return new import_StakingRewardsAdapterContract.StakingRewardsAdapterContract(sdk, args);
97
+ return new import_StakingRewardsAdapterContract.StakingRewardsAdapterContract(this.sdk, args);
98
98
  default: {
99
99
  const err = new Error(
100
100
  `Adapter type ${adapterType} not supported for adapter at ${args.baseParams.addr}`
101
101
  );
102
- if (sdk.strictContractTypes) {
102
+ if (this.sdk.strictContractTypes) {
103
103
  throw err;
104
104
  }
105
- sdk.logger?.error(err);
105
+ this.sdk.logger?.error(err);
106
106
  return void 0;
107
107
  }
108
108
  }
109
109
  }
110
- };
110
+ stateHuman(raw) {
111
+ return {};
112
+ }
113
+ }
111
114
  // Annotate the CommonJS export names for ESM import in node:
112
115
  0 && (module.exports = {
113
116
  GearboxAdaptersPlugin
@@ -15,10 +15,10 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
16
  var adapters_exports = {};
17
17
  module.exports = __toCommonJS(adapters_exports);
18
- __reExport(adapters_exports, require("./plugin.js"), module.exports);
18
+ __reExport(adapters_exports, require("./GearboxAdaptersPlugin.js"), module.exports);
19
19
  __reExport(adapters_exports, require("./types.js"), module.exports);
20
20
  // Annotate the CommonJS export names for ESM import in node:
21
21
  0 && (module.exports = {
22
- ...require("./plugin.js"),
22
+ ...require("./GearboxAdaptersPlugin.js"),
23
23
  ...require("./types.js")
24
24
  });
@@ -18,8 +18,8 @@ module.exports = __toCommonJS(dev_exports);
18
18
  __reExport(dev_exports, require("./AccountOpener.js"), module.exports);
19
19
  __reExport(dev_exports, require("./calcLiquidatableLTs.js"), module.exports);
20
20
  __reExport(dev_exports, require("./createAnvilClient.js"), module.exports);
21
+ __reExport(dev_exports, require("./migrateFaucet.js"), module.exports);
21
22
  __reExport(dev_exports, require("./PriceFeedStore.js"), module.exports);
22
- __reExport(dev_exports, require("./SDKExample.js"), module.exports);
23
23
  __reExport(dev_exports, require("./setLTs.js"), module.exports);
24
24
  __reExport(dev_exports, require("./setLTZero.js"), module.exports);
25
25
  // Annotate the CommonJS export names for ESM import in node:
@@ -27,8 +27,8 @@ __reExport(dev_exports, require("./setLTZero.js"), module.exports);
27
27
  ...require("./AccountOpener.js"),
28
28
  ...require("./calcLiquidatableLTs.js"),
29
29
  ...require("./createAnvilClient.js"),
30
+ ...require("./migrateFaucet.js"),
30
31
  ...require("./PriceFeedStore.js"),
31
- ...require("./SDKExample.js"),
32
32
  ...require("./setLTs.js"),
33
33
  ...require("./setLTZero.js")
34
34
  });
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var migrateFaucet_exports = {};
20
+ __export(migrateFaucet_exports, {
21
+ migrateFaucet: () => migrateFaucet
22
+ });
23
+ module.exports = __toCommonJS(migrateFaucet_exports);
24
+ var import_viem = require("viem");
25
+ var import_v300 = require("../abi/v300.js");
26
+ var import_v310 = require("../abi/v310.js");
27
+ var import_sdk = require("../sdk/index.js");
28
+ var import_createAnvilClient = require("./createAnvilClient.js");
29
+ async function unsafeMigrateFaucet(sdk) {
30
+ const anvil = (0, import_createAnvilClient.createAnvilClient)({
31
+ chain: sdk.provider.chain,
32
+ transport: sdk.provider.transport
33
+ });
34
+ const [faucetAddr, owner] = await anvil.multicall({
35
+ contracts: [
36
+ {
37
+ abi: import_v300.iAddressProviderV300Abi,
38
+ address: import_sdk.ADDRESS_PROVIDER[sdk.provider.networkType],
39
+ functionName: "getAddressOrRevert",
40
+ args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), 0n]
41
+ },
42
+ {
43
+ abi: import_v310.iAddressProviderV310Abi,
44
+ address: sdk.addressProvider.address,
45
+ functionName: "owner",
46
+ args: []
47
+ }
48
+ ],
49
+ allowFailure: false
50
+ });
51
+ sdk.logger?.debug(`faucet address: ${faucetAddr}, owner: ${owner}`);
52
+ await anvil.impersonateAccount({ address: owner });
53
+ await anvil.setBalance({
54
+ address: owner,
55
+ value: (0, import_viem.parseEther)("1000")
56
+ });
57
+ const balance = await anvil.getBalance({ address: owner });
58
+ sdk.logger?.debug(`owner balance: ${(0, import_viem.formatEther)(balance)} ETH`);
59
+ const { request } = await anvil.simulateContract({
60
+ chain: anvil.chain,
61
+ account: owner,
62
+ address: sdk.addressProvider.address,
63
+ abi: import_v310.iAddressProviderV310Abi,
64
+ functionName: "setAddress",
65
+ args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), faucetAddr, false]
66
+ });
67
+ sdk.logger?.debug("estimated setAddress call");
68
+ const hash = await anvil.writeContract({
69
+ chain: anvil.chain,
70
+ account: owner,
71
+ address: sdk.addressProvider.address,
72
+ abi: import_v310.iAddressProviderV310Abi,
73
+ functionName: "setAddress",
74
+ args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), faucetAddr, false],
75
+ gas: request.gas ? request.gas * 11n / 10n : void 0
76
+ });
77
+ const receipt = await anvil.waitForTransactionReceipt({ hash });
78
+ await anvil.stopImpersonatingAccount({ address: owner });
79
+ if (receipt.status === "reverted") {
80
+ throw new Error("faucet migration reverted");
81
+ }
82
+ }
83
+ async function migrateFaucet(sdk) {
84
+ try {
85
+ await unsafeMigrateFaucet(sdk);
86
+ sdk.logger?.info("faucet migrated successfully");
87
+ } catch (e) {
88
+ sdk.logger?.error(`faucet migration failed: ${e}`);
89
+ }
90
+ }
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ migrateFaucet
94
+ });
@@ -32,10 +32,12 @@ var import_router = require("./router/index.js");
32
32
  var import_utils = require("./utils/index.js");
33
33
  var import_internal = require("./utils/internal/index.js");
34
34
  var import_viem2 = require("./utils/viem/index.js");
35
+ const ERR_NOT_ATTACHED = new Error("Gearbox SDK not attached");
35
36
  class GearboxSDK {
36
37
  #hooks = new import_internal.Hooks();
37
38
  // Represents chain object
38
39
  #provider;
40
+ plugins;
39
41
  // Block which was use for data query
40
42
  #currentBlock;
41
43
  #timestamp;
@@ -50,7 +52,6 @@ class GearboxSDK {
50
52
  // Router contract
51
53
  #router;
52
54
  logger;
53
- plugins;
54
55
  /**
55
56
  * Interest rate models can be reused across chain (and SDK operates on chain level)
56
57
  * TODO: use whatever interface is necessary for InterestRateModels
@@ -124,8 +125,14 @@ class GearboxSDK {
124
125
  this.#provider = options.provider;
125
126
  this.logger = options.logger;
126
127
  this.priceFeeds = new import_pricefeeds.PriceFeedRegister(this);
127
- this.plugins = options.plugins ?? [];
128
128
  this.strictContractTypes = options.strictContractTypes ?? false;
129
+ const pluginsInstances = {};
130
+ for (const [name, PluginConstructor] of Object.entries(
131
+ options.plugins ?? {}
132
+ )) {
133
+ pluginsInstances[name] = new PluginConstructor(this);
134
+ }
135
+ this.plugins = pluginsInstances;
129
136
  }
130
137
  async #attach(opts) {
131
138
  const {
@@ -187,6 +194,13 @@ class GearboxSDK {
187
194
  } catch (e) {
188
195
  this.logger?.warn("Router not found", e);
189
196
  }
197
+ for (const [name, plugin] of Object.entries(this.plugins)) {
198
+ if (plugin.attach) {
199
+ this.logger?.debug(`attaching plugin ${name}`);
200
+ await plugin.attach();
201
+ this.logger?.debug(`attached plugin ${name}`);
202
+ }
203
+ }
190
204
  this.logger?.info(`attach time: ${Date.now() - time} ms`);
191
205
  return this;
192
206
  }
@@ -246,6 +260,12 @@ class GearboxSDK {
246
260
  gearStakingV3: this.gearStakingContract.stateHuman(raw)
247
261
  },
248
262
  tokens: this.tokensMeta.values(),
263
+ plugins: Object.fromEntries(
264
+ Object.entries(this.plugins).map(([name, plugin]) => [
265
+ name,
266
+ plugin.stateHuman(raw)
267
+ ])
268
+ ),
249
269
  ...this.marketRegister.stateHuman(raw)
250
270
  };
251
271
  }
@@ -268,7 +288,7 @@ class GearboxSDK {
268
288
  */
269
289
  async syncState(opts) {
270
290
  let { blockNumber, timestamp } = opts ?? {};
271
- if (!blockNumber) {
291
+ if (!blockNumber || !timestamp) {
272
292
  const block = await this.provider.publicClient.getBlock({
273
293
  blockTag: "latest"
274
294
  });
@@ -301,7 +321,7 @@ class GearboxSDK {
301
321
  await this.marketRegister.syncState();
302
322
  this.#currentBlock = blockNumber;
303
323
  this.#timestamp = timestamp;
304
- await this.#hooks.triggerHooks("syncState");
324
+ await this.#hooks.triggerHooks("syncState", { blockNumber, timestamp });
305
325
  this.#syncing = false;
306
326
  this.logger?.debug(`synced state to block ${blockNumber}`);
307
327
  }
@@ -310,49 +330,49 @@ class GearboxSDK {
310
330
  }
311
331
  get currentBlock() {
312
332
  if (this.#currentBlock === void 0) {
313
- throw new Error("Gearbox SDK not attached");
333
+ throw ERR_NOT_ATTACHED;
314
334
  }
315
335
  return this.#currentBlock;
316
336
  }
317
337
  get timestamp() {
318
338
  if (this.#timestamp === void 0) {
319
- throw new Error("Gearbox SDK not attached");
339
+ throw ERR_NOT_ATTACHED;
320
340
  }
321
341
  return this.#timestamp;
322
342
  }
323
343
  get gear() {
324
344
  if (this.#gear === void 0) {
325
- throw new Error("Gearbox SDK not attached");
345
+ throw ERR_NOT_ATTACHED;
326
346
  }
327
347
  return this.#gear;
328
348
  }
329
349
  get addressProvider() {
330
350
  if (this.#addressProvider === void 0) {
331
- throw new Error("Gearbox SDK not attached");
351
+ throw ERR_NOT_ATTACHED;
332
352
  }
333
353
  return this.#addressProvider;
334
354
  }
335
355
  get botListContract() {
336
356
  if (this.#botListContract === void 0) {
337
- throw new Error("Gearbox SDK not attached");
357
+ throw ERR_NOT_ATTACHED;
338
358
  }
339
359
  return this.#botListContract;
340
360
  }
341
361
  get gearStakingContract() {
342
362
  if (this.#gearStakingContract === void 0) {
343
- throw new Error("Gearbox SDK not attached");
363
+ throw ERR_NOT_ATTACHED;
344
364
  }
345
365
  return this.#gearStakingContract;
346
366
  }
347
367
  get marketRegister() {
348
368
  if (this.#marketRegister === void 0) {
349
- throw new Error("Gearbox SDK not attached");
369
+ throw ERR_NOT_ATTACHED;
350
370
  }
351
371
  return this.#marketRegister;
352
372
  }
353
373
  get router() {
354
374
  if (this.#router === void 0) {
355
- throw new Error("Gearbox SDK not attached");
375
+ throw ERR_NOT_ATTACHED;
356
376
  }
357
377
  return this.#router;
358
378
  }
@@ -34,7 +34,6 @@ class MarketRegister extends import_base.SDKConstruct {
34
34
  * Mapping pool.address -> MarketSuite
35
35
  */
36
36
  #markets = new import_utils.AddressMap(void 0, "markets");
37
- #zappers = new import_utils.AddressMap(void 0, "zappers");
38
37
  #marketFilter;
39
38
  constructor(sdk, markets) {
40
39
  super(sdk);
@@ -55,43 +54,6 @@ class MarketRegister extends import_base.SDKConstruct {
55
54
  }
56
55
  await this.#loadMarkets(marketConfigurators, [], ignoreUpdateablePrices);
57
56
  }
58
- async loadZappers() {
59
- const pcAddr = this.sdk.addressProvider.getAddress(
60
- import_constants.AP_PERIPHERY_COMPRESSOR,
61
- 310
62
- );
63
- this.#logger?.debug(`loading zappers with periphery compressor ${pcAddr}`);
64
- const resp = await this.provider.publicClient.multicall({
65
- contracts: this.markets.map((m) => ({
66
- abi: import_compressors.iPeripheryCompressorAbi,
67
- address: pcAddr,
68
- functionName: "getZappers",
69
- args: [m.configurator.address, m.pool.pool.address]
70
- })),
71
- allowFailure: true
72
- });
73
- for (let i = 0; i < resp.length; i++) {
74
- const { status, result, error } = resp[i];
75
- const marketConfigurator = this.markets[i].configurator.address;
76
- const pool = this.markets[i].pool.pool.address;
77
- if (status === "success") {
78
- const list = result;
79
- this.#zappers.upsert(
80
- pool,
81
- list.map((z) => ({ ...z, pool }))
82
- );
83
- } else {
84
- this.#logger?.error(
85
- `failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`
86
- );
87
- }
88
- }
89
- const zappersTokens = this.#zappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
90
- for (const t of zappersTokens) {
91
- this.sdk.tokensMeta.upsert(t.addr, t);
92
- this.sdk.provider.addressLabels.set(t.addr, t.symbol);
93
- }
94
- }
95
57
  get marketFilter() {
96
58
  return this.#marketFilter;
97
59
  }
@@ -192,16 +154,7 @@ class MarketRegister extends import_base.SDKConstruct {
192
154
  }
193
155
  stateHuman(raw = true) {
194
156
  return {
195
- markets: this.markets.map((market) => market.stateHuman(raw)),
196
- zappers: this.zappers.values().flatMap(
197
- (l) => l.flatMap((z) => ({
198
- address: z.baseParams.addr,
199
- contractType: z.baseParams.contractType,
200
- version: Number(z.baseParams.version),
201
- tokenIn: this.labelAddress(z.tokenIn.addr),
202
- tokenOut: this.labelAddress(z.tokenOut.addr)
203
- }))
204
- )
157
+ markets: this.markets.map((market) => market.stateHuman(raw))
205
158
  };
206
159
  }
207
160
  get pools() {
@@ -261,9 +214,6 @@ class MarketRegister extends import_base.SDKConstruct {
261
214
  get marketsMap() {
262
215
  return this.#markets;
263
216
  }
264
- get zappers() {
265
- return this.#zappers;
266
- }
267
217
  get markets() {
268
218
  return this.#markets.values();
269
219
  }
@@ -25,18 +25,18 @@ var import_utils = require("../../utils/index.js");
25
25
  var import_PlaceholderAdapterContracts = require("./PlaceholderAdapterContracts.js");
26
26
  function createAdapter(sdk, args) {
27
27
  const adapterType = (0, import_utils.bytes32ToString)(args.baseParams.contractType);
28
- for (const plugin of sdk.plugins) {
28
+ for (const [name, plugin] of Object.entries(sdk.plugins)) {
29
29
  try {
30
- const adapter = plugin.createContract(sdk, args);
30
+ const adapter = plugin.createContract?.(args);
31
31
  if (adapter) {
32
32
  sdk.logger?.info(
33
- ` ${adapterType} v${args.baseParams.version} created using plugin ${plugin.name}`
33
+ ` ${adapterType} v${args.baseParams.version} created using plugin ${name}`
34
34
  );
35
35
  return adapter;
36
36
  }
37
37
  } catch (e) {
38
38
  sdk.logger?.warn(
39
- `plugin ${plugin.name} error while trying to create ${adapterType} v${args.baseParams.version}: ${e}`
39
+ `plugin ${name} error while trying to create ${adapterType} v${args.baseParams.version}: ${e}`
40
40
  );
41
41
  }
42
42
  }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var GearboxZappersPlugin_exports = {};
20
+ __export(GearboxZappersPlugin_exports, {
21
+ GearboxZappersPlugin: () => GearboxZappersPlugin
22
+ });
23
+ module.exports = __toCommonJS(GearboxZappersPlugin_exports);
24
+ var import_compressors = require("../abi/compressors.js");
25
+ var import_sdk = require("../sdk/index.js");
26
+ var import_sdk2 = require("../sdk/index.js");
27
+ class GearboxZappersPlugin extends import_sdk.SDKConstruct {
28
+ #zappers;
29
+ async attach() {
30
+ await this.loadZappers();
31
+ }
32
+ async loadZappers() {
33
+ this.#zappers = new import_sdk2.AddressMap(void 0, "zappers");
34
+ const pcAddr = this.sdk.addressProvider.getAddress(
35
+ import_sdk.AP_PERIPHERY_COMPRESSOR,
36
+ 310
37
+ );
38
+ this.sdk.logger?.debug(
39
+ `loading zappers with periphery compressor ${pcAddr}`
40
+ );
41
+ const markets = this.sdk.marketRegister.markets;
42
+ const resp = await this.provider.publicClient.multicall({
43
+ contracts: markets.map((m) => ({
44
+ abi: import_compressors.iPeripheryCompressorAbi,
45
+ address: pcAddr,
46
+ functionName: "getZappers",
47
+ args: [m.configurator.address, m.pool.pool.address]
48
+ })),
49
+ allowFailure: true
50
+ });
51
+ for (let i = 0; i < resp.length; i++) {
52
+ const { status, result, error } = resp[i];
53
+ const marketConfigurator = markets[i].configurator.address;
54
+ const pool = markets[i].pool.pool.address;
55
+ if (status === "success") {
56
+ const list = result;
57
+ this.#zappers.upsert(
58
+ pool,
59
+ list.map((z) => ({ ...z, pool }))
60
+ );
61
+ } else {
62
+ this.sdk.logger?.error(
63
+ `failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`
64
+ );
65
+ }
66
+ }
67
+ const zappersTokens = this.#zappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
68
+ for (const t of zappersTokens) {
69
+ this.sdk.tokensMeta.upsert(t.addr, t);
70
+ this.sdk.provider.addressLabels.set(t.addr, t.symbol);
71
+ }
72
+ }
73
+ get zappers() {
74
+ if (!this.#zappers) {
75
+ throw new Error("zappers plugin not attached");
76
+ }
77
+ return this.#zappers;
78
+ }
79
+ stateHuman(raw) {
80
+ return this.zappers.values().flatMap(
81
+ (l) => l.flatMap((z) => ({
82
+ address: z.baseParams.addr,
83
+ contractType: z.baseParams.contractType,
84
+ version: Number(z.baseParams.version),
85
+ tokenIn: this.labelAddress(z.tokenIn.addr),
86
+ tokenOut: this.labelAddress(z.tokenOut.addr)
87
+ }))
88
+ );
89
+ }
90
+ }
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ GearboxZappersPlugin
94
+ });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var zappers_exports = {};
17
+ module.exports = __toCommonJS(zappers_exports);
18
+ __reExport(zappers_exports, require("./GearboxZappersPlugin.js"), module.exports);
19
+ __reExport(zappers_exports, require("./types.js"), module.exports);
20
+ // Annotate the CommonJS export names for ESM import in node:
21
+ 0 && (module.exports = {
22
+ ...require("./GearboxZappersPlugin.js"),
23
+ ...require("./types.js")
24
+ });
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);