@aibtc/mcp-server 1.48.0 → 1.49.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 (45) hide show
  1. package/dist/services/lightning/provider.d.ts +68 -0
  2. package/dist/services/lightning/provider.d.ts.map +1 -0
  3. package/dist/services/lightning/provider.js +8 -0
  4. package/dist/services/lightning/provider.js.map +1 -0
  5. package/dist/services/lightning/spark-provider.d.ts +41 -0
  6. package/dist/services/lightning/spark-provider.d.ts.map +1 -0
  7. package/dist/services/lightning/spark-provider.js +165 -0
  8. package/dist/services/lightning/spark-provider.js.map +1 -0
  9. package/dist/services/lightning-manager.d.ts +96 -0
  10. package/dist/services/lightning-manager.d.ts.map +1 -0
  11. package/dist/services/lightning-manager.js +226 -0
  12. package/dist/services/lightning-manager.js.map +1 -0
  13. package/dist/services/sbtc-deposit.service.d.ts.map +1 -1
  14. package/dist/services/sbtc-deposit.service.js +7 -13
  15. package/dist/services/sbtc-deposit.service.js.map +1 -1
  16. package/dist/services/unisat-indexer.d.ts +5 -0
  17. package/dist/services/unisat-indexer.d.ts.map +1 -1
  18. package/dist/services/unisat-indexer.js +8 -0
  19. package/dist/services/unisat-indexer.js.map +1 -1
  20. package/dist/services/x402.service.d.ts.map +1 -1
  21. package/dist/services/x402.service.js +228 -0
  22. package/dist/services/x402.service.js.map +1 -1
  23. package/dist/tools/bitcoin.tools.d.ts.map +1 -1
  24. package/dist/tools/bitcoin.tools.js +26 -46
  25. package/dist/tools/bitcoin.tools.js.map +1 -1
  26. package/dist/tools/index.d.ts.map +1 -1
  27. package/dist/tools/index.js +3 -0
  28. package/dist/tools/index.js.map +1 -1
  29. package/dist/tools/lightning.tools.d.ts +11 -0
  30. package/dist/tools/lightning.tools.d.ts.map +1 -0
  31. package/dist/tools/lightning.tools.js +333 -0
  32. package/dist/tools/lightning.tools.js.map +1 -0
  33. package/dist/tools/styx.tools.d.ts.map +1 -1
  34. package/dist/tools/styx.tools.js +28 -30
  35. package/dist/tools/styx.tools.js.map +1 -1
  36. package/dist/utils/l402-protocol.d.ts +64 -0
  37. package/dist/utils/l402-protocol.d.ts.map +1 -0
  38. package/dist/utils/l402-protocol.js +114 -0
  39. package/dist/utils/l402-protocol.js.map +1 -0
  40. package/package.json +3 -1
  41. package/skill/SKILL.md +1 -1
  42. package/dist/services/ordinal-indexer.d.ts +0 -128
  43. package/dist/services/ordinal-indexer.d.ts.map +0 -1
  44. package/dist/services/ordinal-indexer.js +0 -126
  45. package/dist/services/ordinal-indexer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"styx.tools.d.ts","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0bzD"}
1
+ {"version":3,"file":"styx.tools.d.ts","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwbzD"}
@@ -23,7 +23,7 @@ import { NETWORK } from "../config/networks.js";
23
23
  import { createJsonResponse, createErrorResponse } from "../utils/index.js";
24
24
  import { getWalletManager } from "../services/wallet-manager.js";
25
25
  import { MempoolApi, getMempoolTxUrl } from "../services/mempool-api.js";
26
- import { OrdinalIndexer } from "../services/ordinal-indexer.js";
26
+ import { UnisatIndexer } from "../services/unisat-indexer.js";
27
27
  import { getBtcNetwork } from "../transactions/bitcoin-builder.js";
28
28
  const FEE_PRIORITIES = ["low", "medium", "high"];
29
29
  export function registerStyxTools(server) {
@@ -187,39 +187,37 @@ export function registerStyxTools(server) {
187
187
  walletProvider: null,
188
188
  poolId: pool,
189
189
  });
190
- // Step 3: Filter ordinal UTXOs on mainnet to protect inscriptions
190
+ // Step 3: Filter ordinal/rune UTXOs to protect inscriptions and runes
191
191
  let safeUtxos = prepared.utxos;
192
192
  let ordinalsFiltered = false;
193
- if (NETWORK === "mainnet") {
194
- const indexer = new OrdinalIndexer(NETWORK);
195
- const cardinalUtxos = await indexer.getCardinalUtxos(resolvedBtcSender);
196
- const cardinalSet = new Set(cardinalUtxos.map((u) => `${u.txid}:${u.vout}`));
197
- const filtered = prepared.utxos.filter((u) => cardinalSet.has(`${u.txid}:${u.vout}`));
198
- if (filtered.length < prepared.utxos.length) {
199
- const removed = prepared.utxos.length - filtered.length;
200
- if (filtered.length === 0) {
201
- throw new Error(`All ${removed} UTXO(s) selected by Styx contain inscriptions. ` +
202
- "Cannot deposit without risking inscription loss.");
203
- }
204
- // Recompute change after removing ordinal inputs
205
- const originalTotal = prepared.utxos.reduce((sum, u) => sum + u.value, 0);
206
- const filteredTotal = filtered.reduce((sum, u) => sum + u.value, 0);
207
- const originalFee = originalTotal - prepared.amountInSatoshis - prepared.changeAmount;
208
- if (originalFee < 0) {
209
- throw new Error("Invalid Styx transaction preparation: negative implied fee.");
210
- }
211
- const requiredTotal = prepared.amountInSatoshis + originalFee;
212
- if (filteredTotal < requiredTotal) {
213
- throw new Error(`After removing ${removed} ordinal UTXO(s), remaining cardinal balance ` +
214
- `(${filteredTotal} sats) is insufficient for deposit (${amountSats} sats) ` +
215
- `and fee (${originalFee} sats).`);
216
- }
217
- prepared.changeAmount =
218
- filteredTotal - prepared.amountInSatoshis - originalFee;
219
- ordinalsFiltered = true;
193
+ const indexer = new UnisatIndexer(NETWORK);
194
+ const cardinalUtxos = await indexer.getCardinalUtxos(resolvedBtcSender);
195
+ const cardinalSet = new Set(cardinalUtxos.map((u) => `${u.txid}:${u.vout}`));
196
+ const filtered = prepared.utxos.filter((u) => cardinalSet.has(`${u.txid}:${u.vout}`));
197
+ if (filtered.length < prepared.utxos.length) {
198
+ const removed = prepared.utxos.length - filtered.length;
199
+ if (filtered.length === 0) {
200
+ throw new Error(`All ${removed} UTXO(s) selected by Styx carry inscriptions or runes. ` +
201
+ "Cannot deposit without risking inscription or rune loss.");
220
202
  }
221
- safeUtxos = filtered;
203
+ // Recompute change after removing ordinal/rune inputs
204
+ const originalTotal = prepared.utxos.reduce((sum, u) => sum + u.value, 0);
205
+ const filteredTotal = filtered.reduce((sum, u) => sum + u.value, 0);
206
+ const originalFee = originalTotal - prepared.amountInSatoshis - prepared.changeAmount;
207
+ if (originalFee < 0) {
208
+ throw new Error("Invalid Styx transaction preparation: negative implied fee.");
209
+ }
210
+ const requiredTotal = prepared.amountInSatoshis + originalFee;
211
+ if (filteredTotal < requiredTotal) {
212
+ throw new Error(`After removing ${removed} inscription/rune UTXO(s), remaining cardinal balance ` +
213
+ `(${filteredTotal} sats) is insufficient for deposit (${amountSats} sats) ` +
214
+ `and fee (${originalFee} sats).`);
215
+ }
216
+ prepared.changeAmount =
217
+ filteredTotal - prepared.amountInSatoshis - originalFee;
218
+ ordinalsFiltered = true;
222
219
  }
220
+ safeUtxos = filtered;
223
221
  // Step 4: Build PSBT locally with @scure/btc-signer
224
222
  const btcNetwork = getBtcNetwork(NETWORK);
225
223
  const tx = new btc.Transaction({ allowUnknownOutputs: true });
@@ -1 +1 @@
1
- {"version":3,"file":"styx.tools.js","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styx.tools.js","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * L402 Protocol Helpers
3
+ *
4
+ * Parses L402 challenge headers of the form:
5
+ * WWW-Authenticate: L402 macaroon="...", invoice="..."
6
+ *
7
+ * Builds the Authorization header used to retry the request after the
8
+ * Lightning invoice has been paid:
9
+ * Authorization: L402 <macaroon>:<preimage>
10
+ *
11
+ * References:
12
+ * - L402 (formerly LSAT) protocol: https://docs.lightning.engineering/the-lightning-network/l402
13
+ */
14
+ /**
15
+ * Parsed fields from an L402 challenge header.
16
+ */
17
+ export interface L402Challenge {
18
+ macaroon: string;
19
+ invoice: string;
20
+ }
21
+ /**
22
+ * Parse a `WWW-Authenticate: L402 macaroon="...", invoice="..."` header.
23
+ *
24
+ * Tolerates:
25
+ * - case-insensitive scheme ("L402" or "l402"; legacy "LSAT" aliased)
26
+ * - whitespace between key/value pairs
27
+ * - either single or double quotes around the values
28
+ * - key order (macaroon/invoice swapped)
29
+ *
30
+ * Returns null when the header doesn't match the L402 scheme or either field
31
+ * is missing. Callers should treat null as "not an L402 challenge".
32
+ */
33
+ export declare function parseL402Challenge(header: string | null | undefined): L402Challenge | null;
34
+ /**
35
+ * Build the L402 Authorization header: `L402 <macaroon>:<preimage>`.
36
+ */
37
+ export declare function buildL402AuthHeader(macaroon: string, preimage: string): string;
38
+ interface CachedMacaroon {
39
+ macaroon: string;
40
+ preimage: string;
41
+ cachedAt: number;
42
+ }
43
+ /**
44
+ * Build the canonical cache key for a request.
45
+ */
46
+ export declare function l402CacheKey(method: string, url: string): string;
47
+ /**
48
+ * Look up a cached macaroon+preimage pair. Returns null on miss.
49
+ */
50
+ export declare function getCachedL402Auth(method: string, url: string): CachedMacaroon | null;
51
+ /**
52
+ * Store the macaroon+preimage pair for future reuse.
53
+ */
54
+ export declare function cacheL402Auth(method: string, url: string, macaroon: string, preimage: string): void;
55
+ /**
56
+ * Drop a cached entry (e.g. after the server returned 401 despite a cache hit).
57
+ */
58
+ export declare function invalidateL402Auth(method: string, url: string): void;
59
+ /**
60
+ * Testing helper: clear the whole cache.
61
+ */
62
+ export declare function clearL402Cache(): void;
63
+ export {};
64
+ //# sourceMappingURL=l402-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l402-protocol.d.ts","sourceRoot":"","sources":["../../src/utils/l402-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,aAAa,GAAG,IAAI,CAetB;AAuCD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAQD,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,cAAc,GAAG,IAAI,CAEvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * L402 Protocol Helpers
3
+ *
4
+ * Parses L402 challenge headers of the form:
5
+ * WWW-Authenticate: L402 macaroon="...", invoice="..."
6
+ *
7
+ * Builds the Authorization header used to retry the request after the
8
+ * Lightning invoice has been paid:
9
+ * Authorization: L402 <macaroon>:<preimage>
10
+ *
11
+ * References:
12
+ * - L402 (formerly LSAT) protocol: https://docs.lightning.engineering/the-lightning-network/l402
13
+ */
14
+ /**
15
+ * Parse a `WWW-Authenticate: L402 macaroon="...", invoice="..."` header.
16
+ *
17
+ * Tolerates:
18
+ * - case-insensitive scheme ("L402" or "l402"; legacy "LSAT" aliased)
19
+ * - whitespace between key/value pairs
20
+ * - either single or double quotes around the values
21
+ * - key order (macaroon/invoice swapped)
22
+ *
23
+ * Returns null when the header doesn't match the L402 scheme or either field
24
+ * is missing. Callers should treat null as "not an L402 challenge".
25
+ */
26
+ export function parseL402Challenge(header) {
27
+ if (!header)
28
+ return null;
29
+ const trimmed = header.trim();
30
+ // Accept both "L402 ..." and legacy "LSAT ..." schemes.
31
+ const schemeMatch = /^(L402|LSAT)\s+(.+)$/i.exec(trimmed);
32
+ if (!schemeMatch)
33
+ return null;
34
+ const body = schemeMatch[2];
35
+ const macaroon = extractParam(body, "macaroon");
36
+ const invoice = extractParam(body, "invoice");
37
+ if (!macaroon || !invoice)
38
+ return null;
39
+ return { macaroon, invoice };
40
+ }
41
+ /**
42
+ * Escape regex special characters so a caller-provided key can be safely
43
+ * interpolated into a RegExp. Keeps the helper defensive even though today's
44
+ * callers only pass hardcoded literals.
45
+ */
46
+ function escapeRegExp(s) {
47
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
48
+ }
49
+ /**
50
+ * Extract a quoted or unquoted param value from an RFC-7235-style header body.
51
+ *
52
+ * Supports double-quoted, single-quoted, and unquoted values to match the
53
+ * docstring claim and tolerate well-meaning servers that emit single quotes.
54
+ * RFC 7235 only mandates double quotes, but real-world implementations are
55
+ * forgiving here.
56
+ */
57
+ function extractParam(body, key) {
58
+ const escapedKey = escapeRegExp(key);
59
+ // Double-quoted value: key="..."
60
+ const doubleQuoted = new RegExp(`${escapedKey}\\s*=\\s*"([^"]+)"`, "i").exec(body);
61
+ if (doubleQuoted)
62
+ return doubleQuoted[1];
63
+ // Single-quoted value: key='...'
64
+ const singleQuoted = new RegExp(`${escapedKey}\\s*=\\s*'([^']+)'`, "i").exec(body);
65
+ if (singleQuoted)
66
+ return singleQuoted[1];
67
+ // Unquoted value: key=value[,\s]
68
+ const unquoted = new RegExp(`${escapedKey}\\s*=\\s*([^,\\s]+)`, "i").exec(body);
69
+ if (unquoted)
70
+ return unquoted[1];
71
+ return null;
72
+ }
73
+ /**
74
+ * Build the L402 Authorization header: `L402 <macaroon>:<preimage>`.
75
+ */
76
+ export function buildL402AuthHeader(macaroon, preimage) {
77
+ return `L402 ${macaroon}:${preimage}`;
78
+ }
79
+ const macaroonCache = new Map();
80
+ /**
81
+ * Build the canonical cache key for a request.
82
+ */
83
+ export function l402CacheKey(method, url) {
84
+ return `${method.toUpperCase()}:${url}`;
85
+ }
86
+ /**
87
+ * Look up a cached macaroon+preimage pair. Returns null on miss.
88
+ */
89
+ export function getCachedL402Auth(method, url) {
90
+ return macaroonCache.get(l402CacheKey(method, url)) ?? null;
91
+ }
92
+ /**
93
+ * Store the macaroon+preimage pair for future reuse.
94
+ */
95
+ export function cacheL402Auth(method, url, macaroon, preimage) {
96
+ macaroonCache.set(l402CacheKey(method, url), {
97
+ macaroon,
98
+ preimage,
99
+ cachedAt: Date.now(),
100
+ });
101
+ }
102
+ /**
103
+ * Drop a cached entry (e.g. after the server returned 401 despite a cache hit).
104
+ */
105
+ export function invalidateL402Auth(method, url) {
106
+ macaroonCache.delete(l402CacheKey(method, url));
107
+ }
108
+ /**
109
+ * Testing helper: clear the whole cache.
110
+ */
111
+ export function clearL402Cache() {
112
+ macaroonCache.clear();
113
+ }
114
+ //# sourceMappingURL=l402-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l402-protocol.js","sourceRoot":"","sources":["../../src/utils/l402-protocol.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aibtc/mcp-server",
3
- "version": "1.48.0",
3
+ "version": "1.49.1",
4
4
  "description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
5
5
  "mcpName": "io.github.aibtcdev/mcp-server",
6
6
  "type": "module",
@@ -45,6 +45,7 @@
45
45
  "dependencies": {
46
46
  "@aibtc/tx-schemas": "^0.7.0",
47
47
  "@bitflowlabs/core-sdk": "^3.0.0",
48
+ "@buildonspark/spark-sdk": "^0.7.14",
48
49
  "@faktoryfun/styx-sdk": "^1.3.5",
49
50
  "@modelcontextprotocol/sdk": "^1.27.1",
50
51
  "@noble/curves": "^2.0.1",
@@ -61,6 +62,7 @@
61
62
  "alex-sdk": "^3.2.1",
62
63
  "axios": "^1.15.0",
63
64
  "dotenv": "^17.3.1",
65
+ "light-bolt11-decoder": "^3.2.0",
64
66
  "micro-ordinals": "^0.3.0",
65
67
  "nostr-tools": "^2.23.3",
66
68
  "sbtc": "^0.3.2",
package/skill/SKILL.md CHANGED
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
4
4
  license: MIT
5
5
  metadata:
6
6
  author: aibtcdev
7
- version: 1.48.0 # x-release-please-version
7
+ version: 1.49.1 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---
@@ -1,128 +0,0 @@
1
- /**
2
- * Ordinal Indexer Service
3
- *
4
- * Combines Hiro Ordinals API with mempool.space to classify UTXOs:
5
- * - Cardinal: Safe to spend (no inscriptions)
6
- * - Ordinal: Contains inscriptions (must not spend accidentally)
7
- *
8
- * Uses free APIs:
9
- * - Hiro Ordinals API: https://api.hiro.so/ordinals/v1/inscriptions?address={address}
10
- * - mempool.space API: via MempoolApi service
11
- */
12
- import type { Network } from "../config/networks.js";
13
- import type { UTXO } from "./mempool-api.js";
14
- /**
15
- * Inscription data from Hiro Ordinals API
16
- */
17
- export interface Inscription {
18
- /**
19
- * Inscription ID (txid + inscription number)
20
- */
21
- id: string;
22
- /**
23
- * Inscription number (global ordinal)
24
- */
25
- number: number;
26
- /**
27
- * Content type (e.g., "text/plain", "image/png")
28
- */
29
- content_type: string;
30
- /**
31
- * Content length in bytes
32
- */
33
- content_length: number;
34
- /**
35
- * Genesis transaction ID
36
- */
37
- genesis_tx_id: string;
38
- /**
39
- * Genesis block height
40
- */
41
- genesis_block_height: number;
42
- /**
43
- * Genesis block hash
44
- */
45
- genesis_block_hash: string;
46
- /**
47
- * Genesis timestamp
48
- */
49
- genesis_timestamp: number;
50
- /**
51
- * Location of the inscription (txid:vout:offset)
52
- */
53
- location: string;
54
- /**
55
- * Output reference (txid:vout) - this is what we use to match UTXOs
56
- */
57
- output: string;
58
- /**
59
- * Current owner address
60
- */
61
- address: string;
62
- /**
63
- * Offset within the output
64
- */
65
- offset: string;
66
- }
67
- /**
68
- * Classified UTXOs
69
- */
70
- export interface ClassifiedUtxos {
71
- /**
72
- * Cardinal UTXOs - safe to spend (no inscriptions)
73
- */
74
- cardinal: UTXO[];
75
- /**
76
- * Ordinal UTXOs - contain inscriptions (do not spend)
77
- */
78
- ordinal: UTXO[];
79
- }
80
- /**
81
- * Ordinal Indexer Service
82
- *
83
- * Note: Hiro Ordinals API only supports mainnet. On testnet, all UTXOs are
84
- * treated as cardinal (safe to spend) since we cannot index inscriptions.
85
- */
86
- export declare class OrdinalIndexer {
87
- private readonly network;
88
- private readonly mempoolApi;
89
- private readonly isMainnet;
90
- constructor(network: Network);
91
- /**
92
- * Get all inscriptions for a Bitcoin address
93
- *
94
- * @param address - Bitcoin address (bc1... for mainnet)
95
- * @returns Array of inscriptions with their output references (empty on testnet)
96
- * @throws Error if API request fails
97
- */
98
- getInscriptionsForAddress(address: string): Promise<Inscription[]>;
99
- /**
100
- * Classify UTXOs into cardinal (safe to spend) and ordinal (contains inscriptions)
101
- *
102
- * @param address - Bitcoin address
103
- * @returns Classified UTXOs
104
- * @throws Error if API requests fail
105
- */
106
- classifyUtxos(address: string): Promise<ClassifiedUtxos>;
107
- /**
108
- * Get cardinal UTXOs (safe to spend - no inscriptions)
109
- *
110
- * @param address - Bitcoin address
111
- * @returns Cardinal UTXOs only
112
- * @throws Error if API requests fail
113
- */
114
- getCardinalUtxos(address: string): Promise<UTXO[]>;
115
- /**
116
- * Get ordinal UTXOs (contain inscriptions - do not spend)
117
- *
118
- * @param address - Bitcoin address
119
- * @returns Ordinal UTXOs only
120
- * @throws Error if API requests fail
121
- */
122
- getOrdinalUtxos(address: string): Promise<UTXO[]>;
123
- }
124
- /**
125
- * Create an ordinal indexer for the given network
126
- */
127
- export declare function createOrdinalIndexer(network: Network): OrdinalIndexer;
128
- //# sourceMappingURL=ordinal-indexer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ordinal-indexer.d.ts","sourceRoot":"","sources":["../../src/services/ordinal-indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,IAAI,EAAE,CAAC;CACjB;AAID;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAExB,OAAO,EAAE,OAAO;IAM5B;;;;;;OAMG;IACG,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8CxE;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6B9D;;;;;;OAMG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKxD;;;;;;OAMG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAKxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAErE"}
@@ -1,126 +0,0 @@
1
- /**
2
- * Ordinal Indexer Service
3
- *
4
- * Combines Hiro Ordinals API with mempool.space to classify UTXOs:
5
- * - Cardinal: Safe to spend (no inscriptions)
6
- * - Ordinal: Contains inscriptions (must not spend accidentally)
7
- *
8
- * Uses free APIs:
9
- * - Hiro Ordinals API: https://api.hiro.so/ordinals/v1/inscriptions?address={address}
10
- * - mempool.space API: via MempoolApi service
11
- */
12
- import { MempoolApi } from "./mempool-api.js";
13
- import { HiroApiRateLimitError } from "./hiro-api.js";
14
- const HIRO_ORDINALS_API_URL = "https://api.hiro.so/ordinals/v1";
15
- /**
16
- * Ordinal Indexer Service
17
- *
18
- * Note: Hiro Ordinals API only supports mainnet. On testnet, all UTXOs are
19
- * treated as cardinal (safe to spend) since we cannot index inscriptions.
20
- */
21
- export class OrdinalIndexer {
22
- network;
23
- mempoolApi;
24
- isMainnet;
25
- constructor(network) {
26
- this.network = network;
27
- this.mempoolApi = new MempoolApi(network);
28
- this.isMainnet = network === "mainnet";
29
- }
30
- /**
31
- * Get all inscriptions for a Bitcoin address
32
- *
33
- * @param address - Bitcoin address (bc1... for mainnet)
34
- * @returns Array of inscriptions with their output references (empty on testnet)
35
- * @throws Error if API request fails
36
- */
37
- async getInscriptionsForAddress(address) {
38
- // Testnet: return empty (Hiro API doesn't index testnet inscriptions)
39
- if (!this.isMainnet) {
40
- return [];
41
- }
42
- const allInscriptions = [];
43
- let offset = 0;
44
- const limit = 60; // Hiro API default/max per page
45
- // Fetch all pages
46
- while (true) {
47
- const url = `${HIRO_ORDINALS_API_URL}/inscriptions?address=${address}&limit=${limit}&offset=${offset}`;
48
- const response = await fetch(url);
49
- if (!response.ok) {
50
- if (response.status === 429) {
51
- const retryAfter = response.headers.get("Retry-After");
52
- const retryAfterSeconds = retryAfter && !isNaN(parseInt(retryAfter, 10)) ? parseInt(retryAfter, 10) : 60;
53
- throw new HiroApiRateLimitError(`Hiro Ordinals API rate limit exceeded. Retry after ${retryAfterSeconds}s`, retryAfterSeconds);
54
- }
55
- const errorText = await response.text().catch(() => "Unknown error");
56
- throw new Error(`Failed to fetch inscriptions from Hiro API: ${response.status} ${response.statusText} - ${errorText}`);
57
- }
58
- const data = (await response.json());
59
- allInscriptions.push(...data.results);
60
- // Check if we've fetched all inscriptions
61
- if (offset + data.results.length >= data.total) {
62
- break;
63
- }
64
- offset += limit;
65
- }
66
- return allInscriptions;
67
- }
68
- /**
69
- * Classify UTXOs into cardinal (safe to spend) and ordinal (contains inscriptions)
70
- *
71
- * @param address - Bitcoin address
72
- * @returns Classified UTXOs
73
- * @throws Error if API requests fail
74
- */
75
- async classifyUtxos(address) {
76
- // Fetch UTXOs from mempool.space
77
- const utxos = await this.mempoolApi.getUtxos(address);
78
- // Fetch inscriptions from Hiro Ordinals API
79
- const inscriptions = await this.getInscriptionsForAddress(address);
80
- // Build set of outputs that contain inscriptions
81
- // Hiro API returns "output" field as "txid:vout"
82
- const ordinalOutputs = new Set(inscriptions.map((inscription) => inscription.output));
83
- // Classify UTXOs
84
- const cardinal = [];
85
- const ordinal = [];
86
- for (const utxo of utxos) {
87
- const outputRef = `${utxo.txid}:${utxo.vout}`;
88
- if (ordinalOutputs.has(outputRef)) {
89
- ordinal.push(utxo);
90
- }
91
- else {
92
- cardinal.push(utxo);
93
- }
94
- }
95
- return { cardinal, ordinal };
96
- }
97
- /**
98
- * Get cardinal UTXOs (safe to spend - no inscriptions)
99
- *
100
- * @param address - Bitcoin address
101
- * @returns Cardinal UTXOs only
102
- * @throws Error if API requests fail
103
- */
104
- async getCardinalUtxos(address) {
105
- const classified = await this.classifyUtxos(address);
106
- return classified.cardinal;
107
- }
108
- /**
109
- * Get ordinal UTXOs (contain inscriptions - do not spend)
110
- *
111
- * @param address - Bitcoin address
112
- * @returns Ordinal UTXOs only
113
- * @throws Error if API requests fail
114
- */
115
- async getOrdinalUtxos(address) {
116
- const classified = await this.classifyUtxos(address);
117
- return classified.ordinal;
118
- }
119
- }
120
- /**
121
- * Create an ordinal indexer for the given network
122
- */
123
- export function createOrdinalIndexer(network) {
124
- return new OrdinalIndexer(network);
125
- }
126
- //# sourceMappingURL=ordinal-indexer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ordinal-indexer.js","sourceRoot":"","sources":["../../src/services/ordinal-indexer.ts"],"names":[],"mappings":"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"}