@gearbox-protocol/sdk 13.7.0-kyc.3 → 14.0.0-next.10

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 (214) hide show
  1. package/dist/cjs/dev/AccountOpener.js +5 -45
  2. package/dist/cjs/dev/RevolverTransport.js +10 -4
  3. package/dist/cjs/dev/index.js +0 -2
  4. package/dist/cjs/dev/logSplitterTransport.js +10 -1
  5. package/dist/cjs/permissionless/utils/create2.js +2 -2
  6. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +11 -5
  7. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +11 -5
  8. package/dist/cjs/permissionless/utils/price-update/get-prices.js +12 -6
  9. package/dist/cjs/sdk/MultichainSDK.js +232 -0
  10. package/dist/cjs/sdk/OnchainSDK.js +478 -0
  11. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +16 -324
  12. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +1 -7
  13. package/dist/cjs/sdk/base/TokensMeta.js +42 -22
  14. package/dist/cjs/sdk/base/token-types.js +0 -9
  15. package/dist/cjs/sdk/chain/chains.js +1 -2
  16. package/dist/cjs/sdk/constants/address-provider.js +0 -3
  17. package/dist/cjs/sdk/core/errors.js +77 -0
  18. package/dist/cjs/sdk/core/index.js +2 -0
  19. package/dist/cjs/sdk/index.js +4 -2
  20. package/dist/cjs/sdk/market/MarketRegister.js +116 -70
  21. package/dist/cjs/sdk/market/MarketSuite.js +0 -3
  22. package/dist/cjs/sdk/market/index.js +0 -2
  23. package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
  24. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -11
  25. package/dist/cjs/sdk/market/pool/index.js +0 -2
  26. package/dist/cjs/sdk/market/pricefeeds/PriceFeedsRegister.js +10 -3
  27. package/dist/cjs/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.js +20 -23
  28. package/dist/cjs/sdk/market/pricefeeds/updates/PythUpdater.js +7 -4
  29. package/dist/cjs/sdk/market/pricefeeds/updates/RedstoneUpdater.js +4 -4
  30. package/dist/cjs/sdk/market/pricefeeds/updates/fetchPythPayloads.js +1 -1
  31. package/dist/cjs/sdk/market/pricefeeds/updates/index.js +3 -0
  32. package/dist/cjs/sdk/options.js +24 -52
  33. package/dist/cjs/sdk/plugins/BasePlugin.js +11 -4
  34. package/dist/cjs/sdk/pools/PoolService.js +12 -104
  35. package/dist/cjs/sdk/utils/formatter.js +99 -20
  36. package/dist/cjs/sdk/utils/viem/index.js +3 -3
  37. package/dist/cjs/sdk/utils/viem/watchBlocksAsync.js +76 -0
  38. package/dist/esm/dev/AccountOpener.js +6 -47
  39. package/dist/esm/dev/RevolverTransport.js +10 -4
  40. package/dist/esm/dev/index.js +0 -1
  41. package/dist/esm/dev/logSplitterTransport.js +10 -1
  42. package/dist/esm/permissionless/utils/create2.js +1 -1
  43. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +12 -6
  44. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +13 -7
  45. package/dist/esm/permissionless/utils/price-update/get-prices.js +13 -7
  46. package/dist/esm/sdk/MultichainSDK.js +217 -0
  47. package/dist/esm/sdk/OnchainSDK.js +472 -0
  48. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +17 -328
  49. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +1 -7
  50. package/dist/esm/sdk/base/TokensMeta.js +44 -22
  51. package/dist/esm/sdk/base/token-types.js +0 -6
  52. package/dist/esm/sdk/chain/chains.js +1 -2
  53. package/dist/esm/sdk/constants/address-provider.js +0 -2
  54. package/dist/esm/sdk/core/errors.js +48 -0
  55. package/dist/esm/sdk/core/index.js +1 -0
  56. package/dist/esm/sdk/index.js +2 -1
  57. package/dist/esm/sdk/market/MarketRegister.js +118 -74
  58. package/dist/esm/sdk/market/MarketSuite.js +0 -3
  59. package/dist/esm/sdk/market/index.js +0 -1
  60. package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
  61. package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -11
  62. package/dist/esm/sdk/market/pool/index.js +0 -1
  63. package/dist/esm/sdk/market/pricefeeds/PriceFeedsRegister.js +10 -3
  64. package/dist/esm/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.js +20 -13
  65. package/dist/esm/sdk/market/pricefeeds/updates/PythUpdater.js +7 -4
  66. package/dist/esm/sdk/market/pricefeeds/updates/RedstoneUpdater.js +4 -4
  67. package/dist/esm/sdk/market/pricefeeds/updates/fetchPythPayloads.js +1 -1
  68. package/dist/esm/sdk/market/pricefeeds/updates/index.js +2 -0
  69. package/dist/esm/sdk/options.js +22 -51
  70. package/dist/esm/sdk/plugins/BasePlugin.js +11 -4
  71. package/dist/esm/sdk/pools/PoolService.js +13 -109
  72. package/dist/esm/sdk/utils/formatter.js +99 -10
  73. package/dist/esm/sdk/utils/viem/index.js +1 -1
  74. package/dist/esm/sdk/utils/viem/watchBlocksAsync.js +52 -0
  75. package/dist/types/dev/RevolverTransport.d.ts +2 -1
  76. package/dist/types/dev/calcLiquidatableLTs.d.ts +2 -2
  77. package/dist/types/dev/claimFromFaucet.d.ts +2 -2
  78. package/dist/types/dev/create2.d.ts +3 -4
  79. package/dist/types/dev/index.d.ts +0 -1
  80. package/dist/types/dev/logSplitterTransport.d.ts +3 -1
  81. package/dist/types/dev/migrateFaucet.d.ts +2 -2
  82. package/dist/types/dev/mint/AbstractMinter.d.ts +2 -2
  83. package/dist/types/dev/mint/FallbackMinter.d.ts +2 -2
  84. package/dist/types/dev/mint/factory.d.ts +2 -2
  85. package/dist/types/dev/replaceStorage.d.ts +1 -1
  86. package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +2 -2
  87. package/dist/types/plugins/accounts/AccountsPlugin.d.ts +2 -2
  88. package/dist/types/plugins/accounts-counter/AccountsCounterPlugin.d.ts +2 -2
  89. package/dist/types/plugins/adapters/AdaptersPlugin.d.ts +2 -2
  90. package/dist/types/plugins/apy/ApyPlugin.d.ts +2 -2
  91. package/dist/types/plugins/bots/BotsPlugin.d.ts +2 -2
  92. package/dist/types/plugins/bots/PartialLiquidationBotV310Contract.d.ts +2 -2
  93. package/dist/types/plugins/degen-distributors/DegenDistributorsPlugin.d.ts +2 -2
  94. package/dist/types/plugins/delayed-withdrawal/DelayedWithdrawalPlugin.d.ts +2 -2
  95. package/dist/types/sdk/MultichainSDK.d.ts +144 -0
  96. package/dist/types/sdk/OnchainSDK.d.ts +257 -0
  97. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +4 -54
  98. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  99. package/dist/types/sdk/accounts/createCreditAccountService.d.ts +2 -2
  100. package/dist/types/sdk/accounts/types.d.ts +15 -95
  101. package/dist/types/sdk/base/SDKConstruct.d.ts +4 -4
  102. package/dist/types/sdk/base/TokensMeta.d.ts +3 -14
  103. package/dist/types/sdk/base/token-types.d.ts +4 -44
  104. package/dist/types/sdk/base/types.d.ts +2 -116
  105. package/dist/types/sdk/chain/chains.d.ts +1 -5
  106. package/dist/types/sdk/constants/address-provider.d.ts +0 -1
  107. package/dist/types/sdk/core/createAddressProvider.d.ts +3 -3
  108. package/dist/types/sdk/core/errors.d.ts +51 -0
  109. package/dist/types/sdk/core/index.d.ts +1 -0
  110. package/dist/types/sdk/index.d.ts +2 -1
  111. package/dist/types/sdk/market/MarketRegister.d.ts +11 -8
  112. package/dist/types/sdk/market/MarketSuite.d.ts +2 -4
  113. package/dist/types/sdk/market/adapters/createAdapter.d.ts +2 -2
  114. package/dist/types/sdk/market/credit/CreditConfiguratorV310Contract.d.ts +3 -3
  115. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +2 -2
  116. package/dist/types/sdk/market/credit/CreditSuite.d.ts +2 -2
  117. package/dist/types/sdk/market/credit/createCreditConfigurator.d.ts +2 -2
  118. package/dist/types/sdk/market/credit/createCreditFacade.d.ts +2 -2
  119. package/dist/types/sdk/market/credit/createCreditManager.d.ts +2 -2
  120. package/dist/types/sdk/market/credit/types.d.ts +1 -1
  121. package/dist/types/sdk/market/index.d.ts +0 -1
  122. package/dist/types/sdk/market/loss-policy/AliasLossPolicyV310Contract.d.ts +3 -3
  123. package/dist/types/sdk/market/loss-policy/createLossPolicy.d.ts +2 -2
  124. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +5 -6
  125. package/dist/types/sdk/market/oracle/PriceOracleV310Contract.d.ts +2 -2
  126. package/dist/types/sdk/market/oracle/createPriceOracle.d.ts +2 -2
  127. package/dist/types/sdk/market/oracle/types.d.ts +10 -3
  128. package/dist/types/sdk/market/pool/PoolSuite.d.ts +2 -4
  129. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
  130. package/dist/types/sdk/market/pool/createInterestRateModel.d.ts +2 -2
  131. package/dist/types/sdk/market/pool/createPool.d.ts +2 -2
  132. package/dist/types/sdk/market/pool/createPoolQuotaKeeper.d.ts +2 -2
  133. package/dist/types/sdk/market/pool/createRateKeeper.d.ts +2 -2
  134. package/dist/types/sdk/market/pool/index.d.ts +0 -1
  135. package/dist/types/sdk/market/pricefeeds/PriceFeedsRegister.d.ts +8 -3
  136. package/dist/types/sdk/market/pricefeeds/updates/PythAccumulatorUpdateData.d.ts +12 -13
  137. package/dist/types/sdk/market/pricefeeds/updates/PythUpdater.d.ts +8 -3
  138. package/dist/types/sdk/market/pricefeeds/updates/RedstoneUpdater.d.ts +8 -3
  139. package/dist/types/sdk/market/pricefeeds/updates/index.d.ts +1 -0
  140. package/dist/types/sdk/market/pricefeeds/updates/types.d.ts +4 -0
  141. package/dist/types/sdk/market/types.d.ts +1 -1
  142. package/dist/types/sdk/options.d.ts +15 -16
  143. package/dist/types/sdk/plugins/BasePlugin.d.ts +12 -6
  144. package/dist/types/sdk/plugins/errors.d.ts +2 -2
  145. package/dist/types/sdk/plugins/types.d.ts +16 -6
  146. package/dist/types/sdk/pools/PoolService.d.ts +8 -8
  147. package/dist/types/sdk/pools/types.d.ts +2 -3
  148. package/dist/types/sdk/router/AbstractRouterContract.d.ts +3 -3
  149. package/dist/types/sdk/router/RouterV310Contract.d.ts +2 -2
  150. package/dist/types/sdk/router/createRouter.d.ts +2 -2
  151. package/dist/types/sdk/router/helpers.d.ts +1 -1
  152. package/dist/types/sdk/types/state-human.d.ts +10 -2
  153. package/dist/types/sdk/types/state.d.ts +14 -8
  154. package/dist/types/sdk/utils/filterDust.d.ts +2 -2
  155. package/dist/types/sdk/utils/formatter.d.ts +1 -1
  156. package/dist/types/sdk/utils/isDust.d.ts +2 -2
  157. package/dist/types/sdk/utils/toAddress.d.ts +1 -1
  158. package/dist/types/sdk/utils/viem/getLogsPaginated.d.ts +1 -2
  159. package/dist/types/sdk/utils/viem/getLogsSafe.d.ts +1 -1
  160. package/dist/types/sdk/utils/viem/index.d.ts +1 -1
  161. package/dist/types/sdk/utils/viem/simulateWithPriceUpdates.d.ts +1 -2
  162. package/dist/types/sdk/utils/viem/watchBlocksAsync.d.ts +74 -0
  163. package/package.json +3 -6
  164. package/dist/cjs/abi/kyc/iDSRegistryService.js +0 -70
  165. package/dist/cjs/abi/kyc/iDSToken.js +0 -71
  166. package/dist/cjs/abi/kyc/iKYCCompressor.js +0 -196
  167. package/dist/cjs/abi/kyc/iKYCFactory.js +0 -122
  168. package/dist/cjs/abi/kyc/iKYCUnderlying.js +0 -401
  169. package/dist/cjs/abi/kyc/iSecuritizeDegenNFT.js +0 -326
  170. package/dist/cjs/abi/kyc/iSecuritizeKYCFactory.js +0 -319
  171. package/dist/cjs/dev/CachedStateSubscriber.js +0 -78
  172. package/dist/cjs/sdk/GearboxSDK.js +0 -696
  173. package/dist/cjs/sdk/market/kyc/KYCRegistry.js +0 -269
  174. package/dist/cjs/sdk/market/kyc/index.js +0 -26
  175. package/dist/cjs/sdk/market/kyc/securitize/SecuritizeKYCFactory.js +0 -244
  176. package/dist/cjs/sdk/market/kyc/securitize/constants.js +0 -28
  177. package/dist/cjs/sdk/market/kyc/securitize/index.js +0 -26
  178. package/dist/cjs/sdk/market/kyc/securitize/types.js +0 -16
  179. package/dist/cjs/sdk/market/kyc/types.js +0 -34
  180. package/dist/cjs/sdk/utils/viem/executeDelegatedMulticalls.js +0 -38
  181. package/dist/esm/abi/kyc/iDSRegistryService.js +0 -46
  182. package/dist/esm/abi/kyc/iDSToken.js +0 -47
  183. package/dist/esm/abi/kyc/iKYCCompressor.js +0 -172
  184. package/dist/esm/abi/kyc/iKYCFactory.js +0 -98
  185. package/dist/esm/abi/kyc/iKYCUnderlying.js +0 -377
  186. package/dist/esm/abi/kyc/iSecuritizeDegenNFT.js +0 -302
  187. package/dist/esm/abi/kyc/iSecuritizeKYCFactory.js +0 -295
  188. package/dist/esm/dev/CachedStateSubscriber.js +0 -54
  189. package/dist/esm/sdk/GearboxSDK.js +0 -689
  190. package/dist/esm/sdk/market/kyc/KYCRegistry.js +0 -253
  191. package/dist/esm/sdk/market/kyc/index.js +0 -3
  192. package/dist/esm/sdk/market/kyc/securitize/SecuritizeKYCFactory.js +0 -220
  193. package/dist/esm/sdk/market/kyc/securitize/constants.js +0 -4
  194. package/dist/esm/sdk/market/kyc/securitize/index.js +0 -3
  195. package/dist/esm/sdk/market/kyc/securitize/types.js +0 -0
  196. package/dist/esm/sdk/market/kyc/types.js +0 -9
  197. package/dist/esm/sdk/utils/viem/executeDelegatedMulticalls.js +0 -14
  198. package/dist/types/abi/kyc/iDSRegistryService.d.ts +0 -71
  199. package/dist/types/abi/kyc/iDSToken.d.ts +0 -67
  200. package/dist/types/abi/kyc/iKYCCompressor.d.ts +0 -228
  201. package/dist/types/abi/kyc/iKYCFactory.d.ts +0 -139
  202. package/dist/types/abi/kyc/iKYCUnderlying.d.ts +0 -548
  203. package/dist/types/abi/kyc/iSecuritizeDegenNFT.d.ts +0 -404
  204. package/dist/types/abi/kyc/iSecuritizeKYCFactory.d.ts +0 -376
  205. package/dist/types/dev/CachedStateSubscriber.d.ts +0 -21
  206. package/dist/types/sdk/GearboxSDK.d.ts +0 -324
  207. package/dist/types/sdk/market/kyc/KYCRegistry.d.ts +0 -52
  208. package/dist/types/sdk/market/kyc/index.d.ts +0 -3
  209. package/dist/types/sdk/market/kyc/securitize/SecuritizeKYCFactory.d.ts +0 -428
  210. package/dist/types/sdk/market/kyc/securitize/constants.d.ts +0 -1
  211. package/dist/types/sdk/market/kyc/securitize/index.d.ts +0 -3
  212. package/dist/types/sdk/market/kyc/securitize/types.d.ts +0 -127
  213. package/dist/types/sdk/market/kyc/types.d.ts +0 -170
  214. package/dist/types/sdk/utils/viem/executeDelegatedMulticalls.d.ts +0 -28
@@ -1,253 +0,0 @@
1
- import { decodeAbiParameters } from "viem";
2
- import { iKYCCompressorAbi } from "../../../abi/kyc/iKYCCompressor.js";
3
- import {
4
- KYC_ON_DEMAND_LP_MONOPOLIZED,
5
- KYC_UNDERLYING_DEFAULT,
6
- KYC_UNDERLYING_ON_DEMAND,
7
- SDKConstruct
8
- } from "../../base/index.js";
9
- import { AP_KYC_COMPRESSOR, VERSION_RANGE_310 } from "../../constants/index.js";
10
- import { AddressMap, bytes32ToString } from "../../utils/index.js";
11
- import {
12
- KYC_FACTORY_SECURITIZE,
13
- SecuritizeKYCFactory
14
- } from "./securitize/index.js";
15
- class KYCRegistry extends SDKConstruct {
16
- #state;
17
- #factories = new AddressMap();
18
- /**
19
- * @internal
20
- *
21
- * Returns delegated multicalls for loading all KYC underlying tokens from the on-chain KYC compressor.
22
- * Used by the SDK to compose batched RPC calls.
23
- *
24
- * @param configurators - Market configurators to query.
25
- * @param kycFactories - KYC factory contracts to query.
26
- */
27
- getLoadMulticalls(configurators, kycFactories = []) {
28
- if (!kycFactories.length) return [];
29
- const [kycCompressorAddress] = this.sdk.addressProvider.mustGetLatest(
30
- AP_KYC_COMPRESSOR,
31
- VERSION_RANGE_310
32
- );
33
- return [
34
- {
35
- call: {
36
- abi: iKYCCompressorAbi,
37
- address: kycCompressorAddress,
38
- functionName: "getKYCMarketsData",
39
- args: [configurators, kycFactories]
40
- },
41
- onResult: (resp) => this.setState(resp)
42
- }
43
- ];
44
- }
45
- /**
46
- * Fetches decoded investor data from the on-chain KYC compressor.
47
- *
48
- * Each factory produces its own investor data (e.g. registered tokens,
49
- * cached signatures, EIP-712 messages to sign).
50
- *
51
- * @param investor - Investor EOA address.
52
- * @param factories_ - Optional subset of factory addresses to query.
53
- * When omitted, all loaded factories are used.
54
- */
55
- async getInvestorData(investor, factories_) {
56
- const [kycCompressorAddress] = this.sdk.addressProvider.mustGetLatest(
57
- AP_KYC_COMPRESSOR,
58
- VERSION_RANGE_310
59
- );
60
- let factories = this.#factories.values();
61
- if (factories_?.length) {
62
- factories = factories_.map((f) => this.#factories.mustGet(f));
63
- }
64
- const resp = await this.client.readContract({
65
- abi: iKYCCompressorAbi,
66
- address: kycCompressorAddress,
67
- functionName: "getKYCInvestorData",
68
- args: [investor, factories.map((f) => f.address)]
69
- });
70
- const result = [];
71
- for (let i = 0; i < factories.length; i++) {
72
- const factory = factories[i];
73
- const factoryData = resp[i];
74
- const investorData = factory.decodeInvestorData(factoryData);
75
- result.push(investorData);
76
- }
77
- return result;
78
- }
79
- /** All loaded KYC factory instances. */
80
- get factories() {
81
- return this.#factories.values();
82
- }
83
- /** Raw KYC compressor response, or `undefined` before attach/hydrate. */
84
- get state() {
85
- return this.#state;
86
- }
87
- /**
88
- * Returns a human-readable snapshot of the KYC state.
89
- */
90
- stateHuman(raw) {
91
- return {
92
- factories: this.factories.map((f) => f.stateHuman(raw))
93
- };
94
- }
95
- /**
96
- * @internal
97
- *
98
- * Replaces the internal state with a new KYC compressor response.
99
- * Rebuilds token metadata for KYC underlyings and re-instantiates factory
100
- * wrappers.
101
- */
102
- setState(resp) {
103
- this.#state = resp;
104
- for (const u of resp?.[0] ?? []) {
105
- this.#loadUnderlyingTokenData(u);
106
- }
107
- this.#factories.clear();
108
- for (const f of resp?.[1] ?? []) {
109
- this.#loadKYCFactoryData(f);
110
- }
111
- }
112
- #loadUnderlyingTokenData(u) {
113
- const contractType = bytes32ToString(u.baseParams.contractType);
114
- const meta = this.tokensMeta.get(u.baseParams.addr);
115
- if (!meta) {
116
- throw new Error(
117
- `KYC underlying token ${contractType} (${u.baseParams.addr}) not found in tokensMeta`
118
- );
119
- }
120
- switch (contractType) {
121
- case KYC_UNDERLYING_DEFAULT:
122
- this.#loadKYCUnderlyingDefault(meta, u);
123
- break;
124
- case KYC_UNDERLYING_ON_DEMAND:
125
- this.#loadKYCUnderlyingOnDemand(meta, u);
126
- break;
127
- default:
128
- if (this.sdk.strictContractTypes) {
129
- throw new Error(`Unknown KYC underlying type: ${contractType}`);
130
- }
131
- this.logger?.warn(`unknown KYC underlying type: ${contractType}`);
132
- }
133
- }
134
- #loadKYCUnderlyingDefault(meta, data) {
135
- const decoded = decodeAbiParameters(
136
- [
137
- { name: "factory", type: "address" },
138
- { name: "asset", type: "address" }
139
- ],
140
- data.baseParams.serializedParams
141
- );
142
- this.tokensMeta.upsert(data.baseParams.addr, {
143
- ...meta,
144
- contractType: KYC_UNDERLYING_DEFAULT,
145
- kycFactory: decoded[0],
146
- asset: decoded[1]
147
- });
148
- }
149
- #loadKYCUnderlyingOnDemand(meta, data) {
150
- const decoded = decodeAbiParameters(
151
- [
152
- { name: "factory", type: "address" },
153
- { name: "asset", type: "address" },
154
- { name: "pool", type: "address" },
155
- { name: "liquidityProvider", type: "address" },
156
- { name: "marketConfigurator", type: "address" },
157
- { name: "allowedDepositors", type: "address[]" }
158
- ],
159
- data.baseParams.serializedParams
160
- );
161
- const lpMeta = this.#getOnDemandLPMeta(data.extraDetails);
162
- if (decoded[3] !== lpMeta.addr) {
163
- throw new Error(
164
- `Liquidity provider mismatch: ${decoded[3]} !== ${lpMeta.addr} for on-demand underlying ${data.baseParams.addr}`
165
- );
166
- }
167
- this.tokensMeta.upsert(data.baseParams.addr, {
168
- ...meta,
169
- contractType: KYC_UNDERLYING_ON_DEMAND,
170
- kycFactory: decoded[0],
171
- asset: decoded[1],
172
- pool: decoded[2],
173
- marketConfigurator: decoded[4],
174
- allowedDepositors: decoded[5],
175
- // liquidityProvider: decoded[3],
176
- liquidityProvider: lpMeta
177
- });
178
- }
179
- #getOnDemandLPMeta(extraDetails) {
180
- const [decoded] = decodeAbiParameters(
181
- [
182
- {
183
- name: "baseParams",
184
- type: "tuple",
185
- components: [
186
- { name: "addr", type: "address" },
187
- { name: "version", type: "uint256" },
188
- { name: "contractType", type: "bytes32" },
189
- { name: "serializedParams", type: "bytes" }
190
- ]
191
- }
192
- ],
193
- extraDetails
194
- );
195
- const contractType = bytes32ToString(decoded.contractType);
196
- switch (contractType) {
197
- case KYC_ON_DEMAND_LP_MONOPOLIZED:
198
- return this.#getOnDemandLPMonopolizedMeta(
199
- decoded.addr,
200
- decoded.version,
201
- decoded.serializedParams
202
- );
203
- default:
204
- throw new Error(`Unknown on-demand LP contract type: ${contractType}`);
205
- }
206
- }
207
- #getOnDemandLPMonopolizedMeta(addr, version, serializedParams) {
208
- const [marketConfigurator, depositor, pools] = decodeAbiParameters(
209
- [
210
- { name: "marketConfigurator", type: "address" },
211
- { name: "depositor", type: "address" },
212
- {
213
- name: "pools",
214
- type: "tuple[]",
215
- components: [
216
- { name: "pool", type: "address" },
217
- { name: "wrappedUnderlying", type: "address" },
218
- { name: "unwrappedUnderlying", type: "address" },
219
- { name: "depositAllowance", type: "uint256" },
220
- { name: "claimableAmount", type: "uint256" }
221
- ]
222
- }
223
- ],
224
- serializedParams
225
- );
226
- return {
227
- addr,
228
- version,
229
- contractType: KYC_ON_DEMAND_LP_MONOPOLIZED,
230
- marketConfigurator,
231
- depositor,
232
- pools: [...pools]
233
- };
234
- }
235
- #loadKYCFactoryData(data) {
236
- const contractType = bytes32ToString(data.baseParams.contractType);
237
- switch (contractType) {
238
- case KYC_FACTORY_SECURITIZE:
239
- this.#factories.upsert(
240
- data.baseParams.addr,
241
- new SecuritizeKYCFactory(this.sdk, data)
242
- );
243
- break;
244
- default:
245
- throw new Error(
246
- `Unknown KYC factory type: ${contractType} for ${data.baseParams.addr}`
247
- );
248
- }
249
- }
250
- }
251
- export {
252
- KYCRegistry
253
- };
@@ -1,3 +0,0 @@
1
- export * from "./KYCRegistry.js";
2
- export * from "./securitize/index.js";
3
- export * from "./types.js";
@@ -1,220 +0,0 @@
1
- import { decodeAbiParameters } from "viem";
2
- import { iSecuritizeKYCFactoryAbi } from "../../../../abi/kyc/iSecuritizeKYCFactory.js";
3
- import { BaseContract } from "../../../base/index.js";
4
- import { AddressMap, AddressSet } from "../../../utils/index.js";
5
- import { KYC_FACTORY_SECURITIZE } from "./constants.js";
6
- const abi = iSecuritizeKYCFactoryAbi;
7
- class SecuritizeKYCFactory extends BaseContract {
8
- #sdk;
9
- #investorCache = new AddressMap();
10
- degenNFT;
11
- owner;
12
- dsTokens;
13
- contractType = KYC_FACTORY_SECURITIZE;
14
- constructor(sdk, data) {
15
- super(sdk, {
16
- ...data.baseParams,
17
- name: "SecuritizeKYCFactory",
18
- abi
19
- });
20
- this.#sdk = sdk;
21
- const decoded = decodeAbiParameters(
22
- [
23
- { name: "owner", type: "address" },
24
- { name: "degenNFT", type: "address" },
25
- {
26
- name: "dsTokensData",
27
- type: "tuple[]",
28
- components: [
29
- { name: "token", type: "address" },
30
- { name: "registrar", type: "address" },
31
- { name: "operators", type: "address[]" }
32
- ]
33
- }
34
- ],
35
- data.baseParams.serializedParams
36
- );
37
- this.owner = decoded[0];
38
- this.degenNFT = decoded[1];
39
- for (const t of data.tokens) {
40
- this.tokensMeta.upsert(t.addr, t);
41
- }
42
- this.dsTokens = decoded[2].map((t) => ({
43
- address: t.token,
44
- registrar: t.registrar,
45
- operators: [...t.operators]
46
- }));
47
- }
48
- /**
49
- * {@inheritDoc IKYCFactory.decodeInvestorData}
50
- */
51
- decodeInvestorData(data) {
52
- const { creditAccounts, extraDetails } = data;
53
- const [registeredTokens, cachedSignatures, registerVaultMessages] = decodeAbiParameters(
54
- [
55
- { name: "registeredTokens", type: "address[]" },
56
- {
57
- name: "cachedSignatures",
58
- type: "tuple[]",
59
- components: [...registerMessageTuple]
60
- },
61
- {
62
- name: "registerVaultMessages",
63
- type: "tuple[]",
64
- components: [...registerVaultMessageTuple]
65
- }
66
- ],
67
- extraDetails
68
- );
69
- return {
70
- factory: this.address,
71
- cachedSignatures: [...cachedSignatures],
72
- registerVaultMessages: [...registerVaultMessages],
73
- registeredTokens: [...registeredTokens],
74
- creditAccounts: creditAccounts.map((ca) => {
75
- const [registeredTokens2] = decodeAbiParameters(
76
- [{ name: "registeredTokens", type: "address[]" }],
77
- ca.extraDetails
78
- );
79
- return {
80
- ...ca,
81
- registeredTokens: [...registeredTokens2]
82
- };
83
- })
84
- };
85
- }
86
- /**
87
- * {@inheritDoc IKYCFactory.getInvestor}
88
- */
89
- async getInvestor(creditAccount, fromCache) {
90
- if (fromCache && this.#investorCache.has(creditAccount)) {
91
- return this.#investorCache.mustGet(creditAccount);
92
- }
93
- const investor = await this.contract.read.getInvestor([creditAccount]);
94
- if (fromCache) {
95
- this.#investorCache.upsert(creditAccount, investor);
96
- }
97
- return investor;
98
- }
99
- /**
100
- * {@inheritDoc IKYCFactory.getApprovalAddress}
101
- */
102
- async getApprovalAddress(options) {
103
- if ("creditAccount" in options) {
104
- return this.getWallet(options.creditAccount);
105
- }
106
- return this.#precomputeWalletAddress(
107
- options.creditManager,
108
- options.borrower
109
- );
110
- }
111
- /**
112
- * {@inheritDoc IKYCFactory.getWallet}
113
- */
114
- async getWallet(creditAccount) {
115
- return this.contract.read.getWallet([creditAccount]);
116
- }
117
- /**
118
- * {@inheritDoc IKYCFactory.multicall}
119
- */
120
- multicall(creditAccount, calls, options) {
121
- const { tokensToRegister = [], signaturesToCache = [] } = options ?? {};
122
- return this.createRawTx({
123
- functionName: "multicall",
124
- args: [creditAccount, calls, tokensToRegister, signaturesToCache]
125
- });
126
- }
127
- /**
128
- * {@inheritDoc IKYCFactory.getOpenAccountRequirements}
129
- */
130
- async getOpenAccountRequirements(investor) {
131
- const [investorData] = await this.#sdk.kyc.getInvestorData(investor, [
132
- this.address
133
- ]);
134
- const dsTokens = new AddressSet(this.dsTokens.map((t) => t.address));
135
- const desiredTokens = dsTokens;
136
- const registredTokens = new AddressSet(investorData.registeredTokens);
137
- const signedTokens = new AddressSet(
138
- investorData.cachedSignatures.map((s) => s.token)
139
- );
140
- const unsignedTokens = desiredTokens.difference(signedTokens);
141
- const tokensToRegister = desiredTokens.difference(registredTokens);
142
- const requiredSignatures = investorData.registerVaultMessages.filter(
143
- (m) => unsignedTokens.has(m.token)
144
- );
145
- if (tokensToRegister.size === 0 && requiredSignatures.length === 0) {
146
- return void 0;
147
- }
148
- return {
149
- type: KYC_FACTORY_SECURITIZE,
150
- tokensToRegister: Array.from(tokensToRegister),
151
- requiredSignatures
152
- };
153
- }
154
- /**
155
- * {@inheritDoc IKYCFactory.openCreditAccount}
156
- */
157
- openCreditAccount(creditManager, calls, options) {
158
- const { tokensToRegister = [], signaturesToCache = [] } = options ?? {};
159
- return this.createRawTx({
160
- functionName: "openCreditAccount",
161
- args: [creditManager, calls, tokensToRegister, signaturesToCache]
162
- });
163
- }
164
- stateHuman(_raw) {
165
- return {
166
- ...super.stateHuman(_raw),
167
- owner: this.labelAddress(this.owner),
168
- degenNFT: this.labelAddress(this.degenNFT),
169
- dsTokens: this.dsTokens.map((t) => ({
170
- ...this.tokensMeta.mustGet(t.address),
171
- registrar: this.labelAddress(t.registrar),
172
- operators: t.operators.map((o) => this.labelAddress(o))
173
- }))
174
- };
175
- }
176
- /**
177
- * Precomputes the wallet address that will own a new credit account
178
- * for the given investor in the given credit manager.
179
- *
180
- * @param creditManager - credit manager address
181
- * @param investor - investor address
182
- **/
183
- async #precomputeWalletAddress(creditManager, investor) {
184
- return this.contract.read.precomputeWalletAddress([
185
- creditManager,
186
- investor
187
- ]);
188
- }
189
- }
190
- const registerMessageTuple = [
191
- { name: "token", type: "address" },
192
- {
193
- name: "signature",
194
- type: "tuple",
195
- components: [
196
- { name: "deadline", type: "uint256" },
197
- { name: "signature", type: "bytes" }
198
- ]
199
- }
200
- ];
201
- const registerVaultMessageTuple = [
202
- {
203
- name: "domain",
204
- type: "tuple",
205
- components: [
206
- { name: "name", type: "string" },
207
- { name: "version", type: "string" },
208
- { name: "chainId", type: "uint256" },
209
- { name: "verifyingContract", type: "address" }
210
- ]
211
- },
212
- { name: "investor", type: "address" },
213
- { name: "operator", type: "address" },
214
- { name: "token", type: "address" },
215
- { name: "nonce", type: "uint256" },
216
- { name: "deadline", type: "uint256" }
217
- ];
218
- export {
219
- SecuritizeKYCFactory
220
- };
@@ -1,4 +0,0 @@
1
- const KYC_FACTORY_SECURITIZE = "KYC_FACTORY::SECURITIZE";
2
- export {
3
- KYC_FACTORY_SECURITIZE
4
- };
@@ -1,3 +0,0 @@
1
- export * from "./constants.js";
2
- export * from "./SecuritizeKYCFactory.js";
3
- export * from "./types.js";
File without changes
@@ -1,9 +0,0 @@
1
- import { KYC_FACTORY_SECURITIZE } from "./securitize/index.js";
2
- const KYC_FACTORY_TYPES = [KYC_FACTORY_SECURITIZE];
3
- function isKYCFactory(factory, type) {
4
- return factory.contractType === type;
5
- }
6
- export {
7
- KYC_FACTORY_TYPES,
8
- isKYCFactory
9
- };
@@ -1,14 +0,0 @@
1
- import { simulateWithPriceUpdates } from "./simulateWithPriceUpdates.js";
2
- async function executeDelegatedMulticalls(client, multicalls, opts) {
3
- if (!multicalls.length) return;
4
- const results = await simulateWithPriceUpdates(client, {
5
- ...opts,
6
- contracts: multicalls.map((d) => d.call)
7
- });
8
- for (let i = 0; i < multicalls.length; i++) {
9
- multicalls[i].onResult(results[i]);
10
- }
11
- }
12
- export {
13
- executeDelegatedMulticalls
14
- };
@@ -1,71 +0,0 @@
1
- export declare const iDSRegistryServiceAbi: readonly [{
2
- readonly type: "function";
3
- readonly name: "addWallet";
4
- readonly inputs: readonly [{
5
- readonly name: "wallet";
6
- readonly type: "address";
7
- readonly internalType: "address";
8
- }, {
9
- readonly name: "investorId";
10
- readonly type: "string";
11
- readonly internalType: "string";
12
- }];
13
- readonly outputs: readonly [];
14
- readonly stateMutability: "nonpayable";
15
- }, {
16
- readonly type: "function";
17
- readonly name: "getInvestor";
18
- readonly inputs: readonly [{
19
- readonly name: "wallet";
20
- readonly type: "address";
21
- readonly internalType: "address";
22
- }];
23
- readonly outputs: readonly [{
24
- readonly name: "";
25
- readonly type: "string";
26
- readonly internalType: "string";
27
- }];
28
- readonly stateMutability: "view";
29
- }, {
30
- readonly type: "function";
31
- readonly name: "isInvestor";
32
- readonly inputs: readonly [{
33
- readonly name: "investorId";
34
- readonly type: "string";
35
- readonly internalType: "string";
36
- }];
37
- readonly outputs: readonly [{
38
- readonly name: "";
39
- readonly type: "bool";
40
- readonly internalType: "bool";
41
- }];
42
- readonly stateMutability: "view";
43
- }, {
44
- readonly type: "function";
45
- readonly name: "isWallet";
46
- readonly inputs: readonly [{
47
- readonly name: "wallet";
48
- readonly type: "address";
49
- readonly internalType: "address";
50
- }];
51
- readonly outputs: readonly [{
52
- readonly name: "";
53
- readonly type: "bool";
54
- readonly internalType: "bool";
55
- }];
56
- readonly stateMutability: "view";
57
- }, {
58
- readonly type: "function";
59
- readonly name: "registerInvestor";
60
- readonly inputs: readonly [{
61
- readonly name: "investorId";
62
- readonly type: "string";
63
- readonly internalType: "string";
64
- }, {
65
- readonly name: "collisionHash";
66
- readonly type: "string";
67
- readonly internalType: "string";
68
- }];
69
- readonly outputs: readonly [];
70
- readonly stateMutability: "nonpayable";
71
- }];
@@ -1,67 +0,0 @@
1
- export declare const iDSTokenAbi: readonly [{
2
- readonly type: "function";
3
- readonly name: "REGISTRY_SERVICE";
4
- readonly inputs: readonly [];
5
- readonly outputs: readonly [{
6
- readonly name: "";
7
- readonly type: "uint256";
8
- readonly internalType: "uint256";
9
- }];
10
- readonly stateMutability: "view";
11
- }, {
12
- readonly type: "function";
13
- readonly name: "TRUST_SERVICE";
14
- readonly inputs: readonly [];
15
- readonly outputs: readonly [{
16
- readonly name: "";
17
- readonly type: "uint256";
18
- readonly internalType: "uint256";
19
- }];
20
- readonly stateMutability: "view";
21
- }, {
22
- readonly type: "function";
23
- readonly name: "burn";
24
- readonly inputs: readonly [{
25
- readonly name: "from";
26
- readonly type: "address";
27
- readonly internalType: "address";
28
- }, {
29
- readonly name: "amount";
30
- readonly type: "uint256";
31
- readonly internalType: "uint256";
32
- }, {
33
- readonly name: "reason";
34
- readonly type: "string";
35
- readonly internalType: "string";
36
- }];
37
- readonly outputs: readonly [];
38
- readonly stateMutability: "nonpayable";
39
- }, {
40
- readonly type: "function";
41
- readonly name: "getDSService";
42
- readonly inputs: readonly [{
43
- readonly name: "serviceId";
44
- readonly type: "uint256";
45
- readonly internalType: "uint256";
46
- }];
47
- readonly outputs: readonly [{
48
- readonly name: "";
49
- readonly type: "address";
50
- readonly internalType: "address";
51
- }];
52
- readonly stateMutability: "view";
53
- }, {
54
- readonly type: "function";
55
- readonly name: "issueTokens";
56
- readonly inputs: readonly [{
57
- readonly name: "to";
58
- readonly type: "address";
59
- readonly internalType: "address";
60
- }, {
61
- readonly name: "amount";
62
- readonly type: "uint256";
63
- readonly internalType: "uint256";
64
- }];
65
- readonly outputs: readonly [];
66
- readonly stateMutability: "nonpayable";
67
- }];