@ckb-ccc/core 1.12.4 → 1.13.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 (611) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/address.advanced-CWGrVD-M.mjs +2 -0
  3. package/dist/address.advanced-CWGrVD-M.mjs.map +1 -0
  4. package/dist/advanced.d.mts +2 -0
  5. package/dist/advanced.mjs +1 -0
  6. package/dist/advancedBarrel-BD7EAPVd.d.mts +5480 -0
  7. package/dist/advancedBarrel-BD7EAPVd.d.mts.map +1 -0
  8. package/dist/advancedBarrel.d.mts +2 -0
  9. package/dist/advancedBarrel.mjs +2 -0
  10. package/dist/advancedBarrel.mjs.map +1 -0
  11. package/dist/barrel-DchA_RPN.mjs +7 -0
  12. package/dist/barrel-DchA_RPN.mjs.map +1 -0
  13. package/dist/barrel.d.mts +2 -0
  14. package/dist/barrel.mjs +1 -0
  15. package/dist/index.d.mts +2 -0
  16. package/dist/index.mjs +1 -0
  17. package/dist/rolldown-runtime-DK3Fl9T5.mjs +1 -0
  18. package/dist.commonjs/address.advanced-COp7SNhZ.js +2 -0
  19. package/dist.commonjs/address.advanced-COp7SNhZ.js.map +1 -0
  20. package/dist.commonjs/advanced.d.ts +2 -3
  21. package/dist.commonjs/advanced.js +1 -41
  22. package/dist.commonjs/advancedBarrel-DRDT4GBS.d.ts +5481 -0
  23. package/dist.commonjs/advancedBarrel-DRDT4GBS.d.ts.map +1 -0
  24. package/dist.commonjs/advancedBarrel.d.ts +2 -7
  25. package/dist.commonjs/advancedBarrel.js +2 -22
  26. package/dist.commonjs/advancedBarrel.js.map +1 -0
  27. package/dist.commonjs/barrel-CXC2Uy5L.js +7 -0
  28. package/dist.commonjs/barrel-CXC2Uy5L.js.map +1 -0
  29. package/dist.commonjs/barrel.d.ts +2 -14
  30. package/dist.commonjs/barrel.js +1 -29
  31. package/dist.commonjs/index.d.ts +2 -3
  32. package/dist.commonjs/index.js +1 -41
  33. package/package.json +20 -23
  34. package/src/barrel.ts +1 -0
  35. package/src/ckb/epoch.ts +489 -0
  36. package/src/ckb/index.ts +1 -0
  37. package/src/ckb/script.ts +4 -3
  38. package/src/ckb/transaction.ts +83 -94
  39. package/src/client/client.ts +377 -1
  40. package/src/client/clientPublicMainnet.advanced.ts +24 -1
  41. package/src/client/clientPublicTestnet.advanced.ts +23 -0
  42. package/src/client/clientTypes.ts +1 -2
  43. package/src/client/jsonRpc/transformers.ts +2 -2
  44. package/src/client/knownScript.ts +1 -0
  45. package/src/codec/codec.ts +108 -0
  46. package/src/{molecule → codec}/entity.ts +17 -7
  47. package/src/codec/predefined.ts +145 -0
  48. package/src/hasher/advanced.ts +3 -1
  49. package/src/hasher/hasherCkb.ts +1 -1
  50. package/src/hasher/hasherKeecak256.ts +1 -1
  51. package/src/keystore/index.ts +4 -4
  52. package/src/molecule/barrel.ts +10 -1
  53. package/src/molecule/codec.ts +33 -138
  54. package/src/molecule/predefined.ts +63 -50
  55. package/src/signer/btc/index.ts +1 -0
  56. package/src/signer/btc/psbt.ts +98 -0
  57. package/src/signer/btc/signerBtc.ts +41 -1
  58. package/src/signer/btc/signerBtcPublicKeyReadonly.ts +15 -0
  59. package/src/signer/btc/verify.ts +2 -1
  60. package/src/signer/ckb/signerCkbPrivateKey.ts +6 -11
  61. package/src/signer/ckb/verifyCkbSecp256k1.ts +6 -10
  62. package/src/signer/doge/signerDogePrivateKey.ts +6 -3
  63. package/src/signer/doge/verify.ts +7 -8
  64. package/src/signer/nostr/signerNostrPrivateKey.ts +9 -8
  65. package/src/signer/nostr/verify.ts +2 -2
  66. package/src/utils/index.ts +20 -1
  67. package/tsdown.config.mts +44 -0
  68. package/dist/address/address.advanced.d.ts +0 -65
  69. package/dist/address/address.advanced.d.ts.map +0 -1
  70. package/dist/address/address.advanced.js +0 -147
  71. package/dist/address/advanced.d.ts +0 -2
  72. package/dist/address/advanced.d.ts.map +0 -1
  73. package/dist/address/advanced.js +0 -1
  74. package/dist/address/index.d.ts +0 -58
  75. package/dist/address/index.d.ts.map +0 -1
  76. package/dist/address/index.js +0 -78
  77. package/dist/advanced.d.ts +0 -3
  78. package/dist/advanced.d.ts.map +0 -1
  79. package/dist/advanced.js +0 -2
  80. package/dist/advancedBarrel.d.ts +0 -7
  81. package/dist/advancedBarrel.d.ts.map +0 -1
  82. package/dist/advancedBarrel.js +0 -6
  83. package/dist/barrel.d.ts +0 -14
  84. package/dist/barrel.d.ts.map +0 -1
  85. package/dist/barrel.js +0 -13
  86. package/dist/bytes/advanced.d.ts +0 -6
  87. package/dist/bytes/advanced.d.ts.map +0 -1
  88. package/dist/bytes/advanced.js +0 -1
  89. package/dist/bytes/index.d.ts +0 -112
  90. package/dist/bytes/index.d.ts.map +0 -1
  91. package/dist/bytes/index.js +0 -155
  92. package/dist/ckb/advanced.d.ts +0 -3
  93. package/dist/ckb/advanced.d.ts.map +0 -1
  94. package/dist/ckb/advanced.js +0 -2
  95. package/dist/ckb/hash.d.ts +0 -18
  96. package/dist/ckb/hash.d.ts.map +0 -1
  97. package/dist/ckb/hash.js +0 -19
  98. package/dist/ckb/index.d.ts +0 -6
  99. package/dist/ckb/index.d.ts.map +0 -1
  100. package/dist/ckb/index.js +0 -5
  101. package/dist/ckb/script.advanced.d.ts +0 -5
  102. package/dist/ckb/script.advanced.d.ts.map +0 -1
  103. package/dist/ckb/script.advanced.js +0 -13
  104. package/dist/ckb/script.d.ts +0 -156
  105. package/dist/ckb/script.d.ts.map +0 -1
  106. package/dist/ckb/script.js +0 -184
  107. package/dist/ckb/transaction.advanced.d.ts +0 -5
  108. package/dist/ckb/transaction.advanced.d.ts.map +0 -1
  109. package/dist/ckb/transaction.advanced.js +0 -9
  110. package/dist/ckb/transaction.d.ts +0 -1401
  111. package/dist/ckb/transaction.d.ts.map +0 -1
  112. package/dist/ckb/transaction.js +0 -1880
  113. package/dist/ckb/transactionErrors.d.ts +0 -15
  114. package/dist/ckb/transactionErrors.d.ts.map +0 -1
  115. package/dist/ckb/transactionErrors.js +0 -21
  116. package/dist/ckb/transactionLumos.d.ts +0 -30
  117. package/dist/ckb/transactionLumos.d.ts.map +0 -1
  118. package/dist/ckb/transactionLumos.js +0 -1
  119. package/dist/client/advanced.d.ts +0 -6
  120. package/dist/client/advanced.d.ts.map +0 -1
  121. package/dist/client/advanced.js +0 -5
  122. package/dist/client/cache/advanced.d.ts +0 -2
  123. package/dist/client/cache/advanced.d.ts.map +0 -1
  124. package/dist/client/cache/advanced.js +0 -1
  125. package/dist/client/cache/cache.d.ts +0 -98
  126. package/dist/client/cache/cache.d.ts.map +0 -1
  127. package/dist/client/cache/cache.js +0 -139
  128. package/dist/client/cache/index.d.ts +0 -3
  129. package/dist/client/cache/index.d.ts.map +0 -1
  130. package/dist/client/cache/index.js +0 -2
  131. package/dist/client/cache/memory.advanced.d.ts +0 -52
  132. package/dist/client/cache/memory.advanced.d.ts.map +0 -1
  133. package/dist/client/cache/memory.advanced.js +0 -149
  134. package/dist/client/cache/memory.d.ts +0 -53
  135. package/dist/client/cache/memory.d.ts.map +0 -1
  136. package/dist/client/cache/memory.js +0 -148
  137. package/dist/client/client.d.ts +0 -107
  138. package/dist/client/client.d.ts.map +0 -1
  139. package/dist/client/client.js +0 -328
  140. package/dist/client/clientPublicMainnet.advanced.d.ts +0 -4
  141. package/dist/client/clientPublicMainnet.advanced.d.ts.map +0 -1
  142. package/dist/client/clientPublicMainnet.advanced.js +0 -402
  143. package/dist/client/clientPublicMainnet.d.ts +0 -17
  144. package/dist/client/clientPublicMainnet.d.ts.map +0 -1
  145. package/dist/client/clientPublicMainnet.js +0 -40
  146. package/dist/client/clientPublicTestnet.advanced.d.ts +0 -4
  147. package/dist/client/clientPublicTestnet.advanced.d.ts.map +0 -1
  148. package/dist/client/clientPublicTestnet.advanced.js +0 -412
  149. package/dist/client/clientPublicTestnet.d.ts +0 -17
  150. package/dist/client/clientPublicTestnet.d.ts.map +0 -1
  151. package/dist/client/clientPublicTestnet.js +0 -40
  152. package/dist/client/clientTypes.advanced.d.ts +0 -25
  153. package/dist/client/clientTypes.advanced.d.ts.map +0 -1
  154. package/dist/client/clientTypes.advanced.js +0 -6
  155. package/dist/client/clientTypes.d.ts +0 -335
  156. package/dist/client/clientTypes.d.ts.map +0 -1
  157. package/dist/client/clientTypes.js +0 -232
  158. package/dist/client/index.d.ts +0 -8
  159. package/dist/client/index.d.ts.map +0 -1
  160. package/dist/client/index.js +0 -7
  161. package/dist/client/jsonRpc/advanced.d.ts +0 -3
  162. package/dist/client/jsonRpc/advanced.d.ts.map +0 -1
  163. package/dist/client/jsonRpc/advanced.js +0 -2
  164. package/dist/client/jsonRpc/client.d.ts +0 -160
  165. package/dist/client/jsonRpc/client.d.ts.map +0 -1
  166. package/dist/client/jsonRpc/client.js +0 -223
  167. package/dist/client/jsonRpc/index.d.ts +0 -2
  168. package/dist/client/jsonRpc/index.d.ts.map +0 -1
  169. package/dist/client/jsonRpc/index.js +0 -1
  170. package/dist/client/jsonRpc/transformers.d.ts +0 -51
  171. package/dist/client/jsonRpc/transformers.d.ts.map +0 -1
  172. package/dist/client/jsonRpc/transformers.js +0 -247
  173. package/dist/client/jsonRpc/types.d.ts +0 -101
  174. package/dist/client/jsonRpc/types.d.ts.map +0 -1
  175. package/dist/client/jsonRpc/types.js +0 -1
  176. package/dist/client/knownScript.d.ts +0 -27
  177. package/dist/client/knownScript.d.ts.map +0 -1
  178. package/dist/client/knownScript.js +0 -28
  179. package/dist/fixedPoint/index.d.ts +0 -55
  180. package/dist/fixedPoint/index.d.ts.map +0 -1
  181. package/dist/fixedPoint/index.js +0 -68
  182. package/dist/hasher/advanced.d.ts +0 -2
  183. package/dist/hasher/advanced.d.ts.map +0 -1
  184. package/dist/hasher/advanced.js +0 -1
  185. package/dist/hasher/hasher.d.ts +0 -35
  186. package/dist/hasher/hasher.d.ts.map +0 -1
  187. package/dist/hasher/hasher.js +0 -1
  188. package/dist/hasher/hasherCkb.d.ts +0 -57
  189. package/dist/hasher/hasherCkb.d.ts.map +0 -1
  190. package/dist/hasher/hasherCkb.js +0 -70
  191. package/dist/hasher/hasherKeecak256.d.ts +0 -41
  192. package/dist/hasher/hasherKeecak256.d.ts.map +0 -1
  193. package/dist/hasher/hasherKeecak256.js +0 -46
  194. package/dist/hasher/index.d.ts +0 -4
  195. package/dist/hasher/index.d.ts.map +0 -1
  196. package/dist/hasher/index.js +0 -3
  197. package/dist/hex/index.d.ts +0 -27
  198. package/dist/hex/index.d.ts.map +0 -1
  199. package/dist/hex/index.js +0 -17
  200. package/dist/index.d.ts +0 -3
  201. package/dist/index.d.ts.map +0 -1
  202. package/dist/index.js +0 -2
  203. package/dist/jsonRpc/advanced.d.ts +0 -2
  204. package/dist/jsonRpc/advanced.d.ts.map +0 -1
  205. package/dist/jsonRpc/advanced.js +0 -1
  206. package/dist/jsonRpc/index.d.ts +0 -2
  207. package/dist/jsonRpc/index.d.ts.map +0 -1
  208. package/dist/jsonRpc/index.js +0 -1
  209. package/dist/jsonRpc/requestor.d.ts +0 -49
  210. package/dist/jsonRpc/requestor.d.ts.map +0 -1
  211. package/dist/jsonRpc/requestor.js +0 -109
  212. package/dist/jsonRpc/transports/advanced.d.ts +0 -6
  213. package/dist/jsonRpc/transports/advanced.d.ts.map +0 -1
  214. package/dist/jsonRpc/transports/advanced.js +0 -5
  215. package/dist/jsonRpc/transports/factory.d.ts +0 -6
  216. package/dist/jsonRpc/transports/factory.d.ts.map +0 -1
  217. package/dist/jsonRpc/transports/factory.js +0 -8
  218. package/dist/jsonRpc/transports/fallback.d.ts +0 -8
  219. package/dist/jsonRpc/transports/fallback.d.ts.map +0 -1
  220. package/dist/jsonRpc/transports/fallback.js +0 -22
  221. package/dist/jsonRpc/transports/http.d.ts +0 -8
  222. package/dist/jsonRpc/transports/http.d.ts.map +0 -1
  223. package/dist/jsonRpc/transports/http.js +0 -22
  224. package/dist/jsonRpc/transports/transport.d.ts +0 -18
  225. package/dist/jsonRpc/transports/transport.d.ts.map +0 -1
  226. package/dist/jsonRpc/transports/transport.js +0 -1
  227. package/dist/jsonRpc/transports/webSocket.d.ts +0 -11
  228. package/dist/jsonRpc/transports/webSocket.d.ts.map +0 -1
  229. package/dist/jsonRpc/transports/webSocket.js +0 -87
  230. package/dist/keystore/index.d.ts +0 -31
  231. package/dist/keystore/index.d.ts.map +0 -1
  232. package/dist/keystore/index.js +0 -106
  233. package/dist/molecule/barrel.d.ts +0 -4
  234. package/dist/molecule/barrel.d.ts.map +0 -1
  235. package/dist/molecule/codec.d.ts +0 -146
  236. package/dist/molecule/codec.d.ts.map +0 -1
  237. package/dist/molecule/codec.js +0 -516
  238. package/dist/molecule/entity.d.ts +0 -112
  239. package/dist/molecule/entity.d.ts.map +0 -1
  240. package/dist/molecule/entity.js +0 -142
  241. package/dist/molecule/index.d.ts +0 -2
  242. package/dist/molecule/index.d.ts.map +0 -1
  243. package/dist/molecule/index.js +0 -1
  244. package/dist/molecule/predefined.d.ts +0 -57
  245. package/dist/molecule/predefined.d.ts.map +0 -1
  246. package/dist/molecule/predefined.js +0 -83
  247. package/dist/num/index.d.ts +0 -148
  248. package/dist/num/index.d.ts.map +0 -1
  249. package/dist/num/index.js +0 -204
  250. package/dist/signer/btc/index.d.ts +0 -4
  251. package/dist/signer/btc/index.d.ts.map +0 -1
  252. package/dist/signer/btc/index.js +0 -3
  253. package/dist/signer/btc/signerBtc.d.ts +0 -59
  254. package/dist/signer/btc/signerBtc.d.ts.map +0 -1
  255. package/dist/signer/btc/signerBtc.js +0 -83
  256. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -55
  257. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +0 -1
  258. package/dist/signer/btc/signerBtcPublicKeyReadonly.js +0 -61
  259. package/dist/signer/btc/verify.d.ts +0 -40
  260. package/dist/signer/btc/verify.d.ts.map +0 -1
  261. package/dist/signer/btc/verify.js +0 -69
  262. package/dist/signer/ckb/index.d.ts +0 -6
  263. package/dist/signer/ckb/index.d.ts.map +0 -1
  264. package/dist/signer/ckb/index.js +0 -5
  265. package/dist/signer/ckb/signerCkbPrivateKey.d.ts +0 -16
  266. package/dist/signer/ckb/signerCkbPrivateKey.d.ts.map +0 -1
  267. package/dist/signer/ckb/signerCkbPrivateKey.js +0 -42
  268. package/dist/signer/ckb/signerCkbPublicKey.d.ts +0 -27
  269. package/dist/signer/ckb/signerCkbPublicKey.d.ts.map +0 -1
  270. package/dist/signer/ckb/signerCkbPublicKey.js +0 -101
  271. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +0 -68
  272. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +0 -1
  273. package/dist/signer/ckb/signerCkbScriptReadonly.js +0 -78
  274. package/dist/signer/ckb/verifyCkbSecp256k1.d.ts +0 -11
  275. package/dist/signer/ckb/verifyCkbSecp256k1.d.ts.map +0 -1
  276. package/dist/signer/ckb/verifyCkbSecp256k1.js +0 -22
  277. package/dist/signer/ckb/verifyJoyId.d.ts +0 -6
  278. package/dist/signer/ckb/verifyJoyId.d.ts.map +0 -1
  279. package/dist/signer/ckb/verifyJoyId.js +0 -16
  280. package/dist/signer/doge/index.d.ts +0 -5
  281. package/dist/signer/doge/index.d.ts.map +0 -1
  282. package/dist/signer/doge/index.js +0 -4
  283. package/dist/signer/doge/signerDoge.d.ts +0 -52
  284. package/dist/signer/doge/signerDoge.d.ts.map +0 -1
  285. package/dist/signer/doge/signerDoge.js +0 -82
  286. package/dist/signer/doge/signerDogeAddressReadonly.d.ts +0 -41
  287. package/dist/signer/doge/signerDogeAddressReadonly.d.ts.map +0 -1
  288. package/dist/signer/doge/signerDogeAddressReadonly.js +0 -45
  289. package/dist/signer/doge/signerDogePrivateKey.d.ts +0 -52
  290. package/dist/signer/doge/signerDogePrivateKey.d.ts.map +0 -1
  291. package/dist/signer/doge/signerDogePrivateKey.js +0 -68
  292. package/dist/signer/doge/verify.d.ts +0 -17
  293. package/dist/signer/doge/verify.d.ts.map +0 -1
  294. package/dist/signer/doge/verify.js +0 -29
  295. package/dist/signer/dummy/alwaysError.d.ts +0 -12
  296. package/dist/signer/dummy/alwaysError.d.ts.map +0 -1
  297. package/dist/signer/dummy/alwaysError.js +0 -13
  298. package/dist/signer/dummy/dummy.d.ts +0 -15
  299. package/dist/signer/dummy/dummy.d.ts.map +0 -1
  300. package/dist/signer/dummy/dummy.js +0 -22
  301. package/dist/signer/dummy/index.d.ts +0 -4
  302. package/dist/signer/dummy/index.d.ts.map +0 -1
  303. package/dist/signer/dummy/index.js +0 -3
  304. package/dist/signer/dummy/openLink.d.ts +0 -12
  305. package/dist/signer/dummy/openLink.d.ts.map +0 -1
  306. package/dist/signer/dummy/openLink.js +0 -13
  307. package/dist/signer/evm/index.d.ts +0 -4
  308. package/dist/signer/evm/index.d.ts.map +0 -1
  309. package/dist/signer/evm/index.js +0 -3
  310. package/dist/signer/evm/signerEvm.d.ts +0 -59
  311. package/dist/signer/evm/signerEvm.d.ts.map +0 -1
  312. package/dist/signer/evm/signerEvm.js +0 -139
  313. package/dist/signer/evm/signerEvmAddressReadonly.d.ts +0 -47
  314. package/dist/signer/evm/signerEvmAddressReadonly.d.ts.map +0 -1
  315. package/dist/signer/evm/signerEvmAddressReadonly.js +0 -51
  316. package/dist/signer/evm/verify.d.ts +0 -6
  317. package/dist/signer/evm/verify.d.ts.map +0 -1
  318. package/dist/signer/evm/verify.js +0 -9
  319. package/dist/signer/index.d.ts +0 -8
  320. package/dist/signer/index.d.ts.map +0 -1
  321. package/dist/signer/index.js +0 -7
  322. package/dist/signer/nostr/index.d.ts +0 -5
  323. package/dist/signer/nostr/index.d.ts.map +0 -1
  324. package/dist/signer/nostr/index.js +0 -4
  325. package/dist/signer/nostr/signerNostr.d.ts +0 -72
  326. package/dist/signer/nostr/signerNostr.d.ts.map +0 -1
  327. package/dist/signer/nostr/signerNostr.js +0 -96
  328. package/dist/signer/nostr/signerNostrPrivateKey.d.ts +0 -14
  329. package/dist/signer/nostr/signerNostrPrivateKey.d.ts.map +0 -1
  330. package/dist/signer/nostr/signerNostrPrivateKey.js +0 -34
  331. package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts +0 -15
  332. package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +0 -1
  333. package/dist/signer/nostr/signerNostrPublicKeyReadonly.js +0 -26
  334. package/dist/signer/nostr/verify.d.ts +0 -9
  335. package/dist/signer/nostr/verify.d.ts.map +0 -1
  336. package/dist/signer/nostr/verify.js +0 -55
  337. package/dist/signer/signer/index.d.ts +0 -256
  338. package/dist/signer/signer/index.d.ts.map +0 -1
  339. package/dist/signer/signer/index.js +0 -305
  340. package/dist/utils/index.d.ts +0 -97
  341. package/dist/utils/index.d.ts.map +0 -1
  342. package/dist/utils/index.js +0 -55
  343. package/dist.commonjs/address/address.advanced.d.ts +0 -65
  344. package/dist.commonjs/address/address.advanced.d.ts.map +0 -1
  345. package/dist.commonjs/address/address.advanced.js +0 -152
  346. package/dist.commonjs/address/advanced.d.ts +0 -2
  347. package/dist.commonjs/address/advanced.d.ts.map +0 -1
  348. package/dist.commonjs/address/advanced.js +0 -17
  349. package/dist.commonjs/address/index.d.ts +0 -58
  350. package/dist.commonjs/address/index.d.ts.map +0 -1
  351. package/dist.commonjs/address/index.js +0 -82
  352. package/dist.commonjs/advanced.d.ts.map +0 -1
  353. package/dist.commonjs/advancedBarrel.d.ts.map +0 -1
  354. package/dist.commonjs/barrel.d.ts.map +0 -1
  355. package/dist.commonjs/bytes/advanced.d.ts +0 -6
  356. package/dist.commonjs/bytes/advanced.d.ts.map +0 -1
  357. package/dist.commonjs/bytes/advanced.js +0 -2
  358. package/dist.commonjs/bytes/index.d.ts +0 -112
  359. package/dist.commonjs/bytes/index.d.ts.map +0 -1
  360. package/dist.commonjs/bytes/index.js +0 -163
  361. package/dist.commonjs/ckb/advanced.d.ts +0 -3
  362. package/dist.commonjs/ckb/advanced.d.ts.map +0 -1
  363. package/dist.commonjs/ckb/advanced.js +0 -18
  364. package/dist.commonjs/ckb/hash.d.ts +0 -18
  365. package/dist.commonjs/ckb/hash.d.ts.map +0 -1
  366. package/dist.commonjs/ckb/hash.js +0 -22
  367. package/dist.commonjs/ckb/index.d.ts +0 -6
  368. package/dist.commonjs/ckb/index.d.ts.map +0 -1
  369. package/dist.commonjs/ckb/index.js +0 -21
  370. package/dist.commonjs/ckb/script.advanced.d.ts +0 -5
  371. package/dist.commonjs/ckb/script.advanced.d.ts.map +0 -1
  372. package/dist.commonjs/ckb/script.advanced.js +0 -16
  373. package/dist.commonjs/ckb/script.d.ts +0 -156
  374. package/dist.commonjs/ckb/script.d.ts.map +0 -1
  375. package/dist.commonjs/ckb/script.js +0 -190
  376. package/dist.commonjs/ckb/transaction.advanced.d.ts +0 -5
  377. package/dist.commonjs/ckb/transaction.advanced.d.ts.map +0 -1
  378. package/dist.commonjs/ckb/transaction.advanced.js +0 -12
  379. package/dist.commonjs/ckb/transaction.d.ts +0 -1401
  380. package/dist.commonjs/ckb/transaction.d.ts.map +0 -1
  381. package/dist.commonjs/ckb/transaction.js +0 -1894
  382. package/dist.commonjs/ckb/transactionErrors.d.ts +0 -15
  383. package/dist.commonjs/ckb/transactionErrors.d.ts.map +0 -1
  384. package/dist.commonjs/ckb/transactionErrors.js +0 -26
  385. package/dist.commonjs/ckb/transactionLumos.d.ts +0 -30
  386. package/dist.commonjs/ckb/transactionLumos.d.ts.map +0 -1
  387. package/dist.commonjs/ckb/transactionLumos.js +0 -2
  388. package/dist.commonjs/client/advanced.d.ts +0 -6
  389. package/dist.commonjs/client/advanced.d.ts.map +0 -1
  390. package/dist.commonjs/client/advanced.js +0 -21
  391. package/dist.commonjs/client/cache/advanced.d.ts +0 -2
  392. package/dist.commonjs/client/cache/advanced.d.ts.map +0 -1
  393. package/dist.commonjs/client/cache/advanced.js +0 -17
  394. package/dist.commonjs/client/cache/cache.d.ts +0 -98
  395. package/dist.commonjs/client/cache/cache.d.ts.map +0 -1
  396. package/dist.commonjs/client/cache/cache.js +0 -143
  397. package/dist.commonjs/client/cache/index.d.ts +0 -3
  398. package/dist.commonjs/client/cache/index.d.ts.map +0 -1
  399. package/dist.commonjs/client/cache/index.js +0 -18
  400. package/dist.commonjs/client/cache/memory.advanced.d.ts +0 -52
  401. package/dist.commonjs/client/cache/memory.advanced.d.ts.map +0 -1
  402. package/dist.commonjs/client/cache/memory.advanced.js +0 -158
  403. package/dist.commonjs/client/cache/memory.d.ts +0 -53
  404. package/dist.commonjs/client/cache/memory.d.ts.map +0 -1
  405. package/dist.commonjs/client/cache/memory.js +0 -152
  406. package/dist.commonjs/client/client.d.ts +0 -107
  407. package/dist.commonjs/client/client.d.ts.map +0 -1
  408. package/dist.commonjs/client/client.js +0 -332
  409. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +0 -4
  410. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +0 -1
  411. package/dist.commonjs/client/clientPublicMainnet.advanced.js +0 -405
  412. package/dist.commonjs/client/clientPublicMainnet.d.ts +0 -17
  413. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +0 -1
  414. package/dist.commonjs/client/clientPublicMainnet.js +0 -47
  415. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +0 -4
  416. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +0 -1
  417. package/dist.commonjs/client/clientPublicTestnet.advanced.js +0 -415
  418. package/dist.commonjs/client/clientPublicTestnet.d.ts +0 -17
  419. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +0 -1
  420. package/dist.commonjs/client/clientPublicTestnet.js +0 -47
  421. package/dist.commonjs/client/clientTypes.advanced.d.ts +0 -25
  422. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +0 -1
  423. package/dist.commonjs/client/clientTypes.advanced.js +0 -10
  424. package/dist.commonjs/client/clientTypes.d.ts +0 -335
  425. package/dist.commonjs/client/clientTypes.d.ts.map +0 -1
  426. package/dist.commonjs/client/clientTypes.js +0 -251
  427. package/dist.commonjs/client/index.d.ts +0 -8
  428. package/dist.commonjs/client/index.d.ts.map +0 -1
  429. package/dist.commonjs/client/index.js +0 -23
  430. package/dist.commonjs/client/jsonRpc/advanced.d.ts +0 -3
  431. package/dist.commonjs/client/jsonRpc/advanced.d.ts.map +0 -1
  432. package/dist.commonjs/client/jsonRpc/advanced.js +0 -18
  433. package/dist.commonjs/client/jsonRpc/client.d.ts +0 -160
  434. package/dist.commonjs/client/jsonRpc/client.d.ts.map +0 -1
  435. package/dist.commonjs/client/jsonRpc/client.js +0 -227
  436. package/dist.commonjs/client/jsonRpc/index.d.ts +0 -2
  437. package/dist.commonjs/client/jsonRpc/index.d.ts.map +0 -1
  438. package/dist.commonjs/client/jsonRpc/index.js +0 -17
  439. package/dist.commonjs/client/jsonRpc/transformers.d.ts +0 -51
  440. package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +0 -1
  441. package/dist.commonjs/client/jsonRpc/transformers.js +0 -251
  442. package/dist.commonjs/client/jsonRpc/types.d.ts +0 -101
  443. package/dist.commonjs/client/jsonRpc/types.d.ts.map +0 -1
  444. package/dist.commonjs/client/jsonRpc/types.js +0 -2
  445. package/dist.commonjs/client/knownScript.d.ts +0 -27
  446. package/dist.commonjs/client/knownScript.d.ts.map +0 -1
  447. package/dist.commonjs/client/knownScript.js +0 -31
  448. package/dist.commonjs/fixedPoint/index.d.ts +0 -55
  449. package/dist.commonjs/fixedPoint/index.d.ts.map +0 -1
  450. package/dist.commonjs/fixedPoint/index.js +0 -73
  451. package/dist.commonjs/hasher/advanced.d.ts +0 -2
  452. package/dist.commonjs/hasher/advanced.d.ts.map +0 -1
  453. package/dist.commonjs/hasher/advanced.js +0 -4
  454. package/dist.commonjs/hasher/hasher.d.ts +0 -35
  455. package/dist.commonjs/hasher/hasher.d.ts.map +0 -1
  456. package/dist.commonjs/hasher/hasher.js +0 -2
  457. package/dist.commonjs/hasher/hasherCkb.d.ts +0 -57
  458. package/dist.commonjs/hasher/hasherCkb.d.ts.map +0 -1
  459. package/dist.commonjs/hasher/hasherCkb.js +0 -75
  460. package/dist.commonjs/hasher/hasherKeecak256.d.ts +0 -41
  461. package/dist.commonjs/hasher/hasherKeecak256.d.ts.map +0 -1
  462. package/dist.commonjs/hasher/hasherKeecak256.js +0 -50
  463. package/dist.commonjs/hasher/index.d.ts +0 -4
  464. package/dist.commonjs/hasher/index.d.ts.map +0 -1
  465. package/dist.commonjs/hasher/index.js +0 -19
  466. package/dist.commonjs/hex/index.d.ts +0 -27
  467. package/dist.commonjs/hex/index.d.ts.map +0 -1
  468. package/dist.commonjs/hex/index.js +0 -20
  469. package/dist.commonjs/index.d.ts.map +0 -1
  470. package/dist.commonjs/jsonRpc/advanced.d.ts +0 -2
  471. package/dist.commonjs/jsonRpc/advanced.d.ts.map +0 -1
  472. package/dist.commonjs/jsonRpc/advanced.js +0 -17
  473. package/dist.commonjs/jsonRpc/index.d.ts +0 -2
  474. package/dist.commonjs/jsonRpc/index.d.ts.map +0 -1
  475. package/dist.commonjs/jsonRpc/index.js +0 -17
  476. package/dist.commonjs/jsonRpc/requestor.d.ts +0 -49
  477. package/dist.commonjs/jsonRpc/requestor.d.ts.map +0 -1
  478. package/dist.commonjs/jsonRpc/requestor.js +0 -113
  479. package/dist.commonjs/jsonRpc/transports/advanced.d.ts +0 -6
  480. package/dist.commonjs/jsonRpc/transports/advanced.d.ts.map +0 -1
  481. package/dist.commonjs/jsonRpc/transports/advanced.js +0 -21
  482. package/dist.commonjs/jsonRpc/transports/factory.d.ts +0 -6
  483. package/dist.commonjs/jsonRpc/transports/factory.d.ts.map +0 -1
  484. package/dist.commonjs/jsonRpc/transports/factory.js +0 -11
  485. package/dist.commonjs/jsonRpc/transports/fallback.d.ts +0 -8
  486. package/dist.commonjs/jsonRpc/transports/fallback.d.ts.map +0 -1
  487. package/dist.commonjs/jsonRpc/transports/fallback.js +0 -26
  488. package/dist.commonjs/jsonRpc/transports/http.d.ts +0 -8
  489. package/dist.commonjs/jsonRpc/transports/http.d.ts.map +0 -1
  490. package/dist.commonjs/jsonRpc/transports/http.js +0 -26
  491. package/dist.commonjs/jsonRpc/transports/transport.d.ts +0 -18
  492. package/dist.commonjs/jsonRpc/transports/transport.d.ts.map +0 -1
  493. package/dist.commonjs/jsonRpc/transports/transport.js +0 -2
  494. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts +0 -11
  495. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +0 -1
  496. package/dist.commonjs/jsonRpc/transports/webSocket.js +0 -94
  497. package/dist.commonjs/keystore/index.d.ts +0 -31
  498. package/dist.commonjs/keystore/index.d.ts.map +0 -1
  499. package/dist.commonjs/keystore/index.js +0 -110
  500. package/dist.commonjs/molecule/barrel.d.ts +0 -4
  501. package/dist.commonjs/molecule/barrel.d.ts.map +0 -1
  502. package/dist.commonjs/molecule/barrel.js +0 -19
  503. package/dist.commonjs/molecule/codec.d.ts +0 -146
  504. package/dist.commonjs/molecule/codec.d.ts.map +0 -1
  505. package/dist.commonjs/molecule/codec.js +0 -531
  506. package/dist.commonjs/molecule/entity.d.ts +0 -112
  507. package/dist.commonjs/molecule/entity.d.ts.map +0 -1
  508. package/dist.commonjs/molecule/entity.js +0 -147
  509. package/dist.commonjs/molecule/index.d.ts +0 -2
  510. package/dist.commonjs/molecule/index.d.ts.map +0 -1
  511. package/dist.commonjs/molecule/index.js +0 -37
  512. package/dist.commonjs/molecule/predefined.d.ts +0 -57
  513. package/dist.commonjs/molecule/predefined.d.ts.map +0 -1
  514. package/dist.commonjs/molecule/predefined.js +0 -87
  515. package/dist.commonjs/num/index.d.ts +0 -148
  516. package/dist.commonjs/num/index.d.ts.map +0 -1
  517. package/dist.commonjs/num/index.js +0 -216
  518. package/dist.commonjs/signer/btc/index.d.ts +0 -4
  519. package/dist.commonjs/signer/btc/index.d.ts.map +0 -1
  520. package/dist.commonjs/signer/btc/index.js +0 -19
  521. package/dist.commonjs/signer/btc/signerBtc.d.ts +0 -59
  522. package/dist.commonjs/signer/btc/signerBtc.d.ts.map +0 -1
  523. package/dist.commonjs/signer/btc/signerBtc.js +0 -87
  524. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -55
  525. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +0 -1
  526. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +0 -65
  527. package/dist.commonjs/signer/btc/verify.d.ts +0 -40
  528. package/dist.commonjs/signer/btc/verify.d.ts.map +0 -1
  529. package/dist.commonjs/signer/btc/verify.js +0 -80
  530. package/dist.commonjs/signer/ckb/index.d.ts +0 -6
  531. package/dist.commonjs/signer/ckb/index.d.ts.map +0 -1
  532. package/dist.commonjs/signer/ckb/index.js +0 -21
  533. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.d.ts +0 -16
  534. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.d.ts.map +0 -1
  535. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.js +0 -46
  536. package/dist.commonjs/signer/ckb/signerCkbPublicKey.d.ts +0 -27
  537. package/dist.commonjs/signer/ckb/signerCkbPublicKey.d.ts.map +0 -1
  538. package/dist.commonjs/signer/ckb/signerCkbPublicKey.js +0 -105
  539. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +0 -68
  540. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +0 -1
  541. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +0 -82
  542. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.d.ts +0 -11
  543. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.d.ts.map +0 -1
  544. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.js +0 -26
  545. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +0 -6
  546. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts.map +0 -1
  547. package/dist.commonjs/signer/ckb/verifyJoyId.js +0 -19
  548. package/dist.commonjs/signer/doge/index.d.ts +0 -5
  549. package/dist.commonjs/signer/doge/index.d.ts.map +0 -1
  550. package/dist.commonjs/signer/doge/index.js +0 -20
  551. package/dist.commonjs/signer/doge/signerDoge.d.ts +0 -52
  552. package/dist.commonjs/signer/doge/signerDoge.d.ts.map +0 -1
  553. package/dist.commonjs/signer/doge/signerDoge.js +0 -89
  554. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts +0 -41
  555. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts.map +0 -1
  556. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.js +0 -49
  557. package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts +0 -52
  558. package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts.map +0 -1
  559. package/dist.commonjs/signer/doge/signerDogePrivateKey.js +0 -72
  560. package/dist.commonjs/signer/doge/verify.d.ts +0 -17
  561. package/dist.commonjs/signer/doge/verify.d.ts.map +0 -1
  562. package/dist.commonjs/signer/doge/verify.js +0 -33
  563. package/dist.commonjs/signer/dummy/alwaysError.d.ts +0 -12
  564. package/dist.commonjs/signer/dummy/alwaysError.d.ts.map +0 -1
  565. package/dist.commonjs/signer/dummy/alwaysError.js +0 -17
  566. package/dist.commonjs/signer/dummy/dummy.d.ts +0 -15
  567. package/dist.commonjs/signer/dummy/dummy.d.ts.map +0 -1
  568. package/dist.commonjs/signer/dummy/dummy.js +0 -26
  569. package/dist.commonjs/signer/dummy/index.d.ts +0 -4
  570. package/dist.commonjs/signer/dummy/index.d.ts.map +0 -1
  571. package/dist.commonjs/signer/dummy/index.js +0 -19
  572. package/dist.commonjs/signer/dummy/openLink.d.ts +0 -12
  573. package/dist.commonjs/signer/dummy/openLink.d.ts.map +0 -1
  574. package/dist.commonjs/signer/dummy/openLink.js +0 -17
  575. package/dist.commonjs/signer/evm/index.d.ts +0 -4
  576. package/dist.commonjs/signer/evm/index.d.ts.map +0 -1
  577. package/dist.commonjs/signer/evm/index.js +0 -19
  578. package/dist.commonjs/signer/evm/signerEvm.d.ts +0 -59
  579. package/dist.commonjs/signer/evm/signerEvm.d.ts.map +0 -1
  580. package/dist.commonjs/signer/evm/signerEvm.js +0 -143
  581. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +0 -47
  582. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts.map +0 -1
  583. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +0 -55
  584. package/dist.commonjs/signer/evm/verify.d.ts +0 -6
  585. package/dist.commonjs/signer/evm/verify.d.ts.map +0 -1
  586. package/dist.commonjs/signer/evm/verify.js +0 -12
  587. package/dist.commonjs/signer/index.d.ts +0 -8
  588. package/dist.commonjs/signer/index.d.ts.map +0 -1
  589. package/dist.commonjs/signer/index.js +0 -23
  590. package/dist.commonjs/signer/nostr/index.d.ts +0 -5
  591. package/dist.commonjs/signer/nostr/index.d.ts.map +0 -1
  592. package/dist.commonjs/signer/nostr/index.js +0 -20
  593. package/dist.commonjs/signer/nostr/signerNostr.d.ts +0 -72
  594. package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +0 -1
  595. package/dist.commonjs/signer/nostr/signerNostr.js +0 -100
  596. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts +0 -14
  597. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts.map +0 -1
  598. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.js +0 -38
  599. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts +0 -15
  600. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +0 -1
  601. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.js +0 -30
  602. package/dist.commonjs/signer/nostr/verify.d.ts +0 -9
  603. package/dist.commonjs/signer/nostr/verify.d.ts.map +0 -1
  604. package/dist.commonjs/signer/nostr/verify.js +0 -60
  605. package/dist.commonjs/signer/signer/index.d.ts +0 -256
  606. package/dist.commonjs/signer/signer/index.d.ts.map +0 -1
  607. package/dist.commonjs/signer/signer/index.js +0 -311
  608. package/dist.commonjs/utils/index.d.ts +0 -97
  609. package/dist.commonjs/utils/index.d.ts.map +0 -1
  610. package/dist.commonjs/utils/index.js +0 -62
  611. /package/{dist/molecule/barrel.js → src/codec/index.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barrel-CXC2Uy5L.js","names":["keccak_256","bytesFrom","hexFrom","Transaction","numFrom","DEFAULT_CONFIRMED_BLOCK_TIME","DEFAULT_CONFIRMED_BLOCK_TIME","MapLru","numFrom","Cell","hexFrom","OutPoint","filterCell","ClientTransactionResponse","ClientBlockHeader","ClientBlock","numMax","DEFAULT_MIN_FEE_RATE","numFrom","DEFAULT_MAX_FEE_RATE","numMin","OutPoint","Cell","ClientIndexerSearchKey","CellDepInfo","CellDep","reduceAsync","Zero","Transaction","ErrorClientMaxFeeRateExceeded","hexFrom","ErrorClientWaitTransactionTimeout","sleep","TransportFallback","transportFromUri","ErrorClientResolveUnknown","OutPoint","ErrorClientVerification","ErrorClientDuplicatedTransaction","ErrorClientRBFRejected","apply","numFrom","JsonRpcTransformers","numToHex","hexFrom","ErrorClientBase","Cell","WebSocket","MAINNET_SCRIPTS","ScriptInfo","WebSocket","TESTNET_SCRIPTS","ScriptInfo","hashCkb","CellInput","numLeToBytes","Script","addressPayloadFromString","addressFromPayload","bytesConcat","bytesFrom","hashTypeToBytes","bech32m","ADDRESS_BECH32_LIMIT","hexFrom","bytesConcat","bytesFrom","hexFrom","numFrom","numLeToBytes","bytesConcat","bytesFrom","hexFrom","secp256k1","hashCkb","bytesFrom","hexFrom","secp256k1","bytesConcat","hexFrom","hexFrom","bytesFrom","secp256k1","bytesFrom","hexFrom","bytesFrom","schnorr","Transaction","hexFrom","Transaction","bytesFrom","WitnessArgs","bytesConcat","numToBytes","hexFrom","hexFrom","bytesFrom","hashCkb","Script","Transaction","hexFrom","bytesFrom","secp256k1","bytesConcat","Transaction","WitnessArgs","Script","hexFrom","Transaction","bytesFrom","WitnessArgs","bytesConcat","numToBytes","bytesFrom","hexFrom","secp256k1","bytesTo","bytesConcat","hexFrom","bytesFrom","Transaction","reduceAsync","WitnessArgs","bytesConcat","numToBytes","hexFrom","hexFrom","bytesFrom","bytesConcat","hashCkb","Transaction","WitnessArgs","hexFrom","bytesFrom","schnorr","hexFrom"],"sources":["../src/hasher/hasherKeecak256.ts","../src/molecule/barrel.ts","../src/client/cache/cache.ts","../src/client/cache/memory.ts","../src/client/client.ts","../src/jsonRpc/requestor.ts","../src/client/jsonRpc/client.ts","../src/client/clientPublicMainnet.ts","../src/client/clientPublicTestnet.ts","../src/ckb/hash.ts","../src/address/index.ts","../src/keystore/index.ts","../src/signer/btc/psbt.ts","../src/signer/btc/verify.ts","../src/signer/ckb/verifyCkbSecp256k1.ts","../src/signer/ckb/verifyJoyId.ts","../src/signer/doge/verify.ts","../src/signer/evm/verify.ts","../src/signer/nostr/verify.ts","../src/signer/signer/index.ts","../src/signer/btc/signerBtc.ts","../src/signer/btc/signerBtcPublicKeyReadonly.ts","../src/signer/ckb/signerCkbPublicKey.ts","../src/signer/ckb/signerCkbPrivateKey.ts","../src/signer/ckb/signerCkbScriptReadonly.ts","../src/signer/doge/signerDoge.ts","../src/signer/doge/signerDogeAddressReadonly.ts","../src/signer/doge/signerDogePrivateKey.ts","../src/signer/dummy/dummy.ts","../src/signer/dummy/alwaysError.ts","../src/signer/dummy/openLink.ts","../src/signer/evm/signerEvm.ts","../src/signer/evm/signerEvmAddressReadonly.ts","../src/signer/nostr/signerNostr.ts","../src/signer/nostr/signerNostrPublicKeyReadonly.ts","../src/signer/nostr/signerNostrPrivateKey.ts","../src/barrel.ts"],"sourcesContent":["import { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { BytesLike, bytesFrom } from \"../bytes/index.js\";\nimport { Hex, hexFrom } from \"../hex/index.js\";\nimport { Hasher } from \"./hasher.js\";\n\n/**\n * @public\n */\nexport class HasherKeecak256 implements Hasher {\n private readonly hasher: ReturnType<(typeof keccak_256)[\"create\"]>;\n\n /**\n * Creates an instance of Hasher.\n */\n\n constructor() {\n this.hasher = keccak_256.create();\n }\n\n /**\n * Updates the hash with the given data.\n *\n * @param data - The data to update the hash with.\n * @returns The current Hasher instance for chaining.\n *\n * @example\n * ```typescript\n * const hasher = new Hasher();\n * hasher.update(\"some data\").update(\"more data\");\n * const hash = hasher.digest();\n * ```\n */\n\n update(data: BytesLike): HasherKeecak256 {\n this.hasher.update(bytesFrom(data));\n return this;\n }\n\n /**\n * Finalizes the hash and returns the digest as a hexadecimal string.\n *\n * @returns The hexadecimal string representation of the hash.\n *\n * @example\n * ```typescript\n * const hasher = new Hasher();\n * hasher.update(\"some data\");\n * const hash = hasher.digest(); // Outputs something like \"0x...\"\n * ```\n */\n\n digest(): Hex {\n return hexFrom(this.hasher.digest());\n }\n}\n","export {\n /**\n * @deprecated Use ccc.Entity instead\n */\n Entity,\n /**\n * @deprecated Use ccc.codec instead\n */\n codec,\n} from \"../codec/entity.js\";\nexport * from \"./codec.js\";\nexport * from \"./predefined.js\";\n","import {\n Cell,\n CellLike,\n OutPointLike,\n Transaction,\n TransactionLike,\n} from \"../../ckb/index.js\";\nimport { HexLike } from \"../../hex/index.js\";\nimport { numFrom, NumLike } from \"../../num/index.js\";\nimport { ClientCollectableSearchKeyLike } from \"../clientTypes.advanced.js\";\nimport {\n ClientBlock,\n ClientBlockHeader,\n ClientBlockHeaderLike,\n ClientBlockLike,\n ClientTransactionResponse,\n ClientTransactionResponseLike,\n} from \"../clientTypes.js\";\nimport { DEFAULT_CONFIRMED_BLOCK_TIME } from \"./memory.advanced.js\";\n\n/**\n * @public\n * The ClientCache class is mainly designed for chained transactions.\n * Consumed & Created cells are \"marked\" so they can be correctly handled when composing transactions.\n * It also act as cache for rpc requests to reduce cost, but this is optional.\n */\nexport abstract class ClientCache {\n abstract markUsableNoCache(\n ...cellLikes: (CellLike | CellLike[])[]\n ): Promise<void>;\n async markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void> {\n await this.recordCells(...cellLikes);\n return this.markUsableNoCache(...cellLikes);\n }\n abstract markUnusable(\n ...outPointLike: (OutPointLike | OutPointLike[])[]\n ): Promise<void>;\n async markTransactions(\n ...transactionLike: (TransactionLike | TransactionLike[])[]\n ): Promise<void> {\n await Promise.all([\n this.recordTransactionResponses(\n transactionLike.flat().map((transaction) => ({\n transaction: transaction,\n status: \"sent\",\n })),\n ),\n ...transactionLike.flat().map((transactionLike) => {\n const tx = Transaction.from(transactionLike);\n const txHash = tx.hash();\n\n return Promise.all([\n ...tx.inputs.map((i) => this.markUnusable(i.previousOutput)),\n ...tx.outputs.map((o, i) =>\n this.markUsable({\n cellOutput: o,\n outputData: tx.outputsData[i],\n outPoint: {\n txHash,\n index: i,\n },\n }),\n ),\n ]);\n }),\n ]);\n }\n abstract clear(): Promise<void>;\n abstract findCells(\n filter: ClientCollectableSearchKeyLike,\n ): AsyncGenerator<Cell>;\n abstract isUnusable(outPointLike: OutPointLike): Promise<boolean>;\n\n // ======\n // Following methods are for requests caching and optional.\n // ======\n\n /**\n * Record known cells\n * Implement this method to enable cells query caching\n * @param _cells\n */\n async recordCells(..._cells: (CellLike | CellLike[])[]): Promise<void> {}\n /**\n * Get a known cell by out point\n * Implement this method to enable cells query caching\n * @param _outPoint\n */\n async getCell(_outPoint: OutPointLike): Promise<Cell | undefined> {\n return;\n }\n\n /**\n * Record known transaction responses.\n * Implement this method to enable transactions query caching\n * @param _transactions\n */\n async recordTransactionResponses(\n ..._transactions: (\n | ClientTransactionResponseLike\n | ClientTransactionResponseLike[]\n )[]\n ): Promise<void> {}\n /**\n * Get a known transaction response by hash\n * Implement this method to enable transactions query caching\n * @param _txHash\n */\n async getTransactionResponse(\n _txHash: HexLike,\n ): Promise<ClientTransactionResponse | undefined> {\n return;\n }\n /**\n * Record known transactions.\n * @param transactions\n */\n async recordTransactions(\n ...transactions: (TransactionLike | TransactionLike[])[]\n ): Promise<void> {\n return this.recordTransactionResponses(\n transactions.flat().map((transaction) => ({\n transaction,\n status: \"unknown\",\n })),\n );\n }\n /**\n * Get a known transaction by hash\n * @param txHash\n */\n async getTransaction(txHash: HexLike): Promise<Transaction | undefined> {\n return (await this.getTransactionResponse(txHash))?.transaction;\n }\n\n /**\n * Record known block headers.\n * Implement this method to enable block headers query caching\n * @param _headers\n */\n async recordHeaders(\n ..._headers: (ClientBlockHeaderLike | ClientBlockHeaderLike[])[]\n ): Promise<void> {}\n /**\n * Get a known block header by hash\n * Implement this method to enable block headers query caching\n * @param _hash\n */\n async getHeaderByHash(\n _hash: HexLike,\n ): Promise<ClientBlockHeader | undefined> {\n return;\n }\n /**\n * Get a known block header by number\n * Implement this method to enable block headers query caching\n * @param _number\n */\n async getHeaderByNumber(\n _number: NumLike,\n ): Promise<ClientBlockHeader | undefined> {\n return;\n }\n\n /**\n * Record known blocks.\n * Implement this method to enable blocks query caching\n * @param _blocks\n */\n async recordBlocks(\n ..._blocks: (ClientBlockLike | ClientBlockLike[])[]\n ): Promise<void> {}\n /**\n * Get a known block header by hash\n * Implement this method to enable block headers query caching\n * @param _hash\n */\n async getBlockByHash(_hash: HexLike): Promise<ClientBlock | undefined> {\n return;\n }\n /**\n * Get a known block header by number\n * Implement this method to enable block headers query caching\n * @param _number\n */\n async getBlockByNumber(_number: NumLike): Promise<ClientBlock | undefined> {\n return;\n }\n\n /**\n * Checks if a block header is considered confirmed.\n * The default implementation compares the header's timestamp against the current time\n * and a configured confirmation time. Override this method for custom confirmation logic.\n * @param header\n */\n hasHeaderConfirmed(header: ClientBlockHeader): boolean {\n return (\n numFrom(Date.now()) - header.timestamp >= DEFAULT_CONFIRMED_BLOCK_TIME\n );\n }\n}\n","import { Cell, CellLike, OutPoint, OutPointLike } from \"../../ckb/index.js\";\nimport { hexFrom, HexLike } from \"../../hex/index.js\";\nimport { Num, numFrom, NumLike } from \"../../num/index.js\";\nimport { ClientCollectableSearchKeyLike } from \"../clientTypes.advanced.js\";\nimport {\n ClientBlock,\n ClientBlockHeader,\n ClientBlockHeaderLike,\n ClientBlockLike,\n ClientTransactionResponse,\n ClientTransactionResponseLike,\n} from \"../clientTypes.js\";\nimport { ClientCache } from \"./cache.js\";\nimport {\n CellRecord,\n DEFAULT_CONFIRMED_BLOCK_TIME,\n filterCell,\n MapLru,\n} from \"./memory.advanced.js\";\n\nexport class ClientCacheMemory extends ClientCache {\n /**\n * OutPoint => [isLive, Cell | OutPoint]\n */\n private readonly cells: MapLru<string, CellRecord>;\n\n /**\n * TX Hash => Transaction Response\n */\n private readonly knownTransactions: MapLru<string, ClientTransactionResponse>;\n\n /**\n * Block Number => Block Hash\n */\n private readonly knownBlockHashes: MapLru<Num, string>;\n\n /**\n * Block Hash => Block Header / Full Block\n */\n private readonly knownBlocks: MapLru<\n string,\n Pick<ClientBlock, \"header\"> | ClientBlock\n >;\n\n private readonly confirmedBlockTime;\n\n /**\n * @param maxCells - Maximum number of cells to store in the cache. Defaults to 512.\n * @param maxTxs - Maximum number of transactions to store in the cache. Defaults to 256.\n * @param maxBlocks - Maximum number of blocks to store in the cache. Defaults to 128.\n * @param confirmedBlockTimeLike - Time in milliseconds after which a block is considered confirmed.\n * Defaults to DEFAULT_CONFIRMED_BLOCK_TIME (50 blocks * 10s).\n */\n constructor(\n private readonly maxCells = 512,\n private readonly maxTxs = 256,\n private readonly maxBlocks = 128,\n confirmedBlockTimeLike: NumLike = DEFAULT_CONFIRMED_BLOCK_TIME,\n ) {\n super();\n\n this.cells = new MapLru<string, CellRecord>(this.maxCells);\n this.knownTransactions = new MapLru<string, ClientTransactionResponse>(\n this.maxTxs,\n );\n this.knownBlockHashes = new MapLru<Num, string>(this.maxBlocks);\n this.knownBlocks = new MapLru<\n string,\n Pick<ClientBlock, \"header\"> | ClientBlock\n >(this.maxBlocks);\n\n this.confirmedBlockTime = numFrom(confirmedBlockTimeLike);\n }\n\n async markUsableNoCache(\n ...cellLikes: (CellLike | CellLike[])[]\n ): Promise<void> {\n cellLikes.flat().forEach((cellLike) => {\n const cell = Cell.from(cellLike).clone();\n const outPointStr = hexFrom(cell.outPoint.toBytes());\n\n this.cells.set(outPointStr, [true, cell]);\n });\n }\n\n async markUnusable(\n ...outPointLikes: (OutPointLike | OutPointLike[])[]\n ): Promise<void> {\n outPointLikes.flat().forEach((outPointLike) => {\n const outPoint = OutPoint.from(outPointLike);\n const outPointStr = hexFrom(outPoint.toBytes());\n\n const existed = this.cells.get(outPointStr);\n if (existed) {\n existed[0] = false;\n return;\n }\n this.cells.set(outPointStr, [false, { outPoint }]);\n });\n }\n\n async clear(): Promise<void> {\n this.cells.clear();\n this.knownTransactions.clear();\n }\n\n async *findCells(\n keyLike: ClientCollectableSearchKeyLike,\n ): AsyncGenerator<Cell> {\n for (const [key, [isLive, cell]] of this.cells.entries()) {\n if (!isLive) {\n continue;\n }\n if (!filterCell(keyLike, cell)) {\n continue;\n }\n\n this.cells.get(key);\n yield cell.clone();\n }\n }\n\n async isUnusable(outPointLike: OutPointLike): Promise<boolean> {\n const outPoint = OutPoint.from(outPointLike);\n\n return !(this.cells.get(hexFrom(outPoint.toBytes()))?.[0] ?? true);\n }\n\n async recordCells(...cells: (CellLike | CellLike[])[]): Promise<void> {\n cells.flat().map((cellLike) => {\n const cell = Cell.from(cellLike);\n const outPointStr = hexFrom(cell.outPoint.toBytes());\n\n if (this.cells.get(outPointStr)) {\n return;\n }\n this.cells.set(outPointStr, [undefined, cell]);\n });\n }\n async getCell(outPointLike: OutPointLike): Promise<Cell | undefined> {\n const outPoint = OutPoint.from(outPointLike);\n\n const cell = this.cells.get(hexFrom(outPoint.toBytes()))?.[1];\n if (cell && cell.cellOutput && cell.outputData) {\n return Cell.from((cell as Cell).clone());\n }\n }\n\n async recordTransactionResponses(\n ...transactions: (\n | ClientTransactionResponseLike\n | ClientTransactionResponseLike[]\n )[]\n ): Promise<void> {\n transactions.flat().map((txLike) => {\n const tx = ClientTransactionResponse.from(txLike);\n this.knownTransactions.set(tx.transaction.hash(), tx);\n });\n }\n async getTransactionResponse(\n txHashLike: HexLike,\n ): Promise<ClientTransactionResponse | undefined> {\n const txHash = hexFrom(txHashLike);\n return this.knownTransactions.get(txHash)?.clone();\n }\n\n async recordHeaders(\n ...headers: (ClientBlockHeaderLike | ClientBlockHeaderLike[])[]\n ): Promise<void> {\n headers.flat().map((headerLike) => {\n const header = ClientBlockHeader.from(headerLike);\n\n this.knownBlockHashes.set(header.number, header.hash);\n\n const existed = this.knownBlocks.get(header.hash);\n if (existed) {\n return;\n }\n this.knownBlocks.set(header.hash, { header });\n });\n }\n async getHeaderByHash(\n hashLike: HexLike,\n ): Promise<ClientBlockHeader | undefined> {\n const hash = hexFrom(hashLike);\n const block = this.knownBlocks.get(hash);\n if (block) {\n this.knownBlockHashes.get(block.header.number); // For LRU\n }\n return block?.header;\n }\n async getHeaderByNumber(\n numberLike: NumLike,\n ): Promise<ClientBlockHeader | undefined> {\n const number = numFrom(numberLike);\n\n const hash = this.knownBlockHashes.get(number);\n if (!hash) {\n return;\n }\n return this.getHeaderByHash(hash);\n }\n\n async recordBlocks(\n ...blocks: (ClientBlockLike | ClientBlockLike[])[]\n ): Promise<void> {\n blocks.flat().map((blockLike) => {\n const block = ClientBlock.from(blockLike);\n\n this.knownBlockHashes.set(block.header.number, block.header.hash);\n this.knownBlocks.set(block.header.hash, block);\n });\n }\n async getBlockByHash(hashLike: HexLike): Promise<ClientBlock | undefined> {\n const hash = hexFrom(hashLike);\n const block = this.knownBlocks.get(hash);\n if (block) {\n this.knownBlockHashes.get(block.header.number); // For LRU\n if (\"transactions\" in block) {\n return block;\n }\n }\n return;\n }\n async getBlockByNumber(\n numberLike: NumLike,\n ): Promise<ClientBlock | undefined> {\n const number = numFrom(numberLike);\n\n const hash = this.knownBlockHashes.get(number);\n if (!hash) {\n return;\n }\n return this.getBlockByHash(hash);\n }\n\n hasHeaderConfirmed(header: ClientBlockHeader): boolean {\n return numFrom(Date.now()) - header.timestamp >= this.confirmedBlockTime;\n }\n}\n","import {\n Cell,\n CellDep,\n OutPoint,\n OutPointLike,\n ScriptLike,\n Transaction,\n TransactionLike,\n} from \"../ckb/index.js\";\nimport { Zero } from \"../fixedPoint/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../hex/index.js\";\nimport { Num, NumLike, numFrom, numMax, numMin } from \"../num/index.js\";\nimport { reduceAsync, sleep } from \"../utils/index.js\";\nimport { ClientCache } from \"./cache/index.js\";\nimport { ClientCacheMemory } from \"./cache/memory.js\";\nimport {\n ClientCollectableSearchKeyLike,\n DEFAULT_MAX_FEE_RATE,\n DEFAULT_MIN_FEE_RATE,\n} from \"./clientTypes.advanced.js\";\nimport {\n CellDepInfo,\n CellDepInfoLike,\n ClientBlock,\n ClientBlockHeader,\n ClientFindCellsResponse,\n ClientFindTransactionsGroupedResponse,\n ClientFindTransactionsResponse,\n ClientIndexerSearchKey,\n ClientIndexerSearchKeyLike,\n ClientIndexerSearchKeyTransactionLike,\n ClientTransactionResponse,\n ErrorClientMaxFeeRateExceeded,\n ErrorClientWaitTransactionTimeout,\n OutputsValidator,\n ScriptInfo,\n} from \"./clientTypes.js\";\nimport { KnownScript } from \"./knownScript.js\";\n\n/**\n * @public\n */\nexport abstract class Client {\n public cache: ClientCache;\n\n constructor(config?: { cache?: ClientCache }) {\n this.cache = config?.cache ?? new ClientCacheMemory();\n }\n\n abstract get url(): string;\n abstract get addressPrefix(): string;\n\n /**\n * Get the deployment info for a well-known CKB script.\n * Returns the cell deps and type script info needed to use the script.\n *\n * @param script - The KnownScript enum value.\n * @returns Script info including cellDeps and type hash.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n *\n * // Get xUDT script deployment info\n * const xudtInfo = await client.getKnownScript(ccc.KnownScript.XUdt);\n * console.log(`xUDT cellDeps:`, xudtInfo.cellDeps);\n *\n * // Build an xUDT type script\n * const xudtType = await ccc.Script.fromKnownScript(\n * client,\n * ccc.KnownScript.XUdt,\n * \"0xOWNER_LOCK_HASH...\",\n * );\n * ```\n */\n abstract getKnownScript(script: KnownScript): Promise<ScriptInfo>;\n\n abstract getFeeRateStatistics(\n blockRange?: NumLike,\n ): Promise<{ mean: Num; median: Num }>;\n /**\n * Get the recommended transaction fee rate based on recent blocks.\n * Returns the median fee rate, clamped between min and max fee rates.\n *\n * @param blockRange - Number of recent blocks to analyze.\n * @param options - Optional max fee rate cap.\n * @returns The recommended fee rate in Shannons per KB.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const feeRate = await client.getFeeRate();\n * console.log(`Current fee rate: ${feeRate} Shannons/KB`);\n * ```\n */\n async getFeeRate(\n blockRange?: NumLike,\n options?: { maxFeeRate?: NumLike },\n ): Promise<Num> {\n const feeRate = numMax(\n (await this.getFeeRateStatistics(blockRange)).median,\n DEFAULT_MIN_FEE_RATE,\n );\n\n const maxFeeRate = numFrom(options?.maxFeeRate ?? DEFAULT_MAX_FEE_RATE);\n if (maxFeeRate === Zero) {\n return feeRate;\n }\n\n return numMin(feeRate, maxFeeRate);\n }\n\n /**\n * Get the latest block number (tip) of the chain.\n *\n * @returns The current tip block number.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const tipBlockNumber = await client.getTip();\n * console.log(`Current block height: ${tipBlockNumber}`);\n * ```\n */\n abstract getTip(): Promise<Num>;\n\n /**\n * Get the header of the latest block.\n *\n * @param verbosity - Verbosity level (0 for hex, 1 for object).\n * @returns The tip block header.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const header = await client.getTipHeader();\n * console.log(`Block #${header.number}, hash: ${header.hash}`);\n * ```\n */\n abstract getTipHeader(verbosity?: number | null): Promise<ClientBlockHeader>;\n abstract getBlockByNumberNoCache(\n blockNumber: NumLike,\n verbosity?: number | null,\n withCycles?: boolean | null,\n ): Promise<ClientBlock | undefined>;\n abstract getBlockByHashNoCache(\n blockHash: HexLike,\n verbosity?: number | null,\n withCycles?: boolean | null,\n ): Promise<ClientBlock | undefined>;\n abstract getHeaderByNumberNoCache(\n blockNumber: NumLike,\n verbosity?: number | null,\n ): Promise<ClientBlockHeader | undefined>;\n abstract getHeaderByHashNoCache(\n blockHash: HexLike,\n verbosity?: number | null,\n ): Promise<ClientBlockHeader | undefined>;\n async getBlockByNumber(\n blockNumber: NumLike,\n verbosity?: number | null,\n withCycles?: boolean | null,\n ): Promise<ClientBlock | undefined> {\n const block = await this.cache.getBlockByNumber(blockNumber);\n if (block) {\n return block;\n }\n\n const res = await this.getBlockByNumberNoCache(\n blockNumber,\n verbosity,\n withCycles,\n );\n if (res && this.cache.hasHeaderConfirmed(res.header)) {\n await this.cache.recordBlocks(res);\n }\n return res;\n }\n async getBlockByHash(\n blockHash: HexLike,\n verbosity?: number | null,\n withCycles?: boolean | null,\n ): Promise<ClientBlock | undefined> {\n const block = await this.cache.getBlockByHash(blockHash);\n if (block) {\n return block;\n }\n\n const res = await this.getBlockByHashNoCache(\n blockHash,\n verbosity,\n withCycles,\n );\n if (res && this.cache.hasHeaderConfirmed(res.header)) {\n await this.cache.recordBlocks(res);\n }\n return res;\n }\n async getHeaderByNumber(\n blockNumber: NumLike,\n verbosity?: number | null,\n ): Promise<ClientBlockHeader | undefined> {\n const header = await this.cache.getHeaderByNumber(blockNumber);\n if (header) {\n return header;\n }\n\n const res = await this.getHeaderByNumberNoCache(blockNumber, verbosity);\n if (res && this.cache.hasHeaderConfirmed(res)) {\n await this.cache.recordHeaders(res);\n }\n return res;\n }\n async getHeaderByHash(\n blockHash: HexLike,\n verbosity?: number | null,\n ): Promise<ClientBlockHeader | undefined> {\n const header = await this.cache.getHeaderByHash(blockHash);\n if (header) {\n return header;\n }\n\n const res = await this.getHeaderByHashNoCache(blockHash, verbosity);\n if (res && this.cache.hasHeaderConfirmed(res)) {\n await this.cache.recordHeaders(res);\n }\n return res;\n }\n\n abstract estimateCycles(transaction: TransactionLike): Promise<Num>;\n abstract sendTransactionDry(\n transaction: TransactionLike,\n validator?: OutputsValidator,\n ): Promise<Num>;\n\n abstract sendTransactionNoCache(\n transaction: TransactionLike,\n validator?: OutputsValidator,\n ): Promise<Hex>;\n abstract getTransactionNoCache(\n txHash: HexLike,\n ): Promise<ClientTransactionResponse | undefined>;\n\n /**\n * Get a cell by its out point.\n * The cell will be cached if it is found.\n *\n * @param outPointLike - The out point of the cell to get.\n * @returns The cell if it exists, otherwise undefined.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const cell = await client.getCell({\n * txHash: \"0xTX_HASH...\",\n * index: 0,\n * });\n * if (cell) {\n * console.log(`Capacity: ${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);\n * console.log(`Lock: ${cell.cellOutput.lock.codeHash}`);\n * console.log(`Data: ${cell.outputData}`);\n * }\n * ```\n */\n async getCell(outPointLike: OutPointLike): Promise<Cell | undefined> {\n const outPoint = OutPoint.from(outPointLike);\n const cached = await this.cache.getCell(outPoint);\n\n if (cached) {\n return cached;\n }\n\n const transaction = await this.getTransaction(outPoint.txHash);\n if (!transaction) {\n return;\n }\n const output = transaction.transaction.getOutput(outPoint.index);\n if (!output) {\n return;\n }\n\n const cell = Cell.from({\n ...output,\n outPoint,\n });\n await this.cache.recordCells(cell);\n return cell;\n }\n\n async getCellWithHeader(\n outPointLike: OutPointLike,\n ): Promise<{ cell: Cell; header?: ClientBlockHeader } | undefined> {\n const outPoint = OutPoint.from(outPointLike);\n\n const res = await this.getTransactionWithHeader(outPoint.txHash);\n if (!res) {\n return;\n }\n const { transaction, header } = res;\n\n const output = transaction.transaction.getOutput(outPoint.index);\n if (!output) {\n return;\n }\n\n const cell = Cell.from({\n ...output,\n outPoint,\n });\n await this.cache.recordCells(cell);\n return { cell, header };\n }\n\n abstract getCellLiveNoCache(\n outPointLike: OutPointLike,\n withData?: boolean | null,\n includeTxPool?: boolean | null,\n ): Promise<Cell | undefined>;\n /**\n * Get a live (unspent) cell by its out point.\n * Unlike getCell(), this verifies the cell is still live on-chain.\n *\n * @param outPointLike - The out point of the cell.\n * @param withData - Whether to include cell data.\n * @param includeTxPool - Whether to include cells in the transaction pool.\n * @returns The live cell, or undefined if spent or not found.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const cell = await client.getCellLive(\n * { txHash: \"0xTX_HASH...\", index: 0 },\n * true, // include data\n * true, // include tx pool\n * );\n * if (cell) {\n * console.log(\"Cell is still live!\");\n * } else {\n * console.log(\"Cell has been spent or does not exist.\");\n * }\n * ```\n */\n async getCellLive(\n outPointLike: OutPointLike,\n withData?: boolean | null,\n includeTxPool?: boolean | null,\n ): Promise<Cell | undefined> {\n const cell = await this.getCellLiveNoCache(\n outPointLike,\n withData,\n includeTxPool,\n );\n if (withData && cell) {\n await this.cache.recordCells(cell);\n }\n return cell;\n }\n\n abstract findCellsPagedNoCache(\n key: ClientIndexerSearchKeyLike,\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ): Promise<ClientFindCellsResponse>;\n /**\n * Find cells with pagination support.\n * Returns one page of results at a time with a cursor for the next page.\n *\n * @param key - The indexer search key.\n * @param order - Sort order (\"asc\" or \"desc\").\n * @param limit - Maximum cells per page.\n * @param after - Cursor from previous page for pagination.\n * @returns A page of cells with a cursor for the next page.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const { script: lock } = await ccc.Address.fromString(\"ckt1q...\", client);\n *\n * // Get first page of cells\n * const page1 = await client.findCellsPaged({\n * script: lock,\n * scriptType: \"lock\",\n * }, \"asc\", 20);\n * console.log(`Found ${page1.cells.length} cells`);\n *\n * // Get next page\n * if (page1.cells.length === 20) {\n * const page2 = await client.findCellsPaged(\n * { script: lock, scriptType: \"lock\" },\n * \"asc\", 20, page1.lastCursor,\n * );\n * }\n * ```\n */\n async findCellsPaged(\n key: ClientIndexerSearchKeyLike,\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ): Promise<ClientFindCellsResponse> {\n const res = await this.findCellsPagedNoCache(key, order, limit, after);\n await this.cache.recordCells(res.cells);\n return res;\n }\n\n async *findCellsOnChain(\n key: ClientIndexerSearchKeyLike,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<Cell> {\n let last: string | undefined = undefined;\n\n while (true) {\n const { cells, lastCursor } = await this.findCellsPaged(\n key,\n order,\n limit,\n last,\n );\n for (const cell of cells) {\n yield cell;\n }\n if (cells.length === 0 || cells.length < limit) {\n return;\n }\n last = lastCursor;\n }\n }\n\n /**\n * Find cells by search key designed for collectable cells.\n * The result also includes cached cells, the order param only works for cells fetched from RPC.\n *\n * @param keyLike - The search key.\n * @returns A async generator for yielding cells.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const { script: lock } = await ccc.Address.fromString(\"ckt1q...\", client);\n *\n * // Find all cells owned by a lock script\n * for await (const cell of client.findCells({\n * script: lock,\n * scriptType: \"lock\",\n * scriptSearchMode: \"exact\",\n * withData: true,\n * })) {\n * console.log(`Cell: ${cell.outPoint.txHash}:${cell.outPoint.index}`);\n * console.log(`Capacity: ${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);\n * }\n * ```\n */\n async *findCells(\n keyLike: ClientCollectableSearchKeyLike,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<Cell> {\n const key = ClientIndexerSearchKey.from(keyLike);\n const foundedOutPoints = [];\n\n for await (const cell of this.cache.findCells(key)) {\n foundedOutPoints.push(cell.outPoint);\n yield cell;\n }\n\n for await (const cell of this.findCellsOnChain(key, order, limit)) {\n if (\n (await this.cache.isUnusable(cell.outPoint)) ||\n foundedOutPoints.some((founded) => founded.eq(cell.outPoint))\n ) {\n continue;\n }\n\n yield cell;\n }\n }\n\n /**\n * Find cells by lock script, optionally filtered by type script.\n *\n * @param lock - The lock script to search by.\n * @param type - Optional type script filter.\n * @param withData - Whether to include cell data (default: true).\n * @param order - Sort order by block number (\"asc\" or \"desc\").\n * @param limit - Page size for each RPC call (default: 10).\n * @returns An async generator yielding matching cells.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const { script: lock } = await ccc.Address.fromString(\"ckt1q...\", client);\n *\n * // Find all cells belonging to this address\n * for await (const cell of client.findCellsByLock(lock)) {\n * console.log(`${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);\n * }\n *\n * // Find only xUDT cells belonging to this address\n * const xudtType = await ccc.Script.fromKnownScript(\n * client, ccc.KnownScript.XUdt, \"0xOWNER_LOCK_HASH...\",\n * );\n * for await (const cell of client.findCellsByLock(lock, xudtType)) {\n * console.log(`UDT cell found`);\n * }\n * ```\n */\n findCellsByLock(\n lock: ScriptLike,\n type?: ScriptLike | null,\n withData = true,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<Cell> {\n return this.findCells(\n {\n script: lock,\n scriptType: \"lock\",\n scriptSearchMode: \"exact\",\n filter: {\n script: type,\n },\n withData,\n },\n order,\n limit,\n );\n }\n\n /**\n * Find cells by type script.\n *\n * @param type - The type script to search by.\n * @param withData - Whether to include cell data (default: true).\n * @param order - Sort order by block number.\n * @param limit - Page size for each RPC call (default: 10).\n * @returns An async generator yielding matching cells.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * // Find all xUDT cells of a specific token\n * const xudtType = await ccc.Script.fromKnownScript(\n * client, ccc.KnownScript.XUdt, \"0xOWNER_LOCK_HASH...\",\n * );\n * for await (const cell of client.findCellsByType(xudtType)) {\n * console.log(`Token cell: ${cell.outPoint.txHash}:${cell.outPoint.index}`);\n * }\n * ```\n */\n findCellsByType(\n type: ScriptLike,\n withData = true,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<Cell> {\n return this.findCells(\n {\n script: type,\n scriptType: \"type\",\n scriptSearchMode: \"exact\",\n withData,\n },\n order,\n limit,\n );\n }\n\n async findSingletonCellByType(\n type: ScriptLike,\n withData = true,\n ): Promise<Cell | undefined> {\n for await (const cell of this.findCellsByType(\n type,\n withData,\n undefined,\n 1,\n )) {\n return cell;\n }\n }\n\n /**\n * Resolve cell dependency info into concrete CellDep objects.\n * If a CellDepInfo specifies a type script, the actual deployed cell is located on-chain.\n *\n * @param cellDepsInfoLike - One or more CellDepInfo or arrays of CellDepInfo.\n * @returns Resolved CellDep array ready to be added to a transaction.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const xudtInfo = await client.getKnownScript(ccc.KnownScript.XUdt);\n * const cellDeps = await client.getCellDeps(xudtInfo.cellDeps);\n * // cellDeps can be added to a transaction:\n * // tx.cellDeps.push(...cellDeps);\n * ```\n */\n async getCellDeps(\n ...cellDepsInfoLike: (CellDepInfoLike | CellDepInfoLike[])[]\n ): Promise<CellDep[]> {\n return Promise.all(\n cellDepsInfoLike.flat().map(async (infoLike) => {\n const { cellDep, type } = CellDepInfo.from(infoLike);\n if (type === undefined) {\n return cellDep;\n }\n const found = await this.findSingletonCellByType(type);\n if (!found) {\n return cellDep;\n }\n\n return CellDep.from({\n outPoint: found.outPoint,\n depType: cellDep.depType,\n });\n }),\n );\n }\n\n abstract findTransactionsPaged(\n key: Omit<ClientIndexerSearchKeyTransactionLike, \"groupByTransaction\"> & {\n groupByTransaction: true;\n },\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ): Promise<ClientFindTransactionsGroupedResponse>;\n abstract findTransactionsPaged(\n key: Omit<ClientIndexerSearchKeyTransactionLike, \"groupByTransaction\"> & {\n groupByTransaction?: false | null;\n },\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ): Promise<ClientFindTransactionsResponse>;\n abstract findTransactionsPaged(\n key: ClientIndexerSearchKeyTransactionLike,\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ): Promise<\n ClientFindTransactionsResponse | ClientFindTransactionsGroupedResponse\n >;\n\n findTransactions(\n key: Omit<ClientIndexerSearchKeyTransactionLike, \"groupByTransaction\"> & {\n groupByTransaction: true;\n },\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsGroupedResponse[\"transactions\"][0]>;\n findTransactions(\n key: Omit<ClientIndexerSearchKeyTransactionLike, \"groupByTransaction\"> & {\n groupByTransaction?: false | null;\n },\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsResponse[\"transactions\"][0]>;\n findTransactions(\n key: ClientIndexerSearchKeyTransactionLike,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n >;\n async *findTransactions(\n key: ClientIndexerSearchKeyTransactionLike,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n > {\n let last: string | undefined = undefined;\n\n while (true) {\n const {\n transactions,\n lastCursor,\n }:\n | ClientFindTransactionsResponse\n | ClientFindTransactionsGroupedResponse =\n await this.findTransactionsPaged(key, order, limit, last);\n for (const tx of transactions) {\n yield tx;\n }\n if (transactions.length === 0 || transactions.length < limit) {\n return;\n }\n last = lastCursor;\n }\n }\n\n /**\n * Find transactions related to a lock script, optionally filtered by type script.\n *\n * @param lock - The lock script to search by.\n * @param type - Optional type script filter.\n * @param groupByTransaction - If true, group results by transaction.\n * @param order - Sort order by block number.\n * @param limit - Page size per RPC call.\n * @returns An async generator yielding transaction records.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const { script: lock } = await ccc.Address.fromString(\"ckt1q...\", client);\n *\n * // List all transactions related to an address (grouped)\n * for await (const txRecord of client.findTransactionsByLock(lock, null, true)) {\n * console.log(`TX: ${txRecord.txHash}, Block: ${txRecord.blockNumber}`);\n * }\n * ```\n */\n findTransactionsByLock(\n lock: ScriptLike,\n type: ScriptLike | undefined | null,\n groupByTransaction: true,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsGroupedResponse[\"transactions\"][0]>;\n findTransactionsByLock(\n lock: ScriptLike,\n type?: ScriptLike | null,\n groupByTransaction?: false | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsResponse[\"transactions\"][0]>;\n findTransactionsByLock(\n lock: ScriptLike,\n type?: ScriptLike | null,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n >;\n findTransactionsByLock(\n lock: ScriptLike,\n type?: ScriptLike | null,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n > {\n return this.findTransactions(\n {\n script: lock,\n scriptType: \"lock\",\n scriptSearchMode: \"exact\",\n filter: {\n script: type,\n },\n groupByTransaction,\n },\n order,\n limit,\n );\n }\n\n findTransactionsByType(\n type: ScriptLike,\n groupByTransaction: true,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsGroupedResponse[\"transactions\"][0]>;\n findTransactionsByType(\n type: ScriptLike,\n groupByTransaction?: false | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsResponse[\"transactions\"][0]>;\n findTransactionsByType(\n type: ScriptLike,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n >;\n findTransactionsByType(\n type: ScriptLike,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit = 10,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n > {\n return this.findTransactions(\n {\n script: type,\n scriptType: \"type\",\n scriptSearchMode: \"exact\",\n groupByTransaction,\n },\n order,\n limit,\n );\n }\n\n abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;\n\n /**\n * Get the total CKB balance of a single lock script.\n * Only counts cells with no type script and no data (pure CKB capacity cells).\n *\n * @param lock - The lock script to query balance for.\n * @returns The total capacity in Shannons as a bigint.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const { script: lock } = await ccc.Address.fromString(\n * \"ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsq...\",\n * client,\n * );\n * const balance = await client.getBalanceSingle(lock);\n * console.log(`Balance: ${ccc.fixedPointToString(balance)} CKB`);\n * ```\n */\n async getBalanceSingle(lock: ScriptLike): Promise<Num> {\n return this.getCellsCapacity({\n script: lock,\n scriptType: \"lock\",\n scriptSearchMode: \"exact\",\n filter: {\n scriptLenRange: [0, 1],\n outputDataLenRange: [0, 1],\n },\n });\n }\n\n /**\n * Get the total CKB balance across multiple lock scripts.\n * Sums the balance from each lock script.\n *\n * @param locks - An array of lock scripts to query.\n * @returns The combined total capacity in Shannons as a bigint.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const signer = new ccc.SignerCkbPrivateKey(client, \"0x...\");\n * await signer.connect();\n *\n * const locks = await signer.getRecommendedAddressObj()\n * .then(({ script }) => [script]);\n * const totalBalance = await client.getBalance(locks);\n * console.log(`Total: ${ccc.fixedPointToString(totalBalance)} CKB`);\n * ```\n */\n async getBalance(locks: ScriptLike[]): Promise<Num> {\n return reduceAsync(\n locks,\n async (acc, lock) => acc + (await this.getBalanceSingle(lock)),\n Zero,\n );\n }\n\n /**\n * Send a signed transaction to the CKB network.\n * Validates the fee rate against the maximum before sending.\n *\n * @param transaction - The transaction to send.\n * @param validator - Optional outputs validator (\"passthrough\" or \"well_known_scripts_only\").\n * @param options - Optional configuration including maxFeeRate.\n * @returns The transaction hash.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const signer = new ccc.SignerCkbPrivateKey(client, \"0x...\");\n * await signer.connect();\n *\n * const tx = ccc.Transaction.from({\n * outputs: [{ capacity: ccc.fixedPointFrom(100), lock: receiverLock }],\n * });\n * await tx.completeInputsByCapacity(signer);\n * await tx.completeFeeBy(signer);\n *\n * // Usually you call signer.sendTransaction(tx) which signs then sends.\n * // client.sendTransaction expects an already-signed transaction.\n * const txHash = await client.sendTransaction(tx);\n * ```\n */\n async sendTransaction(\n transaction: TransactionLike,\n validator?: OutputsValidator,\n options?: { maxFeeRate?: NumLike },\n ): Promise<Hex> {\n const tx = Transaction.from(transaction);\n\n const maxFeeRate = numFrom(options?.maxFeeRate ?? DEFAULT_MAX_FEE_RATE);\n const feeRate = await tx.getFeeRate(this);\n if (maxFeeRate > Zero && feeRate > maxFeeRate) {\n throw new ErrorClientMaxFeeRateExceeded(maxFeeRate, feeRate);\n }\n\n const txHash = await this.sendTransactionNoCache(tx, validator);\n\n await this.cache.markTransactions(tx);\n return txHash;\n }\n\n /**\n * Get a transaction by its hash, including its status and block info.\n *\n * @param txHashLike - The transaction hash to look up.\n * @returns The transaction response with status, or undefined if not found.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * const txResponse = await client.getTransaction(\"0xTX_HASH...\");\n * if (txResponse) {\n * console.log(`Status: ${txResponse.status}`);\n * console.log(`Block: ${txResponse.blockNumber}`);\n * console.log(`Outputs: ${txResponse.transaction.outputs.length}`);\n * }\n * ```\n */\n async getTransaction(\n txHashLike: HexLike,\n ): Promise<ClientTransactionResponse | undefined> {\n const txHash = hexFrom(txHashLike);\n const res = await this.getTransactionNoCache(txHash);\n if (res) {\n await this.cache.recordTransactionResponses(res);\n return res;\n }\n\n return this.cache.getTransactionResponse(txHash);\n }\n\n /**\n * This method gets specified transaction with its block header (if existed).\n * This is mainly for caching because we need the header to test if we can safely trust the cached tx status.\n * @param txHashLike\n */\n async getTransactionWithHeader(\n txHashLike: HexLike,\n ): Promise<\n | { transaction: ClientTransactionResponse; header?: ClientBlockHeader }\n | undefined\n > {\n const txHash = hexFrom(txHashLike);\n const tx = await this.cache.getTransactionResponse(txHash);\n if (tx?.blockHash) {\n const header = await this.getHeaderByHash(tx.blockHash);\n if (header && this.cache.hasHeaderConfirmed(header)) {\n return {\n transaction: tx,\n header,\n };\n }\n }\n\n const res = await this.getTransactionNoCache(txHash);\n if (!res) {\n return;\n }\n\n await this.cache.recordTransactionResponses(res);\n return {\n transaction: res,\n header: res.blockHash\n ? await this.getHeaderByHash(res.blockHash)\n : undefined,\n };\n }\n\n /**\n * Wait for a transaction to be confirmed on-chain.\n * Polls the node until the transaction reaches the specified confirmation depth.\n *\n * @param txHash - The transaction hash to wait for.\n * @param confirmations - Number of block confirmations to wait for (default: 0 = committed).\n * @param timeout - Maximum wait time in milliseconds (default: 60000).\n * @param interval - Polling interval in milliseconds (default: 2000).\n * @returns The transaction response once confirmed, or throws on timeout.\n *\n * @example\n * ```typescript\n * import { ccc } from \"@ckb-ccc/core\";\n *\n * const client = new ccc.ClientPublicTestnet();\n * // Wait for transaction to be committed (0 confirmations)\n * const tx = await client.waitTransaction(\"0xTX_HASH...\");\n * console.log(`Confirmed in block: ${tx?.blockNumber}`);\n *\n * // Wait for 4 confirmations with 2 minute timeout\n * const confirmedTx = await client.waitTransaction(\n * \"0xTX_HASH...\",\n * 4, // confirmations\n * 120000, // timeout: 2 minutes\n * );\n * ```\n */\n async waitTransaction(\n txHash: HexLike,\n confirmations: number = 0,\n timeout: number = 60000,\n interval: number = 2000,\n ): Promise<ClientTransactionResponse | undefined> {\n const startTime = Date.now();\n let tx: ClientTransactionResponse | undefined;\n\n const getTx = async () => {\n const res = await this.getTransaction(txHash);\n if (\n !res ||\n res.blockNumber == null ||\n [\"sent\", \"pending\", \"proposed\"].includes(res.status)\n ) {\n return undefined;\n }\n\n tx = res;\n return res;\n };\n\n while (true) {\n if (!tx) {\n if (await getTx()) {\n continue;\n }\n } else if (confirmations === 0) {\n return tx;\n } else if (\n (await this.getTipHeader()).number - tx.blockNumber! >=\n confirmations\n ) {\n return tx;\n }\n\n if (Date.now() - startTime + interval >= timeout) {\n throw new ErrorClientWaitTransactionTimeout(timeout);\n }\n await sleep(interval);\n }\n }\n}\n","import {\n JsonRpcPayload,\n Transport,\n TransportFallback,\n transportFromUri,\n} from \"./transports/advanced.js\";\n\n/**\n * Applies a transformation function to a value if the transformer is provided.\n *\n * @param value - The value to be transformed.\n * @param transformer - An optional transformation function.\n * @returns The transformed value if a transformer is provided, otherwise the original value.\n *\n * @example\n * ```typescript\n * const result = transform(5, (x) => x * 2); // Outputs 10\n * const resultWithoutTransformer = transform(5); // Outputs 5\n * ```\n */\nfunction transform(value: unknown, transformer?: (i: unknown) => unknown) {\n if (transformer) {\n return transformer(value);\n }\n return value;\n}\n\nexport type RequestorJsonRpcConfig = {\n fallbacks?: string[];\n timeout?: number;\n maxConcurrent?: number;\n transport?: Transport;\n};\n\nexport class RequestorJsonRpc {\n public readonly maxConcurrent?: number;\n private concurrent = 0;\n private readonly pending: (() => void)[] = [];\n\n public readonly transport: Transport;\n\n private id = 0;\n\n /**\n * Creates an instance of ClientJsonRpc.\n *\n * @param url_ - The URL of the JSON-RPC server.\n * @param timeout - The timeout for requests in milliseconds\n */\n constructor(\n private readonly url_: string,\n config?: RequestorJsonRpcConfig,\n private readonly onError?: (err: unknown) => Promise<void> | void,\n ) {\n this.maxConcurrent = config?.maxConcurrent;\n this.transport =\n config?.transport ??\n new TransportFallback(\n Array.from(\n new Set([url_, ...(config?.fallbacks ?? [])]).values(),\n (url) => transportFromUri(url, config),\n ),\n );\n }\n\n /**\n * Returns the URL of the JSON-RPC server.\n *\n * @returns The URL of the JSON-RPC server.\n */\n\n get url(): string {\n return this.url_;\n }\n\n /**\n * request a JSON-RPC method.\n *\n * @param rpcMethod - The JSON-RPC method.\n * @param params - Params for the method.\n * @param inTransformers - An array of input transformers.\n * @param outTransformer - An output transformer function.\n * @returns Method response.\n */\n async request(\n rpcMethod: string,\n params: unknown[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inTransformers?: (((_: any) => unknown) | undefined)[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n outTransformer?: (_: any) => unknown,\n ): Promise<unknown> {\n const payload = this.buildPayload(\n rpcMethod,\n inTransformers\n ? await Promise.all(\n params\n .concat(\n Array.from(\n new Array(Math.max(inTransformers.length - params.length, 0)),\n ),\n )\n .map((v, i) => transform(v, inTransformers[i])),\n )\n : params,\n );\n\n try {\n return await transform(\n await this.requestPayload(payload),\n outTransformer,\n );\n } catch (err: unknown) {\n if (!this.onError) {\n throw err;\n }\n await this.onError(err);\n }\n }\n\n async requestPayload(payload: JsonRpcPayload): Promise<unknown> {\n if (\n this.maxConcurrent !== undefined &&\n this.concurrent >= this.maxConcurrent\n ) {\n const pending = new Promise<void>((resolve) =>\n this.pending.push(resolve),\n );\n await pending;\n }\n\n this.concurrent += 1;\n const res = (await this.transport.request(payload)) as {\n id: number;\n error: unknown;\n result: unknown;\n };\n this.concurrent -= 1;\n this.pending.shift()?.();\n\n if (res.id !== payload.id) {\n throw new Error(`Id mismatched, got ${res.id}, expected ${payload.id}`);\n }\n if (res.error != null) {\n throw res.error as unknown;\n }\n return res.result;\n }\n\n /**\n * Builds a JSON-RPC payload for the given method and parameters.\n *\n * @param method - The JSON-RPC method name.\n * @param req - The parameters for the JSON-RPC method.\n * @returns The JSON-RPC payload.\n */\n\n buildPayload(method: string, req: unknown[]): JsonRpcPayload {\n return {\n id: this.id++,\n method,\n params: req,\n jsonrpc: \"2.0\",\n };\n }\n}\n","import {\n Cell,\n OutPoint,\n OutPointLike,\n TransactionLike,\n} from \"../../ckb/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport {\n RequestorJsonRpc,\n RequestorJsonRpcConfig,\n} from \"../../jsonRpc/requestor.js\";\nimport { Num, NumLike, numFrom, numToHex } from \"../../num/index.js\";\nimport { apply } from \"../../utils/index.js\";\nimport { ClientCache } from \"../cache/index.js\";\nimport { Client } from \"../client.js\";\nimport {\n ClientFindCellsResponse,\n ClientIndexerSearchKeyLike,\n ClientTransactionResponse,\n ErrorClientBase,\n ErrorClientBaseLike,\n ErrorClientDuplicatedTransaction,\n ErrorClientRBFRejected,\n ErrorClientResolveUnknown,\n ErrorClientVerification,\n OutputsValidator,\n} from \"../clientTypes.js\";\nimport {\n JsonRpcBlock,\n JsonRpcBlockHeader,\n JsonRpcCellOutput,\n JsonRpcTransformers,\n} from \"./advanced.js\";\n\nconst ERROR_PARSERS: [\n string,\n (error: ErrorClientBaseLike, match: RegExpMatchArray) => ErrorClientBase,\n][] = [\n [\n \"Resolve\\\\(Unknown\\\\(OutPoint\\\\((0x.*)\\\\)\\\\)\\\\)\",\n (error, match) =>\n new ErrorClientResolveUnknown(error, OutPoint.fromBytes(match[1])),\n ],\n [\n \"Verification\\\\(Error { kind: Script, inner: TransactionScriptError { source: (Inputs|Outputs)\\\\[([0-9]*)\\\\].(Lock|Type), cause: ValidationFailure: see error code (-?[0-9])* on page https://nervosnetwork\\\\.github\\\\.io/ckb-script-error-codes/by-(type|data)-hash/(.*)\\\\.html\",\n (error, match) =>\n new ErrorClientVerification(\n error,\n match[3] === \"Lock\"\n ? \"lock\"\n : match[1] === \"Inputs\"\n ? \"inputType\"\n : \"outputType\",\n match[2],\n Number(match[4]),\n match[5] === \"data\" ? \"data\" : \"type\",\n match[6],\n ),\n ],\n [\n \"Duplicated\\\\(Byte32\\\\((0x.*)\\\\)\\\\)\",\n (error, match) => new ErrorClientDuplicatedTransaction(error, match[1]),\n ],\n [\n 'RBFRejected\\\\(\"Tx\\'s current fee is ([0-9]*), expect it to >= ([0-9]*) to replace old txs\"\\\\)',\n (error, match) => new ErrorClientRBFRejected(error, match[1], match[2]),\n ],\n];\n\nexport type ClientJsonRpcConfig = RequestorJsonRpcConfig & {\n cache?: ClientCache;\n requestor?: RequestorJsonRpc;\n};\n\n/**\n * An abstract class implementing JSON-RPC client functionality for a specific URL and timeout.\n * Provides methods for sending transactions and building JSON-RPC payloads.\n */\nexport abstract class ClientJsonRpc extends Client {\n public readonly requestor: RequestorJsonRpc;\n\n /**\n * Creates an instance of ClientJsonRpc.\n *\n * @param url_ - The URL of the JSON-RPC server.\n * @param timeout - The timeout for requests in milliseconds\n */\n\n constructor(url_: string, config?: ClientJsonRpcConfig) {\n super(config);\n\n this.requestor =\n config?.requestor ??\n new RequestorJsonRpc(url_, config, (errAny) => {\n if (\n typeof errAny !== \"object\" ||\n errAny === null ||\n !(\"data\" in errAny) ||\n typeof errAny.data !== \"string\"\n ) {\n throw errAny;\n }\n const err = errAny as ErrorClientBaseLike;\n\n for (const [regexp, builder] of ERROR_PARSERS) {\n const match = err.data.match(regexp);\n if (match) {\n throw builder(err, match);\n }\n }\n\n throw new ErrorClientBase(err);\n });\n }\n\n /**\n * Returns the URL of the JSON-RPC server.\n *\n * @returns The URL of the JSON-RPC server.\n */\n get url(): string {\n return this.requestor.url;\n }\n\n /**\n * Get fee rate statistics\n *\n * @returns Fee rate statistics\n */\n\n getFeeRateStatistics = this.buildSender(\n \"get_fee_rate_statistics\",\n [(n: NumLike) => apply(numFrom, n)],\n ({ mean, median }: { mean: NumLike; median: NumLike }) => ({\n mean: numFrom(mean),\n median: numFrom(median),\n }),\n ) as Client[\"getFeeRateStatistics\"];\n\n /**\n * Get tip block number\n *\n * @returns Tip block number\n */\n\n getTip = this.buildSender(\n \"get_tip_block_number\",\n [],\n numFrom,\n ) as () => Promise<Num>;\n\n /**\n * Get tip block header\n *\n * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)\n * @returns BlockHeader\n */\n getTipHeader = this.buildSender(\n \"get_tip_header\",\n [],\n (b: JsonRpcBlockHeader) => apply(JsonRpcTransformers.blockHeaderTo, b),\n ) as Client[\"getTipHeader\"];\n\n /**\n * Get block by block number\n *\n * @param blockNumber - The block number.\n * @param verbosity - result format which allows 0 and 2. (Optional, the default is 2.)\n * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)\n * @returns Block\n */\n getBlockByNumberNoCache = this.buildSender(\n \"get_block_by_number\",\n [(v: NumLike) => numToHex(numFrom(v))],\n (b: JsonRpcBlock) => apply(JsonRpcTransformers.blockTo, b),\n ) as Client[\"getBlockByNumberNoCache\"];\n\n /**\n * Get block by block hash\n *\n * @param blockHash - The block hash.\n * @param verbosity - result format which allows 0 and 2. (Optional, the default is 2.)\n * @param withCycles - whether the return cycles of block transactions. (Optional, default false.)\n * @returns Block\n */\n getBlockByHashNoCache = this.buildSender(\n \"get_block\",\n [hexFrom],\n (b: JsonRpcBlock) => apply(JsonRpcTransformers.blockTo, b),\n ) as Client[\"getBlockByHashNoCache\"];\n\n /**\n * Get header by block number\n *\n * @param blockNumber - The block number.\n * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)\n * @returns BlockHeader\n */\n getHeaderByNumberNoCache = this.buildSender(\n \"get_header_by_number\",\n [(v: NumLike) => numToHex(numFrom(v))],\n (b: JsonRpcBlockHeader) => apply(JsonRpcTransformers.blockHeaderTo, b),\n ) as Client[\"getHeaderByNumberNoCache\"];\n\n /**\n * Get header by block hash\n *\n * @param blockHash - The block hash.\n * @param verbosity - result format which allows 0 and 1. (Optional, the default is 1.)\n * @returns BlockHeader\n */\n getHeaderByHashNoCache = this.buildSender(\n \"get_header\",\n [hexFrom],\n (b: JsonRpcBlockHeader) => apply(JsonRpcTransformers.blockHeaderTo, b),\n ) as Client[\"getHeaderByHashNoCache\"];\n\n /**\n * Estimate cycles of a transaction.\n *\n * @param transaction - The transaction to estimate.\n * @returns Consumed cycles\n */\n estimateCycles = this.buildSender(\n \"estimate_cycles\",\n [JsonRpcTransformers.transactionFrom],\n ({ cycles }: { cycles: NumLike }) => numFrom(cycles),\n ) as Client[\"estimateCycles\"];\n\n /**\n * Test a transaction.\n *\n * @param transaction - The transaction to test.\n * @param validator - \"passthrough\": Disable validation. \"well_known_scripts_only\": Only accept well known scripts in the transaction.\n * @returns Consumed cycles\n */\n\n sendTransactionDry = this.buildSender(\n \"test_tx_pool_accept\",\n [JsonRpcTransformers.transactionFrom],\n ({ cycles }: { cycles: NumLike }) => numFrom(cycles),\n ) as Client[\"sendTransactionDry\"];\n\n /**\n * Send a transaction to node.\n *\n * @param transaction - The transaction to send.\n * @param validator - \"passthrough\": Disable validation. \"well_known_scripts_only\": Only accept well known scripts in the transaction.\n * @returns Transaction hash.\n */\n\n sendTransactionNoCache = this.buildSender(\n \"send_transaction\",\n [\n JsonRpcTransformers.transactionFrom,\n (validator?: OutputsValidator | null) => validator ?? undefined,\n ],\n hexFrom,\n ) as (\n transaction: TransactionLike,\n validator?: OutputsValidator | null,\n ) => Promise<Hex>;\n\n /**\n * Get a transaction from node.\n *\n * @param txHash - The hash of the transaction.\n * @returns The transaction with status.\n */\n\n getTransactionNoCache = this.buildSender(\n \"get_transaction\",\n [hexFrom],\n JsonRpcTransformers.transactionResponseTo,\n ) as (txHash: HexLike) => Promise<ClientTransactionResponse | undefined>;\n\n /**\n * Get a live cell from node.\n *\n * @param outPoint - The out point of the cell.\n * @param withData - Include data in the response.\n * @param includeTxPool - Include cells in the tx pool.\n * @returns The cell\n */\n getCellLiveNoCache(\n outPoint: OutPointLike,\n withData?: boolean | null,\n includeTxPool?: boolean | null,\n ) {\n return this.buildSender(\n \"get_live_cell\",\n [JsonRpcTransformers.outPointFrom],\n ({\n cell,\n }: {\n cell?: {\n output: JsonRpcCellOutput;\n data?: { content: HexLike; hash: HexLike };\n };\n }) =>\n apply(\n ({\n output,\n data,\n }: {\n output: JsonRpcCellOutput;\n data?: { content: HexLike; hash: HexLike };\n }) =>\n Cell.from({\n cellOutput: JsonRpcTransformers.cellOutputTo(output),\n outputData: data?.content ?? \"0x\",\n outPoint,\n }),\n cell,\n ),\n )(outPoint, withData ?? true, includeTxPool) as Promise<Cell | undefined>;\n }\n\n /**\n * find cells from node.\n *\n * @param key - The search key of cells.\n * @param order - The order of cells.\n * @param limit - The max return size of cells.\n * @param after - Pagination parameter.\n * @returns The found cells.\n */\n\n findCellsPagedNoCache = this.buildSender(\n \"get_cells\",\n [\n JsonRpcTransformers.indexerSearchKeyFrom,\n (order?: \"asc\" | \"desc\") => order ?? \"asc\",\n (limit?: NumLike) => numToHex(limit ?? 10),\n ],\n JsonRpcTransformers.findCellsResponseTo,\n ) as (\n key: ClientIndexerSearchKeyLike,\n order?: \"asc\" | \"desc\",\n limit?: NumLike,\n after?: string,\n ) => Promise<ClientFindCellsResponse>;\n\n /**\n * find transactions from node.\n *\n * @param key - The search key of transactions.\n * @param order - The order of transactions.\n * @param limit - The max return size of transactions.\n * @param after - Pagination parameter.\n * @returns The found transactions.\n */\n\n findTransactionsPaged = this.buildSender(\n \"get_transactions\",\n [\n JsonRpcTransformers.indexerSearchKeyTransactionFrom,\n (order?: \"asc\" | \"desc\") => order ?? \"asc\",\n (limit?: NumLike) => numToHex(limit ?? 10),\n ],\n JsonRpcTransformers.findTransactionsResponseTo,\n ) as Client[\"findTransactionsPaged\"];\n\n /**\n * get cells capacity from node.\n *\n * @param key - The search key of cells.\n * @returns The sum of cells capacity.\n */\n\n getCellsCapacity = this.buildSender(\n \"get_cells_capacity\",\n [JsonRpcTransformers.indexerSearchKeyFrom],\n ({ capacity }: { capacity: NumLike }) => numFrom(capacity),\n ) as (key: ClientIndexerSearchKeyLike) => Promise<Num>;\n\n /**\n * Builds a sender function for a JSON-RPC method.\n *\n * @param rpcMethod - The JSON-RPC method.\n * @param inTransformers - An array of input transformers.\n * @param outTransformer - An output transformer function.\n * @returns A function that sends a JSON-RPC request with the given method and transformed parameters.\n */\n\n buildSender(\n rpcMethod: Parameters<RequestorJsonRpc[\"request\"]>[0],\n inTransformers?: Parameters<RequestorJsonRpc[\"request\"]>[2],\n outTransformer?: Parameters<RequestorJsonRpc[\"request\"]>[3],\n ): (...req: unknown[]) => Promise<unknown> {\n return async (...req: unknown[]) => {\n return this.requestor.request(\n rpcMethod,\n req,\n inTransformers,\n outTransformer,\n );\n };\n }\n}\n","import WebSocket from \"isomorphic-ws\";\nimport { MAINNET_SCRIPTS } from \"./clientPublicMainnet.advanced.js\";\nimport { ScriptInfo, ScriptInfoLike } from \"./clientTypes.js\";\nimport { ClientJsonRpc, ClientJsonRpcConfig } from \"./jsonRpc/index.js\";\nimport { KnownScript } from \"./knownScript.js\";\n\n/**\n * @public\n */\nexport class ClientPublicMainnet extends ClientJsonRpc {\n constructor(\n private readonly config?: ClientJsonRpcConfig & {\n url?: string;\n scripts?: Record<KnownScript, ScriptInfoLike | undefined>;\n },\n ) {\n const hasWebSocket = typeof WebSocket !== \"undefined\";\n super(\n config?.url ??\n (hasWebSocket\n ? \"wss://mainnet.ckb.dev/ws\"\n : \"https://mainnet.ckb.dev/\"),\n {\n ...config,\n fallbacks:\n config?.fallbacks ??\n (hasWebSocket\n ? [\n \"wss://mainnet.ckb.dev/ws\",\n \"https://mainnet.ckb.dev/\",\n \"https://mainnet.ckbapp.dev/\",\n ]\n : [\"https://mainnet.ckb.dev/\", \"https://mainnet.ckbapp.dev/\"]),\n },\n );\n }\n\n get scripts(): Record<KnownScript, ScriptInfoLike | undefined> {\n return this.config?.scripts ?? MAINNET_SCRIPTS;\n }\n\n get addressPrefix(): string {\n return \"ckb\";\n }\n\n async getKnownScript(script: KnownScript): Promise<ScriptInfo> {\n const found = this.scripts[script];\n if (!found) {\n throw new Error(\n `No script information was found for ${script} on ${this.addressPrefix}`,\n );\n }\n return ScriptInfo.from(found);\n }\n}\n","import WebSocket from \"isomorphic-ws\";\nimport { TESTNET_SCRIPTS } from \"./clientPublicTestnet.advanced.js\";\nimport { ScriptInfo, ScriptInfoLike } from \"./clientTypes.js\";\nimport { ClientJsonRpc, ClientJsonRpcConfig } from \"./jsonRpc/index.js\";\nimport { KnownScript } from \"./knownScript.js\";\n\n/**\n * @public\n */\nexport class ClientPublicTestnet extends ClientJsonRpc {\n constructor(\n private readonly config?: ClientJsonRpcConfig & {\n url?: string;\n scripts?: Record<KnownScript, ScriptInfoLike | undefined>;\n },\n ) {\n const hasWebSocket = typeof WebSocket !== \"undefined\";\n super(\n config?.url ??\n (hasWebSocket\n ? \"wss://testnet.ckb.dev/ws\"\n : \"https://testnet.ckb.dev/\"),\n {\n ...config,\n fallbacks:\n config?.fallbacks ??\n (hasWebSocket\n ? [\n \"wss://testnet.ckb.dev/ws\",\n \"https://testnet.ckb.dev/\",\n \"https://testnet.ckbapp.dev/\",\n ]\n : [\"https://testnet.ckb.dev/\", \"https://testnet.ckbapp.dev/\"]),\n },\n );\n }\n\n get scripts(): Record<KnownScript, ScriptInfoLike | undefined> {\n return this.config?.scripts ?? TESTNET_SCRIPTS;\n }\n\n get addressPrefix(): string {\n return \"ckt\";\n }\n\n async getKnownScript(script: KnownScript): Promise<ScriptInfo> {\n const found = this.scripts[script];\n if (!found) {\n throw new Error(\n `No script information was found for ${script} on ${this.addressPrefix}`,\n );\n }\n return ScriptInfo.from(found);\n }\n}\n","import { hashCkb } from \"../hasher/hasherCkb.js\";\nimport { Hex } from \"../hex/index.js\";\nimport { NumLike, numLeToBytes } from \"../num/index.js\";\nimport { CellInput, CellInputLike } from \"./transaction.js\";\n\n/**\n * Computes the Type ID hash of the given data.\n * @public\n *\n * @param cellInputLike - The first cell input of the transaction.\n * @param outputIndex - The output index of the Type ID cell.\n * @returns The hexadecimal string representation of the hash.\n *\n * @example\n * ```typescript\n * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like \"0x...\"\n * ```\n */\n\nexport function hashTypeId(\n cellInputLike: CellInputLike,\n outputIndex: NumLike,\n): Hex {\n return hashCkb(\n CellInput.from(cellInputLike).toBytes(),\n numLeToBytes(outputIndex, 8),\n );\n}\n","import { bech32m } from \"bech32\";\nimport { bytesConcat, bytesFrom } from \"../bytes/index.js\";\nimport { Script, ScriptLike, hashTypeToBytes } from \"../ckb/index.js\";\nimport { Client, KnownScript } from \"../client/index.js\";\nimport { HexLike } from \"../hex/index.js\";\nimport {\n ADDRESS_BECH32_LIMIT,\n AddressFormat,\n addressFromPayload,\n addressPayloadFromString,\n} from \"./address.advanced.js\";\n\n/**\n * @public\n */\nexport type AddressLike = {\n script: ScriptLike;\n prefix: string;\n};\n\n/**\n * Represents a ckb address with associated script and prefix.\n * @public\n */\nexport class Address {\n /**\n * Creates an instance of Address.\n *\n * @param script - The script associated with the address.\n * @param prefix - The address prefix.\n */\n constructor(\n public script: Script,\n public prefix: string,\n ) {}\n\n /**\n * Creates an Address instance from an AddressLike object.\n *\n * @param address - An AddressLike object or an instance of Address.\n * @returns An Address instance.\n */\n\n static from(address: AddressLike): Address {\n if (address instanceof Address) {\n return address;\n }\n\n return new Address(Script.from(address.script), address.prefix);\n }\n\n /**\n * Creates an Address instance from an address string.\n *\n * @param address - The address string to parse.\n * @param clients - A Client instance or a record of Client instances keyed by prefix.\n * @returns A promise that resolves to an Address instance.\n *\n * @throws Will throw an error if the address prefix is unknown or mismatched.\n */\n\n static async fromString(\n address: string,\n clients: Client | Record<string, Client>,\n ): Promise<Address> {\n const { prefix, format, payload } = addressPayloadFromString(address);\n\n const client = (clients as Record<string, Client>)[prefix] ?? clients;\n if (!client) {\n throw new Error(`Unknown address prefix ${prefix}`);\n }\n const expectedPrefix = client.addressPrefix;\n if (expectedPrefix !== prefix) {\n throw new Error(\n `Unknown address prefix ${prefix}, expected ${expectedPrefix}`,\n );\n }\n\n return Address.from(\n await addressFromPayload(prefix, format, payload, client),\n );\n }\n\n /**\n * Creates an Address instance from a script and client.\n *\n * @param script - The script-like object.\n * @param client - The client instance used to fetch the address prefix.\n * @returns A promise that resolves to an Address instance.\n */\n\n static fromScript(script: ScriptLike, client: Client): Address {\n return Address.from({ script, prefix: client.addressPrefix });\n }\n\n static async fromKnownScript(\n client: Client,\n script: KnownScript,\n args: HexLike,\n ): Promise<Address> {\n return Address.from({\n script: await Script.fromKnownScript(client, script, args),\n prefix: client.addressPrefix,\n });\n }\n\n /**\n * Converts the Address instance to a string.\n *\n * @returns The address as a string.\n */\n\n toString(): string {\n const data = bytesConcat(\n [AddressFormat.Full],\n bytesFrom(this.script.codeHash),\n hashTypeToBytes(this.script.hashType),\n bytesFrom(this.script.args),\n );\n\n return bech32m.encode(\n this.prefix,\n bech32m.toWords(data),\n ADDRESS_BECH32_LIMIT,\n );\n }\n}\n","import { ctr } from \"@noble/ciphers/aes.js\";\nimport { scryptAsync } from \"@noble/hashes/scrypt.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { Bytes, BytesLike, bytesConcat, bytesFrom } from \"../bytes/index.js\";\nimport { hexFrom } from \"../hex/index.js\";\n\n// The parameter r (\"blockSize\")\nconst DEFAULT_SCRYPT_PARAM_R = 8;\n// The parallelization parameter p\nconst DEFAULT_SCRYPT_PARAM_P = 1;\n// The CPU/Memory cost parameter N\nconst DEFAULT_SCRYPT_PARAM_N = 262144;\n\nfunction mac(derivedKey: Bytes, cipherText: Bytes) {\n return hexFrom(\n keccak_256(bytesConcat(derivedKey.slice(16, 32), cipherText)),\n ).slice(2);\n}\n\n/**\n * @public\n */\nexport async function keystoreEncrypt(\n privateKeyLike: BytesLike,\n chainCodeLike: BytesLike,\n password: string,\n): Promise<{\n id: string;\n crypto: {\n ciphertext: string;\n cipherparams: {\n iv: string;\n };\n cipher: string;\n kdf: string;\n kdfparams: {\n n: number;\n r: number;\n p: number;\n dklen: number;\n salt: string;\n };\n mac: string;\n };\n}> {\n const salt = randomBytes(32);\n const iv = randomBytes(16);\n const kdfparams = {\n dklen: 32,\n salt: hexFrom(salt).slice(2),\n n: DEFAULT_SCRYPT_PARAM_N,\n r: DEFAULT_SCRYPT_PARAM_R,\n p: DEFAULT_SCRYPT_PARAM_P,\n };\n const derivedKey = await scryptAsync(bytesFrom(password, \"utf8\"), salt, {\n N: kdfparams.n,\n r: kdfparams.r,\n p: kdfparams.p,\n dkLen: kdfparams.dklen,\n });\n const cipher = ctr(\n derivedKey.slice(0, 16),\n iv.map((v) => v),\n );\n const ciphertext = cipher.encrypt(\n bytesConcat(bytesFrom(privateKeyLike), bytesFrom(chainCodeLike)),\n );\n\n return {\n id: hexFrom(randomBytes(16)).slice(2),\n crypto: {\n ciphertext: hexFrom(ciphertext).slice(2),\n cipherparams: {\n iv: hexFrom(iv).slice(2),\n },\n cipher: \"aes-128-ctr\",\n kdf: \"scrypt\",\n kdfparams,\n mac: mac(derivedKey, ciphertext),\n },\n };\n}\n\n/**\n * @public\n */\nexport async function keystoreDecrypt(\n keystore: unknown,\n password: string,\n): Promise<{\n privateKey: Bytes;\n chainCode: Bytes;\n}> {\n if (\n typeof keystore !== \"object\" ||\n keystore === null ||\n !(\"crypto\" in keystore)\n ) {\n throw Error(\"Invalid keystore\");\n }\n const crypto = keystore.crypto;\n\n if (\n typeof crypto !== \"object\" ||\n crypto === null ||\n !(\"kdfparams\" in crypto) ||\n !(\"ciphertext\" in crypto) ||\n typeof crypto.ciphertext !== \"string\" ||\n !(\"mac\" in crypto) ||\n typeof crypto.mac !== \"string\" ||\n !(\"cipherparams\" in crypto) ||\n typeof crypto.cipherparams !== \"object\" ||\n crypto.cipherparams === null ||\n !(\"iv\" in crypto.cipherparams) ||\n typeof crypto.cipherparams.iv !== \"string\"\n ) {\n throw Error(\"Invalid crypto\");\n }\n const kdfparams = crypto.kdfparams;\n\n if (\n typeof kdfparams !== \"object\" ||\n kdfparams === null ||\n !(\"n\" in kdfparams) ||\n typeof kdfparams.n !== \"number\" ||\n !(\"r\" in kdfparams) ||\n typeof kdfparams.r !== \"number\" ||\n !(\"p\" in kdfparams) ||\n typeof kdfparams.p !== \"number\" ||\n !(\"dklen\" in kdfparams) ||\n typeof kdfparams.dklen !== \"number\" ||\n !(\"salt\" in kdfparams) ||\n typeof kdfparams.salt !== \"string\"\n ) {\n throw Error(\"Invalid kdfparams\");\n }\n\n const derivedKey = await scryptAsync(\n bytesFrom(password, \"utf8\"),\n bytesFrom(kdfparams.salt),\n {\n N: kdfparams.n,\n r: kdfparams.r,\n p: kdfparams.p,\n dkLen: kdfparams.dklen,\n },\n );\n const ciphertext = bytesFrom(crypto.ciphertext);\n if (mac(derivedKey, ciphertext) !== crypto.mac) {\n throw Error(\"Invalid password\");\n }\n const cipher = ctr(\n derivedKey.slice(0, 16),\n bytesFrom(crypto.cipherparams.iv),\n );\n const result = cipher.decrypt(ciphertext);\n return {\n privateKey: result.slice(0, 32),\n chainCode: result.slice(32),\n };\n}\n","import { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\n\n/**\n * Options for signing a PSBT (Partially Signed Bitcoin Transaction)\n */\nexport type SignPsbtOptionsLike = {\n /**\n * Whether to finalize the PSBT after signing.\n * Default is true.\n */\n autoFinalized?: boolean;\n /**\n * Array of inputs to sign\n */\n inputsToSign?: InputToSignLike[];\n};\n\nexport class SignPsbtOptions {\n constructor(\n public autoFinalized: boolean,\n public inputsToSign: InputToSign[],\n ) {}\n\n static from(options?: SignPsbtOptionsLike): SignPsbtOptions {\n if (options instanceof SignPsbtOptions) {\n return options;\n }\n return new SignPsbtOptions(\n options?.autoFinalized ?? true,\n options?.inputsToSign?.map((i) => InputToSign.from(i)) ?? [],\n );\n }\n}\n\n/**\n * Specification for an input to sign in a PSBT.\n * Must specify at least one of: address or pubkey.\n */\nexport type InputToSignLike = {\n /**\n * Which input to sign (index in the PSBT inputs array)\n */\n index: number;\n /**\n * (Optional) Sighash types to use for signing.\n */\n sighashTypes?: number[];\n /**\n * (Optional) When signing and unlocking Taproot addresses, the tweakSigner is used by default\n * for signature generation. Setting this to true allows for signing with the original private key.\n * Default value is false.\n */\n disableTweakSigner?: boolean;\n} & (\n | {\n /**\n * The address whose corresponding private key to use for signing.\n */\n address: string;\n /**\n * The public key whose corresponding private key to use for signing.\n */\n publicKey?: HexLike;\n }\n | {\n /**\n * The address whose corresponding private key to use for signing.\n */\n address?: string;\n /**\n * The public key whose corresponding private key to use for signing.\n */\n publicKey: HexLike;\n }\n);\n\nexport class InputToSign {\n constructor(\n public index: number,\n public sighashTypes?: number[],\n public disableTweakSigner?: boolean,\n public address?: string,\n public publicKey?: Hex,\n ) {}\n\n static from(input: InputToSignLike): InputToSign {\n if (input instanceof InputToSign) {\n return input;\n }\n return new InputToSign(\n input.index,\n input.sighashTypes,\n input.disableTweakSigner,\n input.address,\n input.publicKey ? hexFrom(input.publicKey) : undefined,\n );\n }\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { ripemd160 } from \"@noble/hashes/legacy.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport bs58check from \"bs58check\";\nimport { Bytes, bytesConcat, bytesFrom, BytesLike } from \"../../bytes/index.js\";\nimport { Hex, hexFrom } from \"../../hex/index.js\";\nimport { numFrom, numLeToBytes, NumLike } from \"../../num/index.js\";\n\n/**\n * Encodes a number into a variable-length byte array according to the Bitcoin protocol.\n * This format is used for encoding lengths of data, such as script lengths.\n *\n * @param len - The number to encode. Can be a NumLike.\n * @returns The encoded length as a Bytes.\n * @public\n */\nexport function btcVarLengthBytesFrom(len: NumLike): Bytes {\n const num = numFrom(len);\n\n return num < 0xfd\n ? numLeToBytes(num, 1)\n : num <= 0xffff\n ? bytesConcat([0xfd], numLeToBytes(num, 2))\n : num <= 0xffffffff\n ? bytesConcat([0xfe], numLeToBytes(num, 4))\n : bytesConcat([0xff], numLeToBytes(num, 8));\n}\n\n/**\n * Computes the message hash for Bitcoin ECDSA signatures.\n * This function follows the Bitcoin message signing standard, which involves\n * prefixing the message with a magic string and its length, then double SHA256 hashing the result.\n *\n * @param message - The message to be hashed. Can be a string or BytesLike.\n * @param messagePrefix - Optional. A custom prefix to use instead of the default \"\\u0018Bitcoin Signed Message:\\n\".\n * @returns The Bitcoin hash of the prefixed message as Bytes.\n * @public\n */\nexport function messageHashBtcEcdsa(\n message: string | BytesLike,\n messagePrefix?: string | BytesLike,\n): Bytes {\n const prefix = messagePrefix ?? \"\\u0018Bitcoin Signed Message:\\n\";\n const rawPrefix: Bytes =\n typeof prefix === \"string\" ? bytesFrom(prefix, \"utf8\") : bytesFrom(prefix);\n const rawMsg: Bytes =\n typeof message === \"string\"\n ? bytesFrom(message, \"utf8\")\n : bytesFrom(message);\n\n return sha256(\n sha256(\n bytesConcat(rawPrefix, btcVarLengthBytesFrom(rawMsg.length), rawMsg),\n ),\n );\n}\n\n/**\n * @public\n */\nexport function btcEcdsaPublicKeyHash(publicKey: BytesLike): Bytes {\n return ripemd160(sha256(bytesFrom(publicKey)));\n}\n\n/**\n * @public\n */\nexport function btcP2pkhAddressFromPublicKey(\n publicKey: BytesLike,\n network: number,\n): string {\n return bs58check.encode(\n bytesConcat([network], btcEcdsaPublicKeyHash(publicKey)),\n );\n}\n\n/**\n * @public\n */\nexport function btcPublicKeyFromP2pkhAddress(address: string): Hex {\n return hexFrom(bs58check.decode(address).slice(1));\n}\n\n/**\n * @public\n */\nexport function verifyMessageBtcEcdsa(\n message: string | BytesLike,\n signature: string,\n publicKey: string,\n): boolean {\n const challenge =\n typeof message === \"string\" ? message : hexFrom(message).slice(2);\n\n const rawSign = bytesFrom(signature, \"base64\").slice(1);\n\n return secp256k1.verify(\n bytesFrom(rawSign),\n messageHashBtcEcdsa(challenge),\n bytesFrom(publicKey),\n { prehash: false },\n );\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesConcat, bytesFrom, BytesLike } from \"../../bytes/index.js\";\nimport { hashCkb } from \"../../hasher/index.js\";\nimport { Hex, hexFrom } from \"../../hex/index.js\";\n\n/**\n * @public\n */\nexport function messageHashCkbSecp256k1(message: string | BytesLike): Hex {\n const msg = typeof message === \"string\" ? message : hexFrom(message);\n const buffer = bytesFrom(`Nervos Message:${msg}`, \"utf8\");\n return hashCkb(buffer);\n}\n\n/**\n * @public\n */\nexport function verifyMessageCkbSecp256k1(\n message: string | BytesLike,\n signature: string,\n publicKey: string,\n): boolean {\n const raw = bytesFrom(signature);\n\n return secp256k1.verify(\n bytesConcat(raw.slice(64), raw.slice(0, 64)),\n bytesFrom(messageHashCkbSecp256k1(message)),\n bytesFrom(publicKey),\n { format: \"recovered\", prehash: false },\n );\n}\n","import { verifySignature } from \"@joyid/ckb\";\nimport { BytesLike } from \"../../bytes/index.js\";\nimport { hexFrom } from \"../../hex/index.js\";\n\n/**\n * @public\n */\nexport function verifyMessageJoyId(\n message: string | BytesLike,\n signature: string,\n identity: string,\n): Promise<boolean> {\n const challenge =\n typeof message === \"string\" ? message : hexFrom(message).slice(2);\n const { publicKey, keyType } = JSON.parse(identity) as {\n publicKey: string;\n keyType: string;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return verifySignature({\n challenge,\n pubkey: publicKey,\n keyType,\n ...JSON.parse(signature),\n });\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { Bytes, bytesFrom, BytesLike } from \"../../bytes/index.js\";\nimport { hexFrom } from \"../../hex/index.js\";\nimport {\n btcEcdsaPublicKeyHash,\n btcPublicKeyFromP2pkhAddress,\n messageHashBtcEcdsa,\n} from \"../btc/verify.js\";\n\n/**\n * Computes the message hash for Dogecoin ECDSA signatures.\n * This function follows the Dogecoin message signing standard, which involves\n * prefixing the message with a magic string and its length, then double SHA256 hashing the result.\n *\n * @param message - The message to be hashed. Can be a string or BytesLike.\n * @param messagePrefix - Optional. A custom prefix to use instead of the default \"\\x19Dogecoin Signed Message:\\n\".\n * @returns The Dogecoin hash of the prefixed message as Bytes.\n * @public\n */\nexport function messageHashDogeEcdsa(\n message: string | BytesLike,\n messagePrefix?: string | BytesLike,\n): Bytes {\n return messageHashBtcEcdsa(\n message,\n messagePrefix ?? \"\\x19Dogecoin Signed Message:\\n\",\n );\n}\n\n/**\n * @public\n */\nexport function verifyMessageDogeEcdsa(\n message: string | BytesLike,\n signature: string,\n address: string,\n): boolean {\n const challenge =\n typeof message === \"string\" ? message : hexFrom(message).slice(2);\n const signatureBytes = bytesFrom(signature, \"base64\");\n signatureBytes[0] -= 31;\n\n return (\n btcPublicKeyFromP2pkhAddress(address) ===\n hexFrom(\n btcEcdsaPublicKeyHash(\n secp256k1.recoverPublicKey(\n signatureBytes,\n messageHashDogeEcdsa(challenge),\n { prehash: false },\n ),\n ),\n )\n );\n}\n","import { verifyMessage } from \"ethers\";\nimport { BytesLike, bytesFrom } from \"../../bytes/index.js\";\n\n/**\n * @public\n */\nexport function verifyMessageEvmPersonal(\n message: string | BytesLike,\n signature: string,\n address: string,\n): boolean {\n return (\n address.toLowerCase() ===\n verifyMessage(\n typeof message === \"string\" ? message : bytesFrom(message),\n signature,\n ).toLowerCase()\n );\n}\n","import { schnorr } from \"@noble/curves/secp256k1.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bech32 } from \"bech32\";\nimport { Bytes, BytesLike, bytesFrom } from \"../../bytes/index.js\";\nimport { hexFrom } from \"../../hex/index.js\";\nimport { NostrEvent } from \"./signerNostr.js\";\n\n/**\n * @public\n */\nexport function buildNostrEventFromMessage(\n message: string | BytesLike,\n): NostrEvent {\n if (typeof message === \"string\") {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const event = JSON.parse(message);\n if (\n typeof event === \"object\" &&\n typeof event.created_at === \"number\" &&\n typeof event.kind === \"number\" &&\n typeof event.content === \"string\" &&\n Array.isArray(event.tags) &&\n (event.tags as unknown[]).every(\n (tag) =>\n Array.isArray(tag) &&\n (tag as unknown[]).every((v) => typeof v === \"string\"),\n )\n ) {\n return event as NostrEvent;\n }\n } catch (_) {}\n }\n\n return {\n kind: 23335,\n created_at: 0,\n content: typeof message === \"string\" ? message : hexFrom(message),\n tags: [],\n };\n}\n\nexport function nostrEventHash(event: NostrEvent): Bytes {\n const serialized = JSON.stringify([\n 0,\n event.pubkey,\n event.created_at,\n event.kind,\n event.tags,\n event.content,\n ]);\n\n return sha256(bytesFrom(serialized, \"utf8\"));\n}\n\nexport function verifyMessageNostrEvent(\n message: string | BytesLike,\n signature: string,\n address: string,\n): boolean {\n const { words } = bech32.decode(address);\n const pubkey = hexFrom(bech32.fromWords(words)).slice(2);\n\n const event = buildNostrEventFromMessage(message);\n const eventHash = nostrEventHash({ ...event, pubkey });\n\n try {\n return schnorr.verify(bytesFrom(signature), eventHash, bytesFrom(pubkey));\n } catch (_) {\n return false;\n }\n}\n","import { Address } from \"../../address/index.js\";\nimport { ClientCollectableSearchKeyFilterLike } from \"../../advancedBarrel.js\";\nimport { BytesLike } from \"../../bytes/index.js\";\nimport { Cell, Transaction, TransactionLike } from \"../../ckb/index.js\";\nimport {\n Client,\n ClientFindTransactionsGroupedResponse,\n ClientFindTransactionsResponse,\n ClientIndexerSearchKeyFilterLike,\n} from \"../../client/index.js\";\nimport { Hex } from \"../../hex/index.js\";\nimport { Num } from \"../../num/index.js\";\nimport { verifyMessageBtcEcdsa } from \"../btc/verify.js\";\nimport { verifyMessageCkbSecp256k1 } from \"../ckb/verifyCkbSecp256k1.js\";\nimport { verifyMessageJoyId } from \"../ckb/verifyJoyId.js\";\nimport { verifyMessageDogeEcdsa } from \"../doge/verify.js\";\nimport { verifyMessageEvmPersonal } from \"../evm/verify.js\";\nimport { verifyMessageNostrEvent } from \"../nostr/verify.js\";\n\n/**\n * @public\n */\nexport enum SignerSignType {\n Unknown = \"Unknown\",\n BtcEcdsa = \"BtcEcdsa\",\n EvmPersonal = \"EvmPersonal\",\n JoyId = \"JoyId\",\n NostrEvent = \"NostrEvent\",\n CkbSecp256k1 = \"CkbSecp256k1\",\n DogeEcdsa = \"DogeEcdsa\",\n}\n\n/**\n * An enumeration of signer display types in wallet.\n * @public\n */\nexport enum SignerType {\n EVM = \"EVM\",\n BTC = \"BTC\",\n CKB = \"CKB\",\n Nostr = \"Nostr\",\n Doge = \"Doge\",\n}\n\n/**\n * @public\n */\nexport type NetworkPreference = {\n addressPrefix: string;\n signerType: SignerType;\n /**\n * Wallet signers should check if the wallet is using preferred networks.\n * If not, try to switch to the first preferred network.\n * If non preferred, let users choose what they want.\n * BTC: // They made a mess...\n * btc\n * btcTestnet\n * btcTestnet4 // UTXO Global\n * btcSignet // OKX & UTXO Global\n * fractalBtc // UniSat\n */\n network: string;\n};\n\n/**\n * @public\n */\nexport class Signature {\n constructor(\n public signature: string,\n public identity: string,\n public signType: SignerSignType,\n ) {}\n}\n\n/**\n * An abstract class representing a generic signer.\n * This class provides methods to connect, get addresses, and sign transactions.\n * @public\n */\nexport abstract class Signer {\n constructor(protected client_: Client) {}\n\n abstract get type(): SignerType;\n abstract get signType(): SignerSignType;\n\n get client(): Client {\n return this.client_;\n }\n\n // Returns the preference if we need to switch network\n // undefined otherwise\n matchNetworkPreference(\n preferences: NetworkPreference[],\n currentNetwork: string | undefined,\n ): NetworkPreference | undefined {\n if (\n currentNetwork !== undefined &&\n preferences.some(\n ({ signerType, addressPrefix, network }) =>\n signerType === this.type &&\n addressPrefix === this.client.addressPrefix &&\n network === currentNetwork,\n )\n ) {\n return;\n }\n return preferences.find(\n ({ signerType, addressPrefix }) =>\n signerType === this.type && addressPrefix === this.client.addressPrefix,\n );\n }\n\n static async verifyMessage(\n message: string | BytesLike,\n signature: Signature,\n ): Promise<boolean> {\n switch (signature.signType) {\n case SignerSignType.EvmPersonal:\n return verifyMessageEvmPersonal(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.BtcEcdsa:\n return verifyMessageBtcEcdsa(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.JoyId:\n return verifyMessageJoyId(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.NostrEvent:\n return verifyMessageNostrEvent(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.CkbSecp256k1:\n return verifyMessageCkbSecp256k1(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.DogeEcdsa:\n return verifyMessageDogeEcdsa(\n message,\n signature.signature,\n signature.identity,\n );\n case SignerSignType.Unknown:\n throw new Error(\"Unknown signer sign type\");\n }\n }\n\n /**\n * Connects to the signer.\n *\n * @returns A promise that resolves when the connection is complete.\n */\n abstract connect(): Promise<void>;\n\n /**\n * Register a listener to be called when this signer is replaced.\n *\n * @returns A function for unregister\n */\n onReplaced(_: () => void): () => void {\n return () => {};\n }\n\n /**\n * Disconnects to the signer.\n *\n * @returns A promise that resolves when the signer is disconnected.\n */\n async disconnect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n abstract isConnected(): Promise<boolean>;\n\n /**\n * Gets the internal address associated with the signer.\n *\n * @returns A promise that resolves to a string representing the internal address.\n */\n abstract getInternalAddress(): Promise<string>;\n\n /**\n * Gets the identity for verifying signature, usually it's address\n *\n * @returns A promise that resolves to a string representing the identity\n */\n async getIdentity(): Promise<string> {\n return this.getInternalAddress();\n }\n\n /**\n * Gets an array of Address objects associated with the signer.\n *\n * @returns A promise that resolves to an array of Address objects.\n */\n abstract getAddressObjs(): Promise<Address[]>;\n\n /**\n * Gets the recommended Address object for the signer.\n *\n * @param _preference - Optional preference parameter.\n * @returns A promise that resolves to the recommended Address object.\n */\n async getRecommendedAddressObj(_preference?: unknown): Promise<Address> {\n return (await this.getAddressObjs())[0];\n }\n\n /**\n * Gets the recommended address for the signer as a string.\n *\n * @param preference - Optional preference parameter.\n * @returns A promise that resolves to the recommended address as a string.\n */\n async getRecommendedAddress(preference?: unknown): Promise<string> {\n return (await this.getRecommendedAddressObj(preference)).toString();\n }\n\n /**\n * Gets an array of addresses associated with the signer as strings.\n *\n * @returns A promise that resolves to an array of addresses as strings.\n */\n async getAddresses(): Promise<string[]> {\n return this.getAddressObjs().then((addresses) =>\n addresses.map((address) => address.toString()),\n );\n }\n\n /**\n * Find cells of this signer\n *\n * @param filter - The filter for the search key.\n * @param withData - Whether to include cell data in the response.\n * @param order - The order of the returned cells, can be \"asc\" or \"desc\".\n * @param limit - The maximum number of cells for every querying chunk.\n * @returns A async generator that yields all matching cells\n */\n async *findCellsOnChain(\n filter: ClientIndexerSearchKeyFilterLike,\n withData?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<Cell> {\n const scripts = await this.getAddressObjs();\n for (const { script } of scripts) {\n for await (const cell of this.client.findCellsOnChain(\n {\n script,\n scriptType: \"lock\",\n filter,\n scriptSearchMode: \"exact\",\n withData,\n },\n order,\n limit,\n )) {\n yield cell;\n }\n }\n }\n\n /**\n * Find cells of this signer\n *\n * @returns A async generator that yields all matches cells\n */\n async *findCells(\n filter: ClientCollectableSearchKeyFilterLike,\n withData?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<Cell> {\n const scripts = await this.getAddressObjs();\n for (const { script } of scripts) {\n for await (const cell of this.client.findCells(\n {\n script,\n scriptType: \"lock\",\n filter,\n scriptSearchMode: \"exact\",\n withData,\n },\n order,\n limit,\n )) {\n yield cell;\n }\n }\n }\n\n /**\n * Find transactions of this signer\n *\n * @returns A async generator that yields all matches transactions\n */\n findTransactions(\n filter: ClientCollectableSearchKeyFilterLike,\n groupByTransaction?: false | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsResponse[\"transactions\"][0]>;\n /**\n * Find transactions of this signer\n *\n * @returns A async generator that yields all matches transactions\n */\n findTransactions(\n filter: ClientCollectableSearchKeyFilterLike,\n groupByTransaction: true,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<ClientFindTransactionsGroupedResponse[\"transactions\"][0]>;\n /**\n * Find transactions of this signer\n *\n * @returns A async generator that yields all matches transactions\n */\n findTransactions(\n filter: ClientCollectableSearchKeyFilterLike,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n >;\n /**\n * Find transactions of this signer\n *\n * @returns A async generator that yields all matches transactions\n */\n async *findTransactions(\n filter: ClientCollectableSearchKeyFilterLike,\n groupByTransaction?: boolean | null,\n order?: \"asc\" | \"desc\",\n limit?: number,\n ): AsyncGenerator<\n | ClientFindTransactionsResponse[\"transactions\"][0]\n | ClientFindTransactionsGroupedResponse[\"transactions\"][0]\n > {\n const scripts = await this.getAddressObjs();\n for (const { script } of scripts) {\n for await (const transaction of this.client.findTransactions(\n {\n script,\n scriptType: \"lock\",\n filter,\n scriptSearchMode: \"exact\",\n groupByTransaction,\n },\n order,\n limit,\n )) {\n yield transaction;\n }\n }\n }\n\n /**\n * Gets balance of all addresses\n *\n * @returns A promise that resolves to the balance\n */\n async getBalance(): Promise<Num> {\n return this.client.getBalance(\n (await this.getAddressObjs()).map(({ script }) => script),\n );\n }\n\n /**\n * Signs a message.\n *\n * @param message - The message to sign, as a string or BytesLike object.\n * @returns A promise that resolves to the signature info.\n * @throws Will throw an error if not implemented.\n */\n async signMessage(message: string | BytesLike): Promise<Signature> {\n return {\n signature: await this.signMessageRaw(message),\n identity: await this.getIdentity(),\n signType: this.signType,\n };\n }\n\n /**\n * Signs a message and returns signature only. This method is not implemented and should be overridden by subclasses.\n *\n * @param _ - The message to sign, as a string or BytesLike object.\n * @returns A promise that resolves to the signature as a string.\n * @throws Will throw an error if not implemented.\n */\n signMessageRaw(_: string | BytesLike): Promise<string> {\n throw Error(\"Signer.signMessageRaw not implemented\");\n }\n\n /**\n * Verify a signature.\n *\n * @param message - The original message.\n * @param signature - The signature to verify.\n * @returns A promise that resolves to the verification result.\n * @throws Will throw an error if not implemented.\n */\n async verifyMessage(\n message: string | BytesLike,\n signature: string | Signature,\n ): Promise<boolean> {\n if (typeof signature === \"string\") {\n return Signer.verifyMessage(message, {\n signType: this.signType,\n signature,\n identity: await this.getIdentity(),\n });\n }\n\n if (\n signature.identity !== (await this.getIdentity()) ||\n ![SignerSignType.Unknown, this.signType].includes(signature.signType)\n ) {\n return false;\n }\n\n return Signer.verifyMessage(message, signature);\n }\n\n /**\n * Sends a transaction after signing it.\n *\n * @param tx - The transaction to send, represented as a TransactionLike object.\n * @returns A promise that resolves to the transaction hash as a Hex string.\n */\n async sendTransaction(tx: TransactionLike): Promise<Hex> {\n return this.client.sendTransaction(await this.signTransaction(tx));\n }\n\n /**\n * Signs a transaction.\n *\n * @param tx - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to the signed Transaction object.\n */\n async signTransaction(tx: TransactionLike): Promise<Transaction> {\n const preparedTx = await this.prepareTransaction(tx);\n return this.signOnlyTransaction(preparedTx);\n }\n\n /**\n * Prepares a transaction before signing.\n * This method can be overridden by subclasses to perform any necessary steps,\n * such as adding cell dependencies or witnesses, before the transaction is signed.\n * The default implementation converts the {@link TransactionLike} object to a {@link Transaction} object\n * without modification.\n *\n * @remarks\n * Note that this default implementation does not add any cell dependencies or dummy witnesses.\n * This may lead to an underestimation of transaction size and fees if used with methods\n * like `Transaction.completeFee`. Subclasses for signers that are intended to sign\n * transactions should override this method to perform necessary preparations.\n *\n * @param tx - The transaction to prepare.\n * @returns A promise that resolves to the prepared {@link Transaction} object.\n */\n async prepareTransaction(tx: TransactionLike): Promise<Transaction> {\n return Transaction.from(tx);\n }\n\n /**\n * Signs a transaction without preparing information for it. This method is not implemented and should be overridden by subclasses.\n *\n * @param _ - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to the signed Transaction object.\n * @throws Will throw an error if not implemented.\n */\n signOnlyTransaction(_: TransactionLike): Promise<Transaction> {\n throw Error(\"Signer.signOnlyTransaction not implemented\");\n }\n}\n\n/**\n * A class representing information about a signer, including its type and the signer instance.\n * @public\n */\nexport class SignerInfo {\n constructor(\n public name: string,\n public signer: Signer,\n ) {}\n}\n\n/**\n * Represents a wallet with a name, icon, and an array of signer information.\n * @public\n */\nexport type Wallet = {\n name: string;\n icon: string;\n};\n","import { Address } from \"../../address/index.js\";\nimport { bytesConcat, bytesFrom } from \"../../bytes/index.js\";\nimport { Transaction, TransactionLike, WitnessArgs } from \"../../ckb/index.js\";\nimport { KnownScript } from \"../../client/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport { numToBytes } from \"../../num/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\nimport { SignPsbtOptionsLike } from \"./psbt.js\";\nimport { btcEcdsaPublicKeyHash } from \"./verify.js\";\n\n/**\n * An abstract class extending the Signer class for Bitcoin-like signing operations.\n * This class provides methods to get Bitcoin account, public key, and internal address,\n * as well as signing transactions.\n * @public\n */\nexport abstract class SignerBtc extends Signer {\n get type(): SignerType {\n return SignerType.BTC;\n }\n\n get signType(): SignerSignType {\n return SignerSignType.BtcEcdsa;\n }\n\n /**\n * Sign and broadcast a PSBT.\n *\n * @param psbtHex - The hex string of PSBT to sign and broadcast.\n * @param options - Options for signing the PSBT.\n * @returns A promise that resolves to the transaction ID as a Hex string.\n */\n async signAndBroadcastPsbt(\n psbtHex: HexLike,\n options?: SignPsbtOptionsLike,\n ): Promise<Hex> {\n const signedPsbt = await this.signPsbt(psbtHex, options);\n return this.broadcastPsbt(signedPsbt, options);\n }\n\n /**\n * Gets the Bitcoin account associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Bitcoin account.\n */\n abstract getBtcAccount(): Promise<string>;\n\n /**\n * Gets the Bitcoin public key associated with the signer.\n *\n * @returns A promise that resolves to a HexLike value representing the Bitcoin public key.\n */\n abstract getBtcPublicKey(): Promise<HexLike>;\n\n /**\n * Gets the internal address, which is the Bitcoin account in this case.\n *\n * @returns A promise that resolves to a string representing the internal address.\n */\n async getInternalAddress(): Promise<string> {\n return this.getBtcAccount();\n }\n\n /**\n * Gets the identity, which is the Bitcoin public key in this case.\n *\n * @returns A promise that resolves to a string representing the identity\n */\n async getIdentity(): Promise<string> {\n return hexFrom(await this.getBtcPublicKey()).slice(2);\n }\n\n /**\n * Gets an array of Address objects representing the known script addresses for the signer.\n *\n * @returns A promise that resolves to an array of Address objects.\n */\n async getAddressObjs(): Promise<Address[]> {\n const publicKey = await this.getBtcPublicKey();\n const hash = btcEcdsaPublicKeyHash(publicKey);\n\n return [\n await Address.fromKnownScript(\n this.client,\n KnownScript.OmniLock,\n hexFrom([0x04, ...hash, 0x00]),\n ),\n ];\n }\n\n /**\n * prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.\n *\n * @param txLike - The transaction to prepare, represented as a TransactionLike object.\n * @returns A promise that resolves to the prepared Transaction object.\n */\n async prepareTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);\n await tx.prepareSighashAllWitness(script, 85, this.client);\n return tx;\n }\n\n /**\n * Signs a transaction without modifying it.\n *\n * @param txLike - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to a signed Transaction object.\n */\n async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n const info = await tx.getSignHashInfo(script, this.client);\n if (!info) {\n return tx;\n }\n\n const signature = bytesFrom(\n await this.signMessageRaw(\n `CKB (Bitcoin Layer) transaction: ${info.message}`,\n ),\n \"base64\",\n );\n signature[0] = 31 + ((signature[0] - 27) % 4);\n\n const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);\n witness.lock = hexFrom(\n bytesConcat(\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(4 * 4, 4),\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(signature.length, 4),\n signature,\n ),\n );\n\n tx.setWitnessArgsAt(info.position, witness);\n return tx;\n }\n\n /**\n * Signs a Partially Signed Bitcoin Transaction (PSBT).\n *\n * @param psbtHex - The hex string of PSBT to sign.\n * @param options - Options for signing the PSBT\n * @returns A promise that resolves to the signed PSBT as a Hex string.\n */\n abstract signPsbt(\n psbtHex: HexLike,\n options?: SignPsbtOptionsLike,\n ): Promise<Hex>;\n\n /**\n * Broadcasts a PSBT to the Bitcoin network.\n *\n * @param psbtHex - The hex string of the PSBT to broadcast.\n * @param options - Options for broadcasting the PSBT.\n * @returns A promise that resolves to the transaction ID as a Hex string.\n */\n abstract broadcastPsbt(\n psbtHex: HexLike,\n options?: SignPsbtOptionsLike,\n ): Promise<Hex>;\n}\n","import { Client } from \"../../client/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport { SignPsbtOptionsLike } from \"./psbt.js\";\nimport { SignerBtc } from \"./signerBtc.js\";\n\n/**\n * A class extending SignerBtc that provides read-only access to a Bitcoin public key and account.\n * This class does not support signing operations.\n * @public\n */\nexport class SignerBtcPublicKeyReadonly extends SignerBtc {\n private readonly publicKey: Hex;\n\n /**\n * Creates an instance of SignerBtcPublicKeyReadonly.\n *\n * @param client - The client instance used for communication.\n * @param account - The Bitcoin account associated with the signer.\n * @param publicKey - The public key associated with the signer.\n */\n constructor(\n client: Client,\n private readonly account: string,\n publicKey: HexLike,\n ) {\n super(client);\n\n this.publicKey = hexFrom(publicKey);\n }\n\n /**\n * Connects to the client. This implementation does nothing as the class is read-only.\n *\n * @returns A promise that resolves when the connection is complete.\n */\n async connect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n /**\n * Gets the Bitcoin account associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Bitcoin account.\n *\n * @example\n * ```typescript\n * const account = await signer.getBtcAccount(); // Outputs the Bitcoin account\n * ```\n */\n async getBtcAccount(): Promise<string> {\n return this.account;\n }\n\n /**\n * Gets the Bitcoin public key associated with the signer.\n *\n * @returns A promise that resolves to a Hex string representing the Bitcoin public key.\n *\n * @example\n * ```typescript\n * const publicKey = await signer.getBtcPublicKey(); // Outputs the Bitcoin public key\n * ```\n */\n async getBtcPublicKey(): Promise<Hex> {\n return this.publicKey;\n }\n\n async signPsbt(\n _psbtHex: HexLike,\n _options?: SignPsbtOptionsLike,\n ): Promise<Hex> {\n throw new Error(\"Read-only signer does not support signPsbt\");\n }\n\n async broadcastPsbt(\n _psbtHex: HexLike,\n _options?: SignPsbtOptionsLike,\n ): Promise<Hex> {\n throw new Error(\"Read-only signer does not support broadcastPsbt\");\n }\n}\n","import { Address } from \"../../address/index.js\";\nimport { bytesFrom } from \"../../bytes/index.js\";\nimport { Script, Transaction, TransactionLike } from \"../../ckb/index.js\";\nimport { CellDepInfo, Client, KnownScript } from \"../../client/index.js\";\nimport { hashCkb } from \"../../hasher/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\n\n/**\n * @public\n */\nexport class SignerCkbPublicKey extends Signer {\n get type(): SignerType {\n return SignerType.CKB;\n }\n\n get signType(): SignerSignType {\n return SignerSignType.CkbSecp256k1;\n }\n\n public readonly publicKey: Hex;\n\n constructor(client: Client, publicKey: HexLike) {\n super(client);\n this.publicKey = hexFrom(publicKey);\n\n if (bytesFrom(this.publicKey).length !== 33) {\n throw new Error(\"Public key must be 33 bytes!\");\n }\n }\n\n async connect(): Promise<void> {}\n\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n async getInternalAddress(): Promise<string> {\n return this.getRecommendedAddress();\n }\n\n async getIdentity(): Promise<string> {\n return this.publicKey;\n }\n\n async getAddressObjSecp256k1(): Promise<Address> {\n return Address.fromKnownScript(\n this.client,\n KnownScript.Secp256k1Blake160,\n bytesFrom(hashCkb(this.publicKey)).slice(0, 20),\n );\n }\n\n async getRecommendedAddressObj(_preference?: unknown): Promise<Address> {\n return this.getAddressObjSecp256k1();\n }\n\n async getAddressObjs(): Promise<Address[]> {\n const secp256k1 = await this.getAddressObjSecp256k1();\n\n const addresses: Address[] = [];\n let count = 0;\n for await (const cell of this.client.findCells({\n script: await Script.fromKnownScript(\n this.client,\n KnownScript.AnyoneCanPay,\n secp256k1.script.args,\n ),\n scriptType: \"lock\",\n scriptSearchMode: \"prefix\",\n withData: false,\n })) {\n if (count >= 10) {\n break;\n }\n count += 1;\n\n if (addresses.some(({ script }) => script.eq(cell.cellOutput.lock))) {\n continue;\n }\n\n addresses.push(\n Address.from({\n prefix: this.client.addressPrefix,\n script: cell.cellOutput.lock,\n }),\n );\n }\n\n return [secp256k1, ...addresses];\n }\n\n async getRelatedScripts(\n txLike: TransactionLike,\n ): Promise<{ script: Script; cellDeps: CellDepInfo[] }[]> {\n const tx = Transaction.from(txLike);\n\n const secp256k1 = await this.getAddressObjSecp256k1();\n const acp = await Script.fromKnownScript(\n this.client,\n KnownScript.AnyoneCanPay,\n secp256k1.script.args,\n );\n\n const scripts: { script: Script; cellDeps: CellDepInfo[] }[] = [];\n for (const input of tx.inputs) {\n const {\n cellOutput: { lock },\n } = await input.getCell(this.client);\n\n if (scripts.some(({ script }) => script.eq(lock))) {\n continue;\n }\n\n if (lock.eq(secp256k1.script)) {\n scripts.push({\n script: lock,\n cellDeps: (\n await this.client.getKnownScript(KnownScript.Secp256k1Blake160)\n ).cellDeps,\n });\n } else if (\n lock.codeHash === acp.codeHash &&\n lock.hashType === acp.hashType &&\n lock.args.startsWith(acp.args)\n ) {\n scripts.push({\n script: lock,\n cellDeps: (await this.client.getKnownScript(KnownScript.AnyoneCanPay))\n .cellDeps,\n });\n }\n }\n\n return scripts;\n }\n\n async prepareTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n\n await Promise.all(\n (await this.getRelatedScripts(tx)).map(async ({ script, cellDeps }) => {\n await tx.prepareSighashAllWitness(script, 65, this.client);\n await tx.addCellDepInfos(this.client, cellDeps);\n }),\n );\n return tx;\n }\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesConcat, bytesFrom, BytesLike } from \"../../bytes/index.js\";\nimport { Transaction, TransactionLike, WitnessArgs } from \"../../ckb/index.js\";\nimport { Client } from \"../../client/index.js\";\nimport { Hex, hexFrom, HexLike } from \"../../hex/index.js\";\nimport { SignerCkbPublicKey } from \"./signerCkbPublicKey.js\";\nimport { messageHashCkbSecp256k1 } from \"./verifyCkbSecp256k1.js\";\n\n/**\n * @public\n */\nexport class SignerCkbPrivateKey extends SignerCkbPublicKey {\n public readonly privateKey: Hex;\n\n constructor(client: Client, privateKey: HexLike) {\n const pk = hexFrom(privateKey);\n if (bytesFrom(pk).length !== 32) {\n throw new Error(\"Private key must be 32 bytes!\");\n }\n\n super(client, secp256k1.getPublicKey(bytesFrom(pk), true));\n this.privateKey = pk;\n }\n\n async _signMessage(message: HexLike): Promise<Hex> {\n const signature = secp256k1.sign(\n bytesFrom(message),\n bytesFrom(this.privateKey),\n {\n format: \"recovered\",\n prehash: false,\n },\n );\n return hexFrom(bytesConcat(signature.slice(1), signature.slice(0, 1)));\n }\n\n async signMessageRaw(message: string | BytesLike): Promise<Hex> {\n return this._signMessage(messageHashCkbSecp256k1(message));\n }\n\n async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n\n for (const { script } of await this.getRelatedScripts(tx)) {\n const info = await tx.getSignHashInfo(script, this.client);\n if (!info) {\n return tx;\n }\n\n const signature = await this._signMessage(info.message);\n\n const witness =\n tx.getWitnessArgsAt(info.position) ?? WitnessArgs.from({});\n witness.lock = signature;\n tx.setWitnessArgsAt(info.position, witness);\n }\n\n return tx;\n }\n}\n","import { Address } from \"../../address/index.js\";\nimport { Script, ScriptLike } from \"../../ckb/index.js\";\nimport { Client } from \"../../client/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\n\n/**\n * A read-only signer for a CKB script. It can be used to get addresses,\n * but not to sign transactions. This is useful when you want to watch an address\n * without having the private key.\n *\n * @public\n */\nexport class SignerCkbScriptReadonly extends Signer {\n /**\n * The type of the signer.\n */\n get type(): SignerType {\n return SignerType.CKB;\n }\n\n /**\n * The sign type of the signer.\n * As this is a read-only signer, the sign type is {@link SignerSignType.Unknown}.\n */\n get signType(): SignerSignType {\n return SignerSignType.Unknown;\n }\n\n /**\n * The scripts associated with the signer.\n */\n public readonly scripts: Script[];\n\n /**\n * Creates an instance of SignerCkbScriptReadonly.\n *\n * @param client - The client instance used for communication.\n * @param scripts - The scripts associated with the signer. Can be a single script, an array of scripts, or multiple script arguments.\n */\n constructor(client: Client, ...scripts: (ScriptLike | ScriptLike[])[]) {\n super(client);\n\n this.scripts = scripts.flat().map(Script.from);\n if (this.scripts.length === 0) {\n throw new Error(\"SignerCkbScriptReadonly requires at least one script.\");\n }\n }\n\n /**\n * Connects to the client. This implementation does nothing as the class is read-only.\n *\n * @returns A promise that resolves when the connection is complete.\n */\n async connect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n /**\n * Gets the internal address for the script.\n *\n * @returns A promise that resolves to a string representing the internal address.\n *\n * @example\n * ```typescript\n * const internalAddress = await signer.getInternalAddress(); // Outputs the internal address\n * ```\n */\n async getInternalAddress(): Promise<string> {\n return this.getRecommendedAddress();\n }\n\n /**\n * Gets an array of Address objects representing the script address.\n *\n * @returns A promise that resolves to an array of Address objects.\n *\n * @example\n * ```typescript\n * const addressObjs = await signer.getAddressObjs(); // Outputs the array of Address objects\n * ```\n */\n async getAddressObjs(): Promise<Address[]> {\n return this.scripts.map((script) =>\n Address.fromScript(script, this.client),\n );\n }\n}\n","import bs58check from \"bs58check\";\nimport { Address } from \"../../address/index.js\";\nimport { bytesConcat, bytesFrom } from \"../../bytes/index.js\";\nimport { Transaction, TransactionLike, WitnessArgs } from \"../../ckb/index.js\";\nimport { KnownScript } from \"../../client/index.js\";\nimport { hexFrom } from \"../../hex/index.js\";\nimport { numToBytes } from \"../../num/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\n\n/**\n * An abstract class extending the Signer class for Dogecoin-like signing operations.\n * This class provides methods to get Doge account, public key, and internal address,\n * as well as signing transactions.\n * @public\n */\nexport abstract class SignerDoge extends Signer {\n get type(): SignerType {\n return SignerType.Doge;\n }\n\n get signType(): SignerSignType {\n return SignerSignType.DogeEcdsa;\n }\n\n /**\n * Gets the Doge address associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Doge account.\n */\n abstract getDogeAddress(): Promise<string>;\n\n /**\n * Gets the internal address, which is the Doge account in this case.\n *\n * @returns A promise that resolves to a string representing the internal address.\n */\n async getInternalAddress(): Promise<string> {\n return this.getDogeAddress();\n }\n\n /**\n * Gets the identity, which is the Doge address in this case.\n *\n * @returns A promise that resolves to a string representing the identity\n */\n async getIdentity(): Promise<string> {\n return this.getDogeAddress();\n }\n\n /**\n * Gets an array of Address objects representing the known script addresses for the signer.\n *\n * @returns A promise that resolves to an array of Address objects.\n */\n async getAddressObjs(): Promise<Address[]> {\n const hash = bs58check.decode(await this.getDogeAddress()).slice(1);\n\n return [\n await Address.fromKnownScript(\n this.client,\n KnownScript.OmniLock,\n hexFrom([0x05, ...hash, 0x00]),\n ),\n ];\n }\n\n /**\n * prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.\n *\n * @param txLike - The transaction to prepare, represented as a TransactionLike object.\n * @returns A promise that resolves to the prepared Transaction object.\n */\n async prepareTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);\n await tx.prepareSighashAllWitness(script, 85, this.client);\n return tx;\n }\n\n /**\n * Signs a transaction without modifying it.\n *\n * @param txLike - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to a signed Transaction object.\n */\n async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n const info = await tx.getSignHashInfo(script, this.client);\n if (!info) {\n return tx;\n }\n\n const signature = bytesFrom(\n await this.signMessageRaw(info.message.slice(2)),\n \"base64\",\n );\n signature[0] = 31 + ((signature[0] - 27) % 4);\n\n const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);\n witness.lock = hexFrom(\n bytesConcat(\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(4 * 4, 4),\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(5 * 4 + signature.length, 4),\n numToBytes(signature.length, 4),\n signature,\n ),\n );\n\n tx.setWitnessArgsAt(info.position, witness);\n return tx;\n }\n}\n","import { Client } from \"../../client/index.js\";\nimport { SignerDoge } from \"./signerDoge.js\";\n\n/**\n * A class extending SignerDoge that provides read-only access to a Doge address.\n * This class does not support signing operations.\n * @public\n */\nexport class SignerDogeAddressReadonly extends SignerDoge {\n /**\n * Creates an instance of SignerDogeAddressReadonly.\n *\n * @param client - The client instance used for communication.\n * @param address - The Doge address with the signer.\n */\n constructor(\n client: Client,\n private readonly address: string,\n ) {\n super(client);\n }\n\n /**\n * Connects to the client. This implementation does nothing as the class is read-only.\n *\n * @returns A promise that resolves when the connection is complete.\n */\n async connect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n /**\n * Gets the Doge address associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Doge address.\n *\n * @example\n * ```typescript\n * const account = await signer.getDogeAddress(); // Outputs the Doge address\n * ```\n */\n async getDogeAddress(): Promise<string> {\n return this.address;\n }\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport {\n Bytes,\n bytesConcat,\n bytesFrom,\n BytesLike,\n bytesTo,\n} from \"../../bytes/index.js\";\nimport { Client } from \"../../client/index.js\";\nimport { Hex, hexFrom } from \"../../hex/index.js\";\nimport { btcP2pkhAddressFromPublicKey } from \"../btc/verify.js\";\nimport { SignerDoge } from \"./signerDoge.js\";\nimport { messageHashDogeEcdsa } from \"./verify.js\";\n\n/**\n * A class extending SignerDoge that provides access to a Doge address.\n * @public\n */\nexport class SignerDogePrivateKey extends SignerDoge {\n private readonly privateKey: Bytes;\n\n /**\n * Creates an instance of SignerDogePrivateKey\n *\n * @param client - The client instance used for communication.\n * @param privateKey - The Doge private key with the signer.\n */\n constructor(\n client: Client,\n privateKey: BytesLike,\n public readonly dogeNetwork = 0x1e,\n ) {\n super(client);\n this.privateKey = bytesFrom(privateKey);\n if (this.privateKey.length !== 32) {\n throw new Error(\"Private key must be 32 bytes!\");\n }\n }\n\n /**\n * Connects to the client. This implementation does nothing as the class is always connected.\n *\n * @returns A promise that resolves when the connection is complete.\n */\n async connect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n async getDogePublicKey(): Promise<Hex> {\n return hexFrom(secp256k1.getPublicKey(this.privateKey, true));\n }\n\n /**\n * Gets the Doge address associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Doge address.\n *\n * @example\n * ```typescript\n * const account = await signer.getDogeAddress(); // Outputs the Doge address\n * ```\n */\n async getDogeAddress(): Promise<string> {\n return btcP2pkhAddressFromPublicKey(\n await this.getDogePublicKey(),\n this.dogeNetwork,\n );\n }\n\n /**\n * Signs a message and returns signature only.\n *\n * @param msg - The message to sign, as a string or BytesLike object.\n * @returns A promise that resolves to the signature as a string.\n * @throws Will throw an error if not implemented.\n */\n async signMessageRaw(msg: string | BytesLike): Promise<string> {\n const challenge = typeof msg === \"string\" ? msg : hexFrom(msg).slice(2);\n\n const signature = secp256k1.sign(\n messageHashDogeEcdsa(challenge),\n this.privateKey,\n {\n format: \"recovered\",\n prehash: false,\n },\n );\n return bytesTo(\n bytesConcat([31 + Number(signature[0])], signature.slice(1)),\n \"base64\",\n );\n }\n}\n","import { Address } from \"../../address/index.js\";\nimport { Client } from \"../../client/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\n\n/**\n * @public\n */\nexport abstract class SignerDummy extends Signer {\n get signType(): SignerSignType {\n return SignerSignType.Unknown;\n }\n\n constructor(\n client: Client,\n public readonly type: SignerType,\n ) {\n super(client);\n }\n\n async isConnected(): Promise<boolean> {\n return false;\n }\n\n async getInternalAddress(): Promise<string> {\n throw new Error(\"Can't get address from SignerDummy\");\n }\n\n async getAddressObjs(): Promise<Address[]> {\n throw new Error(\"Can't get addresses from SignerDummy\");\n }\n}\n","import { Client } from \"../../client/index.js\";\nimport { SignerType } from \"../signer/index.js\";\nimport { SignerDummy } from \"./dummy.js\";\n\n/**\n * @public\n */\nexport class SignerAlwaysError extends SignerDummy {\n constructor(\n client: Client,\n type: SignerType,\n private readonly message: string,\n ) {\n super(client, type);\n }\n\n async connect(): Promise<void> {\n throw new Error(this.message);\n }\n}\n","import { Client } from \"../../client/index.js\";\nimport { SignerType } from \"../signer/index.js\";\nimport { SignerDummy } from \"./dummy.js\";\n\n/**\n * @public\n */\nexport class SignerOpenLink extends SignerDummy {\n constructor(\n client: Client,\n type: SignerType,\n private readonly link: string,\n ) {\n super(client, type);\n }\n\n async connect(): Promise<void> {\n window.open(this.link, \"_blank\")?.focus();\n }\n}\n","import { Address } from \"../../address/index.js\";\nimport { Bytes, BytesLike, bytesConcat, bytesFrom } from \"../../bytes/index.js\";\nimport {\n Script,\n Transaction,\n TransactionLike,\n WitnessArgs,\n} from \"../../ckb/index.js\";\nimport { KnownScript } from \"../../client/index.js\";\nimport { Hasher, HasherKeecak256 } from \"../../hasher/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport { numToBytes } from \"../../num/index.js\";\nimport { reduceAsync } from \"../../utils/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\n\n/**\n * An abstract class extending Signer for Ethereum Virtual Machine (EVM) based signing operations.\n * This class provides methods to get EVM account, internal address, and signing transactions.\n * @public\n */\nexport abstract class SignerEvm extends Signer {\n get type(): SignerType {\n return SignerType.EVM;\n }\n\n get signType(): SignerSignType {\n return SignerSignType.EvmPersonal;\n }\n\n /**\n * Gets the EVM account associated with the signer.\n *\n * @returns A promise that resolves to a string representing the EVM account.\n */\n abstract getEvmAccount(): Promise<Hex>;\n\n /**\n * Gets the internal address, which is the EVM account in this case.\n *\n * @returns A promise that resolves to a string representing the internal address.\n */\n async getInternalAddress(): Promise<string> {\n return this.getEvmAccount();\n }\n\n /**\n * Gets an array of Address objects representing the known script addresses for the signer.\n *\n * @returns A promise that resolves to an array of Address objects.\n */\n async getAddressObjs(): Promise<Address[]> {\n const account = await this.getEvmAccount();\n const addresses = await Promise.all([\n this._getOmniLockAddresses(account),\n this._getPWLockAddresses(account),\n ]);\n\n return addresses.flat();\n }\n\n _getOmniLockAddresses(account: HexLike): Promise<Address[]> {\n return Promise.all([\n this._getOmniLockEvmAddressObj(account),\n this._getOmniLockOldEvmAddressObj(account),\n ]);\n }\n\n async _getPWLockAddresses(account: HexLike): Promise<Address[]> {\n const addr = await this._getPWLockEvmAddressObj(account);\n if (!addr) {\n return [];\n }\n return [addr];\n }\n\n async _getOmniLockEvmAddressObj(account: HexLike): Promise<Address> {\n return Address.fromKnownScript(\n this.client,\n KnownScript.OmniLock,\n hexFrom([0x12, ...bytesFrom(account), 0x00]),\n );\n }\n\n async _getOmniLockOldEvmAddressObj(account: HexLike): Promise<Address> {\n return Address.fromKnownScript(\n this.client,\n KnownScript.OmniLock,\n hexFrom([0x1, ...bytesFrom(account), 0x00]),\n );\n }\n\n async _getPWLockEvmAddressObj(\n account: HexLike,\n ): Promise<Address | undefined> {\n try {\n return Address.fromKnownScript(\n this.client,\n KnownScript.PWLock,\n hexFrom(bytesFrom(account)),\n );\n } catch {}\n return;\n }\n\n /**\n * prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.\n *\n * @param txLike - The transaction to prepare, represented as a TransactionLike object.\n * @returns A promise that resolves to the prepared Transaction object.\n */\n async prepareTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n if (\n (await tx.findInputIndexByLockId(\n await this.client.getKnownScript(KnownScript.OmniLock),\n this.client,\n )) !== undefined\n ) {\n await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);\n }\n if (\n (await tx.findInputIndexByLockId(\n await this.client.getKnownScript(KnownScript.PWLock),\n this.client,\n )) !== undefined\n ) {\n await tx.addCellDepsOfKnownScripts(this.client, KnownScript.PWLock);\n }\n\n const account = await this.getEvmAccount();\n const omniLockAddresses = await this._getOmniLockAddresses(account);\n const pwLockAddresses = await this._getPWLockAddresses(account);\n\n const omniTx = reduceAsync(\n omniLockAddresses,\n (tx: Transaction, { script }) =>\n tx.prepareSighashAllWitness(script, 85, this.client),\n tx,\n );\n\n return reduceAsync(\n pwLockAddresses,\n (tx: Transaction, { script }) =>\n tx.prepareSighashAllWitness(script, 65, this.client),\n omniTx,\n );\n }\n\n /**\n * Signs a transaction without modifying it.\n *\n * @param txLike - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to a signed Transaction object.\n */\n async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {\n let tx = Transaction.from(txLike);\n\n const account = await this.getEvmAccount();\n const { script: evmScript } = await this._getOmniLockEvmAddressObj(account);\n const { script: oldEvmScript } =\n await this._getOmniLockOldEvmAddressObj(account);\n\n tx = await this._signOmniLockScriptForTransaction(\n tx,\n evmScript,\n (hash) => `CKB transaction: ${hash}`,\n );\n tx = await this._signOmniLockScriptForTransaction(\n tx,\n oldEvmScript,\n (hash) => bytesFrom(hash),\n );\n\n const pwAddress = await this._getPWLockEvmAddressObj(account);\n if (pwAddress) {\n tx = await this._signPWLockScriptForTransaction(\n tx,\n pwAddress.script,\n (hash) => bytesFrom(hash),\n );\n }\n\n return tx;\n }\n\n async _signOmniLockScriptForTransaction(\n tx: Transaction,\n script: Script,\n messageTransformer: (hash: string) => BytesLike,\n ): Promise<Transaction> {\n const info = await this._signPersonalEvmForTransaction(\n tx,\n script,\n messageTransformer,\n );\n if (!info) {\n return tx;\n }\n\n const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);\n witness.lock = hexFrom(\n bytesConcat(\n numToBytes(5 * 4 + info.signature.length, 4),\n numToBytes(4 * 4, 4),\n numToBytes(5 * 4 + info.signature.length, 4),\n numToBytes(5 * 4 + info.signature.length, 4),\n numToBytes(info.signature.length, 4),\n info.signature,\n ),\n );\n\n tx.setWitnessArgsAt(info.position, witness);\n\n return tx;\n }\n\n async _signPWLockScriptForTransaction(\n tx: Transaction,\n script: Script,\n messageTransformer: (hash: string) => BytesLike,\n ): Promise<Transaction> {\n const info = await this._signPersonalEvmForTransaction(\n tx,\n script,\n messageTransformer,\n new HasherKeecak256(),\n );\n if (!info) {\n return tx;\n }\n\n const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);\n witness.lock = hexFrom(info.signature);\n tx.setWitnessArgsAt(info.position, witness);\n\n return tx;\n }\n\n async _signPersonalEvmForTransaction(\n tx: Transaction,\n script: Script,\n messageTransformer: (hash: string) => BytesLike,\n hasher?: Hasher,\n ): Promise<{ signature: Bytes; position: number } | undefined> {\n const info = await tx.getSignHashInfo(script, this.client, hasher);\n if (!info) {\n return;\n }\n\n const signature = bytesFrom(\n await this.signMessageRaw(messageTransformer(info.message)),\n );\n if (signature[signature.length - 1] >= 27) {\n signature[signature.length - 1] -= 27;\n }\n\n return { signature, position: info.position };\n }\n}\n","import { Client } from \"../../client/index.js\";\nimport { Hex, HexLike, hexFrom } from \"../../hex/index.js\";\nimport { SignerEvm } from \"./signerEvm.js\";\n\n/**\n * A class extending SignerEvm that provides read-only access to an EVM address.\n * This class does not support signing operations.\n * @public\n */\nexport class SignerEvmAddressReadonly extends SignerEvm {\n private readonly address: Hex;\n\n /**\n * Creates an instance of SignerEvmAddressReadonly.\n *\n * @param client - The client instance used for communication.\n * @param address - The EVM address associated with the signer.\n */\n constructor(client: Client, address: HexLike) {\n super(client);\n\n this.address = hexFrom(address);\n }\n\n /**\n * Connects to the client. This implementation does nothing as the class is read-only.\n *\n * @returns A promise that resolves when the connection is complete.\n *\n * @example\n * ```typescript\n * await signer.connect();\n * ```\n */\n\n async connect(): Promise<void> {}\n\n /**\n * Check if the signer is connected.\n *\n * @returns A promise that resolves the connection status.\n */\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n /**\n * Gets the EVM account associated with the signer.\n *\n * @returns A promise that resolves to a string representing the EVM account.\n *\n * @example\n * ```typescript\n * const account = await signer.getEvmAccount(); // Outputs the EVM account\n * ```\n */\n async getEvmAccount(): Promise<Hex> {\n return this.address;\n }\n}\n","import { bech32 } from \"bech32\";\nimport { Address } from \"../../address/index.js\";\nimport { BytesLike, bytesConcat, bytesFrom } from \"../../bytes/index.js\";\nimport { Transaction, TransactionLike, WitnessArgs } from \"../../ckb/index.js\";\nimport { KnownScript } from \"../../client/index.js\";\nimport { hashCkb } from \"../../hasher/index.js\";\nimport { Hex, hexFrom } from \"../../hex/index.js\";\nimport { Signer, SignerSignType, SignerType } from \"../signer/index.js\";\nimport { buildNostrEventFromMessage } from \"./verify.js\";\n\n/**\n * @public\n */\nexport interface NostrEvent {\n id?: string;\n pubkey?: string;\n sig?: string;\n created_at: number;\n kind: number;\n tags: string[][];\n content: string;\n}\n\n/**\n * @public\n */\nexport abstract class SignerNostr extends Signer {\n static CKB_SIG_HASH_ALL_TAG = \"ckb_sighash_all\";\n static CKB_UNLOCK_EVENT_KIND = 23334;\n static CKB_UNLOCK_EVENT_CONTENT =\n \"Signing a CKB transaction\\n\\nIMPORTANT: Please verify the integrity and authenticity of connected Nostr client before signing this message\\n\";\n\n get type(): SignerType {\n return SignerType.Nostr;\n }\n\n get signType(): SignerSignType {\n return SignerSignType.NostrEvent;\n }\n\n /**\n * Gets the Nostr public key associated with the signer.\n *\n * @returns A promise that resolves to a string representing the Nostr public key.\n */\n abstract getNostrPublicKey(): Promise<Hex>;\n\n /**\n * Sign a nostr event.\n *\n * @returns A promise that resolves to the signed event.\n */\n async signNostrEvent(_event: NostrEvent): Promise<Required<NostrEvent>> {\n throw Error(\"SignerNostr.signNostrEvent not implemented\");\n }\n\n /**\n * Sign a message.\n *\n * @returns A promise that resolves to the signature.\n */\n async signMessageRaw(message: string | BytesLike): Promise<Hex> {\n return hexFrom(\n (await this.signNostrEvent(buildNostrEventFromMessage(message))).sig,\n );\n }\n\n /**\n * Gets the internal address, which is the EVM account in this case.\n *\n * @returns A promise that resolves to a string representing the internal address.\n */\n async getInternalAddress(): Promise<string> {\n return bech32.encode(\n \"npub\",\n bech32.toWords(bytesFrom(await this.getNostrPublicKey())),\n );\n }\n\n /**\n * Gets an array of Address objects representing the known script addresses for the signer.\n *\n * @returns A promise that resolves to an array of Address objects.\n */\n async getAddressObjs(): Promise<Address[]> {\n const publicKey = await this.getNostrPublicKey();\n return [\n await Address.fromKnownScript(\n this.client,\n KnownScript.NostrLock,\n hexFrom(bytesConcat([0x00], hashCkb(publicKey).slice(0, 42))),\n ),\n ];\n }\n\n /**\n * prepare a transaction before signing.\n *\n * @param txLike - The transaction to prepare, represented as a TransactionLike object.\n * @returns A promise that resolves to the prepared Transaction object.\n */\n async prepareTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n await tx.addCellDepsOfKnownScripts(this.client, KnownScript.NostrLock);\n await tx.prepareSighashAllWitness(script, 572, this.client);\n return tx;\n }\n\n /**\n * Signs a transaction without modifying it.\n *\n * @param txLike - The transaction to sign, represented as a TransactionLike object.\n * @returns A promise that resolves to a signed Transaction object.\n */\n async signOnlyTransaction(txLike: TransactionLike): Promise<Transaction> {\n const tx = Transaction.from(txLike);\n const { script } = await this.getRecommendedAddressObj();\n const info = await tx.getSignHashInfo(script, this.client);\n if (!info) {\n return tx;\n }\n\n const signedEvent = bytesFrom(\n JSON.stringify(\n await this.signNostrEvent({\n pubkey: (await this.getNostrPublicKey()).slice(2),\n tags: [[SignerNostr.CKB_SIG_HASH_ALL_TAG, info.message.slice(2)]],\n created_at: Math.floor(Date.now() / 1000),\n kind: SignerNostr.CKB_UNLOCK_EVENT_KIND,\n content: SignerNostr.CKB_UNLOCK_EVENT_CONTENT,\n }),\n ),\n \"utf8\",\n );\n\n const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);\n witness.lock = hexFrom(signedEvent);\n tx.setWitnessArgsAt(info.position, witness);\n\n return tx;\n }\n}\n","import { bech32 } from \"bech32\";\nimport { Client } from \"../../client/index.js\";\nimport { Hex, hexFrom, HexLike } from \"../../hex/index.js\";\nimport { SignerNostr } from \"./signerNostr.js\";\n\n/**\n * Signer from Nostr public key\n * Support npub and hex format\n */\nexport class SignerNostrPublicKeyReadonly extends SignerNostr {\n public readonly publicKey: Hex;\n\n constructor(client: Client, publicKey: HexLike) {\n super(client);\n\n if (typeof publicKey === \"string\" && publicKey.startsWith(\"npub\")) {\n const { words } = bech32.decode(publicKey);\n this.publicKey = hexFrom(bech32.fromWords(words));\n } else {\n this.publicKey = hexFrom(publicKey);\n }\n }\n\n async connect(): Promise<void> {}\n\n async isConnected(): Promise<boolean> {\n return true;\n }\n\n async getNostrPublicKey(): Promise<Hex> {\n return this.publicKey;\n }\n}\n","import { schnorr } from \"@noble/curves/secp256k1.js\";\nimport { bech32 } from \"bech32\";\nimport { Bytes, bytesFrom, BytesLike } from \"../../bytes/index.js\";\nimport { Client } from \"../../client/index.js\";\nimport { hexFrom } from \"../../hex/index.js\";\nimport { NostrEvent } from \"./signerNostr.js\";\nimport { SignerNostrPublicKeyReadonly } from \"./signerNostrPublicKeyReadonly.js\";\nimport { nostrEventHash } from \"./verify.js\";\n\n/**\n * Signer from Nostr private key\n * Support nsec and hex format\n */\nexport class SignerNostrPrivateKey extends SignerNostrPublicKeyReadonly {\n private readonly privateKey: Bytes;\n\n constructor(client: Client, privateKeyLike: BytesLike) {\n const privateKey = (() => {\n if (\n typeof privateKeyLike === \"string\" &&\n privateKeyLike.startsWith(\"nsec\")\n ) {\n const { words } = bech32.decode(privateKeyLike);\n return bytesFrom(bech32.fromWords(words));\n }\n\n return bytesFrom(privateKeyLike);\n })();\n\n super(client, schnorr.getPublicKey(privateKey));\n\n this.privateKey = privateKey;\n }\n\n async signNostrEvent(event: NostrEvent): Promise<Required<NostrEvent>> {\n const pubkey = (await this.getNostrPublicKey()).slice(2);\n const eventHash = nostrEventHash({ ...event, pubkey });\n const signature = schnorr.sign(eventHash, this.privateKey);\n\n return {\n ...event,\n id: hexFrom(eventHash).slice(2),\n pubkey,\n sig: hexFrom(signature).slice(2),\n };\n }\n}\n","export * from \"./address/index.js\";\nexport * from \"./bytes/index.js\";\nexport * from \"./ckb/index.js\";\nexport * from \"./client/index.js\";\nexport * from \"./codec/index.js\";\nexport * from \"./fixedPoint/index.js\";\nexport * from \"./hasher/index.js\";\nexport * from \"./hex/index.js\";\nexport * from \"./jsonRpc/index.js\";\nexport * from \"./keystore/index.js\";\nexport * from \"./molecule/index.js\";\nexport * from \"./num/index.js\";\nexport * from \"./signer/index.js\";\nexport * from \"./utils/index.js\";\n"],"mappings":"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"}
@@ -1,14 +1,2 @@
1
- export * from "./address/index.js";
2
- export * from "./bytes/index.js";
3
- export * from "./ckb/index.js";
4
- export * from "./client/index.js";
5
- export * from "./fixedPoint/index.js";
6
- export * from "./hasher/index.js";
7
- export * from "./hex/index.js";
8
- export * from "./jsonRpc/index.js";
9
- export * from "./keystore/index.js";
10
- export * from "./molecule/index.js";
11
- export * from "./num/index.js";
12
- export * from "./signer/index.js";
13
- export * from "./utils/index.js";
14
- //# sourceMappingURL=barrel.d.ts.map
1
+ import { $ as CellDep, $n as btcP2pkhAddressFromPublicKey, $r as CodecUint256BE, $t as ClientFindCellsResponse, Ai as numLeToBytes, An as verifyMessageNostrEvent, Ar as hashCkb, At as HashTypeCodec, B as ClientPublicTestnet, Bi as AddressLike, Bn as SignerDummy, Br as CodecByte16, Bt as Epoch, Ci as Num, Ct as depTypeFrom, Di as numFrom, Dt as udtBalanceFrom, Ei as numBeToBytes, Et as isDaoOutputLimitExceeded, Fi as Codec, Fn as verifyMessageEvmPersonal, Fr as Zero, Ft as ScriptVec, G as ClientCacheMemory, Gi as BytesLike, Gn as SignerDoge, Gr as CodecRaw, Gt as CellDepInfo, H as ClientJsonRpc, Hi as HexLike, Hn as verifyMessageDogeEcdsa, Hr as CodecByte4, Ht as epochFrom, Ii as CodecLike, In as SignerEvmAddressReadonly, Ir as fixedPointFrom, It as hashTypeFrom, J as ErrorTransactionInsufficientCoin, Ji as bytesEq, Jn as verifyMessageCkbSecp256k1, Jr as CodecUint128LE, Jt as ClientBlockHeader, K as ClientCache, Ki as bytesConcat, Kn as verifyMessageJoyId, Kr as CodecUint128, Kt as CellDepInfoLike, Li as DecodedType, Ln as SignerEvm, Lr as fixedPointToString, Lt as hashTypeFromBytes, Mi as numMin, Mn as SignerNostrPublicKeyReadonly, Mr as FixedPoint, Mt as Script, Ni as numToBytes, Nn as NostrEvent, Nr as FixedPointLike, Nt as ScriptLike, Oi as numFromBytes, On as buildNostrEventFromMessage, Or as HasherKeecak256, Ot as LumosTransactionSkeletonType, Pi as numToHex, Pn as SignerNostr, Pr as One, Pt as ScriptOpt, Q as CellAnyLike, Qn as btcEcdsaPublicKeyHash, Qr as CodecUint256, Qt as ClientBlockUncleLike, Ri as EncodableType, Rn as SignerOpenLink, Rr as CodecBool, Rt as hashTypeToBytes, Si as stringify, St as calcDaoProfit, Ti as numBeFromBytes, Tt as depTypeToBytes, U as ClientJsonRpcConfig, Ui as hexFrom, Un as SignerDogePrivateKey, Ur as CodecByte8, Ut as epochFromHex, V as ClientPublicMainnet, Vi as Hex, Vn as messageHashDogeEcdsa, Vr as CodecByte32, Vt as EpochLike, W as Client, Wi as Bytes, Wn as SignerDogeAddressReadonly, Wr as CodecBytes, Wt as epochToHex, X as Cell, Xi as bytesTo, Xn as SignerCkbPrivateKey, Xr as CodecUint16BE, Xt as ClientBlockLike, Y as hashTypeId, Yi as bytesFrom, Yn as SignerCkbScriptReadonly, Yr as CodecUint16, Yt as ClientBlockHeaderLike, Z as CellAny, Zn as SignerCkbPublicKey, Zr as CodecUint16LE, Zt as ClientBlockUncle, _i as apply, _n as ErrorClientWaitTransactionTimeout, _r as barrel_d_exports, _t as Transaction, ai as CodecUint512BE, an as ClientIndexerSearchKeyLike, ar as SignerBtc, at as CellLike, bi as reduceAsync, bn as ScriptInfoLike, br as RequestorJsonRpc, bt as WitnessArgsLike, ci as CodecUint64BE, cn as ClientTransactionResponse, cr as Signer, ct as CellOutputVec, di as codecPadding, dn as ErrorClientBaseLike, dr as SignerType, dt as DepTypeLike, ei as CodecUint256LE, en as ClientFindTransactionsGroupedResponse, er as btcPublicKeyFromP2pkhAddress, et as CellDepLike, fi as codecUint, fn as ErrorClientDuplicatedTransaction, fr as Wallet, ft as OutPoint, gi as Constructor, gn as ErrorClientVerification, gr as SignPsbtOptionsLike, gt as SinceLike, hi as codec, hn as ErrorClientResolveUnknown, hr as SignPsbtOptions, ht as Since, ii as CodecUint512, in as ClientIndexerSearchKeyFilterLike, ir as SignerBtcPublicKeyReadonly, it as CellInputVec, ji as numMax, jn as SignerNostrPrivateKey, jr as Hasher, jt as HashTypeLike, ki as numLeFromBytes, kn as nostrEventHash, kr as HasherCkb, kt as HashType, li as CodecUint64LE, ln as ClientTransactionResponseLike, lr as SignerInfo, lt as DepType, mi as Entity, mn as ErrorClientRBFRejected, mr as InputToSignLike, mt as RawTransaction, ni as CodecUint32BE, nn as ClientIndexerSearchKey, nr as messageHashBtcEcdsa, nt as CellInput, oi as CodecUint512LE, on as ClientIndexerSearchKeyTransaction, or as NetworkPreference, ot as CellOutput, pi as codecUintNumber, pn as ErrorClientMaxFeeRateExceeded, pr as InputToSign, pt as OutPointLike, q as ErrorTransactionInsufficientCapacity, qi as bytesConcatTo, qn as messageHashCkbSecp256k1, qr as CodecUint128BE, qt as ClientBlock, ri as CodecUint32LE, rn as ClientIndexerSearchKeyFilter, rr as verifyMessageBtcEcdsa, rt as CellInputLike, si as CodecUint64, sn as ClientIndexerSearchKeyTransactionLike, sr as Signature, st as CellOutputLike, ti as CodecUint32, tn as ClientFindTransactionsResponse, tr as btcVarLengthBytesFrom, tt as CellDepVec, ui as CodecUint8, un as ErrorClientBase, ur as SignerSignType, ut as DepTypeCodec, vi as gcd, vn as OutputsValidator, vr as keystoreDecrypt, vt as TransactionLike, wi as NumLike, wt as depTypeFromBytes, xi as sleep, xn as TransactionStatus, xr as RequestorJsonRpcConfig, xt as calcDaoClaimEpoch, yi as isWebview, yn as ScriptInfo, yr as keystoreEncrypt, yt as WitnessArgs, zi as Address, zn as SignerAlwaysError, zr as CodecByte, zt as KnownScript } from "./advancedBarrel-DRDT4GBS.js";
2
+ export { Address, AddressLike, Bytes, BytesLike, Cell, CellAny, CellAnyLike, CellDep, CellDepInfo, CellDepInfoLike, CellDepLike, CellDepVec, CellInput, CellInputLike, CellInputVec, CellLike, CellOutput, CellOutputLike, CellOutputVec, Client, ClientBlock, ClientBlockHeader, ClientBlockHeaderLike, ClientBlockLike, ClientBlockUncle, ClientBlockUncleLike, ClientCache, ClientCacheMemory, ClientFindCellsResponse, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse, ClientIndexerSearchKey, ClientIndexerSearchKeyFilter, ClientIndexerSearchKeyFilterLike, ClientIndexerSearchKeyLike, ClientIndexerSearchKeyTransaction, ClientIndexerSearchKeyTransactionLike, ClientJsonRpc, ClientJsonRpcConfig, ClientPublicMainnet, ClientPublicTestnet, ClientTransactionResponse, ClientTransactionResponseLike, Codec, CodecBool, CodecByte, CodecByte16, CodecByte32, CodecByte4, CodecByte8, CodecBytes, CodecLike, CodecRaw, CodecUint128, CodecUint128BE, CodecUint128LE, CodecUint16, CodecUint16BE, CodecUint16LE, CodecUint256, CodecUint256BE, CodecUint256LE, CodecUint32, CodecUint32BE, CodecUint32LE, CodecUint512, CodecUint512BE, CodecUint512LE, CodecUint64, CodecUint64BE, CodecUint64LE, CodecUint8, Constructor, DecodedType, DepType, DepTypeCodec, DepTypeLike, EncodableType, Entity, Epoch, EpochLike, ErrorClientBase, ErrorClientBaseLike, ErrorClientDuplicatedTransaction, ErrorClientMaxFeeRateExceeded, ErrorClientRBFRejected, ErrorClientResolveUnknown, ErrorClientVerification, ErrorClientWaitTransactionTimeout, ErrorTransactionInsufficientCapacity, ErrorTransactionInsufficientCoin, FixedPoint, FixedPointLike, HashType, HashTypeCodec, HashTypeLike, Hasher, HasherCkb, HasherKeecak256, Hex, HexLike, InputToSign, InputToSignLike, KnownScript, LumosTransactionSkeletonType, NetworkPreference, NostrEvent, Num, NumLike, One, OutPoint, OutPointLike, OutputsValidator, RawTransaction, RequestorJsonRpc, RequestorJsonRpcConfig, Script, ScriptInfo, ScriptInfoLike, ScriptLike, ScriptOpt, ScriptVec, SignPsbtOptions, SignPsbtOptionsLike, Signature, Signer, SignerAlwaysError, SignerBtc, SignerBtcPublicKeyReadonly, SignerCkbPrivateKey, SignerCkbPublicKey, SignerCkbScriptReadonly, SignerDoge, SignerDogeAddressReadonly, SignerDogePrivateKey, SignerDummy, SignerEvm, SignerEvmAddressReadonly, SignerInfo, SignerNostr, SignerNostrPrivateKey, SignerNostrPublicKeyReadonly, SignerOpenLink, SignerSignType, SignerType, Since, SinceLike, Transaction, TransactionLike, TransactionStatus, Wallet, WitnessArgs, WitnessArgsLike, Zero, apply, btcEcdsaPublicKeyHash, btcP2pkhAddressFromPublicKey, btcPublicKeyFromP2pkhAddress, btcVarLengthBytesFrom, buildNostrEventFromMessage, bytesConcat, bytesConcatTo, bytesEq, bytesFrom, bytesTo, calcDaoClaimEpoch, calcDaoProfit, codec, codecPadding, codecUint, codecUintNumber, depTypeFrom, depTypeFromBytes, depTypeToBytes, epochFrom, epochFromHex, epochToHex, fixedPointFrom, fixedPointToString, gcd, hashCkb, hashTypeFrom, hashTypeFromBytes, hashTypeId, hashTypeToBytes, hexFrom, isDaoOutputLimitExceeded, isWebview, keystoreDecrypt, keystoreEncrypt, messageHashBtcEcdsa, messageHashCkbSecp256k1, messageHashDogeEcdsa, barrel_d_exports as mol, nostrEventHash, numBeFromBytes, numBeToBytes, numFrom, numFromBytes, numLeFromBytes, numLeToBytes, numMax, numMin, numToBytes, numToHex, reduceAsync, sleep, stringify, udtBalanceFrom, verifyMessageBtcEcdsa, verifyMessageCkbSecp256k1, verifyMessageDogeEcdsa, verifyMessageEvmPersonal, verifyMessageJoyId, verifyMessageNostrEvent };
@@ -1,29 +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
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./address/index.js"), exports);
18
- __exportStar(require("./bytes/index.js"), exports);
19
- __exportStar(require("./ckb/index.js"), exports);
20
- __exportStar(require("./client/index.js"), exports);
21
- __exportStar(require("./fixedPoint/index.js"), exports);
22
- __exportStar(require("./hasher/index.js"), exports);
23
- __exportStar(require("./hex/index.js"), exports);
24
- __exportStar(require("./jsonRpc/index.js"), exports);
25
- __exportStar(require("./keystore/index.js"), exports);
26
- __exportStar(require("./molecule/index.js"), exports);
27
- __exportStar(require("./num/index.js"), exports);
28
- __exportStar(require("./signer/index.js"), exports);
29
- __exportStar(require("./utils/index.js"), exports);
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./address.advanced-COp7SNhZ.js"),t=require("./barrel-CXC2Uy5L.js");exports.Address=t.H,exports.Bytes=e.hr,exports.Cell=e.a,exports.CellAny=e.o,Object.defineProperty(exports,"CellDep",{enumerable:!0,get:function(){return e.s}}),exports.CellDepInfo=e.nt,exports.CellDepVec=e.c,Object.defineProperty(exports,"CellInput",{enumerable:!0,get:function(){return e.l}}),exports.CellInputVec=e.u,Object.defineProperty(exports,"CellOutput",{enumerable:!0,get:function(){return e.d}}),exports.CellOutputVec=e.f,exports.Client=t.J,exports.ClientBlock=e.rt,exports.ClientBlockHeader=e.it,exports.ClientBlockUncle=e.at,exports.ClientCache=t.X,exports.ClientCacheMemory=t.Y,exports.ClientIndexerSearchKey=e.ot,exports.ClientIndexerSearchKeyFilter=e.st,exports.ClientIndexerSearchKeyTransaction=e.ct,exports.ClientJsonRpc=t.K,exports.ClientPublicMainnet=t.G,exports.ClientPublicTestnet=t.W,exports.ClientTransactionResponse=e.lt,exports.Codec=e.mr,exports.CodecBool=e.Sn,exports.CodecByte=e.Cn,exports.CodecByte16=e.wn,exports.CodecByte32=e.Tn,exports.CodecByte4=e.En,exports.CodecByte8=e.Dn,exports.CodecBytes=e.On,exports.CodecRaw=e.kn,exports.CodecUint128=e.An,exports.CodecUint128BE=e.jn,exports.CodecUint128LE=e.Mn,exports.CodecUint16=e.Nn,exports.CodecUint16BE=e.Pn,exports.CodecUint16LE=e.Fn,exports.CodecUint256=e.In,exports.CodecUint256BE=e.Ln,exports.CodecUint256LE=e.Rn,exports.CodecUint32=e.zn,exports.CodecUint32BE=e.Bn,exports.CodecUint32LE=e.Vn,exports.CodecUint512=e.Hn,exports.CodecUint512BE=e.Un,exports.CodecUint512LE=e.Wn,exports.CodecUint64=e.Gn,exports.CodecUint64BE=e.Kn,exports.CodecUint64LE=e.qn,exports.CodecUint8=e.Jn,exports.DepTypeCodec=e.p,exports.Entity=e.cr,Object.defineProperty(exports,"Epoch",{enumerable:!0,get:function(){return e.xt}}),exports.ErrorClientBase=e.ut,exports.ErrorClientDuplicatedTransaction=e.dt,exports.ErrorClientMaxFeeRateExceeded=e.ft,exports.ErrorClientRBFRejected=e.pt,exports.ErrorClientResolveUnknown=e.mt,exports.ErrorClientVerification=e.ht,exports.ErrorClientWaitTransactionTimeout=e.gt,exports.ErrorTransactionInsufficientCapacity=e.E,exports.ErrorTransactionInsufficientCoin=e.D,exports.HashTypeCodec=e.j,exports.HasherCkb=e.ur,exports.HasherKeecak256=t.Q,exports.InputToSign=t.R,exports.KnownScript=e.J,exports.One=e.vn,Object.defineProperty(exports,"OutPoint",{enumerable:!0,get:function(){return e.m}}),exports.RawTransaction=e.h,exports.RequestorJsonRpc=t.q,Object.defineProperty(exports,"Script",{enumerable:!0,get:function(){return e.M}}),exports.ScriptInfo=e._t,exports.ScriptOpt=e.N,exports.ScriptVec=e.P,exports.SignPsbtOptions=t.z,exports.Signature=t.v,exports.Signer=t.y,exports.SignerAlwaysError=t.c,exports.SignerBtc=t._,exports.SignerBtcPublicKeyReadonly=t.g,exports.SignerCkbPrivateKey=t.m,exports.SignerCkbPublicKey=t.h,exports.SignerCkbScriptReadonly=t.p,exports.SignerDoge=t.f,exports.SignerDogeAddressReadonly=t.d,exports.SignerDogePrivateKey=t.u,exports.SignerDummy=t.l,exports.SignerEvm=t.o,exports.SignerEvmAddressReadonly=t.a,exports.SignerInfo=t.b,exports.SignerNostr=t.i,exports.SignerNostrPrivateKey=t.n,exports.SignerNostrPublicKeyReadonly=t.r,exports.SignerOpenLink=t.s,exports.SignerSignType=t.x,exports.SignerType=t.S,Object.defineProperty(exports,"Since",{enumerable:!0,get:function(){return e.g}}),Object.defineProperty(exports,"Transaction",{enumerable:!0,get:function(){return e._}}),Object.defineProperty(exports,"WitnessArgs",{enumerable:!0,get:function(){return e.v}}),exports.Zero=e.yn,exports.apply=e.Tt,exports.btcEcdsaPublicKeyHash=t.M,exports.btcP2pkhAddressFromPublicKey=t.N,exports.btcPublicKeyFromP2pkhAddress=t.P,exports.btcVarLengthBytesFrom=t.F,exports.buildNostrEventFromMessage=t.C,exports.bytesConcat=e.gr,exports.bytesConcatTo=e._r,exports.bytesEq=e.vr,exports.bytesFrom=e.yr,exports.bytesTo=e.br,exports.calcDaoClaimEpoch=e.y,exports.calcDaoProfit=e.b,exports.codec=e.lr,exports.codecPadding=e.Yn,exports.codecUint=e.Xn,exports.codecUintNumber=e.Zn,exports.depTypeFrom=e.x,exports.depTypeFromBytes=e.S,exports.depTypeToBytes=e.C,exports.epochFrom=e.St,exports.epochFromHex=e.Ct,exports.epochToHex=e.wt,exports.fixedPointFrom=e.bn,exports.fixedPointToString=e.xn,exports.gcd=e.Et,exports.hashCkb=e.dr,exports.hashTypeFrom=e.F,exports.hashTypeFromBytes=e.I,exports.hashTypeId=t.U,exports.hashTypeToBytes=e.L,exports.hexFrom=e.pr,exports.isDaoOutputLimitExceeded=e.w,exports.isWebview=e.Dt,exports.keystoreDecrypt=t.B,exports.keystoreEncrypt=t.V,exports.messageHashBtcEcdsa=t.I,exports.messageHashCkbSecp256k1=t.A,exports.messageHashDogeEcdsa=t.D,Object.defineProperty(exports,"mol",{enumerable:!0,get:function(){return t.Z}}),exports.nostrEventHash=t.w,exports.numBeFromBytes=e.Qn,exports.numBeToBytes=e.$n,exports.numFrom=e.er,exports.numFromBytes=e.tr,exports.numLeFromBytes=e.nr,exports.numLeToBytes=e.rr,exports.numMax=e.ir,exports.numMin=e.ar,exports.numToBytes=e.or,exports.numToHex=e.sr,exports.reduceAsync=e.Ot,exports.sleep=e.kt,exports.stringify=e.At,exports.udtBalanceFrom=e.T,exports.verifyMessageBtcEcdsa=t.L,exports.verifyMessageCkbSecp256k1=t.j,exports.verifyMessageDogeEcdsa=t.O,exports.verifyMessageEvmPersonal=t.E,exports.verifyMessageJoyId=t.k,exports.verifyMessageNostrEvent=t.T;
@@ -1,3 +1,2 @@
1
- export * from "./barrel.js";
2
- export * as ccc from "./barrel.js";
3
- //# sourceMappingURL=index.d.ts.map
1
+ import { $ as CellDep, $n as btcP2pkhAddressFromPublicKey, $r as CodecUint256BE, $t as ClientFindCellsResponse, Ai as numLeToBytes, An as verifyMessageNostrEvent, Ar as hashCkb, At as HashTypeCodec, B as ClientPublicTestnet, Bi as AddressLike, Bn as SignerDummy, Br as CodecByte16, Bt as Epoch, Ci as Num, Ct as depTypeFrom, Di as numFrom, Dn as barrel_d_exports, Dt as udtBalanceFrom, Ei as numBeToBytes, Et as isDaoOutputLimitExceeded, Fi as Codec, Fn as verifyMessageEvmPersonal, Fr as Zero, Ft as ScriptVec, G as ClientCacheMemory, Gi as BytesLike, Gn as SignerDoge, Gr as CodecRaw, Gt as CellDepInfo, H as ClientJsonRpc, Hi as HexLike, Hn as verifyMessageDogeEcdsa, Hr as CodecByte4, Ht as epochFrom, Ii as CodecLike, In as SignerEvmAddressReadonly, Ir as fixedPointFrom, It as hashTypeFrom, J as ErrorTransactionInsufficientCoin, Ji as bytesEq, Jn as verifyMessageCkbSecp256k1, Jr as CodecUint128LE, Jt as ClientBlockHeader, K as ClientCache, Ki as bytesConcat, Kn as verifyMessageJoyId, Kr as CodecUint128, Kt as CellDepInfoLike, Li as DecodedType, Ln as SignerEvm, Lr as fixedPointToString, Lt as hashTypeFromBytes, Mi as numMin, Mn as SignerNostrPublicKeyReadonly, Mr as FixedPoint, Mt as Script, Ni as numToBytes, Nn as NostrEvent, Nr as FixedPointLike, Nt as ScriptLike, Oi as numFromBytes, On as buildNostrEventFromMessage, Or as HasherKeecak256, Ot as LumosTransactionSkeletonType, Pi as numToHex, Pn as SignerNostr, Pr as One, Pt as ScriptOpt, Q as CellAnyLike, Qn as btcEcdsaPublicKeyHash, Qr as CodecUint256, Qt as ClientBlockUncleLike, Ri as EncodableType, Rn as SignerOpenLink, Rr as CodecBool, Rt as hashTypeToBytes, Si as stringify, St as calcDaoProfit, Ti as numBeFromBytes, Tt as depTypeToBytes, U as ClientJsonRpcConfig, Ui as hexFrom, Un as SignerDogePrivateKey, Ur as CodecByte8, Ut as epochFromHex, V as ClientPublicMainnet, Vi as Hex, Vn as messageHashDogeEcdsa, Vr as CodecByte32, Vt as EpochLike, W as Client, Wi as Bytes, Wn as SignerDogeAddressReadonly, Wr as CodecBytes, Wt as epochToHex, X as Cell, Xi as bytesTo, Xn as SignerCkbPrivateKey, Xr as CodecUint16BE, Xt as ClientBlockLike, Y as hashTypeId, Yi as bytesFrom, Yn as SignerCkbScriptReadonly, Yr as CodecUint16, Yt as ClientBlockHeaderLike, Z as CellAny, Zn as SignerCkbPublicKey, Zr as CodecUint16LE, Zt as ClientBlockUncle, _i as apply, _n as ErrorClientWaitTransactionTimeout, _r as barrel_d_exports$1, _t as Transaction, ai as CodecUint512BE, an as ClientIndexerSearchKeyLike, ar as SignerBtc, at as CellLike, bi as reduceAsync, bn as ScriptInfoLike, br as RequestorJsonRpc, bt as WitnessArgsLike, ci as CodecUint64BE, cn as ClientTransactionResponse, cr as Signer, ct as CellOutputVec, di as codecPadding, dn as ErrorClientBaseLike, dr as SignerType, dt as DepTypeLike, ei as CodecUint256LE, en as ClientFindTransactionsGroupedResponse, er as btcPublicKeyFromP2pkhAddress, et as CellDepLike, fi as codecUint, fn as ErrorClientDuplicatedTransaction, fr as Wallet, ft as OutPoint, gi as Constructor, gn as ErrorClientVerification, gr as SignPsbtOptionsLike, gt as SinceLike, hi as codec, hn as ErrorClientResolveUnknown, hr as SignPsbtOptions, ht as Since, ii as CodecUint512, in as ClientIndexerSearchKeyFilterLike, ir as SignerBtcPublicKeyReadonly, it as CellInputVec, ji as numMax, jn as SignerNostrPrivateKey, jr as Hasher, jt as HashTypeLike, ki as numLeFromBytes, kn as nostrEventHash, kr as HasherCkb, kt as HashType, li as CodecUint64LE, ln as ClientTransactionResponseLike, lr as SignerInfo, lt as DepType, mi as Entity, mn as ErrorClientRBFRejected, mr as InputToSignLike, mt as RawTransaction, ni as CodecUint32BE, nn as ClientIndexerSearchKey, nr as messageHashBtcEcdsa, nt as CellInput, oi as CodecUint512LE, on as ClientIndexerSearchKeyTransaction, or as NetworkPreference, ot as CellOutput, pi as codecUintNumber, pn as ErrorClientMaxFeeRateExceeded, pr as InputToSign, pt as OutPointLike, q as ErrorTransactionInsufficientCapacity, qi as bytesConcatTo, qn as messageHashCkbSecp256k1, qr as CodecUint128BE, qt as ClientBlock, ri as CodecUint32LE, rn as ClientIndexerSearchKeyFilter, rr as verifyMessageBtcEcdsa, rt as CellInputLike, si as CodecUint64, sn as ClientIndexerSearchKeyTransactionLike, sr as Signature, st as CellOutputLike, ti as CodecUint32, tn as ClientFindTransactionsResponse, tr as btcVarLengthBytesFrom, tt as CellDepVec, ui as CodecUint8, un as ErrorClientBase, ur as SignerSignType, ut as DepTypeCodec, vi as gcd, vn as OutputsValidator, vr as keystoreDecrypt, vt as TransactionLike, wi as NumLike, wt as depTypeFromBytes, xi as sleep, xn as TransactionStatus, xr as RequestorJsonRpcConfig, xt as calcDaoClaimEpoch, yi as isWebview, yn as ScriptInfo, yr as keystoreEncrypt, yt as WitnessArgs, zi as Address, zn as SignerAlwaysError, zr as CodecByte, zt as KnownScript } from "./advancedBarrel-DRDT4GBS.js";
2
+ export { Address, AddressLike, Bytes, BytesLike, Cell, CellAny, CellAnyLike, CellDep, CellDepInfo, CellDepInfoLike, CellDepLike, CellDepVec, CellInput, CellInputLike, CellInputVec, CellLike, CellOutput, CellOutputLike, CellOutputVec, Client, ClientBlock, ClientBlockHeader, ClientBlockHeaderLike, ClientBlockLike, ClientBlockUncle, ClientBlockUncleLike, ClientCache, ClientCacheMemory, ClientFindCellsResponse, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse, ClientIndexerSearchKey, ClientIndexerSearchKeyFilter, ClientIndexerSearchKeyFilterLike, ClientIndexerSearchKeyLike, ClientIndexerSearchKeyTransaction, ClientIndexerSearchKeyTransactionLike, ClientJsonRpc, ClientJsonRpcConfig, ClientPublicMainnet, ClientPublicTestnet, ClientTransactionResponse, ClientTransactionResponseLike, Codec, CodecBool, CodecByte, CodecByte16, CodecByte32, CodecByte4, CodecByte8, CodecBytes, CodecLike, CodecRaw, CodecUint128, CodecUint128BE, CodecUint128LE, CodecUint16, CodecUint16BE, CodecUint16LE, CodecUint256, CodecUint256BE, CodecUint256LE, CodecUint32, CodecUint32BE, CodecUint32LE, CodecUint512, CodecUint512BE, CodecUint512LE, CodecUint64, CodecUint64BE, CodecUint64LE, CodecUint8, Constructor, DecodedType, DepType, DepTypeCodec, DepTypeLike, EncodableType, Entity, Epoch, EpochLike, ErrorClientBase, ErrorClientBaseLike, ErrorClientDuplicatedTransaction, ErrorClientMaxFeeRateExceeded, ErrorClientRBFRejected, ErrorClientResolveUnknown, ErrorClientVerification, ErrorClientWaitTransactionTimeout, ErrorTransactionInsufficientCapacity, ErrorTransactionInsufficientCoin, FixedPoint, FixedPointLike, HashType, HashTypeCodec, HashTypeLike, Hasher, HasherCkb, HasherKeecak256, Hex, HexLike, InputToSign, InputToSignLike, KnownScript, LumosTransactionSkeletonType, NetworkPreference, NostrEvent, Num, NumLike, One, OutPoint, OutPointLike, OutputsValidator, RawTransaction, RequestorJsonRpc, RequestorJsonRpcConfig, Script, ScriptInfo, ScriptInfoLike, ScriptLike, ScriptOpt, ScriptVec, SignPsbtOptions, SignPsbtOptionsLike, Signature, Signer, SignerAlwaysError, SignerBtc, SignerBtcPublicKeyReadonly, SignerCkbPrivateKey, SignerCkbPublicKey, SignerCkbScriptReadonly, SignerDoge, SignerDogeAddressReadonly, SignerDogePrivateKey, SignerDummy, SignerEvm, SignerEvmAddressReadonly, SignerInfo, SignerNostr, SignerNostrPrivateKey, SignerNostrPublicKeyReadonly, SignerOpenLink, SignerSignType, SignerType, Since, SinceLike, Transaction, TransactionLike, TransactionStatus, Wallet, WitnessArgs, WitnessArgsLike, Zero, apply, btcEcdsaPublicKeyHash, btcP2pkhAddressFromPublicKey, btcPublicKeyFromP2pkhAddress, btcVarLengthBytesFrom, buildNostrEventFromMessage, bytesConcat, bytesConcatTo, bytesEq, bytesFrom, bytesTo, calcDaoClaimEpoch, calcDaoProfit, barrel_d_exports as ccc, codec, codecPadding, codecUint, codecUintNumber, depTypeFrom, depTypeFromBytes, depTypeToBytes, epochFrom, epochFromHex, epochToHex, fixedPointFrom, fixedPointToString, gcd, hashCkb, hashTypeFrom, hashTypeFromBytes, hashTypeId, hashTypeToBytes, hexFrom, isDaoOutputLimitExceeded, isWebview, keystoreDecrypt, keystoreEncrypt, messageHashBtcEcdsa, messageHashCkbSecp256k1, messageHashDogeEcdsa, barrel_d_exports$1 as mol, nostrEventHash, numBeFromBytes, numBeToBytes, numFrom, numFromBytes, numLeFromBytes, numLeToBytes, numMax, numMin, numToBytes, numToHex, reduceAsync, sleep, stringify, udtBalanceFrom, verifyMessageBtcEcdsa, verifyMessageCkbSecp256k1, verifyMessageDogeEcdsa, verifyMessageEvmPersonal, verifyMessageJoyId, verifyMessageNostrEvent };