@1sat/actions 0.0.234 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/1color/deploy.d.ts +35 -0
  2. package/dist/1color/deploy.d.ts.map +1 -0
  3. package/dist/1color/deploy.js +127 -0
  4. package/dist/1color/deploy.js.map +1 -0
  5. package/dist/{mandala → 1color}/deploy.test.d.ts.map +1 -1
  6. package/dist/1color/deploy.test.js +188 -0
  7. package/dist/1color/deploy.test.js.map +1 -0
  8. package/dist/1color/index.d.ts +10 -0
  9. package/dist/{mandala → 1color}/index.d.ts.map +1 -1
  10. package/dist/1color/index.js +12 -0
  11. package/dist/1color/index.js.map +1 -0
  12. package/dist/1color/receipt.d.ts +39 -0
  13. package/dist/1color/receipt.d.ts.map +1 -0
  14. package/dist/1color/receipt.js +91 -0
  15. package/dist/1color/receipt.js.map +1 -0
  16. package/dist/1color/send.d.ts +52 -0
  17. package/dist/1color/send.d.ts.map +1 -0
  18. package/dist/1color/send.js +175 -0
  19. package/dist/1color/send.js.map +1 -0
  20. package/dist/{mandala → 1color}/send.test.d.ts.map +1 -1
  21. package/dist/1color/send.test.js +622 -0
  22. package/dist/1color/send.test.js.map +1 -0
  23. package/dist/addresses/index.js +1 -1
  24. package/dist/addresses/index.js.map +1 -1
  25. package/dist/apply/inscribeSigma.js +2 -2
  26. package/dist/apply/inscribeSigma.js.map +1 -1
  27. package/dist/collections/index.js +3 -3
  28. package/dist/collections/index.js.map +1 -1
  29. package/dist/cosign/buildDestination.js +1 -1
  30. package/dist/cosign/buildDestination.js.map +1 -1
  31. package/dist/funding/walletFunding.d.ts +1 -2
  32. package/dist/funding/walletFunding.d.ts.map +1 -1
  33. package/dist/funding/walletFunding.js +2 -3
  34. package/dist/funding/walletFunding.js.map +1 -1
  35. package/dist/identity/index.js +1 -1
  36. package/dist/identity/index.js.map +1 -1
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +3 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/listings/cancelOwnedListings.d.ts.map +1 -1
  42. package/dist/listings/cancelOwnedListings.js +7 -3
  43. package/dist/listings/cancelOwnedListings.js.map +1 -1
  44. package/dist/locks/index.d.ts.map +1 -1
  45. package/dist/locks/index.js +3 -2
  46. package/dist/locks/index.js.map +1 -1
  47. package/dist/metanet/delivery.d.ts +69 -0
  48. package/dist/metanet/delivery.d.ts.map +1 -0
  49. package/dist/metanet/delivery.js +235 -0
  50. package/dist/metanet/delivery.js.map +1 -0
  51. package/dist/metanet/delivery.test.d.ts +2 -0
  52. package/dist/metanet/delivery.test.d.ts.map +1 -0
  53. package/dist/metanet/delivery.test.js +125 -0
  54. package/dist/metanet/delivery.test.js.map +1 -0
  55. package/dist/metanet/envelope.test.js +1 -1
  56. package/dist/metanet/envelope.test.js.map +1 -1
  57. package/dist/metanet/inbox.d.ts +2 -2
  58. package/dist/metanet/inbox.js +2 -2
  59. package/dist/metanet/index.d.ts +5 -3
  60. package/dist/metanet/index.d.ts.map +1 -1
  61. package/dist/metanet/index.js +6 -4
  62. package/dist/metanet/index.js.map +1 -1
  63. package/dist/metanet/receive.d.ts +46 -16
  64. package/dist/metanet/receive.d.ts.map +1 -1
  65. package/dist/metanet/receive.js +118 -17
  66. package/dist/metanet/receive.js.map +1 -1
  67. package/dist/metanet/relay.d.ts +1 -1
  68. package/dist/metanet/relay.js +1 -1
  69. package/dist/metanet/testdata/brc232-vectors.json +86 -0
  70. package/dist/mnee/index.js +1 -1
  71. package/dist/mnee/index.js.map +1 -1
  72. package/dist/opns/index.d.ts.map +1 -1
  73. package/dist/opns/index.js +8 -9
  74. package/dist/opns/index.js.map +1 -1
  75. package/dist/opns/registerOpns.test.js +3 -2
  76. package/dist/opns/registerOpns.test.js.map +1 -1
  77. package/dist/ordfs/dir.js +1 -1
  78. package/dist/ordfs/dir.js.map +1 -1
  79. package/dist/ordfs/index.d.ts +0 -1
  80. package/dist/ordfs/index.d.ts.map +1 -1
  81. package/dist/ordfs/index.js +0 -1
  82. package/dist/ordfs/index.js.map +1 -1
  83. package/dist/ordfs/patch.js +1 -1
  84. package/dist/ordfs/patch.js.map +1 -1
  85. package/dist/ordinals/index.d.ts.map +1 -1
  86. package/dist/ordinals/index.js +7 -6
  87. package/dist/ordinals/index.js.map +1 -1
  88. package/dist/payments/index.d.ts +1 -1
  89. package/dist/payments/index.js +3 -3
  90. package/dist/payments/index.js.map +1 -1
  91. package/dist/payments/sendBsvHandle.test.js +52 -34
  92. package/dist/payments/sendBsvHandle.test.js.map +1 -1
  93. package/dist/pipeline/spendTargets.d.ts.map +1 -1
  94. package/dist/pipeline/spendTargets.js +2 -7
  95. package/dist/pipeline/spendTargets.js.map +1 -1
  96. package/dist/signing/aip.js +2 -2
  97. package/dist/signing/aip.js.map +1 -1
  98. package/dist/signing/bap.js +1 -1
  99. package/dist/signing/bap.js.map +1 -1
  100. package/dist/signing/index.js +1 -1
  101. package/dist/signing/index.js.map +1 -1
  102. package/dist/signing/sigma.js +1 -1
  103. package/dist/signing/sigma.js.map +1 -1
  104. package/dist/sweep/index.js +5 -5
  105. package/dist/sweep/index.js.map +1 -1
  106. package/dist/sweep/scan.d.ts +1 -0
  107. package/dist/sweep/scan.d.ts.map +1 -1
  108. package/dist/sweep/scan.js +2 -6
  109. package/dist/sweep/scan.js.map +1 -1
  110. package/dist/sweep/transfer.js +2 -2
  111. package/dist/sweep/transfer.js.map +1 -1
  112. package/dist/sync/index.js +1 -1
  113. package/dist/sync/index.js.map +1 -1
  114. package/dist/tokens/index.d.ts.map +1 -1
  115. package/dist/tokens/index.js +3 -3
  116. package/dist/tokens/index.js.map +1 -1
  117. package/dist/utils/ordlockCancelLength.js +1 -1
  118. package/dist/utils/resolveDestination.js +1 -1
  119. package/dist/utils/resolveDestination.js.map +1 -1
  120. package/package.json +10 -9
  121. package/dist/mandala/deploy.d.ts +0 -89
  122. package/dist/mandala/deploy.d.ts.map +0 -1
  123. package/dist/mandala/deploy.js +0 -226
  124. package/dist/mandala/deploy.js.map +0 -1
  125. package/dist/mandala/deploy.test.js +0 -281
  126. package/dist/mandala/deploy.test.js.map +0 -1
  127. package/dist/mandala/index.d.ts +0 -9
  128. package/dist/mandala/index.js +0 -17
  129. package/dist/mandala/index.js.map +0 -1
  130. package/dist/mandala/receive.d.ts +0 -58
  131. package/dist/mandala/receive.d.ts.map +0 -1
  132. package/dist/mandala/receive.js +0 -162
  133. package/dist/mandala/receive.js.map +0 -1
  134. package/dist/mandala/send.d.ts +0 -74
  135. package/dist/mandala/send.d.ts.map +0 -1
  136. package/dist/mandala/send.js +0 -313
  137. package/dist/mandala/send.js.map +0 -1
  138. package/dist/mandala/send.test.js +0 -515
  139. package/dist/mandala/send.test.js.map +0 -1
  140. package/dist/mandala/tokenId.d.ts +0 -21
  141. package/dist/mandala/tokenId.d.ts.map +0 -1
  142. package/dist/mandala/tokenId.js +0 -29
  143. package/dist/mandala/tokenId.js.map +0 -1
  144. package/dist/ordfs/outpoint.d.ts +0 -11
  145. package/dist/ordfs/outpoint.d.ts.map +0 -1
  146. package/dist/ordfs/outpoint.js +0 -42
  147. package/dist/ordfs/outpoint.js.map +0 -1
  148. /package/dist/{mandala → 1color}/deploy.test.d.ts +0 -0
  149. /package/dist/{mandala → 1color}/send.test.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/metanet/delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,iBAAiB,EAAE;QAClB,gBAAgB,EAAE,MAAM,CAAA;QACxB,gBAAgB,EAAE,MAAM,CAAA;QACxB,sCAAsC;QACtC,iBAAiB,EAAE,UAAU,CAAA;KAC7B,CAAA;CACD;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,mBAAmB,EAAE;QACpB,MAAM,EAAE,MAAM,CAAA;QACd,kBAAkB,EAAE,MAAM,CAAA;QAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;CACD;AAED,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAEzE,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,wBAAwB;AACxB,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,CAAC,CAAA;IACV,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AA8MD,8EAA8E;AAC9E,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,mBAAmB,GAC3B,UAAU,CAOZ;AAED,8EAA8E;AAC9E,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,mBAAmB,GAC3B,UAAU,CAOZ;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,GAC3B,UAAU,CAmCZ;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,UAAU,GACd,mBAAmB,CAUrB"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * BRC-232 transaction delivery: the DAG-CBOR body and its MIME entity, the
3
+ * encrypted `content` of a BRC-169 envelope sent to the recipient's
4
+ * `transaction-delivery` box.
5
+ *
6
+ * MIME entity: `Content-Type: application/vnd.metanet.transaction+cbor` and
7
+ * `Content-Transfer-Encoding: binary`, CRLF line ends, one CRLF CRLF, then
8
+ * the DAG-CBOR body. The body has exactly the members `version` (1), `txid`
9
+ * (32 bytes, display order), `beef` (plain BEEF V1/V2), `outputs` (receipt
10
+ * maps strictly increasing by `outputIndex`), `lifecycles` (BRC-177
11
+ * `{statement, signer, signature}` carriers), and optionally `memo` (at most
12
+ * 2000 UTF-8 bytes) and `profileData`. Output entries are BRC-100
13
+ * `wallet payment` or `basket insertion` receipts with no other members.
14
+ */
15
+ import { TRANSACTION_CBOR_CONTENT_TYPE } from '@1sat/utils';
16
+ import { Utils } from '@bsv/sdk';
17
+ import { decode as dagCborDecode, encode as dagCborEncode, } from '@ipld/dag-cbor';
18
+ const MIME_HEADER = `Content-Type: ${TRANSACTION_CBOR_CONTENT_TYPE}\r\nContent-Transfer-Encoding: binary\r\n\r\n`;
19
+ const MAX_HEADER_BYTES = 8 * 1024;
20
+ const MAX_ENTITY_BYTES = 32 * 1024 * 1024;
21
+ const MAX_MEMO_BYTES = 2000;
22
+ const UINT32_MAX = 0xffffffff;
23
+ const BODY_MEMBERS = [
24
+ 'version',
25
+ 'txid',
26
+ 'beef',
27
+ 'outputs',
28
+ 'lifecycles',
29
+ 'memo',
30
+ 'profileData',
31
+ ];
32
+ const UTF8 = new TextEncoder();
33
+ function isMap(v) {
34
+ return (v !== null &&
35
+ typeof v === 'object' &&
36
+ !Array.isArray(v) &&
37
+ !(v instanceof Uint8Array) &&
38
+ Object.getPrototypeOf(v) === Object.prototype);
39
+ }
40
+ /** Fail unless `map` has every `required` member and nothing outside `allowed`. */
41
+ function exactMembers(map, required, allowed, what) {
42
+ for (const key of Object.keys(map)) {
43
+ if (!allowed.includes(key)) {
44
+ throw new Error(`BRC-232: ${what} has an unknown member ${key}`);
45
+ }
46
+ }
47
+ for (const key of required) {
48
+ if (!(key in map))
49
+ throw new Error(`BRC-232: ${what} lacks ${key}`);
50
+ }
51
+ }
52
+ function bytes(v, what, length) {
53
+ if (!(v instanceof Uint8Array) ||
54
+ (length !== undefined && v.length !== length)) {
55
+ throw new Error(`BRC-232: ${what} must be a byte string${length === undefined ? '' : ` of ${length} bytes`}`);
56
+ }
57
+ return v;
58
+ }
59
+ function text(v, what) {
60
+ if (typeof v !== 'string')
61
+ throw new Error(`BRC-232: ${what} must be text`);
62
+ return v;
63
+ }
64
+ function uint32(v, what) {
65
+ if (typeof v !== 'number' ||
66
+ !Number.isInteger(v) ||
67
+ v < 0 ||
68
+ v > UINT32_MAX) {
69
+ throw new Error(`BRC-232: ${what} must be a uint32`);
70
+ }
71
+ return v;
72
+ }
73
+ function parseOutput(v, i) {
74
+ const what = `outputs[${i}]`;
75
+ if (!isMap(v))
76
+ throw new Error(`BRC-232: ${what} must be a map`);
77
+ const outputIndex = uint32(v.outputIndex, `${what}.outputIndex`);
78
+ if (v.protocol === 'wallet payment') {
79
+ exactMembers(v, ['outputIndex', 'protocol', 'paymentRemittance'], ['outputIndex', 'protocol', 'paymentRemittance'], what);
80
+ const r = v.paymentRemittance;
81
+ if (!isMap(r))
82
+ throw new Error(`BRC-232: ${what}.paymentRemittance must be a map`);
83
+ const members = [
84
+ 'derivationPrefix',
85
+ 'derivationSuffix',
86
+ 'senderIdentityKey',
87
+ ];
88
+ exactMembers(r, members, members, `${what}.paymentRemittance`);
89
+ return {
90
+ outputIndex,
91
+ protocol: 'wallet payment',
92
+ paymentRemittance: {
93
+ derivationPrefix: text(r.derivationPrefix, `${what}.derivationPrefix`),
94
+ derivationSuffix: text(r.derivationSuffix, `${what}.derivationSuffix`),
95
+ senderIdentityKey: bytes(r.senderIdentityKey, `${what}.senderIdentityKey`, 33),
96
+ },
97
+ };
98
+ }
99
+ if (v.protocol === 'basket insertion') {
100
+ exactMembers(v, ['outputIndex', 'protocol', 'insertionRemittance'], ['outputIndex', 'protocol', 'insertionRemittance'], what);
101
+ const r = v.insertionRemittance;
102
+ if (!isMap(r)) {
103
+ throw new Error(`BRC-232: ${what}.insertionRemittance must be a map`);
104
+ }
105
+ exactMembers(r, ['basket', 'customInstructions'], ['basket', 'customInstructions', 'tags'], `${what}.insertionRemittance`);
106
+ const insertionRemittance = {
107
+ basket: text(r.basket, `${what}.basket`),
108
+ customInstructions: text(r.customInstructions, `${what}.customInstructions`),
109
+ };
110
+ if (r.tags !== undefined) {
111
+ if (!Array.isArray(r.tags)) {
112
+ throw new Error(`BRC-232: ${what}.tags must be an array`);
113
+ }
114
+ insertionRemittance.tags = r.tags.map((t, j) => text(t, `${what}.tags[${j}]`));
115
+ }
116
+ return { outputIndex, protocol: 'basket insertion', insertionRemittance };
117
+ }
118
+ throw new Error(`BRC-232: ${what} has an unsupported protocol ${String(v.protocol)}`);
119
+ }
120
+ function parseLifecycle(v, i) {
121
+ const what = `lifecycles[${i}]`;
122
+ if (!isMap(v))
123
+ throw new Error(`BRC-232: ${what} must be a map`);
124
+ const members = ['statement', 'signer', 'signature'];
125
+ exactMembers(v, members, members, what);
126
+ if (!isMap(v.statement)) {
127
+ throw new Error(`BRC-232: ${what}.statement must be a map`);
128
+ }
129
+ return {
130
+ statement: v.statement,
131
+ signer: text(v.signer, `${what}.signer`),
132
+ signature: text(v.signature, `${what}.signature`),
133
+ };
134
+ }
135
+ /** Validate a decoded (or to-be-encoded) body against the BRC-232 schema. */
136
+ function parseBody(v) {
137
+ if (!isMap(v))
138
+ throw new Error('BRC-232: the body must be a map');
139
+ exactMembers(v, ['version', 'txid', 'beef', 'outputs', 'lifecycles'], BODY_MEMBERS, 'the body');
140
+ if (v.version !== 1)
141
+ throw new Error('BRC-232: version must be 1');
142
+ if (!Array.isArray(v.outputs) || v.outputs.length === 0) {
143
+ throw new Error('BRC-232: outputs must be a nonempty array');
144
+ }
145
+ const outputs = v.outputs.map(parseOutput);
146
+ for (let i = 1; i < outputs.length; i++) {
147
+ if (outputs[i].outputIndex <= outputs[i - 1].outputIndex) {
148
+ throw new Error('BRC-232: outputs must be strictly increasing by outputIndex');
149
+ }
150
+ }
151
+ if (!Array.isArray(v.lifecycles)) {
152
+ throw new Error('BRC-232: lifecycles must be an array');
153
+ }
154
+ const body = {
155
+ version: 1,
156
+ txid: bytes(v.txid, 'txid', 32),
157
+ beef: bytes(v.beef, 'beef'),
158
+ outputs,
159
+ lifecycles: v.lifecycles.map(parseLifecycle),
160
+ };
161
+ if (v.memo !== undefined) {
162
+ const memo = text(v.memo, 'memo');
163
+ if (UTF8.encode(memo).length > MAX_MEMO_BYTES) {
164
+ throw new Error('BRC-232: memo exceeds 2000 UTF-8 bytes');
165
+ }
166
+ body.memo = memo;
167
+ }
168
+ if (v.profileData !== undefined)
169
+ body.profileData = v.profileData;
170
+ return body;
171
+ }
172
+ /** DAG-CBOR bytes of a BRC-232 body, after checking it against the schema. */
173
+ export function encodeTransactionDelivery(delivery) {
174
+ const body = parseBody(Object.fromEntries(Object.entries(delivery).filter(([, v]) => v !== undefined)));
175
+ return dagCborEncode(body);
176
+ }
177
+ /** The BRC-232 MIME entity: the two headers, CRLF CRLF, the DAG-CBOR body. */
178
+ export function encodeTransactionDeliveryMime(delivery) {
179
+ const head = UTF8.encode(MIME_HEADER);
180
+ const body = encodeTransactionDelivery(delivery);
181
+ const out = new Uint8Array(head.length + body.length);
182
+ out.set(head, 0);
183
+ out.set(body, head.length);
184
+ return out;
185
+ }
186
+ /**
187
+ * The DAG-CBOR body of a BRC-232 MIME entity. Requires exactly one
188
+ * `Content-Type` of this type with no parameters and exactly one
189
+ * `Content-Transfer-Encoding: binary`; rejects folded lines, duplicate or
190
+ * malformed fields; other well-formed fields are ignored.
191
+ */
192
+ export function transactionDeliveryBody(entity) {
193
+ const b = Uint8Array.from(entity);
194
+ if (b.length > MAX_ENTITY_BYTES) {
195
+ throw new Error('BRC-232: the MIME entity exceeds 32 MiB');
196
+ }
197
+ let end = -1;
198
+ for (let i = 0; i + 3 < b.length && i <= MAX_HEADER_BYTES; i++) {
199
+ if (b[i] === 13 && b[i + 1] === 10 && b[i + 2] === 13 && b[i + 3] === 10) {
200
+ end = i;
201
+ break;
202
+ }
203
+ }
204
+ if (end < 0)
205
+ throw new Error('BRC-232: no MIME header block');
206
+ const seen = new Map();
207
+ for (const line of Utils.toUTF8(Array.from(b.subarray(0, end))).split('\r\n')) {
208
+ const m = /^([!-9;-~]+):[ \t]*(.*?)[ \t]*$/.exec(line);
209
+ if (!m)
210
+ throw new Error('BRC-232: malformed MIME header');
211
+ const name = m[1].toLowerCase();
212
+ if (seen.has(name))
213
+ throw new Error(`BRC-232: duplicate MIME header ${m[1]}`);
214
+ seen.set(name, m[2]);
215
+ }
216
+ if (seen.get('content-type')?.toLowerCase() !== TRANSACTION_CBOR_CONTENT_TYPE) {
217
+ throw new Error(`BRC-232: Content-Type must be ${TRANSACTION_CBOR_CONTENT_TYPE} with no parameters`);
218
+ }
219
+ if (seen.get('content-transfer-encoding')?.toLowerCase() !== 'binary') {
220
+ throw new Error('BRC-232: Content-Transfer-Encoding must be binary');
221
+ }
222
+ return b.subarray(end + 4);
223
+ }
224
+ /** Decode a BRC-232 body: strict DAG-CBOR, then the schema. */
225
+ export function decodeTransactionDelivery(body) {
226
+ let decoded;
227
+ try {
228
+ decoded = dagCborDecode(body);
229
+ }
230
+ catch (error) {
231
+ throw new Error(`BRC-232: the body is not canonical DAG-CBOR (${error instanceof Error ? error.message : String(error)})`);
232
+ }
233
+ return parseBody(decoded);
234
+ }
235
+ //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/metanet/delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delivery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.test.d.ts","sourceRoot":"","sources":["../../src/metanet/delivery.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ import { afterEach, describe, expect, test } from 'bun:test';
2
+ import { OneColor } from '@1sat/templates';
3
+ import { Transaction, Utils, } from '@bsv/sdk';
4
+ import { encode as dagCborEncode } from '@ipld/dag-cbor';
5
+ import { decodeTransactionDelivery, encodeTransactionDelivery, encodeTransactionDeliveryMime, transactionDeliveryBody, } from './delivery.js';
6
+ import { internalizeTransactionDelivery } from './receive.js';
7
+ import vectorFile from './testdata/brc232-vectors.json';
8
+ const VECTORS = vectorFile.fixtures;
9
+ const vector = (name) => VECTORS.find((v) => v.name === name);
10
+ const hexBytes = (h) => Uint8Array.from(Utils.toArray(h, 'hex'));
11
+ const hex = (b) => Utils.toHex(Array.from(b));
12
+ const OVERLAY = 'https://overlay.example';
13
+ const realFetch = globalThis.fetch;
14
+ afterEach(() => {
15
+ globalThis.fetch = realFetch;
16
+ });
17
+ /** Overlay fake admitting every submitted output index; records the topics. */
18
+ function overlay(log) {
19
+ globalThis.fetch = (async (url, init) => {
20
+ expect(String(url)).toBe(`${OVERLAY}/submit`);
21
+ const topics = new Headers(init?.headers).get('X-Topics') ?? '';
22
+ log.push(`submit ${topics}`);
23
+ return new Response(JSON.stringify(Object.fromEntries(topics
24
+ .split(',')
25
+ .map((t) => [t, { outputsToAdmit: [0, 1, 2], coinsToRetain: [] }]))));
26
+ });
27
+ }
28
+ function wallet(log) {
29
+ const internalized = [];
30
+ return {
31
+ internalized,
32
+ wallet: {
33
+ internalizeAction: async (args) => {
34
+ log.push('internalize');
35
+ internalized.push(args);
36
+ return { accepted: true };
37
+ },
38
+ },
39
+ };
40
+ }
41
+ describe('BRC-232 vectors', () => {
42
+ for (const name of ['ordinary-payment', 'token-value', 'token-authority']) {
43
+ test(`${name}: decode, then byte-identical CBOR and MIME on re-encode`, () => {
44
+ const v = vector(name);
45
+ const body = transactionDeliveryBody(hexBytes(v.mimeHex));
46
+ expect(hex(body)).toBe(v.bodyCborHex);
47
+ const decoded = decodeTransactionDelivery(body);
48
+ expect(hex(decoded.txid)).toBe(v.txid);
49
+ expect(hex(encodeTransactionDelivery(decoded))).toBe(v.bodyCborHex);
50
+ expect(hex(encodeTransactionDeliveryMime(decoded))).toBe(v.mimeHex);
51
+ });
52
+ }
53
+ for (const name of ['token-value', 'token-authority']) {
54
+ test(`${name}: submitted to its asset topic, then the vector's internalizeAction request`, async () => {
55
+ const v = vector(name);
56
+ const subject = Transaction.fromAtomicBEEF(Array.from(hexBytes(v.internalize.txHex)));
57
+ const assetId = OneColor.decode(subject.outputs[0].lockingScript)?.tokenId;
58
+ const log = [];
59
+ overlay(log);
60
+ const { wallet: w, internalized } = wallet(log);
61
+ const res = await internalizeTransactionDelivery(w, OVERLAY, transactionDeliveryBody(hexBytes(v.mimeHex)));
62
+ expect(res).toEqual({ txid: v.txid, assetIds: [assetId] });
63
+ expect(log).toEqual([`submit tm_color_${assetId}`, 'internalize']);
64
+ expect(internalized[0].outputs).toEqual(v.internalize.outputs);
65
+ expect(hex(internalized[0].tx)).toBe(v.internalize.txHex);
66
+ });
67
+ }
68
+ test("ordinary-payment: the vector's internalizeAction request, no overlay submit", async () => {
69
+ const v = vector('ordinary-payment');
70
+ const log = [];
71
+ overlay(log);
72
+ const { wallet: w, internalized } = wallet(log);
73
+ const res = await internalizeTransactionDelivery(w, OVERLAY, transactionDeliveryBody(hexBytes(v.mimeHex)));
74
+ expect(res).toEqual({ txid: v.txid, assetIds: [] });
75
+ expect(log).toEqual(['internalize']);
76
+ expect(internalized[0].outputs).toEqual(v.internalize.outputs);
77
+ expect(hex(internalized[0].tx)).toBe(v.internalize.txHex);
78
+ });
79
+ test('issue-receipt: an ISSUE receipt is not accepted (receipts name <txid>_<vout>)', async () => {
80
+ const v = vector('issue-receipt');
81
+ const log = [];
82
+ overlay(log);
83
+ const { wallet: w } = wallet(log);
84
+ await expect(internalizeTransactionDelivery(w, OVERLAY, transactionDeliveryBody(hexBytes(v.mimeHex)))).rejects.toThrow('BRC-207: malformed receipt customInstructions');
85
+ expect(log).toEqual([]);
86
+ });
87
+ });
88
+ describe('BRC-232 body schema', () => {
89
+ const v = vector('token-value');
90
+ const base = () => decodeTransactionDelivery(hexBytes(v.bodyCborHex));
91
+ const reject = (body, message) => expect(() => decodeTransactionDelivery(dagCborEncode(body))).toThrow(message);
92
+ test('unknown top-level members fail', () => {
93
+ reject({ ...base(), extra: 1 }, 'BRC-232: the body has an unknown member extra');
94
+ });
95
+ test('version, txid and outputs are required and typed', () => {
96
+ reject({ ...base(), version: 2 }, 'BRC-232: version must be 1');
97
+ reject({ ...base(), txid: new Uint8Array(31) }, 'BRC-232: txid must be a byte string of 32 bytes');
98
+ reject({ ...base(), outputs: [] }, 'BRC-232: outputs must be a nonempty array');
99
+ const { lifecycles: _l, ...noLifecycles } = base();
100
+ reject(noLifecycles, 'BRC-232: the body lacks lifecycles');
101
+ });
102
+ test('outputs strictly increase by outputIndex', () => {
103
+ const b = base();
104
+ reject({ ...b, outputs: [b.outputs[0], b.outputs[0]] }, 'BRC-232: outputs must be strictly increasing by outputIndex');
105
+ });
106
+ test('output entries have no other members', () => {
107
+ const b = base();
108
+ reject({ ...b, outputs: [{ ...b.outputs[0], keyID: 'x' }] }, 'BRC-232: outputs[0] has an unknown member keyID');
109
+ });
110
+ test('memo is at most 2000 UTF-8 bytes', () => {
111
+ reject({ ...base(), memo: 'é'.repeat(1001) }, 'BRC-232: memo exceeds 2000 UTF-8 bytes');
112
+ expect(decodeTransactionDelivery(dagCborEncode({ ...base(), memo: 'é'.repeat(1000) })).memo).toHaveLength(1000);
113
+ });
114
+ test('MIME: duplicate or folded headers and parameters are rejected', () => {
115
+ const body = hexBytes(v.bodyCborHex);
116
+ const mime = (head) => Uint8Array.from([...Utils.toArray(head, 'utf8'), ...body]);
117
+ const ct = 'Content-Type: application/vnd.metanet.transaction+cbor\r\n';
118
+ const te = 'Content-Transfer-Encoding: binary\r\n';
119
+ expect(hex(transactionDeliveryBody(mime(`${ct}${te}\r\n`)))).toBe(v.bodyCborHex);
120
+ expect(() => transactionDeliveryBody(mime(`${ct}${ct}${te}\r\n`))).toThrow('BRC-232: duplicate MIME header');
121
+ expect(() => transactionDeliveryBody(mime(`${ct}${te} folded\r\n\r\n`))).toThrow('BRC-232: malformed MIME header');
122
+ expect(() => transactionDeliveryBody(mime(`Content-Type: application/vnd.metanet.transaction+cbor; x=1\r\n${te}\r\n`))).toThrow('with no parameters');
123
+ });
124
+ });
125
+ //# sourceMappingURL=delivery.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.test.js","sourceRoot":"","sources":["../../src/metanet/delivery.test.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,7 @@ describe('BRC-169 envelope (DAG-CBOR)', () => {
80
80
  payment: {
81
81
  derivationPrefix: new Uint8Array(16).fill(1),
82
82
  derivationSuffix: new Uint8Array(16).fill(2),
83
- protocol: utf8('mandala'),
83
+ protocol: utf8('3241645161d8'),
84
84
  satoshis: 1,
85
85
  beef: new Uint8Array([1, 2, 3]),
86
86
  },
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.test.js","sourceRoot":"","sources":["../../src/metanet/envelope.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EACN,MAAM,IAAI,aAAa,EACvB,MAAM,IAAI,aAAa,GACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAE3B,uBAAuB,EACvB,YAAY,GACZ,MAAM,eAAe,CAAA;AAEtB,0EAA0E;AAC1E,MAAM,WAAW,GAChB,kEAAkE,CAAA;AACnE,MAAM,UAAU,GACf,oEAAoE,CAAA;AACrE,MAAM,WAAW,GAChB,8xBAA8xB,CAAA;AAC/xB,MAAM,YAAY,GACjB,8IAA8I,CAAA;AAE/I,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AACzE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;AACrE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEtE,MAAM,EAAE,GAAqB;IAC5B,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;IACpE,MAAM,EAAE;QACP,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC;QAC9B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,eAAe;KACvB;IACD,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE;QACR,gBAAgB,EAAE,GAAG,CAAC,0BAA0B,CAAC;QACjD,gBAAgB,EAAE,GAAG,CAAC,0BAA0B,CAAC;QACjD,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;QAC9B,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC;KACvB;IACD,WAAW,EAAE,KAAK,CACjB,kEAAkE,CAClE;CACD,CAAA;AAED;;;;;GAKG;AACH,MAAM,aAAa,GAAG;IACrB,GAAG,EAAE;IACL,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,OAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE;CACtB,CAAA;AAEhC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC5C,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;QAC3F,MAAM,CACL,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAC/D,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChE,uDAAuD;QACvD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAA;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACf,WAAW,CAAC,OAAO,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CACnE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC;YACjE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YACxD,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;YAC7C,UAAU,EAAE,2BAA2B;YACvC,KAAK,EAAE,yBAAyB;YAChC,YAAY,EAAE,UAAU;SACxB,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACtC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CACjD,MAAM,EACN,aAAa,EACb,OAAO,CACP,CAAA;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAA4B,CAAA;QAClE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QACvD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,MAAM,QAAQ,GAAqB;YAClC,cAAc,EAAE,KAAK;YACrB,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;YAC1C,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE;gBACR,gBAAgB,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,gBAAgB,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;gBACzB,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/B;SACD,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAA4B,CAAA;QACnE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAA;QACpD,MAAM,MAAM,GAAI,IAAI,CAAC,MAAsC,CAAC,WAAW,CAAA;QACvE,MAAM,QAAQ,GAAG,uBAAuB,CACvC,IAAmC,CACnC,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAA;QAE3D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAuB,CAAC;YAC9C,UAAU,EAAE,2BAA2B;YACvC,KAAK,EAAE,yBAAyB;YAChC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"envelope.test.js","sourceRoot":"","sources":["../../src/metanet/envelope.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The messagebox steps shared by the BRC-169 inbox syncs (`mandala_inbox`,
3
- * `metanet_inbox`): list a box (BRC-231 over BRC-104), decode each §7.3
2
+ * The messagebox steps of the `transaction-delivery` box sync: list a box
3
+ * (BRC-231 over BRC-104), decode each §7.3
4
4
  * DAG-CBOR envelope, verify its §7.2 signature against `sender.identityKey`,
5
5
  * decrypt the BRC-78 `content` with `wallet.decrypt`, check `contentHash`,
6
6
  * parse the MIME entity, hand it to the box's handler, and acknowledge only
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The messagebox steps shared by the BRC-169 inbox syncs (`mandala_inbox`,
3
- * `metanet_inbox`): list a box (BRC-231 over BRC-104), decode each §7.3
2
+ * The messagebox steps of the `transaction-delivery` box sync: list a box
3
+ * (BRC-231 over BRC-104), decode each §7.3
4
4
  * DAG-CBOR envelope, verify its §7.2 signature against `sender.identityKey`,
5
5
  * decrypt the BRC-78 `content` with `wallet.decrypt`, check `contentHash`,
6
6
  * parse the MIME entity, hand it to the box's handler, and acknowledge only
@@ -1,8 +1,10 @@
1
1
  /**
2
- * BRC-169 envelope plumbing shared by the handle-addressed actions (Mandala
3
- * sends, `sendBsv` to a handle) and the `metanet_inbox` sync.
2
+ * BRC-169 envelope plumbing shared by the handle-addressed actions (1Color
3
+ * sends, `sendBsv` to a handle), the BRC-232 delivery codec, and the
4
+ * `transaction-delivery` box sync.
4
5
  */
6
+ export * from './delivery.js';
5
7
  export * from './envelope.js';
6
8
  export * from './receive.js';
7
- export declare const metanetActions: import("../types.js").Action<import("./receive.js").SyncMetanetInboxInput, import("./receive.js").SyncMetanetInboxResult>[];
9
+ export declare const metanetActions: import("../types.js").Action<import("./receive.js").SyncTransactionInboxInput, import("./receive.js").SyncTransactionInboxResult>[];
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metanet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,eAAO,MAAM,cAAc,6HAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metanet/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,eAAO,MAAM,cAAc,qIAAyB,CAAA"}
@@ -1,9 +1,11 @@
1
1
  /**
2
- * BRC-169 envelope plumbing shared by the handle-addressed actions (Mandala
3
- * sends, `sendBsv` to a handle) and the `metanet_inbox` sync.
2
+ * BRC-169 envelope plumbing shared by the handle-addressed actions (1Color
3
+ * sends, `sendBsv` to a handle), the BRC-232 delivery codec, and the
4
+ * `transaction-delivery` box sync.
4
5
  */
5
- import { syncMetanetInbox } from './receive.js';
6
+ import { syncTransactionInbox } from './receive.js';
7
+ export * from './delivery.js';
6
8
  export * from './envelope.js';
7
9
  export * from './receive.js';
8
- export const metanetActions = [syncMetanetInbox];
10
+ export const metanetActions = [syncTransactionInbox];
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metanet/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,gBAAgB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metanet/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,oBAAoB,CAAC,CAAA"}
@@ -1,5 +1,7 @@
1
1
  /**
2
- * Collect BRC-169 payments from the wallet's `metanet_inbox`.
2
+ * Collect the wallet's `transaction-delivery` box: BRC-232 transaction
3
+ * deliveries (1Color tokens, BRC-29 outputs) and BRC-169 payments to a
4
+ * handle.
3
5
  *
4
6
  * For each message listed (BRC-231 over BRC-104) the shared inbox steps
5
7
  * decode the §7.3 DAG-CBOR envelope, verify its §7.2 signature against
@@ -11,40 +13,68 @@
11
13
  * derivationSuffix, senderIdentityKey: sender.identityKey }`, label
12
14
  * `metanet payment`, the memo in the description when `content` is
13
15
  * `text/plain`;
14
- * - `payment` null and `content` a BRC-232 transaction delivery: processed as
15
- * `syncMandalaInbox` processes it.
16
+ * - `payment` null and `content` a BRC-232 delivery (`contentHash`
17
+ * required): decode the body strictly. `wallet payment` entries map to
18
+ * BRC-100 `paymentRemittance`. A `basket insertion` entry must name a
19
+ * `p color` basket with BRC-207 receipt instructions; its transaction is
20
+ * first submitted to the asset's topic `tm_color_<assetId>` at `overlay`
21
+ * (BRC-22), and the STEAK must admit the received output. Then one
22
+ * `internalizeAction` with every entry copied verbatim.
16
23
  *
17
- * A message is acknowledged only after its internalize succeeds. Anything
18
- * else (JSON envelopes, a bad signature or hash, a payment protocol other
19
- * than BRC-29, a payment whose content is a transaction delivery, a message
20
- * with nothing to internalize) is left unacknowledged and reported.
24
+ * A message is internalized whole or not at all, and acknowledged only after
25
+ * its internalize succeeds. Anything else (a JSON envelope, a bad signature
26
+ * or hash, an unsupported entry or basket, an output the overlay does not
27
+ * admit, a message with nothing to internalize) is left unacknowledged and
28
+ * reported.
21
29
  */
30
+ import { type WalletInterface } from '@bsv/sdk';
22
31
  import type { Action } from '../types.js';
23
32
  import { type InboxSkip } from './inbox.js';
24
33
  /** Label on internalized handle payments */
25
34
  export declare const METANET_PAYMENT_LABEL = "metanet payment";
26
- export interface SyncMetanetInboxInput {
35
+ export interface SyncTransactionInboxInput {
27
36
  /** MessageBox server URL (default: "https://messagebox.1sat.app") */
28
37
  messageboxUrl?: string;
38
+ /**
39
+ * Base URL of the BRC-22 overlay that 1Color receipts are submitted to
40
+ * (`<overlay>/submit`, topic `tm_color_<assetId>`) before they are
41
+ * internalized. No default: without it, a message with a `p color` entry
42
+ * is left unacknowledged with reason `overlay-required`; everything else
43
+ * is processed.
44
+ */
45
+ overlay?: string;
29
46
  }
30
47
  /** A message internalized and acknowledged. */
31
- export interface MetanetInboxReceipt {
48
+ export interface TransactionInboxReceipt {
32
49
  messageId: string;
33
50
  txid: string;
34
51
  /** Sender identity key, hex */
35
52
  sender: string;
36
- /** `payment.satoshis` as the envelope states it (payments only) */
53
+ /** `payment.satoshis` as the envelope states it (handle payments only) */
37
54
  satoshis?: number;
38
- /** The `text/plain` content (payments only) */
55
+ /** The `text/plain` content (handle payments only) */
39
56
  memo?: string;
40
- /** Mandala tokens received (BRC-232 deliveries only) */
41
- tokenIds: string[];
57
+ /** 1Color assets received (`<txid>_<vout>`), BRC-232 deliveries only */
58
+ assetIds: string[];
42
59
  }
43
- export interface SyncMetanetInboxResult {
44
- received: MetanetInboxReceipt[];
60
+ export interface SyncTransactionInboxResult {
61
+ received: TransactionInboxReceipt[];
45
62
  /** Messages left unacknowledged */
46
63
  skipped: InboxSkip[];
47
64
  error?: string;
48
65
  }
49
- export declare const syncMetanetInbox: Action<SyncMetanetInboxInput, SyncMetanetInboxResult>;
66
+ /**
67
+ * Internalize one BRC-232 delivery body, whole or not at all: map its
68
+ * entries, submit each 1Color asset's transaction to `tm_color_<assetId>` at
69
+ * `overlay` and require admission of the received outputs, then one
70
+ * `internalizeAction`.
71
+ *
72
+ * @throws when the body is malformed, names an unsupported entry or basket,
73
+ * the overlay does not admit a received output, or the wallet refuses it
74
+ */
75
+ export declare function internalizeTransactionDelivery(wallet: Pick<WalletInterface, 'internalizeAction'>, overlay: string | undefined, body: Uint8Array): Promise<{
76
+ txid: string;
77
+ assetIds: string[];
78
+ }>;
79
+ export declare const syncTransactionInbox: Action<SyncTransactionInboxInput, SyncTransactionInboxResult>;
50
80
  //# sourceMappingURL=receive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/metanet/receive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,YAAY,CAAA;AAEzE,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,MAAM,WAAW,qBAAqB;IACrC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,mCAAmC;IACnC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAqDD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACpC,qBAAqB,EACrB,sBAAsB,CAiEtB,CAAA"}
1
+ {"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/metanet/receive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,OAAO,EAIN,KAAK,eAAe,EACpB,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMzC,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,YAAY,CAAA;AAEzE,4CAA4C;AAC5C,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,MAAM,WAAW,yBAAyB;IACzC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,EAAE,uBAAuB,EAAE,CAAA;IACnC,mCAAmC;IACnC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAsDD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CACnD,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,EAClD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoF/C;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACxC,yBAAyB,EACzB,0BAA0B,CA4E1B,CAAA"}