@ckb-ccc/core 1.12.5 → 1.14.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 (612) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/address.advanced-BmJKF_Lg.mjs +2 -0
  3. package/dist/address.advanced-BmJKF_Lg.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-C-sr5NLL.mjs +7 -0
  12. package/dist/barrel-C-sr5NLL.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-D9nKvIr3.js +2 -0
  19. package/dist.commonjs/address.advanced-D9nKvIr3.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-SuR9mcfv.js +21 -0
  28. package/dist.commonjs/barrel-SuR9mcfv.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 +42 -34
  34. package/src/address/address.advanced.ts +3 -3
  35. package/src/barrel.ts +1 -0
  36. package/src/ckb/epoch.ts +489 -0
  37. package/src/ckb/index.ts +1 -0
  38. package/src/ckb/script.ts +4 -3
  39. package/src/ckb/transaction.ts +83 -94
  40. package/src/client/client.ts +377 -1
  41. package/src/client/clientPublicMainnet.advanced.ts +23 -0
  42. package/src/client/clientPublicTestnet.advanced.ts +23 -0
  43. package/src/client/clientTypes.ts +1 -2
  44. package/src/client/jsonRpc/transformers.ts +2 -2
  45. package/src/client/knownScript.ts +1 -0
  46. package/src/codec/codec.ts +108 -0
  47. package/src/{molecule → codec}/entity.ts +18 -10
  48. package/src/codec/predefined.ts +145 -0
  49. package/src/hasher/advanced.ts +3 -1
  50. package/src/hasher/hasherCkb.ts +1 -1
  51. package/src/hasher/hasherKeecak256.ts +1 -1
  52. package/src/keystore/index.ts +4 -4
  53. package/src/molecule/barrel.ts +10 -1
  54. package/src/molecule/codec.ts +48 -153
  55. package/src/molecule/predefined.ts +63 -50
  56. package/src/signer/btc/index.ts +1 -0
  57. package/src/signer/btc/psbt.ts +98 -0
  58. package/src/signer/btc/signerBtc.ts +41 -1
  59. package/src/signer/btc/signerBtcPublicKeyReadonly.ts +15 -0
  60. package/src/signer/btc/verify.ts +2 -1
  61. package/src/signer/ckb/signerCkbPrivateKey.ts +6 -11
  62. package/src/signer/ckb/verifyCkbSecp256k1.ts +6 -10
  63. package/src/signer/doge/signerDogePrivateKey.ts +6 -3
  64. package/src/signer/doge/verify.ts +7 -8
  65. package/src/signer/nostr/signerNostrPrivateKey.ts +9 -8
  66. package/src/signer/nostr/verify.ts +2 -2
  67. package/src/utils/index.ts +20 -1
  68. package/tsdown.config.mts +53 -0
  69. package/dist/address/address.advanced.d.ts +0 -65
  70. package/dist/address/address.advanced.d.ts.map +0 -1
  71. package/dist/address/address.advanced.js +0 -147
  72. package/dist/address/advanced.d.ts +0 -2
  73. package/dist/address/advanced.d.ts.map +0 -1
  74. package/dist/address/advanced.js +0 -1
  75. package/dist/address/index.d.ts +0 -58
  76. package/dist/address/index.d.ts.map +0 -1
  77. package/dist/address/index.js +0 -78
  78. package/dist/advanced.d.ts +0 -3
  79. package/dist/advanced.d.ts.map +0 -1
  80. package/dist/advanced.js +0 -2
  81. package/dist/advancedBarrel.d.ts +0 -7
  82. package/dist/advancedBarrel.d.ts.map +0 -1
  83. package/dist/advancedBarrel.js +0 -6
  84. package/dist/barrel.d.ts +0 -14
  85. package/dist/barrel.d.ts.map +0 -1
  86. package/dist/barrel.js +0 -13
  87. package/dist/bytes/advanced.d.ts +0 -6
  88. package/dist/bytes/advanced.d.ts.map +0 -1
  89. package/dist/bytes/advanced.js +0 -1
  90. package/dist/bytes/index.d.ts +0 -112
  91. package/dist/bytes/index.d.ts.map +0 -1
  92. package/dist/bytes/index.js +0 -155
  93. package/dist/ckb/advanced.d.ts +0 -3
  94. package/dist/ckb/advanced.d.ts.map +0 -1
  95. package/dist/ckb/advanced.js +0 -2
  96. package/dist/ckb/hash.d.ts +0 -18
  97. package/dist/ckb/hash.d.ts.map +0 -1
  98. package/dist/ckb/hash.js +0 -19
  99. package/dist/ckb/index.d.ts +0 -6
  100. package/dist/ckb/index.d.ts.map +0 -1
  101. package/dist/ckb/index.js +0 -5
  102. package/dist/ckb/script.advanced.d.ts +0 -5
  103. package/dist/ckb/script.advanced.d.ts.map +0 -1
  104. package/dist/ckb/script.advanced.js +0 -13
  105. package/dist/ckb/script.d.ts +0 -156
  106. package/dist/ckb/script.d.ts.map +0 -1
  107. package/dist/ckb/script.js +0 -184
  108. package/dist/ckb/transaction.advanced.d.ts +0 -5
  109. package/dist/ckb/transaction.advanced.d.ts.map +0 -1
  110. package/dist/ckb/transaction.advanced.js +0 -9
  111. package/dist/ckb/transaction.d.ts +0 -1401
  112. package/dist/ckb/transaction.d.ts.map +0 -1
  113. package/dist/ckb/transaction.js +0 -1880
  114. package/dist/ckb/transactionErrors.d.ts +0 -15
  115. package/dist/ckb/transactionErrors.d.ts.map +0 -1
  116. package/dist/ckb/transactionErrors.js +0 -21
  117. package/dist/ckb/transactionLumos.d.ts +0 -30
  118. package/dist/ckb/transactionLumos.d.ts.map +0 -1
  119. package/dist/ckb/transactionLumos.js +0 -1
  120. package/dist/client/advanced.d.ts +0 -6
  121. package/dist/client/advanced.d.ts.map +0 -1
  122. package/dist/client/advanced.js +0 -5
  123. package/dist/client/cache/advanced.d.ts +0 -2
  124. package/dist/client/cache/advanced.d.ts.map +0 -1
  125. package/dist/client/cache/advanced.js +0 -1
  126. package/dist/client/cache/cache.d.ts +0 -98
  127. package/dist/client/cache/cache.d.ts.map +0 -1
  128. package/dist/client/cache/cache.js +0 -139
  129. package/dist/client/cache/index.d.ts +0 -3
  130. package/dist/client/cache/index.d.ts.map +0 -1
  131. package/dist/client/cache/index.js +0 -2
  132. package/dist/client/cache/memory.advanced.d.ts +0 -52
  133. package/dist/client/cache/memory.advanced.d.ts.map +0 -1
  134. package/dist/client/cache/memory.advanced.js +0 -149
  135. package/dist/client/cache/memory.d.ts +0 -53
  136. package/dist/client/cache/memory.d.ts.map +0 -1
  137. package/dist/client/cache/memory.js +0 -148
  138. package/dist/client/client.d.ts +0 -107
  139. package/dist/client/client.d.ts.map +0 -1
  140. package/dist/client/client.js +0 -328
  141. package/dist/client/clientPublicMainnet.advanced.d.ts +0 -4
  142. package/dist/client/clientPublicMainnet.advanced.d.ts.map +0 -1
  143. package/dist/client/clientPublicMainnet.advanced.js +0 -402
  144. package/dist/client/clientPublicMainnet.d.ts +0 -17
  145. package/dist/client/clientPublicMainnet.d.ts.map +0 -1
  146. package/dist/client/clientPublicMainnet.js +0 -40
  147. package/dist/client/clientPublicTestnet.advanced.d.ts +0 -4
  148. package/dist/client/clientPublicTestnet.advanced.d.ts.map +0 -1
  149. package/dist/client/clientPublicTestnet.advanced.js +0 -412
  150. package/dist/client/clientPublicTestnet.d.ts +0 -17
  151. package/dist/client/clientPublicTestnet.d.ts.map +0 -1
  152. package/dist/client/clientPublicTestnet.js +0 -40
  153. package/dist/client/clientTypes.advanced.d.ts +0 -25
  154. package/dist/client/clientTypes.advanced.d.ts.map +0 -1
  155. package/dist/client/clientTypes.advanced.js +0 -6
  156. package/dist/client/clientTypes.d.ts +0 -335
  157. package/dist/client/clientTypes.d.ts.map +0 -1
  158. package/dist/client/clientTypes.js +0 -232
  159. package/dist/client/index.d.ts +0 -8
  160. package/dist/client/index.d.ts.map +0 -1
  161. package/dist/client/index.js +0 -7
  162. package/dist/client/jsonRpc/advanced.d.ts +0 -3
  163. package/dist/client/jsonRpc/advanced.d.ts.map +0 -1
  164. package/dist/client/jsonRpc/advanced.js +0 -2
  165. package/dist/client/jsonRpc/client.d.ts +0 -160
  166. package/dist/client/jsonRpc/client.d.ts.map +0 -1
  167. package/dist/client/jsonRpc/client.js +0 -223
  168. package/dist/client/jsonRpc/index.d.ts +0 -2
  169. package/dist/client/jsonRpc/index.d.ts.map +0 -1
  170. package/dist/client/jsonRpc/index.js +0 -1
  171. package/dist/client/jsonRpc/transformers.d.ts +0 -51
  172. package/dist/client/jsonRpc/transformers.d.ts.map +0 -1
  173. package/dist/client/jsonRpc/transformers.js +0 -247
  174. package/dist/client/jsonRpc/types.d.ts +0 -101
  175. package/dist/client/jsonRpc/types.d.ts.map +0 -1
  176. package/dist/client/jsonRpc/types.js +0 -1
  177. package/dist/client/knownScript.d.ts +0 -27
  178. package/dist/client/knownScript.d.ts.map +0 -1
  179. package/dist/client/knownScript.js +0 -28
  180. package/dist/fixedPoint/index.d.ts +0 -55
  181. package/dist/fixedPoint/index.d.ts.map +0 -1
  182. package/dist/fixedPoint/index.js +0 -68
  183. package/dist/hasher/advanced.d.ts +0 -2
  184. package/dist/hasher/advanced.d.ts.map +0 -1
  185. package/dist/hasher/advanced.js +0 -1
  186. package/dist/hasher/hasher.d.ts +0 -35
  187. package/dist/hasher/hasher.d.ts.map +0 -1
  188. package/dist/hasher/hasher.js +0 -1
  189. package/dist/hasher/hasherCkb.d.ts +0 -57
  190. package/dist/hasher/hasherCkb.d.ts.map +0 -1
  191. package/dist/hasher/hasherCkb.js +0 -70
  192. package/dist/hasher/hasherKeecak256.d.ts +0 -41
  193. package/dist/hasher/hasherKeecak256.d.ts.map +0 -1
  194. package/dist/hasher/hasherKeecak256.js +0 -46
  195. package/dist/hasher/index.d.ts +0 -4
  196. package/dist/hasher/index.d.ts.map +0 -1
  197. package/dist/hasher/index.js +0 -3
  198. package/dist/hex/index.d.ts +0 -27
  199. package/dist/hex/index.d.ts.map +0 -1
  200. package/dist/hex/index.js +0 -17
  201. package/dist/index.d.ts +0 -3
  202. package/dist/index.d.ts.map +0 -1
  203. package/dist/index.js +0 -2
  204. package/dist/jsonRpc/advanced.d.ts +0 -2
  205. package/dist/jsonRpc/advanced.d.ts.map +0 -1
  206. package/dist/jsonRpc/advanced.js +0 -1
  207. package/dist/jsonRpc/index.d.ts +0 -2
  208. package/dist/jsonRpc/index.d.ts.map +0 -1
  209. package/dist/jsonRpc/index.js +0 -1
  210. package/dist/jsonRpc/requestor.d.ts +0 -49
  211. package/dist/jsonRpc/requestor.d.ts.map +0 -1
  212. package/dist/jsonRpc/requestor.js +0 -109
  213. package/dist/jsonRpc/transports/advanced.d.ts +0 -6
  214. package/dist/jsonRpc/transports/advanced.d.ts.map +0 -1
  215. package/dist/jsonRpc/transports/advanced.js +0 -5
  216. package/dist/jsonRpc/transports/factory.d.ts +0 -6
  217. package/dist/jsonRpc/transports/factory.d.ts.map +0 -1
  218. package/dist/jsonRpc/transports/factory.js +0 -8
  219. package/dist/jsonRpc/transports/fallback.d.ts +0 -8
  220. package/dist/jsonRpc/transports/fallback.d.ts.map +0 -1
  221. package/dist/jsonRpc/transports/fallback.js +0 -22
  222. package/dist/jsonRpc/transports/http.d.ts +0 -8
  223. package/dist/jsonRpc/transports/http.d.ts.map +0 -1
  224. package/dist/jsonRpc/transports/http.js +0 -22
  225. package/dist/jsonRpc/transports/transport.d.ts +0 -18
  226. package/dist/jsonRpc/transports/transport.d.ts.map +0 -1
  227. package/dist/jsonRpc/transports/transport.js +0 -1
  228. package/dist/jsonRpc/transports/webSocket.d.ts +0 -11
  229. package/dist/jsonRpc/transports/webSocket.d.ts.map +0 -1
  230. package/dist/jsonRpc/transports/webSocket.js +0 -87
  231. package/dist/keystore/index.d.ts +0 -31
  232. package/dist/keystore/index.d.ts.map +0 -1
  233. package/dist/keystore/index.js +0 -106
  234. package/dist/molecule/barrel.d.ts +0 -4
  235. package/dist/molecule/barrel.d.ts.map +0 -1
  236. package/dist/molecule/codec.d.ts +0 -146
  237. package/dist/molecule/codec.d.ts.map +0 -1
  238. package/dist/molecule/codec.js +0 -516
  239. package/dist/molecule/entity.d.ts +0 -112
  240. package/dist/molecule/entity.d.ts.map +0 -1
  241. package/dist/molecule/entity.js +0 -142
  242. package/dist/molecule/index.d.ts +0 -2
  243. package/dist/molecule/index.d.ts.map +0 -1
  244. package/dist/molecule/index.js +0 -1
  245. package/dist/molecule/predefined.d.ts +0 -57
  246. package/dist/molecule/predefined.d.ts.map +0 -1
  247. package/dist/molecule/predefined.js +0 -83
  248. package/dist/num/index.d.ts +0 -148
  249. package/dist/num/index.d.ts.map +0 -1
  250. package/dist/num/index.js +0 -204
  251. package/dist/signer/btc/index.d.ts +0 -4
  252. package/dist/signer/btc/index.d.ts.map +0 -1
  253. package/dist/signer/btc/index.js +0 -3
  254. package/dist/signer/btc/signerBtc.d.ts +0 -59
  255. package/dist/signer/btc/signerBtc.d.ts.map +0 -1
  256. package/dist/signer/btc/signerBtc.js +0 -83
  257. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -55
  258. package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +0 -1
  259. package/dist/signer/btc/signerBtcPublicKeyReadonly.js +0 -61
  260. package/dist/signer/btc/verify.d.ts +0 -40
  261. package/dist/signer/btc/verify.d.ts.map +0 -1
  262. package/dist/signer/btc/verify.js +0 -69
  263. package/dist/signer/ckb/index.d.ts +0 -6
  264. package/dist/signer/ckb/index.d.ts.map +0 -1
  265. package/dist/signer/ckb/index.js +0 -5
  266. package/dist/signer/ckb/signerCkbPrivateKey.d.ts +0 -16
  267. package/dist/signer/ckb/signerCkbPrivateKey.d.ts.map +0 -1
  268. package/dist/signer/ckb/signerCkbPrivateKey.js +0 -42
  269. package/dist/signer/ckb/signerCkbPublicKey.d.ts +0 -27
  270. package/dist/signer/ckb/signerCkbPublicKey.d.ts.map +0 -1
  271. package/dist/signer/ckb/signerCkbPublicKey.js +0 -101
  272. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +0 -68
  273. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +0 -1
  274. package/dist/signer/ckb/signerCkbScriptReadonly.js +0 -78
  275. package/dist/signer/ckb/verifyCkbSecp256k1.d.ts +0 -11
  276. package/dist/signer/ckb/verifyCkbSecp256k1.d.ts.map +0 -1
  277. package/dist/signer/ckb/verifyCkbSecp256k1.js +0 -22
  278. package/dist/signer/ckb/verifyJoyId.d.ts +0 -6
  279. package/dist/signer/ckb/verifyJoyId.d.ts.map +0 -1
  280. package/dist/signer/ckb/verifyJoyId.js +0 -16
  281. package/dist/signer/doge/index.d.ts +0 -5
  282. package/dist/signer/doge/index.d.ts.map +0 -1
  283. package/dist/signer/doge/index.js +0 -4
  284. package/dist/signer/doge/signerDoge.d.ts +0 -52
  285. package/dist/signer/doge/signerDoge.d.ts.map +0 -1
  286. package/dist/signer/doge/signerDoge.js +0 -82
  287. package/dist/signer/doge/signerDogeAddressReadonly.d.ts +0 -41
  288. package/dist/signer/doge/signerDogeAddressReadonly.d.ts.map +0 -1
  289. package/dist/signer/doge/signerDogeAddressReadonly.js +0 -45
  290. package/dist/signer/doge/signerDogePrivateKey.d.ts +0 -52
  291. package/dist/signer/doge/signerDogePrivateKey.d.ts.map +0 -1
  292. package/dist/signer/doge/signerDogePrivateKey.js +0 -68
  293. package/dist/signer/doge/verify.d.ts +0 -17
  294. package/dist/signer/doge/verify.d.ts.map +0 -1
  295. package/dist/signer/doge/verify.js +0 -29
  296. package/dist/signer/dummy/alwaysError.d.ts +0 -12
  297. package/dist/signer/dummy/alwaysError.d.ts.map +0 -1
  298. package/dist/signer/dummy/alwaysError.js +0 -13
  299. package/dist/signer/dummy/dummy.d.ts +0 -15
  300. package/dist/signer/dummy/dummy.d.ts.map +0 -1
  301. package/dist/signer/dummy/dummy.js +0 -22
  302. package/dist/signer/dummy/index.d.ts +0 -4
  303. package/dist/signer/dummy/index.d.ts.map +0 -1
  304. package/dist/signer/dummy/index.js +0 -3
  305. package/dist/signer/dummy/openLink.d.ts +0 -12
  306. package/dist/signer/dummy/openLink.d.ts.map +0 -1
  307. package/dist/signer/dummy/openLink.js +0 -13
  308. package/dist/signer/evm/index.d.ts +0 -4
  309. package/dist/signer/evm/index.d.ts.map +0 -1
  310. package/dist/signer/evm/index.js +0 -3
  311. package/dist/signer/evm/signerEvm.d.ts +0 -59
  312. package/dist/signer/evm/signerEvm.d.ts.map +0 -1
  313. package/dist/signer/evm/signerEvm.js +0 -139
  314. package/dist/signer/evm/signerEvmAddressReadonly.d.ts +0 -47
  315. package/dist/signer/evm/signerEvmAddressReadonly.d.ts.map +0 -1
  316. package/dist/signer/evm/signerEvmAddressReadonly.js +0 -51
  317. package/dist/signer/evm/verify.d.ts +0 -6
  318. package/dist/signer/evm/verify.d.ts.map +0 -1
  319. package/dist/signer/evm/verify.js +0 -9
  320. package/dist/signer/index.d.ts +0 -8
  321. package/dist/signer/index.d.ts.map +0 -1
  322. package/dist/signer/index.js +0 -7
  323. package/dist/signer/nostr/index.d.ts +0 -5
  324. package/dist/signer/nostr/index.d.ts.map +0 -1
  325. package/dist/signer/nostr/index.js +0 -4
  326. package/dist/signer/nostr/signerNostr.d.ts +0 -72
  327. package/dist/signer/nostr/signerNostr.d.ts.map +0 -1
  328. package/dist/signer/nostr/signerNostr.js +0 -96
  329. package/dist/signer/nostr/signerNostrPrivateKey.d.ts +0 -14
  330. package/dist/signer/nostr/signerNostrPrivateKey.d.ts.map +0 -1
  331. package/dist/signer/nostr/signerNostrPrivateKey.js +0 -34
  332. package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts +0 -15
  333. package/dist/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +0 -1
  334. package/dist/signer/nostr/signerNostrPublicKeyReadonly.js +0 -26
  335. package/dist/signer/nostr/verify.d.ts +0 -9
  336. package/dist/signer/nostr/verify.d.ts.map +0 -1
  337. package/dist/signer/nostr/verify.js +0 -55
  338. package/dist/signer/signer/index.d.ts +0 -256
  339. package/dist/signer/signer/index.d.ts.map +0 -1
  340. package/dist/signer/signer/index.js +0 -305
  341. package/dist/utils/index.d.ts +0 -97
  342. package/dist/utils/index.d.ts.map +0 -1
  343. package/dist/utils/index.js +0 -55
  344. package/dist.commonjs/address/address.advanced.d.ts +0 -65
  345. package/dist.commonjs/address/address.advanced.d.ts.map +0 -1
  346. package/dist.commonjs/address/address.advanced.js +0 -152
  347. package/dist.commonjs/address/advanced.d.ts +0 -2
  348. package/dist.commonjs/address/advanced.d.ts.map +0 -1
  349. package/dist.commonjs/address/advanced.js +0 -17
  350. package/dist.commonjs/address/index.d.ts +0 -58
  351. package/dist.commonjs/address/index.d.ts.map +0 -1
  352. package/dist.commonjs/address/index.js +0 -82
  353. package/dist.commonjs/advanced.d.ts.map +0 -1
  354. package/dist.commonjs/advancedBarrel.d.ts.map +0 -1
  355. package/dist.commonjs/barrel.d.ts.map +0 -1
  356. package/dist.commonjs/bytes/advanced.d.ts +0 -6
  357. package/dist.commonjs/bytes/advanced.d.ts.map +0 -1
  358. package/dist.commonjs/bytes/advanced.js +0 -2
  359. package/dist.commonjs/bytes/index.d.ts +0 -112
  360. package/dist.commonjs/bytes/index.d.ts.map +0 -1
  361. package/dist.commonjs/bytes/index.js +0 -163
  362. package/dist.commonjs/ckb/advanced.d.ts +0 -3
  363. package/dist.commonjs/ckb/advanced.d.ts.map +0 -1
  364. package/dist.commonjs/ckb/advanced.js +0 -18
  365. package/dist.commonjs/ckb/hash.d.ts +0 -18
  366. package/dist.commonjs/ckb/hash.d.ts.map +0 -1
  367. package/dist.commonjs/ckb/hash.js +0 -22
  368. package/dist.commonjs/ckb/index.d.ts +0 -6
  369. package/dist.commonjs/ckb/index.d.ts.map +0 -1
  370. package/dist.commonjs/ckb/index.js +0 -21
  371. package/dist.commonjs/ckb/script.advanced.d.ts +0 -5
  372. package/dist.commonjs/ckb/script.advanced.d.ts.map +0 -1
  373. package/dist.commonjs/ckb/script.advanced.js +0 -16
  374. package/dist.commonjs/ckb/script.d.ts +0 -156
  375. package/dist.commonjs/ckb/script.d.ts.map +0 -1
  376. package/dist.commonjs/ckb/script.js +0 -190
  377. package/dist.commonjs/ckb/transaction.advanced.d.ts +0 -5
  378. package/dist.commonjs/ckb/transaction.advanced.d.ts.map +0 -1
  379. package/dist.commonjs/ckb/transaction.advanced.js +0 -12
  380. package/dist.commonjs/ckb/transaction.d.ts +0 -1401
  381. package/dist.commonjs/ckb/transaction.d.ts.map +0 -1
  382. package/dist.commonjs/ckb/transaction.js +0 -1894
  383. package/dist.commonjs/ckb/transactionErrors.d.ts +0 -15
  384. package/dist.commonjs/ckb/transactionErrors.d.ts.map +0 -1
  385. package/dist.commonjs/ckb/transactionErrors.js +0 -26
  386. package/dist.commonjs/ckb/transactionLumos.d.ts +0 -30
  387. package/dist.commonjs/ckb/transactionLumos.d.ts.map +0 -1
  388. package/dist.commonjs/ckb/transactionLumos.js +0 -2
  389. package/dist.commonjs/client/advanced.d.ts +0 -6
  390. package/dist.commonjs/client/advanced.d.ts.map +0 -1
  391. package/dist.commonjs/client/advanced.js +0 -21
  392. package/dist.commonjs/client/cache/advanced.d.ts +0 -2
  393. package/dist.commonjs/client/cache/advanced.d.ts.map +0 -1
  394. package/dist.commonjs/client/cache/advanced.js +0 -17
  395. package/dist.commonjs/client/cache/cache.d.ts +0 -98
  396. package/dist.commonjs/client/cache/cache.d.ts.map +0 -1
  397. package/dist.commonjs/client/cache/cache.js +0 -143
  398. package/dist.commonjs/client/cache/index.d.ts +0 -3
  399. package/dist.commonjs/client/cache/index.d.ts.map +0 -1
  400. package/dist.commonjs/client/cache/index.js +0 -18
  401. package/dist.commonjs/client/cache/memory.advanced.d.ts +0 -52
  402. package/dist.commonjs/client/cache/memory.advanced.d.ts.map +0 -1
  403. package/dist.commonjs/client/cache/memory.advanced.js +0 -158
  404. package/dist.commonjs/client/cache/memory.d.ts +0 -53
  405. package/dist.commonjs/client/cache/memory.d.ts.map +0 -1
  406. package/dist.commonjs/client/cache/memory.js +0 -152
  407. package/dist.commonjs/client/client.d.ts +0 -107
  408. package/dist.commonjs/client/client.d.ts.map +0 -1
  409. package/dist.commonjs/client/client.js +0 -332
  410. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +0 -4
  411. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +0 -1
  412. package/dist.commonjs/client/clientPublicMainnet.advanced.js +0 -405
  413. package/dist.commonjs/client/clientPublicMainnet.d.ts +0 -17
  414. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +0 -1
  415. package/dist.commonjs/client/clientPublicMainnet.js +0 -47
  416. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +0 -4
  417. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +0 -1
  418. package/dist.commonjs/client/clientPublicTestnet.advanced.js +0 -415
  419. package/dist.commonjs/client/clientPublicTestnet.d.ts +0 -17
  420. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +0 -1
  421. package/dist.commonjs/client/clientPublicTestnet.js +0 -47
  422. package/dist.commonjs/client/clientTypes.advanced.d.ts +0 -25
  423. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +0 -1
  424. package/dist.commonjs/client/clientTypes.advanced.js +0 -10
  425. package/dist.commonjs/client/clientTypes.d.ts +0 -335
  426. package/dist.commonjs/client/clientTypes.d.ts.map +0 -1
  427. package/dist.commonjs/client/clientTypes.js +0 -251
  428. package/dist.commonjs/client/index.d.ts +0 -8
  429. package/dist.commonjs/client/index.d.ts.map +0 -1
  430. package/dist.commonjs/client/index.js +0 -23
  431. package/dist.commonjs/client/jsonRpc/advanced.d.ts +0 -3
  432. package/dist.commonjs/client/jsonRpc/advanced.d.ts.map +0 -1
  433. package/dist.commonjs/client/jsonRpc/advanced.js +0 -18
  434. package/dist.commonjs/client/jsonRpc/client.d.ts +0 -160
  435. package/dist.commonjs/client/jsonRpc/client.d.ts.map +0 -1
  436. package/dist.commonjs/client/jsonRpc/client.js +0 -227
  437. package/dist.commonjs/client/jsonRpc/index.d.ts +0 -2
  438. package/dist.commonjs/client/jsonRpc/index.d.ts.map +0 -1
  439. package/dist.commonjs/client/jsonRpc/index.js +0 -17
  440. package/dist.commonjs/client/jsonRpc/transformers.d.ts +0 -51
  441. package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +0 -1
  442. package/dist.commonjs/client/jsonRpc/transformers.js +0 -251
  443. package/dist.commonjs/client/jsonRpc/types.d.ts +0 -101
  444. package/dist.commonjs/client/jsonRpc/types.d.ts.map +0 -1
  445. package/dist.commonjs/client/jsonRpc/types.js +0 -2
  446. package/dist.commonjs/client/knownScript.d.ts +0 -27
  447. package/dist.commonjs/client/knownScript.d.ts.map +0 -1
  448. package/dist.commonjs/client/knownScript.js +0 -31
  449. package/dist.commonjs/fixedPoint/index.d.ts +0 -55
  450. package/dist.commonjs/fixedPoint/index.d.ts.map +0 -1
  451. package/dist.commonjs/fixedPoint/index.js +0 -73
  452. package/dist.commonjs/hasher/advanced.d.ts +0 -2
  453. package/dist.commonjs/hasher/advanced.d.ts.map +0 -1
  454. package/dist.commonjs/hasher/advanced.js +0 -4
  455. package/dist.commonjs/hasher/hasher.d.ts +0 -35
  456. package/dist.commonjs/hasher/hasher.d.ts.map +0 -1
  457. package/dist.commonjs/hasher/hasher.js +0 -2
  458. package/dist.commonjs/hasher/hasherCkb.d.ts +0 -57
  459. package/dist.commonjs/hasher/hasherCkb.d.ts.map +0 -1
  460. package/dist.commonjs/hasher/hasherCkb.js +0 -75
  461. package/dist.commonjs/hasher/hasherKeecak256.d.ts +0 -41
  462. package/dist.commonjs/hasher/hasherKeecak256.d.ts.map +0 -1
  463. package/dist.commonjs/hasher/hasherKeecak256.js +0 -50
  464. package/dist.commonjs/hasher/index.d.ts +0 -4
  465. package/dist.commonjs/hasher/index.d.ts.map +0 -1
  466. package/dist.commonjs/hasher/index.js +0 -19
  467. package/dist.commonjs/hex/index.d.ts +0 -27
  468. package/dist.commonjs/hex/index.d.ts.map +0 -1
  469. package/dist.commonjs/hex/index.js +0 -20
  470. package/dist.commonjs/index.d.ts.map +0 -1
  471. package/dist.commonjs/jsonRpc/advanced.d.ts +0 -2
  472. package/dist.commonjs/jsonRpc/advanced.d.ts.map +0 -1
  473. package/dist.commonjs/jsonRpc/advanced.js +0 -17
  474. package/dist.commonjs/jsonRpc/index.d.ts +0 -2
  475. package/dist.commonjs/jsonRpc/index.d.ts.map +0 -1
  476. package/dist.commonjs/jsonRpc/index.js +0 -17
  477. package/dist.commonjs/jsonRpc/requestor.d.ts +0 -49
  478. package/dist.commonjs/jsonRpc/requestor.d.ts.map +0 -1
  479. package/dist.commonjs/jsonRpc/requestor.js +0 -113
  480. package/dist.commonjs/jsonRpc/transports/advanced.d.ts +0 -6
  481. package/dist.commonjs/jsonRpc/transports/advanced.d.ts.map +0 -1
  482. package/dist.commonjs/jsonRpc/transports/advanced.js +0 -21
  483. package/dist.commonjs/jsonRpc/transports/factory.d.ts +0 -6
  484. package/dist.commonjs/jsonRpc/transports/factory.d.ts.map +0 -1
  485. package/dist.commonjs/jsonRpc/transports/factory.js +0 -11
  486. package/dist.commonjs/jsonRpc/transports/fallback.d.ts +0 -8
  487. package/dist.commonjs/jsonRpc/transports/fallback.d.ts.map +0 -1
  488. package/dist.commonjs/jsonRpc/transports/fallback.js +0 -26
  489. package/dist.commonjs/jsonRpc/transports/http.d.ts +0 -8
  490. package/dist.commonjs/jsonRpc/transports/http.d.ts.map +0 -1
  491. package/dist.commonjs/jsonRpc/transports/http.js +0 -26
  492. package/dist.commonjs/jsonRpc/transports/transport.d.ts +0 -18
  493. package/dist.commonjs/jsonRpc/transports/transport.d.ts.map +0 -1
  494. package/dist.commonjs/jsonRpc/transports/transport.js +0 -2
  495. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts +0 -11
  496. package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +0 -1
  497. package/dist.commonjs/jsonRpc/transports/webSocket.js +0 -94
  498. package/dist.commonjs/keystore/index.d.ts +0 -31
  499. package/dist.commonjs/keystore/index.d.ts.map +0 -1
  500. package/dist.commonjs/keystore/index.js +0 -110
  501. package/dist.commonjs/molecule/barrel.d.ts +0 -4
  502. package/dist.commonjs/molecule/barrel.d.ts.map +0 -1
  503. package/dist.commonjs/molecule/barrel.js +0 -19
  504. package/dist.commonjs/molecule/codec.d.ts +0 -146
  505. package/dist.commonjs/molecule/codec.d.ts.map +0 -1
  506. package/dist.commonjs/molecule/codec.js +0 -531
  507. package/dist.commonjs/molecule/entity.d.ts +0 -112
  508. package/dist.commonjs/molecule/entity.d.ts.map +0 -1
  509. package/dist.commonjs/molecule/entity.js +0 -147
  510. package/dist.commonjs/molecule/index.d.ts +0 -2
  511. package/dist.commonjs/molecule/index.d.ts.map +0 -1
  512. package/dist.commonjs/molecule/index.js +0 -37
  513. package/dist.commonjs/molecule/predefined.d.ts +0 -57
  514. package/dist.commonjs/molecule/predefined.d.ts.map +0 -1
  515. package/dist.commonjs/molecule/predefined.js +0 -87
  516. package/dist.commonjs/num/index.d.ts +0 -148
  517. package/dist.commonjs/num/index.d.ts.map +0 -1
  518. package/dist.commonjs/num/index.js +0 -216
  519. package/dist.commonjs/signer/btc/index.d.ts +0 -4
  520. package/dist.commonjs/signer/btc/index.d.ts.map +0 -1
  521. package/dist.commonjs/signer/btc/index.js +0 -19
  522. package/dist.commonjs/signer/btc/signerBtc.d.ts +0 -59
  523. package/dist.commonjs/signer/btc/signerBtc.d.ts.map +0 -1
  524. package/dist.commonjs/signer/btc/signerBtc.js +0 -87
  525. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -55
  526. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +0 -1
  527. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +0 -65
  528. package/dist.commonjs/signer/btc/verify.d.ts +0 -40
  529. package/dist.commonjs/signer/btc/verify.d.ts.map +0 -1
  530. package/dist.commonjs/signer/btc/verify.js +0 -80
  531. package/dist.commonjs/signer/ckb/index.d.ts +0 -6
  532. package/dist.commonjs/signer/ckb/index.d.ts.map +0 -1
  533. package/dist.commonjs/signer/ckb/index.js +0 -21
  534. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.d.ts +0 -16
  535. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.d.ts.map +0 -1
  536. package/dist.commonjs/signer/ckb/signerCkbPrivateKey.js +0 -46
  537. package/dist.commonjs/signer/ckb/signerCkbPublicKey.d.ts +0 -27
  538. package/dist.commonjs/signer/ckb/signerCkbPublicKey.d.ts.map +0 -1
  539. package/dist.commonjs/signer/ckb/signerCkbPublicKey.js +0 -105
  540. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +0 -68
  541. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +0 -1
  542. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +0 -82
  543. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.d.ts +0 -11
  544. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.d.ts.map +0 -1
  545. package/dist.commonjs/signer/ckb/verifyCkbSecp256k1.js +0 -26
  546. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +0 -6
  547. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts.map +0 -1
  548. package/dist.commonjs/signer/ckb/verifyJoyId.js +0 -19
  549. package/dist.commonjs/signer/doge/index.d.ts +0 -5
  550. package/dist.commonjs/signer/doge/index.d.ts.map +0 -1
  551. package/dist.commonjs/signer/doge/index.js +0 -20
  552. package/dist.commonjs/signer/doge/signerDoge.d.ts +0 -52
  553. package/dist.commonjs/signer/doge/signerDoge.d.ts.map +0 -1
  554. package/dist.commonjs/signer/doge/signerDoge.js +0 -89
  555. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts +0 -41
  556. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.d.ts.map +0 -1
  557. package/dist.commonjs/signer/doge/signerDogeAddressReadonly.js +0 -49
  558. package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts +0 -52
  559. package/dist.commonjs/signer/doge/signerDogePrivateKey.d.ts.map +0 -1
  560. package/dist.commonjs/signer/doge/signerDogePrivateKey.js +0 -72
  561. package/dist.commonjs/signer/doge/verify.d.ts +0 -17
  562. package/dist.commonjs/signer/doge/verify.d.ts.map +0 -1
  563. package/dist.commonjs/signer/doge/verify.js +0 -33
  564. package/dist.commonjs/signer/dummy/alwaysError.d.ts +0 -12
  565. package/dist.commonjs/signer/dummy/alwaysError.d.ts.map +0 -1
  566. package/dist.commonjs/signer/dummy/alwaysError.js +0 -17
  567. package/dist.commonjs/signer/dummy/dummy.d.ts +0 -15
  568. package/dist.commonjs/signer/dummy/dummy.d.ts.map +0 -1
  569. package/dist.commonjs/signer/dummy/dummy.js +0 -26
  570. package/dist.commonjs/signer/dummy/index.d.ts +0 -4
  571. package/dist.commonjs/signer/dummy/index.d.ts.map +0 -1
  572. package/dist.commonjs/signer/dummy/index.js +0 -19
  573. package/dist.commonjs/signer/dummy/openLink.d.ts +0 -12
  574. package/dist.commonjs/signer/dummy/openLink.d.ts.map +0 -1
  575. package/dist.commonjs/signer/dummy/openLink.js +0 -17
  576. package/dist.commonjs/signer/evm/index.d.ts +0 -4
  577. package/dist.commonjs/signer/evm/index.d.ts.map +0 -1
  578. package/dist.commonjs/signer/evm/index.js +0 -19
  579. package/dist.commonjs/signer/evm/signerEvm.d.ts +0 -59
  580. package/dist.commonjs/signer/evm/signerEvm.d.ts.map +0 -1
  581. package/dist.commonjs/signer/evm/signerEvm.js +0 -143
  582. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +0 -47
  583. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts.map +0 -1
  584. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +0 -55
  585. package/dist.commonjs/signer/evm/verify.d.ts +0 -6
  586. package/dist.commonjs/signer/evm/verify.d.ts.map +0 -1
  587. package/dist.commonjs/signer/evm/verify.js +0 -12
  588. package/dist.commonjs/signer/index.d.ts +0 -8
  589. package/dist.commonjs/signer/index.d.ts.map +0 -1
  590. package/dist.commonjs/signer/index.js +0 -23
  591. package/dist.commonjs/signer/nostr/index.d.ts +0 -5
  592. package/dist.commonjs/signer/nostr/index.d.ts.map +0 -1
  593. package/dist.commonjs/signer/nostr/index.js +0 -20
  594. package/dist.commonjs/signer/nostr/signerNostr.d.ts +0 -72
  595. package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +0 -1
  596. package/dist.commonjs/signer/nostr/signerNostr.js +0 -100
  597. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts +0 -14
  598. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.d.ts.map +0 -1
  599. package/dist.commonjs/signer/nostr/signerNostrPrivateKey.js +0 -38
  600. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts +0 -15
  601. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.d.ts.map +0 -1
  602. package/dist.commonjs/signer/nostr/signerNostrPublicKeyReadonly.js +0 -30
  603. package/dist.commonjs/signer/nostr/verify.d.ts +0 -9
  604. package/dist.commonjs/signer/nostr/verify.d.ts.map +0 -1
  605. package/dist.commonjs/signer/nostr/verify.js +0 -60
  606. package/dist.commonjs/signer/signer/index.d.ts +0 -256
  607. package/dist.commonjs/signer/signer/index.d.ts.map +0 -1
  608. package/dist.commonjs/signer/signer/index.js +0 -311
  609. package/dist.commonjs/utils/index.d.ts +0 -97
  610. package/dist.commonjs/utils/index.d.ts.map +0 -1
  611. package/dist.commonjs/utils/index.js +0 -62
  612. /package/{dist/molecule/barrel.js → src/codec/index.ts} +0 -0
@@ -0,0 +1,489 @@
1
+ import type { ClientBlockHeader } from "../client/clientTypes.js";
2
+ import { codec, codecPadding, codecUint, Entity } from "../codec/index.js";
3
+ import { Zero } from "../fixedPoint/index.js";
4
+ import { type Hex, type HexLike } from "../hex/index.js";
5
+ import { mol } from "../molecule/index.js";
6
+ import { numFrom, NumLike, numToHex, type Num } from "../num/index.js";
7
+ import { gcd } from "../utils/index.js";
8
+
9
+ /**
10
+ * EpochLike
11
+ *
12
+ * Union type that represents any allowed input shapes that can be converted
13
+ * into an Epoch instance.
14
+ *
15
+ * Accepted shapes:
16
+ * - Tuple: [integer, numerator, denominator] where each element is NumLike
17
+ * - Object: { integer, numerator, denominator } where each field is NumLike
18
+ * - Packed numeric form: Num (bigint) or Hex (RPC-style packed hex)
19
+ *
20
+ * Notes:
21
+ * - When constructing an Epoch from a Num or Hex the packed numeric representation
22
+ * encodes integer (24 bits), numerator (16 bits) and denominator (16 bits).
23
+ * - Use Epoch.from() to convert any EpochLike into an Epoch instance.
24
+ *
25
+ * @example
26
+ * // From tuple
27
+ * Epoch.from([1n, 0n, 1n]);
28
+ */
29
+ export type EpochLike =
30
+ | [NumLike, NumLike, NumLike]
31
+ | {
32
+ integer: NumLike;
33
+ numerator: NumLike;
34
+ denominator: NumLike;
35
+ }
36
+ | Num
37
+ | Hex;
38
+
39
+ /**
40
+ * Epoch
41
+ *
42
+ * Represents a blockchain epoch consisting of a whole integer part and an
43
+ * optional fractional part represented as numerator/denominator.
44
+ *
45
+ * Behavior highlights:
46
+ * - Internally stores values as Num (bigint).
47
+ * - Provides normalization routines to canonicalize the fractional part:
48
+ * - normalizeBase(): fixes zero/negative denominators
49
+ * - normalizeCanonical(): reduces fraction, borrows/carries whole units
50
+ * - Supports arithmetic (add/sub), comparison and conversion utilities.
51
+ *
52
+ * @example
53
+ * const e = new Epoch(1n, 1n, 2n); // 1 + 1/2
54
+ *
55
+ * @remarks
56
+ * This class is primarily a thin value-object; operations return new Epoch instances.
57
+ */
58
+ @codec(
59
+ mol.struct({
60
+ padding: codecPadding(1),
61
+ denominator: codecUint(2),
62
+ numerator: codecUint(2),
63
+ integer: codecUint(3),
64
+ }),
65
+ )
66
+ export class Epoch extends Entity.Base<EpochLike, Epoch>() {
67
+ /**
68
+ * Construct a new Epoch instance.
69
+ *
70
+ * @param integer - Whole epoch units (Num/bigint)
71
+ * @param numerator - Fractional numerator (Num).
72
+ * @param denominator - Fractional denominator (Num).
73
+ */
74
+ public constructor(
75
+ public readonly integer: Num,
76
+ public readonly numerator: Num,
77
+ public readonly denominator: Num,
78
+ ) {
79
+ super();
80
+ }
81
+
82
+ /**
83
+ * Normalize simpler base invariants:
84
+ * - If denominator === 0, set denominator to 1 and numerator to 0 for arithmetic convenience.
85
+ * - If denominator is negative flip signs of numerator and denominator to keep denominator positive.
86
+ *
87
+ * This is a minimal correction used before arithmetic or canonical normalization.
88
+ *
89
+ * @returns New Epoch with denominator corrected (but fraction not reduced).
90
+ */
91
+ normalizeBase(): Epoch {
92
+ if (this.denominator === Zero) {
93
+ return new Epoch(this.integer, Zero, numFrom(1));
94
+ }
95
+
96
+ if (this.denominator < Zero) {
97
+ return new Epoch(this.integer, -this.numerator, -this.denominator);
98
+ }
99
+
100
+ return this;
101
+ }
102
+
103
+ /**
104
+ * Perform full canonical normalization of the epoch value.
105
+ *
106
+ * Steps:
107
+ * 1. Apply base normalization (normalizeBase).
108
+ * 2. If numerator is negative, borrow whole denominator(s) from the integer part
109
+ * so numerator becomes non-negative. This ensures 0 <= numerator < denominator whenever possible.
110
+ * 3. Reduce numerator/denominator by their greatest common divisor (gcd).
111
+ * 4. Carry any whole units from the reduced numerator into the integer part.
112
+ * 5. Ensure numerator is the strict remainder (numerator < denominator).
113
+ *
114
+ * @returns Canonicalized Epoch with a non-negative, reduced fractional part and integer adjusted accordingly.
115
+ */
116
+ normalizeCanonical(): Epoch {
117
+ let { integer, numerator, denominator } = this.normalizeBase();
118
+
119
+ // If numerator is negative, borrow enough whole denominators from integer so numerator >= 0.
120
+ if (numerator < Zero) {
121
+ // n is the minimal non-negative integer such that numerator + n * denominator >= 0
122
+ const n = (-numerator + denominator - 1n) / denominator;
123
+ integer -= n;
124
+ numerator += denominator * n;
125
+ }
126
+
127
+ // Reduce the fractional part to lowest terms to keep canonical form and avoid unnecessarily large multiples.
128
+ const g = gcd(numerator, denominator);
129
+ numerator /= g;
130
+ denominator /= g;
131
+
132
+ // Move any full units contained in the fraction into integer (e.g., 5/2 => +2 integer, remainder 1/2).
133
+ integer += numerator / denominator;
134
+
135
+ // Remainder numerator after removing whole units; ensures numerator < denominator.
136
+ numerator %= denominator;
137
+
138
+ return new Epoch(integer, numerator, denominator);
139
+ }
140
+
141
+ /**
142
+ * Backwards-compatible array-style index 0 referencing the whole epoch integer.
143
+ *
144
+ * @returns integer portion (Num)
145
+ * @deprecated Use `.integer` property instead.
146
+ */
147
+ get 0(): Num {
148
+ return this.integer;
149
+ }
150
+
151
+ /**
152
+ * Backwards-compatible array-style index 1 referencing the epoch fractional numerator.
153
+ *
154
+ * @returns numerator portion (Num)
155
+ * @deprecated Use `.numerator` property instead.
156
+ */
157
+ get 1(): Num {
158
+ return this.numerator;
159
+ }
160
+
161
+ /**
162
+ * Backwards-compatible array-style index 2 referencing the epoch fractional denominator.
163
+ *
164
+ * @returns denominator portion (Num)
165
+ * @deprecated Use `.denominator` property instead.
166
+ */
167
+ get 2(): Num {
168
+ return this.denominator;
169
+ }
170
+
171
+ /**
172
+ * Convert this Epoch into its RPC-style packed numeric representation (Num).
173
+ *
174
+ * Packing layout (little-endian style fields):
175
+ * - integer: lower 24 bits
176
+ * - numerator: next 16 bits
177
+ * - denominator: next 16 bits
178
+ *
179
+ * Throws if any component is negative since packed representation assumes non-negative components.
180
+ *
181
+ * @throws {Error} If integer, numerator or denominator are negative.
182
+ * @throws {Error} If integer, numerator or denominator overflow the packing limits.
183
+ * @returns Packed numeric representation (Num) suitable for RPC packing.
184
+ */
185
+ toNum(): Num {
186
+ if (
187
+ this.integer < Zero ||
188
+ this.numerator < Zero ||
189
+ this.denominator < Zero
190
+ ) {
191
+ throw Error("Negative values in Epoch to Num conversion");
192
+ }
193
+
194
+ if (
195
+ this.integer >= numFrom("0x1000000") || // 24-bit limit
196
+ this.numerator >= numFrom("0x10000") || // 16-bit limit
197
+ this.denominator >= numFrom("0x10000") // 16-bit limit
198
+ ) {
199
+ throw Error(
200
+ "Integer must be < 2^24, numerator and denominator must be < 2^16",
201
+ );
202
+ }
203
+
204
+ return (
205
+ this.integer +
206
+ (this.numerator << numFrom(24)) +
207
+ (this.denominator << numFrom(40))
208
+ );
209
+ }
210
+
211
+ /**
212
+ * Convert epoch to hex string representation of the RPC-style packed numeric form.
213
+ *
214
+ * Returns the same representation used by CKB RPC responses where the
215
+ * packed numeric bytes may be trimmed of leading zeros, see {@link numToHex}
216
+ *
217
+ * @returns Hex string corresponding to the packed epoch.
218
+ */
219
+ toPackedHex(): Hex {
220
+ return numToHex(this.toNum());
221
+ }
222
+
223
+ /**
224
+ * Construct an Epoch by unpacking a RPC-style packed numeric form.
225
+ *
226
+ * @param v - NumLike packed epoch (like Num and Hex)
227
+ * @returns Epoch whose integer, numerator and denominator are extracted from the packed layout.
228
+ */
229
+ static fromNum(v: NumLike): Epoch {
230
+ const num = numFrom(v);
231
+
232
+ return new Epoch(
233
+ num & numFrom("0xffffff"),
234
+ (num >> numFrom(24)) & numFrom("0xffff"),
235
+ (num >> numFrom(40)) & numFrom("0xffff"),
236
+ );
237
+ }
238
+
239
+ /**
240
+ * Create an Epoch from an EpochLike value.
241
+ *
242
+ * Accepts:
243
+ * - an Epoch instance (returned as-is)
244
+ * - an array [integer, numerator, denominator] where each element is NumLike
245
+ * - an object { integer, numerator, denominator } where each field is NumLike
246
+ * - a packed numeric-like value handled by fromNum
247
+ *
248
+ * All numeric-like inputs are converted with numFrom() to produce internal Num values.
249
+ *
250
+ * @param e - Value convertible to Epoch
251
+ * @returns Epoch instance
252
+ */
253
+ static override from(e: EpochLike): Epoch {
254
+ if (e instanceof Epoch) {
255
+ return e;
256
+ }
257
+
258
+ if (Array.isArray(e)) {
259
+ return new Epoch(numFrom(e[0]), numFrom(e[1]), numFrom(e[2]));
260
+ }
261
+
262
+ if (typeof e === "object") {
263
+ return new Epoch(
264
+ numFrom(e.integer),
265
+ numFrom(e.numerator),
266
+ numFrom(e.denominator),
267
+ );
268
+ }
269
+
270
+ return Epoch.fromNum(e);
271
+ }
272
+
273
+ /**
274
+ * Return a deep copy of this Epoch.
275
+ *
276
+ * @returns New Epoch instance with identical components.
277
+ */
278
+ override clone(): Epoch {
279
+ return new Epoch(this.integer, this.numerator, this.denominator);
280
+ }
281
+
282
+ /**
283
+ * Return the genesis epoch.
284
+ *
285
+ * Note: for historical reasons the genesis epoch is represented with all-zero
286
+ * fields, no other epoch instance should use a zero denominator.
287
+ *
288
+ * @returns Epoch with integer = 0, numerator = 0, denominator = 0.
289
+ */
290
+ static get Genesis(): Epoch {
291
+ return new Epoch(Zero, Zero, Zero);
292
+ }
293
+
294
+ /**
295
+ * Return an Epoch representing one Nervos DAO cycle (180 epochs exactly).
296
+ *
297
+ * @returns Epoch equal to 180 with denominator set to 1 to represent an exact whole unit.
298
+ */
299
+ static get OneNervosDaoCycle(): Epoch {
300
+ return new Epoch(numFrom(180), Zero, numFrom(1));
301
+ }
302
+
303
+ /**
304
+ * Compare this epoch to another EpochLike.
305
+ *
306
+ * The comparison computes scaled integer values so fractions are compared without precision loss:
307
+ * scaled = (integer * denominator + numerator) * other.denominator
308
+ *
309
+ * Special-case: identical object references return equality immediately.
310
+ *
311
+ * @param other - Epoch-like value to compare against.
312
+ * @returns 1 if this > other, 0 if equal, -1 if this < other.
313
+ *
314
+ * @example
315
+ * epochA.compare(epochB); // -1|0|1
316
+ */
317
+ compare(other: EpochLike): 1 | 0 | -1 {
318
+ if (this === other) {
319
+ return 0;
320
+ }
321
+
322
+ const t = this.normalizeBase();
323
+ const o = Epoch.from(other).normalizeBase();
324
+
325
+ // Compute scaled representations to compare fractions without floating-point arithmetic.
326
+ const a = (t.integer * t.denominator + t.numerator) * o.denominator;
327
+ const b = (o.integer * o.denominator + o.numerator) * t.denominator;
328
+
329
+ return a > b ? 1 : a < b ? -1 : 0;
330
+ }
331
+
332
+ /**
333
+ * Check whether this epoch is less than another EpochLike.
334
+ *
335
+ * @param other - EpochLike to compare against.
336
+ * @returns true if this < other.
337
+ */
338
+ lt(other: EpochLike): boolean {
339
+ return this.compare(other) < 0;
340
+ }
341
+
342
+ /**
343
+ * Check whether this epoch is less than or equal to another EpochLike.
344
+ *
345
+ * @param other - EpochLike to compare against.
346
+ * @returns true if this <= other.
347
+ */
348
+ le(other: EpochLike): boolean {
349
+ return this.compare(other) <= 0;
350
+ }
351
+
352
+ /**
353
+ * Check whether this epoch equals another EpochLike.
354
+ *
355
+ * @param other - EpochLike to compare against.
356
+ * @returns true if equal.
357
+ */
358
+ eq(other: EpochLike): boolean {
359
+ return this.compare(other) === 0;
360
+ }
361
+
362
+ /**
363
+ * Check whether this epoch is greater than or equal to another EpochLike.
364
+ *
365
+ * @param other - EpochLike to compare against.
366
+ * @returns true if this >= other.
367
+ */
368
+ ge(other: EpochLike): boolean {
369
+ return this.compare(other) >= 0;
370
+ }
371
+
372
+ /**
373
+ * Check whether this epoch is greater than another EpochLike.
374
+ *
375
+ * @param other - EpochLike to compare against.
376
+ * @returns true if this > other.
377
+ */
378
+ gt(other: EpochLike): boolean {
379
+ return this.compare(other) > 0;
380
+ }
381
+
382
+ /**
383
+ * Add another EpochLike to this epoch and return the normalized result.
384
+ *
385
+ * Rules and edge-cases:
386
+ * - Whole parts are added directly; fractional parts are aligned to a common denominator and added.
387
+ * - Final result is canonicalized to reduce the fraction and carry any overflow to the integer part.
388
+ *
389
+ * @param other - Epoch-like value to add.
390
+ * @returns Normalized Epoch representing the sum.
391
+ */
392
+ add(other: EpochLike): Epoch {
393
+ const t = this.normalizeBase();
394
+ const o = Epoch.from(other).normalizeBase();
395
+
396
+ // Sum whole integer parts.
397
+ const integer = t.integer + o.integer;
398
+ let numerator: Num;
399
+ let denominator: Num;
400
+
401
+ // Align denominators if they differ; use multiplication to obtain a common denominator.
402
+ if (t.denominator !== o.denominator) {
403
+ // Numerators & Denominators are generally small (<= 2000n); multiplication produces a safe common denominator.
404
+ numerator = t.numerator * o.denominator + o.numerator * t.denominator;
405
+ denominator = t.denominator * o.denominator;
406
+ } else {
407
+ numerator = t.numerator + o.numerator;
408
+ denominator = t.denominator;
409
+ }
410
+
411
+ // Normalize to reduce fraction and carry whole units into integer.
412
+ return new Epoch(integer, numerator, denominator).normalizeCanonical();
413
+ }
414
+
415
+ /**
416
+ * Subtract an EpochLike from this epoch and return the normalized result.
417
+ *
418
+ * Implementation notes:
419
+ * - Delegates to add by negating the other epoch's integer and numerator while preserving denominator.
420
+ * - normalizeCanonical will handle negative numerators by borrowing from integer as necessary.
421
+ *
422
+ * @param other - Epoch-like value to subtract.
423
+ * @returns Normalized Epoch representing this - other.
424
+ */
425
+ sub(other: EpochLike): Epoch {
426
+ const { integer, numerator, denominator } = Epoch.from(other);
427
+ return this.add(new Epoch(-integer, -numerator, denominator));
428
+ }
429
+
430
+ /**
431
+ * Convert this epoch to an estimated Unix timestamp in milliseconds using a reference header.
432
+ *
433
+ * Note: This is an estimation that assumes a constant epoch duration.
434
+ *
435
+ * @param reference - Object providing `epoch` (Epoch) and `timestamp` (Num) fields, such as a ClientBlockHeader.
436
+ * @param epochInMilliseconds - Duration of a single epoch in milliseconds. Defaults to 4 hours.
437
+ * @returns Estimated Unix timestamp in milliseconds as bigint.
438
+ */
439
+ toUnix(
440
+ reference: Pick<ClientBlockHeader, "epoch" | "timestamp">,
441
+ epochInMilliseconds: Num = numFrom(4 * 60 * 60 * 1000),
442
+ ): bigint {
443
+ // Compute relative epoch difference against the reference header.
444
+ const { integer, numerator, denominator } = this.sub(reference.epoch);
445
+
446
+ // Add whole epoch duration and fractional epoch duration to the reference timestamp.
447
+ return (
448
+ reference.timestamp +
449
+ epochInMilliseconds * integer +
450
+ (epochInMilliseconds * numerator) / denominator
451
+ );
452
+ }
453
+ }
454
+
455
+ /**
456
+ * epochFrom
457
+ *
458
+ * @deprecated prefer using Epoch.from() directly.
459
+ *
460
+ * @param epochLike - Epoch-like value to convert.
461
+ * @returns Epoch instance corresponding to the input.
462
+ */
463
+ export function epochFrom(epochLike: EpochLike): Epoch {
464
+ return Epoch.from(epochLike);
465
+ }
466
+
467
+ /**
468
+ * epochFromHex
469
+ *
470
+ * @deprecated use Epoch.fromNum() with numeric input instead.
471
+ *
472
+ * @param hex - Hex-like or numeric-like value encoding a packed epoch.
473
+ * @returns Decoded Epoch instance.
474
+ */
475
+ export function epochFromHex(hex: HexLike): Epoch {
476
+ return Epoch.fromNum(hex);
477
+ }
478
+
479
+ /**
480
+ * epochToHex
481
+ *
482
+ * @deprecated use Epoch.from(epochLike).toPackedHex() instead.
483
+ *
484
+ * @param epochLike - Value convertible to an Epoch (object, tuple or Epoch).
485
+ * @returns Hex string representing the packed epoch encoding.
486
+ */
487
+ export function epochToHex(epochLike: EpochLike): Hex {
488
+ return Epoch.from(epochLike).toPackedHex();
489
+ }
package/src/ckb/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./epoch.js";
1
2
  export * from "./hash.js";
2
3
  export * from "./script.js";
3
4
  export * from "./transaction.js";
package/src/ckb/script.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Bytes, BytesLike, bytesFrom } from "../bytes/index.js";
2
2
  import type { Client } from "../client/index.js";
3
3
  import { KnownScript } from "../client/knownScript.js";
4
+ import { Codec, Entity, codec } from "../codec/index.js";
4
5
  import { Hex, HexLike, hexFrom } from "../hex/index.js";
5
6
  import { mol } from "../molecule/index.js";
6
7
  import {
@@ -9,7 +10,7 @@ import {
9
10
  NUM_TO_HASH_TYPE,
10
11
  } from "./script.advanced.js";
11
12
 
12
- export const HashTypeCodec: mol.Codec<HashTypeLike, HashType> = mol.Codec.from({
13
+ export const HashTypeCodec: Codec<HashTypeLike, HashType> = Codec.from({
13
14
  byteLength: 1,
14
15
  encode: hashTypeToBytes,
15
16
  decode: hashTypeFromBytes,
@@ -108,14 +109,14 @@ export type ScriptLike = {
108
109
  /**
109
110
  * @public
110
111
  */
111
- @mol.codec(
112
+ @codec(
112
113
  mol.table({
113
114
  codeHash: mol.Byte32,
114
115
  hashType: HashTypeCodec,
115
116
  args: mol.Bytes,
116
117
  }),
117
118
  )
118
- export class Script extends mol.Entity.Base<ScriptLike, Script>() {
119
+ export class Script extends Entity.Base<ScriptLike, Script>() {
119
120
  /**
120
121
  * Creates an instance of Script.
121
122
  *