import type { WsGateway } from '../ws/gateway.js';
type EventKind = 'add' | 'change' | 'unlink';
export type PagesWatcherCallback = (relPath: string, kind: EventKind) => void;
export declare class PagesWatcher {
    private pagesRoot;
    private gateway;
    private watcher;
    private suppressUntil;
    private readonly SUPPRESS_WINDOW_MS;
    private callbacks;
    constructor(pagesRoot: string, gateway: WsGateway);
    onChange(cb: PagesWatcherCallback): void;
    start(): void;
    /** Call before a programmatic write so the resulting chokidar event is suppressed. */
    suppress(relPath: string): void;
    /**
     * Broadcast a server-origin change event for a programmatic write.
     * Clients receive `page:changed { origin: 'server' }` and should silently reload
     * without showing the "file changed externally" dialog.
     * Does NOT fire the callback chain (callbacks are for external-origin indexing).
     */
    emitServerWrite(relPath: string): void;
    private emit;
    close(): Promise<void>;
}
export {};
