@nockchain/rose-ts 0.1.1-alpha

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 (242) hide show
  1. package/README.md +373 -0
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +2 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/core/belt.d.ts +16 -0
  7. package/dist/core/belt.d.ts.map +1 -0
  8. package/dist/core/belt.js +120 -0
  9. package/dist/core/belt.js.map +1 -0
  10. package/dist/core/digest.d.ts +9 -0
  11. package/dist/core/digest.d.ts.map +1 -0
  12. package/dist/core/digest.js +76 -0
  13. package/dist/core/digest.js.map +1 -0
  14. package/dist/core/hashable.d.ts +21 -0
  15. package/dist/core/hashable.d.ts.map +1 -0
  16. package/dist/core/hashable.js +128 -0
  17. package/dist/core/hashable.js.map +1 -0
  18. package/dist/core/lock.d.ts +8 -0
  19. package/dist/core/lock.d.ts.map +1 -0
  20. package/dist/core/lock.js +95 -0
  21. package/dist/core/lock.js.map +1 -0
  22. package/dist/core/merkle.d.ts +7 -0
  23. package/dist/core/merkle.d.ts.map +1 -0
  24. package/dist/core/merkle.js +57 -0
  25. package/dist/core/merkle.js.map +1 -0
  26. package/dist/core/must.d.ts +3 -0
  27. package/dist/core/must.d.ts.map +1 -0
  28. package/dist/core/must.js +14 -0
  29. package/dist/core/must.js.map +1 -0
  30. package/dist/core/tip5/constants.d.ts +10 -0
  31. package/dist/core/tip5/constants.d.ts.map +1 -0
  32. package/dist/core/tip5/constants.js +70 -0
  33. package/dist/core/tip5/constants.js.map +1 -0
  34. package/dist/core/tip5/index.d.ts +5 -0
  35. package/dist/core/tip5/index.d.ts.map +1 -0
  36. package/dist/core/tip5/index.js +100 -0
  37. package/dist/core/tip5/index.js.map +1 -0
  38. package/dist/core/u256.d.ts +21 -0
  39. package/dist/core/u256.d.ts.map +1 -0
  40. package/dist/core/u256.js +96 -0
  41. package/dist/core/u256.js.map +1 -0
  42. package/dist/core/ubig.d.ts +20 -0
  43. package/dist/core/ubig.d.ts.map +1 -0
  44. package/dist/core/ubig.js +81 -0
  45. package/dist/core/ubig.js.map +1 -0
  46. package/dist/core/zbase.d.ts +11 -0
  47. package/dist/core/zbase.d.ts.map +1 -0
  48. package/dist/core/zbase.js +82 -0
  49. package/dist/core/zbase.js.map +1 -0
  50. package/dist/crypto/bpoly.d.ts +3 -0
  51. package/dist/crypto/bpoly.d.ts.map +1 -0
  52. package/dist/crypto/bpoly.js +121 -0
  53. package/dist/crypto/bpoly.js.map +1 -0
  54. package/dist/crypto/cheetah.d.ts +25 -0
  55. package/dist/crypto/cheetah.d.ts.map +1 -0
  56. package/dist/crypto/cheetah.js +250 -0
  57. package/dist/crypto/cheetah.js.map +1 -0
  58. package/dist/crypto/index.d.ts +7 -0
  59. package/dist/crypto/index.d.ts.map +1 -0
  60. package/dist/crypto/index.js +24 -0
  61. package/dist/crypto/index.js.map +1 -0
  62. package/dist/crypto/privateKey.d.ts +11 -0
  63. package/dist/crypto/privateKey.d.ts.map +1 -0
  64. package/dist/crypto/privateKey.js +88 -0
  65. package/dist/crypto/privateKey.js.map +1 -0
  66. package/dist/crypto/publicKey.d.ts +18 -0
  67. package/dist/crypto/publicKey.d.ts.map +1 -0
  68. package/dist/crypto/publicKey.js +79 -0
  69. package/dist/crypto/publicKey.js.map +1 -0
  70. package/dist/crypto/slip10.d.ts +10 -0
  71. package/dist/crypto/slip10.d.ts.map +1 -0
  72. package/dist/crypto/slip10.js +104 -0
  73. package/dist/crypto/slip10.js.map +1 -0
  74. package/dist/grpc/index.d.ts +12 -0
  75. package/dist/grpc/index.d.ts.map +1 -0
  76. package/dist/grpc/index.js +13 -0
  77. package/dist/grpc/index.js.map +1 -0
  78. package/dist/grpc/proto.d.ts +26 -0
  79. package/dist/grpc/proto.d.ts.map +1 -0
  80. package/dist/grpc/proto.js +219 -0
  81. package/dist/grpc/proto.js.map +1 -0
  82. package/dist/hash/index.d.ts +32 -0
  83. package/dist/hash/index.d.ts.map +1 -0
  84. package/dist/hash/index.js +138 -0
  85. package/dist/hash/index.js.map +1 -0
  86. package/dist/hash/note.d.ts +13 -0
  87. package/dist/hash/note.d.ts.map +1 -0
  88. package/dist/hash/note.js +78 -0
  89. package/dist/hash/note.js.map +1 -0
  90. package/dist/hash/noteData.d.ts +12 -0
  91. package/dist/hash/noteData.d.ts.map +1 -0
  92. package/dist/hash/noteData.js +115 -0
  93. package/dist/hash/noteData.js.map +1 -0
  94. package/dist/hash/noun.d.ts +4 -0
  95. package/dist/hash/noun.d.ts.map +1 -0
  96. package/dist/hash/noun.js +15 -0
  97. package/dist/hash/noun.js.map +1 -0
  98. package/dist/hash/structural.d.ts +5 -0
  99. package/dist/hash/structural.d.ts.map +1 -0
  100. package/dist/hash/structural.js +41 -0
  101. package/dist/hash/structural.js.map +1 -0
  102. package/dist/hash/tx.d.ts +15 -0
  103. package/dist/hash/tx.d.ts.map +1 -0
  104. package/dist/hash/tx.js +146 -0
  105. package/dist/hash/tx.js.map +1 -0
  106. package/dist/index.d.ts +14 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +10 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/noun/belts.d.ts +9 -0
  111. package/dist/noun/belts.d.ts.map +1 -0
  112. package/dist/noun/belts.js +73 -0
  113. package/dist/noun/belts.js.map +1 -0
  114. package/dist/noun/bitwriter.d.ts +14 -0
  115. package/dist/noun/bitwriter.d.ts.map +1 -0
  116. package/dist/noun/bitwriter.js +100 -0
  117. package/dist/noun/bitwriter.js.map +1 -0
  118. package/dist/noun/codec.d.ts +9 -0
  119. package/dist/noun/codec.d.ts.map +1 -0
  120. package/dist/noun/codec.js +144 -0
  121. package/dist/noun/codec.js.map +1 -0
  122. package/dist/noun/cue.d.ts +3 -0
  123. package/dist/noun/cue.d.ts.map +1 -0
  124. package/dist/noun/cue.js +152 -0
  125. package/dist/noun/cue.js.map +1 -0
  126. package/dist/noun/encode.d.ts +12 -0
  127. package/dist/noun/encode.d.ts.map +1 -0
  128. package/dist/noun/encode.js +37 -0
  129. package/dist/noun/encode.js.map +1 -0
  130. package/dist/noun/index.d.ts +10 -0
  131. package/dist/noun/index.d.ts.map +1 -0
  132. package/dist/noun/index.js +29 -0
  133. package/dist/noun/index.js.map +1 -0
  134. package/dist/noun/jam.d.ts +3 -0
  135. package/dist/noun/jam.d.ts.map +1 -0
  136. package/dist/noun/jam.js +107 -0
  137. package/dist/noun/jam.js.map +1 -0
  138. package/dist/noun/types.d.ts +21 -0
  139. package/dist/noun/types.d.ts.map +1 -0
  140. package/dist/noun/types.js +66 -0
  141. package/dist/noun/types.js.map +1 -0
  142. package/dist/noun/words.d.ts +3 -0
  143. package/dist/noun/words.d.ts.map +1 -0
  144. package/dist/noun/words.js +6 -0
  145. package/dist/noun/words.js.map +1 -0
  146. package/dist/proto/decode.d.ts +10 -0
  147. package/dist/proto/decode.d.ts.map +1 -0
  148. package/dist/proto/decode.js +44 -0
  149. package/dist/proto/decode.js.map +1 -0
  150. package/dist/proto/digest.d.ts +21 -0
  151. package/dist/proto/digest.d.ts.map +1 -0
  152. package/dist/proto/digest.js +29 -0
  153. package/dist/proto/digest.js.map +1 -0
  154. package/dist/proto/index.d.ts +9 -0
  155. package/dist/proto/index.d.ts.map +1 -0
  156. package/dist/proto/index.js +140 -0
  157. package/dist/proto/index.js.map +1 -0
  158. package/dist/proto/note.d.ts +4 -0
  159. package/dist/proto/note.d.ts.map +1 -0
  160. package/dist/proto/note.js +99 -0
  161. package/dist/proto/note.js.map +1 -0
  162. package/dist/proto/rawTx.d.ts +3 -0
  163. package/dist/proto/rawTx.d.ts.map +1 -0
  164. package/dist/proto/rawTx.js +186 -0
  165. package/dist/proto/rawTx.js.map +1 -0
  166. package/dist/rpc/client.d.ts +13 -0
  167. package/dist/rpc/client.d.ts.map +1 -0
  168. package/dist/rpc/client.js +75 -0
  169. package/dist/rpc/client.js.map +1 -0
  170. package/dist/rpc/types.d.ts +18 -0
  171. package/dist/rpc/types.d.ts.map +1 -0
  172. package/dist/rpc/types.js +2 -0
  173. package/dist/rpc/types.js.map +1 -0
  174. package/dist/rpc/wire/encode.d.ts +4 -0
  175. package/dist/rpc/wire/encode.d.ts.map +1 -0
  176. package/dist/rpc/wire/encode.js +168 -0
  177. package/dist/rpc/wire/encode.js.map +1 -0
  178. package/dist/rpc/wire/protobuf.d.ts +10 -0
  179. package/dist/rpc/wire/protobuf.d.ts.map +1 -0
  180. package/dist/rpc/wire/protobuf.js +50 -0
  181. package/dist/rpc/wire/protobuf.js.map +1 -0
  182. package/dist/stubs.d.ts +6 -0
  183. package/dist/stubs.d.ts.map +1 -0
  184. package/dist/stubs.js +12 -0
  185. package/dist/stubs.js.map +1 -0
  186. package/dist/tx/accessors.d.ts +13 -0
  187. package/dist/tx/accessors.d.ts.map +1 -0
  188. package/dist/tx/accessors.js +65 -0
  189. package/dist/tx/accessors.js.map +1 -0
  190. package/dist/tx/builder.d.ts +63 -0
  191. package/dist/tx/builder.d.ts.map +1 -0
  192. package/dist/tx/builder.js +601 -0
  193. package/dist/tx/builder.js.map +1 -0
  194. package/dist/tx/display.d.ts +7 -0
  195. package/dist/tx/display.d.ts.map +1 -0
  196. package/dist/tx/display.js +34 -0
  197. package/dist/tx/display.js.map +1 -0
  198. package/dist/tx/fee.d.ts +8 -0
  199. package/dist/tx/fee.d.ts.map +1 -0
  200. package/dist/tx/fee.js +81 -0
  201. package/dist/tx/fee.js.map +1 -0
  202. package/dist/tx/htlc.d.ts +21 -0
  203. package/dist/tx/htlc.d.ts.map +1 -0
  204. package/dist/tx/htlc.js +65 -0
  205. package/dist/tx/htlc.js.map +1 -0
  206. package/dist/tx/index.d.ts +19 -0
  207. package/dist/tx/index.d.ts.map +1 -0
  208. package/dist/tx/index.js +64 -0
  209. package/dist/tx/index.js.map +1 -0
  210. package/dist/tx/multisig.d.ts +3 -0
  211. package/dist/tx/multisig.d.ts.map +1 -0
  212. package/dist/tx/multisig.js +8 -0
  213. package/dist/tx/multisig.js.map +1 -0
  214. package/dist/tx/outputs.d.ts +3 -0
  215. package/dist/tx/outputs.d.ts.map +1 -0
  216. package/dist/tx/outputs.js +57 -0
  217. package/dist/tx/outputs.js.map +1 -0
  218. package/dist/tx/spend.d.ts +10 -0
  219. package/dist/tx/spend.d.ts.map +1 -0
  220. package/dist/tx/spend.js +17 -0
  221. package/dist/tx/spend.js.map +1 -0
  222. package/dist/tx/spends.d.ts +8 -0
  223. package/dist/tx/spends.d.ts.map +1 -0
  224. package/dist/tx/spends.js +48 -0
  225. package/dist/tx/spends.js.map +1 -0
  226. package/dist/tx/types.d.ts +5 -0
  227. package/dist/tx/types.d.ts.map +1 -0
  228. package/dist/tx/types.js +2 -0
  229. package/dist/tx/types.js.map +1 -0
  230. package/dist/tx/unlocks.d.ts +4 -0
  231. package/dist/tx/unlocks.d.ts.map +1 -0
  232. package/dist/tx/unlocks.js +49 -0
  233. package/dist/tx/unlocks.js.map +1 -0
  234. package/dist/tx/witness.d.ts +14 -0
  235. package/dist/tx/witness.d.ts.map +1 -0
  236. package/dist/tx/witness.js +81 -0
  237. package/dist/tx/witness.js.map +1 -0
  238. package/dist/types.d.ts +311 -0
  239. package/dist/types.d.ts.map +1 -0
  240. package/dist/types.js +2 -0
  241. package/dist/types.js.map +1 -0
  242. package/package.json +45 -0
@@ -0,0 +1,107 @@
1
+ import { must } from "../core/must.js";
2
+ import { BitWriter } from "./bitwriter.js";
3
+ import { mugNoun, weightNoun } from "./types.js";
4
+ function met0U64(value) {
5
+ if (value === 0)
6
+ return 0;
7
+ return value.toString(2).length;
8
+ }
9
+ function met0Atom(atom) {
10
+ return atom.bitLen();
11
+ }
12
+ function matBackref(writer, backref) {
13
+ if (backref === 0) {
14
+ writer.writeBitsFromValue(0b111, 3);
15
+ return;
16
+ }
17
+ const backrefSz = met0U64(backref);
18
+ const backrefSzSz = met0U64(backrefSz);
19
+ writer.writeBit(true);
20
+ writer.writeBit(true);
21
+ writer.writeZeros(backrefSzSz);
22
+ writer.writeBit(true);
23
+ writer.writeBitsFromValue(backrefSz, backrefSzSz - 1);
24
+ writer.writeBitsFromValue(backref, backrefSz);
25
+ }
26
+ function matAtom(writer, atom) {
27
+ if (atom.isZero()) {
28
+ writer.writeBitsFromValue(0b10, 2);
29
+ return;
30
+ }
31
+ const atomSz = met0Atom(atom);
32
+ const atomSzSz = met0U64(atomSz);
33
+ writer.writeBit(false);
34
+ writer.writeZeros(atomSzSz);
35
+ writer.writeBit(true);
36
+ writer.writeBitsFromValue(atomSz, atomSzSz - 1);
37
+ writer.writeBitsFromLeBytes(atom.toLeBytes(), atomSz);
38
+ }
39
+ function nounEquals(a, b) {
40
+ if (a.tag !== b.tag)
41
+ return false;
42
+ if (a.tag === "atom" && b.tag === "atom")
43
+ return a.value.eq(b.value);
44
+ if (a.tag === "cell" && b.tag === "cell") {
45
+ return nounEquals(a.head, b.head) && nounEquals(a.tail, b.tail);
46
+ }
47
+ return false;
48
+ }
49
+ export function jam(noun) {
50
+ const backrefs = new Map();
51
+ function key(weight, mug) {
52
+ return `${weight}:${mug}`;
53
+ }
54
+ function findBackref(weight, mug, target) {
55
+ const entries = backrefs.get(key(weight, mug));
56
+ if (!entries)
57
+ return null;
58
+ const hit = entries.find((e) => nounEquals(e.noun, target));
59
+ return hit ? hit.offset : null;
60
+ }
61
+ const stack = [];
62
+ stack.push({ weight: weightNoun(noun), mug: mugNoun(noun), noun });
63
+ const buffer = new BitWriter();
64
+ while (stack.length > 0) {
65
+ const { weight, mug, noun: current } = must(stack.pop(), "jam stack empty");
66
+ const backref = findBackref(weight, mug, current);
67
+ if (backref !== null) {
68
+ if (current.tag === "atom") {
69
+ if (met0U64(backref) < met0Atom(current.value)) {
70
+ matBackref(buffer, backref);
71
+ }
72
+ else {
73
+ matAtom(buffer, current.value);
74
+ }
75
+ }
76
+ else {
77
+ matBackref(buffer, backref);
78
+ }
79
+ }
80
+ else {
81
+ const offset = buffer.bitLen();
82
+ const k = key(weight, mug);
83
+ if (!backrefs.has(k))
84
+ backrefs.set(k, []);
85
+ must(backrefs.get(k), "jam backref bucket missing").push({ noun: current, offset });
86
+ if (current.tag === "atom") {
87
+ matAtom(buffer, current.value);
88
+ }
89
+ else {
90
+ buffer.writeBit(true);
91
+ buffer.writeBit(false);
92
+ stack.push({
93
+ weight: weightNoun(current.tail),
94
+ mug: mugNoun(current.tail),
95
+ noun: current.tail,
96
+ });
97
+ stack.push({
98
+ weight: weightNoun(current.head),
99
+ mug: mugNoun(current.head),
100
+ noun: current.head,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ return buffer.intoVec();
106
+ }
107
+ //# sourceMappingURL=jam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jam.js","sourceRoot":"","sources":["../../src/noun/jam.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { UBig } from "../core/ubig.js";
2
+ export type NounWire = string | NounWire[];
3
+ export interface NounAtom {
4
+ tag: "atom";
5
+ value: UBig;
6
+ }
7
+ export interface NounCell {
8
+ tag: "cell";
9
+ head: NounTree;
10
+ tail: NounTree;
11
+ mug: number;
12
+ weight: number;
13
+ }
14
+ export type NounTree = NounAtom | NounCell;
15
+ export declare function atom(value: UBig): NounAtom;
16
+ export declare function mugNoun(noun: NounTree): number;
17
+ export declare function weightNoun(noun: NounTree): number;
18
+ export declare function cons(head: NounTree, tail: NounTree): NounCell;
19
+ export declare function toWire(noun: NounTree): NounWire;
20
+ export declare function fromWire(wire: NounWire): NounTree;
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/noun/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;AAE3C,MAAM,WAAW,QAAQ;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE;AACtD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,CAE1C;AAkBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAS9C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAIjD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAK7D;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAY/C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAYjD"}
@@ -0,0 +1,66 @@
1
+ import { mustAt } from "../core/must.js";
2
+ import { UBig } from "../core/ubig.js";
3
+ export function atom(value) {
4
+ return { tag: "atom", value };
5
+ }
6
+ function mug(mutX) {
7
+ let x = mutX;
8
+ x = (x ^ (x >> 30n)) * 0xbf58476d1ce4e5b9n;
9
+ x = (x ^ (x >> 27n)) * 0x94d049bb133111ebn;
10
+ x = x ^ (x >> 31n);
11
+ return x & 0xffffffffffffffffn;
12
+ }
13
+ function mugBytes(b) {
14
+ let ret = 0n;
15
+ for (const byte of b) {
16
+ ret = mug(ret + BigInt(byte));
17
+ }
18
+ return mug(ret);
19
+ }
20
+ export function mugNoun(noun) {
21
+ if (noun.tag === "atom") {
22
+ return Number(mug(mugBytes(noun.value.toLeBytes())) & 0xffffffffn);
23
+ }
24
+ return Number(mug(BigInt(noun.head.tag === "cell" ? noun.head.mug : mugNoun(noun.head)) |
25
+ (BigInt(noun.tail.tag === "cell" ? noun.tail.mug : mugNoun(noun.tail)) << 32n)) &
26
+ 0xffffffffn);
27
+ }
28
+ export function weightNoun(noun) {
29
+ if (noun.tag === "atom")
30
+ return 1;
31
+ return 1 + (noun.head.tag === "cell" ? noun.head.weight : weightNoun(noun.head)) +
32
+ (noun.tail.tag === "cell" ? noun.tail.weight : weightNoun(noun.tail));
33
+ }
34
+ export function cons(head, tail) {
35
+ const cell = { tag: "cell", head, tail, mug: 0, weight: 0 };
36
+ cell.weight = weightNoun(cell);
37
+ cell.mug = mugNoun(cell);
38
+ return cell;
39
+ }
40
+ export function toWire(noun) {
41
+ if (noun.tag === "atom") {
42
+ return noun.value.toHex();
43
+ }
44
+ const items = [];
45
+ let current = noun;
46
+ while (current.tag === "cell") {
47
+ items.push(toWire(current.head));
48
+ current = current.tail;
49
+ }
50
+ items.push(toWire(current));
51
+ return items;
52
+ }
53
+ export function fromWire(wire) {
54
+ if (typeof wire === "string") {
55
+ return atom(UBig.from(wire));
56
+ }
57
+ if (wire.length < 2) {
58
+ throw new Error("expected at least 2 elements in cell");
59
+ }
60
+ let top = fromWire(mustAt(wire, wire.length - 1));
61
+ for (let i = wire.length - 2; i >= 0; i--) {
62
+ top = cons(fromWire(mustAt(wire, i)), top);
63
+ }
64
+ return top;
65
+ }
66
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/noun/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NounTree } from "./types.js";
2
+ export declare function nounWords(noun: NounTree): bigint;
3
+ //# sourceMappingURL=words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../src/noun/words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAGhD"}
@@ -0,0 +1,6 @@
1
+ export function nounWords(noun) {
2
+ if (noun.tag === "atom")
3
+ return 1n;
4
+ return nounWords(noun.head) + nounWords(noun.tail);
5
+ }
6
+ //# sourceMappingURL=words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.js","sourceRoot":"","sources":["../../src/noun/words.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { LockPrimitive, SpendCondition } from "../types.js";
2
+ export declare function lockPrimitiveFromProtobuf(pb: {
3
+ primitive?: Record<string, unknown>;
4
+ }): LockPrimitive;
5
+ export declare function spendConditionFromProtobuf(pb: {
6
+ primitives?: {
7
+ primitive?: Record<string, unknown>;
8
+ }[];
9
+ }): SpendCondition;
10
+ //# sourceMappingURL=decode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/proto/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,aAAa,EAAgB,cAAc,EAAiB,MAAM,aAAa,CAAC;AAiCtG,wBAAgB,yBAAyB,CAAC,EAAE,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,GAAG,aAAa,CAiBhB;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE;IAC7C,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;CACxD,GAAG,cAAc,CAGjB"}
@@ -0,0 +1,44 @@
1
+ function required(value, field) {
2
+ if (value === null || value === undefined) {
3
+ throw new Error(`missing required field: ${field}`);
4
+ }
5
+ return value;
6
+ }
7
+ function timelockRangeFromPb(pb) {
8
+ return {
9
+ min: pb.min?.value != null ? Number(pb.min.value) : null,
10
+ max: pb.max?.value != null ? Number(pb.max.value) : null,
11
+ };
12
+ }
13
+ function lockTimFromPb(pb) {
14
+ return {
15
+ rel: timelockRangeFromPb(pb.rel ?? {}),
16
+ abs: timelockRangeFromPb(pb.abs ?? {}),
17
+ };
18
+ }
19
+ function pkhFromPb(pb) {
20
+ return { m: pb.m, hashes: pb.hashes };
21
+ }
22
+ export function lockPrimitiveFromProtobuf(pb) {
23
+ const prim = required(pb.primitive, "LockPrimitive.primitive");
24
+ if ("Pkh" in prim) {
25
+ const pkh = prim["Pkh"];
26
+ return { tag: "pkh", ...pkhFromPb(pkh) };
27
+ }
28
+ if ("Tim" in prim) {
29
+ return { tag: "tim", ...lockTimFromPb(prim["Tim"]) };
30
+ }
31
+ if ("Hax" in prim) {
32
+ const hax = prim["Hax"];
33
+ return { tag: "hax", preimages: hax.hashes };
34
+ }
35
+ if ("Burn" in prim) {
36
+ return { tag: "brn" };
37
+ }
38
+ throw new Error("unsupported lock primitive");
39
+ }
40
+ export function spendConditionFromProtobuf(pb) {
41
+ const primitives = pb.primitives ?? [];
42
+ return primitives.map((p) => lockPrimitiveFromProtobuf(p));
43
+ }
44
+ //# sourceMappingURL=decode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/proto/decode.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAI,KAA2B,EAAE,KAAa;IAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,EAG5B;IACC,OAAO;QACL,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QACxD,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EAGtB;IACC,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;QACtC,GAAG,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAmC;IACpD,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAuB,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAEzC;IACC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAC/D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAoC,CAAC;QAC3D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAwC,CAAC,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAyB,CAAC;QAChD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,MAAkB,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EAE1C;IACC,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;IACvC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Digest } from "../types.js";
2
+ export interface PbCom1Hash {
3
+ belt_1?: {
4
+ value: string;
5
+ };
6
+ belt_2?: {
7
+ value: string;
8
+ };
9
+ belt_3?: {
10
+ value: string;
11
+ };
12
+ belt_4?: {
13
+ value: string;
14
+ };
15
+ belt_5?: {
16
+ value: string;
17
+ };
18
+ }
19
+ export declare function digestFromProtobuf(h: PbCom1Hash): Digest;
20
+ export declare function digestToProtobuf(d: Digest): PbCom1Hash;
21
+ //# sourceMappingURL=digest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/proto/digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAWD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CASxD;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAStD"}
@@ -0,0 +1,29 @@
1
+ import { digestFromBase58, digestToBase58 } from "../core/digest.js";
2
+ function requiredBelt(h, field) {
3
+ const belt = h[field];
4
+ if (!belt?.value) {
5
+ throw new Error(`Hash missing required field ${field}`);
6
+ }
7
+ return BigInt(belt.value);
8
+ }
9
+ export function digestFromProtobuf(h) {
10
+ const belts = [
11
+ requiredBelt(h, "belt_1"),
12
+ requiredBelt(h, "belt_2"),
13
+ requiredBelt(h, "belt_3"),
14
+ requiredBelt(h, "belt_4"),
15
+ requiredBelt(h, "belt_5"),
16
+ ];
17
+ return digestToBase58(belts);
18
+ }
19
+ export function digestToProtobuf(d) {
20
+ const belts = digestFromBase58(d);
21
+ return {
22
+ belt_1: { value: String(belts[0]) },
23
+ belt_2: { value: String(belts[1]) },
24
+ belt_3: { value: String(belts[2]) },
25
+ belt_4: { value: String(belts[3]) },
26
+ belt_5: { value: String(belts[4]) },
27
+ };
28
+ }
29
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/proto/digest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUrE,SAAS,YAAY,CAAC,CAAa,EAAE,KAAuB;IAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAAC,CAAa;IAC9C,MAAM,KAAK,GAAG;QACZ,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;KACkB,CAAC;IAC9C,OAAO,cAAc,CAAC,KAAK,CAAW,CAAC;AACzC,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;KACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PbCom2RawTransaction, RawTxV1, SpendCondition } from "../types.js";
2
+ export { noteFromProtobuf, noteToProtobuf } from "./note.js";
3
+ export { spendConditionFromProtobuf } from "./decode.js";
4
+ export { digestFromProtobuf, digestToProtobuf } from "./digest.js";
5
+ export type { PbCom1Hash } from "./digest.js";
6
+ export { rawTxFromProtobuf } from "./rawTx.js";
7
+ export declare function spendConditionToProtobuf(sc: SpendCondition): Record<string, unknown>;
8
+ export declare function rawTxToProtobuf(tx: RawTxV1): PbCom2RawTransaction;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proto/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,oBAAoB,EAGpB,OAAO,EAKP,cAAc,EACf,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA6E/C,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpF;AAuDD,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,oBAAoB,CASjE"}
@@ -0,0 +1,140 @@
1
+ import { mustAt } from "../core/must.js";
2
+ import { cheetahPointFromBase58 } from "../crypto/cheetah.js";
3
+ import { U256 } from "../core/u256.js";
4
+ import { jam } from "../noun/index.js";
5
+ export { noteFromProtobuf, noteToProtobuf } from "./note.js";
6
+ export { spendConditionFromProtobuf } from "./decode.js";
7
+ export { digestFromProtobuf, digestToProtobuf } from "./digest.js";
8
+ export { rawTxFromProtobuf } from "./rawTx.js";
9
+ function sixBelt(f6) {
10
+ return {
11
+ belt_1: { value: String(mustAt(f6, 0)) },
12
+ belt_2: { value: String(mustAt(f6, 1)) },
13
+ belt_3: { value: String(mustAt(f6, 2)) },
14
+ belt_4: { value: String(mustAt(f6, 3)) },
15
+ belt_5: { value: String(mustAt(f6, 4)) },
16
+ belt_6: { value: String(mustAt(f6, 5)) },
17
+ };
18
+ }
19
+ function schnorrFromSignature(sig) {
20
+ const c = beltsFromLeBytes(U256.fromLeHex(sig.c).toLeBytes());
21
+ const s = beltsFromLeBytes(U256.fromLeHex(sig.s).toLeBytes());
22
+ const chal = {};
23
+ const sigVal = {};
24
+ for (let i = 0; i < 8; i++) {
25
+ chal[`belt_${i + 1}`] = { value: String(c[i] ?? 0n) };
26
+ sigVal[`belt_${i + 1}`] = { value: String(s[i] ?? 0n) };
27
+ }
28
+ return { chal, sig: sigVal };
29
+ }
30
+ function beltsFromLeBytes(bytes) {
31
+ const belts = [];
32
+ for (let i = 0; i < bytes.length; i += 4) {
33
+ const chunk = bytes.subarray(i, Math.min(i + 4, bytes.length));
34
+ let v = 0n;
35
+ for (let j = 0; j < chunk.length; j++) {
36
+ v |= BigInt(mustAt(chunk, j)) << BigInt(j * 8);
37
+ }
38
+ belts.push(v);
39
+ }
40
+ while (belts.length < 8)
41
+ belts.push(0n);
42
+ return belts;
43
+ }
44
+ function pubkeyToPb(pk) {
45
+ const point = cheetahPointFromBase58(pk);
46
+ return {
47
+ value: {
48
+ x: sixBelt(point.x),
49
+ y: sixBelt(point.y),
50
+ inf: point.inf,
51
+ },
52
+ };
53
+ }
54
+ function pkhSignatureToPb(sig) {
55
+ return {
56
+ entries: sig.map(([hash, [pubkey, signature]]) => ({
57
+ hash,
58
+ pubkey: pubkeyToPb(pubkey),
59
+ signature: schnorrFromSignature(signature),
60
+ })),
61
+ };
62
+ }
63
+ function lockPrimitiveToPb(prim) {
64
+ switch (prim.tag) {
65
+ case "pkh": {
66
+ const hashes = Array.isArray(prim.hashes) ? prim.hashes : [];
67
+ return { primitive: { Pkh: { m: prim.m, hashes } } };
68
+ }
69
+ case "tim":
70
+ return { primitive: { Tim: prim } };
71
+ case "hax": {
72
+ const hashes = Array.isArray(prim.preimages) ? prim.preimages : [];
73
+ return { primitive: { Hax: { hashes } } };
74
+ }
75
+ case "brn":
76
+ return { primitive: { Burn: {} } };
77
+ }
78
+ }
79
+ export function spendConditionToProtobuf(sc) {
80
+ return { primitives: sc.map((p) => lockPrimitiveToPb(p)) };
81
+ }
82
+ function merkleProofToPb(proof) {
83
+ return { root: proof.root, path: proof.path };
84
+ }
85
+ function lockMerkleProofToPb(lmp) {
86
+ const base = {
87
+ spend_condition: spendConditionToProtobuf(lmp.spend_condition),
88
+ axis: lmp.axis,
89
+ proof: merkleProofToPb(lmp.proof),
90
+ };
91
+ if ("version" in lmp && lmp.version === "full") {
92
+ return { ...base, lmp_version: "full" };
93
+ }
94
+ return base;
95
+ }
96
+ function noteDataToPb(data) {
97
+ return { entries: data.map(([key, noun]) => ({ key, blob: [...jam(noun)] })) };
98
+ }
99
+ function seedToPb(seed) {
100
+ const lockRoot = typeof seed.lock_root === "string" ? seed.lock_root : "";
101
+ return {
102
+ output_source: seed.output_source,
103
+ lock_root: lockRoot,
104
+ note_data: noteDataToPb(seed.note_data),
105
+ gift: { value: seed.gift },
106
+ parent_hash: seed.parent_hash,
107
+ };
108
+ }
109
+ function spendToPb(spend) {
110
+ if (spend.tag === 0)
111
+ return null;
112
+ const s = spend;
113
+ return {
114
+ spend_kind: {
115
+ Witness: {
116
+ witness: {
117
+ lock_merkle_proof: lockMerkleProofToPb(s.witness.lock_merkle_proof),
118
+ pkh_signature: pkhSignatureToPb(s.witness.pkh_signature),
119
+ hax: [],
120
+ },
121
+ seeds: (Array.isArray(s.seeds) ? s.seeds : []).map(seedToPb),
122
+ fee: { value: s.fee },
123
+ },
124
+ },
125
+ };
126
+ }
127
+ function nameToPb(name) {
128
+ return { first: name.first, last: name.last };
129
+ }
130
+ export function rawTxToProtobuf(tx) {
131
+ return {
132
+ version: { value: "1" },
133
+ id: tx.id,
134
+ spends: tx.spends.map(([name, spend]) => ({
135
+ name: nameToPb(name),
136
+ spend: spendToPb(spend),
137
+ })),
138
+ };
139
+ }
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proto/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Note, PbCom2Note } from "../types.js";
2
+ export declare function noteFromProtobuf(value: PbCom2Note): Note;
3
+ export declare function noteToProtobuf(note: Note): PbCom2Note;
4
+ //# sourceMappingURL=note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/proto/note.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,IAAI,EAIJ,UAAU,EAEX,MAAM,aAAa,CAAC;AA4CrB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAyCxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CA6BrD"}
@@ -0,0 +1,99 @@
1
+ import { cue, jam } from "../noun/index.js";
2
+ function required(value, field) {
3
+ if (value === null || value === undefined) {
4
+ throw new Error(`missing required field: ${field}`);
5
+ }
6
+ return value;
7
+ }
8
+ function parseVersion(value) {
9
+ const v = Number(value ?? "1");
10
+ if (v === 0 || v === 1)
11
+ return v;
12
+ throw new Error(`invalid note version: ${value}`);
13
+ }
14
+ function parseName(pb) {
15
+ return {
16
+ first: pb.first,
17
+ last: pb.last,
18
+ _sig: 0,
19
+ };
20
+ }
21
+ function noteDataFromPb(pb) {
22
+ const entries = pb?.entries ?? [];
23
+ if (entries.length === 0)
24
+ return [];
25
+ return entries.map((e) => [e.key, cue(new Uint8Array(e.blob))]);
26
+ }
27
+ function noteDataToPb(data) {
28
+ const pairs = Array.isArray(data) ? data : [];
29
+ return {
30
+ entries: pairs.map(([key, noun]) => ({
31
+ key,
32
+ blob: [...jam(noun)],
33
+ })),
34
+ };
35
+ }
36
+ function isNoteV1(note) {
37
+ return "origin_page" in note && !("inner" in note);
38
+ }
39
+ export function noteFromProtobuf(value) {
40
+ const version = required(value.note_version, "note_version");
41
+ if ("V1" in version) {
42
+ const v1 = version.V1;
43
+ return {
44
+ version: parseVersion(v1.version?.value),
45
+ origin_page: Number(required(v1.origin_page?.value, "origin_page")),
46
+ name: parseName(required(v1.name, "name")),
47
+ note_data: noteDataFromPb(v1.note_data),
48
+ assets: required(v1.assets?.value, "assets"),
49
+ };
50
+ }
51
+ if ("Legacy" in version) {
52
+ const legacy = version.Legacy;
53
+ return {
54
+ inner: {
55
+ version: parseVersion(legacy.version?.value ?? "0"),
56
+ origin_page: Number(required(legacy.origin_page?.value, "origin_page")),
57
+ timelock: { tim: null },
58
+ },
59
+ name: parseName(required(legacy.name, "name")),
60
+ sig: legacy.lock ?? { m: 0, pubkeys: [] },
61
+ source: {
62
+ hash: (legacy.source?.hash ?? "0"),
63
+ is_coinbase: legacy.source?.is_coinbase ?? false,
64
+ },
65
+ assets: required(legacy.assets?.value, "assets"),
66
+ };
67
+ }
68
+ throw new Error("unsupported note_version");
69
+ }
70
+ export function noteToProtobuf(note) {
71
+ if (isNoteV1(note)) {
72
+ return {
73
+ note_version: {
74
+ V1: {
75
+ version: { value: String(note.version) },
76
+ origin_page: { value: String(note.origin_page) },
77
+ name: { first: note.name.first, last: note.name.last },
78
+ note_data: noteDataToPb(note.note_data),
79
+ assets: { value: note.assets },
80
+ },
81
+ },
82
+ };
83
+ }
84
+ const v0 = note;
85
+ return {
86
+ note_version: {
87
+ Legacy: {
88
+ version: { value: String(v0.inner.version) },
89
+ origin_page: { value: String(v0.inner.origin_page) },
90
+ name: { first: v0.name.first, last: v0.name.last },
91
+ lock: v0.sig,
92
+ source: v0.source,
93
+ assets: { value: v0.assets },
94
+ timelock: v0.inner.timelock ?? { value: { Neither: {} } },
95
+ },
96
+ },
97
+ };
98
+ }
99
+ //# sourceMappingURL=note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/proto/note.ts"],"names":[],"mappings":"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"}