/**
 * Awake Lambda Development Logger
 *
 * Provides secure logging with sensitive data masking, payload truncation,
 * and request correlation for Awake Lambda Development.
 *
 * @module bin/commands/dev/logger
 *
 * @see Requirements 14.2, 14.3, 14.4, 14.5, 14.6
 */
/**
 * Default maximum payload length before truncation.
 */
export declare const DEFAULT_MAX_PAYLOAD_LENGTH = 1024;
/**
 * Masked value placeholder.
 */
export declare const MASKED_VALUE = "[MASKED]";
/**
 * Sensitive key patterns for environment variables and headers.
 * Keys matching these patterns (case-insensitive) will be masked.
 *
 * @see Requirements 14.2, 14.6
 */
export declare const SENSITIVE_KEY_PATTERNS: readonly RegExp[];
/**
 * Sensitive header names (exact match, case-insensitive).
 *
 * @see Requirements 14.6
 */
export declare const SENSITIVE_HEADERS: readonly string[];
/**
 * Logger configuration options.
 */
export interface LoggerConfig {
    /** Enable debug mode (disables masking when true) */
    readonly debugFullPayload?: boolean;
    /** Maximum payload length before truncation (default: 1024) */
    readonly maxPayloadLength?: number;
    /** Current request ID for correlation */
    readonly requestId?: string;
    /** Log level */
    readonly level?: LogLevel;
}
/**
 * Log levels.
 */
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
/**
 * Log entry structure.
 */
export interface LogEntry {
    /** ISO timestamp */
    readonly timestamp: string;
    /** Log level */
    readonly level: LogLevel;
    /** Log message */
    readonly message: string;
    /** Request ID for correlation */
    readonly requestId?: string;
    /** Additional data */
    readonly data?: Record<string, unknown>;
}
/**
 * Check if a key matches any sensitive pattern.
 *
 * @param key - The key to check
 * @returns True if the key matches a sensitive pattern
 *
 * @see Requirements 14.2
 */
export declare function isSensitiveKey(key: string): boolean;
/**
 * Check if a header name is sensitive.
 *
 * @param headerName - The header name to check
 * @returns True if the header is sensitive
 *
 * @see Requirements 14.6
 */
export declare function isSensitiveHeader(headerName: string): boolean;
/**
 * Mask a value by replacing it with the masked placeholder.
 *
 * @param value - The value to mask
 * @returns The masked value placeholder
 */
export declare function maskValue(value: unknown): string;
/**
 * Mask sensitive values in an object.
 *
 * Recursively traverses the object and masks values for keys
 * that match sensitive patterns.
 *
 * @param obj - The object to mask
 * @param debugFullPayload - If true, skip masking
 * @returns A new object with sensitive values masked
 *
 * @see Requirements 14.2, 14.4
 */
export declare function maskSensitiveData<T extends Record<string, unknown>>(obj: T, debugFullPayload?: boolean): T;
/**
 * Mask sensitive headers in a headers object.
 *
 * @param headers - The headers object to mask
 * @param debugFullPayload - If true, skip masking
 * @returns A new headers object with sensitive values masked
 *
 * @see Requirements 14.6
 */
export declare function maskSensitiveHeaders(headers: Record<string, string | string[] | undefined>, debugFullPayload?: boolean): Record<string, string | string[] | undefined>;
/**
 * Mask sensitive environment variables.
 *
 * @param env - The environment variables object to mask
 * @param debugFullPayload - If true, skip masking
 * @returns A new object with sensitive values masked
 *
 * @see Requirements 14.2
 */
export declare function maskEnvironmentVariables(env: Record<string, string | undefined>, debugFullPayload?: boolean): Record<string, string | undefined>;
/**
 * Truncate a payload string if it exceeds the maximum length.
 *
 * @param payload - The payload to truncate
 * @param maxLength - Maximum length before truncation (default: 1024)
 * @returns The truncated payload with length indicator, or original if within limit
 *
 * @see Requirements 14.3
 */
export declare function truncatePayload(payload: string, maxLength?: number): string;
/**
 * Truncate an object payload by converting to JSON and truncating.
 *
 * @param payload - The payload object to truncate
 * @param maxLength - Maximum length before truncation (default: 1024)
 * @returns The truncated JSON string with length indicator
 *
 * @see Requirements 14.3
 */
export declare function truncateObjectPayload(payload: unknown, maxLength?: number): string;
/**
 * Live Dev Logger class.
 *
 * Provides structured logging with:
 * - Sensitive data masking
 * - Payload truncation
 * - Request ID correlation
 *
 * @see Requirements 14.2, 14.3, 14.5
 *
 * @example
 * ```typescript
 * const logger = new RuntimeAwakeLogger({ requestId: 'req-123' });
 * logger.info('Processing request', { event: eventData });
 * logger.error('Handler failed', { error: errorDetails });
 * ```
 */
export declare class RuntimeAwakeLogger {
    private readonly config;
    private currentRequestId;
    /**
     * Create a new RuntimeAwakeLogger.
     *
     * @param config - Logger configuration
     */
    constructor(config?: LoggerConfig);
    /**
     * Set the current request ID for correlation.
     *
     * @param requestId - The request ID
     *
     * @see Requirements 14.5
     */
    setRequestId(requestId: string | undefined): void;
    /**
     * Get the current request ID.
     *
     * @returns The current request ID
     */
    getRequestId(): string | undefined;
    /**
     * Check if debug mode is enabled.
     *
     * @returns True if debug mode is enabled
     */
    isDebugMode(): boolean;
    /**
     * Create a log entry with correlation data.
     *
     * @param level - Log level
     * @param message - Log message
     * @param data - Additional data
     * @returns The log entry
     *
     * @see Requirements 14.5
     */
    private createLogEntry;
    /**
     * Process data for logging (mask sensitive values, truncate payloads).
     *
     * @param data - The data to process
     * @returns Processed data
     */
    private processData;
    /**
     * Truncate large payload values in data.
     *
     * @param data - The data to process
     * @returns Data with truncated payloads
     */
    private truncateDataPayloads;
    /**
     * Format a log entry for console output.
     *
     * @param entry - The log entry
     * @returns Formatted string
     */
    private formatEntry;
    /**
     * Get icon for log level.
     *
     * @param level - Log level
     * @returns Icon string
     */
    private getLevelIcon;
    /**
     * Check if a log level should be output.
     *
     * @param level - Log level to check
     * @returns True if the level should be output
     */
    private shouldLog;
    /**
     * Log a debug message.
     *
     * @param message - Log message
     * @param data - Additional data
     */
    debug(message: string, data?: Record<string, unknown>): void;
    /**
     * Log an info message.
     *
     * @param message - Log message
     * @param data - Additional data
     */
    info(message: string, data?: Record<string, unknown>): void;
    /**
     * Log a warning message.
     *
     * @param message - Log message
     * @param data - Additional data
     */
    warn(message: string, data?: Record<string, unknown>): void;
    /**
     * Log an error message.
     *
     * @param message - Log message
     * @param data - Additional data
     */
    error(message: string, data?: Record<string, unknown>): void;
    /**
     * Log a request with masked sensitive data.
     *
     * @param requestId - Request ID
     * @param event - Request event
     * @param context - Request context
     *
     * @see Requirements 14.5, 14.6
     */
    logRequest(requestId: string, event: Record<string, unknown>, context?: Record<string, unknown>): void;
    /**
     * Log a response with masked sensitive data.
     *
     * @param requestId - Request ID
     * @param response - Response data
     * @param durationMs - Request duration in milliseconds
     *
     * @see Requirements 14.5
     */
    logResponse(requestId: string, response: Record<string, unknown>, durationMs: number): void;
    /**
     * Log an error with request correlation.
     *
     * @param requestId - Request ID
     * @param error - Error details
     * @param context - Additional context
     *
     * @see Requirements 14.5
     */
    logError(requestId: string, error: {
        name: string;
        message: string;
        stack?: string;
    }, context?: Record<string, unknown>): void;
    /**
     * Create a child logger with a specific request ID.
     *
     * @param requestId - Request ID for the child logger
     * @returns A new logger instance with the request ID set
     *
     * @see Requirements 14.5
     */
    withRequestId(requestId: string): RuntimeAwakeLogger;
}
/**
 * Create a default logger instance.
 *
 * @param config - Logger configuration
 * @returns A new RuntimeAwakeLogger instance
 */
export declare function createLogger(config?: LoggerConfig): RuntimeAwakeLogger;
/**
 * Global logger instance for convenience.
 */
export declare const defaultLogger: RuntimeAwakeLogger;
