import type { PackageManager, Workspace } from '../pm/index.ts';
export type IncrementalAction = 'build' | 'compile' | 'lint' | 'publint';
export interface IncrementalWorkspace extends Workspace {
    listed?: boolean;
}
interface WorkspaceFingerprint {
    externalDepsHash: string;
    inputHash: string;
    location: string;
    name: string;
    outputHash: string;
    packageJsonHash: string;
    workspaceDepsHash: string;
}
export interface IncrementalSnapshot {
    action: IncrementalAction;
    lockfileHash: string;
    lockfileImporters: Record<string, string>;
    optionsHash?: string;
    packageManager: string;
    rootHash: string;
    toolchainVersion: string;
    version: 1;
    workspaceGraphHash: string;
    workspaces: Record<string, WorkspaceFingerprint>;
}
export interface IncrementalPlan {
    action: IncrementalAction;
    affectedWorkspaceNames: string[];
    current: IncrementalSnapshot;
    full: boolean;
    previous?: IncrementalSnapshot;
    reason?: string;
}
export interface CreateIncrementalPlanParams {
    action: IncrementalAction;
    isVerbose?: boolean;
    options?: unknown;
    pm: PackageManager;
    workspaces: IncrementalWorkspace[];
}
export declare function createIncrementalPlan(params: CreateIncrementalPlanParams): IncrementalPlan;
export declare function writeIncrementalSnapshot(params: CreateIncrementalPlanParams): void;
export declare function clearIncrementalSnapshot(action: IncrementalAction): void;
export {};
//# sourceMappingURL=incremental.d.ts.map