@gearbox-protocol/sdk 13.5.0-next.1 → 13.5.0-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 (53) hide show
  1. package/dist/cjs/dev/AccountOpener.js +5 -45
  2. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +6 -339
  3. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +1 -13
  4. package/dist/cjs/sdk/base/TokensMeta.js +7 -151
  5. package/dist/cjs/sdk/base/token-types.js +0 -6
  6. package/dist/cjs/sdk/chain/chains.js +1 -2
  7. package/dist/cjs/sdk/constants/addresses.js +3 -0
  8. package/dist/cjs/sdk/market/MarketRegister.js +0 -3
  9. package/dist/cjs/sdk/market/MarketSuite.js +0 -3
  10. package/dist/cjs/sdk/market/ZapperRegister.js +0 -123
  11. package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
  12. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -17
  13. package/dist/cjs/sdk/market/pool/index.js +0 -4
  14. package/dist/cjs/sdk/pools/PoolService.js +84 -132
  15. package/dist/esm/dev/AccountOpener.js +6 -47
  16. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +6 -339
  17. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +1 -13
  18. package/dist/esm/sdk/base/TokensMeta.js +7 -155
  19. package/dist/esm/sdk/base/token-types.js +0 -4
  20. package/dist/esm/sdk/chain/chains.js +1 -2
  21. package/dist/esm/sdk/constants/addresses.js +2 -0
  22. package/dist/esm/sdk/market/MarketRegister.js +0 -3
  23. package/dist/esm/sdk/market/MarketSuite.js +0 -3
  24. package/dist/esm/sdk/market/ZapperRegister.js +0 -123
  25. package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
  26. package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -17
  27. package/dist/esm/sdk/market/pool/index.js +0 -2
  28. package/dist/esm/sdk/pools/PoolService.js +75 -127
  29. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +5 -103
  30. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +2 -4
  31. package/dist/types/sdk/accounts/types.d.ts +6 -130
  32. package/dist/types/sdk/base/TokensMeta.d.ts +3 -20
  33. package/dist/types/sdk/base/token-types.d.ts +1 -21
  34. package/dist/types/sdk/base/types.d.ts +3 -0
  35. package/dist/types/sdk/chain/chains.d.ts +1 -1
  36. package/dist/types/sdk/constants/addresses.d.ts +4 -0
  37. package/dist/types/sdk/market/MarketSuite.d.ts +0 -2
  38. package/dist/types/sdk/market/pool/PoolSuite.d.ts +0 -2
  39. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
  40. package/dist/types/sdk/market/pool/index.d.ts +0 -2
  41. package/dist/types/sdk/market/types.d.ts +1 -1
  42. package/dist/types/sdk/pools/PoolService.d.ts +24 -0
  43. package/dist/types/sdk/pools/types.d.ts +9 -8
  44. package/package.json +1 -1
  45. package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
  46. package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
  47. package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +0 -97
  48. package/dist/esm/abi/310/iSecuritizeDegenNFT.js +0 -239
  49. package/dist/esm/abi/310/iSecuritizeKYCFactory.js +0 -254
  50. package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +0 -73
  51. package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +0 -324
  52. package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +0 -322
  53. package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +0 -345
@@ -22,82 +22,38 @@ __export(PoolService_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(PoolService_exports);
24
24
  var import_generated = require("../../abi/310/generated.js");
25
- var import_iERC20 = require("../../abi/iERC20.js");
26
25
  var import_iERC20ZapperDeposits = require("../../abi/iERC20ZapperDeposits.js");
27
26
  var import_iETHZapperDeposits = require("../../abi/iETHZapperDeposits.js");
28
27
  var import_iZapper = require("../../abi/iZapper.js");
29
28
  var import_base = require("../base/index.js");
30
- var import__ = require("../index.js");
29
+ var import_constants = require("../constants/index.js");
31
30
  var import_utils = require("../utils/index.js");
32
- const NATIVE_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
33
- const POOL_TOKENS_TO_MIGRATE = new import_utils.AddressMap([
34
- // v2 diesels
35
- ["0x6CFaF95457d7688022FC53e7AbE052ef8DFBbdBA", "dDAI"],
36
- ["0xc411dB5f5Eb3f7d552F9B8454B2D74097ccdE6E3", "dUSDC"],
37
- ["0xe753260F1955e8678DCeA8887759e07aa57E8c54", "dWBTC"],
38
- ["0xF21fc650C1B34eb0FDE786D52d23dA99Db3D6278", "dWETH"],
39
- ["0x2158034dB06f06dcB9A786D2F1F8c38781bA779d", "dwstETH"],
40
- ["0x8A1112AFef7F4FC7c066a77AABBc01b3Fff31D47", "dFRAX"]
41
- ]);
42
31
  class PoolService extends import_base.SDKConstruct {
32
+ /**
33
+ * @inheritdoc IPoolsService.getDepositTokensIn
34
+ */
43
35
  getDepositTokensIn(pool) {
44
- const underlying = this.#describeUnderlying(pool);
45
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
46
- switch (underlying.contractType) {
47
- case import_base.KYC_UNDERLYING_DEFAULT:
48
- return this.#depositTokensIn(pool, false);
49
- case import_base.KYC_UNDERLYING_ON_DEMAND:
50
- return [underlying.asset];
51
- }
52
- }
53
36
  return this.#depositTokensIn(pool, true);
54
37
  }
38
+ /**
39
+ * @inheritdoc IPoolsService.getDepositTokensOut
40
+ */
55
41
  getDepositTokensOut(pool, tokenIn) {
56
- const underlying = this.#describeUnderlying(pool);
57
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
58
- switch (underlying.contractType) {
59
- case import_base.KYC_UNDERLYING_DEFAULT:
60
- return this.#depositTokensOut(pool, tokenIn, false);
61
- case import_base.KYC_UNDERLYING_ON_DEMAND:
62
- return [];
63
- }
64
- }
65
42
  return this.#depositTokensOut(pool, tokenIn, true);
66
43
  }
44
+ /**
45
+ * @inheritdoc IPoolsService.getDepositMetadata
46
+ */
67
47
  getDepositMetadata(pool, tokenIn, tokenOut) {
68
- const underlying = this.#describeUnderlying(pool);
69
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
70
- switch (underlying.contractType) {
71
- case import_base.KYC_UNDERLYING_DEFAULT: {
72
- return this.#depositMetadata(
73
- "kyc-default",
74
- pool,
75
- tokenIn,
76
- tokenOut,
77
- false
78
- );
79
- }
80
- case import_base.KYC_UNDERLYING_ON_DEMAND:
81
- return {
82
- zapper: void 0,
83
- approveTarget: underlying.liquidityProvider,
84
- permissible: false,
85
- type: "kyc-on-demand"
86
- };
87
- }
88
- }
89
48
  return this.#depositMetadata("classic", pool, tokenIn, tokenOut, true);
90
49
  }
50
+ /**
51
+ * @inheritdoc IPoolsService.addLiquidity
52
+ */
91
53
  addLiquidity(props) {
92
54
  const { collateral, meta, permit, referralCode, pool, wallet } = props;
93
- const underlying = this.#describeUnderlying(pool);
94
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
95
- if (underlying.contractType === import_base.KYC_UNDERLYING_ON_DEMAND) {
96
- return void 0;
97
- }
98
- }
99
55
  const { zapper } = meta;
100
- if (zapper && (0, import__.hexEq)(zapper.tokenIn.addr, NATIVE_ADDRESS)) {
56
+ if (zapper && (0, import_utils.hexEq)(zapper.tokenIn.addr, import_constants.NATIVE_ADDRESS)) {
101
57
  return {
102
58
  target: zapper.baseParams.addr,
103
59
  abi: import_iETHZapperDeposits.iethZapperDepositsAbi,
@@ -134,43 +90,23 @@ class PoolService extends import_base.SDKConstruct {
134
90
  };
135
91
  }
136
92
  }
93
+ /**
94
+ * @inheritdoc IPoolsService.getWithdrawalTokensIn
95
+ */
137
96
  getWithdrawalTokensIn(pool) {
138
- const underlying = this.#describeUnderlying(pool);
139
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
140
- switch (underlying.contractType) {
141
- case import_base.KYC_UNDERLYING_DEFAULT:
142
- return this.#withdrawalTokensIn(pool, false);
143
- case import_base.KYC_UNDERLYING_ON_DEMAND:
144
- return [];
145
- }
146
- }
147
97
  return this.#withdrawalTokensIn(pool, true);
148
98
  }
99
+ /**
100
+ * @inheritdoc IPoolsService.getWithdrawalTokensOut
101
+ */
149
102
  getWithdrawalTokensOut(pool, tokenIn) {
150
- const underlying = this.#describeUnderlying(pool);
151
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
152
- switch (underlying.contractType) {
153
- case import_base.KYC_UNDERLYING_DEFAULT:
154
- return this.#withdrawalTokensOut(pool, tokenIn, false);
155
- case import_base.KYC_UNDERLYING_ON_DEMAND:
156
- return [underlying.asset];
157
- }
158
- }
159
103
  return this.#withdrawalTokensOut(pool, tokenIn, true);
160
104
  }
105
+ /**
106
+ * @inheritdoc IPoolsService.removeLiquidity
107
+ */
161
108
  removeLiquidity(props) {
162
109
  const { pool, amount, meta, wallet, permit } = props;
163
- const underlying = this.#describeUnderlying(pool);
164
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
165
- if (underlying.contractType === import_base.KYC_UNDERLYING_ON_DEMAND) {
166
- return {
167
- abi: import_iERC20.ierc20Abi,
168
- functionName: "approve",
169
- args: [underlying.liquidityProvider, 0n],
170
- target: underlying.asset
171
- };
172
- }
173
- }
174
110
  if (meta.zapper) {
175
111
  return permit ? {
176
112
  target: meta.zapper.baseParams.addr,
@@ -198,49 +134,35 @@ class PoolService extends import_base.SDKConstruct {
198
134
  args: [amount, wallet, wallet]
199
135
  };
200
136
  }
137
+ /**
138
+ * @inheritdoc IPoolsService.getWithdrawalMetadata
139
+ */
201
140
  getWithdrawalMetadata(pool, tokenIn, tokenOut) {
202
- const underlying = this.#describeUnderlying(pool);
203
- if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
204
- switch (underlying.contractType) {
205
- case import_base.KYC_UNDERLYING_DEFAULT: {
206
- return this.#withdrawalMetadata(
207
- "kyc-default",
208
- pool,
209
- tokenIn,
210
- tokenOut,
211
- false
212
- );
213
- }
214
- case import_base.KYC_UNDERLYING_ON_DEMAND:
215
- return {
216
- zapper: void 0,
217
- approveTarget: void 0,
218
- permissible: false,
219
- type: "kyc-on-demand"
220
- };
221
- }
222
- }
223
141
  return this.#withdrawalMetadata("classic", pool, tokenIn, tokenOut, true);
224
142
  }
225
143
  /**
226
- * Filter out v2 diesel tokens (can come from migration v2 -> v3 zappers)
227
- * Also omits "migration" zappers (v3 -> v3.1) since they are treated in a different way
144
+ * Returns non-migration zappers available for the pool.
228
145
  */
229
146
  #getDepositZappers(poolAddr) {
230
147
  const zappers = this.sdk.marketRegister.poolZappers(poolAddr);
231
- return zappers.filter(
232
- (z) => z.type !== "migration" && !POOL_TOKENS_TO_MIGRATE.has(z.tokenIn.addr)
233
- );
148
+ return zappers.filter((z) => z.type !== "migration");
234
149
  }
150
+ /**
151
+ * Returns all supported deposit input tokens for a pool.
152
+ *
153
+ * Includes:
154
+ * - zapper `tokenIn` where zapper output is pool diesel token
155
+ * - pool underlying token when direct deposit is enabled
156
+ */
235
157
  #depositTokensIn(poolAddr, allowDirectDeposit) {
236
158
  const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
237
- const result = new import__.AddressSet();
159
+ const result = new import_utils.AddressSet();
238
160
  if (allowDirectDeposit) {
239
161
  result.add(pool.underlying);
240
162
  }
241
163
  const zappers = this.#getDepositZappers(poolAddr);
242
164
  for (const z of zappers) {
243
- if ((0, import__.hexEq)(z.tokenOut.addr, poolAddr)) {
165
+ if ((0, import_utils.hexEq)(z.tokenOut.addr, poolAddr)) {
244
166
  result.add(z.tokenIn.addr);
245
167
  }
246
168
  }
@@ -251,9 +173,16 @@ class PoolService extends import_base.SDKConstruct {
251
173
  }
252
174
  return result.asArray();
253
175
  }
176
+ /**
177
+ * Returns all supported withdrawal input tokens for a pool.
178
+ *
179
+ * Includes:
180
+ * - pool diesel token when direct withdrawal is enabled
181
+ * - all zapper that can be redeemed from the pool
182
+ */
254
183
  #withdrawalTokensIn(poolAddr, allowDirectDeposit) {
255
184
  const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
256
- const result = new import__.AddressSet();
185
+ const result = new import_utils.AddressSet();
257
186
  if (allowDirectDeposit && pool) {
258
187
  result.add(poolAddr);
259
188
  }
@@ -268,16 +197,23 @@ class PoolService extends import_base.SDKConstruct {
268
197
  }
269
198
  return result.asArray();
270
199
  }
200
+ /**
201
+ * Returns possible deposit outputs for a given input token.
202
+ *
203
+ * Includes:
204
+ * - zapper `tokenOut` for `z.tokenIn` matching `tokenIn`
205
+ * - pool diesel token for direct underlying deposit when enabled
206
+ */
271
207
  #depositTokensOut(poolAddr, tokenIn, allowDirectDeposit) {
272
- const result = new import__.AddressSet();
208
+ const result = new import_utils.AddressSet();
273
209
  const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
274
210
  const zappers = this.#getDepositZappers(poolAddr);
275
211
  for (const z of zappers) {
276
- if ((0, import__.hexEq)(z.tokenIn.addr, tokenIn)) {
212
+ if ((0, import_utils.hexEq)(z.tokenIn.addr, tokenIn)) {
277
213
  result.add(z.tokenOut.addr);
278
214
  }
279
215
  }
280
- if (allowDirectDeposit && (0, import__.hexEq)(tokenIn, pool.underlying)) {
216
+ if (allowDirectDeposit && (0, import_utils.hexEq)(tokenIn, pool.underlying)) {
281
217
  result.add(poolAddr);
282
218
  }
283
219
  if (result.size === 0) {
@@ -290,16 +226,23 @@ class PoolService extends import_base.SDKConstruct {
290
226
  const r = result.asArray();
291
227
  return r;
292
228
  }
229
+ /**
230
+ * Returns possible withdrawal outputs for a given input token.
231
+ *
232
+ * Includes:
233
+ * - zapper `tokenIn` where zapper `z.tokenOut` matches requested `tokenIn`
234
+ * - pool underlying token for direct diesel-token redemption when enabled
235
+ */
293
236
  #withdrawalTokensOut(poolAddr, tokenIn, allowDirectDeposit) {
294
- const result = new import__.AddressSet();
237
+ const result = new import_utils.AddressSet();
295
238
  const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
296
239
  const zappers = this.#getDepositZappers(poolAddr);
297
240
  for (const z of zappers) {
298
- if ((0, import__.hexEq)(z.tokenOut.addr, tokenIn)) {
241
+ if ((0, import_utils.hexEq)(z.tokenOut.addr, tokenIn)) {
299
242
  result.add(z.tokenIn.addr);
300
243
  }
301
244
  }
302
- if (allowDirectDeposit && (0, import__.hexEq)(tokenIn, poolAddr)) {
245
+ if (allowDirectDeposit && (0, import_utils.hexEq)(tokenIn, poolAddr)) {
303
246
  result.add(pool.underlying);
304
247
  }
305
248
  if (result.size === 0) {
@@ -313,13 +256,12 @@ class PoolService extends import_base.SDKConstruct {
313
256
  return r;
314
257
  }
315
258
  /**
316
- * Filter out v2 diesel tokens (can come from migration v2 -> v3 zappers)
317
- * Also omits "migration" zappers (v3 -> v3.1) since they are treated in a different way
259
+ * Returns a single non-migration zapper route for the given token pair.
260
+ *
261
+ * Throws when multiple matching zappers exist to keep call construction deterministic.
318
262
  */
319
263
  #getDepositZapper(poolAddr, tokenIn, tokenOut) {
320
- const zappers = this.sdk.marketRegister.getZapper(poolAddr, tokenIn, tokenOut)?.filter(
321
- (z) => z.type !== "migration" && !POOL_TOKENS_TO_MIGRATE.has(z.tokenIn.addr)
322
- );
264
+ const zappers = this.sdk.marketRegister.getZapper(poolAddr, tokenIn, tokenOut)?.filter((z) => z.type !== "migration");
323
265
  if (zappers && zappers.length > 1) {
324
266
  throw new Error(
325
267
  `Multiple zappers found for tokenIn ${this.labelAddress(
@@ -331,6 +273,11 @@ class PoolService extends import_base.SDKConstruct {
331
273
  }
332
274
  return zappers?.[0];
333
275
  }
276
+ /**
277
+ * Builds metadata required to execute a deposit operation.
278
+ *
279
+ * Includes selected zapper route (if any), approve target, and permit support flag.
280
+ */
334
281
  #depositMetadata(type, poolAddr, tokenIn, tokenOut, allowDirectDeposit) {
335
282
  if (!tokenOut) {
336
283
  throw new Error("tokenOut is required for classic pool deposit");
@@ -348,14 +295,19 @@ class PoolService extends import_base.SDKConstruct {
348
295
  }
349
296
  return {
350
297
  zapper,
351
- // zapper or pool itself
298
+ // Approval target is zapper when routed, otherwise the pool contract.
352
299
  approveTarget: zapper?.baseParams.addr ?? pool.pool.address,
353
- // TODO: instead of permissible, return permitType зависимости от tokenIn
300
+ // TODO: instead of permissible, return permitType depending on tokenIn
354
301
  // "none" | "eip2612" | "dai_like";
355
- permissible: !!zapper && !(0, import__.hexEq)(tokenIn, NATIVE_ADDRESS),
302
+ permissible: !!zapper && !(0, import_utils.hexEq)(tokenIn, import_constants.NATIVE_ADDRESS),
356
303
  type
357
304
  };
358
305
  }
306
+ /**
307
+ * Builds metadata required to execute a withdrawal operation.
308
+ *
309
+ * Includes selected zapper route (if any), approve target, and permit support flag.
310
+ */
359
311
  #withdrawalMetadata(type, poolAddr, tokenIn, tokenOut, allowDirectDeposit) {
360
312
  if (!tokenOut) {
361
313
  throw new Error("tokenOut is required for classic pool deposit");
@@ -372,9 +324,9 @@ class PoolService extends import_base.SDKConstruct {
372
324
  }
373
325
  return {
374
326
  zapper,
375
- // zapper or pool itself
327
+ // Approval target exists only for zapper-based withdrawals.
376
328
  approveTarget: zapper?.baseParams.addr,
377
- // TODO: instead of permissible, return permitType зависимости от tokenIn
329
+ // TODO: instead of permissible, return permitType depending on tokenIn
378
330
  // "none" | "eip2612" | "dai_like";
379
331
  permissible: !!zapper,
380
332
  type
@@ -6,7 +6,7 @@ import {
6
6
  parseEventLogs
7
7
  } from "viem";
8
8
  import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
9
- import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
9
+ import { iCreditFacadeV310Abi, iPoolV310Abi } from "../abi/310/generated.js";
10
10
  import { ierc20Abi } from "../abi/iERC20.js";
11
11
  import {
12
12
  ADDRESS_0X0,
@@ -15,7 +15,6 @@ import {
15
15
  childLogger,
16
16
  MAX_UINT256,
17
17
  PERCENTAGE_FACTOR,
18
- PoolService,
19
18
  SDKConstruct,
20
19
  sendRawTx
21
20
  } from "../sdk/index.js";
@@ -44,7 +43,6 @@ class AccountOpener extends SDKConstruct {
44
43
  #minDebtMultiplier;
45
44
  #allowMint;
46
45
  #leverageDelta;
47
- #poolService;
48
46
  constructor(service, options_ = {}) {
49
47
  super(service.sdk);
50
48
  const {
@@ -70,7 +68,6 @@ class AccountOpener extends SDKConstruct {
70
68
  this.#poolDepositMultiplier = BigInt(poolDepositMultiplier);
71
69
  this.#minDebtMultiplier = BigInt(minDebtMultiplier);
72
70
  this.#leverageDelta = BigInt(leverageDelta);
73
- this.#poolService = new PoolService(service.sdk);
74
71
  this.#logger?.info(
75
72
  {
76
73
  borrower: privateKeyToAccount(this.borrowerKey).address,
@@ -108,10 +105,6 @@ class AccountOpener extends SDKConstruct {
108
105
  },
109
106
  "opening credit accounts"
110
107
  );
111
- await Promise.all([
112
- this.sdk.tokensMeta.loadTokenData(),
113
- this.sdk.marketRegister.loadZappers()
114
- ]);
115
108
  let deposits = [];
116
109
  if (depositIntoPools) {
117
110
  try {
@@ -463,34 +456,9 @@ class AccountOpener extends SDKConstruct {
463
456
  this.#logger?.debug(
464
457
  `depositor balance in underlying: ${this.sdk.tokensMeta.formatBN(pool.underlying, allowance, { symbol: true })}`
465
458
  );
466
- const tokensOut = this.#poolService.getDepositTokensOut(
467
- address,
468
- underlying
469
- );
470
- this.#logger?.debug(
471
- { tokensOut: tokensOut.map((t) => this.labelAddress(t)) },
472
- "deposit tokens out"
473
- );
474
- if (tokensOut.length === 0) {
475
- throw new Error(`no tokens out found for pool ${poolName}`);
476
- }
477
- const tokenOut = tokensOut[0];
478
- const metadata = this.#poolService.getDepositMetadata(
479
- address,
480
- underlying,
481
- tokenOut
482
- );
483
- this.logger?.debug(
484
- {
485
- underlying: this.labelAddress(underlying),
486
- tokenOut: this.labelAddress(tokenOut),
487
- ...metadata
488
- },
489
- "pool deposit metadata"
490
- );
491
459
  txHash = await this.#anvil.writeContract({
492
460
  account: depositor,
493
- address: metadata.approveTarget,
461
+ address: underlying,
494
462
  abi: ierc20Abi,
495
463
  functionName: "approve",
496
464
  args: [address, allowance],
@@ -507,21 +475,12 @@ class AccountOpener extends SDKConstruct {
507
475
  this.#logger?.debug(
508
476
  `depositor approved underlying for pool ${poolName}: ${txHash}`
509
477
  );
510
- const depositCall = this.#poolService.addLiquidity({
511
- collateral: { token: underlying, balance: amount },
512
- pool: address,
513
- wallet: depositor.address,
514
- meta: metadata
515
- });
516
- if (!depositCall) {
517
- throw new Error(`no deposit call could be created for ${poolName}`);
518
- }
519
478
  txHash = await this.#anvil.writeContract({
520
479
  account: depositor,
521
- address: depositCall.target,
522
- abi: depositCall.abi,
523
- functionName: depositCall.functionName,
524
- args: depositCall.args,
480
+ address,
481
+ abi: iPoolV310Abi,
482
+ functionName: "deposit",
483
+ args: [amount, depositor.address],
525
484
  chain: this.#anvil.chain
526
485
  });
527
486
  receipt = await this.#anvil.waitForTransactionReceipt({ hash: txHash });