import type pino from "pino";
import type { SubscribeCheckoutDiffRequest, SessionOutboundMessage } from "./messages.js";
import type { WorkspaceGitService } from "./workspace-git-service.js";
export type CheckoutDiffCompareInput = SubscribeCheckoutDiffRequest["compare"];
export type CheckoutDiffSnapshotPayload = Omit<Extract<SessionOutboundMessage, {
    type: "checkout_diff_update";
}>["payload"], "subscriptionId">;
export interface CheckoutDiffMetrics {
    checkoutDiffTargetCount: number;
    checkoutDiffSubscriptionCount: number;
    checkoutDiffWatcherCount: number;
    checkoutDiffFallbackRefreshTargetCount: number;
}
export declare class CheckoutDiffManager {
    private readonly workspaceGitService;
    private readonly targets;
    constructor(options: {
        logger: pino.Logger;
        paseoHome: string;
        workspaceGitService: WorkspaceGitService;
    });
    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 scheduleTargetRefresh;
    private computeCheckoutDiffSnapshot;
    private refreshTarget;
    private ensureTarget;
}
//# sourceMappingURL=checkout-diff-manager.d.ts.map