export type WatcherCatchupSkipReason = "archived-session-log" | "access-denied"; export type WatcherCatchupSkipRecord = { company: string; path: string; reason: WatcherCatchupSkipReason; size: number; mtimeMs: number; recordedAt: number; grantVersion?: string; }; export declare const WATCHER_CATCHUP_SKIP_MAX_RECORDS = 50000; export declare const WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS: number; export declare const WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS: number; export declare const WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS: number; export declare function watcherCatchupSkipStorePath(stateDir: string, hqRoot: string): string; /** Host-local skip state. The caller reads during warm-up and commits while holding the sync operation lock. */ export declare class WatcherCatchupSkipStore { private readonly filePath; private readonly warn; private readonly now; private readonly maxRecords; private readonly warned; private loaded; private unresolvedCompanies; private indexed; private capEvicted; private needsPersist; private readonly currentGrantVersions; private currentGrantCompanies; private readonly currentOntologyPush; constructor(filePath: string, warn?: (message: string) => void, now?: () => number, maxRecords?: number); read(): WatcherCatchupSkipRecord[]; matches(company: string, relativePath: string, stat: { size: number; mtimeMs: number; }, options?: { grantVersion?: string; }): boolean; hasRecord(company: string, relativePath: string): boolean; setCurrentGrantVersion(company: string, grantVersion: string): void; setCurrentGrantCompanies(companies: Iterable): void; hasCurrentGrantVersion(company: string): boolean; hasCurrentGrantCompany(company: string): boolean; recordUnresolvedCompany(company: string): void; clearUnresolvedCompany(company: string): void; hasFreshUnresolvedCompany(company: string): boolean; clearResolvedGrantCompanies(): void; setCurrentOntologyPush(company: string, enabled: boolean): void; allowsOntologyEntityPush(company: string): boolean; takeCapEvictedCount(): number; commit(records: readonly WatcherCatchupSkipRecord[]): void; pruneMissing(isPresent: (record: WatcherCatchupSkipRecord) => boolean): void; private write; private retainWithinCap; private persistCurrentRecords; private retainUnresolvedCompaniesWithinCap; private rebuildIndex; private warnOnce; } //# sourceMappingURL=watcher-catchup-skip-store.d.ts.map