@1sat/actions 0.0.235 → 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.
- package/dist/1color/deploy.d.ts +35 -0
- package/dist/1color/deploy.d.ts.map +1 -0
- package/dist/1color/deploy.js +127 -0
- package/dist/1color/deploy.js.map +1 -0
- package/dist/{mandala → 1color}/deploy.test.d.ts.map +1 -1
- package/dist/1color/deploy.test.js +188 -0
- package/dist/1color/deploy.test.js.map +1 -0
- package/dist/1color/index.d.ts +10 -0
- package/dist/{mandala → 1color}/index.d.ts.map +1 -1
- package/dist/1color/index.js +12 -0
- package/dist/1color/index.js.map +1 -0
- package/dist/1color/receipt.d.ts +39 -0
- package/dist/1color/receipt.d.ts.map +1 -0
- package/dist/1color/receipt.js +91 -0
- package/dist/1color/receipt.js.map +1 -0
- package/dist/1color/send.d.ts +52 -0
- package/dist/1color/send.d.ts.map +1 -0
- package/dist/1color/send.js +175 -0
- package/dist/1color/send.js.map +1 -0
- package/dist/{mandala → 1color}/send.test.d.ts.map +1 -1
- package/dist/1color/send.test.js +622 -0
- package/dist/1color/send.test.js.map +1 -0
- package/dist/funding/walletFunding.d.ts +1 -2
- package/dist/funding/walletFunding.d.ts.map +1 -1
- package/dist/funding/walletFunding.js +1 -2
- package/dist/funding/walletFunding.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/listings/cancelOwnedListings.d.ts.map +1 -1
- package/dist/listings/cancelOwnedListings.js +7 -3
- package/dist/listings/cancelOwnedListings.js.map +1 -1
- package/dist/locks/index.d.ts.map +1 -1
- package/dist/locks/index.js +2 -1
- package/dist/locks/index.js.map +1 -1
- package/dist/metanet/delivery.d.ts +69 -0
- package/dist/metanet/delivery.d.ts.map +1 -0
- package/dist/metanet/delivery.js +235 -0
- package/dist/metanet/delivery.js.map +1 -0
- package/dist/metanet/delivery.test.d.ts +2 -0
- package/dist/metanet/delivery.test.d.ts.map +1 -0
- package/dist/metanet/delivery.test.js +125 -0
- package/dist/metanet/delivery.test.js.map +1 -0
- package/dist/metanet/envelope.test.js +1 -1
- package/dist/metanet/envelope.test.js.map +1 -1
- package/dist/metanet/inbox.d.ts +2 -2
- package/dist/metanet/inbox.js +2 -2
- package/dist/metanet/index.d.ts +5 -3
- package/dist/metanet/index.d.ts.map +1 -1
- package/dist/metanet/index.js +6 -4
- package/dist/metanet/index.js.map +1 -1
- package/dist/metanet/receive.d.ts +46 -16
- package/dist/metanet/receive.d.ts.map +1 -1
- package/dist/metanet/receive.js +118 -17
- package/dist/metanet/receive.js.map +1 -1
- package/dist/metanet/relay.d.ts +1 -1
- package/dist/metanet/relay.js +1 -1
- package/dist/metanet/testdata/brc232-vectors.json +86 -0
- package/dist/opns/index.d.ts.map +1 -1
- package/dist/opns/index.js +2 -1
- package/dist/opns/index.js.map +1 -1
- package/dist/ordinals/index.d.ts.map +1 -1
- package/dist/ordinals/index.js +2 -1
- package/dist/ordinals/index.js.map +1 -1
- package/dist/payments/index.d.ts +1 -1
- package/dist/payments/index.js +3 -3
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/sendBsvHandle.test.js +52 -34
- package/dist/payments/sendBsvHandle.test.js.map +1 -1
- package/package.json +10 -9
- package/dist/mandala/deploy.d.ts +0 -89
- package/dist/mandala/deploy.d.ts.map +0 -1
- package/dist/mandala/deploy.js +0 -226
- package/dist/mandala/deploy.js.map +0 -1
- package/dist/mandala/deploy.test.js +0 -281
- package/dist/mandala/deploy.test.js.map +0 -1
- package/dist/mandala/index.d.ts +0 -9
- package/dist/mandala/index.js +0 -17
- package/dist/mandala/index.js.map +0 -1
- package/dist/mandala/receive.d.ts +0 -58
- package/dist/mandala/receive.d.ts.map +0 -1
- package/dist/mandala/receive.js +0 -162
- package/dist/mandala/receive.js.map +0 -1
- package/dist/mandala/send.d.ts +0 -74
- package/dist/mandala/send.d.ts.map +0 -1
- package/dist/mandala/send.js +0 -313
- package/dist/mandala/send.js.map +0 -1
- package/dist/mandala/send.test.js +0 -515
- package/dist/mandala/send.test.js.map +0 -1
- package/dist/mandala/tokenId.d.ts +0 -21
- package/dist/mandala/tokenId.d.ts.map +0 -1
- package/dist/mandala/tokenId.js +0 -29
- package/dist/mandala/tokenId.js.map +0 -1
- /package/dist/{mandala → 1color}/deploy.test.d.ts +0 -0
- /package/dist/{mandala → 1color}/send.test.d.ts +0 -0
|
@@ -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('
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"envelope.test.js","sourceRoot":"","sources":["../../src/metanet/envelope.test.ts"],"names":[],"mappings":"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"}
|
package/dist/metanet/inbox.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The messagebox steps
|
|
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
|
package/dist/metanet/inbox.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The messagebox steps
|
|
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
|
package/dist/metanet/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BRC-169 envelope plumbing shared by the handle-addressed actions (
|
|
3
|
-
* sends, `sendBsv` to a handle) and the
|
|
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").
|
|
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
|
|
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"}
|
package/dist/metanet/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BRC-169 envelope plumbing shared by the handle-addressed actions (
|
|
3
|
-
* sends, `sendBsv` to a handle) and the
|
|
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 {
|
|
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 = [
|
|
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
|
|
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
|
|
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
|
|
15
|
-
* `
|
|
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
|
|
18
|
-
* else (JSON
|
|
19
|
-
*
|
|
20
|
-
* with nothing to internalize) is left unacknowledged and
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
41
|
-
|
|
57
|
+
/** 1Color assets received (`<txid>_<vout>`), BRC-232 deliveries only */
|
|
58
|
+
assetIds: string[];
|
|
42
59
|
}
|
|
43
|
-
export interface
|
|
44
|
-
received:
|
|
60
|
+
export interface SyncTransactionInboxResult {
|
|
61
|
+
received: TransactionInboxReceipt[];
|
|
45
62
|
/** Messages left unacknowledged */
|
|
46
63
|
skipped: InboxSkip[];
|
|
47
64
|
error?: string;
|
|
48
65
|
}
|
|
49
|
-
|
|
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
|
|
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"}
|
package/dist/metanet/receive.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Collect
|
|
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,22 +13,32 @@
|
|
|
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
|
|
15
|
-
* `
|
|
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
|
|
18
|
-
* else (JSON
|
|
19
|
-
*
|
|
20
|
-
* with nothing to internalize) is left unacknowledged and
|
|
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
|
*/
|
|
22
|
-
import {
|
|
30
|
+
import { OverlayClient } from '@1sat/client';
|
|
31
|
+
import { BRC29_PROTOCOL_ID, TRANSACTION_DELIVERY_BOX } from '@1sat/types';
|
|
23
32
|
import { TRANSACTION_CBOR_CONTENT_TYPE, mediaType } from '@1sat/utils';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
33
|
+
import { colorTopic } from '@bsv/color-permission-module';
|
|
34
|
+
import { Beef, Utils, } from '@bsv/sdk';
|
|
35
|
+
import { checkColorReceipt } from '../1color/receipt.js';
|
|
36
|
+
import { decodeTransactionDelivery, transactionDeliveryBody, } from './delivery.js';
|
|
26
37
|
import { InboxSkipError, processInbox } from './inbox.js';
|
|
27
38
|
/** Label on internalized handle payments */
|
|
28
39
|
export const METANET_PAYMENT_LABEL = 'metanet payment';
|
|
29
40
|
const BRC29_PROTOCOL = BRC29_PROTOCOL_ID[1];
|
|
41
|
+
const COMPRESSED_KEY = /^0[23][0-9a-f]{64}$/;
|
|
30
42
|
/** Internalize a §7.3 `payment` as a BRC-29 wallet payment of output 0. */
|
|
31
43
|
async function internalizeEnvelopePayment(wallet, payment, sender, memo) {
|
|
32
44
|
if (!(payment.protocol instanceof Uint8Array) ||
|
|
@@ -60,10 +72,92 @@ async function internalizeEnvelopePayment(wallet, payment, sender, memo) {
|
|
|
60
72
|
});
|
|
61
73
|
return txid;
|
|
62
74
|
}
|
|
63
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Internalize one BRC-232 delivery body, whole or not at all: map its
|
|
77
|
+
* entries, submit each 1Color asset's transaction to `tm_color_<assetId>` at
|
|
78
|
+
* `overlay` and require admission of the received outputs, then one
|
|
79
|
+
* `internalizeAction`.
|
|
80
|
+
*
|
|
81
|
+
* @throws when the body is malformed, names an unsupported entry or basket,
|
|
82
|
+
* the overlay does not admit a received output, or the wallet refuses it
|
|
83
|
+
*/
|
|
84
|
+
export async function internalizeTransactionDelivery(wallet, overlay, body) {
|
|
85
|
+
const delivery = decodeTransactionDelivery(body);
|
|
86
|
+
const txid = Utils.toHex(Array.from(delivery.txid));
|
|
87
|
+
const beef = Beef.fromBinary(Array.from(delivery.beef));
|
|
88
|
+
const subject = beef.findTxid(txid)?.tx;
|
|
89
|
+
if (!subject || subject.id('hex') !== txid) {
|
|
90
|
+
throw new InboxSkipError(`beef does not contain ${txid}`);
|
|
91
|
+
}
|
|
92
|
+
const outputs = [];
|
|
93
|
+
const received = new Map();
|
|
94
|
+
for (const entry of delivery.outputs) {
|
|
95
|
+
const { outputIndex } = entry;
|
|
96
|
+
if (!subject.outputs[outputIndex]) {
|
|
97
|
+
throw new InboxSkipError(`output ${outputIndex} is not in ${txid}`);
|
|
98
|
+
}
|
|
99
|
+
if (entry.protocol === 'wallet payment') {
|
|
100
|
+
const r = entry.paymentRemittance;
|
|
101
|
+
const senderIdentityKey = Utils.toHex(Array.from(r.senderIdentityKey));
|
|
102
|
+
if (!COMPRESSED_KEY.test(senderIdentityKey)) {
|
|
103
|
+
throw new InboxSkipError(`output ${outputIndex}: senderIdentityKey is not a compressed key`);
|
|
104
|
+
}
|
|
105
|
+
outputs.push({
|
|
106
|
+
outputIndex,
|
|
107
|
+
protocol: 'wallet payment',
|
|
108
|
+
paymentRemittance: {
|
|
109
|
+
derivationPrefix: r.derivationPrefix,
|
|
110
|
+
derivationSuffix: r.derivationSuffix,
|
|
111
|
+
senderIdentityKey,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const { basket, customInstructions, tags } = entry.insertionRemittance;
|
|
117
|
+
if (!basket.startsWith('p color ')) {
|
|
118
|
+
throw new InboxSkipError(`output ${outputIndex}: unsupported basket ${basket}`);
|
|
119
|
+
}
|
|
120
|
+
// 1Color receipts are submitted to the overlay before internalizing.
|
|
121
|
+
if (!overlay)
|
|
122
|
+
throw new InboxSkipError('overlay-required');
|
|
123
|
+
const { assetId } = checkColorReceipt(subject, outputIndex, basket, customInstructions);
|
|
124
|
+
received.set(assetId, [...(received.get(assetId) ?? []), outputIndex]);
|
|
125
|
+
outputs.push({
|
|
126
|
+
outputIndex,
|
|
127
|
+
protocol: 'basket insertion',
|
|
128
|
+
insertionRemittance: {
|
|
129
|
+
basket,
|
|
130
|
+
customInstructions,
|
|
131
|
+
...(tags !== undefined && { tags }),
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
// BRC-207: the received output must be admitted before the wallet accepts
|
|
136
|
+
// it, and internalizeAction never submits.
|
|
137
|
+
if (received.size > 0) {
|
|
138
|
+
const client = new OverlayClient(overlay.replace(/\/+$/, ''));
|
|
139
|
+
for (const [assetId, indexes] of received) {
|
|
140
|
+
const topic = colorTopic(assetId);
|
|
141
|
+
const steak = await client.submitBrc22(Array.from(delivery.beef), [topic]);
|
|
142
|
+
const admitted = steak?.[topic]?.outputsToAdmit ?? [];
|
|
143
|
+
for (const i of indexes) {
|
|
144
|
+
if (!admitted.includes(i)) {
|
|
145
|
+
throw new InboxSkipError(`${topic} did not admit ${txid}.${i}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await wallet.internalizeAction({
|
|
151
|
+
tx: beef.toBinaryAtomic(txid),
|
|
152
|
+
outputs,
|
|
153
|
+
description: received.size > 0 ? 'Receive 1Color tokens' : 'Receive delivered outputs',
|
|
154
|
+
});
|
|
155
|
+
return { txid, assetIds: [...received.keys()] };
|
|
156
|
+
}
|
|
157
|
+
export const syncTransactionInbox = {
|
|
64
158
|
meta: {
|
|
65
|
-
name: '
|
|
66
|
-
description: 'Collect
|
|
159
|
+
name: 'syncTransactionInbox',
|
|
160
|
+
description: 'Collect the transaction-delivery message box: BRC-232 deliveries (1Color tokens, submitted to their overlay topic first; BRC-29 outputs) and BRC-169 handle payments, internalized into the wallet',
|
|
67
161
|
category: 'sync',
|
|
68
162
|
inputSchema: {
|
|
69
163
|
type: 'object',
|
|
@@ -72,12 +166,16 @@ export const syncMetanetInbox = {
|
|
|
72
166
|
type: 'string',
|
|
73
167
|
description: 'MessageBox server URL (default: "https://messagebox.1sat.app")',
|
|
74
168
|
},
|
|
169
|
+
overlay: {
|
|
170
|
+
type: 'string',
|
|
171
|
+
description: 'Base URL of the BRC-22 overlay that 1Color receipts are submitted to before internalizing; without it, messages with 1Color receipts stay in the box (overlay-required)',
|
|
172
|
+
},
|
|
75
173
|
},
|
|
76
174
|
},
|
|
77
175
|
requiresServices: false,
|
|
78
176
|
},
|
|
79
177
|
async execute(ctx, input) {
|
|
80
|
-
return processInbox(ctx.wallet, input.messageboxUrl,
|
|
178
|
+
return processInbox(ctx.wallet, input.messageboxUrl, TRANSACTION_DELIVERY_BOX, async ({ env, sender, entity, plaintext }, msg) => {
|
|
81
179
|
const type = mediaType(entity.contentType);
|
|
82
180
|
if (env.payment) {
|
|
83
181
|
if (type === TRANSACTION_CBOR_CONTENT_TYPE) {
|
|
@@ -93,12 +191,15 @@ export const syncMetanetInbox = {
|
|
|
93
191
|
sender,
|
|
94
192
|
satoshis: env.payment.satoshis,
|
|
95
193
|
memo,
|
|
96
|
-
|
|
194
|
+
assetIds: [],
|
|
97
195
|
};
|
|
98
196
|
}
|
|
99
197
|
if (type === TRANSACTION_CBOR_CONTENT_TYPE) {
|
|
100
|
-
|
|
101
|
-
|
|
198
|
+
if (env.contentHash === undefined) {
|
|
199
|
+
throw new InboxSkipError('a BRC-232 delivery requires the envelope contentHash');
|
|
200
|
+
}
|
|
201
|
+
const { txid, assetIds } = await internalizeTransactionDelivery(ctx.wallet, input.overlay, transactionDeliveryBody(plaintext));
|
|
202
|
+
return { messageId: msg.messageId, txid, sender, assetIds };
|
|
102
203
|
}
|
|
103
204
|
throw new InboxSkipError(`nothing to internalize: no payment, content type ${entity.contentType}`);
|
|
104
205
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/metanet/receive.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/metanet/receive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EACN,IAAI,EAEJ,KAAK,GAEL,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EACN,yBAAyB,EACzB,uBAAuB,GACvB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAkB,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAA;AAoCtD,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC3C,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAE5C,2EAA2E;AAC3E,KAAK,UAAU,0BAA0B,CACxC,MAAkD,EAClD,OAAwB,EACxB,MAAc,EACd,IAAwB;IAExB,IACC,CAAC,CAAC,OAAO,CAAC,QAAQ,YAAY,UAAU,CAAC;QACzC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,cAAc,EAC5D,CAAC;QACF,MAAM,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAA;IAC3D,CAAC;IACD,IACC,CAAC,CAAC,OAAO,CAAC,gBAAgB,YAAY,UAAU,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,gBAAgB,YAAY,UAAU,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,IAAI,YAAY,UAAU,CAAC,EACpC,CAAC;QACF,MAAM,IAAI,cAAc,CAAC,mBAAmB,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5E,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,cAAc,CAAC,iCAAiC,CAAC,CAAA;IACtE,MAAM,MAAM,CAAC,iBAAiB,CAAC;QAC9B,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7B,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,gBAAgB;gBAC1B,iBAAiB,EAAE;oBAClB,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACpC;oBACD,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACpC;oBACD,iBAAiB,EAAE,MAAM;iBACzB;aACD;SACD;QACD,MAAM,EAAE,CAAC,qBAAqB,CAAC;QAC/B,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,CACzE,CAAC,EACD,EAAE,CACF;KACD,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CACnD,MAAkD,EAClD,OAA2B,EAC3B,IAAgB;IAEhB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,cAAc,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,OAAO,GAAwB,EAAE,CAAA;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CAAC,UAAU,WAAW,cAAc,IAAI,EAAE,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAA;YACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;YACtE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,cAAc,CACvB,UAAU,WAAW,6CAA6C,CAClE,CAAA;YACF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACZ,WAAW;gBACX,QAAQ,EAAE,gBAAgB;gBAC1B,iBAAiB,EAAE;oBAClB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;oBACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;oBACpC,iBAAiB;iBACjB;aACD,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,mBAAmB,CAAA;QACtE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,cAAc,CACvB,UAAU,WAAW,wBAAwB,MAAM,EAAE,CACrD,CAAA;QACF,CAAC;QACD,qEAAqE;QACrE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,cAAc,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,CACpC,OAAO,EACP,WAAW,EACX,MAAM,EACN,kBAAkB,CAClB,CAAA;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC;YACZ,WAAW;YACX,QAAQ,EAAE,kBAAkB;YAC5B,mBAAmB,EAAE;gBACpB,MAAM;gBACN,kBAAkB;gBAClB,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;aACnC;SACD,CAAC,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,2CAA2C;IAC3C,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAE,OAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QACzE,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,IAAI,EAAE,CAAA;YACrD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,cAAc,CAAC,GAAG,KAAK,kBAAkB,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChE,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,MAAM,CAAC,iBAAiB,CAAC;QAC9B,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7B,OAAO;QACP,WAAW,EACV,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B;KAC1E,CAAC,CAAA;IACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAG7B;IACH,IAAI,EAAE;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACV,oMAAoM;QACrM,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACX,aAAa,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EACV,gEAAgE;iBACjE;gBACD,OAAO,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EACV,yKAAyK;iBAC1K;aACD;SACD;QACD,gBAAgB,EAAE,KAAK;KACvB;IAED,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;QACvB,OAAO,YAAY,CAClB,GAAG,CAAC,MAAM,EACV,KAAK,CAAC,aAAa,EACnB,wBAAwB,EACxB,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;oBAC5C,MAAM,IAAI,cAAc,CACvB,8DAA8D,CAC9D,CAAA;gBACF,CAAC;gBACD,MAAM,IAAI,GACT,IAAI,KAAK,YAAY;oBACpB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC,CAAC,SAAS,CAAA;gBACb,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAC5C,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,OAAO,EACX,MAAM,EACN,IAAI,CACJ,CAAA;gBACD,OAAO;oBACN,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,IAAI;oBACJ,MAAM;oBACN,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ;oBAC9B,IAAI;oBACJ,QAAQ,EAAE,EAAE;iBACZ,CAAA;YACF,CAAC;YACD,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;gBAC5C,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM,IAAI,cAAc,CACvB,sDAAsD,CACtD,CAAA;gBACF,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,8BAA8B,CAC9D,GAAG,CAAC,MAAM,EACV,KAAK,CAAC,OAAO,EACb,uBAAuB,CAAC,SAAS,CAAC,CAClC,CAAA;gBACD,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;YAC5D,CAAC;YACD,MAAM,IAAI,cAAc,CACvB,oDAAoD,MAAM,CAAC,WAAW,EAAE,CACxE,CAAA;QACF,CAAC,CACD,CAAA;IACF,CAAC;CACD,CAAA"}
|
package/dist/metanet/relay.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare function acknowledgeCborMessages(wallet: WalletInterface, message
|
|
|
25
25
|
status: string;
|
|
26
26
|
}>;
|
|
27
27
|
/**
|
|
28
|
-
* The relay calls the BRC-169 envelope actions make (
|
|
28
|
+
* The relay calls the BRC-169 envelope actions make (1Color sends, handle
|
|
29
29
|
* payments, inbox syncs), gathered in one object so a host or a test can
|
|
30
30
|
* substitute the transport.
|
|
31
31
|
*/
|
package/dist/metanet/relay.js
CHANGED
|
@@ -39,7 +39,7 @@ export async function acknowledgeCborMessages(wallet, messagebox, messageIds) {
|
|
|
39
39
|
return postCbor(wallet, messagebox, '/acknowledgeMessage', { messageIds });
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* The relay calls the BRC-169 envelope actions make (
|
|
42
|
+
* The relay calls the BRC-169 envelope actions make (1Color sends, handle
|
|
43
43
|
* payments, inbox syncs), gathered in one object so a host or a test can
|
|
44
44
|
* substitute the transport.
|
|
45
45
|
*/
|