@gearbox-protocol/sdk 13.1.0 → 13.2.0-next.1

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 (96) hide show
  1. package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +263 -0
  2. package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +278 -0
  3. package/dist/cjs/{sdk/pools/PoolServiceV310.js → abi/iStateSerializer.js} +14 -8
  4. package/dist/cjs/dev/AccountOpener.js +45 -5
  5. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +462 -104
  6. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +16 -5
  7. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -1
  8. package/dist/cjs/sdk/base/TokensMeta.js +255 -32
  9. package/dist/cjs/sdk/base/index.js +2 -0
  10. package/dist/cjs/sdk/{constants/phantom-tokens.js → base/token-types.js} +9 -3
  11. package/dist/cjs/sdk/chain/chains.js +2 -1
  12. package/dist/cjs/sdk/constants/index.js +0 -2
  13. package/dist/cjs/sdk/market/MarketRegister.js +2 -2
  14. package/dist/cjs/sdk/market/MarketSuite.js +6 -0
  15. package/dist/cjs/{plugins/zappers/extraZappers.js → sdk/market/ZapperRegister.js} +110 -6
  16. package/dist/cjs/sdk/market/index.js +3 -1
  17. package/dist/cjs/sdk/market/pool/PoolSuite.js +3 -0
  18. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +17 -2
  19. package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +97 -0
  20. package/dist/cjs/sdk/market/pool/index.js +4 -0
  21. package/dist/cjs/sdk/pools/PoolService.js +391 -0
  22. package/dist/cjs/sdk/pools/index.js +2 -4
  23. package/dist/cjs/sdk/utils/AddressMap.js +1 -1
  24. package/dist/cjs/sdk/utils/viem/sendRawTx.js +16 -0
  25. package/dist/esm/abi/310/iSecuritizeDegenNFT.js +239 -0
  26. package/dist/esm/abi/310/iSecuritizeKYCFactory.js +254 -0
  27. package/dist/esm/abi/iStateSerializer.js +12 -0
  28. package/dist/esm/dev/AccountOpener.js +47 -6
  29. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +462 -104
  30. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +16 -5
  31. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -1
  32. package/dist/esm/sdk/base/TokensMeta.js +261 -32
  33. package/dist/esm/sdk/base/index.js +1 -0
  34. package/dist/esm/sdk/{constants/phantom-tokens.js → base/token-types.js} +4 -0
  35. package/dist/esm/sdk/chain/chains.js +2 -1
  36. package/dist/esm/sdk/constants/index.js +0 -1
  37. package/dist/esm/sdk/market/MarketRegister.js +2 -2
  38. package/dist/esm/sdk/market/MarketSuite.js +6 -0
  39. package/dist/esm/{plugins/zappers/extraZappers.js → sdk/market/ZapperRegister.js} +109 -2
  40. package/dist/esm/sdk/market/index.js +1 -0
  41. package/dist/esm/sdk/market/pool/PoolSuite.js +3 -0
  42. package/dist/esm/sdk/market/pool/PoolV310Contract.js +17 -2
  43. package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +73 -0
  44. package/dist/esm/sdk/market/pool/index.js +2 -0
  45. package/dist/esm/sdk/pools/PoolService.js +371 -0
  46. package/dist/esm/sdk/pools/index.js +1 -2
  47. package/dist/esm/sdk/utils/AddressMap.js +1 -1
  48. package/dist/esm/sdk/utils/viem/sendRawTx.js +19 -1
  49. package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +324 -0
  50. package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +322 -0
  51. package/dist/types/abi/iStateSerializer.d.ts +11 -0
  52. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +123 -27
  53. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  54. package/dist/types/sdk/accounts/types.d.ts +108 -8
  55. package/dist/types/sdk/base/TokensMeta.d.ts +34 -18
  56. package/dist/types/sdk/base/index.d.ts +1 -0
  57. package/dist/types/sdk/base/token-types.d.ts +33 -0
  58. package/dist/types/sdk/base/types.d.ts +0 -1
  59. package/dist/types/sdk/chain/chains.d.ts +1 -1
  60. package/dist/types/sdk/constants/index.d.ts +0 -1
  61. package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
  62. package/dist/types/sdk/market/MarketSuite.d.ts +3 -0
  63. package/dist/types/sdk/market/ZapperRegister.d.ts +17 -0
  64. package/dist/types/sdk/market/index.d.ts +1 -0
  65. package/dist/types/sdk/market/pool/PoolSuite.d.ts +2 -0
  66. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +6 -2
  67. package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +345 -0
  68. package/dist/types/sdk/market/pool/index.d.ts +2 -0
  69. package/dist/types/sdk/market/types.d.ts +10 -0
  70. package/dist/types/sdk/pools/PoolService.d.ts +14 -0
  71. package/dist/types/sdk/pools/index.d.ts +1 -2
  72. package/dist/types/sdk/pools/types.d.ts +84 -63
  73. package/dist/types/sdk/utils/AddressMap.d.ts +1 -1
  74. package/dist/types/sdk/utils/viem/sendRawTx.d.ts +5 -1
  75. package/package.json +1 -1
  76. package/dist/cjs/plugins/zappers/ZappersPlugin.js +0 -144
  77. package/dist/cjs/plugins/zappers/index.js +0 -26
  78. package/dist/cjs/plugins/zappers/package.json +0 -1
  79. package/dist/cjs/sdk/pools/AbstractPoolService.js +0 -137
  80. package/dist/cjs/sdk/pools/createPoolService.js +0 -35
  81. package/dist/esm/plugins/zappers/ZappersPlugin.js +0 -126
  82. package/dist/esm/plugins/zappers/index.js +0 -3
  83. package/dist/esm/plugins/zappers/package.json +0 -1
  84. package/dist/esm/sdk/pools/AbstractPoolService.js +0 -113
  85. package/dist/esm/sdk/pools/PoolServiceV310.js +0 -6
  86. package/dist/esm/sdk/pools/createPoolService.js +0 -11
  87. package/dist/types/plugins/zappers/ZappersPlugin.d.ts +0 -18
  88. package/dist/types/plugins/zappers/extraZappers.d.ts +0 -6
  89. package/dist/types/plugins/zappers/index.d.ts +0 -3
  90. package/dist/types/plugins/zappers/types.d.ts +0 -12
  91. package/dist/types/sdk/constants/phantom-tokens.d.ts +0 -2
  92. package/dist/types/sdk/pools/AbstractPoolService.d.ts +0 -9
  93. package/dist/types/sdk/pools/PoolServiceV310.d.ts +0 -4
  94. package/dist/types/sdk/pools/createPoolService.d.ts +0 -3
  95. /package/dist/cjs/{plugins/zappers → sdk/market}/types.js +0 -0
  96. /package/dist/esm/{plugins/zappers → sdk/market}/types.js +0 -0
@@ -25,16 +25,20 @@ var import_generated = require("../../../abi/310/generated.js");
25
25
  var import_iPausable = require("../../../abi/iPausable.js");
26
26
  var import_base = require("../../base/index.js");
27
27
  var import_utils = require("../../utils/index.js");
28
+ var import_SecuritizeKYCFactory = require("./SecuritizeKYCFactory.js");
28
29
  const abi = [...import_generated.iPoolV310Abi, ...import_iPausable.iPausableAbi];
29
30
  class PoolV310Contract extends import_base.BaseContract {
30
31
  creditManagerDebtParams;
31
- constructor(options, data) {
32
+ #sdk;
33
+ #kycFactory;
34
+ constructor(sdk, data) {
32
35
  const { baseParams, creditManagerDebtParams, ...rest } = data;
33
- super(options, {
36
+ super(sdk, {
34
37
  ...data.baseParams,
35
38
  name: `PoolV3(${data.name})`,
36
39
  abi
37
40
  });
41
+ this.#sdk = sdk;
38
42
  Object.assign(this, rest);
39
43
  this.creditManagerDebtParams = new import_utils.AddressMap(
40
44
  creditManagerDebtParams.map((p) => [p.creditManager, p])
@@ -46,6 +50,17 @@ class PoolV310Contract extends import_base.BaseContract {
46
50
  symbol: data.symbol
47
51
  });
48
52
  }
53
+ async getKYCFactory() {
54
+ if (this.#kycFactory) {
55
+ return this.#kycFactory;
56
+ }
57
+ await this.#sdk.tokensMeta.loadTokenData(this.underlying);
58
+ const u = this.#sdk.tokensMeta.mustGet(this.underlying);
59
+ if (this.#sdk.tokensMeta.isKYCUnderlying(u)) {
60
+ this.#kycFactory = new import_SecuritizeKYCFactory.SecuritizeKYCFactory(this.#sdk, u.kycFactory);
61
+ }
62
+ return this.#kycFactory;
63
+ }
49
64
  stateHuman(raw = true) {
50
65
  return {
51
66
  ...super.stateHuman(raw),
@@ -0,0 +1,97 @@
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 SecuritizeKYCFactory_exports = {};
20
+ __export(SecuritizeKYCFactory_exports, {
21
+ SecuritizeKYCFactory: () => SecuritizeKYCFactory
22
+ });
23
+ module.exports = __toCommonJS(SecuritizeKYCFactory_exports);
24
+ var import_iSecuritizeDegenNFT = require("../../../abi/310/iSecuritizeDegenNFT.js");
25
+ var import_iSecuritizeKYCFactory = require("../../../abi/310/iSecuritizeKYCFactory.js");
26
+ var import_base = require("../../base/index.js");
27
+ var import__ = require("../../index.js");
28
+ const abi = import_iSecuritizeKYCFactory.iSecuritizeKYCFactoryAbi;
29
+ class SecuritizeKYCFactory extends import_base.BaseContract {
30
+ investorCache;
31
+ #degenNFT;
32
+ constructor(options, address) {
33
+ super(options, {
34
+ addr: address,
35
+ name: "SecuritizeKYCFactory",
36
+ abi
37
+ });
38
+ }
39
+ async precomputeWalletAddress(creditManager, investor) {
40
+ return this.contract.read.precomputeWalletAddress([
41
+ creditManager,
42
+ investor
43
+ ]);
44
+ }
45
+ async getWallet(creditAccount) {
46
+ return this.contract.read.getWallet([creditAccount]);
47
+ }
48
+ /**
49
+ * Returns the investor address for a credit account.
50
+ * @param creditAccount - Credit account address
51
+ * @param fromCache - If true, use and update an in-memory cache (creditAccount -> investor). On cache miss, loads from contract and stores the result for future calls.
52
+ */
53
+ async getInvestor(creditAccount, fromCache) {
54
+ if (fromCache && this.investorCache?.has(creditAccount)) {
55
+ return this.investorCache.get(creditAccount);
56
+ }
57
+ const investor = await this.contract.read.getInvestor([creditAccount]);
58
+ if (fromCache) {
59
+ if (!this.investorCache) {
60
+ this.investorCache = new import__.AddressMap();
61
+ }
62
+ this.investorCache.upsert(creditAccount, investor);
63
+ }
64
+ return investor;
65
+ }
66
+ async getDSTokens() {
67
+ const degenNFT = await this.getDegenNFT();
68
+ const tokens = await this.client.readContract({
69
+ address: degenNFT,
70
+ abi: import_iSecuritizeDegenNFT.iSecuritizeDegenNFTAbi,
71
+ functionName: "getDSTokens"
72
+ });
73
+ return [...tokens];
74
+ }
75
+ multicall(creditAccount, calls, tokensToRegister) {
76
+ return this.createRawTx({
77
+ functionName: "multicall",
78
+ args: [creditAccount, calls, tokensToRegister]
79
+ });
80
+ }
81
+ openCreditAccount(creditManager, calls, tokensToRegister) {
82
+ return this.createRawTx({
83
+ functionName: "openCreditAccount",
84
+ args: [creditManager, calls, tokensToRegister]
85
+ });
86
+ }
87
+ async getDegenNFT() {
88
+ if (!this.#degenNFT) {
89
+ this.#degenNFT = await this.contract.read.getDegenNFT();
90
+ }
91
+ return this.#degenNFT;
92
+ }
93
+ }
94
+ // Annotate the CommonJS export names for ESM import in node:
95
+ 0 && (module.exports = {
96
+ SecuritizeKYCFactory
97
+ });
@@ -18,11 +18,15 @@ module.exports = __toCommonJS(pool_exports);
18
18
  __reExport(pool_exports, require("./GaugeContract.js"), module.exports);
19
19
  __reExport(pool_exports, require("./LinearInterestRateModelContract.js"), module.exports);
20
20
  __reExport(pool_exports, require("./PoolSuite.js"), module.exports);
21
+ __reExport(pool_exports, require("./PoolV310Contract.js"), module.exports);
22
+ __reExport(pool_exports, require("./SecuritizeKYCFactory.js"), module.exports);
21
23
  __reExport(pool_exports, require("./types.js"), module.exports);
22
24
  // Annotate the CommonJS export names for ESM import in node:
23
25
  0 && (module.exports = {
24
26
  ...require("./GaugeContract.js"),
25
27
  ...require("./LinearInterestRateModelContract.js"),
26
28
  ...require("./PoolSuite.js"),
29
+ ...require("./PoolV310Contract.js"),
30
+ ...require("./SecuritizeKYCFactory.js"),
27
31
  ...require("./types.js")
28
32
  });
@@ -0,0 +1,391 @@
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 PoolService_exports = {};
20
+ __export(PoolService_exports, {
21
+ PoolService: () => PoolService
22
+ });
23
+ module.exports = __toCommonJS(PoolService_exports);
24
+ var import_generated = require("../../abi/310/generated.js");
25
+ var import_iERC20 = require("../../abi/iERC20.js");
26
+ var import_iERC20ZapperDeposits = require("../../abi/iERC20ZapperDeposits.js");
27
+ var import_iETHZapperDeposits = require("../../abi/iETHZapperDeposits.js");
28
+ var import_iZapper = require("../../abi/iZapper.js");
29
+ var import_base = require("../base/index.js");
30
+ var import__ = require("../index.js");
31
+ 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
+ class PoolService extends import_base.SDKConstruct {
43
+ 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
+ return this.#depositTokensIn(pool, true);
54
+ }
55
+ 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
+ return this.#depositTokensOut(pool, tokenIn, true);
66
+ }
67
+ 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
+ return this.#depositMetadata("classic", pool, tokenIn, tokenOut, true);
90
+ }
91
+ addLiquidity(props) {
92
+ 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
+ const { zapper } = meta;
100
+ if (zapper && (0, import__.hexEq)(zapper.tokenIn.addr, NATIVE_ADDRESS)) {
101
+ return {
102
+ target: zapper.baseParams.addr,
103
+ abi: import_iETHZapperDeposits.iethZapperDepositsAbi,
104
+ functionName: "depositWithReferral",
105
+ args: [wallet, referralCode],
106
+ value: collateral.balance
107
+ };
108
+ } else if (zapper) {
109
+ return permit ? {
110
+ target: zapper.baseParams.addr,
111
+ abi: import_iERC20ZapperDeposits.ierc20ZapperDepositsAbi,
112
+ functionName: "depositWithReferralAndPermit",
113
+ args: [
114
+ collateral.balance,
115
+ wallet,
116
+ referralCode,
117
+ permit.deadline,
118
+ permit.v,
119
+ permit.r,
120
+ permit.s
121
+ ]
122
+ } : {
123
+ target: zapper.baseParams.addr,
124
+ abi: import_iERC20ZapperDeposits.ierc20ZapperDepositsAbi,
125
+ functionName: "depositWithReferral",
126
+ args: [collateral.balance, wallet, referralCode]
127
+ };
128
+ } else {
129
+ return {
130
+ target: pool,
131
+ abi: import_generated.iPoolV310Abi,
132
+ functionName: "depositWithReferral",
133
+ args: [collateral.balance, wallet, referralCode]
134
+ };
135
+ }
136
+ }
137
+ 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
+ return this.#withdrawalTokensIn(pool, true);
148
+ }
149
+ 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
+ return this.#withdrawalTokensOut(pool, tokenIn, true);
160
+ }
161
+ removeLiquidity(props) {
162
+ 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
+ if (meta.zapper) {
175
+ return permit ? {
176
+ target: meta.zapper.baseParams.addr,
177
+ abi: import_iZapper.iZapperAbi,
178
+ functionName: "redeemWithPermit",
179
+ args: [
180
+ amount,
181
+ wallet,
182
+ permit.deadline,
183
+ permit.v,
184
+ permit.r,
185
+ permit.s
186
+ ]
187
+ } : {
188
+ target: meta.zapper.baseParams.addr,
189
+ abi: import_iZapper.iZapperAbi,
190
+ functionName: "redeem",
191
+ args: [amount, wallet]
192
+ };
193
+ }
194
+ return {
195
+ target: pool,
196
+ abi: import_generated.iPoolV310Abi,
197
+ functionName: "redeem",
198
+ args: [amount, wallet, wallet]
199
+ };
200
+ }
201
+ 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
+ return this.#withdrawalMetadata("classic", pool, tokenIn, tokenOut, true);
224
+ }
225
+ /**
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
228
+ */
229
+ #getDepositZappers(poolAddr) {
230
+ 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
+ );
234
+ }
235
+ #depositTokensIn(poolAddr, allowDirectDeposit) {
236
+ const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
237
+ const result = new import__.AddressSet();
238
+ if (allowDirectDeposit) {
239
+ result.add(pool.underlying);
240
+ }
241
+ const zappers = this.#getDepositZappers(poolAddr);
242
+ for (const z of zappers) {
243
+ if ((0, import__.hexEq)(z.tokenOut.addr, poolAddr)) {
244
+ result.add(z.tokenIn.addr);
245
+ }
246
+ }
247
+ if (result.size === 0) {
248
+ throw new Error(
249
+ `No tokensIn found for pool ${this.labelAddress(poolAddr)}`
250
+ );
251
+ }
252
+ return result.asArray();
253
+ }
254
+ #withdrawalTokensIn(poolAddr, allowDirectDeposit) {
255
+ const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
256
+ const result = new import__.AddressSet();
257
+ if (allowDirectDeposit && pool) {
258
+ result.add(poolAddr);
259
+ }
260
+ const zappers = this.#getDepositZappers(poolAddr);
261
+ for (const z of zappers) {
262
+ result.add(z.tokenOut.addr);
263
+ }
264
+ if (result.size === 0) {
265
+ throw new Error(
266
+ `No tokensIn found for pool ${this.labelAddress(poolAddr)}`
267
+ );
268
+ }
269
+ return result.asArray();
270
+ }
271
+ #depositTokensOut(poolAddr, tokenIn, allowDirectDeposit) {
272
+ const result = new import__.AddressSet();
273
+ const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
274
+ const zappers = this.#getDepositZappers(poolAddr);
275
+ for (const z of zappers) {
276
+ if ((0, import__.hexEq)(z.tokenIn.addr, tokenIn)) {
277
+ result.add(z.tokenOut.addr);
278
+ }
279
+ }
280
+ if (allowDirectDeposit && (0, import__.hexEq)(tokenIn, pool.underlying)) {
281
+ result.add(poolAddr);
282
+ }
283
+ if (result.size === 0) {
284
+ throw new Error(
285
+ `No tokensOut found for tokenIn ${this.labelAddress(
286
+ tokenIn
287
+ )} on pool ${this.labelAddress(poolAddr)}`
288
+ );
289
+ }
290
+ const r = result.asArray();
291
+ return r;
292
+ }
293
+ #withdrawalTokensOut(poolAddr, tokenIn, allowDirectDeposit) {
294
+ const result = new import__.AddressSet();
295
+ const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
296
+ const zappers = this.#getDepositZappers(poolAddr);
297
+ for (const z of zappers) {
298
+ if ((0, import__.hexEq)(z.tokenOut.addr, tokenIn)) {
299
+ result.add(z.tokenIn.addr);
300
+ }
301
+ }
302
+ if (allowDirectDeposit && (0, import__.hexEq)(tokenIn, poolAddr)) {
303
+ result.add(pool.underlying);
304
+ }
305
+ if (result.size === 0) {
306
+ throw new Error(
307
+ `No tokensOut found for tokenIn ${this.labelAddress(
308
+ tokenIn
309
+ )} on pool ${this.labelAddress(poolAddr)}`
310
+ );
311
+ }
312
+ const r = result.asArray();
313
+ return r;
314
+ }
315
+ /**
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
318
+ */
319
+ #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
+ );
323
+ if (zappers && zappers.length > 1) {
324
+ throw new Error(
325
+ `Multiple zappers found for tokenIn ${this.labelAddress(
326
+ tokenIn
327
+ )} and tokenOut ${this.labelAddress(
328
+ tokenOut
329
+ )} on pool ${this.labelAddress(poolAddr)}`
330
+ );
331
+ }
332
+ return zappers?.[0];
333
+ }
334
+ #depositMetadata(type, poolAddr, tokenIn, tokenOut, allowDirectDeposit) {
335
+ if (!tokenOut) {
336
+ throw new Error("tokenOut is required for classic pool deposit");
337
+ }
338
+ const { pool } = this.sdk.marketRegister.findByPool(poolAddr);
339
+ const zapper = this.#getDepositZapper(poolAddr, tokenIn, tokenOut);
340
+ if (!zapper && !allowDirectDeposit) {
341
+ throw new Error(
342
+ `No zapper found for tokenIn ${this.labelAddress(
343
+ tokenIn
344
+ )} and tokenOut ${this.labelAddress(
345
+ tokenOut
346
+ )} on pool ${this.labelAddress(poolAddr)}`
347
+ );
348
+ }
349
+ return {
350
+ zapper,
351
+ // zapper or pool itself
352
+ approveTarget: zapper?.baseParams.addr ?? pool.pool.address,
353
+ // TODO: instead of permissible, return permitType зависимости от tokenIn
354
+ // "none" | "eip2612" | "dai_like";
355
+ permissible: !!zapper && !(0, import__.hexEq)(tokenIn, NATIVE_ADDRESS),
356
+ type
357
+ };
358
+ }
359
+ #withdrawalMetadata(type, poolAddr, tokenIn, tokenOut, allowDirectDeposit) {
360
+ if (!tokenOut) {
361
+ throw new Error("tokenOut is required for classic pool deposit");
362
+ }
363
+ const zapper = this.#getDepositZapper(poolAddr, tokenOut, tokenIn);
364
+ if (!zapper && !allowDirectDeposit) {
365
+ throw new Error(
366
+ `No zapper found for tokenIn ${this.labelAddress(
367
+ tokenOut
368
+ )} and tokenOut ${this.labelAddress(
369
+ tokenIn
370
+ )} on pool ${this.labelAddress(poolAddr)}`
371
+ );
372
+ }
373
+ return {
374
+ zapper,
375
+ // zapper or pool itself
376
+ approveTarget: zapper?.baseParams.addr,
377
+ // TODO: instead of permissible, return permitType зависимости от tokenIn
378
+ // "none" | "eip2612" | "dai_like";
379
+ permissible: !!zapper,
380
+ type
381
+ };
382
+ }
383
+ #describeUnderlying(pool) {
384
+ const market = this.sdk.marketRegister.findByPool(pool);
385
+ return this.sdk.tokensMeta.mustGet(market.underlying);
386
+ }
387
+ }
388
+ // Annotate the CommonJS export names for ESM import in node:
389
+ 0 && (module.exports = {
390
+ PoolService
391
+ });
@@ -15,12 +15,10 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
15
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
16
  var pools_exports = {};
17
17
  module.exports = __toCommonJS(pools_exports);
18
- __reExport(pools_exports, require("./AbstractPoolService.js"), module.exports);
19
- __reExport(pools_exports, require("./createPoolService.js"), module.exports);
18
+ __reExport(pools_exports, require("./PoolService.js"), module.exports);
20
19
  __reExport(pools_exports, require("./types.js"), module.exports);
21
20
  // Annotate the CommonJS export names for ESM import in node:
22
21
  0 && (module.exports = {
23
- ...require("./AbstractPoolService.js"),
24
- ...require("./createPoolService.js"),
22
+ ...require("./PoolService.js"),
25
23
  ...require("./types.js")
26
24
  });
@@ -37,7 +37,7 @@ class AddressMap {
37
37
  this.#name = name;
38
38
  }
39
39
  /**
40
- * Adds or updates value, undefined removes value
40
+ * Adds or overwrites value, undefined removes value
41
41
  * @param address
42
42
  * @param value
43
43
  */
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var sendRawTx_exports = {};
20
20
  __export(sendRawTx_exports, {
21
+ estimateRawTxGas: () => estimateRawTxGas,
21
22
  sendRawTx: () => sendRawTx
22
23
  });
23
24
  module.exports = __toCommonJS(sendRawTx_exports);
@@ -36,7 +37,22 @@ async function sendRawTx(client, params) {
36
37
  value: BigInt(tx.value)
37
38
  });
38
39
  }
40
+ async function estimateRawTxGas(client, params) {
41
+ const { tx, ...rest } = params;
42
+ return (0, import_utils.getAction)(
43
+ client,
44
+ import_actions.estimateGas,
45
+ "estimateGas"
46
+ )({
47
+ ...rest,
48
+ account: params.account,
49
+ data: tx.callData,
50
+ to: tx.to,
51
+ value: BigInt(tx.value)
52
+ });
53
+ }
39
54
  // Annotate the CommonJS export names for ESM import in node:
40
55
  0 && (module.exports = {
56
+ estimateRawTxGas,
41
57
  sendRawTx
42
58
  });