/**
 * Logger implementations for Node.js Layer Management
 *
 * Provides different logger implementations for various use cases:
 * - NoOpLogger: Silent logger for production use
 * - ConsoleLogger: Console-based logger for development and debugging
 *
 * @module logger
 */
import { Logger } from './nodejs-layer-manager';
/**
 * No-operation logger that silently discards all log messages.
 *
 * This is the default logger used when no custom logger is provided.
 * Useful for production environments where logging overhead should be minimized.
 */
export declare class NoOpLogger implements Logger {
    debug(_message: string, _meta?: Record<string, unknown>): void;
    info(_message: string, _meta?: Record<string, unknown>): void;
    warn(_message: string, _meta?: Record<string, unknown>): void;
    error(_message: string, _meta?: Record<string, unknown>): void;
}
/**
 * Console-based logger for development and debugging.
 *
 * Outputs structured log messages to the console with timestamps and metadata.
 * Useful for development environments and troubleshooting.
 */
export declare class ConsoleLogger implements Logger {
    private readonly prefix;
    private readonly logLevel;
    constructor(prefix?: string, logLevel?: 'debug' | 'info' | 'warn' | 'error');
    debug(message: string, meta?: Record<string, unknown>): void;
    info(message: string, meta?: Record<string, unknown>): void;
    warn(message: string, meta?: Record<string, unknown>): void;
    error(message: string, meta?: Record<string, unknown>): void;
    private shouldLog;
    private log;
}
/**
 * Creates a default logger instance.
 *
 * Returns a NoOpLogger by default, but can be configured to return
 * a ConsoleLogger based on environment variables or other configuration.
 *
 * @returns A logger instance
 */
export declare function createDefaultLogger(): Logger;
/**
 * Utility class for measuring operation timing with structured logging.
 *
 * Provides consistent timing measurement and logging across all operations.
 * Ensures operation start/completion logging with timing information.
 */
export declare class OperationTimer {
    private readonly startTime;
    private readonly logger;
    private readonly operationType;
    private readonly operationMetadata;
    constructor(logger: Logger, operationType: string, operationMetadata?: Record<string, unknown>);
    /**
     * Completes the operation timing and logs success.
     *
     * @param resultMetadata - Additional metadata about the operation result
     */
    complete(resultMetadata?: Record<string, unknown>): void;
    /**
     * Completes the operation timing and logs failure.
     *
     * @param error - The error that caused the operation to fail
     * @param errorMetadata - Additional metadata about the error
     */
    fail(error: unknown, errorMetadata?: Record<string, unknown>): void;
    /**
     * Extracts AWS request ID from error objects.
     *
     * @param error - The error to extract request ID from
     * @returns AWS request ID if found, undefined otherwise
     */
    private extractAwsRequestId;
    /**
     * Generates troubleshooting context based on error type.
     *
     * @param error - The error to generate context for
     * @returns Troubleshooting guidance
     */
    private generateTroubleshootingContext;
}
