import type { VextErrorMiddleware, VextMiddleware } from "../types/middleware.js"; import type { VextRequest } from "../types/request.js"; import type { VextResponse } from "../types/response.js"; import type { VextContentSecurityPolicyConfig, VextHstsConfig, VextPermissionsPolicyConfig, VextSecurityHeadersConfig, VextSecurityHeadersPreset } from "../types/security-headers.js"; export type { VextContentSecurityPolicyConfig, VextCspDirectiveValue, VextHstsConfig, VextPermissionsPolicyConfig, VextSecurityHeadersConfig, VextSecurityHeadersPreset, } from "../types/security-headers.js"; export interface ResolvedSecurityHeadersConfig { enabled: boolean; preset: VextSecurityHeadersPreset; contentTypeOptions?: "nosniff" | false; referrerPolicy?: string | false; frameOptions?: "DENY" | "SAMEORIGIN" | false; hsts?: false | VextHstsConfig; contentSecurityPolicy?: false | string | VextContentSecurityPolicyConfig; permissionsPolicy?: false | VextPermissionsPolicyConfig; crossOriginOpenerPolicy?: false | "same-origin" | "same-origin-allow-popups" | "unsafe-none"; crossOriginEmbedderPolicy?: false | "require-corp" | "credentialless" | "unsafe-none"; crossOriginResourcePolicy?: false | "same-origin" | "same-site" | "cross-origin"; headers?: Record; skipPaths?: string[]; } interface ApplySecurityHeadersOptions { defaultEnabled?: boolean; } /** * Applies security headers directly so error and 404 paths can share the same * behavior even when they do not run through the normal middleware chain. */ export declare function applySecurityHeaders(req: VextRequest, res: VextResponse, options?: VextSecurityHeadersConfig, applyOptions?: ApplySecurityHeadersOptions): void; export declare function createSecurityHeadersMiddleware(options?: VextSecurityHeadersConfig): VextMiddleware; export declare const securityHeaders: typeof createSecurityHeadersMiddleware; export declare function withSecurityHeadersErrorHandler(handler: VextErrorMiddleware, options?: VextSecurityHeadersConfig): VextErrorMiddleware; export declare function withSecurityHeadersNotFoundHandler(handler: VextMiddleware, options?: VextSecurityHeadersConfig): VextMiddleware; export declare function resolveSecurityHeadersConfig(options: VextSecurityHeadersConfig | undefined, defaultEnabled?: boolean): ResolvedSecurityHeadersConfig; export declare function buildSecurityHeaders(req: VextRequest, config: ResolvedSecurityHeadersConfig): Record;