@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.
- package/dist/cjs/dev/AccountOpener.js +5 -45
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +6 -339
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +1 -13
- package/dist/cjs/sdk/base/TokensMeta.js +7 -151
- package/dist/cjs/sdk/base/token-types.js +0 -6
- package/dist/cjs/sdk/chain/chains.js +1 -2
- package/dist/cjs/sdk/constants/addresses.js +3 -0
- package/dist/cjs/sdk/market/MarketRegister.js +0 -3
- package/dist/cjs/sdk/market/MarketSuite.js +0 -3
- package/dist/cjs/sdk/market/ZapperRegister.js +0 -123
- package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/cjs/sdk/market/pool/index.js +0 -4
- package/dist/cjs/sdk/pools/PoolService.js +84 -132
- package/dist/esm/dev/AccountOpener.js +6 -47
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +6 -339
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +1 -13
- package/dist/esm/sdk/base/TokensMeta.js +7 -155
- package/dist/esm/sdk/base/token-types.js +0 -4
- package/dist/esm/sdk/chain/chains.js +1 -2
- package/dist/esm/sdk/constants/addresses.js +2 -0
- package/dist/esm/sdk/market/MarketRegister.js +0 -3
- package/dist/esm/sdk/market/MarketSuite.js +0 -3
- package/dist/esm/sdk/market/ZapperRegister.js +0 -123
- package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/esm/sdk/market/pool/index.js +0 -2
- package/dist/esm/sdk/pools/PoolService.js +75 -127
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +5 -103
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +2 -4
- package/dist/types/sdk/accounts/types.d.ts +6 -130
- package/dist/types/sdk/base/TokensMeta.d.ts +3 -20
- package/dist/types/sdk/base/token-types.d.ts +1 -21
- package/dist/types/sdk/base/types.d.ts +3 -0
- package/dist/types/sdk/chain/chains.d.ts +1 -1
- package/dist/types/sdk/constants/addresses.d.ts +4 -0
- package/dist/types/sdk/market/MarketSuite.d.ts +0 -2
- package/dist/types/sdk/market/pool/PoolSuite.d.ts +0 -2
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
- package/dist/types/sdk/market/pool/index.d.ts +0 -2
- package/dist/types/sdk/market/types.d.ts +1 -1
- package/dist/types/sdk/pools/PoolService.d.ts +24 -0
- package/dist/types/sdk/pools/types.d.ts +9 -8
- package/package.json +1 -1
- package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
- package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
- package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +0 -97
- package/dist/esm/abi/310/iSecuritizeDegenNFT.js +0 -239
- package/dist/esm/abi/310/iSecuritizeKYCFactory.js +0 -254
- package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +0 -73
- package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +0 -324
- package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +0 -322
- 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
|
|
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,
|
|
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
|
-
*
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
*
|
|
317
|
-
*
|
|
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
|
|
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
|
|
300
|
+
// TODO: instead of permissible, return permitType depending on tokenIn
|
|
354
301
|
// "none" | "eip2612" | "dai_like";
|
|
355
|
-
permissible: !!zapper && !(0,
|
|
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
|
-
//
|
|
327
|
+
// Approval target exists only for zapper-based withdrawals.
|
|
376
328
|
approveTarget: zapper?.baseParams.addr,
|
|
377
|
-
// TODO: instead of permissible, return permitType
|
|
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:
|
|
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
|
|
522
|
-
abi:
|
|
523
|
-
functionName:
|
|
524
|
-
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 });
|