@1sat/actions 0.0.1

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 (53) hide show
  1. package/dist/balance/index.d.ts +41 -0
  2. package/dist/balance/index.d.ts.map +1 -0
  3. package/dist/balance/index.js +111 -0
  4. package/dist/balance/index.js.map +1 -0
  5. package/dist/constants.d.ts +2 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +2 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/index.d.ts +19 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +42 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/inscriptions/index.d.ts +26 -0
  14. package/dist/inscriptions/index.d.ts.map +1 -0
  15. package/dist/inscriptions/index.js +116 -0
  16. package/dist/inscriptions/index.js.map +1 -0
  17. package/dist/locks/index.d.ts +48 -0
  18. package/dist/locks/index.d.ts.map +1 -0
  19. package/dist/locks/index.js +296 -0
  20. package/dist/locks/index.js.map +1 -0
  21. package/dist/ordinals/index.d.ts +118 -0
  22. package/dist/ordinals/index.d.ts.map +1 -0
  23. package/dist/ordinals/index.js +850 -0
  24. package/dist/ordinals/index.js.map +1 -0
  25. package/dist/payments/index.d.ts +49 -0
  26. package/dist/payments/index.d.ts.map +1 -0
  27. package/dist/payments/index.js +194 -0
  28. package/dist/payments/index.js.map +1 -0
  29. package/dist/registry.d.ts +62 -0
  30. package/dist/registry.d.ts.map +1 -0
  31. package/dist/registry.js +75 -0
  32. package/dist/registry.js.map +1 -0
  33. package/dist/signing/index.d.ts +36 -0
  34. package/dist/signing/index.d.ts.map +1 -0
  35. package/dist/signing/index.js +82 -0
  36. package/dist/signing/index.js.map +1 -0
  37. package/dist/sweep/index.d.ts +38 -0
  38. package/dist/sweep/index.d.ts.map +1 -0
  39. package/dist/sweep/index.js +748 -0
  40. package/dist/sweep/index.js.map +1 -0
  41. package/dist/sweep/types.d.ts +79 -0
  42. package/dist/sweep/types.d.ts.map +1 -0
  43. package/dist/sweep/types.js +5 -0
  44. package/dist/sweep/types.js.map +1 -0
  45. package/dist/tokens/index.d.ts +88 -0
  46. package/dist/tokens/index.d.ts.map +1 -0
  47. package/dist/tokens/index.js +548 -0
  48. package/dist/tokens/index.js.map +1 -0
  49. package/dist/types.d.ts +72 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +15 -0
  52. package/dist/types.js.map +1 -0
  53. package/package.json +34 -0
@@ -0,0 +1,548 @@
1
+ /**
2
+ * Tokens Module
3
+ *
4
+ * Actions for managing BSV21 tokens.
5
+ */
6
+ import { BSV21, OrdLock } from '@bopen-io/templates';
7
+ import { BigNumber, LockingScript, OP, P2PKH, PublicKey, Transaction, TransactionSignature, UnlockingScript, Utils, } from '@bsv/sdk';
8
+ import { BSV21_BASKET, BSV21_PROTOCOL } from '../constants';
9
+ // ============================================================================
10
+ // Internal helpers
11
+ // ============================================================================
12
+ function buildSerializedOutput(satoshis, script) {
13
+ const writer = new Utils.Writer();
14
+ writer.writeUInt64LEBn(new BigNumber(satoshis));
15
+ writer.writeVarIntNum(script.length);
16
+ writer.write(script);
17
+ return writer.toArray();
18
+ }
19
+ async function buildPurchaseUnlockingScript(tx, inputIndex, sourceSatoshis, lockingScript) {
20
+ if (tx.outputs.length < 2) {
21
+ throw new Error('Malformed transaction: requires at least 2 outputs');
22
+ }
23
+ const script = new UnlockingScript().writeBin(buildSerializedOutput(tx.outputs[0].satoshis ?? 0, tx.outputs[0].lockingScript.toBinary()));
24
+ if (tx.outputs.length > 2) {
25
+ const writer = new Utils.Writer();
26
+ for (const output of tx.outputs.slice(2)) {
27
+ writer.write(buildSerializedOutput(output.satoshis ?? 0, output.lockingScript.toBinary()));
28
+ }
29
+ script.writeBin(writer.toArray());
30
+ }
31
+ else {
32
+ script.writeOpCode(OP.OP_0);
33
+ }
34
+ const input = tx.inputs[inputIndex];
35
+ const sourceTXID = input.sourceTXID ?? input.sourceTransaction?.id('hex');
36
+ if (!sourceTXID) {
37
+ throw new Error('sourceTXID is required');
38
+ }
39
+ const preimage = TransactionSignature.format({
40
+ sourceTXID,
41
+ sourceOutputIndex: input.sourceOutputIndex,
42
+ sourceSatoshis,
43
+ transactionVersion: tx.version,
44
+ otherInputs: [],
45
+ inputIndex,
46
+ outputs: tx.outputs,
47
+ inputSequence: input.sequence ?? 0xffffffff,
48
+ subscript: lockingScript,
49
+ lockTime: tx.lockTime,
50
+ scope: TransactionSignature.SIGHASH_ALL |
51
+ TransactionSignature.SIGHASH_ANYONECANPAY |
52
+ TransactionSignature.SIGHASH_FORKID,
53
+ });
54
+ return script.writeBin(preimage).writeOpCode(OP.OP_0);
55
+ }
56
+ async function listTokensInternal(ctx, limit = 10000) {
57
+ const result = await ctx.wallet.listOutputs({
58
+ basket: BSV21_BASKET,
59
+ includeTags: true,
60
+ limit,
61
+ });
62
+ return result.outputs;
63
+ }
64
+ /**
65
+ * List BSV21 token outputs from the wallet.
66
+ */
67
+ export const listTokens = {
68
+ meta: {
69
+ name: 'listTokens',
70
+ description: 'List BSV21 token outputs from the wallet',
71
+ category: 'tokens',
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ limit: {
76
+ type: 'integer',
77
+ description: 'Max number of tokens to return (default: 10000)',
78
+ },
79
+ },
80
+ },
81
+ },
82
+ async execute(ctx, input) {
83
+ return listTokensInternal(ctx, input.limit);
84
+ },
85
+ };
86
+ /**
87
+ * Get aggregated BSV21 token balances.
88
+ */
89
+ export const getBsv21Balances = {
90
+ meta: {
91
+ name: 'getBsv21Balances',
92
+ description: 'Get aggregated BSV21 token balances grouped by token ID',
93
+ category: 'tokens',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {},
97
+ },
98
+ },
99
+ async execute(ctx) {
100
+ const outputs = await listTokensInternal(ctx);
101
+ const balanceMap = new Map();
102
+ for (const o of outputs) {
103
+ const idTag = o.tags?.find((t) => t.startsWith('id:'));
104
+ const amtTag = o.tags?.find((t) => t.startsWith('amt:'))?.slice(4);
105
+ if (!idTag || !amtTag)
106
+ continue;
107
+ const tokenId = idTag.slice(3);
108
+ const amt = BigInt(amtTag);
109
+ const dec = Number.parseInt(o.tags?.find((t) => t.startsWith('dec:'))?.slice(4) || '0', 10);
110
+ const symTag = o.tags?.find((t) => t.startsWith('sym:'))?.slice(4);
111
+ const iconTag = o.tags?.find((t) => t.startsWith('icon:'))?.slice(5);
112
+ const existing = balanceMap.get(tokenId);
113
+ if (existing) {
114
+ existing.amt += amt;
115
+ }
116
+ else {
117
+ balanceMap.set(tokenId, {
118
+ id: tokenId,
119
+ amt,
120
+ sym: symTag,
121
+ icon: iconTag,
122
+ dec,
123
+ });
124
+ }
125
+ }
126
+ return Array.from(balanceMap.values()).map((b) => ({
127
+ p: 'bsv-20',
128
+ op: 'transfer',
129
+ dec: b.dec,
130
+ amt: b.amt.toString(),
131
+ id: b.id,
132
+ sym: b.sym,
133
+ icon: b.icon,
134
+ all: { confirmed: b.amt, pending: 0n },
135
+ listed: { confirmed: 0n, pending: 0n },
136
+ }));
137
+ },
138
+ };
139
+ /**
140
+ * Send BSV21 tokens to an address.
141
+ */
142
+ export const sendBsv21 = {
143
+ meta: {
144
+ name: 'sendBsv21',
145
+ description: 'Send BSV21 tokens to a counterparty, address, or paymail',
146
+ category: 'tokens',
147
+ inputSchema: {
148
+ type: 'object',
149
+ properties: {
150
+ tokenId: { type: 'string', description: 'Token ID (txid_vout format)' },
151
+ amount: {
152
+ type: 'string',
153
+ description: 'Amount to send (as string for bigint)',
154
+ },
155
+ counterparty: {
156
+ type: 'string',
157
+ description: 'Recipient identity public key (hex)',
158
+ },
159
+ address: { type: 'string', description: 'Recipient P2PKH address' },
160
+ paymail: { type: 'string', description: 'Recipient paymail address' },
161
+ },
162
+ required: ['tokenId', 'amount'],
163
+ },
164
+ },
165
+ async execute(ctx, input) {
166
+ try {
167
+ const { tokenId, counterparty, address, paymail, amount: rawAmount, } = input;
168
+ const amount = typeof rawAmount === 'string' ? BigInt(rawAmount) : rawAmount;
169
+ if (!counterparty && !address && !paymail) {
170
+ return { error: 'must-provide-counterparty-address-or-paymail' };
171
+ }
172
+ if (amount <= 0n) {
173
+ return { error: 'amount-must-be-positive' };
174
+ }
175
+ const parts = tokenId.split('_');
176
+ if (parts.length !== 2 ||
177
+ parts[0].length !== 64 ||
178
+ !/^\d+$/.test(parts[1])) {
179
+ return { error: 'invalid-token-id-format' };
180
+ }
181
+ if (!ctx.services) {
182
+ return { error: 'services-required' };
183
+ }
184
+ const tokenDetails = await ctx.services.bsv21.getTokenDetails(tokenId);
185
+ if (!tokenDetails.status.is_active) {
186
+ return { error: 'token-not-active' };
187
+ }
188
+ const { fee_address, fee_per_output } = tokenDetails.status;
189
+ const result = await ctx.wallet.listOutputs({
190
+ basket: BSV21_BASKET,
191
+ includeTags: true,
192
+ include: 'locking scripts',
193
+ limit: 10000,
194
+ });
195
+ const tokenUtxos = result.outputs.filter((o) => {
196
+ const idTag = o.tags?.find((t) => t.startsWith('id:'));
197
+ if (!idTag)
198
+ return false;
199
+ return idTag.slice(3) === tokenId;
200
+ });
201
+ // Batch-validate all candidate outpoints against the overlay
202
+ const validOutpoints = new Set();
203
+ let overlayValidated = false;
204
+ if (ctx.services?.bsv21) {
205
+ const candidateOutpoints = tokenUtxos.map((o) => o.outpoint);
206
+ try {
207
+ const validated = await ctx.services.bsv21.validateOutputs(tokenId, candidateOutpoints, { unspent: true });
208
+ overlayValidated = true;
209
+ for (const v of validated) {
210
+ validOutpoints.add(v.outpoint);
211
+ }
212
+ }
213
+ catch (e) {
214
+ console.error('[sendBsv21] overlay validation error:', e);
215
+ return { error: 'overlay-validation-failed' };
216
+ }
217
+ }
218
+ const selected = [];
219
+ let totalIn = 0n;
220
+ for (const utxo of tokenUtxos) {
221
+ if (totalIn >= amount)
222
+ break;
223
+ const amtTag = utxo.tags?.find((t) => t.startsWith('amt:'));
224
+ if (!amtTag)
225
+ continue;
226
+ const utxoAmount = BigInt(amtTag.slice(4));
227
+ // Skip UTXOs not confirmed in the overlay
228
+ if (overlayValidated && !validOutpoints.has(utxo.outpoint)) {
229
+ continue;
230
+ }
231
+ selected.push(utxo);
232
+ totalIn += utxoAmount;
233
+ }
234
+ if (totalIn < amount) {
235
+ return { error: 'insufficient-tokens' };
236
+ }
237
+ let recipientAddress;
238
+ if (counterparty) {
239
+ const { publicKey } = await ctx.wallet.getPublicKey({
240
+ protocolID: BSV21_PROTOCOL,
241
+ keyID: `${tokenId}-${Date.now()}`,
242
+ counterparty,
243
+ forSelf: false,
244
+ });
245
+ recipientAddress = PublicKey.fromString(publicKey).toAddress();
246
+ }
247
+ else if (paymail) {
248
+ return { error: 'paymail-not-yet-implemented' };
249
+ }
250
+ else if (address) {
251
+ recipientAddress = address;
252
+ }
253
+ else {
254
+ return { error: 'must-provide-counterparty-or-address' };
255
+ }
256
+ const outputs = [];
257
+ const p2pkh = new P2PKH();
258
+ const destinationLockingScript = p2pkh.lock(recipientAddress);
259
+ const transferScript = BSV21.transfer(tokenId, amount).lock(destinationLockingScript);
260
+ outputs.push({
261
+ lockingScript: transferScript.toHex(),
262
+ satoshis: 1,
263
+ outputDescription: `Send ${amount} tokens`,
264
+ });
265
+ const change = totalIn - amount;
266
+ let tokenOutputCount = 1;
267
+ if (change > 0n) {
268
+ tokenOutputCount = 2;
269
+ const changeKeyID = `${tokenId}-${Date.now()}`;
270
+ const { publicKey } = await ctx.wallet.getPublicKey({
271
+ protocolID: BSV21_PROTOCOL,
272
+ keyID: changeKeyID,
273
+ counterparty: 'self',
274
+ forSelf: true,
275
+ });
276
+ const changeAddress = PublicKey.fromString(publicKey).toAddress();
277
+ const changeLockingScript = p2pkh.lock(changeAddress);
278
+ const changeScript = BSV21.transfer(tokenId, change).lock(changeLockingScript);
279
+ outputs.push({
280
+ lockingScript: changeScript.toHex(),
281
+ satoshis: 1,
282
+ outputDescription: 'Token change',
283
+ basket: BSV21_BASKET,
284
+ tags: [
285
+ `id:${tokenId}`,
286
+ `amt:${change}`,
287
+ `dec:${tokenDetails.token.dec}`,
288
+ ...(tokenDetails.token.sym
289
+ ? [`sym:${tokenDetails.token.sym}`]
290
+ : []),
291
+ ...(tokenDetails.token.icon
292
+ ? [`icon:${tokenDetails.token.icon}`]
293
+ : []),
294
+ ],
295
+ customInstructions: JSON.stringify({
296
+ protocolID: BSV21_PROTOCOL,
297
+ keyID: changeKeyID,
298
+ }),
299
+ });
300
+ }
301
+ // Fee output to overlay fund address (per token output)
302
+ outputs.push({
303
+ lockingScript: p2pkh.lock(fee_address).toHex(),
304
+ satoshis: fee_per_output * tokenOutputCount,
305
+ outputDescription: 'Overlay processing fee',
306
+ tags: [],
307
+ });
308
+ const symbol = tokenDetails.token.sym || tokenId.slice(0, 8);
309
+ const createResult = await ctx.wallet.createAction({
310
+ description: `Send ${amount} ${symbol}`,
311
+ inputs: selected.map((o) => ({
312
+ outpoint: o.outpoint,
313
+ inputDescription: 'Token input',
314
+ })),
315
+ outputs,
316
+ options: { signAndProcess: false, randomizeOutputs: false },
317
+ });
318
+ if ('error' in createResult && createResult.error) {
319
+ return { error: String(createResult.error) };
320
+ }
321
+ if (!createResult.signableTransaction) {
322
+ return { error: 'no-signable-transaction' };
323
+ }
324
+ const signResult = await ctx.wallet.signAction({
325
+ reference: createResult.signableTransaction.reference,
326
+ spends: {},
327
+ options: { acceptDelayedBroadcast: false },
328
+ });
329
+ if ('error' in signResult) {
330
+ return { error: String(signResult.error) };
331
+ }
332
+ // Submit to overlay service for indexing
333
+ if (signResult.tx && ctx.services) {
334
+ try {
335
+ const overlayResult = await ctx.services.overlay.submitBsv21(signResult.tx, tokenId);
336
+ console.log('[sendBsv21] Overlay submission result:', overlayResult);
337
+ }
338
+ catch (overlayError) {
339
+ console.warn('[sendBsv21] Overlay submission failed:', overlayError);
340
+ }
341
+ }
342
+ return {
343
+ txid: signResult.txid,
344
+ rawtx: signResult.tx ? Utils.toHex(signResult.tx) : undefined,
345
+ };
346
+ }
347
+ catch (error) {
348
+ console.error('[sendBsv21]', error);
349
+ return {
350
+ error: error instanceof Error ? error.message : 'unknown-error',
351
+ };
352
+ }
353
+ },
354
+ };
355
+ /**
356
+ * Purchase BSV21 tokens from marketplace.
357
+ */
358
+ export const purchaseBsv21 = {
359
+ meta: {
360
+ name: 'purchaseBsv21',
361
+ description: 'Purchase BSV21 tokens from the marketplace',
362
+ category: 'tokens',
363
+ requiresServices: true,
364
+ inputSchema: {
365
+ type: 'object',
366
+ properties: {
367
+ tokenId: { type: 'string', description: 'Token ID (txid_vout format)' },
368
+ outpoint: {
369
+ type: 'string',
370
+ description: 'Outpoint of the listed token UTXO',
371
+ },
372
+ amount: {
373
+ type: 'string',
374
+ description: 'Amount of tokens in the listing (as string)',
375
+ },
376
+ marketplaceAddress: {
377
+ type: 'string',
378
+ description: 'Marketplace fee address',
379
+ },
380
+ marketplaceRate: {
381
+ type: 'number',
382
+ description: 'Marketplace fee rate (0-1)',
383
+ },
384
+ },
385
+ required: ['tokenId', 'outpoint', 'amount'],
386
+ },
387
+ },
388
+ async execute(ctx, input) {
389
+ try {
390
+ const { tokenId, outpoint, amount: rawAmount, marketplaceAddress, marketplaceRate, } = input;
391
+ const tokenAmount = typeof rawAmount === 'string' ? BigInt(rawAmount) : rawAmount;
392
+ if (!ctx.services) {
393
+ return { error: 'services-required-for-purchase' };
394
+ }
395
+ const parts = outpoint.split('_');
396
+ if (parts.length !== 2) {
397
+ return { error: 'invalid-outpoint-format' };
398
+ }
399
+ const [txid, voutStr] = parts;
400
+ const vout = Number.parseInt(voutStr, 10);
401
+ try {
402
+ await ctx.services.bsv21.validateOutput(tokenId, outpoint);
403
+ }
404
+ catch (e) {
405
+ console.error('[purchaseBsv21] overlay validation error:', e);
406
+ return { error: 'listing-not-found-in-overlay' };
407
+ }
408
+ const tokenDetails = await ctx.services.bsv21.getTokenDetails(tokenId);
409
+ const beef = await ctx.services.getBeefForTxid(txid);
410
+ const listingBeefTx = beef.findTxid(txid);
411
+ if (!listingBeefTx?.tx) {
412
+ return { error: 'listing-transaction-not-found' };
413
+ }
414
+ const listingOutput = listingBeefTx.tx.outputs[vout];
415
+ if (!listingOutput) {
416
+ return { error: 'listing-output-not-found' };
417
+ }
418
+ const ordLockData = OrdLock.decode(listingOutput.lockingScript);
419
+ if (!ordLockData) {
420
+ return { error: 'not-an-ordlock-listing' };
421
+ }
422
+ const bsv21KeyID = `${tokenId}-${outpoint}`;
423
+ const { publicKey } = await ctx.wallet.getPublicKey({
424
+ protocolID: BSV21_PROTOCOL,
425
+ keyID: bsv21KeyID,
426
+ counterparty: 'self',
427
+ forSelf: true,
428
+ });
429
+ const ourTokenAddress = PublicKey.fromString(publicKey).toAddress();
430
+ const outputs = [];
431
+ const p2pkh = new P2PKH();
432
+ const buyerLockingScript = p2pkh.lock(ourTokenAddress);
433
+ const transferScript = BSV21.transfer(tokenId, tokenAmount).lock(buyerLockingScript);
434
+ outputs.push({
435
+ lockingScript: transferScript.toHex(),
436
+ satoshis: 1,
437
+ outputDescription: 'Purchased tokens',
438
+ basket: BSV21_BASKET,
439
+ tags: [
440
+ `id:${tokenId}`,
441
+ `amt:${tokenAmount}`,
442
+ `dec:${tokenDetails.token.dec}`,
443
+ ...(tokenDetails.token.sym ? [`sym:${tokenDetails.token.sym}`] : []),
444
+ ...(tokenDetails.token.icon
445
+ ? [`icon:${tokenDetails.token.icon}`]
446
+ : []),
447
+ ],
448
+ customInstructions: JSON.stringify({
449
+ protocolID: BSV21_PROTOCOL,
450
+ keyID: bsv21KeyID,
451
+ }),
452
+ });
453
+ const payoutReader = new Utils.Reader(ordLockData.payout);
454
+ const payoutSatoshis = payoutReader.readUInt64LEBn().toNumber();
455
+ const payoutScriptLen = payoutReader.readVarIntNum();
456
+ const payoutScriptBin = payoutReader.read(payoutScriptLen);
457
+ const payoutLockingScript = LockingScript.fromBinary(payoutScriptBin);
458
+ outputs.push({
459
+ lockingScript: payoutLockingScript.toHex(),
460
+ satoshis: payoutSatoshis,
461
+ outputDescription: 'Payment to seller',
462
+ tags: [],
463
+ });
464
+ if (marketplaceAddress && marketplaceRate && marketplaceRate > 0) {
465
+ const marketFee = Math.ceil(payoutSatoshis * marketplaceRate);
466
+ if (marketFee > 0) {
467
+ outputs.push({
468
+ lockingScript: p2pkh.lock(marketplaceAddress).toHex(),
469
+ satoshis: marketFee,
470
+ outputDescription: 'Marketplace fee',
471
+ tags: [],
472
+ });
473
+ }
474
+ }
475
+ // Fee output to overlay fund address
476
+ if (tokenDetails.status.is_active) {
477
+ outputs.push({
478
+ lockingScript: p2pkh.lock(tokenDetails.status.fee_address).toHex(),
479
+ satoshis: tokenDetails.status.fee_per_output,
480
+ outputDescription: 'Overlay processing fee',
481
+ tags: [],
482
+ });
483
+ }
484
+ const createResult = await ctx.wallet.createAction({
485
+ description: `Purchase ${tokenAmount} tokens for ${payoutSatoshis} sats`,
486
+ inputBEEF: beef.toBinary(),
487
+ inputs: [
488
+ {
489
+ outpoint,
490
+ inputDescription: 'Listed token',
491
+ unlockingScriptLength: 500,
492
+ },
493
+ ],
494
+ outputs,
495
+ options: { signAndProcess: false, randomizeOutputs: false },
496
+ });
497
+ if ('error' in createResult && createResult.error) {
498
+ return { error: String(createResult.error) };
499
+ }
500
+ if (!createResult.signableTransaction) {
501
+ return { error: 'no-signable-transaction' };
502
+ }
503
+ const tx = Transaction.fromBEEF(createResult.signableTransaction.tx);
504
+ const unlockingScript = await buildPurchaseUnlockingScript(tx, 0, listingOutput.satoshis ?? 1, listingOutput.lockingScript);
505
+ const signResult = await ctx.wallet.signAction({
506
+ reference: createResult.signableTransaction.reference,
507
+ spends: {
508
+ 0: { unlockingScript: unlockingScript.toHex() },
509
+ },
510
+ options: { acceptDelayedBroadcast: false },
511
+ });
512
+ if ('error' in signResult) {
513
+ return { error: String(signResult.error) };
514
+ }
515
+ // Submit to overlay service for indexing
516
+ if (signResult.tx && ctx.services) {
517
+ try {
518
+ const overlayResult = await ctx.services.overlay.submitBsv21(signResult.tx, tokenId);
519
+ console.log('[purchaseBsv21] Overlay submission result:', overlayResult);
520
+ }
521
+ catch (overlayError) {
522
+ console.warn('[purchaseBsv21] Overlay submission failed:', overlayError);
523
+ }
524
+ }
525
+ return {
526
+ txid: signResult.txid,
527
+ rawtx: signResult.tx ? Utils.toHex(signResult.tx) : undefined,
528
+ };
529
+ }
530
+ catch (error) {
531
+ console.error('[purchaseBsv21]', error);
532
+ return {
533
+ error: error instanceof Error ? error.message : 'unknown-error',
534
+ };
535
+ }
536
+ },
537
+ };
538
+ // ============================================================================
539
+ // Module exports
540
+ // ============================================================================
541
+ /** All token actions for registry */
542
+ export const tokensActions = [
543
+ listTokens,
544
+ getBsv21Balances,
545
+ sendBsv21,
546
+ purchaseBsv21,
547
+ ];
548
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Core types for the action pattern.
3
+ */
4
+ import type { OneSatServices } from '@1sat/client';
5
+ import type { WalletInterface } from '@bsv/sdk';
6
+ /**
7
+ * Context passed to all actions.
8
+ * Contains the wallet and optional services for backend operations.
9
+ */
10
+ export interface OneSatContext {
11
+ /** BRC-100 compatible wallet interface */
12
+ wallet: WalletInterface;
13
+ /** Optional services for operations requiring backend (purchases, lookups) */
14
+ services?: OneSatServices;
15
+ /** Network chain */
16
+ chain: 'main' | 'test';
17
+ /** Optional WhatsOnChain API key */
18
+ wocApiKey?: string;
19
+ }
20
+ /**
21
+ * JSON Schema property definition for action input schemas.
22
+ */
23
+ export interface JsonSchemaProperty {
24
+ type: 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array';
25
+ description?: string;
26
+ enum?: string[];
27
+ default?: unknown;
28
+ items?: JsonSchemaProperty;
29
+ properties?: Record<string, JsonSchemaProperty>;
30
+ required?: string[];
31
+ }
32
+ /**
33
+ * Action category for grouping related operations.
34
+ */
35
+ export type ActionCategory = 'balance' | 'payments' | 'ordinals' | 'tokens' | 'inscriptions' | 'locks' | 'signing' | 'sweep';
36
+ /**
37
+ * Metadata describing an action for AI agents and tooling.
38
+ */
39
+ export interface ActionMetadata<_TInput = unknown> {
40
+ /** Unique action name */
41
+ name: string;
42
+ /** Human-readable description of what the action does */
43
+ description: string;
44
+ /** Category for grouping */
45
+ category: ActionCategory;
46
+ /** JSON Schema for the input parameters (MCP-compatible) */
47
+ inputSchema: {
48
+ type: 'object';
49
+ properties: Record<string, JsonSchemaProperty>;
50
+ required?: string[];
51
+ };
52
+ /** Whether this action requires OneSatServices to be provided in context */
53
+ requiresServices?: boolean;
54
+ }
55
+ /**
56
+ * An action is a self-describing operation that can be executed with a context.
57
+ */
58
+ export interface Action<TInput = unknown, TOutput = unknown> {
59
+ /** Metadata describing the action */
60
+ meta: ActionMetadata<TInput>;
61
+ /** Execute the action with context and input */
62
+ execute: (ctx: OneSatContext, input: TInput) => Promise<TOutput>;
63
+ }
64
+ /**
65
+ * Helper to create a context object from a wallet and options.
66
+ */
67
+ export declare function createContext(wallet: WalletInterface, options?: {
68
+ services?: OneSatServices;
69
+ chain?: 'main' | 'test';
70
+ wocApiKey?: string;
71
+ }): OneSatContext;
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,0CAA0C;IAC1C,MAAM,EAAE,eAAe,CAAA;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,oBAAoB;IACpB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,cAAc,GACd,OAAO,GACP,SAAS,GACT,OAAO,CAAA;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,OAAO;IAChD,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,QAAQ,EAAE,cAAc,CAAA;IACxB,4DAA4D;IAC5D,WAAW,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QAC9C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC1D,qCAAqC;IACrC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,gDAAgD;IAChD,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAChE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACT,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,GACC,aAAa,CAOf"}
package/dist/types.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Core types for the action pattern.
3
+ */
4
+ /**
5
+ * Helper to create a context object from a wallet and options.
6
+ */
7
+ export function createContext(wallet, options) {
8
+ return {
9
+ wallet,
10
+ services: options?.services,
11
+ chain: options?.chain ?? 'main',
12
+ wocApiKey: options?.wocApiKey,
13
+ };
14
+ }
15
+ //# sourceMappingURL=types.js.map