export type RuntimeEntryType = 'html' | 'js' | 'css' | 'other';
export interface RuntimeSnapshotEntry {
    file: string;
    source: string;
    type: RuntimeEntryType;
    runtimeCandidate?: boolean | undefined;
}
export interface RuntimeProcessFileSets {
    html: Set<string>;
    js: Set<string>;
    css: Set<string>;
}
export interface RuntimeCompilationSnapshot<Entry extends RuntimeSnapshotEntry = RuntimeSnapshotEntry> {
    entries: Entry[];
    sourceHashByFile: Map<string, string>;
    runtimeAffectingSignatureByFile: Map<string, string>;
    runtimeAffectingHashByFile: Map<string, string>;
    hasOmittedKnownFiles: boolean;
    removedFiles: Set<string>;
    changedByType: Record<RuntimeEntryType, Set<string>>;
    runtimeAffectingChangedByType: Record<RuntimeEntryType, Set<string>>;
    processFiles: RuntimeProcessFileSets;
    linkedImpactsByEntry: Map<string, Set<string>>;
}
export interface RuntimeCompilationBuildState {
    iteration: number;
    sourceHashByFile: Map<string, string>;
    runtimeAffectingSignatureByFile: Map<string, string>;
    runtimeAffectingHashByFile: Map<string, string>;
    linkedByEntry: Map<string, Set<string>>;
    dependentsByLinkedFile: Map<string, Set<string>>;
    bundleMarkupCandidatesByFile: Map<string, Set<string>>;
    generatorCandidateSignature?: string | undefined;
}
export interface CreateRuntimeCompilationSnapshotOptions {
    changedFiles?: Iterable<string> | undefined;
    runtimeAffectingChangedFiles?: Iterable<string> | undefined;
    processFiles?: Iterable<string> | undefined;
    hasOmittedKnownFiles?: boolean | undefined;
    removedFiles?: Iterable<string> | undefined;
}
export interface BuildRuntimeCompilationSnapshotOptions {
    computeHash: (source: string) => string;
    createRuntimeAffectingSignature: (source: string, type: RuntimeEntryType) => string;
    forceAll?: boolean | undefined;
    hasOmittedKnownFiles?: boolean | undefined;
    removedFiles?: Iterable<string> | undefined;
}
export interface UpdateRuntimeCompilationBuildStateOptions {
    incremental?: boolean | undefined;
}
export declare function createRuntimeCompilationSnapshot<Entry extends RuntimeSnapshotEntry>(entries: Entry[], options?: CreateRuntimeCompilationSnapshotOptions): RuntimeCompilationSnapshot<Entry>;
export declare function buildRuntimeCompilationSnapshot<Entry extends RuntimeSnapshotEntry>(entries: Entry[], state: RuntimeCompilationBuildState, options: BuildRuntimeCompilationSnapshotOptions): RuntimeCompilationSnapshot<Entry>;
