export declare const DASHBOARD_STATIC_CSP = "default-src 'none'; script-src 'self'; style-src 'self'; connect-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'"; export declare const DASHBOARD_STATIC_SECURITY_HEADERS: Readonly<{ "Content-Security-Policy": "default-src 'none'; script-src 'self'; style-src 'self'; connect-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'"; "X-Frame-Options": "DENY"; "Permissions-Policy": "accelerometer=(), camera=(), geolocation=(), gyroscope=(), microphone=(), payment=(), usb=()"; "Cross-Origin-Opener-Policy": "same-origin"; "Referrer-Policy": "no-referrer"; "X-Content-Type-Options": "nosniff"; "Cross-Origin-Resource-Policy": "same-origin"; }>; export interface DashboardManifestEntry { readonly file: string; readonly src?: string; readonly name?: string; readonly isEntry?: boolean; readonly isDynamicEntry?: boolean; readonly imports?: readonly string[]; readonly dynamicImports?: readonly string[]; readonly css?: readonly string[]; readonly assets?: readonly string[]; } export type DashboardManifest = Readonly>; export interface DashboardStaticOptions { /** Directory containing index.html, assets, and the Vite manifest. */ readonly assetRoot: string; /** Parsed Vite manifest, or a path to one. */ readonly manifest?: DashboardManifest | string; /** Optional manifest path; useful when `manifest` is omitted. */ readonly manifestPath?: string; /** Maximum manifest file size when loading from disk. */ readonly maxManifestBytes?: number; } export interface DashboardStaticRequest { readonly method: string; /** Raw Node request target (`url`), including any query if present. */ readonly path?: string; /** Alias accepted for direct use with `http.IncomingMessage`. */ readonly url?: string; } export interface DashboardStaticHandled { readonly handled: true; readonly status: 200 | 308 | 404 | 405; readonly headers: Readonly>; /** Omitted for HEAD and for empty error/redirect responses. */ readonly body?: Buffer; } export interface DashboardStaticNotHandled { readonly handled: false; } export type DashboardStaticResponse = DashboardStaticHandled | DashboardStaticNotHandled; export declare class DashboardStaticHandler { #private; constructor(options: DashboardStaticOptions); handle(request: DashboardStaticRequest): DashboardStaticResponse; handle(method: string, path: string): DashboardStaticResponse; resolve(request: DashboardStaticRequest): DashboardStaticResponse; resolve(method: string, path: string): DashboardStaticResponse; } export declare function createDashboardStaticHandler(options: DashboardStaticOptions): DashboardStaticHandler; /** Production helper; tests should inject a temporary root instead. */ export declare function getProductionDashboardAssetRoot(): string;