@kaspacom/kcc20-tx-builder 0.1.0

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 (234) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +104 -0
  3. package/artifacts/KCC20.placeholder.json +77479 -0
  4. package/artifacts/KCC20FeeTicket.placeholder.json +16846 -0
  5. package/artifacts/KCC20Orderbook.placeholder.json +78001 -0
  6. package/artifacts/KCC20Vesting.placeholder.json +4298 -0
  7. package/artifacts/KCC20Wrapper.placeholder.json +12246 -0
  8. package/dist/abi.d.ts +44 -0
  9. package/dist/abi.d.ts.map +1 -0
  10. package/dist/abi.js +336 -0
  11. package/dist/abi.js.map +1 -0
  12. package/dist/action-source-resolver.d.ts +80 -0
  13. package/dist/action-source-resolver.d.ts.map +1 -0
  14. package/dist/action-source-resolver.js +412 -0
  15. package/dist/action-source-resolver.js.map +1 -0
  16. package/dist/artifacts.d.ts +14 -0
  17. package/dist/artifacts.d.ts.map +1 -0
  18. package/dist/artifacts.js +44 -0
  19. package/dist/artifacts.js.map +1 -0
  20. package/dist/builder.d.ts +12 -0
  21. package/dist/builder.d.ts.map +1 -0
  22. package/dist/builder.js +18 -0
  23. package/dist/builder.js.map +1 -0
  24. package/dist/cjs/abi.d.ts +43 -0
  25. package/dist/cjs/abi.js +361 -0
  26. package/dist/cjs/abi.js.map +1 -0
  27. package/dist/cjs/action-source-resolver.d.ts +79 -0
  28. package/dist/cjs/action-source-resolver.js +435 -0
  29. package/dist/cjs/action-source-resolver.js.map +1 -0
  30. package/dist/cjs/artifacts.d.ts +13 -0
  31. package/dist/cjs/artifacts.js +51 -0
  32. package/dist/cjs/artifacts.js.map +1 -0
  33. package/dist/cjs/builder.d.ts +11 -0
  34. package/dist/cjs/builder.js +22 -0
  35. package/dist/cjs/builder.js.map +1 -0
  36. package/dist/cjs/deploy-operation.d.ts +103 -0
  37. package/dist/cjs/deploy-operation.js +335 -0
  38. package/dist/cjs/deploy-operation.js.map +1 -0
  39. package/dist/cjs/encoding.d.ts +5 -0
  40. package/dist/cjs/encoding.js +51 -0
  41. package/dist/cjs/encoding.js.map +1 -0
  42. package/dist/cjs/engine.d.ts +40 -0
  43. package/dist/cjs/engine.js +8972 -0
  44. package/dist/cjs/engine.js.map +1 -0
  45. package/dist/cjs/errors.d.ts +7 -0
  46. package/dist/cjs/errors.js +23 -0
  47. package/dist/cjs/errors.js.map +1 -0
  48. package/dist/cjs/fee-ticket-operation.d.ts +204 -0
  49. package/dist/cjs/fee-ticket-operation.js +327 -0
  50. package/dist/cjs/fee-ticket-operation.js.map +1 -0
  51. package/dist/cjs/index.d.ts +27 -0
  52. package/dist/cjs/index.js +45 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/ladder-limit-orders.d.ts +41 -0
  55. package/dist/cjs/ladder-limit-orders.js +129 -0
  56. package/dist/cjs/ladder-limit-orders.js.map +1 -0
  57. package/dist/cjs/mint-availability-operation.d.ts +56 -0
  58. package/dist/cjs/mint-availability-operation.js +95 -0
  59. package/dist/cjs/mint-availability-operation.js.map +1 -0
  60. package/dist/cjs/models.d.ts +90 -0
  61. package/dist/cjs/models.js +6 -0
  62. package/dist/cjs/models.js.map +1 -0
  63. package/dist/cjs/operations.d.ts +6 -0
  64. package/dist/cjs/operations.js +41 -0
  65. package/dist/cjs/operations.js.map +1 -0
  66. package/dist/cjs/package.json +1 -0
  67. package/dist/cjs/paid-mint-amount.d.ts +69 -0
  68. package/dist/cjs/paid-mint-amount.js +281 -0
  69. package/dist/cjs/paid-mint-amount.js.map +1 -0
  70. package/dist/cjs/protocol.d.ts +21 -0
  71. package/dist/cjs/protocol.js +25 -0
  72. package/dist/cjs/protocol.js.map +1 -0
  73. package/dist/cjs/runtime.d.ts +27 -0
  74. package/dist/cjs/runtime.js +3 -0
  75. package/dist/cjs/runtime.js.map +1 -0
  76. package/dist/cjs/sale-common.d.ts +287 -0
  77. package/dist/cjs/sale-common.js +928 -0
  78. package/dist/cjs/sale-common.js.map +1 -0
  79. package/dist/cjs/source-provider.d.ts +11 -0
  80. package/dist/cjs/source-provider.js +3 -0
  81. package/dist/cjs/source-provider.js.map +1 -0
  82. package/dist/cjs/source-validation.d.ts +9 -0
  83. package/dist/cjs/source-validation.js +33 -0
  84. package/dist/cjs/source-validation.js.map +1 -0
  85. package/dist/cjs/token-amount.d.ts +31 -0
  86. package/dist/cjs/token-amount.js +252 -0
  87. package/dist/cjs/token-amount.js.map +1 -0
  88. package/dist/cjs/token-operation.d.ts +135 -0
  89. package/dist/cjs/token-operation.js +236 -0
  90. package/dist/cjs/token-operation.js.map +1 -0
  91. package/dist/cjs/trade-fee.d.ts +60 -0
  92. package/dist/cjs/trade-fee.js +185 -0
  93. package/dist/cjs/trade-fee.js.map +1 -0
  94. package/dist/cjs/trading-operation.d.ts +212 -0
  95. package/dist/cjs/trading-operation.js +587 -0
  96. package/dist/cjs/trading-operation.js.map +1 -0
  97. package/dist/cjs/verify-operation.d.ts +79 -0
  98. package/dist/cjs/verify-operation.js +246 -0
  99. package/dist/cjs/verify-operation.js.map +1 -0
  100. package/dist/cjs/wallet-operation.d.ts +52 -0
  101. package/dist/cjs/wallet-operation.js +58 -0
  102. package/dist/cjs/wallet-operation.js.map +1 -0
  103. package/dist/cjs/wasm-provider.d.ts +15 -0
  104. package/dist/cjs/wasm-provider.js +20 -0
  105. package/dist/cjs/wasm-provider.js.map +1 -0
  106. package/dist/cjs/wrapper-operation.d.ts +196 -0
  107. package/dist/cjs/wrapper-operation.js +317 -0
  108. package/dist/cjs/wrapper-operation.js.map +1 -0
  109. package/dist/deploy-operation.d.ts +104 -0
  110. package/dist/deploy-operation.d.ts.map +1 -0
  111. package/dist/deploy-operation.js +327 -0
  112. package/dist/deploy-operation.js.map +1 -0
  113. package/dist/encoding.d.ts +6 -0
  114. package/dist/encoding.d.ts.map +1 -0
  115. package/dist/encoding.js +44 -0
  116. package/dist/encoding.js.map +1 -0
  117. package/dist/engine.d.ts +41 -0
  118. package/dist/engine.d.ts.map +1 -0
  119. package/dist/engine.js +8969 -0
  120. package/dist/engine.js.map +1 -0
  121. package/dist/errors.d.ts +8 -0
  122. package/dist/errors.d.ts.map +1 -0
  123. package/dist/errors.js +18 -0
  124. package/dist/errors.js.map +1 -0
  125. package/dist/fee-ticket-operation.d.ts +205 -0
  126. package/dist/fee-ticket-operation.d.ts.map +1 -0
  127. package/dist/fee-ticket-operation.js +320 -0
  128. package/dist/fee-ticket-operation.js.map +1 -0
  129. package/dist/index.d.ts +28 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +28 -0
  132. package/dist/index.js.map +1 -0
  133. package/dist/ladder-limit-orders.d.ts +42 -0
  134. package/dist/ladder-limit-orders.d.ts.map +1 -0
  135. package/dist/ladder-limit-orders.js +121 -0
  136. package/dist/ladder-limit-orders.js.map +1 -0
  137. package/dist/mint-availability-operation.d.ts +57 -0
  138. package/dist/mint-availability-operation.d.ts.map +1 -0
  139. package/dist/mint-availability-operation.js +91 -0
  140. package/dist/mint-availability-operation.js.map +1 -0
  141. package/dist/models.d.ts +91 -0
  142. package/dist/models.d.ts.map +1 -0
  143. package/dist/models.js +3 -0
  144. package/dist/models.js.map +1 -0
  145. package/dist/operations.d.ts +7 -0
  146. package/dist/operations.d.ts.map +1 -0
  147. package/dist/operations.js +36 -0
  148. package/dist/operations.js.map +1 -0
  149. package/dist/paid-mint-amount.d.ts +70 -0
  150. package/dist/paid-mint-amount.d.ts.map +1 -0
  151. package/dist/paid-mint-amount.js +268 -0
  152. package/dist/paid-mint-amount.js.map +1 -0
  153. package/dist/protocol.d.ts +22 -0
  154. package/dist/protocol.d.ts.map +1 -0
  155. package/dist/protocol.js +22 -0
  156. package/dist/protocol.js.map +1 -0
  157. package/dist/runtime.d.ts +28 -0
  158. package/dist/runtime.d.ts.map +1 -0
  159. package/dist/runtime.js +2 -0
  160. package/dist/runtime.js.map +1 -0
  161. package/dist/sale-common.d.ts +288 -0
  162. package/dist/sale-common.d.ts.map +1 -0
  163. package/dist/sale-common.js +844 -0
  164. package/dist/sale-common.js.map +1 -0
  165. package/dist/source-provider.d.ts +12 -0
  166. package/dist/source-provider.d.ts.map +1 -0
  167. package/dist/source-provider.js +2 -0
  168. package/dist/source-provider.js.map +1 -0
  169. package/dist/source-validation.d.ts +10 -0
  170. package/dist/source-validation.d.ts.map +1 -0
  171. package/dist/source-validation.js +28 -0
  172. package/dist/source-validation.js.map +1 -0
  173. package/dist/token-amount.d.ts +32 -0
  174. package/dist/token-amount.d.ts.map +1 -0
  175. package/dist/token-amount.js +237 -0
  176. package/dist/token-amount.js.map +1 -0
  177. package/dist/token-operation.d.ts +136 -0
  178. package/dist/token-operation.d.ts.map +1 -0
  179. package/dist/token-operation.js +231 -0
  180. package/dist/token-operation.js.map +1 -0
  181. package/dist/trade-fee.d.ts +61 -0
  182. package/dist/trade-fee.d.ts.map +1 -0
  183. package/dist/trade-fee.js +173 -0
  184. package/dist/trade-fee.js.map +1 -0
  185. package/dist/trading-operation.d.ts +213 -0
  186. package/dist/trading-operation.d.ts.map +1 -0
  187. package/dist/trading-operation.js +580 -0
  188. package/dist/trading-operation.js.map +1 -0
  189. package/dist/verify-operation.d.ts +80 -0
  190. package/dist/verify-operation.d.ts.map +1 -0
  191. package/dist/verify-operation.js +243 -0
  192. package/dist/verify-operation.js.map +1 -0
  193. package/dist/wallet-operation.d.ts +53 -0
  194. package/dist/wallet-operation.d.ts.map +1 -0
  195. package/dist/wallet-operation.js +55 -0
  196. package/dist/wallet-operation.js.map +1 -0
  197. package/dist/wasm-provider.d.ts +16 -0
  198. package/dist/wasm-provider.d.ts.map +1 -0
  199. package/dist/wasm-provider.js +17 -0
  200. package/dist/wasm-provider.js.map +1 -0
  201. package/dist/wrapper-operation.d.ts +197 -0
  202. package/dist/wrapper-operation.d.ts.map +1 -0
  203. package/dist/wrapper-operation.js +311 -0
  204. package/dist/wrapper-operation.js.map +1 -0
  205. package/index.d.ts +1 -0
  206. package/package.json +84 -0
  207. package/src/abi.ts +493 -0
  208. package/src/action-source-resolver.ts +660 -0
  209. package/src/artifacts.ts +87 -0
  210. package/src/builder.ts +37 -0
  211. package/src/deploy-operation.ts +458 -0
  212. package/src/encoding.ts +58 -0
  213. package/src/engine.ts +13226 -0
  214. package/src/errors.ts +35 -0
  215. package/src/fee-ticket-operation.ts +518 -0
  216. package/src/index.ts +27 -0
  217. package/src/ladder-limit-orders.ts +184 -0
  218. package/src/mint-availability-operation.ts +146 -0
  219. package/src/models.ts +103 -0
  220. package/src/operations.ts +46 -0
  221. package/src/paid-mint-amount.ts +402 -0
  222. package/src/protocol.ts +28 -0
  223. package/src/runtime.ts +29 -0
  224. package/src/sale-common.ts +1238 -0
  225. package/src/source-provider.ts +12 -0
  226. package/src/source-validation.ts +47 -0
  227. package/src/token-amount.ts +302 -0
  228. package/src/token-operation.ts +384 -0
  229. package/src/trade-fee.ts +264 -0
  230. package/src/trading-operation.ts +842 -0
  231. package/src/verify-operation.ts +400 -0
  232. package/src/wallet-operation.ts +86 -0
  233. package/src/wasm-provider.ts +32 -0
  234. package/src/wrapper-operation.ts +531 -0
@@ -0,0 +1,435 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KCC20_MAX_CONSOLIDATION_INPUTS = exports.KCC20_MIN_CONSOLIDATION_INPUTS = void 0;
4
+ exports.kcc20IndexedUtxoOutpoint = kcc20IndexedUtxoOutpoint;
5
+ exports.normalizeKcc20IndexedUtxos = normalizeKcc20IndexedUtxos;
6
+ exports.selectActiveMinterUtxo = selectActiveMinterUtxo;
7
+ exports.ownerNativeHolderUtxos = ownerNativeHolderUtxos;
8
+ exports.selectOwnerNativeHolderUtxo = selectOwnerNativeHolderUtxo;
9
+ exports.ownerWrappedHolderUtxos = ownerWrappedHolderUtxos;
10
+ exports.selectOwnerWrappedHolderUtxo = selectOwnerWrappedHolderUtxo;
11
+ exports.selectOwnerWrappedHolderUtxosForSweep = selectOwnerWrappedHolderUtxosForSweep;
12
+ exports.selectWrappedRootUtxo = selectWrappedRootUtxo;
13
+ exports.selectWrappedOrderUtxo = selectWrappedOrderUtxo;
14
+ exports.wrapperReserveUtxos = wrapperReserveUtxos;
15
+ exports.selectWrapperReserveUtxo = selectWrapperReserveUtxo;
16
+ exports.resolveActiveWrapperUtxo = resolveActiveWrapperUtxo;
17
+ exports.kcc20WrapperBelongsToToken = kcc20WrapperBelongsToToken;
18
+ exports.isKcc20WrapperReadyToBuild = isKcc20WrapperReadyToBuild;
19
+ exports.kcc20WrapperNotReadyReason = kcc20WrapperNotReadyReason;
20
+ exports.selectOwnerFeeTicketUtxos = selectOwnerFeeTicketUtxos;
21
+ exports.selectFeeTicketOutpoints = selectFeeTicketOutpoints;
22
+ exports.selectConsolidationBatch = selectConsolidationBatch;
23
+ exports.summarizeHolderUtxos = summarizeHolderUtxos;
24
+ exports.KCC20_MIN_CONSOLIDATION_INPUTS = 2;
25
+ exports.KCC20_MAX_CONSOLIDATION_INPUTS = 8;
26
+ function kcc20IndexedUtxoOutpoint(utxo) {
27
+ return (utxo.outpoint ?? `${utxo.txidHex}:${utxo.vout}`).toLowerCase();
28
+ }
29
+ function normalizeKcc20IndexedUtxos(values) {
30
+ const byOutpoint = new Map();
31
+ for (const value of values) {
32
+ if (!value || typeof value !== "object" || Array.isArray(value))
33
+ continue;
34
+ const row = value;
35
+ const txidHex = hex32(row["txidHex"]);
36
+ const vout = Number(row["vout"]);
37
+ const address = typeof row["address"] === "string" ? row["address"] : "";
38
+ const amountSompi = unsigned(row["amountSompi"]);
39
+ if (!txidHex ||
40
+ !Number.isInteger(vout) ||
41
+ vout < 0 ||
42
+ !address ||
43
+ amountSompi === null) {
44
+ continue;
45
+ }
46
+ const rawState = record(row["state"]);
47
+ const state = rawState ? normalizeState(rawState) : null;
48
+ const covenantId = hex32(row["covenantId"]);
49
+ const normalized = {
50
+ txidHex,
51
+ vout,
52
+ outpoint: `${txidHex}:${vout}`,
53
+ address,
54
+ amountSompi,
55
+ ...(typeof row["action"] === "string" ? { action: row["action"] } : {}),
56
+ state,
57
+ ...(covenantId ? { covenantId } : {}),
58
+ };
59
+ const key = kcc20IndexedUtxoOutpoint(normalized);
60
+ const existing = byOutpoint.get(key);
61
+ if (!existing || (!existing.state && normalized.state))
62
+ byOutpoint.set(key, normalized);
63
+ }
64
+ return [...byOutpoint.values()].sort((a, b) => kcc20IndexedUtxoOutpoint(a).localeCompare(kcc20IndexedUtxoOutpoint(b)));
65
+ }
66
+ function selectActiveMinterUtxo(utxos, requestedAmount) {
67
+ const requested = requiredAmount(requestedAmount);
68
+ return (utxos.find((utxo) => {
69
+ const state = utxo.state;
70
+ const remaining = amount(state?.["remainingSupply"]);
71
+ return (state?.["isMintAuthority"] === true &&
72
+ remaining !== null &&
73
+ remaining >= requested);
74
+ }) ?? null);
75
+ }
76
+ function ownerNativeHolderUtxos(utxos, owner) {
77
+ const normalizedOwner = owner.toLowerCase();
78
+ return utxos.filter((utxo) => {
79
+ const state = utxo.state;
80
+ const value = amount(state?.["amount"]);
81
+ return (value !== null &&
82
+ value > 0n &&
83
+ state?.["isMintAuthority"] !== true &&
84
+ numberValue(state?.["ownerScheme"] ?? state?.["identifierType"]) === 0 &&
85
+ stringValue(state?.["ownerIdentifier"] ?? state?.["owner"])?.toLowerCase() === normalizedOwner);
86
+ });
87
+ }
88
+ function selectOwnerNativeHolderUtxo(utxos, owner, requestedAmount, outpoint) {
89
+ const requested = requiredAmount(requestedAmount);
90
+ const requestedOutpoint = outpoint?.toLowerCase();
91
+ return (ownerNativeHolderUtxos(utxos, owner)
92
+ .filter((utxo) => !requestedOutpoint ||
93
+ kcc20IndexedUtxoOutpoint(utxo) === requestedOutpoint)
94
+ .filter((utxo) => amount(utxo.state?.["amount"]) >= requested)
95
+ .sort(compareStateAmount)[0] ?? null);
96
+ }
97
+ function ownerWrappedHolderUtxos(utxos, owner, canonicalTokenId) {
98
+ const normalizedOwner = owner.toLowerCase();
99
+ const canonical = canonicalTokenId.toLowerCase();
100
+ return utxos.filter((utxo) => {
101
+ const state = utxo.state;
102
+ const value = amount(state?.["amount"]);
103
+ return (value !== null &&
104
+ value > 0n &&
105
+ numberValue(state?.["mode"] ?? state?.["stateMode"]) === 0 &&
106
+ numberValue(state?.["identifierType"] ?? state?.["ownerScheme"]) === 0 &&
107
+ stringValue(state?.["ownerIdentifier"] ?? state?.["owner"])?.toLowerCase() === normalizedOwner &&
108
+ stringValue(state?.["canonicalTokenId"] ?? state?.["tokenId"])?.toLowerCase() === canonical);
109
+ });
110
+ }
111
+ function selectOwnerWrappedHolderUtxo(utxos, owner, requestedAmount, canonicalTokenId, largest = false) {
112
+ const requested = requiredAmount(requestedAmount);
113
+ const candidates = ownerWrappedHolderUtxos(utxos, owner, canonicalTokenId)
114
+ .filter((utxo) => amount(utxo.state?.["amount"]) >= requested)
115
+ .sort(compareStateAmount);
116
+ return (largest ? candidates.at(-1) : candidates[0]) ?? null;
117
+ }
118
+ function selectOwnerWrappedHolderUtxosForSweep(utxos, owner, requestedAmounts, canonicalTokenId) {
119
+ const candidates = ownerWrappedHolderUtxos(utxos, owner, canonicalTokenId).sort(compareStateAmount);
120
+ const selected = [];
121
+ const used = new Set();
122
+ for (const requestedText of requestedAmounts) {
123
+ const requested = amount(requestedText);
124
+ if (requested === null)
125
+ return selected;
126
+ const match = candidates.find((utxo) => !used.has(kcc20IndexedUtxoOutpoint(utxo)) &&
127
+ amount(utxo.state?.["amount"]) >= requested);
128
+ if (!match)
129
+ return selected;
130
+ used.add(kcc20IndexedUtxoOutpoint(match));
131
+ selected.push(match);
132
+ }
133
+ return selected;
134
+ }
135
+ function selectWrappedRootUtxo(utxos, canonicalTokenId) {
136
+ const canonical = canonicalTokenId.toLowerCase();
137
+ return (utxos.find((utxo) => numberValue(utxo.state?.["mode"] ?? utxo.state?.["stateMode"]) === 1 &&
138
+ stringValue(utxo.state?.["canonicalTokenId"] ?? utxo.state?.["tokenId"])?.toLowerCase() === canonical) ?? null);
139
+ }
140
+ function selectWrappedOrderUtxo(utxos, input) {
141
+ const canonical = input.canonicalTokenId.toLowerCase();
142
+ const requested = input.requestedAmount
143
+ ? requiredAmount(input.requestedAmount)
144
+ : null;
145
+ const owner = input.owner?.toLowerCase();
146
+ return (utxos.find((utxo) => {
147
+ const state = utxo.state;
148
+ const value = amount(state?.["amount"]);
149
+ return (kcc20IndexedUtxoOutpoint(utxo) === input.orderId.toLowerCase() &&
150
+ numberValue(state?.["mode"] ?? state?.["stateMode"]) === input.mode &&
151
+ stringValue(state?.["canonicalTokenId"] ?? state?.["tokenId"])?.toLowerCase() === canonical &&
152
+ (!input.unitPriceSompi ||
153
+ stringValue(state?.["unitPriceSompi"]) === input.unitPriceSompi) &&
154
+ (requested === null || (value !== null && value >= requested)) &&
155
+ (!owner ||
156
+ stringValue(state?.["ownerIdentifier"] ?? state?.["owner"])?.toLowerCase() === owner));
157
+ }) ?? null);
158
+ }
159
+ function wrapperReserveUtxos(utxos, wrapperIds) {
160
+ const ids = new Set(wrapperIds
161
+ .map((id) => id?.toLowerCase())
162
+ .filter((id) => /^[a-f0-9]{64}$/.test(id)));
163
+ return utxos
164
+ .filter((utxo) => {
165
+ const state = utxo.state;
166
+ const value = amount(state?.["amount"]);
167
+ return (value !== null &&
168
+ value > 0n &&
169
+ state?.["isMintAuthority"] !== true &&
170
+ numberValue(state?.["ownerScheme"] ?? state?.["identifierType"]) ===
171
+ 4 &&
172
+ ids.has(stringValue(state?.["ownerIdentifier"] ?? state?.["owner"])?.toLowerCase() ?? ""));
173
+ })
174
+ .sort(compareStateAmount);
175
+ }
176
+ function selectWrapperReserveUtxo(utxos, wrapperIds, requestedAmount) {
177
+ const requested = requiredAmount(requestedAmount);
178
+ return (wrapperReserveUtxos(utxos, wrapperIds).find((utxo) => amount(utxo.state?.["amount"]) >= requested) ?? null);
179
+ }
180
+ function resolveActiveWrapperUtxo(wrapper, utxos) {
181
+ const address = wrapper.wrapperAddress?.toLowerCase();
182
+ const candidates = utxos.filter((utxo) => !address || utxo.address.toLowerCase() === address);
183
+ const activeId = wrapper.activeCovenantId?.toLowerCase();
184
+ const byNativeId = activeId
185
+ ? candidates.filter((utxo) => utxo.covenantId?.toLowerCase() === activeId)
186
+ : [];
187
+ const selectable = byNativeId.length ? byNativeId : candidates;
188
+ if (!selectable.length)
189
+ throw new Error("wrapped market has no active wrapper UTXO");
190
+ if (selectable.length > 1) {
191
+ throw new Error("wrapped market has multiple active wrapper UTXOs; refresh the indexer snapshot");
192
+ }
193
+ return {
194
+ selected: selectable[0],
195
+ candidates: selectable,
196
+ ambiguous: false,
197
+ ...(activeId || selectable[0].covenantId
198
+ ? { activeCovenantId: activeId ?? selectable[0].covenantId }
199
+ : {}),
200
+ };
201
+ }
202
+ function kcc20WrapperBelongsToToken(wrapper, canonicalTokenId) {
203
+ const expected = canonicalTokenId.toLowerCase();
204
+ const appCanonicalIds = [
205
+ wrapper.canonicalTokenId,
206
+ wrapper.claimedCanonicalTokenId,
207
+ ]
208
+ .filter((value) => Boolean(value))
209
+ .map((value) => value.toLowerCase());
210
+ return !appCanonicalIds.length || appCanonicalIds.includes(expected);
211
+ }
212
+ function isKcc20WrapperReadyToBuild(wrapper) {
213
+ if (!wrapper?.enabled)
214
+ return false;
215
+ if (wrapper.pendingReveal === true)
216
+ return wrapper.buildable === true && (wrapper.activeUtxos ?? 0) > 0;
217
+ return wrapper.buildable !== false && Boolean(wrapper.activeCovenantId);
218
+ }
219
+ function kcc20WrapperNotReadyReason(wrapper) {
220
+ if (!wrapper)
221
+ return "No wrapper is ready to wrap.";
222
+ if (!wrapper.enabled)
223
+ return "Wrapped trading is disabled for this market.";
224
+ if (wrapper.buildable === false)
225
+ return wrapper.buildableReason?.trim() || "Wrapper is not buildable yet.";
226
+ return "No wrapper is ready to wrap.";
227
+ }
228
+ function selectOwnerFeeTicketUtxos(utxos, owner, outpoints) {
229
+ const normalizedOwner = hex32(owner);
230
+ if (!normalizedOwner)
231
+ return [];
232
+ const requested = outpoints
233
+ ? new Set(outpoints.map((item) => item.toLowerCase()))
234
+ : null;
235
+ const selected = utxos
236
+ .filter((utxo) => {
237
+ const state = utxo.state;
238
+ return (numberValue(state?.["mode"] ?? state?.["stateMode"]) === 2 &&
239
+ feeTicketStateOwner(state) === normalizedOwner &&
240
+ (!requested || requested.has(kcc20IndexedUtxoOutpoint(utxo))));
241
+ })
242
+ .sort((a, b) => kcc20IndexedUtxoOutpoint(a).localeCompare(kcc20IndexedUtxoOutpoint(b)));
243
+ if (requested && selected.length !== requested.size) {
244
+ throw new Error("One or more selected FeeTicket UTXOs are not active for this wallet");
245
+ }
246
+ return selected;
247
+ }
248
+ function feeTicketStateOwner(state) {
249
+ if (!state)
250
+ return null;
251
+ for (const key of [
252
+ "ownerIdentifier",
253
+ "stateOwner",
254
+ "ticketOwner",
255
+ "owner",
256
+ "recipientOwner",
257
+ "holderOwner",
258
+ ]) {
259
+ const owner = hex32(state[key]);
260
+ if (owner)
261
+ return owner;
262
+ }
263
+ return null;
264
+ }
265
+ function selectFeeTicketOutpoints(tickets, quantity, options = {}) {
266
+ const maxQuantity = options.maxQuantity ?? 10;
267
+ const shortageAction = options.shortageAction ?? "use";
268
+ if (!Number.isInteger(maxQuantity) ||
269
+ maxQuantity < 1 ||
270
+ !Number.isInteger(quantity) ||
271
+ quantity < 1 ||
272
+ quantity > maxQuantity) {
273
+ throw new Error(`Coupon quantity must be between 1 and ${maxQuantity}.`);
274
+ }
275
+ const normalized = tickets.map((ticket) => {
276
+ const outpoint = ticket.outpoint.trim().toLowerCase();
277
+ if (!/^[0-9a-f]{64}:\d+$/.test(outpoint) ||
278
+ unsigned(ticket.amountSompi) === null) {
279
+ throw new Error("Coupon availability is invalid. Refresh and try again.");
280
+ }
281
+ return { outpoint, collateral: BigInt(ticket.amountSompi) };
282
+ });
283
+ const unique = new Set(normalized.map((ticket) => ticket.outpoint));
284
+ if (unique.size !== normalized.length)
285
+ throw new Error("Coupon availability contains duplicate outpoints.");
286
+ if (normalized.length < quantity) {
287
+ throw new Error(`Not enough active coupons are available to ${shortageAction}.`);
288
+ }
289
+ return normalized
290
+ .sort((left, right) => left.collateral < right.collateral
291
+ ? -1
292
+ : left.collateral > right.collateral
293
+ ? 1
294
+ : left.outpoint.localeCompare(right.outpoint))
295
+ .slice(0, quantity)
296
+ .map((ticket) => ticket.outpoint);
297
+ }
298
+ function selectConsolidationBatch(candidates, sourceOutpoints, maximum = exports.KCC20_MAX_CONSOLIDATION_INPUTS, order = "smallest", minimum = 1) {
299
+ const sorted = [...candidates].sort((left, right) => order === "largest"
300
+ ? compareStateAmount(right, left)
301
+ : compareStateAmount(left, right));
302
+ if (!sourceOutpoints?.length)
303
+ return sorted.slice(0, maximum);
304
+ const requested = new Set(sourceOutpoints.map((value) => value.toLowerCase()));
305
+ if (sourceOutpoints.length < minimum)
306
+ throw new Error(`at least ${minimum} holder UTXOs must be selected`);
307
+ if (requested.size !== sourceOutpoints.length)
308
+ throw new Error("distinct source outpoints are required");
309
+ const byOutpoint = new Map(candidates.map((utxo) => [kcc20IndexedUtxoOutpoint(utxo), utxo]));
310
+ const selected = sourceOutpoints.flatMap((outpoint) => {
311
+ const match = byOutpoint.get(outpoint.toLowerCase());
312
+ return match ? [match] : [];
313
+ });
314
+ if (selected.length !== requested.size)
315
+ throw new Error("selected holder UTXOs are not available");
316
+ if (selected.length > maximum)
317
+ throw new Error(`at most ${maximum} holder UTXOs can be consolidated`);
318
+ return selected;
319
+ }
320
+ function summarizeHolderUtxos(candidates, requestedAmount) {
321
+ const requested = requiredAmount(requestedAmount);
322
+ const amounts = candidates.map((utxo) => amount(utxo.state?.["amount"]) ?? 0n);
323
+ const aggregate = amounts.reduce((sum, value) => sum + value, 0n);
324
+ let max = 0n;
325
+ let maxIndex = -1;
326
+ amounts.forEach((value, index) => {
327
+ if (value > max) {
328
+ max = value;
329
+ maxIndex = index;
330
+ }
331
+ });
332
+ const fragmented = aggregate >= requested && max < requested;
333
+ return {
334
+ requestedAmount: requested.toString(),
335
+ aggregateAmount: aggregate.toString(),
336
+ maxSingleUtxoAmount: max.toString(),
337
+ utxoCount: candidates.length,
338
+ fragmented,
339
+ ...(maxIndex >= 0
340
+ ? {
341
+ maxSingleUtxoOutpoint: kcc20IndexedUtxoOutpoint(candidates[maxIndex]),
342
+ }
343
+ : {}),
344
+ ...(fragmented ? { recommendedAction: "consolidate" } : {}),
345
+ };
346
+ }
347
+ function normalizeState(state) {
348
+ const extension = record(state["extension"]);
349
+ const owner = hex32(state["owner"] ?? state["ownerIdentifier"]);
350
+ const ownerScheme = numberValue(state["ownerScheme"] ?? state["identifierType"]);
351
+ const normalized = { ...state };
352
+ if (owner) {
353
+ normalized["owner"] = owner;
354
+ normalized["ownerIdentifier"] = owner;
355
+ }
356
+ if (ownerScheme !== null) {
357
+ normalized["ownerScheme"] = ownerScheme;
358
+ normalized["identifierType"] = ownerScheme;
359
+ }
360
+ const amountValue = unsigned(state["amount"]);
361
+ if (amountValue !== null)
362
+ normalized["amount"] = amountValue;
363
+ const remaining = unsigned(state["remainingSupply"] ?? extension?.["remainingSupply"]);
364
+ if (remaining !== null)
365
+ normalized["remainingSupply"] = remaining;
366
+ const canonical = hex32(state["canonicalTokenId"] ?? state["tokenId"]);
367
+ if (canonical)
368
+ normalized["canonicalTokenId"] = canonical;
369
+ const mode = numberValue(state["mode"] ?? state["stateMode"]);
370
+ if (mode !== null)
371
+ normalized["mode"] = mode;
372
+ const unitPrice = unsigned(state["unitPriceSompi"] ?? state["marketUnitPriceSompi"]);
373
+ if (unitPrice !== null)
374
+ normalized["unitPriceSompi"] = unitPrice;
375
+ const feeTicketId = hex32(state["feeTicketId"]);
376
+ if (feeTicketId)
377
+ normalized["feeTicketId"] = feeTicketId;
378
+ const displayScale = unsigned(state["displayScale"] ??
379
+ state["priceScale"] ??
380
+ state["tokenDisplayScale"] ??
381
+ extension?.["displayScale"]);
382
+ if (displayScale !== null) {
383
+ normalized["displayScale"] = displayScale;
384
+ normalized["priceScale"] = displayScale;
385
+ normalized["tokenDisplayScale"] = displayScale;
386
+ }
387
+ return normalized;
388
+ }
389
+ function compareStateAmount(left, right) {
390
+ const a = amount(left.state?.["amount"]) ?? 0n;
391
+ const b = amount(right.state?.["amount"]) ?? 0n;
392
+ return a < b
393
+ ? -1
394
+ : a > b
395
+ ? 1
396
+ : kcc20IndexedUtxoOutpoint(left).localeCompare(kcc20IndexedUtxoOutpoint(right));
397
+ }
398
+ function amount(value) {
399
+ const normalized = unsigned(value);
400
+ return normalized === null ? null : BigInt(normalized);
401
+ }
402
+ function requiredAmount(value) {
403
+ const normalized = amount(value);
404
+ if (normalized === null)
405
+ throw new Error("indexed covenant amount is invalid");
406
+ return normalized;
407
+ }
408
+ function unsigned(value) {
409
+ if (typeof value === "bigint")
410
+ return value >= 0n ? value.toString() : null;
411
+ if (typeof value === "number")
412
+ return Number.isSafeInteger(value) && value >= 0 ? value.toString() : null;
413
+ return typeof value === "string" && /^(0|[1-9]\d*)$/.test(value)
414
+ ? value
415
+ : null;
416
+ }
417
+ function hex32(value) {
418
+ if (typeof value !== "string")
419
+ return null;
420
+ const normalized = value.trim().toLowerCase().replace(/^0x/, "");
421
+ return /^[a-f0-9]{64}$/.test(normalized) ? normalized : null;
422
+ }
423
+ function record(value) {
424
+ return value && typeof value === "object" && !Array.isArray(value)
425
+ ? value
426
+ : null;
427
+ }
428
+ function stringValue(value) {
429
+ return typeof value === "string" ? value : null;
430
+ }
431
+ function numberValue(value) {
432
+ const parsed = typeof value === "string" && /^\d+$/.test(value) ? Number(value) : value;
433
+ return typeof parsed === "number" && Number.isInteger(parsed) ? parsed : null;
434
+ }
435
+ //# sourceMappingURL=action-source-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-source-resolver.js","sourceRoot":"","sources":["../../src/action-source-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ArtifactDescriptor, BuildContext } from "./models.js";
2
+ export declare const KCC20_ARTIFACT_SCRIPT_SHA256: Readonly<{
3
+ "KCC20.placeholder.json": "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41";
4
+ "KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930";
5
+ "KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71";
6
+ "KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030";
7
+ "KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33";
8
+ }>;
9
+ export type Kcc20ArtifactKey = keyof typeof KCC20_ARTIFACT_SCRIPT_SHA256;
10
+ export declare function isKcc20ArtifactKey(value: string): value is Kcc20ArtifactKey;
11
+ export declare function assertKcc20ArtifactScriptHash(key: Kcc20ArtifactKey, artifact: unknown): void;
12
+ export declare function requireArtifact(context: BuildContext, key: string): ArtifactDescriptor;
13
+ export declare function assertArtifactHash(artifact: ArtifactDescriptor, expectedHash: string): void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KCC20_ARTIFACT_SCRIPT_SHA256 = void 0;
4
+ exports.isKcc20ArtifactKey = isKcc20ArtifactKey;
5
+ exports.assertKcc20ArtifactScriptHash = assertKcc20ArtifactScriptHash;
6
+ exports.requireArtifact = requireArtifact;
7
+ exports.assertArtifactHash = assertArtifactHash;
8
+ const errors_js_1 = require("./errors.js");
9
+ const sha256_1 = require("@noble/hashes/sha256");
10
+ exports.KCC20_ARTIFACT_SCRIPT_SHA256 = Object.freeze({
11
+ "KCC20.placeholder.json": "4633b082f26adbf14600b767d6e2146e36ce67d63d8202c0281857922c05ac41",
12
+ "KCC20FeeTicket.placeholder.json": "ed81365466ee4c44db1210b3360783af8145f74e49e847848195e09c71ad6930",
13
+ "KCC20Orderbook.placeholder.json": "ef9fe81ff7aa2dc2df118d8d7cc126aca6f2f9c181b9c2d15727a538b23c6f71",
14
+ "KCC20Wrapper.placeholder.json": "f3bdf09be9aa258708a306283a4278a93cfb64f35fc50ed7d316b9b189ef9030",
15
+ "KCC20Vesting.placeholder.json": "1b84d74aa01b6a50edbff5bf1f9e988a5a6a00ec645458dfd3912ac532b77c33",
16
+ });
17
+ function isKcc20ArtifactKey(value) {
18
+ return Object.prototype.hasOwnProperty.call(exports.KCC20_ARTIFACT_SCRIPT_SHA256, value);
19
+ }
20
+ function assertKcc20ArtifactScriptHash(key, artifact) {
21
+ const script = artifact?.script;
22
+ const bytes = script instanceof Uint8Array
23
+ ? script
24
+ : Array.isArray(script) &&
25
+ script.every((byte) => Number.isInteger(byte) && byte >= 0 && byte <= 0xff)
26
+ ? Uint8Array.from(script)
27
+ : null;
28
+ if (!bytes) {
29
+ throw new errors_js_1.Kcc20BuilderError("ARTIFACT_MISMATCH", `contract artifact script is invalid for ${key}`, { artifactKey: key });
30
+ }
31
+ const actualHash = [...(0, sha256_1.sha256)(bytes)]
32
+ .map((byte) => byte.toString(16).padStart(2, "0"))
33
+ .join("");
34
+ const expectedHash = exports.KCC20_ARTIFACT_SCRIPT_SHA256[key];
35
+ if (actualHash !== expectedHash) {
36
+ throw new errors_js_1.Kcc20BuilderError("ARTIFACT_MISMATCH", `contract artifact hash mismatch for ${key}`, { artifactKey: key, expectedHash, actualHash });
37
+ }
38
+ }
39
+ function requireArtifact(context, key) {
40
+ const artifact = context.artifacts[key];
41
+ if (!artifact) {
42
+ throw new errors_js_1.Kcc20BuilderError("ARTIFACT_MISMATCH", `required contract artifact is missing: ${key}`, { artifactKey: key });
43
+ }
44
+ return artifact;
45
+ }
46
+ function assertArtifactHash(artifact, expectedHash) {
47
+ if (artifact.hash.toLowerCase() !== expectedHash.toLowerCase()) {
48
+ throw new errors_js_1.Kcc20BuilderError("ARTIFACT_MISMATCH", `contract artifact hash mismatch for ${artifact.key}`, { artifactKey: artifact.key, expectedHash, actualHash: artifact.hash });
49
+ }
50
+ }
51
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/artifacts.ts"],"names":[],"mappings":";;;AAmBA,gDAKC;AAED,sEAgCC;AAED,0CAaC;AAED,gDAWC;AAtFD,2CAAgD;AAEhD,iDAA8C;AAEjC,QAAA,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,wBAAwB,EACtB,kEAAkE;IACpE,iCAAiC,EAC/B,kEAAkE;IACpE,iCAAiC,EAC/B,kEAAkE;IACpE,+BAA+B,EAC7B,kEAAkE;IACpE,+BAA+B,EAC7B,kEAAkE;CACrE,CAAC,CAAC;AAIH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CACzC,oCAA4B,EAC5B,KAAK,CACN,CAAC;AACJ,CAAC;AAED,SAAgB,6BAA6B,CAC3C,GAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAI,QAAwC,EAAE,MAAM,CAAC;IACjE,MAAM,KAAK,GACT,MAAM,YAAY,UAAU;QAC1B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnB,MAAM,CAAC,KAAK,CACV,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAC9D;YACH,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,6BAAiB,CACzB,mBAAmB,EACnB,2CAA2C,GAAG,EAAE,EAChD,EAAE,WAAW,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,YAAY,GAAG,oCAA4B,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,6BAAiB,CACzB,mBAAmB,EACnB,uCAAuC,GAAG,EAAE,EAC5C,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAC/C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAC7B,OAAqB,EACrB,GAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,6BAAiB,CACzB,mBAAmB,EACnB,0CAA0C,GAAG,EAAE,EAC/C,EAAE,WAAW,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,kBAAkB,CAChC,QAA4B,EAC5B,YAAoB;IAEpB,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,6BAAiB,CACzB,mBAAmB,EACnB,uCAAuC,QAAQ,CAAC,GAAG,EAAE,EACrD,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Kcc20PsktBuilderDependencies } from "./models.js";
2
+ export declare const KCC20_PSKT_BUILDER_INPUT_SCHEMA: "kcc20-in-process-pskt-builder-input/v1";
3
+ export declare function buildKcc20Pskt(dependencies: Kcc20PsktBuilderDependencies, request: Kcc20PsktBuilderInput): Promise<Record<string, unknown>>;
4
+ export interface Kcc20PsktBuilderInput {
5
+ schema: typeof KCC20_PSKT_BUILDER_INPUT_SCHEMA;
6
+ schemaVersion?: number;
7
+ builder: Record<string, unknown>;
8
+ request: Record<string, unknown>;
9
+ }
10
+ /** @deprecated Use Kcc20PsktBuilderInput. */
11
+ export type Kcc20LegacyPsktBuilderInput = Kcc20PsktBuilderInput;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KCC20_PSKT_BUILDER_INPUT_SCHEMA = void 0;
4
+ exports.buildKcc20Pskt = buildKcc20Pskt;
5
+ const errors_js_1 = require("./errors.js");
6
+ const engine_js_1 = require("./engine.js");
7
+ exports.KCC20_PSKT_BUILDER_INPUT_SCHEMA = "kcc20-in-process-pskt-builder-input/v1";
8
+ async function buildKcc20Pskt(dependencies, request) {
9
+ if (request.schema !== exports.KCC20_PSKT_BUILDER_INPUT_SCHEMA) {
10
+ throw new errors_js_1.Kcc20BuilderError("INVALID_INPUT", `unsupported KCC20 builder input schema: ${String(request.schema || "missing")}`);
11
+ }
12
+ const engine = (0, engine_js_1.createKcc20PsktBuilderEngine)({
13
+ wasm: dependencies.wasm,
14
+ artifacts: dependencies.artifacts ?? {},
15
+ artifactProvider: dependencies.artifactProvider,
16
+ config: dependencies.config,
17
+ sourceProvider: dependencies.sourceProvider,
18
+ rpcClientFactory: dependencies.rpcClientFactory,
19
+ });
20
+ return engine.build(request);
21
+ }
22
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":";;;AAOA,wCAmBC;AA1BD,2CAAgD;AAChD,2CAA2D;AAG9C,QAAA,+BAA+B,GAC1C,wCAAiD,CAAC;AAE7C,KAAK,UAAU,cAAc,CAClC,YAA0C,EAC1C,OAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,uCAA+B,EAAE,CAAC;QACvD,MAAM,IAAI,6BAAiB,CACzB,eAAe,EACf,2CAA2C,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,wCAA4B,EAAC;QAC1C,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,EAAE;QACvC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;QAC/C,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;KAChD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC"}