/**
 * HTTP Strict Transport Security (HSTS) Manager
 *
 * Manages HSTS header configuration with:
 * - Preload list compatibility checking
 * - Max-age validation
 * - includeSubDomains configuration
 *
 * @packageDocumentation
 * @module security/headers/hsts
 */
import { type HSTSConfig } from './types.js';
/**
 * Minimum recommended max-age (6 months in seconds)
 */
export declare const HSTS_MIN_RECOMMENDED_MAX_AGE = 15768000;
/**
 * Maximum sensible max-age (2 years in seconds)
 */
export declare const HSTS_MAX_SENSIBLE_MAX_AGE = 63072000;
/**
 * HSTS header name
 */
export declare const HSTS_HEADER_NAME = "Strict-Transport-Security";
/**
 * HSTS validation result
 */
export interface HSTSValidationResult {
    valid: boolean;
    preloadReady: boolean;
    issues: HSTSValidationIssue[];
}
/**
 * HSTS validation issue
 */
export interface HSTSValidationIssue {
    severity: 'error' | 'warning' | 'info';
    message: string;
    recommendation?: string;
}
/**
 * HSTS Manager for configuring Strict-Transport-Security headers
 *
 * @example
 * ```typescript
 * const hsts = new HSTSManager({
 *   maxAge: 63072000, // 2 years
 *   includeSubDomains: true,
 *   preload: true,
 * });
 *
 * // Validate configuration
 * const validation = hsts.validate();
 * if (!validation.valid) {
 *   console.error('HSTS configuration invalid:', validation.issues);
 * }
 *
 * // Build header
 * const headerValue = hsts.buildHeader();
 * res.setHeader('Strict-Transport-Security', headerValue);
 * ```
 */
export declare class HSTSManager {
    private config;
    constructor(config?: Partial<HSTSConfig>);
    /**
     * Get current configuration
     */
    getConfig(): HSTSConfig;
    /**
     * Update max-age value
     */
    setMaxAge(maxAge: number): this;
    /**
     * Enable or disable includeSubDomains
     */
    setIncludeSubDomains(include: boolean): this;
    /**
     * Enable or disable preload
     *
     * Enabling preload will automatically ensure:
     * - max-age is at least 1 year (31536000 seconds)
     * - includeSubDomains is enabled
     */
    setPreload(enable: boolean): this;
    /**
     * Validate the HSTS configuration
     */
    validate(): HSTSValidationResult;
    /**
     * Build the HSTS header value
     */
    buildHeader(): string;
    /**
     * Check if configuration is ready for HSTS preload list submission
     *
     * Requirements for hstspreload.org:
     * 1. Serve a valid certificate
     * 2. Redirect from HTTP to HTTPS on the same host
     * 3. Serve all subdomains over HTTPS
     * 4. Serve an HSTS header on the base domain with:
     *    - max-age at least 31536000 (1 year)
     *    - includeSubDomains directive
     *    - preload directive
     */
    isPreloadReady(): boolean;
    /**
     * Get time until max-age expires (for monitoring)
     *
     * @param setAt - When the header was set (defaults to now)
     * @returns Remaining seconds
     */
    getTimeRemaining(setAt?: Date): number;
    /**
     * Clone the manager with the same configuration
     */
    clone(): HSTSManager;
}
/**
 * Create an HSTS manager with production-ready defaults
 *
 * - max-age: 2 years
 * - includeSubDomains: true
 * - preload: false (enable explicitly after testing)
 */
export declare function createProductionHSTS(): HSTSManager;
/**
 * Create an HSTS manager with preload-ready configuration
 *
 * - max-age: 2 years (exceeds 1 year minimum)
 * - includeSubDomains: true
 * - preload: true
 */
export declare function createPreloadHSTS(): HSTSManager;
/**
 * Create an HSTS manager for development/testing
 *
 * WARNING: Uses short max-age for testing purposes only!
 *
 * - max-age: 300 seconds (5 minutes)
 * - includeSubDomains: false
 * - preload: false
 */
export declare function createDevelopmentHSTS(): HSTSManager;
/**
 * Create an HSTS manager with custom configuration
 */
export declare function createHSTS(config: Partial<HSTSConfig>): HSTSManager;
/**
 * Build an HSTS header value directly
 */
export declare function buildHSTSHeader(config: Partial<HSTSConfig>): string;
/**
 * Parse an HSTS header value into configuration
 */
export declare function parseHSTSHeader(header: string): HSTSConfig;
/**
 * Validate an HSTS header string
 */
export declare function validateHSTSHeader(header: string): HSTSValidationResult;
//# sourceMappingURL=hsts.d.ts.map