@usearete/sdk 0.24.0 → 0.25.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.
@@ -0,0 +1,619 @@
1
+ 'use strict';
2
+
3
+ var sdk = require('@usearete/sdk');
4
+
5
+ const ZERO_HASH = '11111111111111111111111111111111';
6
+ /** A promise that never settles, for stalled-backend probes. */
7
+ function pending() {
8
+ return new Promise(() => { });
9
+ }
10
+ function base64Bytes(value) {
11
+ try {
12
+ const binary = atob(value);
13
+ const bytes = new Uint8Array(binary.length);
14
+ for (let index = 0; index < binary.length; index += 1)
15
+ bytes[index] = binary.charCodeAt(index);
16
+ return bytes;
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ /**
23
+ * The first signature a base64 wire transaction carries (compact-u16 count,
24
+ * then 64-byte signatures), or `undefined` when the bytes are not one.
25
+ */
26
+ function firstSignatureOfWireTransaction(transaction) {
27
+ const bytes = base64Bytes(transaction);
28
+ if (!bytes || bytes.length < 65)
29
+ return undefined;
30
+ let count = 0;
31
+ let offset = 0;
32
+ let shift = 0;
33
+ while (offset < 3) {
34
+ const byte = bytes[offset];
35
+ offset += 1;
36
+ count |= (byte & 0x7f) << shift;
37
+ if ((byte & 0x80) === 0)
38
+ break;
39
+ shift += 7;
40
+ }
41
+ if (count < 1 || bytes.length < offset + 64)
42
+ return undefined;
43
+ return sdk.encodeBase58(bytes.slice(offset, offset + 64));
44
+ }
45
+ /**
46
+ * Create a recording, scriptable {@link TransactionTransport} for tests: pass
47
+ * it as `ConnectOptions.transactions`, `useArete(stack, { transactions })`, or
48
+ * an adapter's `transport`. Nothing reaches a network.
49
+ */
50
+ function createFakeTransactionTransport(options = {}) {
51
+ const calls = [];
52
+ const simulated = [];
53
+ const sent = [];
54
+ const feeMessages = [];
55
+ const fallbackSignature = sdk.encodeBase58(new Uint8Array(64).fill(7));
56
+ return {
57
+ calls,
58
+ simulated,
59
+ sent,
60
+ feeMessages,
61
+ reset() {
62
+ calls.length = 0;
63
+ simulated.length = 0;
64
+ sent.length = 0;
65
+ feeMessages.length = 0;
66
+ },
67
+ async getLatestBlockhash() {
68
+ calls.push('latest-blockhash');
69
+ return {
70
+ blockhash: options.blockhash ?? ZERO_HASH,
71
+ contextSlot: 1n,
72
+ lastValidBlockHeight: options.lastValidBlockHeight ?? 999n,
73
+ };
74
+ },
75
+ async getFeeForMessage(message) {
76
+ calls.push('fee');
77
+ feeMessages.push(message);
78
+ return {
79
+ feeLamports: options.feeLamports === undefined ? 5000n : options.feeLamports,
80
+ contextSlot: 400n,
81
+ };
82
+ },
83
+ async simulateTransaction(transaction) {
84
+ calls.push('simulate');
85
+ simulated.push(transaction);
86
+ return {
87
+ contextSlot: 401n,
88
+ err: null,
89
+ logs: ['Program log: simulated'],
90
+ unitsConsumed: 1200n,
91
+ loadedAccountsDataSize: 4096n,
92
+ ...options.simulation,
93
+ };
94
+ },
95
+ async sendTransaction(transaction) {
96
+ calls.push('send');
97
+ sent.push(transaction);
98
+ if (options.stallSend)
99
+ return pending();
100
+ if (options.sendError !== undefined)
101
+ throw options.sendError;
102
+ const signature = typeof options.signature === 'function'
103
+ ? options.signature(transaction)
104
+ : options.signature
105
+ ?? firstSignatureOfWireTransaction(transaction)
106
+ ?? fallbackSignature;
107
+ return { signature };
108
+ },
109
+ async getSignatureStatus(signature) {
110
+ calls.push('status');
111
+ if (options.stallStatus)
112
+ return pending();
113
+ if (options.statusError !== undefined)
114
+ throw options.statusError;
115
+ if (options.status === null)
116
+ return null;
117
+ return {
118
+ signature,
119
+ slot: 42n,
120
+ confirmationStatus: 'confirmed',
121
+ err: null,
122
+ ...options.status,
123
+ };
124
+ },
125
+ async getBlockHeight() {
126
+ calls.push('height');
127
+ return options.blockHeight ?? 10n;
128
+ },
129
+ };
130
+ }
131
+
132
+ /** A deterministic, well-formed wallet address for fixtures. */
133
+ const FIXTURE_WALLET_ADDRESS = sdk.encodeBase58(new Uint8Array(32).fill(1));
134
+ function isFailureOutcome(value) {
135
+ return typeof value === 'object'
136
+ && value !== null
137
+ && !(value instanceof Error)
138
+ && 'status' in value
139
+ && (value.status === 'not-submitted'
140
+ || value.status === 'submitted-unknown'
141
+ || value.status === 'chain-failed');
142
+ }
143
+ /**
144
+ * A recording {@link WalletAdapter} for tests. It holds no keys and builds no
145
+ * transactions: `signAndSend` answers from `responses`, so a test can drive a
146
+ * mutation through every outcome without a chain.
147
+ */
148
+ function createWalletFixture(options = {}) {
149
+ const publicKey = options.publicKey ?? FIXTURE_WALLET_ADDRESS;
150
+ const sent = [];
151
+ const inspected = [];
152
+ const respond = async (index) => {
153
+ const responses = options.responses ?? [];
154
+ const response = responses.length === 0
155
+ ? undefined
156
+ : responses[Math.min(index, responses.length - 1)];
157
+ if (response === undefined) {
158
+ return {
159
+ signature: sdk.encodeBase58(new Uint8Array(64).fill((index % 250) + 2)),
160
+ slot: 100 + index,
161
+ };
162
+ }
163
+ if (response === 'stall')
164
+ return new Promise(() => { });
165
+ if (response instanceof Error)
166
+ throw response;
167
+ if (isFailureOutcome(response))
168
+ throw new sdk.TransactionExecutionError(response);
169
+ return response;
170
+ };
171
+ const wallet = {
172
+ publicKey,
173
+ signerAddresses: [...new Set([publicKey, ...(options.signerAddresses ?? [])])],
174
+ ...(options.supportedTransactionVersions
175
+ ? { supportedTransactionVersions: options.supportedTransactionVersions }
176
+ : {}),
177
+ sent,
178
+ inspected,
179
+ reset() {
180
+ sent.length = 0;
181
+ inspected.length = 0;
182
+ },
183
+ async signAndSend(instructions, sendOptions, context) {
184
+ const index = sent.length;
185
+ sent.push({ instructions, options: sendOptions, context });
186
+ return respond(index);
187
+ },
188
+ };
189
+ if (options.inspection !== false) {
190
+ const inspection = options.inspection ?? {
191
+ feeLamports: 5000,
192
+ logs: ['Program log: inspected'],
193
+ computeUnitsConsumed: 1200,
194
+ contextSlot: 401,
195
+ };
196
+ wallet.inspectTransaction = async (instructions, inspectOptions, context) => {
197
+ inspected.push({ instructions, options: inspectOptions, context });
198
+ return inspection;
199
+ };
200
+ }
201
+ return wallet;
202
+ }
203
+
204
+ /** A deterministic, well-formed transaction signature for fixtures. */
205
+ const FIXTURE_SIGNATURE = sdk.encodeBase58(new Uint8Array(64).fill(9));
206
+ /** The slot fixture outcomes land in. */
207
+ const FIXTURE_SLOT = 4242;
208
+ function fixtures() {
209
+ const confirmed = {
210
+ status: 'confirmed',
211
+ phase: 'confirmation',
212
+ signature: FIXTURE_SIGNATURE,
213
+ slot: FIXTURE_SLOT,
214
+ };
215
+ const notSubmitted = (phase, message) => ({
216
+ status: 'not-submitted',
217
+ phase,
218
+ cause: new Error(message),
219
+ });
220
+ const submittedUnknown = (phase, message) => ({
221
+ status: 'submitted-unknown',
222
+ phase,
223
+ signature: FIXTURE_SIGNATURE,
224
+ cause: new Error(message),
225
+ });
226
+ const chainFailed = (phase) => ({
227
+ status: 'chain-failed',
228
+ phase,
229
+ signature: FIXTURE_SIGNATURE,
230
+ slot: FIXTURE_SLOT,
231
+ programError: { code: 6000, name: 'FixtureError', message: 'Fixture program error' },
232
+ cause: { InstructionError: [0, { Custom: 6000 }] },
233
+ });
234
+ return {
235
+ confirmed,
236
+ 'not-submitted:build': notSubmitted('build', 'Fixture: the transaction could not be built'),
237
+ 'not-submitted:wallet': notSubmitted('wallet', 'Fixture: the wallet rejected the request'),
238
+ 'not-submitted:send': notSubmitted('send', 'Fixture: the relay refused the transaction'),
239
+ 'submitted-unknown:send': submittedUnknown('send', 'Fixture: the relay did not acknowledge the submission'),
240
+ 'submitted-unknown:confirmation': submittedUnknown('confirmation', 'Fixture: confirmation timed out'),
241
+ 'chain-failed:confirmation': chainFailed('confirmation'),
242
+ 'chain-failed:chain': chainFailed('chain'),
243
+ };
244
+ }
245
+ /**
246
+ * One fresh outcome per status/phase pair of the transaction outcome model:
247
+ * `confirmed`, `not-submitted`, `submitted-unknown` and `chain-failed`.
248
+ */
249
+ function createTransactionOutcomeFixtures() {
250
+ return fixtures();
251
+ }
252
+ /** One outcome by name, with optional field overrides. */
253
+ function transactionOutcomeFixture(name, overrides = {}) {
254
+ return { ...fixtures()[name], ...overrides };
255
+ }
256
+ /**
257
+ * The structured error an adapter throws for a failure outcome, as
258
+ * `useMutation`, `execute` and `getTransactionFailureOutcome` classify it.
259
+ */
260
+ function transactionFailureError(outcome) {
261
+ return new sdk.TransactionExecutionError(outcome);
262
+ }
263
+
264
+ function modeOf(target, mode) {
265
+ return mode ?? (target.query.key !== undefined ? 'state' : 'list');
266
+ }
267
+ function live(target, op, key, data, options = {}) {
268
+ return {
269
+ protocolVersion: 2,
270
+ subscriptionId: target.subscriptionId,
271
+ mode: modeOf(target, options.mode),
272
+ entity: target.query.view,
273
+ op,
274
+ key,
275
+ data,
276
+ ...(options.seq !== undefined ? { seq: options.seq } : {}),
277
+ ...(options.offset !== undefined ? { offset: options.offset } : {}),
278
+ ...(options.append !== undefined ? { append: [...options.append] } : {}),
279
+ };
280
+ }
281
+ let snapshotCounter = 0;
282
+ /**
283
+ * Builders for WebSocket protocol v2 server frames, addressed to a
284
+ * subscription. Payloads use the wire shape (snake_case, u64 as decimal
285
+ * strings); the SDK's generated schemas normalize them as they would live.
286
+ */
287
+ const frames = {
288
+ subscribed(target, options = {}) {
289
+ return {
290
+ protocolVersion: 2,
291
+ subscriptionId: target.subscriptionId,
292
+ op: 'subscribed',
293
+ query: target.query,
294
+ mode: modeOf(target, options.mode),
295
+ ...(options.sort ? { sort: options.sort } : {}),
296
+ ...(options.replayWindow ? { replayWindow: options.replayWindow } : {}),
297
+ ...(options.wholeEntities === false ? {} : { wholeEntities: true }),
298
+ };
299
+ },
300
+ snapshot(target, rows, options = {}) {
301
+ snapshotCounter += 1;
302
+ return {
303
+ protocolVersion: 2,
304
+ subscriptionId: target.subscriptionId,
305
+ snapshotId: options.snapshotId ?? `snapshot-${snapshotCounter}`,
306
+ authoritative: options.authoritative ?? true,
307
+ mode: modeOf(target, options.mode),
308
+ entity: target.query.view,
309
+ op: 'snapshot',
310
+ ...(target.query.key !== undefined ? { key: target.query.key } : {}),
311
+ data: rows.map(({ key, data }) => ({ key, data })),
312
+ complete: options.complete ?? true,
313
+ };
314
+ },
315
+ upsert(target, key, data, options = {}) {
316
+ return live(target, 'upsert', key, data, options);
317
+ },
318
+ patch(target, key, data, options = {}) {
319
+ return live(target, 'patch', key, data, options);
320
+ },
321
+ remove(target, key, options = {}) {
322
+ return live(target, 'remove', key, null, options);
323
+ },
324
+ delete(target, key, options = {}) {
325
+ return live(target, 'delete', key, null, options);
326
+ },
327
+ error(target, code, options = {}) {
328
+ return {
329
+ type: 'error',
330
+ protocolVersion: 2,
331
+ subscriptionId: target?.subscriptionId ?? null,
332
+ code,
333
+ message: options.message ?? code,
334
+ fatal: options.fatal ?? false,
335
+ retryable: options.retryable ?? false,
336
+ };
337
+ },
338
+ };
339
+ /**
340
+ * The client store engine without a socket: feed it protocol v2 frames and
341
+ * read query snapshots. Every frame is serialized and parsed as it would be
342
+ * on the wire, so malformed fixtures fail the same way live frames do.
343
+ */
344
+ function createFrameHarness(options = {}) {
345
+ const storage = new sdk.MemoryAdapter();
346
+ const queries = new sdk.QueryStore(storage);
347
+ const processor = new sdk.FrameProcessor(storage, {
348
+ queryStore: queries,
349
+ ...(options.maxEntriesPerView !== undefined ? { maxEntriesPerView: options.maxEntriesPerView } : {}),
350
+ ...(options.schemas ? { schemas: options.schemas } : {}),
351
+ ...(options.patchSchemas ? { patchSchemas: options.patchSchemas } : {}),
352
+ ...(options.onValidationError ? { onValidationError: options.onValidationError } : {}),
353
+ });
354
+ return {
355
+ storage,
356
+ queries,
357
+ processor,
358
+ subscribe(subscriptionId, query, subscribeOptions = {}) {
359
+ const subscription = {
360
+ type: 'subscribe',
361
+ protocolVersion: 2,
362
+ subscriptionId,
363
+ query,
364
+ snapshot: { enabled: subscribeOptions.snapshot ?? true },
365
+ };
366
+ queries.register(subscription, sdk.canonicalQueryKey(subscription));
367
+ return subscription;
368
+ },
369
+ process(frame) {
370
+ processor.handleFrame(sdk.parseFrame(JSON.stringify(frame)));
371
+ },
372
+ snapshot(subscriptionId) {
373
+ return queries.getSnapshot(subscriptionId);
374
+ },
375
+ };
376
+ }
377
+
378
+ /**
379
+ * An in-memory WebSocket the SDK connects to through `auth.websocketFactory`.
380
+ * The client side is the standard `WebSocket` surface the SDK uses; the
381
+ * server side is `deliver`, `serverClose` and `fail`.
382
+ */
383
+ class FakeWebSocket {
384
+ constructor(url, init, autoOpen = true) {
385
+ this.url = url;
386
+ this.init = init;
387
+ this.CONNECTING = 0;
388
+ this.OPEN = 1;
389
+ this.CLOSING = 2;
390
+ this.CLOSED = 3;
391
+ this.readyState = FakeWebSocket.CONNECTING;
392
+ this.binaryType = 'blob';
393
+ this.onopen = null;
394
+ this.onmessage = null;
395
+ this.onerror = null;
396
+ this.onclose = null;
397
+ /** Raw messages the client sent, in order. */
398
+ this.sent = [];
399
+ if (autoOpen) {
400
+ queueMicrotask(() => this.open());
401
+ }
402
+ }
403
+ /** Client side: queue an outgoing message. */
404
+ send(data) {
405
+ if (this.readyState !== FakeWebSocket.OPEN) {
406
+ throw new Error('FakeWebSocket is not open');
407
+ }
408
+ this.sent.push(data);
409
+ }
410
+ /** Client side: close the socket. */
411
+ close(code = 1000, reason = '') {
412
+ if (this.readyState === FakeWebSocket.CLOSED)
413
+ return;
414
+ this.readyState = FakeWebSocket.CLOSED;
415
+ this.onclose?.({ code, reason, wasClean: true });
416
+ }
417
+ /** Server side: accept the connection (automatic unless disabled). */
418
+ open() {
419
+ if (this.readyState !== FakeWebSocket.CONNECTING)
420
+ return;
421
+ this.readyState = FakeWebSocket.OPEN;
422
+ this.onopen?.();
423
+ }
424
+ /** Server side: deliver one message (objects are sent as JSON text). */
425
+ deliver(message) {
426
+ if (this.readyState !== FakeWebSocket.OPEN) {
427
+ throw new Error('FakeWebSocket is not open');
428
+ }
429
+ void this.onmessage?.({
430
+ data: typeof message === 'string' ? message : JSON.stringify(message),
431
+ });
432
+ }
433
+ /** Server side: close the connection with a code and reason. */
434
+ serverClose(code = 1011, reason = '') {
435
+ if (this.readyState === FakeWebSocket.CLOSED)
436
+ return;
437
+ this.readyState = FakeWebSocket.CLOSED;
438
+ this.onclose?.({ code, reason, wasClean: false });
439
+ }
440
+ /** Server side: fail the socket as a network error would. */
441
+ fail() {
442
+ this.onerror?.();
443
+ this.serverClose(1006, 'connection failed');
444
+ }
445
+ /** Parsed `subscribe` messages this socket received. */
446
+ subscriptions() {
447
+ return this.sent.flatMap((raw) => {
448
+ try {
449
+ const message = JSON.parse(raw);
450
+ return message.type === 'subscribe' ? [message] : [];
451
+ }
452
+ catch {
453
+ return [];
454
+ }
455
+ });
456
+ }
457
+ }
458
+ FakeWebSocket.CONNECTING = 0;
459
+ FakeWebSocket.OPEN = 1;
460
+ FakeWebSocket.CLOSING = 2;
461
+ FakeWebSocket.CLOSED = 3;
462
+ /**
463
+ * A scripted WebSocket server for tests. The SDK connects to it through
464
+ * `auth.websocketFactory`, so views, snapshots, live frames, reconnects and
465
+ * errors run through the real client without a network.
466
+ */
467
+ function createWebSocketHarness(options = {}) {
468
+ const sockets = [];
469
+ const globals = globalThis;
470
+ const installed = options.installGlobal !== false && globals.WebSocket === undefined;
471
+ if (installed) {
472
+ globals.WebSocket = FakeWebSocket;
473
+ }
474
+ const latest = () => {
475
+ const socket = sockets[sockets.length - 1];
476
+ if (!socket) {
477
+ throw new Error('The client has not opened a WebSocket yet');
478
+ }
479
+ return socket;
480
+ };
481
+ const find = (match) => {
482
+ const socket = sockets[sockets.length - 1];
483
+ const candidates = (socket?.subscriptions() ?? []).filter((subscription) => match === undefined
484
+ || (typeof match === 'string' ? subscription.query.view === match : match(subscription)));
485
+ return candidates[candidates.length - 1];
486
+ };
487
+ const describe = (match) => `No subscription${typeof match === 'string' ? ` for ${match}` : ''} has been sent`;
488
+ return {
489
+ sockets,
490
+ websocketFactory(url, init) {
491
+ const socket = new FakeWebSocket(url, init, options.autoOpen !== false);
492
+ sockets.push(socket);
493
+ return socket;
494
+ },
495
+ latest,
496
+ subscriptions: () => latest().subscriptions(),
497
+ subscription(match) {
498
+ const found = find(match);
499
+ if (!found)
500
+ throw new Error(`${describe(match)} yet`);
501
+ return found;
502
+ },
503
+ async waitForSubscription(match, timeoutMs = 1000) {
504
+ const deadline = Date.now() + timeoutMs;
505
+ for (;;) {
506
+ const found = find(match);
507
+ if (found)
508
+ return found;
509
+ if (Date.now() > deadline)
510
+ throw new Error(`${describe(match)} within ${timeoutMs}ms`);
511
+ await new Promise((resolve) => setTimeout(resolve, 0));
512
+ }
513
+ },
514
+ send(frame) {
515
+ latest().deliver(frame);
516
+ },
517
+ serve(target, rows, subscribedOptions) {
518
+ const socket = latest();
519
+ socket.deliver(frames.subscribed(target, subscribedOptions));
520
+ socket.deliver(frames.snapshot(target, rows, { mode: subscribedOptions?.mode }));
521
+ },
522
+ restore() {
523
+ if (installed && globals.WebSocket === FakeWebSocket) {
524
+ delete globals.WebSocket;
525
+ }
526
+ },
527
+ };
528
+ }
529
+
530
+ /**
531
+ * JSON with the SDK's wire rule for integers: `bigint` values are written as
532
+ * decimal strings, as the server sends u64 fields.
533
+ */
534
+ function jsonResponse(body, init = {}) {
535
+ const headers = new Headers(init.headers);
536
+ if (!headers.has('content-type'))
537
+ headers.set('content-type', 'application/json');
538
+ return new Response(JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString(10) : value)), { ...init, status: init.status ?? 200, headers });
539
+ }
540
+ function matches(route, request) {
541
+ if (route.method && route.method.toUpperCase() !== request.method)
542
+ return false;
543
+ if (typeof route.match === 'string')
544
+ return request.url.includes(route.match);
545
+ if (route.match instanceof RegExp)
546
+ return route.match.test(request.url);
547
+ return route.match(request);
548
+ }
549
+ async function toRequest(input, init) {
550
+ if (typeof Request !== 'undefined' && input instanceof Request) {
551
+ const body = init?.body ?? (input.body ? await input.clone().text() : undefined);
552
+ return {
553
+ url: input.url,
554
+ method: (init?.method ?? input.method).toUpperCase(),
555
+ headers: new Headers(init?.headers ?? input.headers),
556
+ body: typeof body === 'string' ? body : body === undefined || body === null ? undefined : String(body),
557
+ };
558
+ }
559
+ const body = init?.body;
560
+ return {
561
+ url: input instanceof URL ? input.toString() : String(input),
562
+ method: (init?.method ?? 'GET').toUpperCase(),
563
+ headers: new Headers(init?.headers),
564
+ body: typeof body === 'string' ? body : body === undefined || body === null ? undefined : String(body),
565
+ };
566
+ }
567
+ /**
568
+ * A routed, recording `fetch` for tests: pass it as `ConnectOptions.fetch`,
569
+ * `createSession(…, { fetch })` or `<AreteProvider fetch={…}>`. Routes are
570
+ * tried in order; the first match answers.
571
+ *
572
+ * ```ts
573
+ * const fetch = createFetchStub([
574
+ * { match: '/accounts/Miner/', reply: { authority: 'wallet', rewards_ore: '12' } },
575
+ * { match: '/chain/exists/', reply: { exists: true } },
576
+ * ]);
577
+ * ```
578
+ */
579
+ function createFetchStub(routes = [], options = {}) {
580
+ const calls = [];
581
+ const stub = async (input, init) => {
582
+ const request = await toRequest(input, init);
583
+ calls.push(request);
584
+ const route = routes.find((candidate) => matches(candidate, request));
585
+ const reply = route
586
+ ? typeof route.reply === 'function'
587
+ ? await route.reply(request)
588
+ : route.reply
589
+ : options.fallback
590
+ ? await options.fallback(request)
591
+ : jsonResponse({ code: 'not-found', message: `No fetch stub route for ${request.method} ${request.url}` }, { status: 404 });
592
+ return reply instanceof Response
593
+ ? reply
594
+ : jsonResponse(reply, { status: route?.status ?? 200 });
595
+ };
596
+ return Object.assign(stub, {
597
+ calls,
598
+ reset() {
599
+ calls.length = 0;
600
+ },
601
+ });
602
+ }
603
+
604
+ exports.FIXTURE_SIGNATURE = FIXTURE_SIGNATURE;
605
+ exports.FIXTURE_SLOT = FIXTURE_SLOT;
606
+ exports.FIXTURE_WALLET_ADDRESS = FIXTURE_WALLET_ADDRESS;
607
+ exports.FakeWebSocket = FakeWebSocket;
608
+ exports.createFakeTransactionTransport = createFakeTransactionTransport;
609
+ exports.createFetchStub = createFetchStub;
610
+ exports.createFrameHarness = createFrameHarness;
611
+ exports.createTransactionOutcomeFixtures = createTransactionOutcomeFixtures;
612
+ exports.createWalletFixture = createWalletFixture;
613
+ exports.createWebSocketHarness = createWebSocketHarness;
614
+ exports.firstSignatureOfWireTransaction = firstSignatureOfWireTransaction;
615
+ exports.frames = frames;
616
+ exports.jsonResponse = jsonResponse;
617
+ exports.transactionFailureError = transactionFailureError;
618
+ exports.transactionOutcomeFixture = transactionOutcomeFixture;
619
+ //# sourceMappingURL=testing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.cjs","sources":["../src/testing/transactions.ts","../src/testing/wallet.ts","../src/testing/outcomes.ts","../src/testing/frames.ts","../src/testing/websocket.ts","../src/testing/fetch.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["encodeBase58","TransactionExecutionError","MemoryAdapter","QueryStore","FrameProcessor","canonicalQueryKey","parseFrame"],"mappings":"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"}