@ckb-ccc/core 1.10.0 → 1.11.1

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 (71) hide show
  1. package/CHANGELOG.md +43 -4
  2. package/dist/ckb/hash.d.ts +18 -0
  3. package/dist/ckb/hash.d.ts.map +1 -0
  4. package/dist/ckb/hash.js +19 -0
  5. package/dist/ckb/index.d.ts +1 -0
  6. package/dist/ckb/index.d.ts.map +1 -1
  7. package/dist/ckb/index.js +1 -0
  8. package/dist/ckb/transaction.d.ts +179 -11
  9. package/dist/ckb/transaction.d.ts.map +1 -1
  10. package/dist/ckb/transaction.js +197 -59
  11. package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  12. package/dist/client/clientPublicMainnet.advanced.js +63 -62
  13. package/dist/client/clientPublicTestnet.advanced.d.ts +0 -23
  14. package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  15. package/dist/client/clientPublicTestnet.advanced.js +63 -146
  16. package/dist/client/knownScript.d.ts +1 -3
  17. package/dist/client/knownScript.d.ts.map +1 -1
  18. package/dist/client/knownScript.js +0 -4
  19. package/dist/hasher/hasherCkb.d.ts +0 -16
  20. package/dist/hasher/hasherCkb.d.ts.map +1 -1
  21. package/dist/hasher/hasherCkb.js +0 -18
  22. package/dist/molecule/codec.d.ts +30 -10
  23. package/dist/molecule/codec.d.ts.map +1 -1
  24. package/dist/molecule/codec.js +46 -13
  25. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +18 -6
  26. package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  27. package/dist/signer/ckb/signerCkbScriptReadonly.js +18 -6
  28. package/dist/signer/signer/index.d.ts +11 -1
  29. package/dist/signer/signer/index.d.ts.map +1 -1
  30. package/dist/signer/signer/index.js +23 -0
  31. package/dist.commonjs/ckb/hash.d.ts +18 -0
  32. package/dist.commonjs/ckb/hash.d.ts.map +1 -0
  33. package/dist.commonjs/ckb/hash.js +22 -0
  34. package/dist.commonjs/ckb/index.d.ts +1 -0
  35. package/dist.commonjs/ckb/index.d.ts.map +1 -1
  36. package/dist.commonjs/ckb/index.js +1 -0
  37. package/dist.commonjs/ckb/transaction.d.ts +179 -11
  38. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  39. package/dist.commonjs/ckb/transaction.js +197 -59
  40. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  41. package/dist.commonjs/client/clientPublicMainnet.advanced.js +63 -62
  42. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +0 -23
  43. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  44. package/dist.commonjs/client/clientPublicTestnet.advanced.js +64 -147
  45. package/dist.commonjs/client/knownScript.d.ts +1 -3
  46. package/dist.commonjs/client/knownScript.d.ts.map +1 -1
  47. package/dist.commonjs/client/knownScript.js +0 -4
  48. package/dist.commonjs/hasher/hasherCkb.d.ts +0 -16
  49. package/dist.commonjs/hasher/hasherCkb.d.ts.map +1 -1
  50. package/dist.commonjs/hasher/hasherCkb.js +2 -21
  51. package/dist.commonjs/molecule/codec.d.ts +30 -10
  52. package/dist.commonjs/molecule/codec.d.ts.map +1 -1
  53. package/dist.commonjs/molecule/codec.js +46 -13
  54. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +18 -6
  55. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
  56. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +18 -6
  57. package/dist.commonjs/signer/signer/index.d.ts +11 -1
  58. package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
  59. package/dist.commonjs/signer/signer/index.js +23 -0
  60. package/package.json +1 -1
  61. package/prettier.config.mjs +1 -1
  62. package/src/ckb/hash.ts +28 -0
  63. package/src/ckb/index.ts +1 -0
  64. package/src/ckb/transaction.ts +231 -52
  65. package/src/client/clientPublicMainnet.advanced.ts +72 -70
  66. package/src/client/clientPublicTestnet.advanced.ts +72 -165
  67. package/src/client/knownScript.ts +0 -5
  68. package/src/hasher/hasherCkb.ts +0 -26
  69. package/src/molecule/codec.ts +50 -13
  70. package/src/signer/ckb/signerCkbScriptReadonly.ts +24 -8
  71. package/src/signer/signer/index.ts +34 -0
@@ -107,10 +107,71 @@ export const TESTNET_SCRIPTS = Object.freeze({
107
107
  {
108
108
  cellDep: {
109
109
  outPoint: {
110
- txHash: "0x759f281588c96979764cb21c196478cf8e13ea81fede7f4ba26d1ff29dbc6a81",
110
+ txHash: "0x4a596d31dc35e88fb1591debbf680b04a44b4a434e3a94453c21ea8950ffb4d9",
111
111
  index: 0,
112
112
  },
113
- depType: "depGroup",
113
+ depType: "code",
114
+ },
115
+ type: {
116
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
117
+ hashType: "type",
118
+ args: "0xd23761b364210735c19c60561d213fb3beae2fd6172743719eff6920e020baac",
119
+ },
120
+ },
121
+ {
122
+ cellDep: {
123
+ outPoint: {
124
+ txHash: "0x4a596d31dc35e88fb1591debbf680b04a44b4a434e3a94453c21ea8950ffb4d9",
125
+ index: 1,
126
+ },
127
+ depType: "code",
128
+ },
129
+ type: {
130
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
131
+ hashType: "type",
132
+ args: "0x9a93803da5f8a3d11d47ca04b5a12109b840409febbf4a37c72aabb6a69c1bda",
133
+ },
134
+ },
135
+ {
136
+ cellDep: {
137
+ outPoint: {
138
+ txHash: "0xf2c9dbfe7438a8c622558da8fa912d36755271ea469d3a25cb8d3373d35c8638",
139
+ index: 1,
140
+ },
141
+ depType: "code",
142
+ },
143
+ type: {
144
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
145
+ hashType: "type",
146
+ args: "0x13f8e9fe476346f10c0a85cd3817e3488313efaa40efcbe352e415da4db711fa",
147
+ },
148
+ },
149
+ {
150
+ cellDep: {
151
+ outPoint: {
152
+ txHash: "0x95ecf9b41701b45d431657a67bbfa3f07ef7ceb53bf87097f3674e1a4a19ce62",
153
+ index: 1,
154
+ },
155
+ depType: "code",
156
+ },
157
+ type: {
158
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
159
+ hashType: "type",
160
+ args: "0x70678dc6e21d4fd8ed59d464db31c517d665489be546a2831f093d48d6ea5ad0",
161
+ },
162
+ },
163
+ {
164
+ cellDep: {
165
+ outPoint: {
166
+ txHash: "0x8b3255491f3c4dcc1cfca33d5c6bcaec5409efe4bbda243900f9580c47e0242e",
167
+ index: 1,
168
+ },
169
+ depType: "code",
170
+ },
171
+ type: {
172
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
173
+ hashType: "type",
174
+ args: "0xf234b81ed08fb76e1a6afed4d7902d5925e0fae92dd5a585094a18fbc187842c",
114
175
  },
115
176
  },
116
177
  ],
@@ -348,148 +409,4 @@ export const TESTNET_SCRIPTS = Object.freeze({
348
409
  },
349
410
  ],
350
411
  },
351
- [KnownScript.RgbppLock]: {
352
- codeHash: "0x61ca7a4796a4eb19ca4f0d065cb9b10ddcf002f10f7cbb810c706cb6bb5c3248",
353
- hashType: "type",
354
- cellDeps: [
355
- {
356
- cellDep: {
357
- outPoint: {
358
- txHash: "0xf1de59e973b85791ec32debbba08dff80c63197e895eb95d67fc1e9f6b413e00",
359
- index: 0,
360
- },
361
- depType: "code",
362
- },
363
- type: {
364
- codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
365
- hashType: "type",
366
- args: "0xa3bc8441df149def76cfe15fec7b1e51d949548bc27fb7a75e9d4b3ef1c12c7f",
367
- },
368
- },
369
- // Rgbpp lock config cell dep for Bitcoin Testnet3
370
- {
371
- cellDep: {
372
- outPoint: {
373
- txHash: "0xf1de59e973b85791ec32debbba08dff80c63197e895eb95d67fc1e9f6b413e00",
374
- index: 1,
375
- },
376
- depType: "code",
377
- },
378
- },
379
- ],
380
- },
381
- [KnownScript.BtcTimeLock]: {
382
- codeHash: "0x00cdf8fab0f8ac638758ebf5ea5e4052b1d71e8a77b9f43139718621f6849326",
383
- hashType: "type",
384
- cellDeps: [
385
- {
386
- cellDep: {
387
- outPoint: {
388
- txHash: "0xde0f87878a97500f549418e5d46d2f7704c565a262aa17036c9c1c13ad638529",
389
- index: 0,
390
- },
391
- depType: "code",
392
- },
393
- type: {
394
- codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
395
- hashType: "type",
396
- args: "0xc9828585e6dd2afacb9e6e8ca7deb0975121aabee5c7983178a45509ffaec984",
397
- },
398
- },
399
- // btc time lock config cell dep for Bitcoin Testnet3
400
- {
401
- cellDep: {
402
- outPoint: {
403
- txHash: "0xde0f87878a97500f549418e5d46d2f7704c565a262aa17036c9c1c13ad638529",
404
- index: 1,
405
- },
406
- depType: "code",
407
- },
408
- },
409
- ],
410
- },
411
- });
412
- /**
413
- * Bitcoin Signet specific script overrides for testnet
414
- *
415
- * Contains script configurations that differ when using Bitcoin Signet
416
- * instead of Bitcoin Testnet3. Only RgbppLock and BtcTimeLock are affected.
417
- *
418
- * @example
419
- * ```typescript
420
- * import { ClientPublicTestnet } from "@ckb-ccc/core";
421
- * import { TESTNET_SCRIPTS, TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES } from "@ckb-ccc/core/advanced";
422
- *
423
- * // Use Bitcoin Testnet3 scripts (default)
424
- * const testnet3Client = new ClientPublicTestnet();
425
- *
426
- * // Use Bitcoin Signet scripts by merging overrides
427
- * const signetClient = new ClientPublicTestnet({
428
- * scripts: {
429
- * ...TESTNET_SCRIPTS,
430
- * ...TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES
431
- * }
432
- * });
433
- */
434
- export const TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES = Object.freeze({
435
- [KnownScript.RgbppLock]: {
436
- codeHash: "0xd07598deec7ce7b5665310386b4abd06a6d48843e953c5cc2112ad0d5a220364",
437
- hashType: "type",
438
- cellDeps: [
439
- {
440
- cellDep: {
441
- outPoint: {
442
- txHash: "0x61efdeddbaa0bb4132c0eb174b3e8002ff5ec430f61ba46f30768d683c516eec",
443
- index: 0,
444
- },
445
- depType: "code",
446
- },
447
- type: {
448
- codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
449
- hashType: "type",
450
- args: "0xb69fe766ce3b7014a2a78ad1fe688d82f1679325805371d2856c3b8d18ebfa5a",
451
- },
452
- },
453
- // Rgbpp lock config cell dep for Bitcoin Signet
454
- {
455
- cellDep: {
456
- outPoint: {
457
- txHash: "0x61efdeddbaa0bb4132c0eb174b3e8002ff5ec430f61ba46f30768d683c516eec",
458
- index: 1,
459
- },
460
- depType: "code",
461
- },
462
- },
463
- ],
464
- },
465
- [KnownScript.BtcTimeLock]: {
466
- codeHash: "0x80a09eca26d77cea1f5a69471c59481be7404febf40ee90f886c36a948385b55",
467
- hashType: "type",
468
- cellDeps: [
469
- {
470
- cellDep: {
471
- outPoint: {
472
- txHash: "0x5364b3535965e9eac9a35dd7af8e9e45a61d30a16e115923c032f80b28783e21",
473
- index: 0,
474
- },
475
- depType: "code",
476
- },
477
- type: {
478
- codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
479
- hashType: "type",
480
- args: "0x32fc8c70a6451a1439fd91e214bba093f9cdd9276bc4ab223430dab5940aff92",
481
- },
482
- },
483
- // btc time lock config cell dep for Bitcoin Signet
484
- {
485
- cellDep: {
486
- outPoint: {
487
- txHash: "0x5364b3535965e9eac9a35dd7af8e9e45a61d30a16e115923c032f80b28783e21",
488
- index: 1,
489
- },
490
- depType: "code",
491
- },
492
- },
493
- ],
494
- },
495
412
  });
@@ -22,8 +22,6 @@ export declare enum KnownScript {
22
22
  SingleUseLock = "SingleUseLock",
23
23
  TypeBurnLock = "TypeBurnLock",
24
24
  EasyToDiscoverType = "EasyToDiscoverType",
25
- TimeLock = "TimeLock",
26
- RgbppLock = "RgbppLock",
27
- BtcTimeLock = "BtcTimeLock"
25
+ TimeLock = "TimeLock"
28
26
  }
29
27
  //# sourceMappingURL=knownScript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"knownScript.d.ts","sourceRoot":"","sources":["../../src/client/knownScript.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB,CAAE,wFAAwF;IACrI,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,UAAU,eAAe;IAGzB,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,QAAQ,aAAa;IAIrB,SAAS,cAAc;IACvB,WAAW,gBAAgB;CAC5B"}
1
+ {"version":3,"file":"knownScript.d.ts","sourceRoot":"","sources":["../../src/client/knownScript.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW;IACrB,SAAS,cAAc;IACvB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB,CAAE,wFAAwF;IACrI,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,UAAU,eAAe;IAGzB,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,kBAAkB,uBAAuB;IACzC,QAAQ,aAAa;CACtB"}
@@ -25,8 +25,4 @@ export var KnownScript;
25
25
  KnownScript["TypeBurnLock"] = "TypeBurnLock";
26
26
  KnownScript["EasyToDiscoverType"] = "EasyToDiscoverType";
27
27
  KnownScript["TimeLock"] = "TimeLock";
28
- // RGB++ related scripts (default using Bitcoin Testnet3)
29
- // For Bitcoin Signet, use TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES from @ckb-ccc/core/advanced
30
- KnownScript["RgbppLock"] = "RgbppLock";
31
- KnownScript["BtcTimeLock"] = "BtcTimeLock";
32
28
  })(KnownScript || (KnownScript = {}));
@@ -1,7 +1,5 @@
1
1
  import { BytesLike } from "../bytes/index.js";
2
- import { CellInputLike } from "../ckb/index.js";
3
2
  import { Hex } from "../hex/index.js";
4
- import { NumLike } from "../num/index.js";
5
3
  import { Hasher } from "./hasher.js";
6
4
  /**
7
5
  * @public
@@ -56,18 +54,4 @@ export declare class HasherCkb implements Hasher {
56
54
  * ```
57
55
  */
58
56
  export declare function hashCkb(...data: BytesLike[]): Hex;
59
- /**
60
- * Computes the Type ID hash of the given data.
61
- * @public
62
- *
63
- * @param cellInputLike - The first cell input of the transaction.
64
- * @param outputIndex - The output index of the Type ID cell.
65
- * @returns The hexadecimal string representation of the hash.
66
- *
67
- * @example
68
- * ```typescript
69
- * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like "0x..."
70
- * ```
71
- */
72
- export declare function hashTypeId(cellInputLike: CellInputLike, outputIndex: NumLike): Hex;
73
57
  //# sourceMappingURL=hasherCkb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasherCkb.d.ts","sourceRoot":"","sources":["../../src/hasher/hasherCkb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAgB,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE;;;;;OAKG;gBAES,SAAS,SAAK,EAAE,QAAQ,SAAuB;IAO3D;;;;;;;;;;;;OAYG;IAEH,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAKlC;;;;;;;;;;;OAWG;IAEH,MAAM,IAAI,GAAG;CAGd;AAED;;;;;;;;;;;GAWG;AAEH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAIjD;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,CACxB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,OAAO,GACnB,GAAG,CAKL"}
1
+ {"version":3,"file":"hasherCkb.d.ts","sourceRoot":"","sources":["../../src/hasher/hasherCkb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE;;;;;OAKG;gBAES,SAAS,SAAK,EAAE,QAAQ,SAAuB;IAO3D;;;;;;;;;;;;OAYG;IAEH,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAKlC;;;;;;;;;;;OAWG;IAEH,MAAM,IAAI,GAAG;CAGd;AAED;;;;;;;;;;;GAWG;AAEH,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAIjD"}
@@ -1,8 +1,6 @@
1
1
  import { blake2b } from "@noble/hashes/blake2b";
2
2
  import { bytesFrom } from "../bytes/index.js";
3
- import { CellInput } from "../ckb/index.js";
4
3
  import { hexFrom } from "../hex/index.js";
5
- import { numLeToBytes } from "../num/index.js";
6
4
  import { CKB_BLAKE2B_PERSONAL } from "./advanced.js";
7
5
  /**
8
6
  * @public
@@ -70,19 +68,3 @@ export function hashCkb(...data) {
70
68
  data.forEach((d) => hasher.update(d));
71
69
  return hasher.digest();
72
70
  }
73
- /**
74
- * Computes the Type ID hash of the given data.
75
- * @public
76
- *
77
- * @param cellInputLike - The first cell input of the transaction.
78
- * @param outputIndex - The output index of the Type ID cell.
79
- * @returns The hexadecimal string representation of the hash.
80
- *
81
- * @example
82
- * ```typescript
83
- * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like "0x..."
84
- * ```
85
- */
86
- export function hashTypeId(cellInputLike, outputIndex) {
87
- return hashCkb(CellInput.from(cellInputLike).toBytes(), numLeToBytes(outputIndex, 8));
88
- }
@@ -84,17 +84,37 @@ type UnionDecoded<T extends Record<string, CodecLike<any, any>>, K extends keyof
84
84
  value: DecodedType<T[K]>;
85
85
  } : never;
86
86
  /**
87
- * Union is a dynamic-size type.
88
- * Serializing a union has two steps:
89
- * - Serialize an item type id in bytes as a 32 bit unsigned integer in little-endian. The item type id is the index of the inner items, and it's starting at 0.
90
- * - Serialize the inner item.
91
- * @param codecLayout the union item record
92
- * @param fields the custom item type id record
87
+ * Constructs a union codec that can serialize and deserialize values tagged with a type identifier.
88
+ *
89
+ * If all variants have the same fixed size, the resulting union codec is fixed-size (header + payload).
90
+ * Otherwise, it falls back to a dynamic-size codec.
91
+ *
92
+ * Serialization format:
93
+ * 1. 4-byte little-endian unsigned integer for the variant index.
94
+ * 2. Encoded bytes of the selected variant.
95
+ *
96
+ * @typeParam T
97
+ * A record mapping variant names to codecs.
98
+ * @param codecLayout
99
+ * An object whose keys are variant names and values are codecs for each variant.
100
+ * @param fields
101
+ * Optional mapping from variant names to custom numeric IDs. If omitted, the index
102
+ * of each variant in `codecLayout` is used as its ID.
103
+ *
104
+ *
93
105
  * @example
94
- * // without custom id
95
- * union({ cafe: Uint8, bee: Uint8 })
96
- * // with custom id
97
- * union({ cafe: Uint8, bee: Uint8 }, { cafe: 0xcafe, bee: 0xbee })
106
+ * // Dynamic union without custom numeric IDs
107
+ * union({ cafe: Uint8, bee: Uint16 })
108
+ *
109
+ * // Dynamic union with custom numeric IDs
110
+ * union({ cafe: Uint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
111
+ *
112
+ * // Fixed-size union without custom numeric IDs
113
+ * const PaddedUint8 = struct({ data : u8, padding : u8 })
114
+ * union({ cafe: PaddedUint8, bee: Uint16 });
115
+ *
116
+ * // Fixed-size union with custom numeric IDs
117
+ * union({ cafe: PaddedUint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
98
118
  */
99
119
  export declare function union<T extends Record<string, CodecLike<any, any>>>(codecLayout: T, fields?: Record<keyof T, number | undefined | null>): Codec<UnionEncodable<T>, UnionDecoded<T>>;
100
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/molecule/codec.ts"],"names":[],"mappings":"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"}
@@ -292,28 +292,61 @@ export function table(codecLayout) {
292
292
  });
293
293
  }
294
294
  /**
295
- * Union is a dynamic-size type.
296
- * Serializing a union has two steps:
297
- * - Serialize an item type id in bytes as a 32 bit unsigned integer in little-endian. The item type id is the index of the inner items, and it's starting at 0.
298
- * - Serialize the inner item.
299
- * @param codecLayout the union item record
300
- * @param fields the custom item type id record
295
+ * Constructs a union codec that can serialize and deserialize values tagged with a type identifier.
296
+ *
297
+ * If all variants have the same fixed size, the resulting union codec is fixed-size (header + payload).
298
+ * Otherwise, it falls back to a dynamic-size codec.
299
+ *
300
+ * Serialization format:
301
+ * 1. 4-byte little-endian unsigned integer for the variant index.
302
+ * 2. Encoded bytes of the selected variant.
303
+ *
304
+ * @typeParam T
305
+ * A record mapping variant names to codecs.
306
+ * @param codecLayout
307
+ * An object whose keys are variant names and values are codecs for each variant.
308
+ * @param fields
309
+ * Optional mapping from variant names to custom numeric IDs. If omitted, the index
310
+ * of each variant in `codecLayout` is used as its ID.
311
+ *
312
+ *
301
313
  * @example
302
- * // without custom id
303
- * union({ cafe: Uint8, bee: Uint8 })
304
- * // with custom id
305
- * union({ cafe: Uint8, bee: Uint8 }, { cafe: 0xcafe, bee: 0xbee })
314
+ * // Dynamic union without custom numeric IDs
315
+ * union({ cafe: Uint8, bee: Uint16 })
316
+ *
317
+ * // Dynamic union with custom numeric IDs
318
+ * union({ cafe: Uint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
319
+ *
320
+ * // Fixed-size union without custom numeric IDs
321
+ * const PaddedUint8 = struct({ data : u8, padding : u8 })
322
+ * union({ cafe: PaddedUint8, bee: Uint16 });
323
+ *
324
+ * // Fixed-size union with custom numeric IDs
325
+ * union({ cafe: PaddedUint8, bee: Uint16 }, { cafe: 0xcafe, bee: 0xbee })
306
326
  */
307
327
  export function union(codecLayout, fields) {
308
- const keys = Object.keys(codecLayout);
328
+ const entries = Object.entries(codecLayout);
329
+ // Determine if all variants have a fixed and equal byteLength.
330
+ let byteLength;
331
+ if (entries.length > 0) {
332
+ const firstLen = entries[0][1].byteLength;
333
+ if (firstLen !== undefined &&
334
+ entries.every(([, { byteLength: len }]) => len === firstLen)) {
335
+ // Add 4 bytes for the type header
336
+ byteLength = firstLen + 4;
337
+ }
338
+ }
309
339
  return Codec.from({
340
+ byteLength,
310
341
  encode({ type, value }) {
311
342
  const typeStr = type.toString();
312
343
  const codec = codecLayout[typeStr];
313
344
  if (!codec) {
314
- throw new Error(`union: invalid type, expected ${keys.toString()}, but got ${typeStr}`);
345
+ throw new Error(`union: invalid type, expected ${entries.map((e) => e[0]).toString()}, but got ${typeStr}`);
315
346
  }
316
- const fieldId = fields ? (fields[typeStr] ?? -1) : keys.indexOf(typeStr);
347
+ const fieldId = fields
348
+ ? (fields[typeStr] ?? -1)
349
+ : entries.findIndex((e) => e[0] === typeStr);
317
350
  if (fieldId < 0) {
318
351
  throw new Error(`union: invalid field id ${fieldId} of ${typeStr}`);
319
352
  }
@@ -1,23 +1,35 @@
1
1
  import { Address } from "../../address/index.js";
2
- import { ScriptLike } from "../../ckb/index.js";
2
+ import { Script, ScriptLike } from "../../ckb/index.js";
3
3
  import { Client } from "../../client/index.js";
4
4
  import { Signer, SignerSignType, SignerType } from "../signer/index.js";
5
5
  /**
6
- * A class extending Signer that provides read-only access to a CKB script.
7
- * This class does not support signing operations.
6
+ * A read-only signer for a CKB script. It can be used to get addresses,
7
+ * but not to sign transactions. This is useful when you want to watch an address
8
+ * without having the private key.
9
+ *
8
10
  * @public
9
11
  */
10
12
  export declare class SignerCkbScriptReadonly extends Signer {
13
+ /**
14
+ * The type of the signer.
15
+ */
11
16
  get type(): SignerType;
17
+ /**
18
+ * The sign type of the signer.
19
+ * As this is a read-only signer, the sign type is {@link SignerSignType.Unknown}.
20
+ */
12
21
  get signType(): SignerSignType;
13
- private readonly script;
22
+ /**
23
+ * The scripts associated with the signer.
24
+ */
25
+ readonly scripts: Script[];
14
26
  /**
15
27
  * Creates an instance of SignerCkbScriptReadonly.
16
28
  *
17
29
  * @param client - The client instance used for communication.
18
- * @param script - The script associated with the signer.
30
+ * @param scripts - The scripts associated with the signer. Can be a single script, an array of scripts, or multiple script arguments.
19
31
  */
20
- constructor(client: Client, script: ScriptLike);
32
+ constructor(client: Client, ...scripts: (ScriptLike | ScriptLike[])[]);
21
33
  /**
22
34
  * Connects to the client. This implementation does nothing as the class is read-only.
23
35
  *
@@ -1 +1 @@
1
- {"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM9C;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;;;;;;OASG;IAEG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAG3C"}
1
+ {"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,CAErB;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;IAElC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,EAAE;IASrE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;;;;;;OASG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAK3C"}
@@ -2,14 +2,23 @@ import { Address } from "../../address/index.js";
2
2
  import { Script } from "../../ckb/index.js";
3
3
  import { Signer, SignerSignType, SignerType } from "../signer/index.js";
4
4
  /**
5
- * A class extending Signer that provides read-only access to a CKB script.
6
- * This class does not support signing operations.
5
+ * A read-only signer for a CKB script. It can be used to get addresses,
6
+ * but not to sign transactions. This is useful when you want to watch an address
7
+ * without having the private key.
8
+ *
7
9
  * @public
8
10
  */
9
11
  export class SignerCkbScriptReadonly extends Signer {
12
+ /**
13
+ * The type of the signer.
14
+ */
10
15
  get type() {
11
16
  return SignerType.CKB;
12
17
  }
18
+ /**
19
+ * The sign type of the signer.
20
+ * As this is a read-only signer, the sign type is {@link SignerSignType.Unknown}.
21
+ */
13
22
  get signType() {
14
23
  return SignerSignType.Unknown;
15
24
  }
@@ -17,11 +26,14 @@ export class SignerCkbScriptReadonly extends Signer {
17
26
  * Creates an instance of SignerCkbScriptReadonly.
18
27
  *
19
28
  * @param client - The client instance used for communication.
20
- * @param script - The script associated with the signer.
29
+ * @param scripts - The scripts associated with the signer. Can be a single script, an array of scripts, or multiple script arguments.
21
30
  */
22
- constructor(client, script) {
31
+ constructor(client, ...scripts) {
23
32
  super(client);
24
- this.script = Script.from(script);
33
+ this.scripts = scripts.flat().map(Script.from);
34
+ if (this.scripts.length === 0) {
35
+ throw new Error("SignerCkbScriptReadonly requires at least one script.");
36
+ }
25
37
  }
26
38
  /**
27
39
  * Connects to the client. This implementation does nothing as the class is read-only.
@@ -61,6 +73,6 @@ export class SignerCkbScriptReadonly extends Signer {
61
73
  * ```
62
74
  */
63
75
  async getAddressObjs() {
64
- return [Address.fromScript(this.script, this.client)];
76
+ return this.scripts.map((script) => Address.fromScript(script, this.client));
65
77
  }
66
78
  }
@@ -2,7 +2,7 @@ import { Address } from "../../address/index.js";
2
2
  import { ClientCollectableSearchKeyFilterLike } from "../../advancedBarrel.js";
3
3
  import { BytesLike } from "../../bytes/index.js";
4
4
  import { Cell, Transaction, TransactionLike } from "../../ckb/index.js";
5
- import { Client, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse } from "../../client/index.js";
5
+ import { Client, ClientFindTransactionsGroupedResponse, ClientFindTransactionsResponse, ClientIndexerSearchKeyFilterLike } from "../../client/index.js";
6
6
  import { Hex } from "../../hex/index.js";
7
7
  import { Num } from "../../num/index.js";
8
8
  /**
@@ -131,6 +131,16 @@ export declare abstract class Signer {
131
131
  * @returns A promise that resolves to an array of addresses as strings.
132
132
  */
133
133
  getAddresses(): Promise<string[]>;
134
+ /**
135
+ * Find cells of this signer
136
+ *
137
+ * @param filter - The filter for the search key.
138
+ * @param withData - Whether to include cell data in the response.
139
+ * @param order - The order of the returned cells, can be "asc" or "desc".
140
+ * @param limit - The maximum number of cells for every querying chunk.
141
+ * @returns A async generator that yields all matching cells
142
+ */
143
+ findCellsOnChain(filter: ClientIndexerSearchKeyFilterLike, withData?: boolean | null, order?: "asc" | "desc", limit?: number): AsyncGenerator<Cell>;
134
144
  /**
135
145
  * Find cells of this signer
136
146
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"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"}
@@ -130,6 +130,29 @@ export class Signer {
130
130
  async getAddresses() {
131
131
  return this.getAddressObjs().then((addresses) => addresses.map((address) => address.toString()));
132
132
  }
133
+ /**
134
+ * Find cells of this signer
135
+ *
136
+ * @param filter - The filter for the search key.
137
+ * @param withData - Whether to include cell data in the response.
138
+ * @param order - The order of the returned cells, can be "asc" or "desc".
139
+ * @param limit - The maximum number of cells for every querying chunk.
140
+ * @returns A async generator that yields all matching cells
141
+ */
142
+ async *findCellsOnChain(filter, withData, order, limit) {
143
+ const scripts = await this.getAddressObjs();
144
+ for (const { script } of scripts) {
145
+ for await (const cell of this.client.findCellsOnChain({
146
+ script,
147
+ scriptType: "lock",
148
+ filter,
149
+ scriptSearchMode: "exact",
150
+ withData,
151
+ }, order, limit)) {
152
+ yield cell;
153
+ }
154
+ }
155
+ }
133
156
  /**
134
157
  * Find cells of this signer
135
158
  *