@bsv/wallet-toolbox-client 2.0.24 → 2.1.2

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 (68) hide show
  1. package/out/src/Wallet.js +1 -1
  2. package/out/src/Wallet.js.map +1 -1
  3. package/out/src/mockchain/MockChainMigrations.d.ts +20 -0
  4. package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -0
  5. package/out/src/mockchain/MockChainMigrations.js +67 -0
  6. package/out/src/mockchain/MockChainMigrations.js.map +1 -0
  7. package/out/src/mockchain/MockChainStorage.d.ts +58 -0
  8. package/out/src/mockchain/MockChainStorage.d.ts.map +1 -0
  9. package/out/src/mockchain/MockChainStorage.js +101 -0
  10. package/out/src/mockchain/MockChainStorage.js.map +1 -0
  11. package/out/src/mockchain/MockChainTracker.d.ts +28 -0
  12. package/out/src/mockchain/MockChainTracker.d.ts.map +1 -0
  13. package/out/src/mockchain/MockChainTracker.js +95 -0
  14. package/out/src/mockchain/MockChainTracker.js.map +1 -0
  15. package/out/src/mockchain/MockMiner.d.ts +16 -0
  16. package/out/src/mockchain/MockMiner.d.ts.map +1 -0
  17. package/out/src/mockchain/MockMiner.js +136 -0
  18. package/out/src/mockchain/MockMiner.js.map +1 -0
  19. package/out/src/mockchain/MockServices.d.ts +44 -0
  20. package/out/src/mockchain/MockServices.d.ts.map +1 -0
  21. package/out/src/mockchain/MockServices.js +504 -0
  22. package/out/src/mockchain/MockServices.js.map +1 -0
  23. package/out/src/mockchain/merkleTree.d.ts +13 -0
  24. package/out/src/mockchain/merkleTree.d.ts.map +1 -0
  25. package/out/src/mockchain/merkleTree.js +113 -0
  26. package/out/src/mockchain/merkleTree.js.map +1 -0
  27. package/out/src/monitor/Monitor.d.ts +3 -3
  28. package/out/src/monitor/Monitor.d.ts.map +1 -1
  29. package/out/src/monitor/Monitor.js +7 -0
  30. package/out/src/monitor/Monitor.js.map +1 -1
  31. package/out/src/monitor/tasks/TaskMineBlock.d.ts +13 -0
  32. package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -0
  33. package/out/src/monitor/tasks/TaskMineBlock.js +29 -0
  34. package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -0
  35. package/out/src/sdk/types.d.ts +1 -1
  36. package/out/src/sdk/types.d.ts.map +1 -1
  37. package/out/src/services/Services.d.ts.map +1 -1
  38. package/out/src/services/Services.js +14 -4
  39. package/out/src/services/Services.js.map +1 -1
  40. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  41. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +20 -4
  42. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  43. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  44. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +24 -6
  45. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  46. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  47. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +8 -8
  48. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  49. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  50. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +27 -21
  51. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  52. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  53. package/out/src/services/createDefaultWalletServicesOptions.js +14 -4
  54. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  55. package/out/src/services/providers/Bitails.d.ts.map +1 -1
  56. package/out/src/services/providers/Bitails.js +10 -1
  57. package/out/src/services/providers/Bitails.js.map +1 -1
  58. package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
  59. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  60. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  61. package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
  62. package/out/src/services/providers/WhatsOnChain.js +2 -0
  63. package/out/src/services/providers/WhatsOnChain.js.map +1 -1
  64. package/out/src/utility/utilityHelpers.d.ts +5 -0
  65. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  66. package/out/src/utility/utilityHelpers.js +24 -1
  67. package/out/src/utility/utilityHelpers.js.map +1 -1
  68. package/package.json +1 -1
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MockServices = void 0;
37
+ const sdk_1 = require("@bsv/sdk");
38
+ const WERR_errors_1 = require("../sdk/WERR_errors");
39
+ const utilityHelpers_1 = require("../utility/utilityHelpers");
40
+ const utilityHelpers_noBuffer_1 = require("../utility/utilityHelpers.noBuffer");
41
+ const Services_1 = require("../services/Services");
42
+ const MockChainStorage_1 = require("./MockChainStorage");
43
+ const MockChainTracker_1 = require("./MockChainTracker");
44
+ const MockMiner_1 = require("./MockMiner");
45
+ const merkleTree_1 = require("./merkleTree");
46
+ class MockServices {
47
+ constructor(knex) {
48
+ this.knex = knex;
49
+ this.chain = 'mock';
50
+ this.storage = new MockChainStorage_1.MockChainStorage(knex);
51
+ this.tracker = new MockChainTracker_1.MockChainTracker('mock', this.storage);
52
+ this.miner = new MockMiner_1.MockMiner();
53
+ }
54
+ async initialize() {
55
+ await this.storage.migrate();
56
+ // Mine genesis block if chain is empty
57
+ const tip = await this.storage.getChainTip();
58
+ if (!tip) {
59
+ await this.miner.mineBlock(this.storage);
60
+ }
61
+ }
62
+ async mineBlock() {
63
+ return this.miner.mineBlock(this.storage);
64
+ }
65
+ async postBeef(beef, txids) {
66
+ var _a;
67
+ const results = [];
68
+ for (const txid of txids) {
69
+ try {
70
+ // Find the transaction in the BEEF
71
+ const beefTx = beef.findTxid(txid);
72
+ if (!beefTx) {
73
+ results.push({
74
+ name: 'MockServices',
75
+ status: 'error',
76
+ error: new WERR_errors_1.WERR_INVALID_PARAMETER('txid', `present in provided BEEF. txid: ${txid}`),
77
+ txidResults: [{ txid, status: 'error' }]
78
+ });
79
+ continue;
80
+ }
81
+ const rawTx = beefTx.rawTx;
82
+ if (!rawTx) {
83
+ results.push({
84
+ name: 'MockServices',
85
+ status: 'error',
86
+ error: new WERR_errors_1.WERR_INVALID_PARAMETER('rawTx', `present in BEEF for txid: ${txid}`),
87
+ txidResults: [{ txid, status: 'error' }]
88
+ });
89
+ continue;
90
+ }
91
+ const tx = sdk_1.Transaction.fromBinary(rawTx);
92
+ // Validate inputs
93
+ const currentHeight = await this.tracker.currentHeight();
94
+ for (let i = 0; i < tx.inputs.length; i++) {
95
+ const input = tx.inputs[i];
96
+ const sourceTxid = input.sourceTXID || (input.sourceTransaction ? input.sourceTransaction.id('hex') : undefined);
97
+ if (!sourceTxid) {
98
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('input.sourceTXID', `defined for input ${i}`);
99
+ }
100
+ const sourceVout = input.sourceOutputIndex;
101
+ const utxo = await this.storage.getUtxo(sourceTxid, sourceVout);
102
+ if (!utxo) {
103
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `reference a known UTXO. Input ${i}: ${sourceTxid}.${sourceVout} not found`);
104
+ }
105
+ if (utxo.spentByTxid) {
106
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not be already spent. Input ${i}: ${sourceTxid}.${sourceVout} spent by ${utxo.spentByTxid}`);
107
+ }
108
+ // Coinbase maturity check
109
+ if (utxo.isCoinbase && utxo.blockHeight !== null) {
110
+ if (currentHeight - utxo.blockHeight < 100) {
111
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not spend immature coinbase. Input ${i}: coinbase at height ${utxo.blockHeight}, current height ${currentHeight}, need 100 confirmations`);
112
+ }
113
+ }
114
+ // Ensure source transaction is set for script validation
115
+ if (!input.sourceTransaction) {
116
+ const sourceTxRow = await this.storage.getTransaction(sourceTxid);
117
+ if (sourceTxRow) {
118
+ const sourceRaw = sourceTxRow.rawTx instanceof Buffer
119
+ ? Array.from(sourceTxRow.rawTx)
120
+ : Array.isArray(sourceTxRow.rawTx)
121
+ ? sourceTxRow.rawTx
122
+ : Array.from(sourceTxRow.rawTx);
123
+ input.sourceTransaction = sdk_1.Transaction.fromBinary(sourceRaw);
124
+ }
125
+ }
126
+ }
127
+ // Validate scripts using the SDK script interpreter
128
+ // We set sourceTransaction on each input above, so verify should work.
129
+ // Also set merklePath on source transactions to satisfy the SDK's proof requirement.
130
+ for (const input of tx.inputs) {
131
+ if (input.sourceTransaction && !input.sourceTransaction.merklePath) {
132
+ const stxid = input.sourceTransaction.id('hex');
133
+ const stx = await this.storage.getTransaction(stxid);
134
+ if (stx && stx.blockHeight !== null) {
135
+ const txsInBlock = await this.storage.getTransactionsInBlock(stx.blockHeight);
136
+ const stxids = txsInBlock.map(t => t.txid);
137
+ const idx = stxids.indexOf(stxid);
138
+ if (idx >= 0) {
139
+ input.sourceTransaction.merklePath = (0, merkleTree_1.computeMerklePath)(stxids, idx, stx.blockHeight);
140
+ }
141
+ }
142
+ }
143
+ }
144
+ const verified = await tx.verify('scripts only');
145
+ if (verified !== true) {
146
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('transaction', `pass script validation: ${verified}`);
147
+ }
148
+ // Store transaction
149
+ await this.storage.insertTransaction(txid, Array.from(rawTx));
150
+ // Create UTXOs for each output
151
+ for (let vout = 0; vout < tx.outputs.length; vout++) {
152
+ const output = tx.outputs[vout];
153
+ const scriptBinary = output.lockingScript.toBinary();
154
+ const scriptHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(Array.from(scriptBinary)));
155
+ await this.storage.insertUtxo(txid, vout, Array.from(scriptBinary), (_a = output.satoshis) !== null && _a !== void 0 ? _a : 0, scriptHash);
156
+ }
157
+ // Spend inputs
158
+ for (const input of tx.inputs) {
159
+ const sourceTxid = input.sourceTXID || (input.sourceTransaction ? input.sourceTransaction.id('hex') : '');
160
+ await this.storage.markUtxoSpent(sourceTxid, input.sourceOutputIndex, txid);
161
+ }
162
+ results.push({
163
+ name: 'MockServices',
164
+ status: 'success',
165
+ txidResults: [{ txid, status: 'success' }]
166
+ });
167
+ }
168
+ catch (eu) {
169
+ const error = eu instanceof Error ? new WERR_errors_1.WERR_INTERNAL(eu.message) : new WERR_errors_1.WERR_INTERNAL(String(eu));
170
+ results.push({
171
+ name: 'MockServices',
172
+ status: 'error',
173
+ error,
174
+ txidResults: [{ txid, status: 'error' }]
175
+ });
176
+ }
177
+ }
178
+ return results;
179
+ }
180
+ async reorg(startingHeight, numBlocks, txidMap) {
181
+ const oldTip = await this.storage.getChainTip();
182
+ if (!oldTip)
183
+ throw new WERR_errors_1.WERR_INTERNAL('Cannot reorg empty chain');
184
+ if (startingHeight > oldTip.height) {
185
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('startingHeight', `<= current tip height ${oldTip.height}`);
186
+ }
187
+ const deactivatedHeaders = [];
188
+ // Collect all deactivated headers
189
+ for (let h = startingHeight; h <= oldTip.height; h++) {
190
+ const header = await this.storage.getBlockHeaderByHeight(h);
191
+ if (header)
192
+ deactivatedHeaders.push(header);
193
+ }
194
+ await this.knex.transaction(async (trx) => {
195
+ const trxStorage = new MockChainStorage_1.MockChainStorage(trx);
196
+ // Tear down old blocks
197
+ for (let h = oldTip.height; h >= startingHeight; h--) {
198
+ const txsInBlock = await trxStorage.getTransactionsInBlock(h);
199
+ // Get coinbaseTxid from the raw row (not BlockHeader which lacks it)
200
+ const headerRow = await trxStorage.knex('mockchain_block_headers').where({ height: h }).first();
201
+ const coinbaseTxid = headerRow === null || headerRow === void 0 ? void 0 : headerRow.coinbaseTxid;
202
+ for (const tx of txsInBlock) {
203
+ if (coinbaseTxid && tx.txid === coinbaseTxid) {
204
+ // Delete coinbase UTXOs and transaction
205
+ await trxStorage.deleteUtxosByTxid(tx.txid);
206
+ await trxStorage.deleteTransaction(tx.txid);
207
+ }
208
+ else {
209
+ // Return non-coinbase tx to mempool
210
+ await trxStorage.setTransactionBlock(tx.txid, null, null);
211
+ await trxStorage.setUtxoBlockHeight(tx.txid, null);
212
+ }
213
+ }
214
+ if (headerRow) {
215
+ await trxStorage.deleteBlockHeader(h);
216
+ }
217
+ }
218
+ // Mine numBlocks new blocks
219
+ for (let i = 0; i < numBlocks; i++) {
220
+ const newHeight = startingHeight + i;
221
+ // Determine which txids go in this block from txidMap
222
+ const mappedTxids = [];
223
+ if (txidMap) {
224
+ for (const [tid, offset] of Object.entries(txidMap)) {
225
+ if (offset === i)
226
+ mappedTxids.push(tid);
227
+ }
228
+ }
229
+ // Get previous hash
230
+ let prevHash;
231
+ if (newHeight === 0) {
232
+ prevHash = '00'.repeat(32);
233
+ }
234
+ else {
235
+ const prevHeader = await trxStorage.getBlockHeaderByHeight(newHeight - 1);
236
+ if (!prevHeader)
237
+ throw new WERR_errors_1.WERR_INTERNAL(`Missing block header at height ${newHeight - 1}`);
238
+ prevHash = prevHeader.hash;
239
+ }
240
+ // Create coinbase
241
+ const { createCoinbaseTransaction } = await Promise.resolve().then(() => __importStar(require('./MockMiner')));
242
+ const coinbaseTx = createCoinbaseTransaction(newHeight);
243
+ const coinbaseTxid = coinbaseTx.id('hex');
244
+ const coinbaseRawTx = Array.from(coinbaseTx.toBinary());
245
+ const allTxids = [coinbaseTxid, ...mappedTxids];
246
+ const { computeMerkleRoot } = await Promise.resolve().then(() => __importStar(require('./merkleTree')));
247
+ const merkleRoot = computeMerkleRoot(allTxids);
248
+ const time = Math.floor(Date.now() / 1000);
249
+ const bits = 0x207fffff;
250
+ const nonce = Math.floor(Math.random() * 0xffffffff);
251
+ const headerObj = { version: 1, previousHash: prevHash, merkleRoot, time, bits, nonce };
252
+ const headerBinary = (0, Services_1.toBinaryBaseBlockHeader)(headerObj);
253
+ const hash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(headerBinary));
254
+ // Insert coinbase tx
255
+ await trxStorage.knex('mockchain_transactions').insert({
256
+ txid: coinbaseTxid,
257
+ rawTx: Buffer.from(coinbaseRawTx),
258
+ blockHeight: newHeight,
259
+ blockIndex: 0
260
+ });
261
+ // Insert coinbase UTXO
262
+ const coinbaseOutputScript = [0x51];
263
+ const coinbaseScriptHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(coinbaseOutputScript));
264
+ await trxStorage.knex('mockchain_utxos').insert({
265
+ txid: coinbaseTxid,
266
+ vout: 0,
267
+ lockingScript: Buffer.from(coinbaseOutputScript),
268
+ satoshis: 5000000000,
269
+ scriptHash: coinbaseScriptHash,
270
+ spentByTxid: null,
271
+ isCoinbase: true,
272
+ blockHeight: newHeight
273
+ });
274
+ // Update mapped txs
275
+ for (let j = 0; j < mappedTxids.length; j++) {
276
+ await trxStorage.setTransactionBlock(mappedTxids[j], newHeight, j + 1);
277
+ await trxStorage.setUtxoBlockHeight(mappedTxids[j], newHeight);
278
+ }
279
+ // Insert block header
280
+ await trxStorage.knex('mockchain_block_headers').insert({
281
+ height: newHeight,
282
+ hash,
283
+ previousHash: prevHash,
284
+ merkleRoot,
285
+ version: 1,
286
+ time,
287
+ bits,
288
+ nonce,
289
+ coinbaseTxid
290
+ });
291
+ }
292
+ });
293
+ const newTip = await this.storage.getChainTip();
294
+ if (!newTip)
295
+ throw new WERR_errors_1.WERR_INTERNAL('Chain tip missing after reorg');
296
+ return { oldTip, newTip, deactivatedHeaders };
297
+ }
298
+ async getRawTx(txid) {
299
+ const tx = await this.storage.getTransaction(txid);
300
+ if (!tx)
301
+ return { txid };
302
+ const rawTx = tx.rawTx instanceof Buffer
303
+ ? Array.from(tx.rawTx)
304
+ : Array.isArray(tx.rawTx)
305
+ ? tx.rawTx
306
+ : Array.from(tx.rawTx);
307
+ return { txid, rawTx, name: 'MockServices' };
308
+ }
309
+ async getMerklePath(txid) {
310
+ const tx = await this.storage.getTransaction(txid);
311
+ if (!tx || tx.blockHeight === null)
312
+ return {};
313
+ const txsInBlock = await this.storage.getTransactionsInBlock(tx.blockHeight);
314
+ const txids = txsInBlock.map(t => t.txid);
315
+ const targetIndex = txids.indexOf(txid);
316
+ if (targetIndex < 0)
317
+ return {};
318
+ const header = await this.storage.getBlockHeaderByHeight(tx.blockHeight);
319
+ const merklePath = (0, merkleTree_1.computeMerklePath)(txids, targetIndex, tx.blockHeight);
320
+ return { merklePath, header: header || undefined, name: 'MockServices' };
321
+ }
322
+ async getUtxoStatus(output, outputFormat, outpoint) {
323
+ const hashBE = (0, Services_1.validateScriptHash)(output, outputFormat);
324
+ // Convert hashBE to hashLE for our storage (which stores hashLE)
325
+ const hashLE = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_noBuffer_1.asArray)(hashBE).reverse());
326
+ const utxos = await this.storage.getUtxosByScriptHash(hashLE);
327
+ const unspent = utxos.filter(u => !u.spentByTxid);
328
+ let isUtxo = unspent.length > 0;
329
+ const details = unspent.map(u => {
330
+ var _a;
331
+ return ({
332
+ txid: u.txid,
333
+ index: u.vout,
334
+ height: (_a = u.blockHeight) !== null && _a !== void 0 ? _a : undefined,
335
+ satoshis: Number(u.satoshis)
336
+ });
337
+ });
338
+ // If outpoint is provided, filter to match
339
+ if (outpoint && isUtxo) {
340
+ const [opTxid, opVoutStr] = outpoint.split('.');
341
+ const opVout = parseInt(opVoutStr, 10);
342
+ const match = details.find(d => d.txid === opTxid && d.index === opVout);
343
+ isUtxo = !!match;
344
+ }
345
+ return {
346
+ name: 'MockServices',
347
+ status: 'success',
348
+ isUtxo,
349
+ details
350
+ };
351
+ }
352
+ async getStatusForTxids(txids) {
353
+ const currentHeight = await this.tracker.currentHeight();
354
+ const results = await Promise.all(txids.map(async (txid) => {
355
+ const tx = await this.storage.getTransaction(txid);
356
+ if (!tx)
357
+ return { txid, status: 'unknown', depth: undefined };
358
+ if (tx.blockHeight !== null) {
359
+ const depth = currentHeight - tx.blockHeight + 1;
360
+ return { txid, status: 'mined', depth };
361
+ }
362
+ return { txid, status: 'known', depth: 0 };
363
+ }));
364
+ return { name: 'MockServices', status: 'success', results };
365
+ }
366
+ async getScriptHashHistory(hash) {
367
+ const utxos = await this.storage.getUtxosByScriptHash(hash);
368
+ const history = utxos.map(u => {
369
+ var _a;
370
+ return ({
371
+ txid: u.txid,
372
+ height: (_a = u.blockHeight) !== null && _a !== void 0 ? _a : undefined
373
+ });
374
+ });
375
+ return { name: 'MockServices', status: 'success', history };
376
+ }
377
+ async getChainTracker() {
378
+ return this.tracker;
379
+ }
380
+ async getHeaderForHeight(height) {
381
+ const header = await this.storage.getBlockHeaderByHeight(height);
382
+ if (!header)
383
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('height', `valid height '${height}' on mock chain`);
384
+ return (0, Services_1.toBinaryBaseBlockHeader)(header);
385
+ }
386
+ async getHeight() {
387
+ return this.tracker.currentHeight();
388
+ }
389
+ async hashToHeader(hash) {
390
+ const header = await this.storage.getBlockHeaderByHash(hash);
391
+ if (!header)
392
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${hash}' on mock chain`);
393
+ return header;
394
+ }
395
+ hashOutputScript(script) {
396
+ const hash = sdk_1.Utils.toHex((0, utilityHelpers_1.sha256Hash)(sdk_1.Utils.toArray(script, 'hex')));
397
+ return hash;
398
+ }
399
+ async isUtxo(output) {
400
+ if (!output.lockingScript) {
401
+ throw new WERR_errors_1.WERR_INVALID_PARAMETER('output.lockingScript', 'validated by storage provider validateOutputScript.');
402
+ }
403
+ const hash = this.hashOutputScript(sdk_1.Utils.toHex(output.lockingScript));
404
+ const or = await this.getUtxoStatus(hash, undefined, `${output.txid}.${output.vout}`);
405
+ return or.isUtxo === true;
406
+ }
407
+ async getBsvExchangeRate() {
408
+ return 50.0;
409
+ }
410
+ async getFiatExchangeRate(currency, base) {
411
+ if (currency === (base || 'USD'))
412
+ return 1;
413
+ return 1.0;
414
+ }
415
+ async getFiatExchangeRates(targetCurrencies) {
416
+ const rates = {};
417
+ for (const c of targetCurrencies)
418
+ rates[c] = 1;
419
+ return {
420
+ timestamp: new Date(),
421
+ base: 'USD',
422
+ rates
423
+ };
424
+ }
425
+ async nLockTimeIsFinal(tx) {
426
+ const MAXINT = 0xffffffff;
427
+ const BLOCK_LIMIT = 500000000;
428
+ let nLockTime;
429
+ if (typeof tx === 'number')
430
+ nLockTime = tx;
431
+ else {
432
+ if (typeof tx === 'string') {
433
+ tx = sdk_1.Transaction.fromHex(tx);
434
+ }
435
+ else if (Array.isArray(tx)) {
436
+ tx = sdk_1.Transaction.fromBinary(tx);
437
+ }
438
+ if (tx instanceof sdk_1.Transaction) {
439
+ if (tx.inputs.every(i => i.sequence === MAXINT))
440
+ return true;
441
+ nLockTime = tx.lockTime;
442
+ }
443
+ else {
444
+ throw new WERR_errors_1.WERR_INTERNAL('Unsupported transaction format');
445
+ }
446
+ }
447
+ if (nLockTime >= BLOCK_LIMIT) {
448
+ const limit = Math.floor(Date.now() / 1000);
449
+ return nLockTime < limit;
450
+ }
451
+ const height = await this.getHeight();
452
+ return nLockTime < height;
453
+ }
454
+ async getBeefForTxid(txid) {
455
+ const beef = new sdk_1.Beef();
456
+ const addTx = async (tid, alreadyAdded) => {
457
+ if (alreadyAdded.has(tid))
458
+ return;
459
+ alreadyAdded.add(tid);
460
+ const txRow = await this.storage.getTransaction(tid);
461
+ if (!txRow)
462
+ return;
463
+ const rawTx = txRow.rawTx instanceof Buffer
464
+ ? Array.from(txRow.rawTx)
465
+ : Array.isArray(txRow.rawTx)
466
+ ? txRow.rawTx
467
+ : Array.from(txRow.rawTx);
468
+ if (txRow.blockHeight !== null) {
469
+ // Mined: add with merkle path
470
+ const pathResult = await this.getMerklePath(tid);
471
+ if (pathResult.merklePath) {
472
+ const bumpIndex = beef.mergeBump(pathResult.merklePath);
473
+ beef.mergeRawTx(rawTx, bumpIndex);
474
+ return;
475
+ }
476
+ }
477
+ // Unmined or no path: recursively add source transactions
478
+ const tx = sdk_1.Transaction.fromBinary(rawTx);
479
+ for (const input of tx.inputs) {
480
+ const sourceTxid = input.sourceTXID || (input.sourceTransaction ? input.sourceTransaction.id('hex') : undefined);
481
+ if (sourceTxid && sourceTxid !== '00'.repeat(32)) {
482
+ await addTx(sourceTxid, alreadyAdded);
483
+ }
484
+ }
485
+ beef.mergeRawTx(rawTx);
486
+ };
487
+ await addTx(txid, new Set());
488
+ return beef;
489
+ }
490
+ getServicesCallHistory() {
491
+ return {
492
+ version: 2,
493
+ getMerklePath: { serviceName: 'getMerklePath', historyByProvider: {} },
494
+ getRawTx: { serviceName: 'getRawTx', historyByProvider: {} },
495
+ postBeef: { serviceName: 'postBeef', historyByProvider: {} },
496
+ getUtxoStatus: { serviceName: 'getUtxoStatus', historyByProvider: {} },
497
+ getStatusForTxids: { serviceName: 'getStatusForTxids', historyByProvider: {} },
498
+ getScriptHashHistory: { serviceName: 'getScriptHashHistory', historyByProvider: {} },
499
+ updateFiatExchangeRates: { serviceName: 'updateFiatExchangeRates', historyByProvider: {} }
500
+ };
501
+ }
502
+ }
503
+ exports.MockServices = MockServices;
504
+ //# sourceMappingURL=MockServices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockServices.js","sourceRoot":"","sources":["../../../../src/mockchain/MockServices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { MerklePath } from '@bsv/sdk';
2
+ /**
3
+ * Compute the merkle root from an array of txids (big-endian hex strings).
4
+ * Returns the root as a big-endian hex string (reversed byte order from the
5
+ * natural double-SHA256 result, matching the standard block header format).
6
+ */
7
+ export declare function computeMerkleRoot(txids: string[]): string;
8
+ /**
9
+ * Compute the MerklePath for a target transaction at `targetIndex` within a block at `blockHeight`.
10
+ * `txids` is the ordered list of all txids in the block (big-endian hex).
11
+ */
12
+ export declare function computeMerklePath(txids: string[], targetIndex: number, blockHeight: number): MerklePath;
13
+ //# sourceMappingURL=merkleTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkleTree.d.ts","sourceRoot":"","sources":["../../../../src/mockchain/merkleTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAIrC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAsBzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAuFvG"}