@gearbox-protocol/sdk 13.3.0-next.3 → 13.3.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 (216) hide show
  1. package/dist/cjs/common-utils/charts/credit-manager-payload.js +16 -0
  2. package/dist/cjs/common-utils/charts/credit-manager.js +134 -0
  3. package/dist/cjs/common-utils/charts/credit-session.js +257 -0
  4. package/dist/cjs/common-utils/charts/credit-sessions-payload.js +16 -0
  5. package/dist/cjs/common-utils/charts/graph-payload.js +16 -0
  6. package/dist/cjs/common-utils/charts/index.js +36 -0
  7. package/dist/cjs/common-utils/charts/pool-payload.js +16 -0
  8. package/dist/cjs/common-utils/charts/pool.js +199 -0
  9. package/dist/cjs/common-utils/charts/token-data.js +91 -0
  10. package/dist/cjs/common-utils/index.js +4 -0
  11. package/dist/cjs/common-utils/static/index.js +28 -0
  12. package/dist/cjs/common-utils/static/migration-config.js +16 -0
  13. package/dist/cjs/common-utils/static/pool-config.js +16 -0
  14. package/dist/cjs/common-utils/static/strategy.js +16 -0
  15. package/dist/cjs/common-utils/static/trading-pair.js +16 -0
  16. package/dist/cjs/common-utils/utils/{assetsMath.js → assets-math.js} +13 -13
  17. package/dist/cjs/common-utils/utils/{bigintMath.js → bigint-math.js} +3 -3
  18. package/dist/cjs/common-utils/utils/creditAccount/{calcHealthFactor.js → calc-health-factor.js} +9 -9
  19. package/dist/cjs/common-utils/utils/creditAccount/{calcOverallAPY.js → calc-overall-apy.js} +8 -8
  20. package/dist/cjs/common-utils/utils/creditAccount/{calcQuotaBorrowRate.js → calc-quota-borrow-rate.js} +3 -3
  21. package/dist/cjs/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.js → calc-relative-base-borrow-rate.js} +3 -3
  22. package/dist/cjs/common-utils/utils/creditAccount/debt.js +4 -4
  23. package/dist/cjs/common-utils/utils/creditAccount/{getTimeToLiquidation.js → get-time-to-liquidation.js} +3 -3
  24. package/dist/cjs/common-utils/utils/creditAccount/index.js +16 -16
  25. package/dist/cjs/common-utils/utils/creditAccount/{liquidationPrice.js → liquidation-price.js} +3 -3
  26. package/dist/cjs/common-utils/utils/creditAccount/{quotaUtils.js → quota-utils.js} +8 -8
  27. package/dist/cjs/common-utils/utils/creditAccount/sort.js +3 -3
  28. package/dist/cjs/common-utils/utils/index.js +6 -8
  29. package/dist/cjs/common-utils/utils/{priceMath.js → price-math.js} +3 -3
  30. package/dist/cjs/dev/AccountOpener.js +5 -45
  31. package/dist/cjs/plugins/zappers/ZappersPlugin.js +144 -0
  32. package/dist/cjs/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +6 -110
  33. package/dist/cjs/plugins/zappers/index.js +26 -0
  34. package/dist/cjs/plugins/zappers/package.json +1 -0
  35. package/dist/cjs/rewards/apy/index.js +24 -0
  36. package/dist/cjs/rewards/apy/output-details.js +16 -0
  37. package/dist/cjs/rewards/apy/output.js +16 -0
  38. package/dist/cjs/rewards/index.js +24 -0
  39. package/dist/cjs/rewards/package.json +1 -0
  40. package/dist/cjs/rewards/rewards/api.js +226 -0
  41. package/dist/cjs/rewards/rewards/apy.js +177 -0
  42. package/dist/cjs/rewards/rewards/common.js +16 -0
  43. package/dist/cjs/rewards/rewards/extra-apy.js +132 -0
  44. package/dist/cjs/rewards/rewards/index.js +28 -0
  45. package/dist/cjs/rewards/rewards/merkl-api.js +52 -0
  46. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +104 -462
  47. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +5 -16
  48. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -1
  49. package/dist/cjs/sdk/base/TokensMeta.js +32 -255
  50. package/dist/cjs/sdk/base/index.js +0 -2
  51. package/dist/cjs/sdk/chain/chains.js +1 -2
  52. package/dist/cjs/sdk/constants/index.js +2 -0
  53. package/dist/cjs/sdk/{base/token-types.js → constants/phantom-tokens.js} +3 -9
  54. package/dist/cjs/sdk/market/MarketRegister.js +2 -2
  55. package/dist/cjs/sdk/market/MarketSuite.js +0 -6
  56. package/dist/cjs/sdk/market/index.js +1 -3
  57. package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
  58. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -17
  59. package/dist/cjs/sdk/market/pool/index.js +0 -4
  60. package/dist/cjs/sdk/pools/AbstractPoolService.js +137 -0
  61. package/dist/cjs/{abi/iStateSerializer.js → sdk/pools/PoolServiceV310.js} +8 -14
  62. package/dist/cjs/sdk/pools/createPoolService.js +35 -0
  63. package/dist/cjs/sdk/pools/index.js +4 -2
  64. package/dist/cjs/sdk/utils/AddressMap.js +1 -1
  65. package/dist/cjs/sdk/utils/viem/sendRawTx.js +0 -16
  66. package/dist/esm/common-utils/charts/credit-manager.js +115 -0
  67. package/dist/esm/common-utils/charts/credit-session.js +233 -0
  68. package/dist/esm/common-utils/charts/credit-sessions-payload.js +0 -0
  69. package/dist/esm/common-utils/charts/graph-payload.js +0 -0
  70. package/dist/esm/common-utils/charts/index.js +8 -0
  71. package/dist/esm/common-utils/charts/pool-payload.js +0 -0
  72. package/dist/esm/common-utils/charts/pool.js +179 -0
  73. package/dist/esm/common-utils/charts/token-data.js +67 -0
  74. package/dist/esm/common-utils/index.js +2 -0
  75. package/dist/esm/common-utils/static/index.js +4 -0
  76. package/dist/esm/common-utils/static/migration-config.js +0 -0
  77. package/dist/esm/common-utils/static/pool-config.js +0 -0
  78. package/dist/esm/common-utils/static/strategy.js +0 -0
  79. package/dist/esm/common-utils/static/trading-pair.js +0 -0
  80. package/dist/esm/common-utils/utils/{assetsMath.js → assets-math.js} +2 -2
  81. package/dist/esm/common-utils/utils/creditAccount/{calcHealthFactor.js → calc-health-factor.js} +2 -2
  82. package/dist/esm/common-utils/utils/creditAccount/{calcOverallAPY.js → calc-overall-apy.js} +1 -1
  83. package/dist/esm/common-utils/utils/creditAccount/debt.js +2 -2
  84. package/dist/esm/common-utils/utils/creditAccount/index.js +8 -8
  85. package/dist/esm/common-utils/utils/creditAccount/{quotaUtils.js → quota-utils.js} +1 -1
  86. package/dist/esm/common-utils/utils/creditAccount/sort.js +1 -1
  87. package/dist/esm/common-utils/utils/index.js +3 -4
  88. package/dist/esm/dev/AccountOpener.js +6 -47
  89. package/dist/esm/plugins/zappers/ZappersPlugin.js +126 -0
  90. package/dist/esm/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +2 -109
  91. package/dist/esm/plugins/zappers/index.js +3 -0
  92. package/dist/esm/plugins/zappers/package.json +1 -0
  93. package/dist/esm/plugins/zappers/types.js +0 -0
  94. package/dist/esm/rewards/apy/index.js +2 -0
  95. package/dist/esm/rewards/apy/output-details.js +0 -0
  96. package/dist/esm/rewards/apy/output.js +0 -0
  97. package/dist/esm/rewards/index.js +2 -0
  98. package/dist/esm/rewards/package.json +1 -0
  99. package/dist/esm/rewards/rewards/api.js +204 -0
  100. package/dist/esm/rewards/rewards/apy.js +160 -0
  101. package/dist/esm/rewards/rewards/common.js +0 -0
  102. package/dist/esm/rewards/rewards/extra-apy.js +101 -0
  103. package/dist/esm/rewards/rewards/index.js +4 -0
  104. package/dist/esm/rewards/rewards/merkl-api.js +18 -0
  105. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +104 -462
  106. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +5 -16
  107. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -1
  108. package/dist/esm/sdk/base/TokensMeta.js +32 -261
  109. package/dist/esm/sdk/base/index.js +0 -1
  110. package/dist/esm/sdk/chain/chains.js +1 -2
  111. package/dist/esm/sdk/constants/index.js +1 -0
  112. package/dist/esm/sdk/{base/token-types.js → constants/phantom-tokens.js} +0 -4
  113. package/dist/esm/sdk/market/MarketRegister.js +2 -2
  114. package/dist/esm/sdk/market/MarketSuite.js +0 -6
  115. package/dist/esm/sdk/market/index.js +0 -1
  116. package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
  117. package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -17
  118. package/dist/esm/sdk/market/pool/index.js +0 -2
  119. package/dist/esm/sdk/pools/AbstractPoolService.js +113 -0
  120. package/dist/esm/sdk/pools/PoolServiceV310.js +6 -0
  121. package/dist/esm/sdk/pools/createPoolService.js +11 -0
  122. package/dist/esm/sdk/pools/index.js +2 -1
  123. package/dist/esm/sdk/utils/AddressMap.js +1 -1
  124. package/dist/esm/sdk/utils/viem/sendRawTx.js +1 -19
  125. package/dist/types/common-utils/charts/credit-manager-payload.d.ts +50 -0
  126. package/dist/types/common-utils/charts/credit-manager.d.ts +48 -0
  127. package/dist/types/common-utils/charts/credit-session.d.ts +111 -0
  128. package/dist/types/common-utils/charts/credit-sessions-payload.d.ts +111 -0
  129. package/dist/types/common-utils/charts/graph-payload.d.ts +10 -0
  130. package/dist/types/common-utils/charts/index.d.ts +8 -0
  131. package/dist/types/common-utils/charts/pool-payload.d.ts +111 -0
  132. package/dist/types/common-utils/charts/pool.d.ts +91 -0
  133. package/dist/types/common-utils/charts/token-data.d.ts +20 -0
  134. package/dist/types/common-utils/index.d.ts +2 -0
  135. package/dist/types/common-utils/static/index.d.ts +4 -0
  136. package/dist/types/common-utils/static/migration-config.d.ts +10 -0
  137. package/dist/types/common-utils/static/pool-config.d.ts +11 -0
  138. package/dist/types/common-utils/static/strategy.d.ts +78 -0
  139. package/dist/types/common-utils/static/trading-pair.d.ts +15 -0
  140. package/dist/types/common-utils/utils/creditAccount/index.d.ts +8 -8
  141. package/dist/types/common-utils/utils/index.d.ts +3 -4
  142. package/dist/types/plugins/zappers/ZappersPlugin.d.ts +18 -0
  143. package/dist/types/plugins/zappers/extraZappers.d.ts +6 -0
  144. package/dist/types/plugins/zappers/index.d.ts +3 -0
  145. package/dist/types/plugins/zappers/types.d.ts +12 -0
  146. package/dist/types/rewards/apy/index.d.ts +2 -0
  147. package/dist/types/rewards/apy/output-details.d.ts +96 -0
  148. package/dist/types/rewards/apy/output.d.ts +22 -0
  149. package/dist/types/rewards/index.d.ts +2 -0
  150. package/dist/types/rewards/rewards/api.d.ts +49 -0
  151. package/dist/types/rewards/rewards/apy.d.ts +41 -0
  152. package/dist/types/rewards/rewards/common.d.ts +16 -0
  153. package/dist/types/rewards/rewards/extra-apy.d.ts +30 -0
  154. package/dist/types/rewards/rewards/index.d.ts +4 -0
  155. package/dist/types/rewards/rewards/merkl-api.d.ts +45 -0
  156. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +27 -123
  157. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  158. package/dist/types/sdk/accounts/types.d.ts +8 -108
  159. package/dist/types/sdk/base/TokensMeta.d.ts +18 -34
  160. package/dist/types/sdk/base/index.d.ts +0 -1
  161. package/dist/types/sdk/base/types.d.ts +1 -0
  162. package/dist/types/sdk/chain/chains.d.ts +1 -1
  163. package/dist/types/sdk/constants/index.d.ts +1 -0
  164. package/dist/types/sdk/constants/phantom-tokens.d.ts +2 -0
  165. package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
  166. package/dist/types/sdk/market/MarketSuite.d.ts +0 -3
  167. package/dist/types/sdk/market/index.d.ts +0 -1
  168. package/dist/types/sdk/market/pool/PoolSuite.d.ts +0 -2
  169. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
  170. package/dist/types/sdk/market/pool/index.d.ts +0 -2
  171. package/dist/types/sdk/pools/AbstractPoolService.d.ts +9 -0
  172. package/dist/types/sdk/pools/PoolServiceV310.d.ts +4 -0
  173. package/dist/types/sdk/pools/createPoolService.d.ts +3 -0
  174. package/dist/types/sdk/pools/index.d.ts +2 -1
  175. package/dist/types/sdk/pools/types.d.ts +63 -84
  176. package/dist/types/sdk/utils/AddressMap.d.ts +1 -1
  177. package/dist/types/sdk/utils/viem/sendRawTx.d.ts +1 -5
  178. package/package.json +6 -1
  179. package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
  180. package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
  181. package/dist/cjs/common-utils/utils/endpoints.js +0 -65
  182. package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +0 -97
  183. package/dist/cjs/sdk/pools/PoolService.js +0 -391
  184. package/dist/esm/abi/310/iSecuritizeDegenNFT.js +0 -239
  185. package/dist/esm/abi/310/iSecuritizeKYCFactory.js +0 -254
  186. package/dist/esm/abi/iStateSerializer.js +0 -12
  187. package/dist/esm/common-utils/utils/endpoints.js +0 -41
  188. package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +0 -73
  189. package/dist/esm/sdk/pools/PoolService.js +0 -371
  190. package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +0 -324
  191. package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +0 -322
  192. package/dist/types/abi/iStateSerializer.d.ts +0 -11
  193. package/dist/types/common-utils/utils/endpoints.d.ts +0 -27
  194. package/dist/types/sdk/base/token-types.d.ts +0 -33
  195. package/dist/types/sdk/market/ZapperRegister.d.ts +0 -17
  196. package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +0 -345
  197. package/dist/types/sdk/market/types.d.ts +0 -10
  198. package/dist/types/sdk/pools/PoolService.d.ts +0 -14
  199. /package/dist/cjs/{sdk/market → plugins/zappers}/types.js +0 -0
  200. /package/dist/esm/{sdk/market/types.js → common-utils/charts/credit-manager-payload.js} +0 -0
  201. /package/dist/esm/common-utils/utils/{bigintMath.js → bigint-math.js} +0 -0
  202. /package/dist/esm/common-utils/utils/creditAccount/{calcQuotaBorrowRate.js → calc-quota-borrow-rate.js} +0 -0
  203. /package/dist/esm/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.js → calc-relative-base-borrow-rate.js} +0 -0
  204. /package/dist/esm/common-utils/utils/creditAccount/{getTimeToLiquidation.js → get-time-to-liquidation.js} +0 -0
  205. /package/dist/esm/common-utils/utils/creditAccount/{liquidationPrice.js → liquidation-price.js} +0 -0
  206. /package/dist/esm/common-utils/utils/{priceMath.js → price-math.js} +0 -0
  207. /package/dist/types/common-utils/utils/{assetsMath.d.ts → assets-math.d.ts} +0 -0
  208. /package/dist/types/common-utils/utils/{bigintMath.d.ts → bigint-math.d.ts} +0 -0
  209. /package/dist/types/common-utils/utils/creditAccount/{calcHealthFactor.d.ts → calc-health-factor.d.ts} +0 -0
  210. /package/dist/types/common-utils/utils/creditAccount/{calcOverallAPY.d.ts → calc-overall-apy.d.ts} +0 -0
  211. /package/dist/types/common-utils/utils/creditAccount/{calcQuotaBorrowRate.d.ts → calc-quota-borrow-rate.d.ts} +0 -0
  212. /package/dist/types/common-utils/utils/creditAccount/{calcRelativeBaseBorrowRate.d.ts → calc-relative-base-borrow-rate.d.ts} +0 -0
  213. /package/dist/types/common-utils/utils/creditAccount/{getTimeToLiquidation.d.ts → get-time-to-liquidation.d.ts} +0 -0
  214. /package/dist/types/common-utils/utils/creditAccount/{liquidationPrice.d.ts → liquidation-price.d.ts} +0 -0
  215. /package/dist/types/common-utils/utils/creditAccount/{quotaUtils.d.ts → quota-utils.d.ts} +0 -0
  216. /package/dist/types/common-utils/utils/{priceMath.d.ts → price-math.d.ts} +0 -0
@@ -42,7 +42,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
42
42
  })
43
43
  };
44
44
  const calls = [...priceUpdatesCalls, addBotCall];
45
- const tx = targetContract.type === "creditAccount" ? await this.multicallTx(cm, targetContract.creditAccount, calls) : void 0;
45
+ const tx = targetContract.type === "creditAccount" ? cm.creditFacade.multicall(targetContract.creditAccount, calls) : void 0;
46
46
  return { tx, calls, creditFacade: cm.creditFacade };
47
47
  }
48
48
  /**
@@ -77,7 +77,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
77
77
  averageQuota
78
78
  })
79
79
  ];
80
- const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
80
+ const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
81
81
  return { tx, calls, creditFacade: cm.creditFacade };
82
82
  }
83
83
  /**
@@ -90,13 +90,11 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
90
90
  creditAccount: ca,
91
91
  permits,
92
92
  to,
93
- tokensToClaim,
94
- calls: wrapCalls = []
93
+ tokensToClaim
95
94
  }) {
96
95
  const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
97
96
  const addCollateral = collateralAssets.filter((a) => a.balance > 0);
98
97
  const router = this.sdk.routerFor(ca);
99
- const unwrapCalls = await this.getRedeemDiffCalls(1n, ca.creditManager) ?? [];
100
98
  const claimPath = await router.findClaimAllRewards({
101
99
  tokensToClaim,
102
100
  creditAccount: ca
@@ -108,21 +106,14 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
108
106
  const calls = [
109
107
  ...operation === "close" ? [] : priceUpdates,
110
108
  ...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
111
- ...wrapCalls,
112
109
  ...this.prepareDisableQuotas(ca),
113
110
  ...this.prepareDecreaseDebt(ca),
114
- ...unwrapCalls,
115
111
  ...claimPath.calls,
116
112
  ...assetsToWithdraw.map(
117
113
  (t) => this.prepareWithdrawToken(ca.creditFacade, t.token, MAX_UINT256, to)
118
114
  )
119
115
  ];
120
- const tx = await this.closeCreditAccountTx(
121
- cm,
122
- ca.creditAccount,
123
- calls,
124
- operation
125
- );
116
+ const tx = operation === "close" ? cm.creditFacade.closeCreditAccount(ca.creditAccount, calls) : cm.creditFacade.multicall(ca.creditAccount, calls);
126
117
  return { tx, calls, creditFacade: cm.creditFacade };
127
118
  }
128
119
  /**
@@ -146,13 +137,11 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
146
137
  creditManager: ca.creditManager,
147
138
  creditAccount: ca
148
139
  });
149
- const wrapCalls = await this.getDepositDiffCalls(1n, ca.creditManager) ?? [];
150
140
  const addCollateral = collateralAssets.filter((a) => a.balance > 0);
151
141
  const calls = [
152
142
  ...priceUpdates,
153
143
  ...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
154
144
  ...claimPath.calls,
155
- ...wrapCalls,
156
145
  ...assetsToWithdraw.map(
157
146
  (t) => this.prepareWithdrawToken(ca.creditFacade, t.token, MAX_UINT256, to)
158
147
  )
@@ -196,7 +185,7 @@ class CreditAccountServiceV310 extends AbstractCreditAccountService {
196
185
  ...claimPath.calls,
197
186
  ...this.prepareUpdateQuotas(ca.creditFacade, { minQuota, averageQuota })
198
187
  ];
199
- const tx = await this.multicallTx(cm, ca.creditAccount, calls);
188
+ const tx = cm.creditFacade.multicall(ca.creditAccount, calls);
200
189
  return { tx, calls, creditFacade: cm.creditFacade };
201
190
  }
202
191
  async previewWithdrawLlamathenaProportionally(_) {
@@ -15,7 +15,7 @@ class ChainContractsRegister {
15
15
  logger;
16
16
  constructor(client, logger) {
17
17
  this.client = client;
18
- this.tokensMeta = new TokensMeta(client, logger);
18
+ this.tokensMeta = new TokensMeta(client);
19
19
  this.logger = logger;
20
20
  }
21
21
  resetContracts() {
@@ -1,10 +1,3 @@
1
- import {
2
- decodeAbiParameters,
3
- erc20Abi
4
- } from "viem";
5
- import { iSecuritizeDegenNFTAbi } from "../../abi/310/iSecuritizeDegenNFT.js";
6
- import { iSecuritizeKYCFactoryAbi } from "../../abi/310/iSecuritizeKYCFactory.js";
7
- import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
8
1
  import { iVersionAbi } from "../../abi/iVersion.js";
9
2
  import {
10
3
  AddressMap,
@@ -12,33 +5,16 @@ import {
12
5
  bytes32ToString,
13
6
  formatBN
14
7
  } from "../utils/index.js";
15
- import {
16
- KYC_UNDERLYING_DEFAULT,
17
- KYC_UNDERLYING_ON_DEMAND
18
- } from "./token-types.js";
19
8
  class TokensMeta extends AddressMap {
20
9
  #client;
21
- #tokenDataLoaded = new AddressSet();
22
- #logger;
23
- constructor(client, logger) {
10
+ #phantomTokensLoaded;
11
+ constructor(client) {
24
12
  super(void 0, "tokensMeta");
25
13
  this.#client = client;
26
- this.#logger = logger?.child?.({ name: "TokensMeta" }) ?? logger;
27
14
  }
28
15
  reset() {
29
16
  this.clear();
30
- this.#tokenDataLoaded.clear();
31
- }
32
- upsert(address, value) {
33
- let v = value;
34
- const existing = this.get(address);
35
- if (existing && v) {
36
- v = {
37
- ...existing,
38
- ...v
39
- };
40
- }
41
- super.upsert(address, v);
17
+ this.#phantomTokensLoaded = void 0;
42
18
  }
43
19
  symbol(token) {
44
20
  return this.mustGet(token).symbol;
@@ -47,78 +23,27 @@ class TokensMeta extends AddressMap {
47
23
  return this.mustGet(token).decimals;
48
24
  }
49
25
  /**
50
- * Returns true if the token is a phantom token, throws if the token data is not loaded
51
- * @param t
52
- * @returns
53
- */
54
- isPhantomToken(t) {
55
- if (!this.#tokenDataLoaded.has(t.addr)) {
56
- throw new Error(
57
- `extended token data not loaded for ${t.symbol} (${t.addr})`
58
- );
59
- }
60
- return !!t.contractType?.startsWith("PHANTOM_TOKEN::");
61
- }
62
- /**
63
- * Returns true if the token is a KYC underlying token, throws if the token data is not loaded
64
- * @param t
65
- * @returns
66
- */
67
- isKYCUnderlying(t) {
68
- if (!this.#tokenDataLoaded.has(t.addr)) {
69
- throw new Error(
70
- `extended token data not loaded for ${t.symbol} (${t.addr})`
71
- );
72
- }
73
- return !!t.contractType?.startsWith("KYC_UNDERLYING::");
74
- }
75
- /**
76
- * Returns true if the token is a DSToken, throws if the token data is not loaded
77
- * @param t
78
- * @returns
26
+ * Returns the phantom token type for a given token, or undefined for normal tokens
27
+ * Throws if the phantom token data is not loaded
79
28
  */
80
- isDSToken(t) {
81
- if (!this.#tokenDataLoaded.has(t.addr)) {
82
- throw new Error(
83
- `extended token data not loaded for ${t.symbol} (${t.addr})`
84
- );
29
+ phantomTokenType(token) {
30
+ if (!this.#phantomTokensLoaded?.has(token)) {
31
+ throw new Error("phantom token data not loaded");
85
32
  }
86
- return !!t.isDSToken;
33
+ return this.mustGet(token).phantomTokenType;
87
34
  }
88
35
  /**
89
36
  * Returns a map of all phantom tokens
90
- * Throws if token data is not loaded
37
+ * Throws if the phantom token data is not loaded
91
38
  */
92
39
  get phantomTokens() {
93
- const result = new AddressMap();
94
- for (const [token, meta] of this.entries()) {
95
- if (this.isPhantomToken(meta)) {
96
- result.upsert(token, meta);
97
- }
40
+ if (!this.#phantomTokensLoaded) {
41
+ throw new Error("phantom tokens not loaded");
98
42
  }
99
- return result;
100
- }
101
- /**
102
- * Returns a map of all KYC underlying tokens
103
- * Throws if token data is not loaded
104
- */
105
- get kycUnderlyings() {
106
- const result = new AddressMap();
107
- for (const [token, meta] of this.entries()) {
108
- if (this.isKYCUnderlying(meta)) {
109
- result.upsert(token, meta);
110
- }
111
- }
112
- return result;
113
- }
114
- get dsTokens() {
115
- const result = new AddressMap();
116
- for (const [token, meta] of this.entries()) {
117
- if (this.isDSToken(meta)) {
118
- result.upsert(token, meta);
119
- }
120
- }
121
- return result;
43
+ return new AddressMap(
44
+ this.entries().filter(([_, v]) => !!v.phantomTokenType),
45
+ "phantomTokens"
46
+ );
122
47
  }
123
48
  formatBN(arg0, arg1, arg2) {
124
49
  const token = typeof arg0 === "object" ? arg0.token : arg0;
@@ -139,184 +64,30 @@ class TokensMeta extends AddressMap {
139
64
  return meta;
140
65
  }
141
66
  /**
142
- * Loads token information about phantom tokens, KYC underlying tokens and DSTokens
143
- *
144
- * @param tokens - tokens to load data for, defaults to all tokens
67
+ * Loads phantom token data for all known tokens from chain
145
68
  */
146
- async loadTokenData(...tokens) {
147
- const tokenz = new AddressSet(tokens.length > 0 ? tokens : this.keys());
148
- const tokensToLoad = Array.from(tokenz.difference(this.#tokenDataLoaded));
149
- if (tokensToLoad.length === 0) {
150
- return;
151
- }
69
+ async loadPhantomTokens() {
70
+ this.#phantomTokensLoaded = new AddressSet();
71
+ const tokens = this.keys();
152
72
  const resp = await this.#client.multicall({
153
- contracts: tokensToLoad.flatMap(
154
- (t) => [
155
- {
156
- address: t,
157
- abi: iVersionAbi,
158
- functionName: "contractType"
159
- },
160
- {
161
- address: t,
162
- abi: iStateSerializerAbi,
163
- functionName: "serialize"
164
- }
165
- ]
73
+ contracts: tokens.map(
74
+ (t) => ({
75
+ address: t,
76
+ abi: iVersionAbi,
77
+ functionName: "contractType"
78
+ })
166
79
  ),
167
80
  allowFailure: true,
168
81
  batchSize: 0
169
82
  });
170
- this.#logger?.debug(`loaded ${resp.length} contract types`);
171
- const kycFactories = new AddressSet();
172
- for (let i = 0; i < tokensToLoad.length; i++) {
173
- const meta = this.#overrideTokenMeta(
174
- tokensToLoad[i],
175
- resp[2 * i],
176
- resp[2 * i + 1]
177
- );
178
- this.#tokenDataLoaded.add(tokensToLoad[i]);
179
- if (this.isKYCUnderlying(meta)) {
180
- kycFactories.add(meta.kycFactory);
181
- }
182
- }
183
- this.#logger?.debug(`found ${kycFactories.size} KYC factories`);
184
- await this.#loadDSTokens(kycFactories);
185
- }
186
- #overrideTokenMeta(token, contractTypeResp, serializeResp) {
187
- const meta = this.mustGet(token);
188
- if (contractTypeResp.status === "success") {
189
- const contractType = bytes32ToString(contractTypeResp.result);
190
- if (contractType.startsWith("KYC_UNDERLYING::")) {
191
- if (serializeResp.status === "success") {
192
- this.#overrideKYCUnderlying(meta, contractType, serializeResp.result);
193
- } else {
194
- throw new Error(
195
- `token ${meta.symbol} (${token}) is ${contractType} but serialize failed: ${serializeResp.error}`
196
- );
83
+ for (let i = 0; i < resp.length; i++) {
84
+ if (resp[i].status === "success") {
85
+ const contractType = bytes32ToString(resp[i].result);
86
+ if (contractType.startsWith("PHANTOM_TOKEN::")) {
87
+ this.mustGet(tokens[i]).phantomTokenType = contractType;
197
88
  }
198
- } else {
199
- this.upsert(token, {
200
- ...meta,
201
- contractType
202
- });
203
89
  }
204
- this.#logger?.debug(`token ${meta.symbol} is ${contractType}`);
205
- }
206
- return this.mustGet(token);
207
- }
208
- #overrideKYCUnderlying(meta, contractType, serialized) {
209
- if (contractType === KYC_UNDERLYING_DEFAULT) {
210
- const decoded = decodeAbiParameters(
211
- [
212
- { type: "address", name: "kycFactory" },
213
- { type: "address", name: "asset" }
214
- ],
215
- serialized
216
- );
217
- this.upsert(meta.addr, {
218
- ...meta,
219
- contractType,
220
- kycFactory: decoded[0],
221
- asset: decoded[1]
222
- });
223
- } else if (contractType === KYC_UNDERLYING_ON_DEMAND) {
224
- const decoded = decodeAbiParameters(
225
- [
226
- { type: "address", name: "kycFactory" },
227
- { type: "address", name: "asset" },
228
- { type: "address", name: "pool" },
229
- { type: "address", name: "liquidityProvider" }
230
- ],
231
- serialized
232
- );
233
- this.upsert(meta.addr, {
234
- ...meta,
235
- contractType,
236
- kycFactory: decoded[0],
237
- asset: decoded[1],
238
- pool: decoded[2],
239
- liquidityProvider: decoded[3]
240
- });
241
- }
242
- }
243
- async #loadDSTokens(kycFactories) {
244
- const degenNFTs = await this.#client.multicall({
245
- contracts: kycFactories.map((address) => {
246
- return {
247
- address,
248
- abi: iSecuritizeKYCFactoryAbi,
249
- functionName: "getDegenNFT"
250
- };
251
- }),
252
- allowFailure: false,
253
- batchSize: 0
254
- });
255
- const resp = await this.#client.multicall({
256
- contracts: degenNFTs.map((address) => {
257
- return {
258
- address,
259
- abi: iSecuritizeDegenNFTAbi,
260
- functionName: "getDSTokens"
261
- };
262
- }),
263
- allowFailure: false,
264
- batchSize: 0
265
- });
266
- const dsToken = new AddressSet(resp.flat());
267
- const tokensToLoad = dsToken.difference(new Set(this.keys()));
268
- this.#logger?.debug(
269
- `found ${dsToken.size} DSTokens in KYC factories, need to load ${tokensToLoad.size} basic metadata`
270
- );
271
- await this.#loadWithoutCompressor(tokensToLoad);
272
- for (const token of dsToken) {
273
- const meta = this.mustGet(token);
274
- this.upsert(token, {
275
- ...meta,
276
- isDSToken: true
277
- });
278
- this.#tokenDataLoaded.add(token);
279
- this.#logger?.debug(`token ${meta.symbol} (${token}) is a DSToken`);
280
- }
281
- }
282
- async #loadWithoutCompressor(tokens_) {
283
- if (tokens_.size === 0) {
284
- return;
285
- }
286
- const tokens = Array.from(tokens_);
287
- const resp = await this.#client.multicall({
288
- contracts: tokens.flatMap(
289
- (t) => [
290
- {
291
- address: t,
292
- abi: erc20Abi,
293
- functionName: "symbol"
294
- },
295
- {
296
- address: t,
297
- abi: erc20Abi,
298
- functionName: "name"
299
- },
300
- {
301
- address: t,
302
- abi: erc20Abi,
303
- functionName: "decimals"
304
- }
305
- ]
306
- ),
307
- allowFailure: false,
308
- batchSize: 0
309
- });
310
- this.#logger?.debug(
311
- `loaded ${resp.length} basic metadata without compressor`
312
- );
313
- for (let i = 0; i < tokens.length; i++) {
314
- this.upsert(tokens[i], {
315
- addr: tokens[i],
316
- symbol: resp[3 * i],
317
- name: resp[3 * i + 1],
318
- decimals: resp[3 * i + 2]
319
- });
90
+ this.#phantomTokensLoaded.add(tokens[i]);
320
91
  }
321
92
  }
322
93
  }
@@ -5,5 +5,4 @@ export * from "./errors.js";
5
5
  export * from "./PlaceholderContract.js";
6
6
  export * from "./SDKConstruct.js";
7
7
  export * from "./TokensMeta.js";
8
- export * from "./token-types.js";
9
8
  export * from "./types.js";
@@ -65,8 +65,7 @@ const chains = {
65
65
  "0x601067eba24bb5b558a184fc082525637e96a42d": "Gami Labs"
66
66
  },
67
67
  testMarketConfigurators: {
68
- "0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit",
69
- "0xE0527dE5908B3fc2e054B7eEE0DeF6c9965AbF24": "Securitize"
68
+ "0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit"
70
69
  },
71
70
  isPublic: true,
72
71
  wellKnownToken: {
@@ -4,4 +4,5 @@ export * from "./bot-permissions.js";
4
4
  export * from "./math.js";
5
5
  export * from "./networks.js";
6
6
  export * from "./periphery.js";
7
+ export * from "./phantom-tokens.js";
7
8
  export * from "./versions.js";
@@ -7,10 +7,6 @@ const PHANTOM_TOKEN_CONTRACT_TYPES = [
7
7
  "PHANTOM_TOKEN::STAKING_REWARDS",
8
8
  "PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
9
9
  ];
10
- const KYC_UNDERLYING_DEFAULT = "KYC_UNDERLYING::DEFAULT";
11
- const KYC_UNDERLYING_ON_DEMAND = "KYC_UNDERLYING::ON_DEMAND";
12
10
  export {
13
- KYC_UNDERLYING_DEFAULT,
14
- KYC_UNDERLYING_ON_DEMAND,
15
11
  PHANTOM_TOKEN_CONTRACT_TYPES
16
12
  };
@@ -1,4 +1,5 @@
1
1
  import { marketCompressorAbi } from "../../abi/compressors/marketCompressor.js";
2
+ import { SDKConstruct } from "../base/index.js";
2
3
  import {
3
4
  ADDRESS_0X0,
4
5
  AP_MARKET_COMPRESSOR,
@@ -8,8 +9,7 @@ import { AddressMap } from "../utils/index.js";
8
9
  import { simulateWithPriceUpdates } from "../utils/viem/index.js";
9
10
  import { MarketConfiguratorContract } from "./MarketConfiguratorContract.js";
10
11
  import { MarketSuite } from "./MarketSuite.js";
11
- import { ZapperRegister } from "./ZapperRegister.js";
12
- class MarketRegister extends ZapperRegister {
12
+ class MarketRegister extends SDKConstruct {
13
13
  /**
14
14
  * Mapping pool.address -> MarketSuite
15
15
  */
@@ -41,12 +41,6 @@ class MarketSuite extends SDKConstruct {
41
41
  this.priceOracle = createPriceOracle(sdk, marketData.priceOracle);
42
42
  this.lossPolicy = createLossPolicy(sdk, marketData.lossPolicy);
43
43
  }
44
- get underlying() {
45
- return this.pool.underlying;
46
- }
47
- async getKYCFactory() {
48
- return this.pool.getKYCFactory();
49
- }
50
44
  get dirty() {
51
45
  return this.configurator.dirty || this.pool.dirty || this.priceOracle.dirty || this.creditManagers.some((cm) => cm.dirty);
52
46
  }
@@ -5,4 +5,3 @@ export * from "./MarketSuite.js";
5
5
  export * from "./oracle/index.js";
6
6
  export * from "./pool/index.js";
7
7
  export * from "./pricefeeds/index.js";
8
- export * from "./types.js";
@@ -55,9 +55,6 @@ class PoolSuite extends SDKConstruct {
55
55
  get underlying() {
56
56
  return this.pool.underlying;
57
57
  }
58
- async getKYCFactory() {
59
- return this.pool.getKYCFactory();
60
- }
61
58
  get dirty() {
62
59
  return this.pool.dirty || this.rateKeeper.dirty || this.pqk.dirty || this.interestRateModel.dirty;
63
60
  }
@@ -7,20 +7,16 @@ import {
7
7
  formatBNvalue,
8
8
  percentFmt
9
9
  } from "../../utils/index.js";
10
- import { SecuritizeKYCFactory } from "./SecuritizeKYCFactory.js";
11
10
  const abi = [...iPoolV310Abi, ...iPausableAbi];
12
11
  class PoolV310Contract extends BaseContract {
13
12
  creditManagerDebtParams;
14
- #sdk;
15
- #kycFactory;
16
- constructor(sdk, data) {
13
+ constructor(options, data) {
17
14
  const { baseParams, creditManagerDebtParams, ...rest } = data;
18
- super(sdk, {
15
+ super(options, {
19
16
  ...data.baseParams,
20
17
  name: `PoolV3(${data.name})`,
21
18
  abi
22
19
  });
23
- this.#sdk = sdk;
24
20
  Object.assign(this, rest);
25
21
  this.creditManagerDebtParams = new AddressMap(
26
22
  creditManagerDebtParams.map((p) => [p.creditManager, p])
@@ -32,17 +28,6 @@ class PoolV310Contract extends BaseContract {
32
28
  symbol: data.symbol
33
29
  });
34
30
  }
35
- async getKYCFactory() {
36
- if (this.#kycFactory) {
37
- return this.#kycFactory;
38
- }
39
- await this.#sdk.tokensMeta.loadTokenData(this.underlying);
40
- const u = this.#sdk.tokensMeta.mustGet(this.underlying);
41
- if (this.#sdk.tokensMeta.isKYCUnderlying(u)) {
42
- this.#kycFactory = new SecuritizeKYCFactory(this.#sdk, u.kycFactory);
43
- }
44
- return this.#kycFactory;
45
- }
46
31
  stateHuman(raw = true) {
47
32
  return {
48
33
  ...super.stateHuman(raw),
@@ -1,6 +1,4 @@
1
1
  export * from "./GaugeContract.js";
2
2
  export * from "./LinearInterestRateModelContract.js";
3
3
  export * from "./PoolSuite.js";
4
- export * from "./PoolV310Contract.js";
5
- export * from "./SecuritizeKYCFactory.js";
6
4
  export * from "./types.js";
@@ -0,0 +1,113 @@
1
+ import { iPoolV310Abi } from "../../abi/310/generated.js";
2
+ import { ierc20ZapperDepositsAbi } from "../../abi/iERC20ZapperDeposits.js";
3
+ import { iethZapperDepositsAbi } from "../../abi/iETHZapperDeposits.js";
4
+ import { iZapperAbi } from "../../abi/iZapper.js";
5
+ import { SDKConstruct } from "../base/index.js";
6
+ class AbstractPoolService extends SDKConstruct {
7
+ #version;
8
+ constructor(sdk, version) {
9
+ super(sdk);
10
+ this.#version = version;
11
+ this.logger?.debug(`Created PoolService with version: ${this.#version}`);
12
+ }
13
+ addLiquidity({
14
+ collateral,
15
+ pool,
16
+ account,
17
+ zapper,
18
+ permit,
19
+ nativeTokenAddress,
20
+ referralCode = 0n,
21
+ migrate
22
+ }) {
23
+ if (zapper?.tokenIn === nativeTokenAddress) {
24
+ return [
25
+ {
26
+ target: zapper.zapper,
27
+ abi: iethZapperDepositsAbi,
28
+ functionName: "depositWithReferral",
29
+ args: [account, referralCode],
30
+ value: collateral.balance
31
+ }
32
+ ];
33
+ } else if (zapper) {
34
+ return permit ? [
35
+ {
36
+ target: zapper.zapper,
37
+ abi: ierc20ZapperDepositsAbi,
38
+ functionName: "depositWithReferralAndPermit",
39
+ args: [
40
+ collateral.balance,
41
+ account,
42
+ referralCode,
43
+ permit.deadline,
44
+ permit.v,
45
+ permit.r,
46
+ permit.s
47
+ ]
48
+ }
49
+ ] : [
50
+ {
51
+ target: zapper.zapper,
52
+ abi: ierc20ZapperDepositsAbi,
53
+ functionName: "depositWithReferral",
54
+ args: [collateral.balance, account, referralCode]
55
+ }
56
+ ];
57
+ } else {
58
+ if (migrate) throw Error("No zapper for migration");
59
+ return [
60
+ {
61
+ target: pool,
62
+ abi: iPoolV310Abi,
63
+ functionName: "depositWithReferral",
64
+ args: [collateral.balance, account, referralCode]
65
+ }
66
+ ];
67
+ }
68
+ }
69
+ removeLiquidity({
70
+ pool,
71
+ amount,
72
+ account,
73
+ zapper,
74
+ permit
75
+ }) {
76
+ if (zapper) {
77
+ return permit ? [
78
+ {
79
+ target: zapper.zapper,
80
+ abi: iZapperAbi,
81
+ functionName: "redeemWithPermit",
82
+ args: [
83
+ amount,
84
+ account,
85
+ permit.deadline,
86
+ permit.v,
87
+ permit.r,
88
+ permit.s
89
+ ]
90
+ }
91
+ ] : [
92
+ {
93
+ target: zapper.zapper,
94
+ abi: iZapperAbi,
95
+ functionName: "redeem",
96
+ args: [amount, account]
97
+ }
98
+ ];
99
+ } else {
100
+ return [
101
+ {
102
+ target: pool,
103
+ abi: iPoolV310Abi,
104
+ functionName: "redeem",
105
+ args: [amount, account, account]
106
+ }
107
+ ];
108
+ }
109
+ }
110
+ }
111
+ export {
112
+ AbstractPoolService
113
+ };
@@ -0,0 +1,6 @@
1
+ import { AbstractPoolService } from "./AbstractPoolService.js";
2
+ class PoolServiceV310 extends AbstractPoolService {
3
+ }
4
+ export {
5
+ PoolServiceV310
6
+ };