import { PolicyEngine } from './policy-engine.js';
/**
 * Hot-reloadable policy engine wrapper.
 * Builds a new PolicyEngine off the event-loop critical path, then atomically swaps
 * `current` in one assignment. evaluate() always reads the active engine ref — never
 * blocks on file I/O and never returns "reload in progress" blocks.
 */
export declare class PolicyWatcher {
    private current;
    private watcher;
    private policyPath;
    private reloadTimer;
    private reloadInFlight;
    /** Callback invoked after a successful hot-reload (set by ProxyManager) */
    onReload: (() => void) | null;
    constructor(policyPath: string);
    /** Synchronous initial load only — subsequent reloads are debounced + async. */
    private loadPolicySync;
    private buildEngineFromDisk;
    private scheduleReload;
    private reloadPolicyAsync;
    private startWatching;
    /**
     * Get the current (active) policy engine.
     * Always the latest successfully loaded version; never null after initial load.
     */
    get(): PolicyEngine | null;
    /** Force reload from disk (e.g. after cloud policy sync write). */
    reloadNow(): Promise<void>;
    /** @internal — deterministic reload for tests (skips chokidar debounce). */
    forceReloadForTests(): Promise<void>;
    close(): void;
}
//# sourceMappingURL=policy-watcher.d.ts.map