@ckb-ccc/core 0.0.5-alpha.8 → 0.0.7-alpha.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 (265) hide show
  1. package/dist/address/address.advanced.d.ts.map +1 -1
  2. package/dist/address/address.advanced.js +2 -5
  3. package/dist/address/index.d.ts +1 -1
  4. package/dist/address/index.d.ts.map +1 -1
  5. package/dist/address/index.js +2 -5
  6. package/dist/ckb/script.d.ts +43 -1
  7. package/dist/ckb/script.d.ts.map +1 -1
  8. package/dist/ckb/script.js +51 -0
  9. package/dist/ckb/transaction.d.ts +215 -27
  10. package/dist/ckb/transaction.d.ts.map +1 -1
  11. package/dist/ckb/transaction.js +472 -32
  12. package/dist/client/advanced.d.ts +2 -0
  13. package/dist/client/advanced.d.ts.map +1 -1
  14. package/dist/client/advanced.js +2 -0
  15. package/dist/client/client.advanced.d.ts +10 -0
  16. package/dist/client/client.advanced.d.ts.map +1 -0
  17. package/dist/client/client.advanced.js +80 -0
  18. package/dist/client/client.d.ts +50 -13
  19. package/dist/client/client.d.ts.map +1 -1
  20. package/dist/client/client.js +145 -15
  21. package/dist/client/clientPublicMainnet.advanced.d.ts +4 -2
  22. package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  23. package/dist/client/clientPublicMainnet.advanced.js +103 -0
  24. package/dist/client/clientPublicMainnet.d.ts +4 -2
  25. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  26. package/dist/client/clientPublicMainnet.js +9 -1
  27. package/dist/client/clientPublicTestnet.advanced.d.ts +4 -2
  28. package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  29. package/dist/client/clientPublicTestnet.advanced.js +155 -0
  30. package/dist/client/clientPublicTestnet.d.ts +4 -2
  31. package/dist/client/clientPublicTestnet.d.ts.map +1 -1
  32. package/dist/client/clientPublicTestnet.js +6 -1
  33. package/dist/client/clientTypes.advanced.d.ts +23 -0
  34. package/dist/client/clientTypes.advanced.d.ts.map +1 -0
  35. package/dist/client/clientTypes.advanced.js +4 -0
  36. package/dist/client/clientTypes.d.ts +22 -36
  37. package/dist/client/clientTypes.d.ts.map +1 -1
  38. package/dist/client/clientTypes.js +15 -12
  39. package/dist/client/jsonRpc/index.d.ts +3 -3
  40. package/dist/client/jsonRpc/index.d.ts.map +1 -1
  41. package/dist/client/jsonRpc/index.js +3 -3
  42. package/dist/client/jsonRpc/transformers.d.ts +5 -7
  43. package/dist/client/jsonRpc/transformers.d.ts.map +1 -1
  44. package/dist/client/jsonRpc/transformers.js +8 -6
  45. package/dist/hasher/index.d.ts +1 -1
  46. package/dist/hasher/index.d.ts.map +1 -1
  47. package/dist/hasher/index.js +4 -2
  48. package/dist/num/index.d.ts +12 -0
  49. package/dist/num/index.d.ts.map +1 -1
  50. package/dist/num/index.js +21 -0
  51. package/dist/signer/btc/signerBtc.d.ts.map +1 -1
  52. package/dist/signer/btc/signerBtc.js +6 -3
  53. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -6
  54. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +1 -1
  55. package/dist/signer/btc/signerBtcPublicKeyReadonly.js +0 -8
  56. package/dist/signer/btc/verify.d.ts.map +1 -1
  57. package/dist/signer/btc/verify.js +5 -2
  58. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +0 -6
  59. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  60. package/dist/signer/ckb/signerCkbScriptReadonly.js +0 -8
  61. package/dist/signer/dummy/alwaysError.d.ts +0 -1
  62. package/dist/signer/dummy/alwaysError.d.ts.map +1 -1
  63. package/dist/signer/dummy/alwaysError.js +0 -3
  64. package/dist/signer/dummy/openLink.d.ts +0 -1
  65. package/dist/signer/dummy/openLink.d.ts.map +1 -1
  66. package/dist/signer/dummy/openLink.js +0 -3
  67. package/dist/signer/evm/signerEvm.d.ts.map +1 -1
  68. package/dist/signer/evm/signerEvm.js +7 -5
  69. package/dist/signer/evm/signerEvmAddressReadonly.d.ts +0 -6
  70. package/dist/signer/evm/signerEvmAddressReadonly.d.ts.map +1 -1
  71. package/dist/signer/evm/signerEvmAddressReadonly.js +0 -8
  72. package/dist/signer/index.d.ts +1 -0
  73. package/dist/signer/index.d.ts.map +1 -1
  74. package/dist/signer/index.js +1 -0
  75. package/dist/signer/nostr/index.d.ts +2 -0
  76. package/dist/signer/nostr/index.d.ts.map +1 -0
  77. package/dist/signer/nostr/index.js +1 -0
  78. package/dist/signer/nostr/signerNostr.d.ts +66 -0
  79. package/dist/signer/nostr/signerNostr.d.ts.map +1 -0
  80. package/dist/signer/nostr/signerNostr.js +85 -0
  81. package/dist/signer/nostr/verify.d.ts +5 -0
  82. package/dist/signer/nostr/verify.d.ts.map +1 -0
  83. package/dist/signer/nostr/verify.js +48 -0
  84. package/dist/signer/signer/index.d.ts +7 -12
  85. package/dist/signer/signer/index.d.ts.map +1 -1
  86. package/dist/signer/signer/index.js +11 -4
  87. package/dist/utils/index.d.ts +59 -0
  88. package/dist/utils/index.d.ts.map +1 -1
  89. package/dist/utils/index.js +17 -0
  90. package/dist.commonjs/address/address.advanced.d.ts +29 -24
  91. package/dist.commonjs/address/address.advanced.d.ts.map +1 -1
  92. package/dist.commonjs/address/address.advanced.js +115 -92
  93. package/dist.commonjs/address/advanced.d.ts +1 -1
  94. package/dist.commonjs/address/advanced.js +30 -14
  95. package/dist.commonjs/address/index.d.ts +51 -44
  96. package/dist.commonjs/address/index.d.ts.map +1 -1
  97. package/dist.commonjs/address/index.js +84 -68
  98. package/dist.commonjs/advanced.d.ts +1 -1
  99. package/dist.commonjs/advanced.js +47 -22
  100. package/dist.commonjs/advancedBarrel.d.ts +1 -1
  101. package/dist.commonjs/advancedBarrel.js +30 -14
  102. package/dist.commonjs/barrel.d.ts +1 -1
  103. package/dist.commonjs/barrel.js +30 -14
  104. package/dist.commonjs/bytes/advanced.d.ts +11 -2
  105. package/dist.commonjs/bytes/index.d.ts +9 -3
  106. package/dist.commonjs/bytes/index.js +28 -26
  107. package/dist.commonjs/ckb/advanced.d.ts +1 -1
  108. package/dist.commonjs/ckb/advanced.js +47 -22
  109. package/dist.commonjs/ckb/index.d.ts +1 -1
  110. package/dist.commonjs/ckb/index.js +30 -14
  111. package/dist.commonjs/ckb/molecule.advanced/generated.d.ts +420 -260
  112. package/dist.commonjs/ckb/molecule.advanced/generated.js +1536 -1332
  113. package/dist.commonjs/ckb/molecule.advanced/index.d.ts +3 -3
  114. package/dist.commonjs/ckb/molecule.advanced/index.js +34 -18
  115. package/dist.commonjs/ckb/script.advanced.d.ts +1 -1
  116. package/dist.commonjs/ckb/script.advanced.js +12 -9
  117. package/dist.commonjs/ckb/script.d.ts +123 -77
  118. package/dist.commonjs/ckb/script.d.ts.map +1 -1
  119. package/dist.commonjs/ckb/script.js +221 -126
  120. package/dist.commonjs/ckb/transaction.advanced.d.ts +1 -1
  121. package/dist.commonjs/ckb/transaction.advanced.js +4 -4
  122. package/dist.commonjs/ckb/transaction.d.ts +796 -533
  123. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  124. package/dist.commonjs/ckb/transaction.js +1372 -702
  125. package/dist.commonjs/client/advanced.d.ts +3 -1
  126. package/dist.commonjs/client/advanced.d.ts.map +1 -1
  127. package/dist.commonjs/client/advanced.js +32 -14
  128. package/dist.commonjs/client/client.advanced.d.ts +27 -0
  129. package/dist.commonjs/client/client.advanced.d.ts.map +1 -0
  130. package/dist.commonjs/client/client.advanced.js +116 -0
  131. package/dist.commonjs/client/client.d.ts +118 -21
  132. package/dist.commonjs/client/client.d.ts.map +1 -1
  133. package/dist.commonjs/client/client.js +219 -55
  134. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +9 -3
  135. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  136. package/dist.commonjs/client/clientPublicMainnet.advanced.js +144 -24
  137. package/dist.commonjs/client/clientPublicMainnet.d.ts +9 -5
  138. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
  139. package/dist.commonjs/client/clientPublicMainnet.js +18 -8
  140. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +8 -3
  141. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  142. package/dist.commonjs/client/clientPublicTestnet.advanced.js +204 -24
  143. package/dist.commonjs/client/clientPublicTestnet.d.ts +9 -5
  144. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
  145. package/dist.commonjs/client/clientPublicTestnet.js +14 -9
  146. package/dist.commonjs/client/clientTypes.advanced.d.ts +23 -0
  147. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -0
  148. package/dist.commonjs/client/clientTypes.advanced.js +8 -0
  149. package/dist.commonjs/client/clientTypes.d.ts +57 -46
  150. package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
  151. package/dist.commonjs/client/clientTypes.js +60 -22
  152. package/dist.commonjs/client/index.d.ts +1 -1
  153. package/dist.commonjs/client/index.js +30 -14
  154. package/dist.commonjs/client/jsonRpc/advanced.d.ts +1 -1
  155. package/dist.commonjs/client/jsonRpc/advanced.js +30 -14
  156. package/dist.commonjs/client/jsonRpc/index.d.ts +94 -75
  157. package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
  158. package/dist.commonjs/client/jsonRpc/index.js +135 -108
  159. package/dist.commonjs/client/jsonRpc/transformers.d.ts +76 -38
  160. package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +1 -1
  161. package/dist.commonjs/client/jsonRpc/transformers.js +174 -150
  162. package/dist.commonjs/client/jsonRpc/types.d.ts +38 -38
  163. package/dist.commonjs/fixedPoint/index.d.ts +9 -3
  164. package/dist.commonjs/fixedPoint/index.js +26 -20
  165. package/dist.commonjs/fixedPoint/index.test.d.ts +1 -1
  166. package/dist.commonjs/fixedPoint/index.test.js +42 -36
  167. package/dist.commonjs/hasher/advanced.d.ts +1 -1
  168. package/dist.commonjs/hasher/index.d.ts +37 -37
  169. package/dist.commonjs/hasher/index.d.ts.map +1 -1
  170. package/dist.commonjs/hasher/index.js +55 -46
  171. package/dist.commonjs/hex/index.d.ts +1 -1
  172. package/dist.commonjs/hex/index.js +1 -1
  173. package/dist.commonjs/index.d.ts +1 -1
  174. package/dist.commonjs/index.js +47 -22
  175. package/dist.commonjs/num/index.d.ts +13 -1
  176. package/dist.commonjs/num/index.d.ts.map +1 -1
  177. package/dist.commonjs/num/index.js +53 -19
  178. package/dist.commonjs/signer/btc/index.d.ts +1 -1
  179. package/dist.commonjs/signer/btc/index.js +30 -14
  180. package/dist.commonjs/signer/btc/signerBtc.d.ts +47 -47
  181. package/dist.commonjs/signer/btc/signerBtc.d.ts.map +1 -1
  182. package/dist.commonjs/signer/btc/signerBtc.js +89 -63
  183. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +45 -51
  184. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +1 -1
  185. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +52 -60
  186. package/dist.commonjs/signer/btc/verify.d.ts +6 -2
  187. package/dist.commonjs/signer/btc/verify.d.ts.map +1 -1
  188. package/dist.commonjs/signer/btc/verify.js +13 -3
  189. package/dist.commonjs/signer/ckb/index.d.ts +1 -1
  190. package/dist.commonjs/signer/ckb/index.js +30 -14
  191. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +45 -51
  192. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  193. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +56 -64
  194. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +6 -2
  195. package/dist.commonjs/signer/ckb/verifyJoyId.js +11 -8
  196. package/dist.commonjs/signer/dummy/alwaysError.d.ts +4 -5
  197. package/dist.commonjs/signer/dummy/alwaysError.d.ts.map +1 -1
  198. package/dist.commonjs/signer/dummy/alwaysError.js +7 -10
  199. package/dist.commonjs/signer/dummy/dummy.d.ts +7 -7
  200. package/dist.commonjs/signer/dummy/dummy.js +16 -16
  201. package/dist.commonjs/signer/dummy/index.d.ts +1 -1
  202. package/dist.commonjs/signer/dummy/index.js +30 -14
  203. package/dist.commonjs/signer/dummy/openLink.d.ts +4 -5
  204. package/dist.commonjs/signer/dummy/openLink.d.ts.map +1 -1
  205. package/dist.commonjs/signer/dummy/openLink.js +7 -10
  206. package/dist.commonjs/signer/evm/index.d.ts +1 -1
  207. package/dist.commonjs/signer/evm/index.js +30 -14
  208. package/dist.commonjs/signer/evm/signerEvm.d.ts +42 -38
  209. package/dist.commonjs/signer/evm/signerEvm.d.ts.map +1 -1
  210. package/dist.commonjs/signer/evm/signerEvm.js +106 -69
  211. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +37 -43
  212. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts.map +1 -1
  213. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +42 -50
  214. package/dist.commonjs/signer/evm/verify.d.ts +6 -2
  215. package/dist.commonjs/signer/evm/verify.js +7 -2
  216. package/dist.commonjs/signer/index.d.ts +2 -1
  217. package/dist.commonjs/signer/index.d.ts.map +1 -1
  218. package/dist.commonjs/signer/index.js +31 -14
  219. package/dist.commonjs/signer/nostr/index.d.ts +2 -0
  220. package/dist.commonjs/signer/nostr/index.d.ts.map +1 -0
  221. package/dist.commonjs/signer/nostr/index.js +33 -0
  222. package/dist.commonjs/signer/nostr/signerNostr.d.ts +66 -0
  223. package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +1 -0
  224. package/dist.commonjs/signer/nostr/signerNostr.js +118 -0
  225. package/dist.commonjs/signer/nostr/verify.d.ts +11 -0
  226. package/dist.commonjs/signer/nostr/verify.d.ts.map +1 -0
  227. package/dist.commonjs/signer/nostr/verify.js +64 -0
  228. package/dist.commonjs/signer/signer/index.d.ts +156 -155
  229. package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
  230. package/dist.commonjs/signer/signer/index.js +209 -175
  231. package/dist.commonjs/utils/index.d.ts +95 -6
  232. package/dist.commonjs/utils/index.d.ts.map +1 -1
  233. package/dist.commonjs/utils/index.js +30 -6
  234. package/package.json +4 -3
  235. package/src/address/address.advanced.ts +2 -5
  236. package/src/address/index.ts +2 -5
  237. package/src/ckb/script.ts +62 -2
  238. package/src/ckb/transaction.ts +678 -58
  239. package/src/client/advanced.ts +2 -0
  240. package/src/client/client.advanced.ts +134 -0
  241. package/src/client/client.ts +236 -25
  242. package/src/client/clientPublicMainnet.advanced.ts +117 -2
  243. package/src/client/clientPublicMainnet.ts +14 -3
  244. package/src/client/clientPublicTestnet.advanced.ts +176 -2
  245. package/src/client/clientPublicTestnet.ts +9 -3
  246. package/src/client/clientTypes.advanced.ts +26 -0
  247. package/src/client/clientTypes.ts +41 -43
  248. package/src/client/jsonRpc/index.ts +4 -4
  249. package/src/client/jsonRpc/transformers.ts +13 -11
  250. package/src/hasher/index.ts +4 -2
  251. package/src/num/index.ts +22 -0
  252. package/src/signer/btc/signerBtc.ts +6 -8
  253. package/src/signer/btc/signerBtcPublicKeyReadonly.ts +0 -9
  254. package/src/signer/btc/verify.ts +6 -3
  255. package/src/signer/ckb/signerCkbScriptReadonly.ts +0 -9
  256. package/src/signer/dummy/alwaysError.ts +0 -4
  257. package/src/signer/dummy/openLink.ts +0 -4
  258. package/src/signer/evm/signerEvm.ts +11 -11
  259. package/src/signer/evm/signerEvmAddressReadonly.ts +0 -9
  260. package/src/signer/index.ts +1 -0
  261. package/src/signer/nostr/index.ts +1 -0
  262. package/src/signer/nostr/signerNostr.ts +135 -0
  263. package/src/signer/nostr/verify.ts +63 -0
  264. package/src/signer/signer/index.ts +15 -11
  265. package/src/utils/index.ts +108 -0
@@ -16,69 +16,95 @@ const signer_1 = require("../signer");
16
16
  * as well as signing transactions.
17
17
  */
18
18
  class SignerBtc extends signer_1.Signer {
19
- get type() {
20
- return signer_1.SignerType.BTC;
21
- }
22
- get signType() {
23
- return signer_1.SignerSignType.BtcEcdsa;
24
- }
25
- /**
26
- * Gets the internal address, which is the Bitcoin account in this case.
27
- *
28
- * @returns A promise that resolves to a string representing the internal address.
29
- */
30
- async getInternalAddress() {
31
- return this.getBtcAccount();
32
- }
33
- /**
34
- * Gets the identity, which is the Bitcoin public key in this case.
35
- *
36
- * @returns A promise that resolves to a string representing the identity
37
- */
38
- async getIdentity() {
39
- return (0, hex_1.hexFrom)(await this.getBtcPublicKey()).slice(2);
40
- }
41
- /**
42
- * Gets an array of Address objects representing the known script addresses for the signer.
43
- *
44
- * @returns A promise that resolves to an array of Address objects.
45
- */
46
- async getAddressObjs() {
47
- const publicKey = await this.getBtcPublicKey();
48
- const hash = (0, ripemd160_1.ripemd160)((0, sha256_1.sha256)((0, bytes_1.bytesFrom)(publicKey)));
49
- return [
50
- await address_1.Address.fromKnownScript(client_1.KnownScript.OmniLock, (0, hex_1.hexFrom)([0x04, ...hash, 0x00]), this.client),
51
- ];
52
- }
53
- /**
54
- * prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.
55
- *
56
- * @param txLike - The transaction to prepare, represented as a TransactionLike object.
57
- * @returns A promise that resolves to the prepared Transaction object.
58
- */
59
- async prepareTransaction(txLike) {
60
- const { script } = await this.getRecommendedAddressObj();
61
- return ckb_1.Transaction.from(txLike).prepareSighashAllWitness(script, 85, this.client);
62
- }
63
- /**
64
- * Signs a transaction without modifying it.
65
- *
66
- * @param txLike - The transaction to sign, represented as a TransactionLike object.
67
- * @returns A promise that resolves to a signed Transaction object.
68
- */
69
- async signOnlyTransaction(txLike) {
70
- const tx = ckb_1.Transaction.from(txLike);
71
- const { script } = await this.getRecommendedAddressObj();
72
- const info = await tx.getSignHashInfo(script, this.client);
73
- if (!info) {
74
- return tx;
75
- }
76
- const signature = (0, bytes_1.bytesFrom)(await this.signMessageRaw(`CKB (Bitcoin Layer) transaction: ${info.message}`), "base64");
77
- signature[0] = 31 + ((signature[0] - 27) % 4);
78
- const witness = ckb_1.WitnessArgs.fromBytes(tx.witnesses[info.position]);
79
- witness.lock = (0, hex_1.hexFrom)((0, bytes_1.bytesConcat)((0, num_1.numToBytes)(5 * 4 + signature.length, 4), (0, num_1.numToBytes)(4 * 4, 4), (0, num_1.numToBytes)(5 * 4 + signature.length, 4), (0, num_1.numToBytes)(5 * 4 + signature.length, 4), (0, num_1.numToBytes)(signature.length, 4), signature));
80
- tx.witnesses[info.position] = (0, hex_1.hexFrom)(witness.toBytes());
81
- return tx;
19
+ get type() {
20
+ return signer_1.SignerType.BTC;
21
+ }
22
+ get signType() {
23
+ return signer_1.SignerSignType.BtcEcdsa;
24
+ }
25
+ /**
26
+ * Gets the internal address, which is the Bitcoin account in this case.
27
+ *
28
+ * @returns A promise that resolves to a string representing the internal address.
29
+ */
30
+ async getInternalAddress() {
31
+ return this.getBtcAccount();
32
+ }
33
+ /**
34
+ * Gets the identity, which is the Bitcoin public key in this case.
35
+ *
36
+ * @returns A promise that resolves to a string representing the identity
37
+ */
38
+ async getIdentity() {
39
+ return (0, hex_1.hexFrom)(await this.getBtcPublicKey()).slice(2);
40
+ }
41
+ /**
42
+ * Gets an array of Address objects representing the known script addresses for the signer.
43
+ *
44
+ * @returns A promise that resolves to an array of Address objects.
45
+ */
46
+ async getAddressObjs() {
47
+ const publicKey = await this.getBtcPublicKey();
48
+ const hash = (0, ripemd160_1.ripemd160)(
49
+ (0, sha256_1.sha256)((0, bytes_1.bytesFrom)(publicKey)),
50
+ );
51
+ return [
52
+ await address_1.Address.fromKnownScript(
53
+ this.client,
54
+ client_1.KnownScript.OmniLock,
55
+ (0, hex_1.hexFrom)([0x04, ...hash, 0x00]),
56
+ ),
57
+ ];
58
+ }
59
+ /**
60
+ * prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.
61
+ *
62
+ * @param txLike - The transaction to prepare, represented as a TransactionLike object.
63
+ * @returns A promise that resolves to the prepared Transaction object.
64
+ */
65
+ async prepareTransaction(txLike) {
66
+ const tx = ckb_1.Transaction.from(txLike);
67
+ const { script } = await this.getRecommendedAddressObj();
68
+ await tx.addCellDepsOfKnownScripts(
69
+ this.client,
70
+ client_1.KnownScript.OmniLock,
71
+ );
72
+ await tx.prepareSighashAllWitness(script, 85, this.client);
73
+ return tx;
74
+ }
75
+ /**
76
+ * Signs a transaction without modifying it.
77
+ *
78
+ * @param txLike - The transaction to sign, represented as a TransactionLike object.
79
+ * @returns A promise that resolves to a signed Transaction object.
80
+ */
81
+ async signOnlyTransaction(txLike) {
82
+ const tx = ckb_1.Transaction.from(txLike);
83
+ const { script } = await this.getRecommendedAddressObj();
84
+ const info = await tx.getSignHashInfo(script, this.client);
85
+ if (!info) {
86
+ return tx;
82
87
  }
88
+ const signature = (0, bytes_1.bytesFrom)(
89
+ await this.signMessageRaw(
90
+ `CKB (Bitcoin Layer) transaction: ${info.message}`,
91
+ ),
92
+ "base64",
93
+ );
94
+ signature[0] = 31 + ((signature[0] - 27) % 4);
95
+ const witness = ckb_1.WitnessArgs.fromBytes(tx.witnesses[info.position]);
96
+ witness.lock = (0, hex_1.hexFrom)(
97
+ (0, bytes_1.bytesConcat)(
98
+ (0, num_1.numToBytes)(5 * 4 + signature.length, 4),
99
+ (0, num_1.numToBytes)(4 * 4, 4),
100
+ (0, num_1.numToBytes)(5 * 4 + signature.length, 4),
101
+ (0, num_1.numToBytes)(5 * 4 + signature.length, 4),
102
+ (0, num_1.numToBytes)(signature.length, 4),
103
+ signature,
104
+ ),
105
+ );
106
+ tx.setWitnessArgsAt(info.position, witness);
107
+ return tx;
108
+ }
83
109
  }
84
110
  exports.SignerBtc = SignerBtc;
@@ -6,55 +6,49 @@ import { SignerBtc } from "./signerBtc";
6
6
  * This class does not support signing operations.
7
7
  */
8
8
  export declare class SignerBtcPublicKeyReadonly extends SignerBtc {
9
- private readonly account;
10
- private readonly publicKey;
11
- /**
12
- * Creates an instance of SignerBtcPublicKeyReadonly.
13
- *
14
- * @param client - The client instance used for communication.
15
- * @param account - The Bitcoin account associated with the signer.
16
- * @param publicKey - The public key associated with the signer.
17
- */
18
- constructor(client: Client, account: string, publicKey: HexLike);
19
- /**
20
- * Construct a new signer with the client replaced.
21
- *
22
- * @returns A promise that resolves the new Signer.
23
- */
24
- replaceClient(client: Client): Promise<SignerBtcPublicKeyReadonly>;
25
- /**
26
- * Connects to the client. This implementation does nothing as the class is read-only.
27
- *
28
- * @returns A promise that resolves when the connection is complete.
29
- */
30
- connect(): Promise<void>;
31
- /**
32
- * Check if the signer is connected.
33
- *
34
- * @returns A promise that resolves the connection status.
35
- */
36
- isConnected(): Promise<boolean>;
37
- /**
38
- * Gets the Bitcoin account associated with the signer.
39
- *
40
- * @returns A promise that resolves to a string representing the Bitcoin account.
41
- *
42
- * @example
43
- * ```typescript
44
- * const account = await signer.getBtcAccount(); // Outputs the Bitcoin account
45
- * ```
46
- */
47
- getBtcAccount(): Promise<string>;
48
- /**
49
- * Gets the Bitcoin public key associated with the signer.
50
- *
51
- * @returns A promise that resolves to a Hex string representing the Bitcoin public key.
52
- *
53
- * @example
54
- * ```typescript
55
- * const publicKey = await signer.getBtcPublicKey(); // Outputs the Bitcoin public key
56
- * ```
57
- */
58
- getBtcPublicKey(): Promise<Hex>;
9
+ private readonly account;
10
+ private readonly publicKey;
11
+ /**
12
+ * Creates an instance of SignerBtcPublicKeyReadonly.
13
+ *
14
+ * @param client - The client instance used for communication.
15
+ * @param account - The Bitcoin account associated with the signer.
16
+ * @param publicKey - The public key associated with the signer.
17
+ */
18
+ constructor(client: Client, account: string, publicKey: HexLike);
19
+ /**
20
+ * Connects to the client. This implementation does nothing as the class is read-only.
21
+ *
22
+ * @returns A promise that resolves when the connection is complete.
23
+ */
24
+ connect(): Promise<void>;
25
+ /**
26
+ * Check if the signer is connected.
27
+ *
28
+ * @returns A promise that resolves the connection status.
29
+ */
30
+ isConnected(): Promise<boolean>;
31
+ /**
32
+ * Gets the Bitcoin account associated with the signer.
33
+ *
34
+ * @returns A promise that resolves to a string representing the Bitcoin account.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const account = await signer.getBtcAccount(); // Outputs the Bitcoin account
39
+ * ```
40
+ */
41
+ getBtcAccount(): Promise<string>;
42
+ /**
43
+ * Gets the Bitcoin public key associated with the signer.
44
+ *
45
+ * @returns A promise that resolves to a Hex string representing the Bitcoin public key.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const publicKey = await signer.getBtcPublicKey(); // Outputs the Bitcoin public key
50
+ * ```
51
+ */
52
+ getBtcPublicKey(): Promise<Hex>;
59
53
  }
60
- //# sourceMappingURL=signerBtcPublicKeyReadonly.d.ts.map
54
+ //# sourceMappingURL=signerBtcPublicKeyReadonly.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signerBtcPublicKeyReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/signerBtcPublicKeyReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;IAYrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACG,OAAO,EAAE,MAAM,EAChC,SAAS,EAAE,OAAO;IAOpB;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAIxE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC;;;;;;;;;OASG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;CAGtC"}
1
+ {"version":3,"file":"signerBtcPublicKeyReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/signerBtcPublicKeyReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;IAYrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACG,OAAO,EAAE,MAAM,EAChC,SAAS,EAAE,OAAO;IAOpB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC;;;;;;;;;OASG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;CAGtC"}
@@ -8,65 +8,57 @@ const signerBtc_1 = require("./signerBtc");
8
8
  * This class does not support signing operations.
9
9
  */
10
10
  class SignerBtcPublicKeyReadonly extends signerBtc_1.SignerBtc {
11
- /**
12
- * Creates an instance of SignerBtcPublicKeyReadonly.
13
- *
14
- * @param client - The client instance used for communication.
15
- * @param account - The Bitcoin account associated with the signer.
16
- * @param publicKey - The public key associated with the signer.
17
- */
18
- constructor(client, account, publicKey) {
19
- super(client);
20
- this.account = account;
21
- this.publicKey = (0, hex_1.hexFrom)(publicKey);
22
- }
23
- /**
24
- * Construct a new signer with the client replaced.
25
- *
26
- * @returns A promise that resolves the new Signer.
27
- */
28
- async replaceClient(client) {
29
- return new SignerBtcPublicKeyReadonly(client, this.account, this.publicKey);
30
- }
31
- /**
32
- * Connects to the client. This implementation does nothing as the class is read-only.
33
- *
34
- * @returns A promise that resolves when the connection is complete.
35
- */
36
- async connect() { }
37
- /**
38
- * Check if the signer is connected.
39
- *
40
- * @returns A promise that resolves the connection status.
41
- */
42
- async isConnected() {
43
- return true;
44
- }
45
- /**
46
- * Gets the Bitcoin account associated with the signer.
47
- *
48
- * @returns A promise that resolves to a string representing the Bitcoin account.
49
- *
50
- * @example
51
- * ```typescript
52
- * const account = await signer.getBtcAccount(); // Outputs the Bitcoin account
53
- * ```
54
- */
55
- async getBtcAccount() {
56
- return this.account;
57
- }
58
- /**
59
- * Gets the Bitcoin public key associated with the signer.
60
- *
61
- * @returns A promise that resolves to a Hex string representing the Bitcoin public key.
62
- *
63
- * @example
64
- * ```typescript
65
- * const publicKey = await signer.getBtcPublicKey(); // Outputs the Bitcoin public key
66
- * ```
67
- */
68
- async getBtcPublicKey() {
69
- return this.publicKey;
70
- }
11
+ /**
12
+ * Creates an instance of SignerBtcPublicKeyReadonly.
13
+ *
14
+ * @param client - The client instance used for communication.
15
+ * @param account - The Bitcoin account associated with the signer.
16
+ * @param publicKey - The public key associated with the signer.
17
+ */
18
+ constructor(client, account, publicKey) {
19
+ super(client);
20
+ this.account = account;
21
+ this.publicKey = (0, hex_1.hexFrom)(publicKey);
22
+ }
23
+ /**
24
+ * Connects to the client. This implementation does nothing as the class is read-only.
25
+ *
26
+ * @returns A promise that resolves when the connection is complete.
27
+ */
28
+ async connect() {}
29
+ /**
30
+ * Check if the signer is connected.
31
+ *
32
+ * @returns A promise that resolves the connection status.
33
+ */
34
+ async isConnected() {
35
+ return true;
36
+ }
37
+ /**
38
+ * Gets the Bitcoin account associated with the signer.
39
+ *
40
+ * @returns A promise that resolves to a string representing the Bitcoin account.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const account = await signer.getBtcAccount(); // Outputs the Bitcoin account
45
+ * ```
46
+ */
47
+ async getBtcAccount() {
48
+ return this.account;
49
+ }
50
+ /**
51
+ * Gets the Bitcoin public key associated with the signer.
52
+ *
53
+ * @returns A promise that resolves to a Hex string representing the Bitcoin public key.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const publicKey = await signer.getBtcPublicKey(); // Outputs the Bitcoin public key
58
+ * ```
59
+ */
60
+ async getBtcPublicKey() {
61
+ return this.publicKey;
62
+ }
71
63
  }
72
64
  exports.SignerBtcPublicKeyReadonly = SignerBtcPublicKeyReadonly;
@@ -1,3 +1,7 @@
1
1
  import { BytesLike } from "../../bytes";
2
- export declare function verifyMessageBtcEcdsa(message: string | BytesLike, signature: string, publicKey: string): boolean;
3
- //# sourceMappingURL=verify.d.ts.map
2
+ export declare function verifyMessageBtcEcdsa(
3
+ message: string | BytesLike,
4
+ signature: string,
5
+ publicKey: string,
6
+ ): boolean;
7
+ //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/verify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAKT"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/verify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAGnD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAOT"}
@@ -1,10 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.verifyMessageBtcEcdsa = void 0;
4
- const wallet_utils_1 = require("@unisat/wallet-utils");
4
+ const secp256k1_1 = require("@noble/curves/secp256k1");
5
+ const bitcoinjs_message_1 = require("bitcoinjs-message");
6
+ const bytes_1 = require("../../bytes");
5
7
  const hex_1 = require("../../hex");
6
8
  function verifyMessageBtcEcdsa(message, signature, publicKey) {
7
- const challenge = typeof message === "string" ? message : (0, hex_1.hexFrom)(message).slice(2);
8
- return (0, wallet_utils_1.verifyMessage)(publicKey, challenge, signature);
9
+ const challenge =
10
+ typeof message === "string"
11
+ ? message
12
+ : (0, hex_1.hexFrom)(message).slice(2);
13
+ const [_, ...rawSign] = (0, bytes_1.bytesFrom)(signature, "base64");
14
+ return secp256k1_1.secp256k1.verify(
15
+ (0, bytes_1.bytesFrom)(rawSign),
16
+ (0, bitcoinjs_message_1.magicHash)(challenge),
17
+ publicKey,
18
+ );
9
19
  }
10
20
  exports.verifyMessageBtcEcdsa = verifyMessageBtcEcdsa;
@@ -1,3 +1,3 @@
1
1
  export * from "./signerCkbScriptReadonly";
2
2
  export * from "./verifyJoyId";
3
- //# sourceMappingURL=index.d.ts.map
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,18 +1,34 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
2
+ var __createBinding =
3
+ (this && this.__createBinding) ||
4
+ (Object.create
5
+ ? function (o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (
9
+ !desc ||
10
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
11
+ ) {
12
+ desc = {
13
+ enumerable: true,
14
+ get: function () {
15
+ return m[k];
16
+ },
17
+ };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }
21
+ : function (o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ });
25
+ var __exportStar =
26
+ (this && this.__exportStar) ||
27
+ function (m, exports) {
28
+ for (var p in m)
29
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p))
30
+ __createBinding(exports, m, p);
31
+ };
16
32
  Object.defineProperty(exports, "__esModule", { value: true });
17
33
  __exportStar(require("./signerCkbScriptReadonly"), exports);
18
34
  __exportStar(require("./verifyJoyId"), exports);
@@ -7,55 +7,49 @@ import { Signer, SignerSignType, SignerType } from "../signer";
7
7
  * This class does not support signing operations.
8
8
  */
9
9
  export declare class SignerCkbScriptReadonly extends Signer {
10
- get type(): SignerType;
11
- get signType(): SignerSignType;
12
- private readonly script;
13
- /**
14
- * Creates an instance of SignerCkbScriptReadonly.
15
- *
16
- * @param client - The client instance used for communication.
17
- * @param script - The script associated with the signer.
18
- */
19
- constructor(client: Client, script: ScriptLike);
20
- /**
21
- * Construct a new signer with the client replaced.
22
- *
23
- * @returns A promise that resolves the new Signer.
24
- */
25
- replaceClient(client: Client): Promise<SignerCkbScriptReadonly>;
26
- /**
27
- * Connects to the client. This implementation does nothing as the class is read-only.
28
- *
29
- * @returns A promise that resolves when the connection is complete.
30
- */
31
- connect(): Promise<void>;
32
- /**
33
- * Check if the signer is connected.
34
- *
35
- * @returns A promise that resolves the connection status.
36
- */
37
- isConnected(): Promise<boolean>;
38
- /**
39
- * Gets the internal address for the script.
40
- *
41
- * @returns A promise that resolves to a string representing the internal address.
42
- *
43
- * @example
44
- * ```typescript
45
- * const internalAddress = await signer.getInternalAddress(); // Outputs the internal address
46
- * ```
47
- */
48
- getInternalAddress(): Promise<string>;
49
- /**
50
- * Gets an array of Address objects representing the script address.
51
- *
52
- * @returns A promise that resolves to an array of Address objects.
53
- *
54
- * @example
55
- * ```typescript
56
- * const addressObjs = await signer.getAddressObjs(); // Outputs the array of Address objects
57
- * ```
58
- */
59
- getAddressObjs(): Promise<Address[]>;
10
+ get type(): SignerType;
11
+ get signType(): SignerSignType;
12
+ private readonly script;
13
+ /**
14
+ * Creates an instance of SignerCkbScriptReadonly.
15
+ *
16
+ * @param client - The client instance used for communication.
17
+ * @param script - The script associated with the signer.
18
+ */
19
+ constructor(client: Client, script: ScriptLike);
20
+ /**
21
+ * Connects to the client. This implementation does nothing as the class is read-only.
22
+ *
23
+ * @returns A promise that resolves when the connection is complete.
24
+ */
25
+ connect(): Promise<void>;
26
+ /**
27
+ * Check if the signer is connected.
28
+ *
29
+ * @returns A promise that resolves the connection status.
30
+ */
31
+ isConnected(): Promise<boolean>;
32
+ /**
33
+ * Gets the internal address for the script.
34
+ *
35
+ * @returns A promise that resolves to a string representing the internal address.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const internalAddress = await signer.getInternalAddress(); // Outputs the internal address
40
+ * ```
41
+ */
42
+ getInternalAddress(): Promise<string>;
43
+ /**
44
+ * Gets an array of Address objects representing the script address.
45
+ *
46
+ * @returns A promise that resolves to an array of Address objects.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const addressObjs = await signer.getAddressObjs(); // Outputs the array of Address objects
51
+ * ```
52
+ */
53
+ getAddressObjs(): Promise<Address[]>;
60
54
  }
61
- //# sourceMappingURL=signerCkbScriptReadonly.d.ts.map
55
+ //# sourceMappingURL=signerCkbScriptReadonly.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM9C;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIrE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;;;;;;OASG;IAEG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAG3C"}
1
+ {"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM9C;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;;;;;;OASG;IAEG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAG3C"}