import type { Adapter } from "../adapters/index.js"; import type { ImageFormat } from "../image/index.js"; import type { NixKitIntegration } from "../integrations/index.js"; export type NixOutputMode = "static" | "server" | "hybrid"; export type TrailingSlashMode = "always" | "never" | "ignore"; export interface NixConfig { root?: string; appDir?: string; islandsDir?: string; contentDir?: string; publicDir?: string; outDir?: string; site?: string; base?: string; trailingSlash?: TrailingSlashMode; output?: NixOutputMode; adapter?: Adapter; images?: { formats?: ImageFormat[]; quality?: number; strict?: boolean; }; cache?: { dir?: string; defaultRevalidate?: number; }; security?: { allowedOrigins?: string[]; strictOrigin?: boolean; bodyLimit?: number; /** Security response headers. Set to `false` to disable defaults. */ headers?: SecurityHeadersConfig | false; }; router?: { enabled?: boolean; prefetch?: boolean; }; integrations?: NixKitIntegration[]; } /** Security headers configuration (runtime-security ยง14). */ export interface SecurityHeadersConfig { /** X-Content-Type-Options: nosniff. Default: true. */ noSniff?: boolean; /** Referrer-Policy. Default: "strict-origin-when-cross-origin". */ referrerPolicy?: string; /** * Content-Security-Policy. Set to a string to enable. * Use "nonce" placeholder to inject per-request nonces. */ contentSecurityPolicy?: string; /** Strict-Transport-Security. Only applied under HTTPS. Default: unset. */ hsts?: string | true; /** X-Frame-Options or CSP frame-ancestors. Default: "SAMEORIGIN". */ frameAncestors?: string; /** Permissions-Policy. Default: unset. */ permissionsPolicy?: string; } export interface ResolvedNixConfig { root: string; appDir: string; islandsDir: string; contentDir: string; publicDir: string; outDir: string; site?: string; base: string; trailingSlash: TrailingSlashMode; output: NixOutputMode; adapter?: Adapter; images: { formats: ImageFormat[]; quality: number; strict: boolean; }; cache: { dir: string; defaultRevalidate?: number; }; security: { allowedOrigins: string[]; strictOrigin: boolean; bodyLimit: number; headers: SecurityHeadersConfig | false; }; router: { enabled: boolean; prefetch: boolean; }; integrations: NixKitIntegration[]; configFile?: string; } export interface LoadNixConfigOptions { root?: string; configFile?: string; command?: "dev" | "build" | "preview" | "start" | "check" | "routes" | "doctor"; mode?: string; overrides?: NixConfig; } export declare function defineConfig(config: NixConfig): NixConfig; export declare function loadNixConfig(options?: LoadNixConfigOptions): Promise;