import type pino from "pino";
import type { SubscribeCheckoutDiffRequest, SessionOutboundMessage } from "./messages.js";
export type CheckoutDiffCompareInput = SubscribeCheckoutDiffRequest["compare"];
export type CheckoutDiffSnapshotPayload = Omit<Extract<SessionOutboundMessage, {
    type: "checkout_diff_update";
}>["payload"], "subscriptionId">;
export type CheckoutDiffMetrics = {
    checkoutDiffTargetCount: number;
    checkoutDiffSubscriptionCount: number;
    checkoutDiffWatcherCount: number;
    checkoutDiffFallbackRefreshTargetCount: number;
};
export declare class CheckoutDiffManager {
    private readonly logger;
    private readonly seaworkHome;
    private readonly targets;
    constructor(options: {
        logger: pino.Logger;
        seaworkHome: string;
    });
    subscribe(params: {
        cwd: string;
        compare: CheckoutDiffCompareInput;
    }, listener: (snapshot: CheckoutDiffSnapshotPayload) => void): Promise<{
        initial: CheckoutDiffSnapshotPayload;
        unsubscribe: () => void;
    }>;
    scheduleRefreshForCwd(cwd: string): void;
    getMetrics(): CheckoutDiffMetrics;
    dispose(): void;
    private normalizeCompare;
    private buildTargetKey;
    private closeTarget;
    private removeListener;
    private resolveCheckoutWatchRoot;
    private scheduleTargetRefresh;
    private computeCheckoutDiffSnapshot;
    private refreshTarget;
    private ensureTarget;
    private addWatcher;
    private ensureLinuxRepoTreeWatchers;
    private refreshLinuxRepoTreeWatchers;
    private listLinuxWatchDirectories;
}
//# sourceMappingURL=checkout-diff-manager.d.ts.map