@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,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./mainnet.advanced.js";
2
+ export * from "./testnet.advanced.js";
3
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/predefined/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mainnet.advanced.js"), exports);
18
+ __exportStar(require("./testnet.advanced.js"), exports);
@@ -0,0 +1,3 @@
1
+ export * from "./types.js";
2
+ export * from "./utils.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/predefined/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types.js"), exports);
18
+ __exportStar(require("./utils.js"), exports);
@@ -0,0 +1,4 @@
1
+ import { SporeScriptInfoLike, SporeVersion } from "./types.js";
2
+ export declare const SCRIPTS_SPORE_MAINNET: Record<SporeVersion, SporeScriptInfoLike | undefined>;
3
+ export declare const SCRIPTS_CLUSTER_MAINNET: Record<SporeVersion, SporeScriptInfoLike | undefined>;
4
+ //# sourceMappingURL=mainnet.advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mainnet.advanced.d.ts","sourceRoot":"","sources":["../../src/predefined/mainnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,YAAY,EACZ,mBAAmB,GAAG,SAAS,CA6C/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,YAAY,EACZ,mBAAmB,GAAG,SAAS,CAsB/B,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SCRIPTS_CLUSTER_MAINNET = exports.SCRIPTS_SPORE_MAINNET = void 0;
4
+ const types_js_1 = require("./types.js");
5
+ exports.SCRIPTS_SPORE_MAINNET = Object.freeze({
6
+ [types_js_1.SporeVersion.DID]: {
7
+ codeHash: "0xcfba73b58b6f30e70caed8a999748781b164ef9a1e218424a6fb55ebf641cb33",
8
+ hashType: "type",
9
+ cellDeps: [
10
+ {
11
+ cellDep: {
12
+ outPoint: {
13
+ txHash: "0x37c80ba8124780920bc8fe06b49e3535b43ca339bb9a97fb462b16d575bfa9a6",
14
+ index: 0,
15
+ },
16
+ depType: "code",
17
+ },
18
+ type: {
19
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
20
+ hashType: "type",
21
+ args: "0x62312cd846659e188b05da11dc3f080b083c27371ea701d6026e11e713e0e3de",
22
+ },
23
+ },
24
+ ],
25
+ cobuild: true,
26
+ },
27
+ [types_js_1.SporeVersion.V2]: {
28
+ codeHash: "0x4a4dce1df3dffff7f8b2cd7dff7303df3b6150c9788cb75dcf6747247132b9f5",
29
+ hashType: "data1",
30
+ cellDeps: [
31
+ {
32
+ cellDep: {
33
+ outPoint: {
34
+ txHash: "0x96b198fb5ddbd1eed57ed667068f1f1e55d07907b4c0dbd38675a69ea1b69824",
35
+ index: 0,
36
+ },
37
+ depType: "code",
38
+ },
39
+ },
40
+ ],
41
+ cobuild: true,
42
+ },
43
+ [types_js_1.SporeVersion.V1]: undefined,
44
+ });
45
+ exports.SCRIPTS_CLUSTER_MAINNET = Object.freeze({
46
+ [types_js_1.SporeVersion.V2]: {
47
+ codeHash: "0x7366a61534fa7c7e6225ecc0d828ea3b5366adec2b58206f2ee84995fe030075",
48
+ hashType: "data1",
49
+ cellDeps: [
50
+ {
51
+ cellDep: {
52
+ outPoint: {
53
+ txHash: "0xe464b7fb9311c5e2820e61c99afc615d6b98bdefbe318c34868c010cbd0dc938",
54
+ index: 0,
55
+ },
56
+ depType: "code",
57
+ },
58
+ },
59
+ ],
60
+ cobuild: true,
61
+ },
62
+ [types_js_1.SporeVersion.V1]: undefined,
63
+ [types_js_1.SporeVersion.DID]: undefined,
64
+ });
@@ -0,0 +1,4 @@
1
+ import { SporeScriptInfoLike, SporeVersion } from "./types.js";
2
+ export declare const SCRIPTS_SPORE_TESTNET: Record<SporeVersion, SporeScriptInfoLike | undefined>;
3
+ export declare const SCRIPTS_CLUSTER_TESTNET: Record<SporeVersion, SporeScriptInfoLike | undefined>;
4
+ //# sourceMappingURL=testnet.advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testnet.advanced.d.ts","sourceRoot":"","sources":["../../src/predefined/testnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,YAAY,EACZ,mBAAmB,GAAG,SAAS,CA4D/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,YAAY,EACZ,mBAAmB,GAAG,SAAS,CAsC/B,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SCRIPTS_CLUSTER_TESTNET = exports.SCRIPTS_SPORE_TESTNET = void 0;
4
+ const types_js_1 = require("./types.js");
5
+ exports.SCRIPTS_SPORE_TESTNET = Object.freeze({
6
+ [types_js_1.SporeVersion.DID]: {
7
+ codeHash: "0x0b1f412fbae26853ff7d082d422c2bdd9e2ff94ee8aaec11240a5b34cc6e890f",
8
+ hashType: "type",
9
+ cellDeps: [
10
+ {
11
+ cellDep: {
12
+ outPoint: {
13
+ txHash: "0x306961e0eb04ed972c60cb89a0aed1b0ef065d96d2fc0000c62db5275e32dc6f",
14
+ index: 0,
15
+ },
16
+ depType: "code",
17
+ },
18
+ type: {
19
+ codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
20
+ hashType: "type",
21
+ args: "0x80f0d4bf6b3951911aa6b98cc609d477a8a10b903b35cfd528d098e95c36f680",
22
+ },
23
+ },
24
+ ],
25
+ },
26
+ [types_js_1.SporeVersion.V2]: {
27
+ codeHash: "0x685a60219309029d01310311dba953d67029170ca4848a4ff638e57002130a0d",
28
+ hashType: "data1",
29
+ cellDeps: [
30
+ {
31
+ cellDep: {
32
+ outPoint: {
33
+ txHash: "0x5e8d2a517d50fd4bb4d01737a7952a1f1d35c8afc77240695bb569cd7d9d5a1f",
34
+ index: 0,
35
+ },
36
+ depType: "code",
37
+ },
38
+ },
39
+ ],
40
+ cobuild: true,
41
+ },
42
+ [types_js_1.SporeVersion.V1]: {
43
+ codeHash: "0xbbad126377d45f90a8ee120da988a2d7332c78ba8fd679aab478a19d6c133494",
44
+ hashType: "data1",
45
+ cellDeps: [
46
+ {
47
+ cellDep: {
48
+ outPoint: {
49
+ txHash: "0xfd694382e621f175ddf81ce91ce2ecf8bfc027d53d7d31b8438f7d26fc37fd19",
50
+ index: 0,
51
+ },
52
+ depType: "code",
53
+ },
54
+ },
55
+ ],
56
+ },
57
+ });
58
+ exports.SCRIPTS_CLUSTER_TESTNET = Object.freeze({
59
+ [types_js_1.SporeVersion.V2]: {
60
+ codeHash: "0x0bbe768b519d8ea7b96d58f1182eb7e6ef96c541fbd9526975077ee09f049058",
61
+ hashType: "data1",
62
+ cellDeps: [
63
+ {
64
+ cellDep: {
65
+ outPoint: {
66
+ txHash: "0xcebb174d6e300e26074aea2f5dbd7f694bb4fe3de52b6dfe205e54f90164510a",
67
+ index: 0,
68
+ },
69
+ depType: "code",
70
+ },
71
+ },
72
+ ],
73
+ cobuild: true,
74
+ },
75
+ [types_js_1.SporeVersion.V1]: {
76
+ codeHash: "0x598d793defef36e2eeba54a9b45130e4ca92822e1d193671f490950c3b856080",
77
+ hashType: "data1",
78
+ cellDeps: [
79
+ {
80
+ cellDep: {
81
+ outPoint: {
82
+ txHash: "0x49551a20dfe39231e7db49431d26c9c08ceec96a29024eef3acc936deeb2ca76",
83
+ index: 0,
84
+ },
85
+ depType: "code",
86
+ },
87
+ },
88
+ ],
89
+ },
90
+ [types_js_1.SporeVersion.DID]: undefined,
91
+ });
@@ -0,0 +1,17 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ export declare const DEFAULT_COBUILD_INFO_HASH: `0x${string}`;
3
+ export declare enum SporeVersion {
4
+ V1 = "V1",
5
+ V2 = "V2",
6
+ DID = "DID"
7
+ }
8
+ export declare const SPORE_VERSION_DEFAULT = SporeVersion.V2;
9
+ export type SporeScriptInfoLike = ccc.ScriptInfoLike & {
10
+ cobuild?: boolean;
11
+ };
12
+ export declare class SporeScriptInfo extends ccc.ScriptInfo {
13
+ cobuild?: boolean | undefined;
14
+ constructor(codeHash: ccc.Hex, hashType: ccc.HashType, cellDeps: ccc.CellDepInfo[], cobuild?: boolean | undefined);
15
+ static from(scriptInfoLike: SporeScriptInfoLike): SporeScriptInfo;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/predefined/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,eAAO,MAAM,yBAAyB,eAErC,CAAC;AAEF,oBAAY,YAAY;IACtB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,cAAc,GAAG;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,GAAG,CAAC,UAAU;IAKxC,OAAO,CAAC,EAAE,OAAO;gBAHxB,QAAQ,EAAE,GAAG,CAAC,GAAG,EACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE,OAAO,YAAA;IAK1B,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,GAAG,eAAe;CAQlE"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SporeScriptInfo = exports.SPORE_VERSION_DEFAULT = exports.SporeVersion = exports.DEFAULT_COBUILD_INFO_HASH = void 0;
4
+ const core_1 = require("@ckb-ccc/core");
5
+ exports.DEFAULT_COBUILD_INFO_HASH = core_1.ccc.hashCkb(core_1.ccc.bytesFrom("CCC_DEFAULT_COBUILD_INFO", "utf8"));
6
+ var SporeVersion;
7
+ (function (SporeVersion) {
8
+ SporeVersion["V1"] = "V1";
9
+ SporeVersion["V2"] = "V2";
10
+ SporeVersion["DID"] = "DID";
11
+ })(SporeVersion || (exports.SporeVersion = SporeVersion = {}));
12
+ exports.SPORE_VERSION_DEFAULT = SporeVersion.V2;
13
+ class SporeScriptInfo extends core_1.ccc.ScriptInfo {
14
+ constructor(codeHash, hashType, cellDeps, cobuild) {
15
+ super(codeHash, hashType, cellDeps);
16
+ this.cobuild = cobuild;
17
+ }
18
+ static from(scriptInfoLike) {
19
+ return new SporeScriptInfo(core_1.ccc.hexFrom(scriptInfoLike.codeHash), core_1.ccc.hashTypeFrom(scriptInfoLike.hashType), scriptInfoLike.cellDeps.map((c) => core_1.ccc.CellDepInfo.from(c)), scriptInfoLike.cobuild);
20
+ }
21
+ }
22
+ exports.SporeScriptInfo = SporeScriptInfo;
@@ -0,0 +1,7 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { SporeScriptInfo, SporeVersion } from "./types.js";
3
+ export declare function getSporeScriptInfos(client: ccc.Client): Record<SporeVersion, import("./types.js").SporeScriptInfoLike | undefined>;
4
+ export declare function getClusterScriptInfos(client: ccc.Client): Record<SporeVersion, import("./types.js").SporeScriptInfoLike | undefined>;
5
+ export declare function getSporeScriptInfo(client: ccc.Client, version?: SporeVersion): SporeScriptInfo;
6
+ export declare function getClusterScriptInfo(client: ccc.Client, version?: SporeVersion): SporeScriptInfo;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/predefined/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAOpC,OAAO,EAEL,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,8EAIrD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,8EAIvD;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,eAAe,CAWjB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,eAAe,CAWjB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSporeScriptInfos = getSporeScriptInfos;
4
+ exports.getClusterScriptInfos = getClusterScriptInfos;
5
+ exports.getSporeScriptInfo = getSporeScriptInfo;
6
+ exports.getClusterScriptInfo = getClusterScriptInfo;
7
+ const advanced_js_1 = require("./advanced.js");
8
+ const types_js_1 = require("./types.js");
9
+ function getSporeScriptInfos(client) {
10
+ return client.addressPrefix === "ckb"
11
+ ? advanced_js_1.SCRIPTS_SPORE_MAINNET
12
+ : advanced_js_1.SCRIPTS_SPORE_TESTNET;
13
+ }
14
+ function getClusterScriptInfos(client) {
15
+ return client.addressPrefix === "ckb"
16
+ ? advanced_js_1.SCRIPTS_CLUSTER_MAINNET
17
+ : advanced_js_1.SCRIPTS_CLUSTER_TESTNET;
18
+ }
19
+ function getSporeScriptInfo(client, version) {
20
+ const scriptInfo = getSporeScriptInfos(client)[version ?? types_js_1.SPORE_VERSION_DEFAULT];
21
+ if (!scriptInfo) {
22
+ throw new Error(`Spore script info not found of for version ${version} on ${client.addressPrefix}`);
23
+ }
24
+ return types_js_1.SporeScriptInfo.from(scriptInfo);
25
+ }
26
+ function getClusterScriptInfo(client, version) {
27
+ const scriptInfo = getClusterScriptInfos(client)[version ?? types_js_1.SPORE_VERSION_DEFAULT];
28
+ if (!scriptInfo) {
29
+ throw new Error(`Cluster script info not found of for version ${version} on ${client.addressPrefix}`);
30
+ }
31
+ return types_js_1.SporeScriptInfo.from(scriptInfo);
32
+ }
@@ -0,0 +1,5 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { UnpackResult } from "@ckb-lumos/codec";
3
+ import { Action, SporeData } from "../codec/index.js";
4
+ export declare function prepareCluster(signer: ccc.Signer, tx: ccc.Transaction, data: SporeData, clusterMode?: "lockProxy" | "clusterCell" | "skip", scriptInfoHash?: ccc.HexLike): Promise<UnpackResult<typeof Action> | undefined>;
5
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/spore/advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGtD,wBAAsB,cAAc,CAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,EAAE,EAAE,GAAG,CAAC,WAAW,EACnB,IAAI,EAAE,SAAS,EACf,WAAW,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,EAClD,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,GAC3B,OAAO,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,GAAG,SAAS,CAAC,CA0ElD"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareCluster = prepareCluster;
4
+ const core_1 = require("@ckb-ccc/core");
5
+ const advanced_js_1 = require("../advanced.js");
6
+ const index_js_1 = require("../cluster/index.js");
7
+ const index_js_2 = require("../helper/index.js");
8
+ async function prepareCluster(signer, tx, data, clusterMode, scriptInfoHash) {
9
+ // skip if the spore is not belong to a cluster
10
+ if (!data.clusterId || clusterMode === "skip") {
11
+ return;
12
+ }
13
+ if (!clusterMode) {
14
+ throw Error("clusterMode is undefined but the spore has a cluster");
15
+ }
16
+ const { cell: cluster, scriptInfo } = await (0, index_js_1.assertCluster)(signer.client, data.clusterId);
17
+ // If this cluster has been processed, nothing will happen to the tx
18
+ switch (clusterMode) {
19
+ case "lockProxy": {
20
+ const lock = cluster.cellOutput.lock;
21
+ if (!(await tx.findInputIndexByLock(lock, signer.client))) {
22
+ // note: We can only search proxy of signer, if any custom logic is in need, developer should get
23
+ // the proxy filled in transaction before invoking `createSpore`
24
+ const proxy = await (0, index_js_2.searchOneCellBySigner)(signer);
25
+ if (!proxy) {
26
+ throw new Error("Cluster lock proxy cell not found");
27
+ }
28
+ tx.inputs.push(core_1.ccc.CellInput.from({
29
+ previousOutput: proxy.outPoint,
30
+ ...proxy,
31
+ }));
32
+ }
33
+ if (tx.outputs.every((output) => output.lock !== lock)) {
34
+ tx.addOutput({
35
+ lock,
36
+ });
37
+ }
38
+ tx.addCellDeps({
39
+ outPoint: cluster.outPoint,
40
+ depType: "code",
41
+ });
42
+ return;
43
+ }
44
+ case "clusterCell": {
45
+ if (tx.inputs.some((i) => i.previousOutput.eq(cluster.outPoint))) {
46
+ return;
47
+ }
48
+ tx.inputs.push(core_1.ccc.CellInput.from({
49
+ previousOutput: cluster.outPoint,
50
+ ...cluster,
51
+ }));
52
+ tx.addOutput(cluster.cellOutput, cluster.outputData);
53
+ await tx.addCellDepInfos(signer.client, scriptInfo.cellDeps);
54
+ // note: add cluster as cellDep, which will be used in Spore contract
55
+ tx.addCellDeps({
56
+ outPoint: cluster.outPoint,
57
+ depType: "code",
58
+ });
59
+ if (scriptInfo.cobuild) {
60
+ return (0, advanced_js_1.assembleTransferClusterAction)(cluster.cellOutput, cluster.cellOutput, scriptInfoHash);
61
+ }
62
+ return;
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,80 @@
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { SporeData } from "../codec/index.js";
3
+ import { SporeScriptInfo, SporeScriptInfoLike } from "../predefined/index.js";
4
+ export declare function findSpore(client: ccc.Client, args: ccc.HexLike, scripts?: SporeScriptInfoLike[]): Promise<{
5
+ cell: ccc.Cell;
6
+ scriptInfo: SporeScriptInfo;
7
+ } | undefined>;
8
+ export declare function assertSpore(client: ccc.Client, args: ccc.HexLike, scripts?: SporeScriptInfoLike[]): Promise<{
9
+ cell: ccc.Cell;
10
+ scriptInfo: SporeScriptInfo;
11
+ }>;
12
+ /**
13
+ * Create one Spore cell with the specified Spore data.
14
+ *
15
+ * @param signer who takes the responsibility to balance and sign the transaction
16
+ * @param data specific format of data required by Spore protocol
17
+ * @param to owner of new spore cell, signer if no provided
18
+ * @param clusterMode how to process cluster cell **(if clusterId is not provided in SporeData, this parameter will be ignored)**
19
+ * - undefined: error if the spore has a cluster but the clusterMode is not set
20
+ * - lockProxy: put a cell that uses the same lock from Cluster cell in both Inputs and Outputs
21
+ * - clusterCell: directly put Cluster cell in Inputs and Outputs
22
+ * - skip: don't handle the cluster logic
23
+ * @param tx the transaction skeleton, if not provided, a new one will be created
24
+ * @param scriptInfo the script info of Spore cell, if not provided, the default script info will be used
25
+ * @param scriptInfoHash the script info hash used in cobuild
26
+ * @returns
27
+ * - **tx**: a new transaction that contains created Spore cells
28
+ * - **id**: the sporeId of created Spore cell
29
+ */
30
+ export declare function createSpore(params: {
31
+ signer: ccc.Signer;
32
+ data: SporeData;
33
+ to?: ccc.ScriptLike;
34
+ clusterMode?: "lockProxy" | "clusterCell" | "skip";
35
+ tx?: ccc.TransactionLike;
36
+ scriptInfo?: SporeScriptInfoLike;
37
+ scriptInfoHash?: ccc.HexLike;
38
+ }): Promise<{
39
+ tx: ccc.Transaction;
40
+ id: ccc.Hex;
41
+ }>;
42
+ /**
43
+ * Transfer one Spore cell
44
+ *
45
+ * @param signer who takes the responsibility to balance and sign the transaction
46
+ * @param id sporeId
47
+ * @param to Spore's new owner
48
+ * @param tx the transaction skeleton, if not provided, a new one will be created
49
+ * @param scriptInfoHash the script info hash used in cobuild
50
+ * @returns
51
+ * - **tx**: a new transaction that contains transferred Spore cells
52
+ */
53
+ export declare function transferSpore(params: {
54
+ signer: ccc.Signer;
55
+ id: ccc.HexLike;
56
+ to: ccc.ScriptLike;
57
+ tx?: ccc.TransactionLike;
58
+ scriptInfoHash?: ccc.HexLike;
59
+ }): Promise<{
60
+ tx: ccc.Transaction;
61
+ }>;
62
+ /**
63
+ * Melt one Spore cell
64
+ *
65
+ * @param signer who takes the responsibility to balance and sign the transaction
66
+ * @param id sporeId to be melted
67
+ * @param tx the transaction skeleton, if not provided, a new one will be created
68
+ * @param scriptInfoHash the script info hash used in cobuild
69
+ * @returns
70
+ * - **tx**: a new transaction that contains melted Spore cell
71
+ */
72
+ export declare function meltSpore(params: {
73
+ signer: ccc.Signer;
74
+ id: ccc.HexLike;
75
+ tx?: ccc.TransactionLike;
76
+ scriptInfoHash?: ccc.HexLike;
77
+ }): Promise<{
78
+ tx: ccc.Transaction;
79
+ }>;
80
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spore/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAOpC,OAAO,EAAE,SAAS,EAAoB,MAAM,mBAAmB,CAAC;AAKhE,OAAO,EACL,eAAe,EACf,mBAAmB,EAGpB,MAAM,wBAAwB,CAAC;AAGhC,wBAAsB,SAAS,CAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,OAAO,EACjB,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAC9B,OAAO,CACN;IACE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;CAC7B,GACD,SAAS,CACZ,CAMA;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,IAAI,EAAE,GAAG,CAAC,OAAO,EACjB,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAC9B,OAAO,CAAC;IACT,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC,CAQD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IACnD,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC;IACpB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;CACb,CAAC,CAqDD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;IAChB,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC;IACnB,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACzB,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC;CACrB,CAAC,CAmCD;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE;IACtC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;IACzB,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC;IACV,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC;CACrB,CAAC,CAuBD"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findSpore = findSpore;
4
+ exports.assertSpore = assertSpore;
5
+ exports.createSpore = createSpore;
6
+ exports.transferSpore = transferSpore;
7
+ exports.meltSpore = meltSpore;
8
+ const core_1 = require("@ckb-ccc/core");
9
+ const advanced_js_1 = require("../advanced.js");
10
+ const index_js_1 = require("../codec/index.js");
11
+ const index_js_2 = require("../helper/index.js");
12
+ const index_js_3 = require("../predefined/index.js");
13
+ const advanced_js_2 = require("./advanced.js");
14
+ async function findSpore(client, args, scripts) {
15
+ return (0, index_js_2.findSingletonCellByArgs)(client, args, scripts ?? Object.values((0, index_js_3.getSporeScriptInfos)(client)));
16
+ }
17
+ async function assertSpore(client, args, scripts) {
18
+ const res = await findSpore(client, args, scripts);
19
+ if (!res) {
20
+ throw new Error(`Spore ${core_1.ccc.hexFrom(args)} not found`);
21
+ }
22
+ return res;
23
+ }
24
+ /**
25
+ * Create one Spore cell with the specified Spore data.
26
+ *
27
+ * @param signer who takes the responsibility to balance and sign the transaction
28
+ * @param data specific format of data required by Spore protocol
29
+ * @param to owner of new spore cell, signer if no provided
30
+ * @param clusterMode how to process cluster cell **(if clusterId is not provided in SporeData, this parameter will be ignored)**
31
+ * - undefined: error if the spore has a cluster but the clusterMode is not set
32
+ * - lockProxy: put a cell that uses the same lock from Cluster cell in both Inputs and Outputs
33
+ * - clusterCell: directly put Cluster cell in Inputs and Outputs
34
+ * - skip: don't handle the cluster logic
35
+ * @param tx the transaction skeleton, if not provided, a new one will be created
36
+ * @param scriptInfo the script info of Spore cell, if not provided, the default script info will be used
37
+ * @param scriptInfoHash the script info hash used in cobuild
38
+ * @returns
39
+ * - **tx**: a new transaction that contains created Spore cells
40
+ * - **id**: the sporeId of created Spore cell
41
+ */
42
+ async function createSpore(params) {
43
+ const { signer, data, to, clusterMode, scriptInfoHash } = params;
44
+ const scriptInfo = params.scriptInfo ?? (0, index_js_3.getSporeScriptInfo)(signer.client);
45
+ // prepare transaction
46
+ const actions = [];
47
+ const ids = [];
48
+ const tx = core_1.ccc.Transaction.from(params.tx ?? {});
49
+ if (tx.inputs.length === 0) {
50
+ await (0, index_js_2.injectOneCapacityCell)(signer, tx);
51
+ }
52
+ const { script: lock } = await signer.getRecommendedAddressObj();
53
+ // build spore cell
54
+ const id = core_1.ccc.hashTypeId(tx.inputs[0], tx.outputs.length);
55
+ ids.push(id);
56
+ const packedData = (0, index_js_1.packRawSporeData)(data);
57
+ tx.addOutput({
58
+ lock: to ?? lock,
59
+ type: {
60
+ ...scriptInfo,
61
+ args: id,
62
+ },
63
+ }, packedData);
64
+ // create spore action
65
+ if (scriptInfo.cobuild) {
66
+ const output = tx.outputs[tx.outputs.length - 1];
67
+ const createAction = (0, advanced_js_1.assembleCreateSporeAction)(output, packedData, scriptInfoHash);
68
+ actions.push(createAction);
69
+ }
70
+ // complete cellDeps
71
+ await tx.addCellDepInfos(signer.client, scriptInfo.cellDeps);
72
+ const action = await (0, advanced_js_2.prepareCluster)(signer, tx, data, clusterMode);
73
+ if (action) {
74
+ actions.push(action);
75
+ }
76
+ return {
77
+ tx: await (0, advanced_js_1.prepareSporeTransaction)(signer, tx, actions),
78
+ id,
79
+ };
80
+ }
81
+ /**
82
+ * Transfer one Spore cell
83
+ *
84
+ * @param signer who takes the responsibility to balance and sign the transaction
85
+ * @param id sporeId
86
+ * @param to Spore's new owner
87
+ * @param tx the transaction skeleton, if not provided, a new one will be created
88
+ * @param scriptInfoHash the script info hash used in cobuild
89
+ * @returns
90
+ * - **tx**: a new transaction that contains transferred Spore cells
91
+ */
92
+ async function transferSpore(params) {
93
+ const { signer, id, to, scriptInfoHash } = params;
94
+ // prepare transaction
95
+ const tx = core_1.ccc.Transaction.from(params.tx ?? {});
96
+ const { cell: sporeCell, scriptInfo } = await assertSpore(signer.client, id);
97
+ await tx.addCellDepInfos(signer.client, scriptInfo.cellDeps);
98
+ tx.inputs.push(core_1.ccc.CellInput.from({
99
+ previousOutput: sporeCell.outPoint,
100
+ ...sporeCell,
101
+ }));
102
+ tx.addOutput({
103
+ lock: to,
104
+ type: sporeCell.cellOutput.type,
105
+ }, sporeCell.outputData);
106
+ const actions = scriptInfo.cobuild
107
+ ? [
108
+ (0, advanced_js_1.assembleTransferSporeAction)(sporeCell.cellOutput, tx.outputs[tx.outputs.length - 1], scriptInfoHash),
109
+ ]
110
+ : [];
111
+ return {
112
+ tx: await (0, advanced_js_1.prepareSporeTransaction)(signer, tx, actions),
113
+ };
114
+ }
115
+ /**
116
+ * Melt one Spore cell
117
+ *
118
+ * @param signer who takes the responsibility to balance and sign the transaction
119
+ * @param id sporeId to be melted
120
+ * @param tx the transaction skeleton, if not provided, a new one will be created
121
+ * @param scriptInfoHash the script info hash used in cobuild
122
+ * @returns
123
+ * - **tx**: a new transaction that contains melted Spore cell
124
+ */
125
+ async function meltSpore(params) {
126
+ const { signer, id, scriptInfoHash } = params;
127
+ // prepare transaction
128
+ const tx = core_1.ccc.Transaction.from(params.tx ?? {});
129
+ // build spore cell
130
+ const { cell: sporeCell, scriptInfo } = await assertSpore(signer.client, id);
131
+ await tx.addCellDepInfos(signer.client, scriptInfo.cellDeps);
132
+ tx.inputs.push(core_1.ccc.CellInput.from({
133
+ previousOutput: sporeCell.outPoint,
134
+ ...sporeCell,
135
+ }));
136
+ const actions = scriptInfo.cobuild
137
+ ? [(0, advanced_js_1.assembleMeltSporeAction)(sporeCell.cellOutput, scriptInfoHash)]
138
+ : [];
139
+ return {
140
+ tx: await (0, advanced_js_1.prepareSporeTransaction)(signer, tx, actions),
141
+ };
142
+ }