@1sat/actions 0.0.204 → 0.0.207

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 (37) hide show
  1. package/dist/collections/index.d.ts.map +1 -1
  2. package/dist/collections/index.js +2 -0
  3. package/dist/collections/index.js.map +1 -1
  4. package/dist/cosign/types.d.ts +3 -3
  5. package/dist/cosign/types.js +3 -3
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/opns/index.d.ts +2 -0
  11. package/dist/opns/index.d.ts.map +1 -1
  12. package/dist/opns/index.js +16 -2
  13. package/dist/opns/index.js.map +1 -1
  14. package/dist/ordinals/index.d.ts +23 -1
  15. package/dist/ordinals/index.d.ts.map +1 -1
  16. package/dist/ordinals/index.js +55 -2
  17. package/dist/ordinals/index.js.map +1 -1
  18. package/dist/sweep/index.d.ts.map +1 -1
  19. package/dist/sweep/index.js +11 -2
  20. package/dist/sweep/index.js.map +1 -1
  21. package/dist/utils/internalizeBeef.d.ts +9 -3
  22. package/dist/utils/internalizeBeef.d.ts.map +1 -1
  23. package/dist/utils/internalizeBeef.js +26 -10
  24. package/dist/utils/internalizeBeef.js.map +1 -1
  25. package/dist/utils/internalizeOutpointBeef.d.ts +25 -0
  26. package/dist/utils/internalizeOutpointBeef.d.ts.map +1 -0
  27. package/dist/utils/internalizeOutpointBeef.js +153 -0
  28. package/dist/utils/internalizeOutpointBeef.js.map +1 -0
  29. package/dist/utils/outpointBeef.d.ts +24 -0
  30. package/dist/utils/outpointBeef.d.ts.map +1 -0
  31. package/dist/utils/outpointBeef.js +44 -0
  32. package/dist/utils/outpointBeef.js.map +1 -0
  33. package/dist/utils/outpointBeef.test.d.ts +2 -0
  34. package/dist/utils/outpointBeef.test.d.ts.map +1 -0
  35. package/dist/utils/outpointBeef.test.js +115 -0
  36. package/dist/utils/outpointBeef.test.js.map +1 -0
  37. package/package.json +3 -3
@@ -0,0 +1,153 @@
1
+ import { Inscription } from '@1sat/templates';
2
+ import { MAP_PREFIX, OPNS_BASKET, ORDINALS_BASKET, displayNameForCi, formatOrdinalOutpoint, nameFromMap, ordinalTagsFromMetadata, } from '@1sat/types';
3
+ import { MapIndexer } from '@1sat/wallet';
4
+ import { Script } from '@bsv/sdk';
5
+ import { randomActionId } from './createTrackedAction.js';
6
+ import { buildOrdinalCustomInstructions } from './ordinalRemittance.js';
7
+ import { parseOutpointBeef } from './outpointBeef.js';
8
+ /**
9
+ * Ingest a BRC-158 bundle: fully verify tip→origin in memory, then file
10
+ * the tip alone with BRC-147 tags + customInstructions.
11
+ *
12
+ * Nothing is stored for later proof export — the wallet cannot serve a
13
+ * viable proof back out, so provenance travels sender-to-receiver only.
14
+ * Fail closed: any missing source, broken sat hop, or bad origin envelope
15
+ * throws and files nothing.
16
+ */
17
+ export async function internalizeOutpointBeef(wallet, bundle, tip, description = 'Received ordinal') {
18
+ const { txid, vout, outpoint, beef } = parseOutpointBeef(bundle);
19
+ const getTx = (id) => {
20
+ const tx = beef.findTxid(id)?.tx;
21
+ if (!tx)
22
+ throw new Error(`proof-missing-source:${id}`);
23
+ return tx;
24
+ };
25
+ // Walk tip → origin over bundle txs only (BRC-159 sat ordering).
26
+ let current = { txid, vout };
27
+ let origin = outpoint;
28
+ for (;;) {
29
+ const tx = getTx(current.txid);
30
+ const out = tx.outputs[current.vout];
31
+ if (!out || (out.satoshis ?? 0) !== 1) {
32
+ if (current.txid === txid)
33
+ throw new Error('not-a-1sat-tip');
34
+ break;
35
+ }
36
+ let outAcc = 0;
37
+ for (let j = 0; j < current.vout; j++)
38
+ outAcc += tx.outputs[j]?.satoshis ?? 0;
39
+ const sats = [];
40
+ for (const inp of tx.inputs) {
41
+ const srcTxid = inp.sourceTXID ?? inp.sourceTransaction?.id('hex');
42
+ if (!srcTxid)
43
+ throw new Error('proof-missing-source:unknown-input');
44
+ const srcTx = getTx(srcTxid.toLowerCase());
45
+ const srcOut = srcTx.outputs[inp.sourceOutputIndex];
46
+ if (srcOut?.satoshis == null) {
47
+ throw new Error(`proof-missing-source:${srcTxid}`);
48
+ }
49
+ sats.push(srcOut.satoshis);
50
+ }
51
+ let inAcc = 0;
52
+ let ordinalVin = -1;
53
+ for (let i = 0; i < sats.length; i++) {
54
+ if (inAcc === outAcc && sats[i] === 1) {
55
+ ordinalVin = i;
56
+ break;
57
+ }
58
+ inAcc += sats[i] ?? 0;
59
+ }
60
+ if (ordinalVin === -1)
61
+ break;
62
+ const vin = tx.inputs[ordinalVin];
63
+ if (!vin)
64
+ break;
65
+ const parentTxid = (vin.sourceTXID ??
66
+ vin.sourceTransaction?.id('hex') ??
67
+ '').toLowerCase();
68
+ if (!parentTxid)
69
+ throw new Error('proof-missing-source:unknown-input');
70
+ origin = `${parentTxid}.${vin.sourceOutputIndex ?? 0}`;
71
+ current = { txid: parentTxid, vout: vin.sourceOutputIndex ?? 0 };
72
+ }
73
+ // Origin envelope check (BRC-160): first ord envelope on a 1-sat output.
74
+ const [originTxid, originVoutStr] = origin.split('.');
75
+ const originTx = getTx(originTxid ?? '');
76
+ const originOut = originTx.outputs[Number(originVoutStr ?? 0)];
77
+ if (!originOut || (originOut.satoshis ?? 0) !== 1) {
78
+ throw new Error('origin-not-1sat');
79
+ }
80
+ const decoded = Inscription.decode(Script.fromBinary(Array.from(originOut.lockingScript.toBinary())));
81
+ if (!decoded)
82
+ throw new Error('origin-has-no-ord-envelope');
83
+ const baseType = decoded.file.type.split(';')[0]?.trim().toLowerCase();
84
+ if (!baseType)
85
+ throw new Error('origin-missing-content-type');
86
+ const mapField = decoded.fields?.get(MAP_PREFIX) ?? decoded.fields?.get('MAP');
87
+ const map = mapField
88
+ ? MapIndexer.parseMap(Script.fromBinary(Array.from(mapField)), 0)
89
+ : undefined;
90
+ let parent;
91
+ if (decoded.parent) {
92
+ try {
93
+ const bytes = Array.from(decoded.parent);
94
+ const txidHex = bytes
95
+ .slice(0, 32)
96
+ .reverse()
97
+ .map((b) => (b < 16 ? '0' : '') + b.toString(16))
98
+ .join('');
99
+ const voutNum = (bytes[32] ?? 0) |
100
+ ((bytes[33] ?? 0) << 8) |
101
+ ((bytes[34] ?? 0) << 16) |
102
+ ((bytes[35] ?? 0) << 24);
103
+ parent = `${txidHex}.${voutNum}`;
104
+ }
105
+ catch {
106
+ parent = undefined;
107
+ }
108
+ }
109
+ const tags = ordinalTagsFromMetadata({
110
+ origin,
111
+ contentType: decoded.file.type,
112
+ map,
113
+ parent,
114
+ });
115
+ if (origin === outpoint) {
116
+ // Mint: this output IS the origin — bare tag, not a self-reference.
117
+ const selfTag = `origin:${formatOrdinalOutpoint(origin)}`;
118
+ const at = tags.indexOf(selfTag);
119
+ if (at >= 0)
120
+ tags.splice(at, 1);
121
+ tags.unshift('origin');
122
+ }
123
+ const actionId = randomActionId();
124
+ tags.push(`id:${actionId}_${vout}`);
125
+ const basket = baseType === 'application/op-ns' ? OPNS_BASKET : ORDINALS_BASKET;
126
+ const name = tip.name ?? displayNameForCi(nameFromMap(map));
127
+ const customInstructions = buildOrdinalCustomInstructions({
128
+ protocolID: tip.protocolID,
129
+ keyID: tip.keyID,
130
+ counterparty: tip.counterparty,
131
+ tags,
132
+ name,
133
+ });
134
+ await wallet.internalizeAction({
135
+ tx: beef.toBinaryAtomic(txid),
136
+ outputs: [
137
+ {
138
+ outputIndex: vout,
139
+ protocol: 'basket insertion',
140
+ insertionRemittance: { basket, tags, customInstructions },
141
+ },
142
+ ],
143
+ description,
144
+ });
145
+ return {
146
+ txid,
147
+ outpoint,
148
+ origin: formatOrdinalOutpoint(origin),
149
+ basket,
150
+ tags,
151
+ };
152
+ }
153
+ //# sourceMappingURL=internalizeOutpointBeef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internalizeOutpointBeef.js","sourceRoot":"","sources":["../../src/utils/internalizeOutpointBeef.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Beef } from '@bsv/sdk';
2
+ /**
3
+ * BRC-158 Outpoint BEEF envelope.
4
+ *
5
+ * ```
6
+ * 16a7beef || txid (32 bytes, LE on wire) || vout (uint32 LE) || BEEF
7
+ * ```
8
+ *
9
+ * TXID byte order mirrors Atomic BEEF: display hex is the reverse of the
10
+ * wire bytes.
11
+ */
12
+ export declare const OUTPOINT_BEEF_PREFIX: readonly [22, 167, 190, 239];
13
+ export interface ParsedOutpointBeef {
14
+ /** Subject txid, display hex (lowercase). */
15
+ txid: string;
16
+ /** Subject output index. */
17
+ vout: number;
18
+ /** Subject outpoint, BRC-100 dot form. */
19
+ outpoint: string;
20
+ /** Inner bundle. */
21
+ beef: Beef;
22
+ }
23
+ export declare function parseOutpointBeef(input: Uint8Array | number[]): ParsedOutpointBeef;
24
+ //# sourceMappingURL=outpointBeef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outpointBeef.d.ts","sourceRoot":"","sources":["../../src/utils/outpointBeef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;GASG;AAEH,eAAO,MAAM,oBAAoB,8BAAoC,CAAA;AAErE,MAAM,WAAW,kBAAkB;IAClC,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB;IACpB,IAAI,EAAE,IAAI,CAAA;CACV;AAWD,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,GAC1B,kBAAkB,CAqBpB"}
@@ -0,0 +1,44 @@
1
+ import { Beef } from '@bsv/sdk';
2
+ /**
3
+ * BRC-158 Outpoint BEEF envelope.
4
+ *
5
+ * ```
6
+ * 16a7beef || txid (32 bytes, LE on wire) || vout (uint32 LE) || BEEF
7
+ * ```
8
+ *
9
+ * TXID byte order mirrors Atomic BEEF: display hex is the reverse of the
10
+ * wire bytes.
11
+ */
12
+ export const OUTPOINT_BEEF_PREFIX = [0x16, 0xa7, 0xbe, 0xef];
13
+ function toHexLower(bytes) {
14
+ let s = '';
15
+ for (let i = 0; i < bytes.length; i++) {
16
+ const b = bytes[i] ?? 0;
17
+ s += (b < 16 ? '0' : '') + b.toString(16);
18
+ }
19
+ return s.toLowerCase();
20
+ }
21
+ export function parseOutpointBeef(input) {
22
+ const bytes = input instanceof Uint8Array ? input : Uint8Array.from(input);
23
+ if (bytes.length < 40)
24
+ throw new Error('outpoint-beef-too-short');
25
+ for (let i = 0; i < 4; i++) {
26
+ if (bytes[i] !== OUTPOINT_BEEF_PREFIX[i]) {
27
+ throw new Error('outpoint-beef-bad-prefix');
28
+ }
29
+ }
30
+ const txidWire = bytes.subarray(4, 36);
31
+ const txid = toHexLower(Array.from(txidWire).reverse());
32
+ if (!/^[0-9a-f]{64}$/.test(txid))
33
+ throw new Error('outpoint-beef-bad-txid');
34
+ const vout = (bytes[36] ?? 0) |
35
+ ((bytes[37] ?? 0) << 8) |
36
+ ((bytes[38] ?? 0) << 16) |
37
+ ((bytes[39] ?? 0) << 24);
38
+ if (!Number.isInteger(vout) || vout < 0) {
39
+ throw new Error('outpoint-beef-bad-vout');
40
+ }
41
+ const beef = Beef.fromBinary(Array.from(bytes.subarray(40)));
42
+ return { txid, vout, outpoint: `${txid}.${vout}`, beef };
43
+ }
44
+ //# sourceMappingURL=outpointBeef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outpointBeef.js","sourceRoot":"","sources":["../../src/utils/outpointBeef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAarE,SAAS,UAAU,CAAC,KAAwB;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,KAA4B;IAE5B,MAAM,KAAK,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC5C,CAAC;IACF,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3E,MAAM,IAAI,GACT,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAA;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=outpointBeef.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outpointBeef.test.d.ts","sourceRoot":"","sources":["../../src/utils/outpointBeef.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,115 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { Inscription } from '@1sat/templates';
3
+ import { OPNS_BASKET, ORDINALS_BASKET } from '@1sat/types';
4
+ import { Beef, P2PKH, PrivateKey, Transaction, UnlockingScript, Utils, } from '@bsv/sdk';
5
+ import { internalizeOutpointBeef } from './internalizeOutpointBeef.js';
6
+ import { OUTPOINT_BEEF_PREFIX, parseOutpointBeef } from './outpointBeef.js';
7
+ /** Test-only envelope builder (egress is out of scope for the SDK). */
8
+ function wrapOutpointBeef(txid, vout, beef) {
9
+ const clean = txid.trim().toLowerCase();
10
+ const body = beef.toBinary();
11
+ const out = new Uint8Array(40 + body.length);
12
+ out.set(OUTPOINT_BEEF_PREFIX, 0);
13
+ for (let i = 0; i < 32; i++) {
14
+ out[4 + i] = Number.parseInt(clean.slice((31 - i) * 2, (31 - i) * 2 + 2), 16);
15
+ }
16
+ out[36] = vout & 0xff;
17
+ out[37] = (vout >>> 8) & 0xff;
18
+ out[38] = (vout >>> 16) & 0xff;
19
+ out[39] = (vout >>> 24) & 0xff;
20
+ out.set(body, 40);
21
+ return Array.from(out);
22
+ }
23
+ function mintTx(contentType) {
24
+ const insc = Inscription.create(new Uint8Array(Utils.toArray('art', 'utf8')), contentType);
25
+ const tx = new Transaction();
26
+ tx.addOutput({ lockingScript: insc.lock(), satoshis: 1 });
27
+ return tx;
28
+ }
29
+ function transferTx(sourceTxid) {
30
+ const addr = PrivateKey.fromRandom().toPublicKey().toAddress();
31
+ const tx = new Transaction();
32
+ tx.addInput({
33
+ sourceTXID: sourceTxid,
34
+ sourceOutputIndex: 0,
35
+ unlockingScript: new UnlockingScript(),
36
+ sequence: 0xffffffff,
37
+ });
38
+ tx.addOutput({ lockingScript: new P2PKH().lock(addr), satoshis: 1 });
39
+ return tx;
40
+ }
41
+ function mockWallet(calls) {
42
+ return {
43
+ internalizeAction: async (args) => {
44
+ calls.push(args);
45
+ return { accepted: true };
46
+ },
47
+ };
48
+ }
49
+ describe('parseOutpointBeef', () => {
50
+ test('parses subject + body', () => {
51
+ const mint = mintTx('text/plain');
52
+ const mintId = mint.id('hex');
53
+ const beef = new Beef();
54
+ beef.mergeRawTx(mint.toBinary());
55
+ const env = wrapOutpointBeef(mintId, 0, beef);
56
+ expect(env.slice(0, 4)).toEqual([0x16, 0xa7, 0xbe, 0xef]);
57
+ const parsed = parseOutpointBeef(env);
58
+ expect(parsed.txid).toBe(mintId.toLowerCase());
59
+ expect(parsed.vout).toBe(0);
60
+ expect(parsed.beef.findTxid(mintId)?.tx?.id('hex')).toBe(mintId);
61
+ });
62
+ test('rejects bad prefix', () => {
63
+ expect(() => parseOutpointBeef(new Uint8Array(40))).toThrow();
64
+ });
65
+ });
66
+ describe('internalizeOutpointBeef', () => {
67
+ test('mint files bare origin tag in 1sat basket', async () => {
68
+ const mint = mintTx('image/png');
69
+ const mintId = mint.id('hex').toLowerCase();
70
+ const beef = new Beef();
71
+ beef.mergeRawTx(mint.toBinary());
72
+ const calls = [];
73
+ const res = await internalizeOutpointBeef(mockWallet(calls), wrapOutpointBeef(mintId, 0, beef), { protocolID: [0, 'onesat'], keyID: 'k', counterparty: 'self' }, 'test recv');
74
+ expect(res.basket).toBe(ORDINALS_BASKET);
75
+ expect(res.origin).toBe(`${mintId}_0`);
76
+ expect(res.tags).toContain('origin');
77
+ expect(res.tags).toContain('type:image/png');
78
+ expect(calls.length).toBe(1);
79
+ });
80
+ test('transfer resolves origin and routes by origin type', async () => {
81
+ const mint = mintTx('text/plain');
82
+ const mintId = mint.id('hex').toLowerCase();
83
+ const tip = transferTx(mintId);
84
+ const tipId = tip.id('hex').toLowerCase();
85
+ const beef = new Beef();
86
+ beef.mergeRawTx(tip.toBinary());
87
+ beef.mergeRawTx(mint.toBinary());
88
+ const calls = [];
89
+ const res = await internalizeOutpointBeef(mockWallet(calls), wrapOutpointBeef(tipId, 0, beef), { protocolID: [0, 'onesat'], keyID: 'k' });
90
+ expect(res.basket).toBe(ORDINALS_BASKET);
91
+ expect(res.origin).toBe(`${mintId}_0`);
92
+ expect(res.tags).toContain(`origin:${mintId}_0`);
93
+ expect(res.tags).toContain('type:text/plain');
94
+ expect(calls.length).toBe(1);
95
+ });
96
+ test('op-ns origin routes to opns basket', async () => {
97
+ const mint = mintTx('application/op-ns');
98
+ const mintId = mint.id('hex').toLowerCase();
99
+ const beef = new Beef();
100
+ beef.mergeRawTx(mint.toBinary());
101
+ const calls = [];
102
+ const res = await internalizeOutpointBeef(mockWallet(calls), wrapOutpointBeef(mintId, 0, beef), { protocolID: [0, 'onesat'], keyID: 'k' });
103
+ expect(res.basket).toBe(OPNS_BASKET);
104
+ });
105
+ test('fails closed when a parent is missing', async () => {
106
+ const tip = transferTx('f'.repeat(64));
107
+ const tipId = tip.id('hex').toLowerCase();
108
+ const beef = new Beef();
109
+ beef.mergeRawTx(tip.toBinary());
110
+ const calls = [];
111
+ await expect(internalizeOutpointBeef(mockWallet(calls), wrapOutpointBeef(tipId, 0, beef), { protocolID: [0, 'onesat'], keyID: 'k' })).rejects.toThrow();
112
+ expect(calls.length).toBe(0);
113
+ });
114
+ });
115
+ //# sourceMappingURL=outpointBeef.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outpointBeef.test.js","sourceRoot":"","sources":["../../src/utils/outpointBeef.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1sat/actions",
3
- "version": "0.0.204",
3
+ "version": "0.0.207",
4
4
  "description": "Action definitions for the 1Sat SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,7 +32,7 @@
32
32
  "@1sat/client": "0.0.51",
33
33
  "@1sat/types": "0.0.41",
34
34
  "@1sat/utils": "0.0.34",
35
- "@1sat/wallet": "0.0.105",
35
+ "@1sat/wallet": "0.0.106",
36
36
  "@1sat/templates": "0.0.33",
37
37
  "@bsv/message-box-client": "^2.2.1"
38
38
  },
@@ -42,6 +42,6 @@
42
42
  "devDependencies": {
43
43
  "@bsv/sdk": "^2.1.9",
44
44
  "typescript": "^5.9.3",
45
- "@1sat/wallet-remote": "0.0.62"
45
+ "@1sat/wallet-remote": "0.0.63"
46
46
  }
47
47
  }