import type { Blockchain } from '../../blockchain'; import type { RpcClient } from '../../rpc'; import type { Wallet } from '../wallet'; import type { HeadValue } from '../walletdb/headValue'; import { Config } from '../../fileStores'; import { Logger } from '../../logger'; import { Mutex } from '../../mutex'; import { BlockHeader, Transaction } from '../../primitives'; import { WorkerPool } from '../../workerPool'; import { ChainProcessorWithTransactions } from './chainProcessorWithTransactions'; import { BackgroundNoteDecryptor } from './noteDecryptor'; import { RemoteChainProcessor } from './remoteChainProcessor'; import { ScanState } from './scanState'; export declare class WalletScanner { readonly logger: Logger; readonly wallet: Wallet; readonly workerPool: WorkerPool; readonly config: Config; readonly chain: Blockchain | null; readonly nodeClient: RpcClient | null; state: ScanState | null; lock: Mutex; /** * A snapshot of the accounts that have `scanningEnabled` set to true. Used * to tell what accounts should be scanned, and from what block. */ private scanningAccounts; constructor(options: { logger: Logger; wallet: Wallet; workerPool: WorkerPool; config: Config; nodeClient?: RpcClient | null; chain?: Blockchain | null; }); get running(): boolean; abort(): Promise; wait(): Promise; scan(): Promise; connectBlock(blockHeader: BlockHeader, transactions: Transaction[], decryptor: BackgroundNoteDecryptor, abort?: AbortController): Promise; private disconnectBlock; getChainProcessor(start: HeadValue | null): ChainProcessorWithTransactions | RemoteChainProcessor; /** * Checks whether `scanningAccounts` is stale or up-to-date. */ private haveWalletAccountsChanged; private getScanningAccountsWithHead; /** * Replaces `scanningAccounts` with fresh values from the wallet. */ private refreshScanningAccounts; private getEarliestHead; } //# sourceMappingURL=walletScanner.d.ts.map