import type { Conversation, ConversationMeta, ConversationPage, GetConversationOptions, GetConversationPageOptions, Profile, ScanOptions, ScanResult, SearchOptions, SearchResult, SingleFilePage } from "./types"; import { type IndexJob } from "./watcher/index-queue"; export interface PersistentConfig { dbPath?: string; sidecar?: boolean; } export interface ConversationScannerOptions { metadataCacheSize?: number; conversationCacheSize?: number; persistent?: false | PersistentConfig; } export interface WatchOptions { profiles?: Profile[]; debounceMs?: number; periodicMs?: number; } export interface ScannerChangeEvent { filePath: string; account: string; meta: ConversationMeta | null; reason: IndexJob["reason"]; } export declare class ConversationScanner { private metadataCache; private conversationLRU; private sessionIdIndex; private projects; private indexer; private searchContents; private lastTier; private readonly dbPath; private readonly sidecarEnabled; private engineInstance; private inFlightScan; private emitter; private watcher; private queue; private periodicTimer; private inFlightReconcile; constructor(options?: ConversationScannerOptions); private get persistent(); private engine; close(): Promise; scan(options?: ScanOptions): Promise; private runScan; private scanPersistent; private finalize; private scanInMemory; search(query: string, options?: SearchOptions): Promise; getConversation(id: string, _options?: GetConversationOptions): Promise; getConversationPage(id: string, options: GetConversationPageOptions): Promise; parseSingleFilePage(filePath: string, account: string | undefined, options: GetConversationPageOptions): Promise; private readonly refreshesInFlight; refreshFile(filePath: string, account?: string): Promise; private doRefreshFile; private extendCachedConversations; getMetadataCache(): Map; getConversationsBySessionId(sessionId: string): ConversationMeta[]; getProjects(): string[]; on(event: "change", listener: (e: ScannerChangeEvent) => void): this; on(event: "error", listener: (err: Error) => void): this; off(event: string, listener: (...args: any[]) => void): this; watch(options?: WatchOptions): Promise; private periodicReconcile; unwatch(): Promise; private discoverWithProviders; private resolveProviderForFile; private addToSessionIndex; private removeFromSessionIndex; private resolveSessionId; private sortBySessionPriority; private resolveProfiles; private transformView; private toTree; private toGrouped; } //# sourceMappingURL=scanner.d.ts.map