@gearbox-protocol/sdk 14.12.0-next.1 → 14.12.0-next.2

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 (80) hide show
  1. package/dist/cjs/abi/iZapper.js +62 -24
  2. package/dist/cjs/preview/parse/errors.js +5 -2
  3. package/dist/cjs/preview/parse/parseOperationCalldata.js +30 -1
  4. package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +10 -2
  5. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +34 -0
  6. package/dist/cjs/preview/simulate/errors.js +0 -7
  7. package/dist/cjs/preview/simulate/index.js +0 -3
  8. package/dist/cjs/preview/simulate/simulatePoolOperation.js +154 -29
  9. package/dist/cjs/sdk/MultichainSDK.js +1 -0
  10. package/dist/cjs/sdk/OnchainSDK.js +7 -3
  11. package/dist/cjs/sdk/market/MarketRegister.js +10 -5
  12. package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
  13. package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  14. package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
  15. package/dist/cjs/sdk/market/zapper/ZapperContract.js +109 -0
  16. package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
  17. package/dist/cjs/{preview/simulate/constants.js → sdk/market/zapper/errors.js} +15 -6
  18. package/dist/cjs/sdk/market/zapper/index.js +6 -2
  19. package/dist/cjs/sdk/market/zapper/types.js +16 -0
  20. package/dist/cjs/sdk/options.js +41 -17
  21. package/dist/esm/abi/iZapper.js +62 -24
  22. package/dist/esm/preview/parse/errors.js +3 -1
  23. package/dist/esm/preview/parse/parseOperationCalldata.js +32 -2
  24. package/dist/esm/preview/parse/parsePoolOperationCalldata.js +10 -2
  25. package/dist/esm/preview/prerequisites/buildPrerequisites.js +34 -0
  26. package/dist/esm/preview/simulate/errors.js +0 -6
  27. package/dist/esm/preview/simulate/index.js +0 -2
  28. package/dist/esm/preview/simulate/simulatePoolOperation.js +155 -30
  29. package/dist/esm/sdk/MultichainSDK.js +1 -0
  30. package/dist/esm/sdk/OnchainSDK.js +7 -3
  31. package/dist/esm/sdk/market/MarketRegister.js +10 -5
  32. package/dist/esm/sdk/market/ZapperRegister.js +54 -0
  33. package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  34. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
  35. package/dist/esm/sdk/market/zapper/ZapperContract.js +85 -0
  36. package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
  37. package/dist/esm/sdk/market/zapper/errors.js +13 -0
  38. package/dist/esm/sdk/market/zapper/index.js +3 -1
  39. package/dist/esm/sdk/market/zapper/types.js +0 -0
  40. package/dist/esm/sdk/options.js +39 -15
  41. package/dist/types/abi/iERC20Zapper.d.ts +91 -23
  42. package/dist/types/abi/iETHZapper.d.ts +91 -23
  43. package/dist/types/abi/iZapper.d.ts +91 -23
  44. package/dist/types/preview/parse/errors.d.ts +1 -0
  45. package/dist/types/preview/parse/parseOperationCalldata.d.ts +3 -3
  46. package/dist/types/preview/parse/types-pools.d.ts +61 -1
  47. package/dist/types/preview/simulate/errors.d.ts +6 -12
  48. package/dist/types/preview/simulate/index.d.ts +0 -1
  49. package/dist/types/preview/simulate/simulatePoolOperation.d.ts +22 -4
  50. package/dist/types/preview/simulate/types.d.ts +3 -16
  51. package/dist/types/sdk/MultichainSDK.d.ts +5 -0
  52. package/dist/types/sdk/OnchainSDK.d.ts +4 -0
  53. package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
  54. package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
  55. package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
  56. package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
  57. package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
  58. package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
  59. package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
  60. package/dist/types/sdk/market/zapper/index.d.ts +3 -1
  61. package/dist/types/sdk/market/zapper/types.d.ts +64 -0
  62. package/dist/types/sdk/options.d.ts +10 -5
  63. package/dist/types/sdk/pools/types.d.ts +3 -3
  64. package/dist/types/sdk/types/state-human.d.ts +9 -0
  65. package/dist/types/sdk/types/state.d.ts +7 -0
  66. package/package.json +3 -3
  67. package/dist/cjs/preview/simulate/extractERC20Transfers.js +0 -47
  68. package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +0 -155
  69. package/dist/cjs/preview/simulate/simulatePoolOpV1.js +0 -106
  70. package/dist/cjs/sdk/market/zapper/Zapper.js +0 -47
  71. package/dist/esm/preview/simulate/constants.js +0 -4
  72. package/dist/esm/preview/simulate/extractERC20Transfers.js +0 -23
  73. package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +0 -130
  74. package/dist/esm/preview/simulate/simulatePoolOpV1.js +0 -82
  75. package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
  76. package/dist/types/preview/simulate/constants.d.ts +0 -6
  77. package/dist/types/preview/simulate/extractERC20Transfers.d.ts +0 -11
  78. package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +0 -28
  79. package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +0 -14
  80. package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
@@ -75,6 +75,60 @@ class ZapperRegister extends import_base.SDKConstruct {
75
75
  }
76
76
  }
77
77
  }
78
+ /**
79
+ * Serializable snapshot of all loaded zappers, suitable for hydration.
80
+ * Returns `undefined` when zappers were never loaded (i.e. `loadZappers` was
81
+ * not called), so the not-loaded state round-trips cleanly.
82
+ **/
83
+ get zappersState() {
84
+ if (!this.#zappers) {
85
+ return void 0;
86
+ }
87
+ return this.#zappers.values().flatMap(
88
+ (zappers) => zappers.map((z) => ({
89
+ pool: z.pool,
90
+ type: z.type,
91
+ baseParams: z.baseParams,
92
+ tokenIn: z.tokenIn,
93
+ tokenOut: z.tokenOut
94
+ }))
95
+ );
96
+ }
97
+ /**
98
+ * Restores zapper state from a previously serialized snapshot,
99
+ * bypassing on-chain reads.
100
+ * @param state - Array of zapper data snapshots, or `undefined` when zappers
101
+ * were not loaded in the snapshot (leaves the registry in the not-loaded state).
102
+ **/
103
+ hydrateZappers(state) {
104
+ if (!state) {
105
+ return;
106
+ }
107
+ this.#zappers = new import_utils.AddressMap(void 0, "zappers");
108
+ for (const z of state) {
109
+ this.#addZapper(z);
110
+ }
111
+ }
112
+ /**
113
+ * Returns a human-readable snapshot of all loaded zappers.
114
+ * Returns `undefined` when zappers were never loaded.
115
+ * @param raw - When `true`, includes raw/unformatted values.
116
+ **/
117
+ zappersStateHuman(_ = true) {
118
+ if (!this.#zappers) {
119
+ return void 0;
120
+ }
121
+ return this.#zappers.values().flatMap(
122
+ (zappers) => zappers.map((z) => ({
123
+ address: this.labelAddress(z.baseParams.addr),
124
+ contractType: z.contractType,
125
+ type: z.type,
126
+ pool: this.labelAddress(z.pool),
127
+ tokenIn: this.sdk.labelAddress(z.tokenIn.addr),
128
+ tokenOut: this.sdk.labelAddress(z.tokenOut.addr)
129
+ }))
130
+ );
131
+ }
78
132
  #addZapper(z) {
79
133
  const zapper = (0, import_zapper.createZapper)(this.sdk, z);
80
134
  const existing = this.zappers.get(z.pool);
@@ -22,27 +22,11 @@ __export(IERC20ZapperContract_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(IERC20ZapperContract_exports);
24
24
  var import_iERC20Zapper = require("../../../abi/iERC20Zapper.js");
25
- var import_base = require("../../base/index.js");
25
+ var import_ZapperContract = require("./ZapperContract.js");
26
26
  const abi = import_iERC20Zapper.ierc20ZapperAbi;
27
- class IERC20ZapperContract extends import_base.BaseContract {
28
- pool;
29
- type;
30
- baseParams;
31
- tokenIn;
32
- tokenOut;
27
+ class IERC20ZapperContract extends import_ZapperContract.ZapperContract {
33
28
  constructor(sdk, data) {
34
- super(sdk, {
35
- addr: data.baseParams.addr,
36
- abi,
37
- name: `ERC20Zapper(${sdk.labelAddress(data.baseParams.addr)})`,
38
- version: data.baseParams.version,
39
- contractType: data.baseParams.contractType
40
- });
41
- this.pool = data.pool;
42
- this.type = data.type;
43
- this.baseParams = data.baseParams;
44
- this.tokenIn = data.tokenIn;
45
- this.tokenOut = data.tokenOut;
29
+ super(sdk, data, abi, "ERC20Zapper");
46
30
  }
47
31
  /**
48
32
  * Deposits ERC20 tokens into the pool via this zapper.
@@ -72,25 +56,6 @@ class IERC20ZapperContract extends import_base.BaseContract {
72
56
  args: [tokenInAmount, receiver, referralCode, deadline, v, r, s]
73
57
  });
74
58
  }
75
- /**
76
- * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
77
- */
78
- redeem(tokenInAmount, receiver) {
79
- return this.createRawTx({
80
- functionName: "redeem",
81
- args: [tokenInAmount, receiver]
82
- });
83
- }
84
- /**
85
- * Redeems pool shares via this zapper with an EIP-2612 permit signature,
86
- * skipping a separate approve transaction.
87
- */
88
- redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
89
- return this.createRawTx({
90
- functionName: "redeemWithPermit",
91
- args: [tokenInAmount, receiver, deadline, v, r, s]
92
- });
93
- }
94
59
  }
95
60
  // Annotate the CommonJS export names for ESM import in node:
96
61
  0 && (module.exports = {
@@ -22,27 +22,11 @@ __export(IETHZapperContract_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(IETHZapperContract_exports);
24
24
  var import_iETHZapper = require("../../../abi/iETHZapper.js");
25
- var import_base = require("../../base/index.js");
25
+ var import_ZapperContract = require("./ZapperContract.js");
26
26
  const abi = import_iETHZapper.iethZapperAbi;
27
- class IETHZapperContract extends import_base.BaseContract {
28
- pool;
29
- type;
30
- baseParams;
31
- tokenIn;
32
- tokenOut;
27
+ class IETHZapperContract extends import_ZapperContract.ZapperContract {
33
28
  constructor(sdk, data) {
34
- super(sdk, {
35
- addr: data.baseParams.addr,
36
- abi,
37
- name: `ETHZapper(${sdk.labelAddress(data.baseParams.addr)})`,
38
- version: data.baseParams.version,
39
- contractType: data.baseParams.contractType
40
- });
41
- this.pool = data.pool;
42
- this.type = data.type;
43
- this.baseParams = data.baseParams;
44
- this.tokenIn = data.tokenIn;
45
- this.tokenOut = data.tokenOut;
29
+ super(sdk, data, abi, "ETHZapper");
46
30
  }
47
31
  /**
48
32
  * Deposits native ETH into the pool via this zapper.
@@ -63,25 +47,6 @@ class IETHZapperContract extends import_base.BaseContract {
63
47
  args: [receiver, referralCode]
64
48
  });
65
49
  }
66
- /**
67
- * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
68
- */
69
- redeem(tokenInAmount, receiver) {
70
- return this.createRawTx({
71
- functionName: "redeem",
72
- args: [tokenInAmount, receiver]
73
- });
74
- }
75
- /**
76
- * Redeems pool shares via this zapper with an EIP-2612 permit signature,
77
- * skipping a separate approve transaction.
78
- */
79
- redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
80
- return this.createRawTx({
81
- functionName: "redeemWithPermit",
82
- args: [tokenInAmount, receiver, deadline, v, r, s]
83
- });
84
- }
85
50
  }
86
51
  // Annotate the CommonJS export names for ESM import in node:
87
52
  0 && (module.exports = {
@@ -0,0 +1,109 @@
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 ZapperContract_exports = {};
20
+ __export(ZapperContract_exports, {
21
+ ZapperContract: () => ZapperContract
22
+ });
23
+ module.exports = __toCommonJS(ZapperContract_exports);
24
+ var import_iZapper = require("../../../abi/iZapper.js");
25
+ var import_base = require("../../base/index.js");
26
+ var import_errors = require("./errors.js");
27
+ class ZapperContract extends import_base.BaseContract {
28
+ sdk;
29
+ pool;
30
+ type;
31
+ baseParams;
32
+ tokenIn;
33
+ tokenOut;
34
+ constructor(sdk, data, abi = import_iZapper.iZapperAbi, namePrefix = "Zapper") {
35
+ super(sdk, {
36
+ addr: data.baseParams.addr,
37
+ abi,
38
+ name: `${namePrefix}(${sdk.labelAddress(data.baseParams.addr)})`,
39
+ version: data.baseParams.version,
40
+ contractType: data.baseParams.contractType
41
+ });
42
+ this.sdk = sdk;
43
+ this.pool = data.pool;
44
+ this.type = data.type;
45
+ this.baseParams = data.baseParams;
46
+ this.tokenIn = data.tokenIn;
47
+ this.tokenOut = data.tokenOut;
48
+ }
49
+ /**
50
+ * Decodes zapper calldata into {@link ParsedZapperOperation}.
51
+ * Throws {@link UnsupportedZapperFunctionError} for unknown selectors.
52
+ */
53
+ parseOperation(calldata, value) {
54
+ const parsed = this.parseFunctionDataV2(calldata);
55
+ const { rawArgs } = parsed;
56
+ const pool = this.pool;
57
+ const zapper = this.address;
58
+ const token = this.tokenIn.addr;
59
+ const underlying = this.sdk.marketRegister.findByPool(pool).underlying;
60
+ const receiver = rawArgs.receiver;
61
+ if (parsed.functionName.startsWith("deposit")) {
62
+ return {
63
+ operation: "Deposit",
64
+ pool,
65
+ zapper,
66
+ receiver,
67
+ assets: rawArgs.tokenInAmount ?? value ?? 0n,
68
+ token,
69
+ underlying,
70
+ referralCode: rawArgs.referralCode
71
+ };
72
+ }
73
+ if (parsed.functionName.startsWith("redeem")) {
74
+ return {
75
+ operation: "Redeem",
76
+ pool,
77
+ zapper,
78
+ receiver,
79
+ shares: rawArgs.tokenOutAmount,
80
+ token,
81
+ underlying
82
+ };
83
+ }
84
+ throw new import_errors.UnsupportedZapperFunctionError(zapper, parsed.functionName);
85
+ }
86
+ /**
87
+ * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
88
+ */
89
+ redeem(tokenInAmount, receiver) {
90
+ return this.createRawTx({
91
+ functionName: "redeem",
92
+ args: [tokenInAmount, receiver]
93
+ });
94
+ }
95
+ /**
96
+ * Redeems pool shares via this zapper with an EIP-2612 permit signature,
97
+ * skipping a separate approve transaction.
98
+ */
99
+ redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
100
+ return this.createRawTx({
101
+ functionName: "redeemWithPermit",
102
+ args: [tokenInAmount, receiver, deadline, v, r, s]
103
+ });
104
+ }
105
+ }
106
+ // Annotate the CommonJS export names for ESM import in node:
107
+ 0 && (module.exports = {
108
+ ZapperContract
109
+ });
@@ -21,23 +21,31 @@ __export(createZapper_exports, {
21
21
  createZapper: () => createZapper
22
22
  });
23
23
  module.exports = __toCommonJS(createZapper_exports);
24
+ var import_utils = require("../../utils/index.js");
24
25
  var import_IERC20ZapperContract = require("./IERC20ZapperContract.js");
25
26
  var import_IETHZapperContract = require("./IETHZapperContract.js");
26
- var import_Zapper = require("./Zapper.js");
27
+ var import_ZapperContract = require("./ZapperContract.js");
27
28
  function createZapper(sdk, data) {
29
+ const existing = sdk.getContract(data.baseParams.addr);
30
+ if (existing) {
31
+ return existing;
32
+ }
28
33
  if (data.type === "base") {
29
- const contractType = import_Zapper.Zapper.contractType(data.baseParams);
34
+ const contractType = (0, import_utils.bytes32ToString)(data.baseParams.contractType);
30
35
  switch (contractType) {
31
36
  case "ZAPPER::ERC4626_UNDERLYING":
32
37
  return new import_IERC20ZapperContract.IERC20ZapperContract(sdk, data);
33
38
  case "ZAPPER::WETH_DEPOSIT":
34
39
  return new import_IETHZapperContract.IETHZapperContract(sdk, data);
35
40
  default:
41
+ if (sdk.strictContractTypes) {
42
+ throw new Error(`Unknown zapper contract type: ${contractType}`);
43
+ }
36
44
  sdk.logger?.warn(`Unknown zapper contract type: ${contractType}`);
37
- return new import_Zapper.Zapper(data);
45
+ return new import_ZapperContract.ZapperContract(sdk, data);
38
46
  }
39
47
  }
40
- return new import_Zapper.Zapper(data);
48
+ return new import_ZapperContract.ZapperContract(sdk, data);
41
49
  }
42
50
  // Annotate the CommonJS export names for ESM import in node:
43
51
  0 && (module.exports = {
@@ -16,13 +16,22 @@ 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 constants_exports = {};
20
- __export(constants_exports, {
21
- ETH_SIMULATE_V1_NETWORKS: () => ETH_SIMULATE_V1_NETWORKS
19
+ var errors_exports = {};
20
+ __export(errors_exports, {
21
+ UnsupportedZapperFunctionError: () => UnsupportedZapperFunctionError
22
22
  });
23
- module.exports = __toCommonJS(constants_exports);
24
- const ETH_SIMULATE_V1_NETWORKS = /* @__PURE__ */ new Set(["Mainnet", "Plasma", "Somnia"]);
23
+ module.exports = __toCommonJS(errors_exports);
24
+ class UnsupportedZapperFunctionError extends Error {
25
+ zapper;
26
+ functionName;
27
+ constructor(zapper, functionName) {
28
+ super(`unsupported zapper function "${functionName}" on ${zapper}`);
29
+ this.name = "UnsupportedZapperFunctionError";
30
+ this.zapper = zapper;
31
+ this.functionName = functionName;
32
+ }
33
+ }
25
34
  // Annotate the CommonJS export names for ESM import in node:
26
35
  0 && (module.exports = {
27
- ETH_SIMULATE_V1_NETWORKS
36
+ UnsupportedZapperFunctionError
28
37
  });
@@ -16,13 +16,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
16
16
  var zapper_exports = {};
17
17
  module.exports = __toCommonJS(zapper_exports);
18
18
  __reExport(zapper_exports, require("./createZapper.js"), module.exports);
19
+ __reExport(zapper_exports, require("./errors.js"), module.exports);
19
20
  __reExport(zapper_exports, require("./IERC20ZapperContract.js"), module.exports);
20
21
  __reExport(zapper_exports, require("./IETHZapperContract.js"), module.exports);
21
- __reExport(zapper_exports, require("./Zapper.js"), module.exports);
22
+ __reExport(zapper_exports, require("./types.js"), module.exports);
23
+ __reExport(zapper_exports, require("./ZapperContract.js"), module.exports);
22
24
  // Annotate the CommonJS export names for ESM import in node:
23
25
  0 && (module.exports = {
24
26
  ...require("./createZapper.js"),
27
+ ...require("./errors.js"),
25
28
  ...require("./IERC20ZapperContract.js"),
26
29
  ...require("./IETHZapperContract.js"),
27
- ...require("./Zapper.js")
30
+ ...require("./types.js"),
31
+ ...require("./ZapperContract.js")
28
32
  });
@@ -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);
@@ -18,19 +18,25 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var options_exports = {};
20
20
  __export(options_exports, {
21
- AttachOptionsSchema: () => AttachOptionsSchema,
22
- OnchainSDKOptionsSchema: () => OnchainSDKOptionsSchema
21
+ attachOptionsSchema: () => attachOptionsSchema,
22
+ onchainSDKOptionsSchema: () => onchainSDKOptionsSchema
23
23
  });
24
24
  module.exports = __toCommonJS(options_exports);
25
25
  var import_v4 = require("zod/v4");
26
26
  var import_updates = require("./market/pricefeeds/updates/index.js");
27
27
  var import_utils = require("./utils/index.js");
28
- const OnchainSDKOptionsSchema = import_v4.z.object({
29
- /** When `true`, throw on unrecognised contract types. */
28
+ const onchainSDKOptionsSchema = import_v4.z.object({
29
+ /**
30
+ * When `true`, throw on unrecognised contract types.
31
+ **/
30
32
  strictContractTypes: import_v4.z.boolean().optional(),
31
- /** Plugins that extend SDK functionality. */
33
+ /**
34
+ * Plugins that extend SDK functionality.
35
+ **/
32
36
  plugins: import_v4.z.record(import_v4.z.string(), import_v4.z.any()).optional(),
33
- /** Custom logger implementation. */
37
+ /**
38
+ * Custom logger implementation.
39
+ **/
34
40
  logger: import_v4.z.any(),
35
41
  /**
36
42
  * Explicit gas limit for read-only `eth_call` requests.
@@ -39,10 +45,14 @@ const OnchainSDKOptionsSchema = import_v4.z.object({
39
45
  **/
40
46
  gasLimit: import_v4.z.bigint().nonnegative().nullable().optional()
41
47
  });
42
- const AttachOptionsSchema = import_v4.z.object({
43
- /** Override address of the Gearbox AddressProvider contract. */
48
+ const attachOptionsSchema = import_v4.z.object({
49
+ /**
50
+ * Override address of the Gearbox AddressProvider contract.
51
+ **/
44
52
  addressProvider: (0, import_utils.ZodAddress)().optional(),
45
- /** Addresses of market configurator contracts to load. */
53
+ /**
54
+ * Addresses of market configurator contracts to load.
55
+ **/
46
56
  marketConfigurators: import_v4.z.array((0, import_utils.ZodAddress)()).optional(),
47
57
  /**
48
58
  * Addresses of RWA factory contracts to load.
@@ -50,19 +60,33 @@ const AttachOptionsSchema = import_v4.z.object({
50
60
  * (from {@link GearboxChain.rwaFactories})
51
61
  **/
52
62
  rwaFactories: import_v4.z.array((0, import_utils.ZodAddress)()).optional(),
53
- /** Pin SDK to a specific block number during attach. */
63
+ /**
64
+ * Pin SDK to a specific block number during attach.
65
+ **/
54
66
  blockNumber: import_v4.z.union([import_v4.z.bigint().nonnegative(), import_v4.z.number().int().nonnegative()]).optional(),
55
- /** Skip fetching updatable price feeds on attach and sync. */
67
+ /**
68
+ * Skip fetching updatable price feeds on attach and sync.
69
+ **/
56
70
  ignoreUpdateablePrices: import_v4.z.boolean().optional(),
57
- /** Pool addresses whose markets should be skipped. */
71
+ /**
72
+ * Pool addresses whose markets should be skipped.
73
+ **/
58
74
  ignoreMarkets: import_v4.z.array((0, import_utils.ZodAddress)()).optional(),
59
- /** Options for Redstone price-feed updates. */
75
+ /**
76
+ * Options for Redstone price-feed updates.
77
+ **/
60
78
  redstone: import_updates.RedstoneOptions.optional(),
61
- /** Options for Pyth price-feed updates. */
62
- pyth: import_updates.PythOptions.optional()
79
+ /**
80
+ * Options for Pyth price-feed updates.
81
+ **/
82
+ pyth: import_updates.PythOptions.optional(),
83
+ /**
84
+ * When `true`, automatically load zappers during attach.
85
+ **/
86
+ loadZappers: import_v4.z.boolean().optional()
63
87
  });
64
88
  // Annotate the CommonJS export names for ESM import in node:
65
89
  0 && (module.exports = {
66
- AttachOptionsSchema,
67
- OnchainSDKOptionsSchema
90
+ attachOptionsSchema,
91
+ onchainSDKOptionsSchema
68
92
  });
@@ -1,80 +1,118 @@
1
1
  const iZapperAbi = [
2
2
  {
3
3
  type: "function",
4
+ name: "contractType",
4
5
  inputs: [],
6
+ outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
7
+ stateMutability: "view"
8
+ },
9
+ {
10
+ type: "function",
5
11
  name: "pool",
6
- outputs: [{ name: "", internalType: "address", type: "address" }],
12
+ inputs: [],
13
+ outputs: [{ name: "", type: "address", internalType: "address" }],
7
14
  stateMutability: "view"
8
15
  },
9
16
  {
10
17
  type: "function",
18
+ name: "previewDeposit",
11
19
  inputs: [
12
- { name: "tokenInAmount", internalType: "uint256", type: "uint256" }
20
+ { name: "tokenInAmount", type: "uint256", internalType: "uint256" }
13
21
  ],
14
- name: "previewDeposit",
15
22
  outputs: [
16
- { name: "tokenOutAmount", internalType: "uint256", type: "uint256" }
23
+ { name: "tokenOutAmount", type: "uint256", internalType: "uint256" }
17
24
  ],
18
25
  stateMutability: "view"
19
26
  },
20
27
  {
21
28
  type: "function",
29
+ name: "previewRedeem",
22
30
  inputs: [
23
- { name: "tokenOutAmount", internalType: "uint256", type: "uint256" }
31
+ { name: "tokenOutAmount", type: "uint256", internalType: "uint256" }
24
32
  ],
25
- name: "previewRedeem",
26
33
  outputs: [
27
- { name: "tokenInAmount", internalType: "uint256", type: "uint256" }
34
+ { name: "tokenInAmount", type: "uint256", internalType: "uint256" }
28
35
  ],
29
36
  stateMutability: "view"
30
37
  },
31
38
  {
32
39
  type: "function",
40
+ name: "redeem",
33
41
  inputs: [
34
- { name: "tokenOutAmount", internalType: "uint256", type: "uint256" },
35
- { name: "receiver", internalType: "address", type: "address" }
42
+ { name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
43
+ { name: "receiver", type: "address", internalType: "address" }
36
44
  ],
37
- name: "redeem",
38
45
  outputs: [
39
- { name: "tokenInAmount", internalType: "uint256", type: "uint256" }
46
+ { name: "tokenInAmount", type: "uint256", internalType: "uint256" }
40
47
  ],
41
48
  stateMutability: "nonpayable"
42
49
  },
43
50
  {
44
51
  type: "function",
52
+ name: "redeemWithPermit",
45
53
  inputs: [
46
- { name: "tokenOutAmount", internalType: "uint256", type: "uint256" },
47
- { name: "receiver", internalType: "address", type: "address" },
48
- { name: "deadline", internalType: "uint256", type: "uint256" },
49
- { name: "v", internalType: "uint8", type: "uint8" },
50
- { name: "r", internalType: "bytes32", type: "bytes32" },
51
- { name: "s", internalType: "bytes32", type: "bytes32" }
54
+ { name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
55
+ { name: "receiver", type: "address", internalType: "address" },
56
+ { name: "deadline", type: "uint256", internalType: "uint256" },
57
+ { name: "v", type: "uint8", internalType: "uint8" },
58
+ { name: "r", type: "bytes32", internalType: "bytes32" },
59
+ { name: "s", type: "bytes32", internalType: "bytes32" }
52
60
  ],
53
- name: "redeemWithPermit",
54
61
  outputs: [
55
- { name: "tokenInAmount", internalType: "uint256", type: "uint256" }
62
+ { name: "tokenInAmount", type: "uint256", internalType: "uint256" }
56
63
  ],
57
64
  stateMutability: "nonpayable"
58
65
  },
59
66
  {
60
67
  type: "function",
68
+ name: "redeemWithPermitAllowed",
69
+ inputs: [
70
+ { name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
71
+ { name: "receiver", type: "address", internalType: "address" },
72
+ { name: "nonce", type: "uint256", internalType: "uint256" },
73
+ { name: "expiry", type: "uint256", internalType: "uint256" },
74
+ { name: "v", type: "uint8", internalType: "uint8" },
75
+ { name: "r", type: "bytes32", internalType: "bytes32" },
76
+ { name: "s", type: "bytes32", internalType: "bytes32" }
77
+ ],
78
+ outputs: [
79
+ { name: "tokenInAmount", type: "uint256", internalType: "uint256" }
80
+ ],
81
+ stateMutability: "nonpayable"
82
+ },
83
+ {
84
+ type: "function",
85
+ name: "serialize",
61
86
  inputs: [],
62
- name: "tokenIn",
63
- outputs: [{ name: "", internalType: "address", type: "address" }],
87
+ outputs: [{ name: "serializedData", type: "bytes", internalType: "bytes" }],
64
88
  stateMutability: "view"
65
89
  },
66
90
  {
67
91
  type: "function",
92
+ name: "tokenIn",
68
93
  inputs: [],
69
- name: "tokenOut",
70
- outputs: [{ name: "", internalType: "address", type: "address" }],
94
+ outputs: [{ name: "", type: "address", internalType: "address" }],
71
95
  stateMutability: "view"
72
96
  },
73
97
  {
74
98
  type: "function",
99
+ name: "tokenOut",
75
100
  inputs: [],
101
+ outputs: [{ name: "", type: "address", internalType: "address" }],
102
+ stateMutability: "view"
103
+ },
104
+ {
105
+ type: "function",
76
106
  name: "underlying",
77
- outputs: [{ name: "", internalType: "address", type: "address" }],
107
+ inputs: [],
108
+ outputs: [{ name: "", type: "address", internalType: "address" }],
109
+ stateMutability: "view"
110
+ },
111
+ {
112
+ type: "function",
113
+ name: "version",
114
+ inputs: [],
115
+ outputs: [{ name: "", type: "uint256", internalType: "uint256" }],
78
116
  stateMutability: "view"
79
117
  }
80
118
  ];
@@ -1,3 +1,4 @@
1
+ import { UnsupportedZapperFunctionError } from "../../sdk/index.js";
1
2
  class UnsupportedTargetError extends Error {
2
3
  target;
3
4
  constructor(target) {
@@ -18,5 +19,6 @@ class UnsupportedPoolFunctionError extends Error {
18
19
  }
19
20
  export {
20
21
  UnsupportedPoolFunctionError,
21
- UnsupportedTargetError
22
+ UnsupportedTargetError,
23
+ UnsupportedZapperFunctionError
22
24
  };