@gearbox-protocol/sdk 14.10.3-next.1 → 14.10.3-next.3

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 (33) hide show
  1. package/dist/cjs/abi/iERC20Zapper.js +33 -0
  2. package/dist/cjs/abi/iETHZapper.js +30 -0
  3. package/dist/cjs/sdk/market/ZapperRegister.js +5 -3
  4. package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +98 -0
  5. package/dist/cjs/sdk/market/zapper/{IZapperContract.js → IETHZapperContract.js} +45 -10
  6. package/dist/cjs/sdk/market/zapper/{IETHZapperDepositsContract.js → Zapper.js} +22 -20
  7. package/dist/cjs/sdk/market/zapper/createZapper.js +45 -0
  8. package/dist/cjs/sdk/market/zapper/index.js +8 -6
  9. package/dist/cjs/sdk/pools/PoolService.js +9 -21
  10. package/dist/esm/abi/iERC20Zapper.js +9 -0
  11. package/dist/esm/abi/iETHZapper.js +6 -0
  12. package/dist/esm/sdk/market/ZapperRegister.js +5 -3
  13. package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +74 -0
  14. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +65 -0
  15. package/dist/esm/sdk/market/zapper/Zapper.js +23 -0
  16. package/dist/esm/sdk/market/zapper/createZapper.js +21 -0
  17. package/dist/esm/sdk/market/zapper/index.js +4 -3
  18. package/dist/esm/sdk/pools/PoolService.js +11 -24
  19. package/dist/types/{sdk/market/zapper/IERC20ZapperDepositsContract.d.ts → abi/iERC20Zapper.d.ts} +121 -19
  20. package/dist/types/{sdk/market/zapper/IZapperContract.d.ts → abi/iETHZapper.d.ts} +33 -19
  21. package/dist/types/sdk/market/ZapperRegister.d.ts +4 -4
  22. package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +350 -0
  23. package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +186 -0
  24. package/dist/types/sdk/market/zapper/Zapper.d.ts +13 -0
  25. package/dist/types/sdk/market/zapper/createZapper.d.ts +6 -0
  26. package/dist/types/sdk/market/zapper/index.d.ts +4 -3
  27. package/dist/types/sdk/pools/types.d.ts +3 -3
  28. package/package.json +1 -1
  29. package/dist/cjs/sdk/market/zapper/IERC20ZapperDepositsContract.js +0 -54
  30. package/dist/esm/sdk/market/zapper/IERC20ZapperDepositsContract.js +0 -30
  31. package/dist/esm/sdk/market/zapper/IETHZapperDepositsContract.js +0 -21
  32. package/dist/esm/sdk/market/zapper/IZapperContract.js +0 -30
  33. package/dist/types/sdk/market/zapper/IETHZapperDepositsContract.d.ts +0 -47
@@ -0,0 +1,33 @@
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 iERC20Zapper_exports = {};
20
+ __export(iERC20Zapper_exports, {
21
+ ierc20ZapperAbi: () => ierc20ZapperAbi
22
+ });
23
+ module.exports = __toCommonJS(iERC20Zapper_exports);
24
+ var import_iERC20ZapperDeposits = require("./iERC20ZapperDeposits.js");
25
+ var import_iZapper = require("./iZapper.js");
26
+ const ierc20ZapperAbi = [
27
+ ...import_iERC20ZapperDeposits.ierc20ZapperDepositsAbi,
28
+ ...import_iZapper.iZapperAbi
29
+ ];
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ ierc20ZapperAbi
33
+ });
@@ -0,0 +1,30 @@
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 iETHZapper_exports = {};
20
+ __export(iETHZapper_exports, {
21
+ iethZapperAbi: () => iethZapperAbi
22
+ });
23
+ module.exports = __toCommonJS(iETHZapper_exports);
24
+ var import_iETHZapperDeposits = require("./iETHZapperDeposits.js");
25
+ var import_iZapper = require("./iZapper.js");
26
+ const iethZapperAbi = [...import_iETHZapperDeposits.iethZapperDepositsAbi, ...import_iZapper.iZapperAbi];
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ iethZapperAbi
30
+ });
@@ -25,9 +25,10 @@ var import_peripheryCompressor = require("../../abi/compressors/peripheryCompres
25
25
  var import_base = require("../base/index.js");
26
26
  var import_constants = require("../constants/index.js");
27
27
  var import_utils = require("../utils/index.js");
28
+ var import_zapper = require("./zapper/index.js");
28
29
  class ZapperRegister extends import_base.SDKConstruct {
29
30
  /**
30
- * Mapping pool.address -> ZapperData[]
31
+ * Mapping pool.address -> Zapper[]
31
32
  * Needs to be loaded explicitly using loadZappers method
32
33
  */
33
34
  #zappers;
@@ -75,16 +76,17 @@ class ZapperRegister extends import_base.SDKConstruct {
75
76
  }
76
77
  }
77
78
  #addZapper(z) {
79
+ const zapper = (0, import_zapper.createZapper)(this.sdk, z);
78
80
  const existing = this.zappers.get(z.pool);
79
81
  if (existing) {
80
82
  const hasZapper = existing.some(
81
83
  (zz) => (0, import_utils.hexEq)(zz.baseParams.addr, z.baseParams.addr)
82
84
  );
83
85
  if (!hasZapper) {
84
- existing.push(z);
86
+ existing.push(zapper);
85
87
  }
86
88
  } else {
87
- this.zappers.upsert(z.pool, [z]);
89
+ this.zappers.upsert(z.pool, [zapper]);
88
90
  }
89
91
  const zappersTokens = [z.tokenIn, z.tokenOut];
90
92
  for (const t of zappersTokens) {
@@ -0,0 +1,98 @@
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 IERC20ZapperContract_exports = {};
20
+ __export(IERC20ZapperContract_exports, {
21
+ IERC20ZapperContract: () => IERC20ZapperContract
22
+ });
23
+ module.exports = __toCommonJS(IERC20ZapperContract_exports);
24
+ var import_iERC20Zapper = require("../../../abi/iERC20Zapper.js");
25
+ var import_base = require("../../base/index.js");
26
+ const abi = import_iERC20Zapper.ierc20ZapperAbi;
27
+ class IERC20ZapperContract extends import_base.BaseContract {
28
+ pool;
29
+ type;
30
+ baseParams;
31
+ tokenIn;
32
+ tokenOut;
33
+ 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;
46
+ }
47
+ /**
48
+ * Deposits ERC20 tokens into the pool via this zapper.
49
+ */
50
+ deposit(tokenInAmount, receiver) {
51
+ return this.createRawTx({
52
+ functionName: "deposit",
53
+ args: [tokenInAmount, receiver]
54
+ });
55
+ }
56
+ /**
57
+ * Deposits ERC20 tokens into the pool via this zapper using a referral code.
58
+ */
59
+ depositWithReferral(tokenInAmount, receiver, referralCode) {
60
+ return this.createRawTx({
61
+ functionName: "depositWithReferral",
62
+ args: [tokenInAmount, receiver, referralCode]
63
+ });
64
+ }
65
+ /**
66
+ * Deposits ERC20 tokens via this zapper with a referral code and an
67
+ * EIP-2612 permit signature, skipping a separate approve transaction.
68
+ */
69
+ depositWithReferralAndPermit(tokenInAmount, receiver, referralCode, deadline, v, r, s) {
70
+ return this.createRawTx({
71
+ functionName: "depositWithReferralAndPermit",
72
+ args: [tokenInAmount, receiver, referralCode, deadline, v, r, s]
73
+ });
74
+ }
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
+ }
95
+ // Annotate the CommonJS export names for ESM import in node:
96
+ 0 && (module.exports = {
97
+ IERC20ZapperContract
98
+ });
@@ -16,17 +16,52 @@ 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 IZapperContract_exports = {};
20
- __export(IZapperContract_exports, {
21
- IZapperContract: () => IZapperContract
19
+ var IETHZapperContract_exports = {};
20
+ __export(IETHZapperContract_exports, {
21
+ IETHZapperContract: () => IETHZapperContract
22
22
  });
23
- module.exports = __toCommonJS(IZapperContract_exports);
24
- var import_iZapper = require("../../../abi/iZapper.js");
23
+ module.exports = __toCommonJS(IETHZapperContract_exports);
24
+ var import_iETHZapper = require("../../../abi/iETHZapper.js");
25
25
  var import_base = require("../../base/index.js");
26
- const abi = import_iZapper.iZapperAbi;
27
- class IZapperContract extends import_base.BaseContract {
28
- constructor(options, args) {
29
- super(options, { ...args, abi });
26
+ const abi = import_iETHZapper.iethZapperAbi;
27
+ class IETHZapperContract extends import_base.BaseContract {
28
+ pool;
29
+ type;
30
+ baseParams;
31
+ tokenIn;
32
+ tokenOut;
33
+ 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;
46
+ }
47
+ /**
48
+ * Deposits native ETH into the pool via this zapper.
49
+ */
50
+ deposit(receiver) {
51
+ return this.createRawTx({
52
+ functionName: "deposit",
53
+ args: [receiver]
54
+ });
55
+ }
56
+ /**
57
+ * Deposits native ETH into the pool via this zapper using a referral code.
58
+ * The caller must attach the deposit amount as msg.value.
59
+ */
60
+ depositWithReferral(receiver, referralCode) {
61
+ return this.createRawTx({
62
+ functionName: "depositWithReferral",
63
+ args: [receiver, referralCode]
64
+ });
30
65
  }
31
66
  /**
32
67
  * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
@@ -50,5 +85,5 @@ class IZapperContract extends import_base.BaseContract {
50
85
  }
51
86
  // Annotate the CommonJS export names for ESM import in node:
52
87
  0 && (module.exports = {
53
- IZapperContract
88
+ IETHZapperContract
54
89
  });
@@ -16,30 +16,32 @@ 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 IETHZapperDepositsContract_exports = {};
20
- __export(IETHZapperDepositsContract_exports, {
21
- IETHZapperDepositsContract: () => IETHZapperDepositsContract
19
+ var Zapper_exports = {};
20
+ __export(Zapper_exports, {
21
+ Zapper: () => Zapper
22
22
  });
23
- module.exports = __toCommonJS(IETHZapperDepositsContract_exports);
24
- var import_iETHZapperDeposits = require("../../../abi/iETHZapperDeposits.js");
25
- var import_base = require("../../base/index.js");
26
- const abi = import_iETHZapperDeposits.iethZapperDepositsAbi;
27
- class IETHZapperDepositsContract extends import_base.BaseContract {
28
- constructor(options, args) {
29
- super(options, { ...args, abi });
23
+ module.exports = __toCommonJS(Zapper_exports);
24
+ var import_utils = require("../../utils/index.js");
25
+ class Zapper {
26
+ pool;
27
+ type;
28
+ baseParams;
29
+ tokenIn;
30
+ tokenOut;
31
+ contractType;
32
+ constructor(data) {
33
+ this.pool = data.pool;
34
+ this.type = data.type;
35
+ this.baseParams = data.baseParams;
36
+ this.tokenIn = data.tokenIn;
37
+ this.tokenOut = data.tokenOut;
38
+ this.contractType = Zapper.contractType(data.baseParams);
30
39
  }
31
- /**
32
- * Deposits native ETH into the pool via this zapper using a referral code.
33
- * The caller must attach the deposit amount as msg.value.
34
- */
35
- depositWithReferral(receiver, referralCode) {
36
- return this.createRawTx({
37
- functionName: "depositWithReferral",
38
- args: [receiver, referralCode]
39
- });
40
+ static contractType(baseParams) {
41
+ return (0, import_utils.bytes32ToString)(baseParams.contractType);
40
42
  }
41
43
  }
42
44
  // Annotate the CommonJS export names for ESM import in node:
43
45
  0 && (module.exports = {
44
- IETHZapperDepositsContract
46
+ Zapper
45
47
  });
@@ -0,0 +1,45 @@
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 createZapper_exports = {};
20
+ __export(createZapper_exports, {
21
+ createZapper: () => createZapper
22
+ });
23
+ module.exports = __toCommonJS(createZapper_exports);
24
+ var import_IERC20ZapperContract = require("./IERC20ZapperContract.js");
25
+ var import_IETHZapperContract = require("./IETHZapperContract.js");
26
+ var import_Zapper = require("./Zapper.js");
27
+ function createZapper(sdk, data) {
28
+ if (data.type === "base") {
29
+ const contractType = import_Zapper.Zapper.contractType(data.baseParams);
30
+ switch (contractType) {
31
+ case "ZAPPER::ERC4626_UNDERLYING":
32
+ return new import_IERC20ZapperContract.IERC20ZapperContract(sdk, data);
33
+ case "ZAPPER::WETH_DEPOSIT":
34
+ return new import_IETHZapperContract.IETHZapperContract(sdk, data);
35
+ default:
36
+ sdk.logger?.warn(`Unknown zapper contract type: ${contractType}`);
37
+ return new import_Zapper.Zapper(data);
38
+ }
39
+ }
40
+ return new import_Zapper.Zapper(data);
41
+ }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ createZapper
45
+ });
@@ -15,12 +15,14 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
16
  var zapper_exports = {};
17
17
  module.exports = __toCommonJS(zapper_exports);
18
- __reExport(zapper_exports, require("./IERC20ZapperDepositsContract.js"), module.exports);
19
- __reExport(zapper_exports, require("./IETHZapperDepositsContract.js"), module.exports);
20
- __reExport(zapper_exports, require("./IZapperContract.js"), module.exports);
18
+ __reExport(zapper_exports, require("./createZapper.js"), module.exports);
19
+ __reExport(zapper_exports, require("./IERC20ZapperContract.js"), module.exports);
20
+ __reExport(zapper_exports, require("./IETHZapperContract.js"), module.exports);
21
+ __reExport(zapper_exports, require("./Zapper.js"), module.exports);
21
22
  // Annotate the CommonJS export names for ESM import in node:
22
23
  0 && (module.exports = {
23
- ...require("./IERC20ZapperDepositsContract.js"),
24
- ...require("./IETHZapperDepositsContract.js"),
25
- ...require("./IZapperContract.js")
24
+ ...require("./createZapper.js"),
25
+ ...require("./IERC20ZapperContract.js"),
26
+ ...require("./IETHZapperContract.js"),
27
+ ...require("./Zapper.js")
26
28
  });
@@ -24,7 +24,7 @@ module.exports = __toCommonJS(PoolService_exports);
24
24
  var import_iERC20 = require("../../abi/iERC20.js");
25
25
  var import_base = require("../base/index.js");
26
26
  var import_constants = require("../constants/index.js");
27
- var import_zapper = require("../market/zapper/index.js");
27
+ var import_market = require("../market/index.js");
28
28
  var import_utils = require("../utils/index.js");
29
29
  class PoolService extends import_base.SDKConstruct {
30
30
  /**
@@ -96,23 +96,15 @@ class PoolService extends import_base.SDKConstruct {
96
96
  }
97
97
  }
98
98
  const { zapper } = meta;
99
- if (zapper && (0, import_utils.hexEq)(zapper.tokenIn.addr, import_constants.NATIVE_ADDRESS)) {
100
- const zapperContract = new import_zapper.IETHZapperDepositsContract(this.sdk, {
101
- addr: zapper.baseParams.addr,
102
- name: `ETHZapper(${this.labelAddress(zapper.baseParams.addr)})`
103
- });
104
- const tx2 = zapperContract.depositWithReferral(wallet, referralCode ?? 0n);
99
+ if (zapper instanceof import_market.IETHZapperContract) {
100
+ const tx2 = zapper.depositWithReferral(wallet, referralCode ?? 0n);
105
101
  tx2.value = collateral.balance.toString();
106
102
  return {
107
103
  tx: tx2,
108
104
  calls: [{ target: zapper.baseParams.addr, callData: tx2.callData }]
109
105
  };
110
- } else if (zapper) {
111
- const zapperContract = new import_zapper.IERC20ZapperDepositsContract(this.sdk, {
112
- addr: zapper.baseParams.addr,
113
- name: `ERC20Zapper(${this.labelAddress(zapper.baseParams.addr)})`
114
- });
115
- const tx2 = permit ? zapperContract.depositWithReferralAndPermit(
106
+ } else if (zapper instanceof import_market.IERC20ZapperContract) {
107
+ const tx2 = permit ? zapper.depositWithReferralAndPermit(
116
108
  collateral.balance,
117
109
  wallet,
118
110
  referralCode ?? 0n,
@@ -120,7 +112,7 @@ class PoolService extends import_base.SDKConstruct {
120
112
  permit.v,
121
113
  permit.r,
122
114
  permit.s
123
- ) : zapperContract.depositWithReferral(
115
+ ) : zapper.depositWithReferral(
124
116
  collateral.balance,
125
117
  wallet,
126
118
  referralCode ?? 0n
@@ -194,19 +186,15 @@ class PoolService extends import_base.SDKConstruct {
194
186
  };
195
187
  }
196
188
  }
197
- if (meta.zapper) {
198
- const zapperContract = new import_zapper.IZapperContract(this.sdk, {
199
- addr: meta.zapper.baseParams.addr,
200
- name: `Zapper(${this.labelAddress(meta.zapper.baseParams.addr)})`
201
- });
202
- const tx2 = permit ? zapperContract.redeemWithPermit(
189
+ if (meta.zapper instanceof import_market.IETHZapperContract || meta.zapper instanceof import_market.IERC20ZapperContract) {
190
+ const tx2 = permit ? meta.zapper.redeemWithPermit(
203
191
  amount,
204
192
  wallet,
205
193
  permit.deadline,
206
194
  permit.v,
207
195
  permit.r,
208
196
  permit.s
209
- ) : zapperContract.redeem(amount, wallet);
197
+ ) : meta.zapper.redeem(amount, wallet);
210
198
  return {
211
199
  tx: tx2,
212
200
  calls: [{ target: meta.zapper.baseParams.addr, callData: tx2.callData }]
@@ -0,0 +1,9 @@
1
+ import { ierc20ZapperDepositsAbi } from "./iERC20ZapperDeposits.js";
2
+ import { iZapperAbi } from "./iZapper.js";
3
+ const ierc20ZapperAbi = [
4
+ ...ierc20ZapperDepositsAbi,
5
+ ...iZapperAbi
6
+ ];
7
+ export {
8
+ ierc20ZapperAbi
9
+ };
@@ -0,0 +1,6 @@
1
+ import { iethZapperDepositsAbi } from "./iETHZapperDeposits.js";
2
+ import { iZapperAbi } from "./iZapper.js";
3
+ const iethZapperAbi = [...iethZapperDepositsAbi, ...iZapperAbi];
4
+ export {
5
+ iethZapperAbi
6
+ };
@@ -5,9 +5,10 @@ import {
5
5
  VERSION_RANGE_310
6
6
  } from "../constants/index.js";
7
7
  import { AddressMap, hexEq } from "../utils/index.js";
8
+ import { createZapper } from "./zapper/index.js";
8
9
  class ZapperRegister extends SDKConstruct {
9
10
  /**
10
- * Mapping pool.address -> ZapperData[]
11
+ * Mapping pool.address -> Zapper[]
11
12
  * Needs to be loaded explicitly using loadZappers method
12
13
  */
13
14
  #zappers;
@@ -55,16 +56,17 @@ class ZapperRegister extends SDKConstruct {
55
56
  }
56
57
  }
57
58
  #addZapper(z) {
59
+ const zapper = createZapper(this.sdk, z);
58
60
  const existing = this.zappers.get(z.pool);
59
61
  if (existing) {
60
62
  const hasZapper = existing.some(
61
63
  (zz) => hexEq(zz.baseParams.addr, z.baseParams.addr)
62
64
  );
63
65
  if (!hasZapper) {
64
- existing.push(z);
66
+ existing.push(zapper);
65
67
  }
66
68
  } else {
67
- this.zappers.upsert(z.pool, [z]);
69
+ this.zappers.upsert(z.pool, [zapper]);
68
70
  }
69
71
  const zappersTokens = [z.tokenIn, z.tokenOut];
70
72
  for (const t of zappersTokens) {
@@ -0,0 +1,74 @@
1
+ import { ierc20ZapperAbi } from "../../../abi/iERC20Zapper.js";
2
+ import { BaseContract } from "../../base/index.js";
3
+ const abi = ierc20ZapperAbi;
4
+ class IERC20ZapperContract extends BaseContract {
5
+ pool;
6
+ type;
7
+ baseParams;
8
+ tokenIn;
9
+ tokenOut;
10
+ constructor(sdk, data) {
11
+ super(sdk, {
12
+ addr: data.baseParams.addr,
13
+ abi,
14
+ name: `ERC20Zapper(${sdk.labelAddress(data.baseParams.addr)})`,
15
+ version: data.baseParams.version,
16
+ contractType: data.baseParams.contractType
17
+ });
18
+ this.pool = data.pool;
19
+ this.type = data.type;
20
+ this.baseParams = data.baseParams;
21
+ this.tokenIn = data.tokenIn;
22
+ this.tokenOut = data.tokenOut;
23
+ }
24
+ /**
25
+ * Deposits ERC20 tokens into the pool via this zapper.
26
+ */
27
+ deposit(tokenInAmount, receiver) {
28
+ return this.createRawTx({
29
+ functionName: "deposit",
30
+ args: [tokenInAmount, receiver]
31
+ });
32
+ }
33
+ /**
34
+ * Deposits ERC20 tokens into the pool via this zapper using a referral code.
35
+ */
36
+ depositWithReferral(tokenInAmount, receiver, referralCode) {
37
+ return this.createRawTx({
38
+ functionName: "depositWithReferral",
39
+ args: [tokenInAmount, receiver, referralCode]
40
+ });
41
+ }
42
+ /**
43
+ * Deposits ERC20 tokens via this zapper with a referral code and an
44
+ * EIP-2612 permit signature, skipping a separate approve transaction.
45
+ */
46
+ depositWithReferralAndPermit(tokenInAmount, receiver, referralCode, deadline, v, r, s) {
47
+ return this.createRawTx({
48
+ functionName: "depositWithReferralAndPermit",
49
+ args: [tokenInAmount, receiver, referralCode, deadline, v, r, s]
50
+ });
51
+ }
52
+ /**
53
+ * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
54
+ */
55
+ redeem(tokenInAmount, receiver) {
56
+ return this.createRawTx({
57
+ functionName: "redeem",
58
+ args: [tokenInAmount, receiver]
59
+ });
60
+ }
61
+ /**
62
+ * Redeems pool shares via this zapper with an EIP-2612 permit signature,
63
+ * skipping a separate approve transaction.
64
+ */
65
+ redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
66
+ return this.createRawTx({
67
+ functionName: "redeemWithPermit",
68
+ args: [tokenInAmount, receiver, deadline, v, r, s]
69
+ });
70
+ }
71
+ }
72
+ export {
73
+ IERC20ZapperContract
74
+ };
@@ -0,0 +1,65 @@
1
+ import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
+ import { BaseContract } from "../../base/index.js";
3
+ const abi = iethZapperAbi;
4
+ class IETHZapperContract extends BaseContract {
5
+ pool;
6
+ type;
7
+ baseParams;
8
+ tokenIn;
9
+ tokenOut;
10
+ constructor(sdk, data) {
11
+ super(sdk, {
12
+ addr: data.baseParams.addr,
13
+ abi,
14
+ name: `ETHZapper(${sdk.labelAddress(data.baseParams.addr)})`,
15
+ version: data.baseParams.version,
16
+ contractType: data.baseParams.contractType
17
+ });
18
+ this.pool = data.pool;
19
+ this.type = data.type;
20
+ this.baseParams = data.baseParams;
21
+ this.tokenIn = data.tokenIn;
22
+ this.tokenOut = data.tokenOut;
23
+ }
24
+ /**
25
+ * Deposits native ETH into the pool via this zapper.
26
+ */
27
+ deposit(receiver) {
28
+ return this.createRawTx({
29
+ functionName: "deposit",
30
+ args: [receiver]
31
+ });
32
+ }
33
+ /**
34
+ * Deposits native ETH into the pool via this zapper using a referral code.
35
+ * The caller must attach the deposit amount as msg.value.
36
+ */
37
+ depositWithReferral(receiver, referralCode) {
38
+ return this.createRawTx({
39
+ functionName: "depositWithReferral",
40
+ args: [receiver, referralCode]
41
+ });
42
+ }
43
+ /**
44
+ * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
45
+ */
46
+ redeem(tokenInAmount, receiver) {
47
+ return this.createRawTx({
48
+ functionName: "redeem",
49
+ args: [tokenInAmount, receiver]
50
+ });
51
+ }
52
+ /**
53
+ * Redeems pool shares via this zapper with an EIP-2612 permit signature,
54
+ * skipping a separate approve transaction.
55
+ */
56
+ redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
57
+ return this.createRawTx({
58
+ functionName: "redeemWithPermit",
59
+ args: [tokenInAmount, receiver, deadline, v, r, s]
60
+ });
61
+ }
62
+ }
63
+ export {
64
+ IETHZapperContract
65
+ };
@@ -0,0 +1,23 @@
1
+ import { bytes32ToString } from "../../utils/index.js";
2
+ class Zapper {
3
+ pool;
4
+ type;
5
+ baseParams;
6
+ tokenIn;
7
+ tokenOut;
8
+ contractType;
9
+ constructor(data) {
10
+ this.pool = data.pool;
11
+ this.type = data.type;
12
+ this.baseParams = data.baseParams;
13
+ this.tokenIn = data.tokenIn;
14
+ this.tokenOut = data.tokenOut;
15
+ this.contractType = Zapper.contractType(data.baseParams);
16
+ }
17
+ static contractType(baseParams) {
18
+ return bytes32ToString(baseParams.contractType);
19
+ }
20
+ }
21
+ export {
22
+ Zapper
23
+ };