import type { Amount } from './Amount'; /** * A UTXO that is tracked locally (either as spent or as a new unspent change output). */ export interface CachedUtxo { txid: string; n: number; amount: Amount; script: Uint8Array; } /** * Local cache that tracks spent and unspent UTXOs between broadcast and API indexing. * * When a transaction is broadcast, the API may still return the spent inputs * (stale) and may not yet know about the new change outputs. This cache bridges * that gap so that successive transactions can be built immediately. * * - **Spent**: UTXOs consumed by a local broadcast. Filtered out even if the * API still returns them. * - **Unspent**: Change outputs created by a local broadcast. Included even if * the API does not know about them yet. * * When a broadcasted transaction is confirmed, {@link confirmTransaction} should * be called to clean up the cache entries (the API has caught up). */ export declare class UtxoLocalCache { /** "txid:n" → broadcastTxId that consumed the UTXO. */ private spent; /** address → locally created unspent UTXOs. */ private unspent; /** * Marks a UTXO as spent by a broadcast transaction. * * If the UTXO was a locally cached unspent (e.g. a change output from a * previous broadcast), it is also removed from the unspent set. */ markSpent(txid: string, n: number, broadcastTxId: string): void; /** Returns `true` if the UTXO has been marked as spent by a local broadcast. */ isSpent(txid: string, n: number): boolean; /** Adds a new unspent UTXO (typically a change output from a local broadcast). */ addUnspent(address: string, utxo: CachedUtxo): void; /** Returns a copy of locally cached unspent UTXOs for the given address. */ getUnspent(address: string): CachedUtxo[]; /** * Cleans up cache entries for a confirmed broadcast transaction. * * Once the API has indexed the transaction, the local overrides are no longer * needed: * - Spent entries consumed by this broadcast are removed. * - Unspent entries created by this broadcast are removed. */ confirmTransaction(broadcastTxId: string): void; }