interface CandidateDelta {
    addedCandidates: Set<string>;
    removedCandidates: Set<string>;
}
export interface ViteSourceCandidateChange extends CandidateDelta {
    file: string;
    runtimeAffecting: boolean;
}
interface ViteHmrModule {
    file?: string | null;
    id?: string | null;
    url?: string | null;
}
interface ViteHmrGeneratorOptions {
    hmr: {
        preserveDeletedCss: boolean;
    };
    target: string;
}
interface CreateViteHmrCandidateStateOptions {
    cleanGeneratedCssByFile: Map<string, string>;
    generatedClassSetByFile: Map<string, Set<string>>;
    getCommand: () => string | undefined;
    getGeneratorOptions: () => ViteHmrGeneratorOptions;
    getSourceCandidate: (file: string) => string | undefined;
}
export declare function createViteHmrCandidateState(options: CreateViteHmrCandidateStateOptions): {
    apply: (change: ViteSourceCandidateChange) => ViteSourceCandidateChange;
    armTargets: (cssModules: ViteHmrModule[], fallbackCssIds: Iterable<string>) => void;
    clear: () => void;
    createChange: (file: string, change: CandidateDelta, changeOptions?: {
        runtimeAffecting?: boolean;
    }) => ViteSourceCandidateChange;
    finishTarget: (file: string) => void;
    hasPendingCandidateAppend: () => boolean;
    hasPendingChange: () => boolean;
    queueFullRegeneration: () => void;
    resolve: (generatorCode: string, file: string) => ViteSourceCandidateChange | undefined;
    shouldForceFullRegeneration: (resolved: boolean) => boolean;
    snapshotDebugState: () => {
        pendingAddedCandidates: number;
        pendingCssTargets: number;
    };
};
export {};
