@ckb-ccc/spore 0.1.0-alpha.2

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 (223) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +61 -0
  3. package/dist/advanced.d.ts +5 -0
  4. package/dist/advanced.d.ts.map +1 -0
  5. package/dist/advanced.js +4 -0
  6. package/dist/cluster/index.d.ts +56 -0
  7. package/dist/cluster/index.d.ts.map +1 -0
  8. package/dist/cluster/index.js +96 -0
  9. package/dist/cobuild/index.d.ts +13 -0
  10. package/dist/cobuild/index.d.ts.map +1 -0
  11. package/dist/cobuild/index.js +168 -0
  12. package/dist/codec/base.d.ts +6 -0
  13. package/dist/codec/base.d.ts.map +1 -0
  14. package/dist/codec/base.js +10 -0
  15. package/dist/codec/cluster.d.ts +41 -0
  16. package/dist/codec/cluster.d.ts.map +1 -0
  17. package/dist/codec/cluster.js +73 -0
  18. package/dist/codec/cobuild/buildingPacket.d.ts +465 -0
  19. package/dist/codec/cobuild/buildingPacket.d.ts.map +1 -0
  20. package/dist/codec/cobuild/buildingPacket.js +44 -0
  21. package/dist/codec/cobuild/index.d.ts +4 -0
  22. package/dist/codec/cobuild/index.d.ts.map +1 -0
  23. package/dist/codec/cobuild/index.js +3 -0
  24. package/dist/codec/cobuild/sporeAction.d.ts +314 -0
  25. package/dist/codec/cobuild/sporeAction.d.ts.map +1 -0
  26. package/dist/codec/cobuild/sporeAction.js +104 -0
  27. package/dist/codec/cobuild/witnessLayout.d.ts +43 -0
  28. package/dist/codec/cobuild/witnessLayout.d.ts.map +1 -0
  29. package/dist/codec/cobuild/witnessLayout.js +27 -0
  30. package/dist/codec/index.d.ts +4 -0
  31. package/dist/codec/index.d.ts.map +1 -0
  32. package/dist/codec/index.js +3 -0
  33. package/dist/codec/spore.d.ts +15 -0
  34. package/dist/codec/spore.d.ts.map +1 -0
  35. package/dist/codec/spore.js +24 -0
  36. package/dist/dob/api/decode.d.ts +6 -0
  37. package/dist/dob/api/decode.d.ts.map +1 -0
  38. package/dist/dob/api/decode.js +44 -0
  39. package/dist/dob/api/encode.d.ts +5 -0
  40. package/dist/dob/api/encode.d.ts.map +1 -0
  41. package/dist/dob/api/encode.js +77 -0
  42. package/dist/dob/api/index.d.ts +3 -0
  43. package/dist/dob/api/index.d.ts.map +1 -0
  44. package/dist/dob/api/index.js +2 -0
  45. package/dist/dob/config/index.d.ts +2 -0
  46. package/dist/dob/config/index.d.ts.map +1 -0
  47. package/dist/dob/config/index.js +1 -0
  48. package/dist/dob/config/predefined.d.ts +8 -0
  49. package/dist/dob/config/predefined.d.ts.map +1 -0
  50. package/dist/dob/config/predefined.js +59 -0
  51. package/dist/dob/helper/check.d.ts +5 -0
  52. package/dist/dob/helper/check.d.ts.map +1 -0
  53. package/dist/dob/helper/check.js +75 -0
  54. package/dist/dob/helper/error.d.ts +2 -0
  55. package/dist/dob/helper/error.d.ts.map +1 -0
  56. package/dist/dob/helper/error.js +40 -0
  57. package/dist/dob/helper/index.d.ts +3 -0
  58. package/dist/dob/helper/index.d.ts.map +1 -0
  59. package/dist/dob/helper/index.js +2 -0
  60. package/dist/dob/helper/object.d.ts +59 -0
  61. package/dist/dob/helper/object.d.ts.map +1 -0
  62. package/dist/dob/helper/object.js +1 -0
  63. package/dist/dob/index.d.ts +4 -0
  64. package/dist/dob/index.d.ts.map +1 -0
  65. package/dist/dob/index.js +3 -0
  66. package/dist/helper/index.d.ts +9 -0
  67. package/dist/helper/index.d.ts.map +1 -0
  68. package/dist/helper/index.js +37 -0
  69. package/dist/index.d.ts +5 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +4 -0
  72. package/dist/package.json +3 -0
  73. package/dist/predefined/advanced.d.ts +3 -0
  74. package/dist/predefined/advanced.d.ts.map +1 -0
  75. package/dist/predefined/advanced.js +2 -0
  76. package/dist/predefined/index.d.ts +3 -0
  77. package/dist/predefined/index.d.ts.map +1 -0
  78. package/dist/predefined/index.js +2 -0
  79. package/dist/predefined/mainnet.advanced.d.ts +4 -0
  80. package/dist/predefined/mainnet.advanced.d.ts.map +1 -0
  81. package/dist/predefined/mainnet.advanced.js +61 -0
  82. package/dist/predefined/testnet.advanced.d.ts +4 -0
  83. package/dist/predefined/testnet.advanced.d.ts.map +1 -0
  84. package/dist/predefined/testnet.advanced.js +88 -0
  85. package/dist/predefined/types.d.ts +17 -0
  86. package/dist/predefined/types.d.ts.map +1 -0
  87. package/dist/predefined/types.js +18 -0
  88. package/dist/predefined/utils.d.ts +7 -0
  89. package/dist/predefined/utils.d.ts.map +1 -0
  90. package/dist/predefined/utils.js +26 -0
  91. package/dist/spore/advanced.d.ts +5 -0
  92. package/dist/spore/advanced.d.ts.map +1 -0
  93. package/dist/spore/advanced.js +62 -0
  94. package/dist/spore/index.d.ts +80 -0
  95. package/dist/spore/index.d.ts.map +1 -0
  96. package/dist/spore/index.js +135 -0
  97. package/dist.commonjs/advanced.d.ts +5 -0
  98. package/dist.commonjs/advanced.d.ts.map +1 -0
  99. package/dist.commonjs/advanced.js +20 -0
  100. package/dist.commonjs/cluster/index.d.ts +56 -0
  101. package/dist.commonjs/cluster/index.d.ts.map +1 -0
  102. package/dist.commonjs/cluster/index.js +102 -0
  103. package/dist.commonjs/cobuild/index.d.ts +13 -0
  104. package/dist.commonjs/cobuild/index.d.ts.map +1 -0
  105. package/dist.commonjs/cobuild/index.js +179 -0
  106. package/dist.commonjs/codec/base.d.ts +6 -0
  107. package/dist.commonjs/codec/base.d.ts.map +1 -0
  108. package/dist.commonjs/codec/base.js +13 -0
  109. package/dist.commonjs/codec/cluster.d.ts +41 -0
  110. package/dist.commonjs/codec/cluster.d.ts.map +1 -0
  111. package/dist.commonjs/codec/cluster.js +82 -0
  112. package/dist.commonjs/codec/cobuild/buildingPacket.d.ts +465 -0
  113. package/dist.commonjs/codec/cobuild/buildingPacket.d.ts.map +1 -0
  114. package/dist.commonjs/codec/cobuild/buildingPacket.js +47 -0
  115. package/dist.commonjs/codec/cobuild/index.d.ts +4 -0
  116. package/dist.commonjs/codec/cobuild/index.d.ts.map +1 -0
  117. package/dist.commonjs/codec/cobuild/index.js +19 -0
  118. package/dist.commonjs/codec/cobuild/sporeAction.d.ts +314 -0
  119. package/dist.commonjs/codec/cobuild/sporeAction.d.ts.map +1 -0
  120. package/dist.commonjs/codec/cobuild/sporeAction.js +107 -0
  121. package/dist.commonjs/codec/cobuild/witnessLayout.d.ts +43 -0
  122. package/dist.commonjs/codec/cobuild/witnessLayout.d.ts.map +1 -0
  123. package/dist.commonjs/codec/cobuild/witnessLayout.js +30 -0
  124. package/dist.commonjs/codec/index.d.ts +4 -0
  125. package/dist.commonjs/codec/index.d.ts.map +1 -0
  126. package/dist.commonjs/codec/index.js +19 -0
  127. package/dist.commonjs/codec/spore.d.ts +15 -0
  128. package/dist.commonjs/codec/spore.d.ts.map +1 -0
  129. package/dist.commonjs/codec/spore.js +29 -0
  130. package/dist.commonjs/dob/api/decode.d.ts +6 -0
  131. package/dist.commonjs/dob/api/decode.d.ts.map +1 -0
  132. package/dist.commonjs/dob/api/decode.js +49 -0
  133. package/dist.commonjs/dob/api/encode.d.ts +5 -0
  134. package/dist.commonjs/dob/api/encode.d.ts.map +1 -0
  135. package/dist.commonjs/dob/api/encode.js +82 -0
  136. package/dist.commonjs/dob/api/index.d.ts +3 -0
  137. package/dist.commonjs/dob/api/index.d.ts.map +1 -0
  138. package/dist.commonjs/dob/api/index.js +18 -0
  139. package/dist.commonjs/dob/config/index.d.ts +2 -0
  140. package/dist.commonjs/dob/config/index.d.ts.map +1 -0
  141. package/dist.commonjs/dob/config/index.js +17 -0
  142. package/dist.commonjs/dob/config/predefined.d.ts +8 -0
  143. package/dist.commonjs/dob/config/predefined.d.ts.map +1 -0
  144. package/dist.commonjs/dob/config/predefined.js +63 -0
  145. package/dist.commonjs/dob/helper/check.d.ts +5 -0
  146. package/dist.commonjs/dob/helper/check.d.ts.map +1 -0
  147. package/dist.commonjs/dob/helper/check.js +80 -0
  148. package/dist.commonjs/dob/helper/error.d.ts +2 -0
  149. package/dist.commonjs/dob/helper/error.d.ts.map +1 -0
  150. package/dist.commonjs/dob/helper/error.js +43 -0
  151. package/dist.commonjs/dob/helper/index.d.ts +3 -0
  152. package/dist.commonjs/dob/helper/index.d.ts.map +1 -0
  153. package/dist.commonjs/dob/helper/index.js +18 -0
  154. package/dist.commonjs/dob/helper/object.d.ts +59 -0
  155. package/dist.commonjs/dob/helper/object.d.ts.map +1 -0
  156. package/dist.commonjs/dob/helper/object.js +2 -0
  157. package/dist.commonjs/dob/index.d.ts +4 -0
  158. package/dist.commonjs/dob/index.d.ts.map +1 -0
  159. package/dist.commonjs/dob/index.js +19 -0
  160. package/dist.commonjs/helper/index.d.ts +9 -0
  161. package/dist.commonjs/helper/index.d.ts.map +1 -0
  162. package/dist.commonjs/helper/index.js +42 -0
  163. package/dist.commonjs/index.d.ts +5 -0
  164. package/dist.commonjs/index.d.ts.map +1 -0
  165. package/dist.commonjs/index.js +33 -0
  166. package/dist.commonjs/package.json +3 -0
  167. package/dist.commonjs/predefined/advanced.d.ts +3 -0
  168. package/dist.commonjs/predefined/advanced.d.ts.map +1 -0
  169. package/dist.commonjs/predefined/advanced.js +18 -0
  170. package/dist.commonjs/predefined/index.d.ts +3 -0
  171. package/dist.commonjs/predefined/index.d.ts.map +1 -0
  172. package/dist.commonjs/predefined/index.js +18 -0
  173. package/dist.commonjs/predefined/mainnet.advanced.d.ts +4 -0
  174. package/dist.commonjs/predefined/mainnet.advanced.d.ts.map +1 -0
  175. package/dist.commonjs/predefined/mainnet.advanced.js +64 -0
  176. package/dist.commonjs/predefined/testnet.advanced.d.ts +4 -0
  177. package/dist.commonjs/predefined/testnet.advanced.d.ts.map +1 -0
  178. package/dist.commonjs/predefined/testnet.advanced.js +91 -0
  179. package/dist.commonjs/predefined/types.d.ts +17 -0
  180. package/dist.commonjs/predefined/types.d.ts.map +1 -0
  181. package/dist.commonjs/predefined/types.js +22 -0
  182. package/dist.commonjs/predefined/utils.d.ts +7 -0
  183. package/dist.commonjs/predefined/utils.d.ts.map +1 -0
  184. package/dist.commonjs/predefined/utils.js +32 -0
  185. package/dist.commonjs/spore/advanced.d.ts +5 -0
  186. package/dist.commonjs/spore/advanced.d.ts.map +1 -0
  187. package/dist.commonjs/spore/advanced.js +65 -0
  188. package/dist.commonjs/spore/index.d.ts +80 -0
  189. package/dist.commonjs/spore/index.d.ts.map +1 -0
  190. package/dist.commonjs/spore/index.js +142 -0
  191. package/package.json +52 -0
  192. package/src/advanced.ts +4 -0
  193. package/src/cluster/index.ts +180 -0
  194. package/src/cobuild/index.ts +220 -0
  195. package/src/codec/base.ts +11 -0
  196. package/src/codec/cluster.ts +133 -0
  197. package/src/codec/cobuild/buildingPacket.ts +72 -0
  198. package/src/codec/cobuild/index.ts +3 -0
  199. package/src/codec/cobuild/sporeAction.ts +153 -0
  200. package/src/codec/cobuild/witnessLayout.ts +40 -0
  201. package/src/codec/index.ts +3 -0
  202. package/src/codec/spore.ts +36 -0
  203. package/src/dob/api/decode.ts +61 -0
  204. package/src/dob/api/encode.ts +84 -0
  205. package/src/dob/api/index.ts +2 -0
  206. package/src/dob/config/index.ts +1 -0
  207. package/src/dob/config/predefined.ts +71 -0
  208. package/src/dob/helper/check.ts +107 -0
  209. package/src/dob/helper/error.ts +41 -0
  210. package/src/dob/helper/index.ts +2 -0
  211. package/src/dob/helper/object.ts +66 -0
  212. package/src/dob/index.ts +3 -0
  213. package/src/helper/index.ts +68 -0
  214. package/src/index.ts +4 -0
  215. package/src/predefined/advanced.ts +2 -0
  216. package/src/predefined/index.ts +2 -0
  217. package/src/predefined/mainnet.advanced.ts +76 -0
  218. package/src/predefined/testnet.advanced.ts +107 -0
  219. package/src/predefined/types.ts +37 -0
  220. package/src/predefined/utils.ts +56 -0
  221. package/src/spore/advanced.ts +88 -0
  222. package/src/spore/index.ts +236 -0
  223. package/typedoc.json +6 -0
@@ -0,0 +1,13 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { UnpackResult } from "@ckb-lumos/codec";
3
+ import { Action, ActionVec, WitnessLayout } from "../codec/index.js";
4
+ export declare function assembleCreateSporeAction(sporeOutput: ccc.CellOutputLike, sporeData: ccc.BytesLike, scriptInfoHash?: ccc.HexLike): UnpackResult<typeof Action>;
5
+ export declare function assembleTransferSporeAction(sporeInput: ccc.CellOutputLike, sporeOutput: ccc.CellOutputLike, scriptInfoHash?: ccc.HexLike): UnpackResult<typeof Action>;
6
+ export declare function assembleMeltSporeAction(sporeInput: ccc.CellOutputLike, scriptInfoHash?: ccc.HexLike): UnpackResult<typeof Action>;
7
+ export declare function assembleCreateClusterAction(clusterOutput: ccc.CellOutputLike, clusterData: ccc.BytesLike, scriptInfoHash?: ccc.HexLike): UnpackResult<typeof Action>;
8
+ export declare function assembleTransferClusterAction(clusterInput: ccc.CellOutputLike, clusterOutput: ccc.CellOutputLike, scriptInfoHash?: ccc.HexLike): UnpackResult<typeof Action>;
9
+ export declare function prepareSporeTransaction(signer: ccc.Signer, txLike: ccc.TransactionLike, actions: UnpackResult<typeof ActionVec>): Promise<ccc.Transaction>;
10
+ export declare function unpackCommonCobuildProof(data: ccc.HexLike): UnpackResult<typeof WitnessLayout> | undefined;
11
+ export declare function extractCobuildActionsFromTx(tx: ccc.Transaction): UnpackResult<typeof ActionVec>;
12
+ export declare function injectCobuild(tx: ccc.Transaction, actions: UnpackResult<typeof ActionVec>): void;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cobuild/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,MAAM,EACN,SAAS,EAET,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,GAAG,CAAC,cAAc,EAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,cAAc,GAAE,GAAG,CAAC,OAAmC,GACtD,YAAY,CAAC,OAAO,MAAM,CAAC,CAsB7B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,GAAG,CAAC,cAAc,EAC9B,WAAW,EAAE,GAAG,CAAC,cAAc,EAC/B,cAAc,GAAE,GAAG,CAAC,OAAmC,GACtD,YAAY,CAAC,OAAO,MAAM,CAAC,CA0B7B;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,GAAG,CAAC,cAAc,EAC9B,cAAc,GAAE,GAAG,CAAC,OAAmC,GACtD,YAAY,CAAC,OAAO,MAAM,CAAC,CAqB7B;AAED,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,GAAG,CAAC,cAAc,EACjC,WAAW,EAAE,GAAG,CAAC,SAAS,EAC1B,cAAc,GAAE,GAAG,CAAC,OAAmC,GACtD,YAAY,CAAC,OAAO,MAAM,CAAC,CAsB7B;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,GAAG,CAAC,cAAc,EAChC,aAAa,EAAE,GAAG,CAAC,cAAc,EACjC,cAAc,GAAE,GAAG,CAAC,OAAmC,GACtD,YAAY,CAAC,OAAO,MAAM,CAAC,CAyB7B;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,MAAM,EAAE,GAAG,CAAC,eAAe,EAC3B,OAAO,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,GACtC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAW1B;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,GAAG,CAAC,OAAO,GAChB,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG,SAAS,CAMhD;AAED,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,GAAG,CAAC,WAAW,GAClB,YAAY,CAAC,OAAO,SAAS,CAAC,CAiBhC;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,GAAG,CAAC,WAAW,EACnB,OAAO,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,GACtC,IAAI,CAaN"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assembleCreateSporeAction = assembleCreateSporeAction;
4
+ exports.assembleTransferSporeAction = assembleTransferSporeAction;
5
+ exports.assembleMeltSporeAction = assembleMeltSporeAction;
6
+ exports.assembleCreateClusterAction = assembleCreateClusterAction;
7
+ exports.assembleTransferClusterAction = assembleTransferClusterAction;
8
+ exports.prepareSporeTransaction = prepareSporeTransaction;
9
+ exports.unpackCommonCobuildProof = unpackCommonCobuildProof;
10
+ exports.extractCobuildActionsFromTx = extractCobuildActionsFromTx;
11
+ exports.injectCobuild = injectCobuild;
12
+ const core_1 = require("@ckb-ccc/core");
13
+ const index_js_1 = require("../codec/index.js");
14
+ const index_js_2 = require("../predefined/index.js");
15
+ function assembleCreateSporeAction(sporeOutput, sporeData, scriptInfoHash = index_js_2.DEFAULT_COBUILD_INFO_HASH) {
16
+ if (!sporeOutput.type) {
17
+ throw new Error("Spore cell must have a type script");
18
+ }
19
+ const sporeType = core_1.ccc.Script.from(sporeOutput.type);
20
+ const sporeTypeHash = sporeType.hash();
21
+ const actionData = index_js_1.SporeAction.pack({
22
+ type: "CreateSpore",
23
+ value: {
24
+ sporeId: sporeType.args,
25
+ dataHash: core_1.ccc.hashCkb(sporeData),
26
+ to: {
27
+ type: "Script",
28
+ value: core_1.ccc.Script.from(sporeOutput.lock),
29
+ },
30
+ },
31
+ });
32
+ return {
33
+ scriptInfoHash: core_1.ccc.hexFrom(scriptInfoHash),
34
+ scriptHash: sporeTypeHash,
35
+ data: core_1.ccc.hexFrom(actionData),
36
+ };
37
+ }
38
+ function assembleTransferSporeAction(sporeInput, sporeOutput, scriptInfoHash = index_js_2.DEFAULT_COBUILD_INFO_HASH) {
39
+ if (!sporeInput.type || !sporeOutput.type) {
40
+ throw new Error("Spore cell must have a type script");
41
+ }
42
+ const sporeType = core_1.ccc.Script.from(sporeOutput.type);
43
+ const sporeTypeHash = sporeType.hash();
44
+ const actionData = index_js_1.SporeAction.pack({
45
+ type: "TransferSpore",
46
+ value: {
47
+ sporeId: sporeType.args,
48
+ from: {
49
+ type: "Script",
50
+ value: core_1.ccc.Script.from(sporeInput.lock),
51
+ },
52
+ to: {
53
+ type: "Script",
54
+ value: core_1.ccc.Script.from(sporeOutput.lock),
55
+ },
56
+ },
57
+ });
58
+ return {
59
+ scriptInfoHash: core_1.ccc.hexFrom(scriptInfoHash),
60
+ scriptHash: sporeTypeHash,
61
+ data: core_1.ccc.hexFrom(actionData),
62
+ };
63
+ }
64
+ function assembleMeltSporeAction(sporeInput, scriptInfoHash = index_js_2.DEFAULT_COBUILD_INFO_HASH) {
65
+ if (!sporeInput.type) {
66
+ throw new Error("Spore cell must have a type script");
67
+ }
68
+ const sporeType = core_1.ccc.Script.from(sporeInput.type);
69
+ const sporeTypeHash = sporeType.hash();
70
+ const actionData = index_js_1.SporeAction.pack({
71
+ type: "MeltSpore",
72
+ value: {
73
+ sporeId: sporeType.args,
74
+ from: {
75
+ type: "Script",
76
+ value: core_1.ccc.Script.from(sporeInput.lock),
77
+ },
78
+ },
79
+ });
80
+ return {
81
+ scriptInfoHash: core_1.ccc.hexFrom(scriptInfoHash),
82
+ scriptHash: sporeTypeHash,
83
+ data: core_1.ccc.hexFrom(actionData),
84
+ };
85
+ }
86
+ function assembleCreateClusterAction(clusterOutput, clusterData, scriptInfoHash = index_js_2.DEFAULT_COBUILD_INFO_HASH) {
87
+ if (!clusterOutput.type) {
88
+ throw new Error("Cluster cell must have a type script");
89
+ }
90
+ const clusterType = core_1.ccc.Script.from(clusterOutput.type);
91
+ const clusterTypeHash = clusterType.hash();
92
+ const actionData = index_js_1.SporeAction.pack({
93
+ type: "CreateCluster",
94
+ value: {
95
+ clusterId: clusterType.args,
96
+ dataHash: core_1.ccc.hashCkb(clusterData),
97
+ to: {
98
+ type: "Script",
99
+ value: core_1.ccc.Script.from(clusterOutput.lock),
100
+ },
101
+ },
102
+ });
103
+ return {
104
+ scriptInfoHash: core_1.ccc.hexFrom(scriptInfoHash),
105
+ scriptHash: clusterTypeHash,
106
+ data: core_1.ccc.hexFrom(actionData),
107
+ };
108
+ }
109
+ function assembleTransferClusterAction(clusterInput, clusterOutput, scriptInfoHash = index_js_2.DEFAULT_COBUILD_INFO_HASH) {
110
+ if (!clusterInput.type || !clusterOutput.type) {
111
+ throw new Error("Cluster cell must have a type script");
112
+ }
113
+ const clusterType = core_1.ccc.Script.from(clusterOutput.type);
114
+ const clusterTypeHash = clusterType.hash();
115
+ const actionData = index_js_1.SporeAction.pack({
116
+ type: "TransferCluster",
117
+ value: {
118
+ clusterId: clusterType.args,
119
+ from: {
120
+ type: "Script",
121
+ value: core_1.ccc.Script.from(clusterInput.lock),
122
+ },
123
+ to: {
124
+ type: "Script",
125
+ value: core_1.ccc.Script.from(clusterOutput.lock),
126
+ },
127
+ },
128
+ });
129
+ return {
130
+ scriptInfoHash: core_1.ccc.hexFrom(scriptInfoHash),
131
+ scriptHash: clusterTypeHash,
132
+ data: core_1.ccc.hexFrom(actionData),
133
+ };
134
+ }
135
+ async function prepareSporeTransaction(signer, txLike, actions) {
136
+ let tx = core_1.ccc.Transaction.from(txLike);
137
+ if (actions.length === 0) {
138
+ return signer.prepareTransaction(tx);
139
+ }
140
+ const existedActions = extractCobuildActionsFromTx(tx);
141
+ tx = await signer.prepareTransaction(tx);
142
+ injectCobuild(tx, [...existedActions, ...actions]);
143
+ return tx;
144
+ }
145
+ function unpackCommonCobuildProof(data) {
146
+ try {
147
+ return index_js_1.WitnessLayout.unpack(core_1.ccc.bytesFrom(data));
148
+ }
149
+ catch {
150
+ return;
151
+ }
152
+ }
153
+ function extractCobuildActionsFromTx(tx) {
154
+ if (tx.witnesses.length === 0) {
155
+ return [];
156
+ }
157
+ const witnessLayout = unpackCommonCobuildProof(tx.witnesses[tx.witnesses.length - 1]);
158
+ if (!witnessLayout) {
159
+ return [];
160
+ }
161
+ if (witnessLayout.type !== "SighashAll") {
162
+ throw new Error("Invalid cobuild proof type: " + witnessLayout.type);
163
+ }
164
+ // Remove existed cobuild witness
165
+ tx.witnesses.pop();
166
+ return witnessLayout.value.message.actions;
167
+ }
168
+ function injectCobuild(tx, actions) {
169
+ const witnessLayout = core_1.ccc.hexFrom(index_js_1.WitnessLayout.pack({
170
+ type: "SighashAll",
171
+ value: {
172
+ seal: "0x",
173
+ message: {
174
+ actions,
175
+ },
176
+ },
177
+ }));
178
+ tx.witnesses.push(core_1.ccc.hexFrom(witnessLayout));
179
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The codec for packing/unpacking UTF-8 raw strings.
3
+ * Should be packed like so: String.pack('something')
4
+ */
5
+ export declare const RawString: import("@ckb-lumos/codec/lib/base").BytesCodec<string, string>;
6
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/codec/base.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,SAAS,gEAGpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawString = void 0;
4
+ const core_1 = require("@ckb-ccc/core");
5
+ const codec_1 = require("@ckb-lumos/codec");
6
+ /**
7
+ * The codec for packing/unpacking UTF-8 raw strings.
8
+ * Should be packed like so: String.pack('something')
9
+ */
10
+ exports.RawString = codec_1.molecule.byteVecOf({
11
+ pack: (packable) => core_1.ccc.bytesFrom(packable, "utf8"),
12
+ unpack: (unpackable) => core_1.ccc.bytesTo(unpackable, "utf8"),
13
+ });
@@ -0,0 +1,41 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { molecule } from "@ckb-lumos/codec";
3
+ export declare const MolClusterDataV1: molecule.ObjectLayoutCodec<{
4
+ name: import("@ckb-lumos/codec/lib/base.js").BytesCodec<string, string>;
5
+ description: import("@ckb-lumos/codec/lib/base.js").BytesCodec<string, string>;
6
+ }>;
7
+ export declare const MolClusterDataV2: molecule.ObjectLayoutCodec<{
8
+ name: import("@ckb-lumos/codec/lib/base.js").BytesCodec<string, string>;
9
+ description: import("@ckb-lumos/codec/lib/base.js").BytesCodec<string, string>;
10
+ mutantId: molecule.OptionLayoutCodec<import("@ckb-lumos/codec/lib/base.js").BytesCodec<string, import("@ckb-lumos/codec").BytesLike>>;
11
+ }>;
12
+ export interface ClusterDataV1 {
13
+ name: string;
14
+ description: string;
15
+ }
16
+ export interface ClusterDataV2 {
17
+ name: string;
18
+ description: string;
19
+ mutantId?: ccc.HexLike;
20
+ }
21
+ export type ClusterData = ClusterDataV2;
22
+ export type ClusterDataVersion = "v1" | "v2";
23
+ /**
24
+ * Pack RawClusterData to Uint8Array.
25
+ * Pass an optional "version" field to select a specific packing version.
26
+ */
27
+ export declare function packRawClusterData(packable: ClusterData): Uint8Array;
28
+ export declare function packRawClusterData(packable: ClusterDataV1, version: "v1"): Uint8Array;
29
+ export declare function packRawClusterData(packable: ClusterDataV2, version: "v2"): Uint8Array;
30
+ export declare function packRawClusterDataV1(packable: ClusterDataV1): Uint8Array;
31
+ export declare function packRawClusterDataV2(packable: ClusterDataV2): Uint8Array;
32
+ /**
33
+ * Unpack Hex/Bytes to RawClusterData.
34
+ * Pass an optional "version" field to select a specific unpacking version.
35
+ */
36
+ export declare function unpackToRawClusterData(unpackable: ccc.BytesLike): ClusterData;
37
+ export declare function unpackToRawClusterData(unpackable: ccc.BytesLike, version: "v1"): ClusterDataV1;
38
+ export declare function unpackToRawClusterData(unpackable: ccc.BytesLike, version: "v2"): ClusterDataV2;
39
+ export declare function unpackToRawClusterDataV1(unpackable: ccc.BytesLike): ClusterDataV1;
40
+ export declare function unpackToRawClusterDataV2(unpackable: ccc.BytesLike): ClusterDataV2;
41
+ //# sourceMappingURL=cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/codec/cluster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,eAAO,MAAM,gBAAgB;;;EAM5B,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;EAO5B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AACD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CAAC;AACtE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,IAAI,GACZ,UAAU,CAAC;AACd,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,IAAI,GACZ,UAAU,CAAC;AAgBd,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,CAKxE;AACD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,CAMxE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;AAC/E,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,GAAG,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,GACZ,aAAa,CAAC;AACjB,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,GAAG,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,GACZ,aAAa,CAAC;AA0BjB,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,GAAG,CAAC,SAAS,GACxB,aAAa,CAMf;AACD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,GAAG,CAAC,SAAS,GACxB,aAAa,CAOf"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MolClusterDataV2 = exports.MolClusterDataV1 = void 0;
4
+ exports.packRawClusterData = packRawClusterData;
5
+ exports.packRawClusterDataV1 = packRawClusterDataV1;
6
+ exports.packRawClusterDataV2 = packRawClusterDataV2;
7
+ exports.unpackToRawClusterData = unpackToRawClusterData;
8
+ exports.unpackToRawClusterDataV1 = unpackToRawClusterDataV1;
9
+ exports.unpackToRawClusterDataV2 = unpackToRawClusterDataV2;
10
+ const core_1 = require("@ckb-ccc/core");
11
+ const base_1 = require("@ckb-lumos/base");
12
+ const codec_1 = require("@ckb-lumos/codec");
13
+ const base_js_1 = require("./base.js");
14
+ exports.MolClusterDataV1 = codec_1.molecule.table({
15
+ name: base_js_1.RawString,
16
+ description: base_js_1.RawString,
17
+ }, ["name", "description"]);
18
+ exports.MolClusterDataV2 = codec_1.molecule.table({
19
+ name: base_js_1.RawString,
20
+ description: base_js_1.RawString,
21
+ mutantId: base_1.blockchain.BytesOpt,
22
+ }, ["name", "description", "mutantId"]);
23
+ function packRawClusterData(packable, version) {
24
+ if (!version) {
25
+ return packRawClusterDataV2(packable);
26
+ }
27
+ switch (version) {
28
+ case "v1":
29
+ return packRawClusterDataV1(packable);
30
+ case "v2":
31
+ return packRawClusterDataV2(packable);
32
+ }
33
+ }
34
+ function packRawClusterDataV1(packable) {
35
+ return exports.MolClusterDataV1.pack({
36
+ name: packable.name,
37
+ description: packable.description,
38
+ });
39
+ }
40
+ function packRawClusterDataV2(packable) {
41
+ return exports.MolClusterDataV2.pack({
42
+ name: packable.name,
43
+ description: packable.description,
44
+ mutantId: packable.mutantId,
45
+ });
46
+ }
47
+ function unpackToRawClusterData(unpackable, version) {
48
+ if (version) {
49
+ switch (version) {
50
+ case "v1":
51
+ return unpackToRawClusterDataV1(unpackable);
52
+ case "v2":
53
+ return unpackToRawClusterDataV2(unpackable);
54
+ }
55
+ }
56
+ try {
57
+ return unpackToRawClusterDataV2(unpackable);
58
+ }
59
+ catch {
60
+ try {
61
+ return unpackToRawClusterDataV1(unpackable);
62
+ }
63
+ catch {
64
+ throw new Error(`Cannot unpack ClusterData, no matching molecule: ${core_1.ccc.hexFrom(unpackable)}`);
65
+ }
66
+ }
67
+ }
68
+ function unpackToRawClusterDataV1(unpackable) {
69
+ const decoded = exports.MolClusterDataV1.unpack(unpackable);
70
+ return {
71
+ name: decoded.name,
72
+ description: decoded.description,
73
+ };
74
+ }
75
+ function unpackToRawClusterDataV2(unpackable) {
76
+ const decoded = exports.MolClusterDataV2.unpack(unpackable);
77
+ return {
78
+ name: decoded.name,
79
+ description: decoded.description,
80
+ mutantId: core_1.ccc.apply(core_1.ccc.hexFrom, decoded.mutantId),
81
+ };
82
+ }