import type { One } from './vite/types';
/** The list of input keys will become optional, everything else will remain the same. */
export type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
export type GlobbedRouteImports = Record<string, () => Promise<unknown>>;
export type Endpoint = (req: Request) => Response | string | object | null;
export type RenderApp = (props: RenderAppProps) => Promise<string>;
export type LoaderProps<Params extends object = Record<string, string | string[]>> = {
    path: string;
    search?: string;
    subdomain?: string;
    params: Params;
    request?: Request;
};
export type RenderAppProps = {
    mode: One.RouteRenderMode | 'spa-shell';
    path: string;
    /**
     * Critical scripts that need to execute immediately (will use async).
     * These generate both modulepreload links and async script tags.
     */
    preloads?: string[];
    /**
     * Non-critical scripts that can wait (will only be modulepreload hints).
     * These only generate <link rel="modulepreload"> tags and load when imported.
     */
    deferredPreloads?: string[];
    css?: string[];
    /** When inlineLayoutCSS is enabled, this contains the actual CSS content to inline */
    cssContents?: string[];
    loaderServerData?: any;
    loaderData?: any;
    loaderProps?: LoaderProps;
    routePreloads?: Record<string, string>;
    /**
     * All matched routes with their loader data.
     * Ordered from root layout to leaf page (parent → child).
     */
    matches?: One.RouteMatch[];
};
//# sourceMappingURL=types.d.ts.map