import type { FSWatcher } from 'fs';
import { type DependencyGraph } from './dependencyGraph';
import { type ModuleVersions } from './moduleVersionTracker';
import type { HMRWebSocket } from '../../types/websocket';
import type { BuildConfig } from '../../types/build';
import { type ResolvedBuildPaths } from './configResolver';
export type HMRState = {
    connectedClients: Set<HMRWebSocket>;
    activeFrameworks: Set<string>;
    dependencyGraph: DependencyGraph;
    isRebuilding: boolean;
    rebuildQueue: Set<string>;
    rebuildTimeout: NodeJS.Timeout | null;
    fileChangeQueue: Map<string, string[]>;
    debounceTimeout: NodeJS.Timeout | null;
    fileHashes: Map<string, number>;
    watchers: FSWatcher[];
    moduleVersions: ModuleVersions;
    sourceFileVersions: Map<string, number>;
    config: BuildConfig;
    resolvedPaths: ResolvedBuildPaths;
    vueChangeTypes: Map<string, 'template-only' | 'script' | 'full'>;
    assetStore: Map<string, Uint8Array>;
    manifest: Record<string, string>;
    rebuildCount: number;
    lastHmrPath?: string;
    lastHmrFramework?: string;
};
export declare const createHMRState: (config: BuildConfig) => HMRState;
export declare const incrementSourceFileVersion: (state: HMRState, filePath: string) => number;
export declare const incrementSourceFileVersions: (state: HMRState, filePaths: string[]) => void;
