import type { BuildManifest as ReactRouterBuildManifest, Config as ReactRouterConfig } from '@react-router/dev/config';
import type { NormalizedConfig } from '@rsbuild/core';
import type { RouteConfigEntry } from '@react-router/dev/routes';
import * as Effect from 'effect/Effect';
export type BuildEndHook = {
    bivarianceHack(args: {
        buildManifest: ReactRouterBuildManifest | undefined;
        reactRouterConfig: ResolvedReactRouterConfig;
        viteConfig: NormalizedConfig;
    }): void | Promise<void>;
}['bivarianceHack'];
type SplitRouteModulesConfig = boolean | 'enforce';
export type Config = Omit<ReactRouterConfig, 'buildEnd' | 'future' | 'splitRouteModules' | 'subResourceIntegrity'> & {
    buildEnd?: BuildEndHook;
    future?: Partial<FutureConfig>;
    splitRouteModules?: SplitRouteModulesConfig;
    subResourceIntegrity?: boolean;
};
type FutureConfig = {
    unstable_optimizeDeps: boolean;
    unstable_subResourceIntegrity: boolean;
    unstable_trailingSlashAwareDataRequests: boolean;
    v8_middleware: boolean;
    v8_splitRouteModules: boolean | 'enforce';
    v8_viteEnvironmentApi: boolean;
};
type RouteManifestEntry = {
    id: string;
    parentId?: string;
    path?: string;
    index?: boolean;
    caseSensitive?: boolean;
    file: string;
};
type RouteManifest = Record<string, RouteManifestEntry>;
type ResolveReactRouterConfigResult = {
    resolved: ResolvedReactRouterConfig;
    presets: NonNullable<Config['presets']>;
    hasConfiguredServerModuleFormat: boolean;
};
export type ResolvedReactRouterConfig = Readonly<{
    appDirectory: string;
    basename: string;
    buildDirectory: string;
    buildEnd?: Config['buildEnd'];
    future: FutureConfig;
    prerender: Config['prerender'];
    routeDiscovery: Config['routeDiscovery'];
    routes: RouteManifest;
    serverBuildFile: NonNullable<ReactRouterConfig['serverBuildFile']>;
    serverBundles?: Config['serverBundles'];
    serverModuleFormat: NonNullable<ReactRouterConfig['serverModuleFormat']>;
    splitRouteModules: SplitRouteModulesConfig;
    subResourceIntegrity: boolean;
    ssr: NonNullable<ReactRouterConfig['ssr']>;
    allowedActionOrigins: string[] | false;
    unstable_routeConfig: RouteConfigEntry[];
}>;
export declare const resolveReactRouterConfigEffect: (reactRouterUserConfig: Config) => Effect.Effect<ResolveReactRouterConfigResult, Error, never>;
export declare const resolveReactRouterConfig: (reactRouterUserConfig: Config) => Promise<ResolveReactRouterConfigResult>;
export {};
