@ckb-ccc/core 1.12.5 → 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 +44 -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 +23 -0
  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
@@ -50,11 +50,53 @@ export abstract class Client {
50
50
  abstract get url(): string;
51
51
  abstract get addressPrefix(): string;
52
52
 
53
+ /**
54
+ * Get the deployment info for a well-known CKB script.
55
+ * Returns the cell deps and type script info needed to use the script.
56
+ *
57
+ * @param script - The KnownScript enum value.
58
+ * @returns Script info including cellDeps and type hash.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * import { ccc } from "@ckb-ccc/core";
63
+ *
64
+ * const client = new ccc.ClientPublicTestnet();
65
+ *
66
+ * // Get xUDT script deployment info
67
+ * const xudtInfo = await client.getKnownScript(ccc.KnownScript.XUdt);
68
+ * console.log(`xUDT cellDeps:`, xudtInfo.cellDeps);
69
+ *
70
+ * // Build an xUDT type script
71
+ * const xudtType = await ccc.Script.fromKnownScript(
72
+ * client,
73
+ * ccc.KnownScript.XUdt,
74
+ * "0xOWNER_LOCK_HASH...",
75
+ * );
76
+ * ```
77
+ */
53
78
  abstract getKnownScript(script: KnownScript): Promise<ScriptInfo>;
54
79
 
55
80
  abstract getFeeRateStatistics(
56
81
  blockRange?: NumLike,
57
82
  ): Promise<{ mean: Num; median: Num }>;
83
+ /**
84
+ * Get the recommended transaction fee rate based on recent blocks.
85
+ * Returns the median fee rate, clamped between min and max fee rates.
86
+ *
87
+ * @param blockRange - Number of recent blocks to analyze.
88
+ * @param options - Optional max fee rate cap.
89
+ * @returns The recommended fee rate in Shannons per KB.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * import { ccc } from "@ckb-ccc/core";
94
+ *
95
+ * const client = new ccc.ClientPublicTestnet();
96
+ * const feeRate = await client.getFeeRate();
97
+ * console.log(`Current fee rate: ${feeRate} Shannons/KB`);
98
+ * ```
99
+ */
58
100
  async getFeeRate(
59
101
  blockRange?: NumLike,
60
102
  options?: { maxFeeRate?: NumLike },
@@ -72,7 +114,37 @@ export abstract class Client {
72
114
  return numMin(feeRate, maxFeeRate);
73
115
  }
74
116
 
117
+ /**
118
+ * Get the latest block number (tip) of the chain.
119
+ *
120
+ * @returns The current tip block number.
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * import { ccc } from "@ckb-ccc/core";
125
+ *
126
+ * const client = new ccc.ClientPublicTestnet();
127
+ * const tipBlockNumber = await client.getTip();
128
+ * console.log(`Current block height: ${tipBlockNumber}`);
129
+ * ```
130
+ */
75
131
  abstract getTip(): Promise<Num>;
132
+
133
+ /**
134
+ * Get the header of the latest block.
135
+ *
136
+ * @param verbosity - Verbosity level (0 for hex, 1 for object).
137
+ * @returns The tip block header.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * import { ccc } from "@ckb-ccc/core";
142
+ *
143
+ * const client = new ccc.ClientPublicTestnet();
144
+ * const header = await client.getTipHeader();
145
+ * console.log(`Block #${header.number}, hash: ${header.hash}`);
146
+ * ```
147
+ */
76
148
  abstract getTipHeader(verbosity?: number | null): Promise<ClientBlockHeader>;
77
149
  abstract getBlockByNumberNoCache(
78
150
  blockNumber: NumLike,
@@ -183,6 +255,22 @@ export abstract class Client {
183
255
  *
184
256
  * @param outPointLike - The out point of the cell to get.
185
257
  * @returns The cell if it exists, otherwise undefined.
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * import { ccc } from "@ckb-ccc/core";
262
+ *
263
+ * const client = new ccc.ClientPublicTestnet();
264
+ * const cell = await client.getCell({
265
+ * txHash: "0xTX_HASH...",
266
+ * index: 0,
267
+ * });
268
+ * if (cell) {
269
+ * console.log(`Capacity: ${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);
270
+ * console.log(`Lock: ${cell.cellOutput.lock.codeHash}`);
271
+ * console.log(`Data: ${cell.outputData}`);
272
+ * }
273
+ * ```
186
274
  */
187
275
  async getCell(outPointLike: OutPointLike): Promise<Cell | undefined> {
188
276
  const outPoint = OutPoint.from(outPointLike);
@@ -238,6 +326,32 @@ export abstract class Client {
238
326
  withData?: boolean | null,
239
327
  includeTxPool?: boolean | null,
240
328
  ): Promise<Cell | undefined>;
329
+ /**
330
+ * Get a live (unspent) cell by its out point.
331
+ * Unlike getCell(), this verifies the cell is still live on-chain.
332
+ *
333
+ * @param outPointLike - The out point of the cell.
334
+ * @param withData - Whether to include cell data.
335
+ * @param includeTxPool - Whether to include cells in the transaction pool.
336
+ * @returns The live cell, or undefined if spent or not found.
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * import { ccc } from "@ckb-ccc/core";
341
+ *
342
+ * const client = new ccc.ClientPublicTestnet();
343
+ * const cell = await client.getCellLive(
344
+ * { txHash: "0xTX_HASH...", index: 0 },
345
+ * true, // include data
346
+ * true, // include tx pool
347
+ * );
348
+ * if (cell) {
349
+ * console.log("Cell is still live!");
350
+ * } else {
351
+ * console.log("Cell has been spent or does not exist.");
352
+ * }
353
+ * ```
354
+ */
241
355
  async getCellLive(
242
356
  outPointLike: OutPointLike,
243
357
  withData?: boolean | null,
@@ -260,6 +374,39 @@ export abstract class Client {
260
374
  limit?: NumLike,
261
375
  after?: string,
262
376
  ): Promise<ClientFindCellsResponse>;
377
+ /**
378
+ * Find cells with pagination support.
379
+ * Returns one page of results at a time with a cursor for the next page.
380
+ *
381
+ * @param key - The indexer search key.
382
+ * @param order - Sort order ("asc" or "desc").
383
+ * @param limit - Maximum cells per page.
384
+ * @param after - Cursor from previous page for pagination.
385
+ * @returns A page of cells with a cursor for the next page.
386
+ *
387
+ * @example
388
+ * ```typescript
389
+ * import { ccc } from "@ckb-ccc/core";
390
+ *
391
+ * const client = new ccc.ClientPublicTestnet();
392
+ * const { script: lock } = await ccc.Address.fromString("ckt1q...", client);
393
+ *
394
+ * // Get first page of cells
395
+ * const page1 = await client.findCellsPaged({
396
+ * script: lock,
397
+ * scriptType: "lock",
398
+ * }, "asc", 20);
399
+ * console.log(`Found ${page1.cells.length} cells`);
400
+ *
401
+ * // Get next page
402
+ * if (page1.cells.length === 20) {
403
+ * const page2 = await client.findCellsPaged(
404
+ * { script: lock, scriptType: "lock" },
405
+ * "asc", 20, page1.lastCursor,
406
+ * );
407
+ * }
408
+ * ```
409
+ */
263
410
  async findCellsPaged(
264
411
  key: ClientIndexerSearchKeyLike,
265
412
  order?: "asc" | "desc",
@@ -301,6 +448,25 @@ export abstract class Client {
301
448
  *
302
449
  * @param keyLike - The search key.
303
450
  * @returns A async generator for yielding cells.
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * import { ccc } from "@ckb-ccc/core";
455
+ *
456
+ * const client = new ccc.ClientPublicTestnet();
457
+ * const { script: lock } = await ccc.Address.fromString("ckt1q...", client);
458
+ *
459
+ * // Find all cells owned by a lock script
460
+ * for await (const cell of client.findCells({
461
+ * script: lock,
462
+ * scriptType: "lock",
463
+ * scriptSearchMode: "exact",
464
+ * withData: true,
465
+ * })) {
466
+ * console.log(`Cell: ${cell.outPoint.txHash}:${cell.outPoint.index}`);
467
+ * console.log(`Capacity: ${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);
468
+ * }
469
+ * ```
304
470
  */
305
471
  async *findCells(
306
472
  keyLike: ClientCollectableSearchKeyLike,
@@ -327,6 +493,37 @@ export abstract class Client {
327
493
  }
328
494
  }
329
495
 
496
+ /**
497
+ * Find cells by lock script, optionally filtered by type script.
498
+ *
499
+ * @param lock - The lock script to search by.
500
+ * @param type - Optional type script filter.
501
+ * @param withData - Whether to include cell data (default: true).
502
+ * @param order - Sort order by block number ("asc" or "desc").
503
+ * @param limit - Page size for each RPC call (default: 10).
504
+ * @returns An async generator yielding matching cells.
505
+ *
506
+ * @example
507
+ * ```typescript
508
+ * import { ccc } from "@ckb-ccc/core";
509
+ *
510
+ * const client = new ccc.ClientPublicTestnet();
511
+ * const { script: lock } = await ccc.Address.fromString("ckt1q...", client);
512
+ *
513
+ * // Find all cells belonging to this address
514
+ * for await (const cell of client.findCellsByLock(lock)) {
515
+ * console.log(`${ccc.fixedPointToString(cell.cellOutput.capacity)} CKB`);
516
+ * }
517
+ *
518
+ * // Find only xUDT cells belonging to this address
519
+ * const xudtType = await ccc.Script.fromKnownScript(
520
+ * client, ccc.KnownScript.XUdt, "0xOWNER_LOCK_HASH...",
521
+ * );
522
+ * for await (const cell of client.findCellsByLock(lock, xudtType)) {
523
+ * console.log(`UDT cell found`);
524
+ * }
525
+ * ```
526
+ */
330
527
  findCellsByLock(
331
528
  lock: ScriptLike,
332
529
  type?: ScriptLike | null,
@@ -349,6 +546,29 @@ export abstract class Client {
349
546
  );
350
547
  }
351
548
 
549
+ /**
550
+ * Find cells by type script.
551
+ *
552
+ * @param type - The type script to search by.
553
+ * @param withData - Whether to include cell data (default: true).
554
+ * @param order - Sort order by block number.
555
+ * @param limit - Page size for each RPC call (default: 10).
556
+ * @returns An async generator yielding matching cells.
557
+ *
558
+ * @example
559
+ * ```typescript
560
+ * import { ccc } from "@ckb-ccc/core";
561
+ *
562
+ * const client = new ccc.ClientPublicTestnet();
563
+ * // Find all xUDT cells of a specific token
564
+ * const xudtType = await ccc.Script.fromKnownScript(
565
+ * client, ccc.KnownScript.XUdt, "0xOWNER_LOCK_HASH...",
566
+ * );
567
+ * for await (const cell of client.findCellsByType(xudtType)) {
568
+ * console.log(`Token cell: ${cell.outPoint.txHash}:${cell.outPoint.index}`);
569
+ * }
570
+ * ```
571
+ */
352
572
  findCellsByType(
353
573
  type: ScriptLike,
354
574
  withData = true,
@@ -369,7 +589,7 @@ export abstract class Client {
369
589
 
370
590
  async findSingletonCellByType(
371
591
  type: ScriptLike,
372
- withData = false,
592
+ withData = true,
373
593
  ): Promise<Cell | undefined> {
374
594
  for await (const cell of this.findCellsByType(
375
595
  type,
@@ -381,6 +601,24 @@ export abstract class Client {
381
601
  }
382
602
  }
383
603
 
604
+ /**
605
+ * Resolve cell dependency info into concrete CellDep objects.
606
+ * If a CellDepInfo specifies a type script, the actual deployed cell is located on-chain.
607
+ *
608
+ * @param cellDepsInfoLike - One or more CellDepInfo or arrays of CellDepInfo.
609
+ * @returns Resolved CellDep array ready to be added to a transaction.
610
+ *
611
+ * @example
612
+ * ```typescript
613
+ * import { ccc } from "@ckb-ccc/core";
614
+ *
615
+ * const client = new ccc.ClientPublicTestnet();
616
+ * const xudtInfo = await client.getKnownScript(ccc.KnownScript.XUdt);
617
+ * const cellDeps = await client.getCellDeps(xudtInfo.cellDeps);
618
+ * // cellDeps can be added to a transaction:
619
+ * // tx.cellDeps.push(...cellDeps);
620
+ * ```
621
+ */
384
622
  async getCellDeps(
385
623
  ...cellDepsInfoLike: (CellDepInfoLike | CellDepInfoLike[])[]
386
624
  ): Promise<CellDep[]> {
@@ -478,6 +716,29 @@ export abstract class Client {
478
716
  }
479
717
  }
480
718
 
719
+ /**
720
+ * Find transactions related to a lock script, optionally filtered by type script.
721
+ *
722
+ * @param lock - The lock script to search by.
723
+ * @param type - Optional type script filter.
724
+ * @param groupByTransaction - If true, group results by transaction.
725
+ * @param order - Sort order by block number.
726
+ * @param limit - Page size per RPC call.
727
+ * @returns An async generator yielding transaction records.
728
+ *
729
+ * @example
730
+ * ```typescript
731
+ * import { ccc } from "@ckb-ccc/core";
732
+ *
733
+ * const client = new ccc.ClientPublicTestnet();
734
+ * const { script: lock } = await ccc.Address.fromString("ckt1q...", client);
735
+ *
736
+ * // List all transactions related to an address (grouped)
737
+ * for await (const txRecord of client.findTransactionsByLock(lock, null, true)) {
738
+ * console.log(`TX: ${txRecord.txHash}, Block: ${txRecord.blockNumber}`);
739
+ * }
740
+ * ```
741
+ */
481
742
  findTransactionsByLock(
482
743
  lock: ScriptLike,
483
744
  type: ScriptLike | undefined | null,
@@ -571,6 +832,26 @@ export abstract class Client {
571
832
 
572
833
  abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;
573
834
 
835
+ /**
836
+ * Get the total CKB balance of a single lock script.
837
+ * Only counts cells with no type script and no data (pure CKB capacity cells).
838
+ *
839
+ * @param lock - The lock script to query balance for.
840
+ * @returns The total capacity in Shannons as a bigint.
841
+ *
842
+ * @example
843
+ * ```typescript
844
+ * import { ccc } from "@ckb-ccc/core";
845
+ *
846
+ * const client = new ccc.ClientPublicTestnet();
847
+ * const { script: lock } = await ccc.Address.fromString(
848
+ * "ckt1qzda0cr08m85hc8jlnfp3zer7xulejywt49kt2rr0vthywaa50xwsq...",
849
+ * client,
850
+ * );
851
+ * const balance = await client.getBalanceSingle(lock);
852
+ * console.log(`Balance: ${ccc.fixedPointToString(balance)} CKB`);
853
+ * ```
854
+ */
574
855
  async getBalanceSingle(lock: ScriptLike): Promise<Num> {
575
856
  return this.getCellsCapacity({
576
857
  script: lock,
@@ -583,6 +864,27 @@ export abstract class Client {
583
864
  });
584
865
  }
585
866
 
867
+ /**
868
+ * Get the total CKB balance across multiple lock scripts.
869
+ * Sums the balance from each lock script.
870
+ *
871
+ * @param locks - An array of lock scripts to query.
872
+ * @returns The combined total capacity in Shannons as a bigint.
873
+ *
874
+ * @example
875
+ * ```typescript
876
+ * import { ccc } from "@ckb-ccc/core";
877
+ *
878
+ * const client = new ccc.ClientPublicTestnet();
879
+ * const signer = new ccc.SignerCkbPrivateKey(client, "0x...");
880
+ * await signer.connect();
881
+ *
882
+ * const locks = await signer.getRecommendedAddressObj()
883
+ * .then(({ script }) => [script]);
884
+ * const totalBalance = await client.getBalance(locks);
885
+ * console.log(`Total: ${ccc.fixedPointToString(totalBalance)} CKB`);
886
+ * ```
887
+ */
586
888
  async getBalance(locks: ScriptLike[]): Promise<Num> {
587
889
  return reduceAsync(
588
890
  locks,
@@ -591,6 +893,34 @@ export abstract class Client {
591
893
  );
592
894
  }
593
895
 
896
+ /**
897
+ * Send a signed transaction to the CKB network.
898
+ * Validates the fee rate against the maximum before sending.
899
+ *
900
+ * @param transaction - The transaction to send.
901
+ * @param validator - Optional outputs validator ("passthrough" or "well_known_scripts_only").
902
+ * @param options - Optional configuration including maxFeeRate.
903
+ * @returns The transaction hash.
904
+ *
905
+ * @example
906
+ * ```typescript
907
+ * import { ccc } from "@ckb-ccc/core";
908
+ *
909
+ * const client = new ccc.ClientPublicTestnet();
910
+ * const signer = new ccc.SignerCkbPrivateKey(client, "0x...");
911
+ * await signer.connect();
912
+ *
913
+ * const tx = ccc.Transaction.from({
914
+ * outputs: [{ capacity: ccc.fixedPointFrom(100), lock: receiverLock }],
915
+ * });
916
+ * await tx.completeInputsByCapacity(signer);
917
+ * await tx.completeFeeBy(signer);
918
+ *
919
+ * // Usually you call signer.sendTransaction(tx) which signs then sends.
920
+ * // client.sendTransaction expects an already-signed transaction.
921
+ * const txHash = await client.sendTransaction(tx);
922
+ * ```
923
+ */
594
924
  async sendTransaction(
595
925
  transaction: TransactionLike,
596
926
  validator?: OutputsValidator,
@@ -610,6 +940,25 @@ export abstract class Client {
610
940
  return txHash;
611
941
  }
612
942
 
943
+ /**
944
+ * Get a transaction by its hash, including its status and block info.
945
+ *
946
+ * @param txHashLike - The transaction hash to look up.
947
+ * @returns The transaction response with status, or undefined if not found.
948
+ *
949
+ * @example
950
+ * ```typescript
951
+ * import { ccc } from "@ckb-ccc/core";
952
+ *
953
+ * const client = new ccc.ClientPublicTestnet();
954
+ * const txResponse = await client.getTransaction("0xTX_HASH...");
955
+ * if (txResponse) {
956
+ * console.log(`Status: ${txResponse.status}`);
957
+ * console.log(`Block: ${txResponse.blockNumber}`);
958
+ * console.log(`Outputs: ${txResponse.transaction.outputs.length}`);
959
+ * }
960
+ * ```
961
+ */
613
962
  async getTransaction(
614
963
  txHashLike: HexLike,
615
964
  ): Promise<ClientTransactionResponse | undefined> {
@@ -660,6 +1009,33 @@ export abstract class Client {
660
1009
  };
661
1010
  }
662
1011
 
1012
+ /**
1013
+ * Wait for a transaction to be confirmed on-chain.
1014
+ * Polls the node until the transaction reaches the specified confirmation depth.
1015
+ *
1016
+ * @param txHash - The transaction hash to wait for.
1017
+ * @param confirmations - Number of block confirmations to wait for (default: 0 = committed).
1018
+ * @param timeout - Maximum wait time in milliseconds (default: 60000).
1019
+ * @param interval - Polling interval in milliseconds (default: 2000).
1020
+ * @returns The transaction response once confirmed, or throws on timeout.
1021
+ *
1022
+ * @example
1023
+ * ```typescript
1024
+ * import { ccc } from "@ckb-ccc/core";
1025
+ *
1026
+ * const client = new ccc.ClientPublicTestnet();
1027
+ * // Wait for transaction to be committed (0 confirmations)
1028
+ * const tx = await client.waitTransaction("0xTX_HASH...");
1029
+ * console.log(`Confirmed in block: ${tx?.blockNumber}`);
1030
+ *
1031
+ * // Wait for 4 confirmations with 2 minute timeout
1032
+ * const confirmedTx = await client.waitTransaction(
1033
+ * "0xTX_HASH...",
1034
+ * 4, // confirmations
1035
+ * 120000, // timeout: 2 minutes
1036
+ * );
1037
+ * ```
1038
+ */
663
1039
  async waitTransaction(
664
1040
  txHash: HexLike,
665
1041
  confirmations: number = 0,
@@ -321,6 +321,29 @@ export const MAINNET_SCRIPTS: Record<KnownScript, ScriptInfoLike | undefined> =
321
321
  },
322
322
  ],
323
323
  },
324
+ [KnownScript.DidCkb]: {
325
+ codeHash:
326
+ "0x4a06164dc34dccade5afe3e847a97b6db743e79f5477fa3295acf02849c5984a",
327
+ hashType: "type",
328
+ cellDeps: [
329
+ {
330
+ cellDep: {
331
+ outPoint: {
332
+ txHash:
333
+ "0xe2f74c56cdc610d2b9fe898a96a80118845f5278605d7f9ad535dad69ae015bf",
334
+ index: 0,
335
+ },
336
+ depType: "code",
337
+ },
338
+ type: {
339
+ codeHash:
340
+ "0x00000000000000000000000000000000000000000000000000545950455f4944",
341
+ args: "0x55573ef6d78e3ca75170ff476176732309a8b31efe94320a954ded3d75c2cb18",
342
+ hashType: "type",
343
+ },
344
+ },
345
+ ],
346
+ },
324
347
  [KnownScript.AlwaysSuccess]: {
325
348
  codeHash:
326
349
  "0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1",
@@ -333,6 +333,29 @@ export const TESTNET_SCRIPTS: Record<KnownScript, ScriptInfoLike> =
333
333
  },
334
334
  ],
335
335
  },
336
+ [KnownScript.DidCkb]: {
337
+ codeHash:
338
+ "0x510150477b10d6ab551a509b71265f3164e9fd4137fcb5a4322f49f03092c7c5",
339
+ hashType: "type",
340
+ cellDeps: [
341
+ {
342
+ cellDep: {
343
+ outPoint: {
344
+ txHash:
345
+ "0x0e7a830e2d5ebd05cd45a55f93f94559edea0ef1237b7233f49f7facfb3d6a6c",
346
+ index: 0,
347
+ },
348
+ depType: "code",
349
+ },
350
+ type: {
351
+ codeHash:
352
+ "0x00000000000000000000000000000000000000000000000000545950455f4944",
353
+ args: "0x3c27695173b888ed44ddf36f901789014384ad6c05a9137f3db9a0779c141c35",
354
+ hashType: "type",
355
+ },
356
+ },
357
+ ],
358
+ },
336
359
  [KnownScript.AlwaysSuccess]: {
337
360
  codeHash:
338
361
  "0x3b521cc4b552f109d092d8cc468a8048acb53c5952dbe769d2b2f9cf6e47f7f1",
@@ -12,7 +12,6 @@ import {
12
12
  ScriptLike,
13
13
  Transaction,
14
14
  TransactionLike,
15
- epochFrom,
16
15
  hashTypeFrom,
17
16
  } from "../ckb/index.js";
18
17
  import { Hex, HexLike, hexFrom } from "../hex/index.js";
@@ -398,7 +397,7 @@ export class ClientBlockHeader {
398
397
  s: numFrom(headerLike.dao.s),
399
398
  u: numFrom(headerLike.dao.u),
400
399
  },
401
- epochFrom(headerLike.epoch),
400
+ Epoch.from(headerLike.epoch),
402
401
  hexFrom(headerLike.extraHash),
403
402
  hexFrom(headerLike.hash),
404
403
  numFrom(headerLike.nonce),
@@ -9,6 +9,7 @@ import {
9
9
  CellOutputLike,
10
10
  DepType,
11
11
  DepTypeLike,
12
+ Epoch,
12
13
  HashType,
13
14
  HashTypeLike,
14
15
  OutPoint,
@@ -18,7 +19,6 @@ import {
18
19
  Transaction,
19
20
  TransactionLike,
20
21
  depTypeFrom,
21
- epochFromHex,
22
22
  hashTypeFrom,
23
23
  } from "../../ckb/index.js";
24
24
  import { Hex, HexLike, hexFrom } from "../../hex/index.js";
@@ -217,7 +217,7 @@ export class JsonRpcTransformers {
217
217
  s: numLeFromBytes(dao.slice(16, 24)),
218
218
  u: numLeFromBytes(dao.slice(24, 32)),
219
219
  },
220
- epoch: epochFromHex(header.epoch),
220
+ epoch: Epoch.fromNum(header.epoch),
221
221
  extraHash: header.extra_hash,
222
222
  hash: header.hash,
223
223
  nonce: numFrom(header.nonce),
@@ -15,6 +15,7 @@ export enum KnownScript {
15
15
  OmniLock = "OmniLock",
16
16
  NostrLock = "NostrLock",
17
17
  UniqueType = "UniqueType",
18
+ DidCkb = "DidCkb",
18
19
 
19
20
  // ckb-proxy-locks https://github.com/ckb-devrel/ckb-proxy-locks
20
21
  AlwaysSuccess = "AlwaysSuccess",
@@ -0,0 +1,108 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import { Bytes, bytesFrom, BytesLike } from "../bytes/index.js";
4
+
5
+ export type CodecLike<Encodable, Decoded = Encodable> = {
6
+ readonly encode: (encodable: Encodable) => Bytes;
7
+ readonly decode: (
8
+ decodable: BytesLike,
9
+ config?: { isExtraFieldIgnored?: boolean },
10
+ ) => Decoded;
11
+ readonly byteLength?: number;
12
+ };
13
+ export class Codec<Encodable, Decoded = Encodable> {
14
+ constructor(
15
+ public readonly encode: (encodable: Encodable) => Bytes,
16
+ public readonly decode: (
17
+ decodable: BytesLike,
18
+ config?: { isExtraFieldIgnored?: boolean }, // This is equivalent to "compatible" in the Rust implementation of Molecule.
19
+ ) => Decoded,
20
+ public readonly byteLength?: number, // if provided, treat codec as fixed length
21
+ ) {}
22
+
23
+ encodeOr<T>(encodable: Encodable, fallback: T): Bytes | T {
24
+ try {
25
+ return this.encode(encodable);
26
+ } catch (_) {
27
+ return fallback;
28
+ }
29
+ }
30
+
31
+ decodeOr<T>(
32
+ decodable: BytesLike,
33
+ fallback: T,
34
+ config?: { isExtraFieldIgnored?: boolean }, // This is equivalent to "compatible" in the Rust implementation of Molecule.
35
+ ) {
36
+ try {
37
+ return this.decode(decodable, config);
38
+ } catch (_) {
39
+ return fallback;
40
+ }
41
+ }
42
+
43
+ static from<Encodable, Decoded = Encodable>({
44
+ encode,
45
+ decode,
46
+ byteLength,
47
+ }: CodecLike<Encodable, Decoded>): Codec<Encodable, Decoded> {
48
+ return new Codec(
49
+ (encodable: Encodable) => {
50
+ const encoded = encode(encodable);
51
+ if (byteLength !== undefined && encoded.byteLength !== byteLength) {
52
+ throw new Error(
53
+ `Codec.encode: expected byte length ${byteLength}, got ${encoded.byteLength}`,
54
+ );
55
+ }
56
+ return encoded;
57
+ },
58
+ (decodable, config) => {
59
+ const decodableBytes = bytesFrom(decodable);
60
+ if (
61
+ byteLength !== undefined &&
62
+ decodableBytes.byteLength !== byteLength
63
+ ) {
64
+ throw new Error(
65
+ `Codec.decode: expected byte length ${byteLength}, got ${decodableBytes.byteLength}`,
66
+ );
67
+ }
68
+ return decode(decodable, config);
69
+ },
70
+ byteLength,
71
+ );
72
+ }
73
+
74
+ map<NewEncodable = Encodable, NewDecoded = Decoded>({
75
+ inMap,
76
+ outMap,
77
+ }: {
78
+ inMap?: (encodable: NewEncodable) => Encodable;
79
+ outMap?: (decoded: Decoded) => NewDecoded;
80
+ }): Codec<NewEncodable, NewDecoded> {
81
+ return new Codec(
82
+ (encodable) =>
83
+ this.encode((inMap ? inMap(encodable) : encodable) as Encodable),
84
+ (buffer, config) =>
85
+ (outMap
86
+ ? outMap(this.decode(buffer, config))
87
+ : this.decode(buffer, config)) as NewDecoded,
88
+ this.byteLength,
89
+ );
90
+ }
91
+
92
+ mapIn<NewEncodable>(
93
+ map: (encodable: NewEncodable) => Encodable,
94
+ ): Codec<NewEncodable, Decoded> {
95
+ return this.map({ inMap: map });
96
+ }
97
+
98
+ mapOut<NewDecoded>(
99
+ map: (decoded: Decoded) => NewDecoded,
100
+ ): Codec<Encodable, NewDecoded> {
101
+ return this.map({ outMap: map });
102
+ }
103
+ }
104
+
105
+ export type EncodableType<T extends CodecLike<any, any>> =
106
+ T extends CodecLike<infer Encodable, unknown> ? Encodable : never;
107
+ export type DecodedType<T extends CodecLike<any, any>> =
108
+ T extends CodecLike<any, infer Decoded> ? Decoded : never;