import type { RsbuildDevServer, Rspack } from '@rsbuild/core';
import type { ServerBuild } from 'react-router';
import type { ReactRouterManifestForDev } from './manifest.js';
export type ReactRouterDevManifest = ReactRouterManifestForDev;
export type ReactRouterDevBuildPlan = {
    defaultEntryName: string;
    entryNames: readonly string[];
};
export type ReactRouterDevManifestSet = Readonly<Record<string, ReactRouterDevManifest>>;
export type ReactRouterServerBuilds = Readonly<Record<string, ServerBuild>>;
export type PairedDevStats = {
    web: Rspack.Stats;
    node: Rspack.Stats;
};
export type DevRuntimeStats = Rspack.Stats | Rspack.MultiStats | PairedDevStats;
export type DependencySnapshot = {
    files: ReadonlySet<string>;
    contexts: ReadonlySet<string>;
    missing: ReadonlySet<string>;
};
export type DevChangedFiles = {
    known: boolean;
    files: ReadonlySet<string>;
};
export type DevGraphChanges = {
    web: DevChangedFiles;
    node: DevChangedFiles;
};
export type DevCompilationIdentity = symbol;
export type DevCompileAttemptIdentity = symbol;
export type DevGraphIdentity = {
    web: DevCompilationIdentity | undefined;
    node: DevCompilationIdentity | undefined;
    nodeWeb: DevCompilationIdentity | undefined;
    attempt: DevCompileAttemptIdentity | undefined;
};
export type WebArtifact = {
    manifestsByEntryName: ReactRouterDevManifestSet;
    dependencies: DependencySnapshot;
};
export declare const snapshotDevChangedFiles: (compiler: Pick<Rspack.Compiler, "modifiedFiles" | "removedFiles"> | undefined) => DevChangedFiles;
export declare const snapshotDependencies: (compilation: Rspack.Compilation) => DependencySnapshot;
export declare const isSafeOneSidedChange: (changes: DevChangedFiles, dependencies: DependencySnapshot) => boolean;
export declare const isPairedDevStats: (stats: DevRuntimeStats) => stats is PairedDevStats;
export declare const getEnvironmentStats: (stats: DevRuntimeStats, name: "web" | "node") => Rspack.Stats | undefined;
export declare const evaluateServerBuilds: (server: RsbuildDevServer, entryNames: readonly string[]) => Promise<ReactRouterServerBuilds>;
export declare const pinServerBuildsToManifests: (builds: ReactRouterServerBuilds, entryNames: readonly string[], manifestsByEntryName: ReactRouterDevManifestSet) => ReactRouterServerBuilds;
