@1sat/actions 0.0.213 → 0.0.215

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 (52) hide show
  1. package/dist/apply/stampScriptTags.js +2 -2
  2. package/dist/apply/stampScriptTags.js.map +1 -1
  3. package/dist/constants.d.ts +1 -1
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +1 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/listings/cancelOwnedListings.d.ts.map +1 -1
  8. package/dist/listings/cancelOwnedListings.js +15 -3
  9. package/dist/listings/cancelOwnedListings.js.map +1 -1
  10. package/dist/listings/cancelOwnedListings.test.js +32 -0
  11. package/dist/listings/cancelOwnedListings.test.js.map +1 -1
  12. package/dist/opns/index.d.ts.map +1 -1
  13. package/dist/opns/index.js +80 -9
  14. package/dist/opns/index.js.map +1 -1
  15. package/dist/ordinals/index.d.ts +2 -2
  16. package/dist/ordinals/index.d.ts.map +1 -1
  17. package/dist/ordinals/index.js +179 -64
  18. package/dist/ordinals/index.js.map +1 -1
  19. package/dist/pipeline/unlockInput.d.ts +2 -1
  20. package/dist/pipeline/unlockInput.d.ts.map +1 -1
  21. package/dist/pipeline/unlockInput.js +17 -2
  22. package/dist/pipeline/unlockInput.js.map +1 -1
  23. package/dist/pipeline/unlockInput.test.d.ts +2 -0
  24. package/dist/pipeline/unlockInput.test.d.ts.map +1 -0
  25. package/dist/pipeline/unlockInput.test.js +68 -0
  26. package/dist/pipeline/unlockInput.test.js.map +1 -0
  27. package/dist/sweep/scan.d.ts.map +1 -1
  28. package/dist/sweep/scan.js +9 -1
  29. package/dist/sweep/scan.js.map +1 -1
  30. package/dist/sweep/scan.test.js +82 -1
  31. package/dist/sweep/scan.test.js.map +1 -1
  32. package/dist/tokens/index.d.ts +17 -1
  33. package/dist/tokens/index.d.ts.map +1 -1
  34. package/dist/tokens/index.js +105 -1
  35. package/dist/tokens/index.js.map +1 -1
  36. package/dist/utils/listingToken.d.ts +22 -0
  37. package/dist/utils/listingToken.d.ts.map +1 -0
  38. package/dist/utils/listingToken.js +84 -0
  39. package/dist/utils/listingToken.js.map +1 -0
  40. package/dist/utils/listingToken.test.d.ts +2 -0
  41. package/dist/utils/listingToken.test.d.ts.map +1 -0
  42. package/dist/utils/listingToken.test.js +36 -0
  43. package/dist/utils/listingToken.test.js.map +1 -0
  44. package/dist/utils/ordlockCancelLength.d.ts +10 -0
  45. package/dist/utils/ordlockCancelLength.d.ts.map +1 -0
  46. package/dist/utils/ordlockCancelLength.js +23 -0
  47. package/dist/utils/ordlockCancelLength.js.map +1 -0
  48. package/dist/utils/ordlockCancelLength.test.d.ts +2 -0
  49. package/dist/utils/ordlockCancelLength.test.d.ts.map +1 -0
  50. package/dist/utils/ordlockCancelLength.test.js +33 -0
  51. package/dist/utils/ordlockCancelLength.test.js.map +1 -0
  52. package/package.json +5 -5
@@ -0,0 +1,68 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+ import { OrdLockV2 } from '@1sat/templates';
3
+ import { P1SAT_PROTOCOL } from '@1sat/types';
4
+ import { P2PKH, PrivateKey, ProtoWallet, PublicKey, Script, Transaction, } from '@bsv/sdk';
5
+ import { unlockByScript } from './unlockInput.js';
6
+ const buyerKey = new PrivateKey(7001);
7
+ const buyerAddr = buyerKey.toAddress();
8
+ const payAddr = new PrivateKey(7002).toAddress();
9
+ // ProtoWallet implements only the key/signature half of WalletInterface,
10
+ // which is all unlockByScript touches.
11
+ function asWallet(w) {
12
+ return w;
13
+ }
14
+ async function v2Listing(wallet, keyID) {
15
+ const { publicKey } = await wallet.getPublicKey({
16
+ protocolID: P1SAT_PROTOCOL,
17
+ keyID,
18
+ counterparty: 'self',
19
+ forSelf: true,
20
+ });
21
+ const lock = OrdLockV2.lock(PublicKey.fromString(publicKey).toAddress(), payAddr, 5000);
22
+ const listing = new Transaction();
23
+ listing.addOutput({ satoshis: 1, lockingScript: lock });
24
+ return { listing, lock };
25
+ }
26
+ describe('unlockByScript: OrdLock v2', () => {
27
+ it('cancels when key CI is present', async () => {
28
+ const wallet = new ProtoWallet(new PrivateKey(7003));
29
+ const keyID = 'abc_1';
30
+ const { listing, lock } = await v2Listing(wallet, keyID);
31
+ const tx = new Transaction();
32
+ tx.addInput({ sourceTransaction: listing, sourceOutputIndex: 0 });
33
+ tx.addOutput({ satoshis: 1, lockingScript: new P2PKH().lock(buyerAddr) });
34
+ const res = await unlockByScript(asWallet(wallet), tx, 0, lock, 1, {
35
+ protocolID: P1SAT_PROTOCOL,
36
+ keyID,
37
+ });
38
+ expect('unlockingScript' in res).toBe(true);
39
+ if (!('unlockingScript' in res))
40
+ throw new Error(res.error);
41
+ expect(OrdLockV2.isCancel(Script.fromHex(res.unlockingScript))).toBe(true);
42
+ });
43
+ it('purchases when no key CI and the payout+tag pair is present', async () => {
44
+ const wallet = new ProtoWallet(new PrivateKey(7004));
45
+ const { listing, lock } = await v2Listing(wallet, 'abc_2');
46
+ const tx = new Transaction();
47
+ tx.addInput({ sourceTransaction: listing, sourceOutputIndex: 0 });
48
+ tx.addOutput({ satoshis: 1, lockingScript: new P2PKH().lock(buyerAddr) });
49
+ tx.addOutput(OrdLockV2.payoutOutput(lock));
50
+ tx.addOutput(OrdLockV2.tagOutput(listing.id('hex'), 0));
51
+ tx.addOutput({ satoshis: 900, lockingScript: new P2PKH().lock(buyerAddr) });
52
+ const res = await unlockByScript(asWallet(wallet), tx, 0, lock, 1);
53
+ if (!('unlockingScript' in res))
54
+ throw new Error(res.error);
55
+ expect(OrdLockV2.isPurchase(Script.fromHex(res.unlockingScript))).toBe(true);
56
+ });
57
+ it('returns an error, not a v1 attempt, when the tag output is missing', async () => {
58
+ const wallet = new ProtoWallet(new PrivateKey(7005));
59
+ const { listing, lock } = await v2Listing(wallet, 'abc_3');
60
+ const tx = new Transaction();
61
+ tx.addInput({ sourceTransaction: listing, sourceOutputIndex: 0 });
62
+ tx.addOutput({ satoshis: 1, lockingScript: new P2PKH().lock(buyerAddr) });
63
+ tx.addOutput(OrdLockV2.payoutOutput(lock));
64
+ const res = await unlockByScript(asWallet(wallet), tx, 0, lock, 1);
65
+ expect('error' in res && /payout immediately followed/.test(res.error)).toBe(true);
66
+ });
67
+ });
68
+ //# sourceMappingURL=unlockInput.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlockInput.test.js","sourceRoot":"","sources":["../../src/pipeline/unlockInput.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAA;AAUxE,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GACpC,OAAO,CAAC,UAAU,CAAC,CA+BrB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GACpC,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAA;AAUxE,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GACpC,OAAO,CAAC,UAAU,CAAC,CAsCrB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GACpC,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
@@ -26,6 +26,7 @@ export function isListedOutput(out) {
26
26
  export async function scanAddress(services, address, onProgress) {
27
27
  // Phase 1: Sync the address
28
28
  onProgress?.({ phase: 'sync', detail: 'Syncing address...' });
29
+ let synced = false;
29
30
  for await (const event of services.owner.getTxos(address, {
30
31
  refresh: true,
31
32
  limit: 1,
@@ -37,15 +38,22 @@ export async function scanAddress(services, address, onProgress) {
37
38
  detail: `${p.phase}: ${p.processed ?? 0}/${p.total ?? '?'}`,
38
39
  });
39
40
  }
40
- else if (event.type === 'done' || event.type === 'error') {
41
+ else if (event.type === 'error') {
42
+ throw event.error;
43
+ }
44
+ else if (event.type === 'done') {
45
+ synced = true;
41
46
  break;
42
47
  }
43
48
  }
49
+ if (!synced)
50
+ throw new Error('Address sync ended before completion. Retry scanning.');
44
51
  // Phase 2: Search for all unspent outputs
45
52
  onProgress?.({ phase: 'search', detail: 'Searching for assets...' });
46
53
  const allOutputs = (await services.txo.search(`own:${address}`, {
47
54
  unspent: true,
48
55
  events: true,
56
+ tags: ['ordlock'],
49
57
  sats: true,
50
58
  limit: 0,
51
59
  })) ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/sweep/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG3C,uEAAuE;AACvE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAExE,SAAS,QAAQ,CAAC,MAAgB,EAAE,MAAc;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,GAAkB;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;IAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,QAAwB,EACxB,OAAe,EACf,UAAsC;IAEtC,4BAA4B;IAC5B,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAC7D,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;QACzD,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;KACR,CAAC,EAAE,CAAC;QACJ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YACpB,UAAU,EAAE,CAAC;gBACZ,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE;aAC3D,CAAC,CAAA;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,KAAK,CAAA;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAClC,MAAM,GAAG,IAAI,CAAA;YACb,MAAK;QACN,CAAC;IACF,CAAC;IACD,IAAI,CAAC,MAAM;QACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAEzE,0CAA0C;IAC1C,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;IACpE,MAAM,UAAU,GACf,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,EAAE;QAC5C,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,CAAC;KACR,CAAC,CAAC,IAAI,EAAE,CAAA;IAEV,iCAAiC;IACjC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;IACzE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,QAAwB,EACxB,SAAmB,EACnB,UAAsC;IAEtC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACtC,MAAM,UAAU,GAAiB,EAAE,CAAA;IAEnC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,CAAC;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;SACzC,CAAC,CAAA;QACF,UAAU,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACN,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7C,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACrD,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACrD,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,gBAAgB,EACpC,CAAC,CACD;KACD,CAAA;AACF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC/B,QAAwB,EACxB,OAAwB;IAExB,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,MAAM,WAAW,GAAoB,EAAE,CAAA;IACvC,MAAM,MAAM,GAAoB,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAoB,EAAE,CAAA;IAEpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAA;QAE9B,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,SAAQ;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,SAAQ;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,SAAQ;QACT,CAAC;QAED,IACC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,yBAAyB,IAAI,CAAC,KAAK,YAAY,CAAC,EACxE,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACrB,SAAQ;QACT,CAAC;QAED,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAChB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,wBAAwB,CAAC,EAAE,CAAC;gBACxD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;YACD,SAAQ;QACT,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC;IACF,CAAC;IAED,8CAA8C;IAC9C,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,MAAM,YAAY,GAAoB,EAAE,CAAA;IAExC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACZ,CAAC;iBAAM,CAAC;gBACP,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO,EAAE,YAAY;QACrB,QAAQ;QACR,SAAS;QACT,WAAW,EAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACvD,WAAW;QACX,MAAM;QACN,GAAG;QACH,QAAQ;QACR,gBAAgB,EAAE,YAAY,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EACnC,CAAC,CACD;KACD,CAAA;AACF,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAC9B,QAAwB,EACxB,OAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEjD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,SAAQ;QAEtB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,KAAK,GAAG,EAAE,CAAA;YACV,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC3B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEhC,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAEnC,sDAAsD;IACtD,IAAI,OAAO,GAIN,EAAE,CAAA;IACP,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QACR,qCAAqC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAmB,EAAE,CAAA;IACnC,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,KAAK,CAAA;QAEnD,IAAI,WAAW,GAAG,EAAE,CAAA;QACpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;QACzC,IAAI,gBAAgB,GAAG,IAAI,CAAA;QAE3B,mEAAmE;QACnE,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;gBAC7C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,eAAe,CACrD,OAAO,EACP,SAAS,EACT,EAAE,OAAO,EAAE,IAAI,EAAE,CACjB,CAAA;gBACD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAEhE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAqC,CAAA;oBAC3D,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,CAAA;oBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;oBAC5B,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC3B,CAAC;gBAED,wDAAwD;gBACxD,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtE,CAAC;YAAC,MAAM,CAAC;gBACR,mDAAmD;YACpD,CAAC;QACF,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACb,OAAO;YACP,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;YAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YACzC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;YACzB,WAAW;YACX,OAAO,EAAE,gBAAgB;YACzB,OAAO;YACP,QAAQ;SACR,CAAC,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CACnC,QAAwB,EACxB,OAAwB;IAExB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAAE,SAAQ;YAEzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAA;gBAC/C,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBAClB,MAAK;gBACN,CAAC;YACF,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,wDAAwD;QACzD,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACrC,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;IAC9C,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
- import { isListedOutput } from './scan.js';
2
+ import { OneSatServices } from '@1sat/client';
3
+ import { isListedOutput, scanAddress } from './scan.js';
3
4
  function out(partial) {
4
5
  return { score: 0, ...partial };
5
6
  }
@@ -13,9 +14,89 @@ describe('isListedOutput (OPL-4696)', () => {
13
14
  it('detects data.ordlock', () => {
14
15
  expect(isListedOutput(out({ outpoint: 'a.0', data: { ordlock: { price: 1000 } } }))).toBe(true);
15
16
  });
17
+ it('ignores OrdLock v2 listings (ordlock2) and price tags', () => {
18
+ expect(isListedOutput(out({
19
+ outpoint: 'a.0',
20
+ events: ['ordlock2', 'own:1x', 'price:1000'],
21
+ data: { ordlock2: { price: 1000 } },
22
+ }))).toBe(false);
23
+ expect(isListedOutput(out({ outpoint: 'a.0', events: ['price:1000'] }))).toBe(false);
24
+ });
16
25
  it('ignores plain ordinals and time-locks', () => {
17
26
  expect(isListedOutput(out({ outpoint: 'a.0', events: ['type:image/png'] }))).toBe(false);
18
27
  expect(isListedOutput(out({ outpoint: 'a.0', events: ['lock:800000'] }))).toBe(false);
19
28
  });
20
29
  });
30
+ describe('legacy owner scan', () => {
31
+ it('requests listing data when the owner response has no public listing event', async () => {
32
+ const paths = [];
33
+ const listing = out({
34
+ outpoint: 'a.0',
35
+ satoshis: 1,
36
+ events: ['own:owner', 'type:application/op-ns'],
37
+ data: { ordlock: { price: 1000 } },
38
+ });
39
+ const server = Bun.serve({
40
+ port: 0,
41
+ fetch(request) {
42
+ const url = new URL(request.url);
43
+ paths.push(url);
44
+ if (url.pathname.endsWith('/txos')) {
45
+ return new Response('event: done\ndata: {}\n\n');
46
+ }
47
+ return Response.json([
48
+ url.searchParams.get('tags') === 'ordlock'
49
+ ? listing
50
+ : { ...listing, data: undefined },
51
+ ]);
52
+ },
53
+ });
54
+ const services = new OneSatServices('main', server.url.origin);
55
+ try {
56
+ const result = await scanAddress(services, 'owner');
57
+ expect(result.listings).toEqual([listing]);
58
+ expect(result.opnsNames).toEqual([]);
59
+ expect(result.ordinals).toEqual([]);
60
+ expect(paths).toHaveLength(2);
61
+ expect(paths[1]?.searchParams.get('key')).toBe('own:owner');
62
+ expect(paths[1]?.searchParams.get('limit')).toBe('0');
63
+ }
64
+ finally {
65
+ services.close();
66
+ server.stop(true);
67
+ }
68
+ });
69
+ for (const [name, stream, message] of [
70
+ [
71
+ 'early EOF',
72
+ 'event: sync\ndata: {"phase":"refresh"}\n\n',
73
+ 'Address sync ended before completion',
74
+ ],
75
+ [
76
+ 'server error',
77
+ 'event: error\ndata: refresh failed\n\n',
78
+ 'refresh failed',
79
+ ],
80
+ ]) {
81
+ it(`stops before searching stale inventory after ${name}`, async () => {
82
+ let requests = 0;
83
+ const server = Bun.serve({
84
+ port: 0,
85
+ fetch() {
86
+ requests++;
87
+ return new Response(stream);
88
+ },
89
+ });
90
+ const services = new OneSatServices('main', server.url.origin);
91
+ try {
92
+ await expect(scanAddress(services, 'owner')).rejects.toThrow(message);
93
+ expect(requests).toBe(1);
94
+ }
95
+ finally {
96
+ services.close();
97
+ server.stop(true);
98
+ }
99
+ });
100
+ }
101
+ });
21
102
  //# sourceMappingURL=scan.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.test.js","sourceRoot":"","sources":["../../src/sweep/scan.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,SAAS,GAAG,CACX,OAAiE;IAEjE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAA;AAChC,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAChC,MAAM,CACL,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACxE,IAAI,CACJ,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACL,cAAc,CACb,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC5D,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,CACL,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CACpE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACb,MAAM,CACL,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CACjE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACd,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"scan.test.js","sourceRoot":"","sources":["../../src/sweep/scan.test.ts"],"names":[],"mappings":"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"}
@@ -171,6 +171,22 @@ export declare const deployBsv21Auth: Action<DeployBsv21AuthInput, DeployBsv21Au
171
171
  * Pass `endMinting: true` to permanently end minting (no auth output emitted).
172
172
  */
173
173
  export declare const mintBsv21: Action<MintBsv21Input, MintBsv21Response>;
174
+ export interface CancelTokenListingInput extends ActionOptions {
175
+ /** Tracking id of the listing in the ordinals basket */
176
+ id: string;
177
+ }
178
+ /**
179
+ * Cancel a listed BSV-20/BSV-21 token. Returns a transfer inscription, never a bare P2PKH.
180
+ */
181
+ export declare const cancelTokenListing: Action<CancelTokenListingInput, {
182
+ txid?: string;
183
+ tx?: number[];
184
+ error?: string;
185
+ }>;
174
186
  /** All token actions for registry */
175
- export declare const tokensActions: (Action<ListTokensInput, WalletOutput[]> | Action<GetBsv21BalancesInput, Bsv21Balance[]> | Action<SendBsv21Input, TokenOperationResponse> | Action<PurchaseBsv21Request, TokenOperationResponse> | Action<DeployBsv21MintInput, DeployBsv21Response> | Action<MintBsv21Input, MintBsv21Response>)[];
187
+ export declare const tokensActions: (Action<ListTokensInput, WalletOutput[]> | Action<GetBsv21BalancesInput, Bsv21Balance[]> | Action<SendBsv21Input, TokenOperationResponse> | Action<PurchaseBsv21Request, TokenOperationResponse> | Action<DeployBsv21MintInput, DeployBsv21Response> | Action<MintBsv21Input, MintBsv21Response> | Action<CancelTokenListingInput, {
188
+ txid?: string;
189
+ tx?: number[];
190
+ error?: string;
191
+ }>)[];
176
192
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,14 @@ import { BSV21_DEPLOY_TAG, buildInputAssetLabel, buildTokenLabel, readAssetIdTag
8
8
  import { parseOutpoint } from '@1sat/utils';
9
9
  import { BigNumber, LockingScript, OP, P2PKH, PublicKey, TransactionSignature, UnlockingScript, Utils, } from '@bsv/sdk';
10
10
  import { prepareP1SatArgs } from '../apply/index.js';
11
- import { BSV21_AUTH_TAG, BSV21_BASKET, P1SAT_PROTOCOL } from '../constants.js';
11
+ import { BSV21_AUTH_TAG, BSV21_BASKET, ORDINALS_BASKET, P1SAT_PROTOCOL, } from '../constants.js';
12
+ import { deriveCancelAddressInternal } from '../ordinals/index.js';
12
13
  import { bsv21FieldsFromOutput, bsv21FilterTags, buildBsv21CustomInstructions, normalizeBsv21TokenId, } from '../utils/bsv21Remittance.js';
13
14
  import { executeTrackedAction } from '../utils/createTrackedAction.js';
14
15
  import { getDisplayValue } from '../utils/displayValue.js';
16
+ import { loadBasketOutputBeef } from '../utils/loadBasketOutput.js';
17
+ import { isBsv21Transfer, listedTransfer, tokenReturnOutput, } from '../utils/listingToken.js';
18
+ import { ordLockCancelUnlockLength } from '../utils/ordlockCancelLength.js';
15
19
  import { resolveDestination } from '../utils/resolveDestination.js';
16
20
  import { signP2PKHInput } from '../utils/signP2PKH.js';
17
21
  /** tokenId: CI `id` → tag `bsv21:<id>` → deploy outpoint. */
@@ -1254,6 +1258,105 @@ export const mintBsv21 = {
1254
1258
  }
1255
1259
  },
1256
1260
  };
1261
+ /**
1262
+ * Cancel a listed BSV-20/BSV-21 token. Returns a transfer inscription, never a bare P2PKH.
1263
+ */
1264
+ export const cancelTokenListing = {
1265
+ meta: {
1266
+ name: 'cancelTokenListing',
1267
+ description: 'Cancel a token listing and return a transfer inscription to the wallet',
1268
+ category: 'tokens',
1269
+ inputSchema: {
1270
+ type: 'object',
1271
+ properties: {
1272
+ id: {
1273
+ type: 'string',
1274
+ description: 'Tracking id of the listing in the ordinals basket',
1275
+ },
1276
+ },
1277
+ required: ['id'],
1278
+ },
1279
+ },
1280
+ async execute(ctx, input) {
1281
+ try {
1282
+ if (!input.id)
1283
+ return { error: 'missing-id' };
1284
+ const loaded = await loadBasketOutputBeef(ctx.wallet, ORDINALS_BASKET, input.id);
1285
+ if ('error' in loaded)
1286
+ return loaded;
1287
+ const { output: listing, beef: inputBEEF } = loaded;
1288
+ const token = listedTransfer(listing);
1289
+ if (!token)
1290
+ return { error: 'not-a-token-listing' };
1291
+ if (!listing.customInstructions) {
1292
+ return { error: 'missing-custom-instructions' };
1293
+ }
1294
+ const outpoint = listing.outpoint;
1295
+ const newKeyID = outpoint;
1296
+ const cancelAddress = await deriveCancelAddressInternal(ctx, newKeyID);
1297
+ const outputs = [
1298
+ tokenReturnOutput({
1299
+ address: cancelAddress,
1300
+ token,
1301
+ keyID: newKeyID,
1302
+ protocolID: P1SAT_PROTOCOL,
1303
+ description: 'Cancelled token listing',
1304
+ }),
1305
+ ];
1306
+ if (isBsv21Transfer(token)) {
1307
+ if (!ctx.services?.bsv21)
1308
+ return { error: 'services-required' };
1309
+ const details = await ctx.services.bsv21.getTokenDetails(token.id);
1310
+ if (!details.status.is_active)
1311
+ return { error: 'token-not-active' };
1312
+ const feePerOutput = details.status.fee_per_output;
1313
+ const feeAddress = details.status.fee_address;
1314
+ if (typeof feePerOutput === 'number' &&
1315
+ feePerOutput > 0 &&
1316
+ feeAddress) {
1317
+ outputs.push({
1318
+ lockingScript: new P2PKH().lock(feeAddress).toHex(),
1319
+ satoshis: feePerOutput,
1320
+ outputDescription: 'Overlay processing fee',
1321
+ tags: ['fee:overlay'],
1322
+ });
1323
+ }
1324
+ }
1325
+ const inputId = readAssetIdTag(listing.tags);
1326
+ const args = await prepareP1SatArgs(ctx, {
1327
+ description: 'Cancel token listing',
1328
+ inputBEEF,
1329
+ ...(inputId && {
1330
+ labels: [buildInputAssetLabel(ORDINALS_BASKET, inputId)],
1331
+ }),
1332
+ inputs: [
1333
+ {
1334
+ outpoint,
1335
+ inputDescription: 'Listed token',
1336
+ unlockingScriptLength: ordLockCancelUnlockLength(inputBEEF, outpoint),
1337
+ },
1338
+ ],
1339
+ outputs,
1340
+ options: { randomizeOutputs: false },
1341
+ });
1342
+ return await executeTrackedAction(ctx.wallet, args, input.fundingProvider, inputBEEF, undefined, {
1343
+ spends: inputId
1344
+ ? [{ basket: ORDINALS_BASKET, id: inputId }]
1345
+ : [],
1346
+ usePermissionModule: input.usePermissionModule ??
1347
+ input.useOneSatModule ??
1348
+ input.useModule,
1349
+ permissionScheme: '1sat',
1350
+ });
1351
+ }
1352
+ catch (error) {
1353
+ console.error('[cancelTokenListing]', error);
1354
+ return {
1355
+ error: error instanceof Error ? error.message : 'unknown-error',
1356
+ };
1357
+ }
1358
+ },
1359
+ };
1257
1360
  // ============================================================================
1258
1361
  // Module exports
1259
1362
  // ============================================================================
@@ -1263,6 +1366,7 @@ export const tokensActions = [
1263
1366
  getBsv21Balances,
1264
1367
  sendBsv21,
1265
1368
  buyBsv21,
1369
+ cancelTokenListing,
1266
1370
  deployBsv21Mint,
1267
1371
  deployBsv21Auth,
1268
1372
  mintBsv21,