@valve-tech/tx-tracker 0.7.0 → 0.9.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.
- package/CHANGELOG.md +50 -0
- package/dist/events.d.ts +11 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -0
- package/dist/events.js.map +1 -1
- package/dist/group-events.d.ts +82 -0
- package/dist/group-events.d.ts.map +1 -0
- package/dist/group-events.js +47 -0
- package/dist/group-events.js.map +1 -0
- package/dist/group.d.ts +31 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +196 -0
- package/dist/group.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/observations.d.ts +11 -1
- package/dist/observations.d.ts.map +1 -1
- package/dist/observations.js +5 -1
- package/dist/observations.js.map +1 -1
- package/dist/reorg.d.ts.map +1 -1
- package/dist/reorg.js +7 -12
- package/dist/reorg.js.map +1 -1
- package/dist/replace-transaction.d.ts +46 -0
- package/dist/replace-transaction.d.ts.map +1 -0
- package/dist/replace-transaction.js +51 -0
- package/dist/replace-transaction.js.map +1 -0
- package/dist/tracker.d.ts +50 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +192 -27
- package/dist/tracker.js.map +1 -1
- package/dist/wait-for-pending.d.ts +47 -0
- package/dist/wait-for-pending.d.ts.map +1 -0
- package/dist/wait-for-pending.js +71 -0
- package/dist/wait-for-pending.js.map +1 -0
- package/dist/wait-for-transaction.d.ts +61 -0
- package/dist/wait-for-transaction.d.ts.map +1 -0
- package/dist/wait-for-transaction.js +72 -0
- package/dist/wait-for-transaction.js.map +1 -0
- package/dist/watch-transaction.d.ts +63 -0
- package/dist/watch-transaction.d.ts.map +1 -0
- package/dist/watch-transaction.js +76 -0
- package/dist/watch-transaction.js.map +1 -0
- package/package.json +2 -2
- package/skills/tx-tracker-integration/SKILL.md +30 -0
package/dist/observations.js
CHANGED
|
@@ -45,7 +45,7 @@ const EMPTY_RESULT = {
|
|
|
45
45
|
* after subscription (no `firstObservedAtBlock` yet).
|
|
46
46
|
*/
|
|
47
47
|
export const decideBlockObservation = (input) => {
|
|
48
|
-
const { record, blockHash, blockNumber, txHashSet, txs, chainId, eventSource, envelope, previousTipNumber, } = input;
|
|
48
|
+
const { record, blockHash, blockNumber, txHashSet, txs, chainId, eventSource, envelope, previousTipNumber, prefetchedReceipts, } = input;
|
|
49
49
|
const wasSeenInThisBlock = txHashSet.has(record.hash);
|
|
50
50
|
if (wasSeenInThisBlock) {
|
|
51
51
|
const tx = txs.find((t) => t.hash === record.hash);
|
|
@@ -66,6 +66,9 @@ export const decideBlockObservation = (input) => {
|
|
|
66
66
|
confirmations,
|
|
67
67
|
source: eventSource,
|
|
68
68
|
};
|
|
69
|
+
const receipt = isFreshInclusion
|
|
70
|
+
? prefetchedReceipts?.get(record.hash)
|
|
71
|
+
: undefined;
|
|
69
72
|
const events = isFreshInclusion
|
|
70
73
|
? [
|
|
71
74
|
buildSeenInBlock({
|
|
@@ -77,6 +80,7 @@ export const decideBlockObservation = (input) => {
|
|
|
77
80
|
blockNumber,
|
|
78
81
|
transactionIndex,
|
|
79
82
|
confirmations,
|
|
83
|
+
...(receipt !== undefined ? { receipt } : {}),
|
|
80
84
|
}),
|
|
81
85
|
]
|
|
82
86
|
: [];
|
package/dist/observations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observations.js","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GAKtB,MAAM,aAAa,CAAA;AAsCpB,MAAM,YAAY,GAAsB;IACtC,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAA;
|
|
1
|
+
{"version":3,"file":"observations.js","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"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"}
|
package/dist/reorg.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorg.d.ts","sourceRoot":"","sources":["../src/reorg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IACvB,qEAAqE;IACrE,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,mDAAmD;IACnD,iBAAiB,EAAE,IAAI,CAAA;IACvB;;;;OAIG;IACH,kBAAkB,EAAE,IAAI,CAAA;IACxB;;;;OAIG;IACH,yBAAyB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,aAAa,CAAC,WAAW,CAAC,EAChC,OAAO,WAAW,EAClB,gBAAgB,MAAM,KACrB,WAAW,
|
|
1
|
+
{"version":3,"file":"reorg.d.ts","sourceRoot":"","sources":["../src/reorg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IACvB,qEAAqE;IACrE,iBAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,mDAAmD;IACnD,iBAAiB,EAAE,IAAI,CAAA;IACvB;;;;OAIG;IACH,kBAAkB,EAAE,IAAI,CAAA;IACxB;;;;OAIG;IACH,yBAAyB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,aAAa,CAAC,WAAW,CAAC,EAChC,OAAO,WAAW,EAClB,gBAAgB,MAAM,KACrB,WAAW,EAYb,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO;IACvC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAChC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACrC,WAAW,EAAE,MAAM,CAAA;CACpB,KAAG,eAAe,EA0ClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA"}
|
package/dist/reorg.js
CHANGED
|
@@ -33,13 +33,10 @@ export const appendBlock = (ring, block, capacityBlocks) => {
|
|
|
33
33
|
const next = ring.filter((b) => b.number !== block.number);
|
|
34
34
|
next.push(block);
|
|
35
35
|
// Sort ascending by block number. The ring is small (~depth + a
|
|
36
|
-
// few) so the cost is negligible.
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
// sort's contract.
|
|
41
|
-
/* c8 ignore next */
|
|
42
|
-
next.sort((a, b) => (a.number < b.number ? -1 : 1));
|
|
36
|
+
// few) so the cost is negligible. Block numbers are well within
|
|
37
|
+
// MAX_SAFE_INTEGER, so casting the bigint difference to Number is
|
|
38
|
+
// safe and gives a branchless comparator.
|
|
39
|
+
next.sort((a, b) => Number(a.number - b.number));
|
|
43
40
|
if (next.length > capacityBlocks) {
|
|
44
41
|
next.splice(0, next.length - capacityBlocks);
|
|
45
42
|
}
|
|
@@ -107,11 +104,9 @@ export const detectDivergences = (input) => {
|
|
|
107
104
|
}
|
|
108
105
|
// Sort ascending by number so the tracker emits vanished events
|
|
109
106
|
// in chain order — easier on consumers piping to a single sink.
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
/* c8 ignore next */
|
|
114
|
-
divergences.sort((a, b) => (a.blockNumber < b.blockNumber ? -1 : 1));
|
|
107
|
+
// Block numbers are well within MAX_SAFE_INTEGER, so casting the
|
|
108
|
+
// bigint difference to Number gives a branchless comparator.
|
|
109
|
+
divergences.sort((a, b) => Number(a.blockNumber - b.blockNumber));
|
|
115
110
|
return divergences;
|
|
116
111
|
};
|
|
117
112
|
/**
|
package/dist/reorg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorg.js","sourceRoot":"","sources":["../src/reorg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA2CH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAgC,EAChC,KAAkB,EAClB,cAAsB,EACP,EAAE;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChB,gEAAgE;IAChE,
|
|
1
|
+
{"version":3,"file":"reorg.js","sourceRoot":"","sources":["../src/reorg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `replaceTransaction` — same-nonce replacement primitive. Provex
|
|
3
|
+
* upstream item 5 (memory: upstream-candidates.md#L50). Caller
|
|
4
|
+
* provides `original` (the previously-submitted request, including
|
|
5
|
+
* calldata + nonce) and `newGas` (the bumped EIP-1559 fee params,
|
|
6
|
+
* computed via @valve-tech/gas-oracle's helper or the caller's own
|
|
7
|
+
* math).
|
|
8
|
+
*
|
|
9
|
+
* **tx-tracker MUST NOT import from @valve-tech/gas-oracle.** Sibling
|
|
10
|
+
* packages, kept independent. The bump-rule helper ships separately
|
|
11
|
+
* in gas-oracle. See project memory:
|
|
12
|
+
* transaction-verbs-package-placement.md.
|
|
13
|
+
*/
|
|
14
|
+
import type { Address, Hex, WalletClient } from 'viem';
|
|
15
|
+
export interface ReplaceTransactionOriginal {
|
|
16
|
+
to: Address;
|
|
17
|
+
nonce: number;
|
|
18
|
+
data?: Hex;
|
|
19
|
+
value?: bigint;
|
|
20
|
+
chainId?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ReplaceTransactionNewGas {
|
|
23
|
+
maxFeePerGas: bigint;
|
|
24
|
+
maxPriorityFeePerGas: bigint;
|
|
25
|
+
}
|
|
26
|
+
export interface ReplaceTransactionOptions {
|
|
27
|
+
original: ReplaceTransactionOriginal;
|
|
28
|
+
walletClient: WalletClient;
|
|
29
|
+
newGas: ReplaceTransactionNewGas;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Submit a same-nonce replacement transaction with bumped gas.
|
|
33
|
+
* Returns the new tx hash. Throws whatever the wallet client throws
|
|
34
|
+
* (no swallowing — caller decides retry / surface).
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* import { replaceTransaction } from '@valve-tech/tx-tracker'
|
|
38
|
+
*
|
|
39
|
+
* const newHash = await replaceTransaction({
|
|
40
|
+
* original: { to: '0xrecipient', nonce: 42, data: '0x...', value: 0n },
|
|
41
|
+
* walletClient,
|
|
42
|
+
* newGas: bumpForReplacement(currentGas), // from @valve-tech/gas-oracle
|
|
43
|
+
* })
|
|
44
|
+
*/
|
|
45
|
+
export declare const replaceTransaction: (options: ReplaceTransactionOptions) => Promise<Hex>;
|
|
46
|
+
//# sourceMappingURL=replace-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-transaction.d.ts","sourceRoot":"","sources":["../src/replace-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEtD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,0BAA0B,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,wBAAwB,CAAA;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,yBAAyB,KACjC,OAAO,CAAC,GAAG,CAsBb,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `replaceTransaction` — same-nonce replacement primitive. Provex
|
|
3
|
+
* upstream item 5 (memory: upstream-candidates.md#L50). Caller
|
|
4
|
+
* provides `original` (the previously-submitted request, including
|
|
5
|
+
* calldata + nonce) and `newGas` (the bumped EIP-1559 fee params,
|
|
6
|
+
* computed via @valve-tech/gas-oracle's helper or the caller's own
|
|
7
|
+
* math).
|
|
8
|
+
*
|
|
9
|
+
* **tx-tracker MUST NOT import from @valve-tech/gas-oracle.** Sibling
|
|
10
|
+
* packages, kept independent. The bump-rule helper ships separately
|
|
11
|
+
* in gas-oracle. See project memory:
|
|
12
|
+
* transaction-verbs-package-placement.md.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Submit a same-nonce replacement transaction with bumped gas.
|
|
16
|
+
* Returns the new tx hash. Throws whatever the wallet client throws
|
|
17
|
+
* (no swallowing — caller decides retry / surface).
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* import { replaceTransaction } from '@valve-tech/tx-tracker'
|
|
21
|
+
*
|
|
22
|
+
* const newHash = await replaceTransaction({
|
|
23
|
+
* original: { to: '0xrecipient', nonce: 42, data: '0x...', value: 0n },
|
|
24
|
+
* walletClient,
|
|
25
|
+
* newGas: bumpForReplacement(currentGas), // from @valve-tech/gas-oracle
|
|
26
|
+
* })
|
|
27
|
+
*/
|
|
28
|
+
export const replaceTransaction = async (options) => {
|
|
29
|
+
const { original, walletClient, newGas } = options;
|
|
30
|
+
if (!walletClient.account) {
|
|
31
|
+
throw new Error('replaceTransaction: walletClient must have an account');
|
|
32
|
+
}
|
|
33
|
+
// viem's WalletClient.sendTransaction has multiple overloads with strict
|
|
34
|
+
// type-narrowing on chain/account. Cast is necessary to thread the request
|
|
35
|
+
// through the type system without consumers having to specify all generic params.
|
|
36
|
+
// `chain` defers to `walletClient.chain` so viem's chain-id assertion runs
|
|
37
|
+
// (`chain: null` would silently disable it). `chainId` from the original is
|
|
38
|
+
// threaded through for EIP-155 signing and an extra wallet/original match check.
|
|
39
|
+
return walletClient.sendTransaction({
|
|
40
|
+
account: walletClient.account,
|
|
41
|
+
chain: walletClient.chain ?? null,
|
|
42
|
+
to: original.to,
|
|
43
|
+
data: original.data,
|
|
44
|
+
value: original.value,
|
|
45
|
+
nonce: original.nonce,
|
|
46
|
+
chainId: original.chainId,
|
|
47
|
+
maxFeePerGas: newGas.maxFeePerGas,
|
|
48
|
+
maxPriorityFeePerGas: newGas.maxPriorityFeePerGas,
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=replace-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-transaction.js","sourceRoot":"","sources":["../src/replace-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,OAAkC,EACpB,EAAE;IAChB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAClD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IACD,yEAAyE;IACzE,2EAA2E;IAC3E,kFAAkF;IAClF,2EAA2E;IAC3E,4EAA4E;IAC5E,iFAAiF;IACjF,OAAO,YAAY,CAAC,eAAe,CAAC;QAClC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI;QACjC,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;KACI,CAAC,CAAA;AAC1D,CAAC,CAAA"}
|
package/dist/tracker.d.ts
CHANGED
|
@@ -36,16 +36,18 @@
|
|
|
36
36
|
* pub/sub primitive is `chain-source`'s `Subscriptions<E>`.
|
|
37
37
|
*/
|
|
38
38
|
import type { ChainSource, Capabilities, RawTx } from '@valve-tech/chain-source';
|
|
39
|
+
import type { TxGroupEvent } from './group-events.js';
|
|
39
40
|
import { type Address, type At, type Hash, type TxEvent, type TxStatus } from './events.js';
|
|
40
41
|
import { type BulkSelector, type TxTrackerStore } from './store.js';
|
|
41
42
|
/**
|
|
42
43
|
* Lost-signal policy (spec §8). `'emit-uncertain'` is the default
|
|
43
44
|
* — every transition to a degraded source emits `signal-degraded`.
|
|
44
45
|
* `'silent'` keeps the events to itself; `'receipt-poll-fallback'`
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* `'
|
|
48
|
-
*
|
|
46
|
+
* fetches `eth_getTransactionReceipt` every `pollEveryBlocks` block
|
|
47
|
+
* ticks and emits `seen-in-block` with `source: 'receipt-poll'` on a
|
|
48
|
+
* hit. Requires `capabilities().receiptByHash === 'available'`;
|
|
49
|
+
* when unavailable, downgrades to emit-uncertain semantics with a
|
|
50
|
+
* one-shot warning via `onError`.
|
|
49
51
|
*/
|
|
50
52
|
export type LostSignalPolicy = 'emit-uncertain' | 'silent' | {
|
|
51
53
|
strategy: 'receipt-poll-fallback';
|
|
@@ -76,6 +78,15 @@ export interface TrackOptions {
|
|
|
76
78
|
* `unseen-for-N-blocks` fires. Default 30 (spec §6.1).
|
|
77
79
|
*/
|
|
78
80
|
unseenThresholdBlocks?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Eager receipt enrichment. When true, fetch the transaction
|
|
83
|
+
* receipt at seen-in-block time and attach it to the event via
|
|
84
|
+
* the `receipt` field. Adds one RPC per inclusion. Default false.
|
|
85
|
+
* Capability gate: requires source.capabilities().receiptByHash ===
|
|
86
|
+
* 'available'; when unavailable, events still flow but `receipt`
|
|
87
|
+
* is absent and a one-shot warning surfaces via onError.
|
|
88
|
+
*/
|
|
89
|
+
withReceipts?: boolean;
|
|
79
90
|
}
|
|
80
91
|
/** Bulk subscription options — extends per-hash `TrackOptions`. */
|
|
81
92
|
export interface BulkTrackOptions extends TrackOptions {
|
|
@@ -131,6 +142,34 @@ export interface CreateTxTrackerOptions {
|
|
|
131
142
|
onError?: (method: string, err: unknown) => void;
|
|
132
143
|
lifecycle?: 'eager' | 'lazy';
|
|
133
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Options for a group subscription. All fields are optional — the group
|
|
147
|
+
* works with defaults. See `createTxGroup` in `group.ts`.
|
|
148
|
+
*/
|
|
149
|
+
export interface GroupOptions {
|
|
150
|
+
/** Optional human-readable group ID echoed in events. Default: random. */
|
|
151
|
+
groupId?: string;
|
|
152
|
+
/** Per-member TrackOptions applied to each hash. */
|
|
153
|
+
memberOptions?: TrackOptions;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Handle returned by `tracker.group(hashes, options?)`. Exposes three
|
|
157
|
+
* consumption shapes (async iterator, callback, snapshot) over the same
|
|
158
|
+
* group-event stream, plus a `stop()` to tear down all member
|
|
159
|
+
* subscriptions.
|
|
160
|
+
*/
|
|
161
|
+
export interface TxGroupSubscription {
|
|
162
|
+
/** Async-iterable surface over the group event stream. */
|
|
163
|
+
events(): AsyncIterable<TxGroupEvent>;
|
|
164
|
+
/**
|
|
165
|
+
* Imperative callback subscription. Returns an unsubscribe handle.
|
|
166
|
+
*/
|
|
167
|
+
subscribe(cb: (event: TxGroupEvent) => void): () => void;
|
|
168
|
+
/** Snapshot of each member's current `TxStatus` (null if not yet observed). */
|
|
169
|
+
snapshot(): Record<Hash, TxStatus | null>;
|
|
170
|
+
/** Tear down all member subscriptions and emit `group-stopped`. */
|
|
171
|
+
stop(): void;
|
|
172
|
+
}
|
|
134
173
|
/** Public surface returned by `createTxTracker`. */
|
|
135
174
|
export interface TxTracker {
|
|
136
175
|
start(): void;
|
|
@@ -143,6 +182,13 @@ export interface TxTracker {
|
|
|
143
182
|
trackPredicate(match: (tx: RawTx) => boolean, options?: BulkTrackOptions): TxSubscription;
|
|
144
183
|
capabilities(): Capabilities;
|
|
145
184
|
subscribeAll(cb: (event: TxEvent) => void): () => void;
|
|
185
|
+
/**
|
|
186
|
+
* Cross-tx correlation — track a logical group of related hashes
|
|
187
|
+
* (e.g., a wallet's "claim + swap" pair). Emits group-level
|
|
188
|
+
* synthesis events derived from the per-member event streams.
|
|
189
|
+
* See spec §18.1, v0.8.0 design F3.
|
|
190
|
+
*/
|
|
191
|
+
group(hashes: Hash[], options?: GroupOptions): TxGroupSubscription;
|
|
146
192
|
}
|
|
147
193
|
/**
|
|
148
194
|
* Build a configured tracker.
|
package/dist/tracker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EAGZ,KAAK,
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
|