const stream = client.subscribeTransactions([filter]);
for await (const resp of stream) {
if (resp.transaction) {
// resp.sequence - monotonic per-stream sequence number
// resp.transaction.filterIds - which of your filters this tx matched
const tx = resp.transaction.transaction;
if (tx) {
// tx.slot, tx.signature, tx.accountKeys, tx.instructions
// enrichment (only when includeEnrichment is set): tx.feePayer,
// tx.programIds, tx.computeUnitPrice, tx.computeLimit,
// tx.loadedWritableAddresses, tx.loadedReadonlyAddresses
console.log(`seq=${resp.sequence} slot=${tx.slot} cuPrice=${tx.computeUnitPrice}`);
}
} else if (resp.filterValidation) {
// one per filter after each add/remove
const r = resp.filterValidation;
console.log(`filter ${r.filterId} accepted=${r.accepted} ${r.rejectionReason}`);
} else if (resp.heartbeat) {
// resp.heartbeat.serverTsMs - server wall-clock, ms since epoch
} else if (resp.pong) {
// resp.pong.pingId
}
}