import { ILogger } from './logger';
/**
 * Log levels
 */
export declare enum LogLevel {
    ERROR = "error",
    WARN = "warn",
    INFO = "info",
    DEBUG = "debug",
    TRACE = "trace"
}
/**
 * Log context interface
 */
export interface LogContext {
    /** Correlation ID for tracing across services */
    correlationId?: string;
    /** Request ID for tracking individual requests */
    requestId?: string;
    /** Task ID for task-specific logging */
    taskId?: string;
    /** User ID or performer ID */
    performerId?: string;
    /** Component or module name */
    component?: string;
    /** Operation being performed */
    operation?: string;
    /** Additional custom fields */
    [key: string]: any;
}
/**
 * Log entry structure
 */
export interface LogEntry {
    /** Log level */
    level: LogLevel;
    /** Log message */
    message: string;
    /** Timestamp */
    timestamp: string;
    /** Log context */
    context: LogContext;
    /** Stack trace for errors */
    stack?: string;
    /** Additional metadata */
    metadata?: any;
}
/**
 * Log appender interface
 */
export interface LogAppender {
    /** Appender name */
    name: string;
    /** Write log entry */
    write(entry: LogEntry): Promise<void>;
}
/**
 * Console log appender with structured output
 */
export declare class ConsoleLogAppender implements LogAppender {
    name: string;
    write(entry: LogEntry): Promise<void>;
}
/**
 * File log appender with JSON format
 */
export declare class FileLogAppender implements LogAppender {
    private filePath;
    name: string;
    constructor(filePath: string);
    write(entry: LogEntry): Promise<void>;
}
/**
 * Structured logger configuration
 */
export interface StructuredLoggerConfig {
    /** Log level */
    level?: LogLevel;
    /** Default context to include in all logs */
    defaultContext?: LogContext;
    /** Enable/disable logging */
    enabled?: boolean;
    /** Log appenders */
    appenders?: LogAppender[];
    /** Include stack traces for warnings and errors */
    includeStack?: boolean;
}
/**
 * Enhanced structured logger
 */
export declare class StructuredLogger implements ILogger {
    private config;
    private appenders;
    private correlationIdGenerator;
    constructor(config?: StructuredLoggerConfig);
    /**
     * Create a child logger with additional context
     */
    child(context: LogContext): StructuredLogger;
    /**
     * Generate a new correlation ID
     */
    generateCorrelationId(): string;
    /**
     * Add log appender
     */
    addAppender(appender: LogAppender): void;
    /**
     * Remove log appender
     */
    removeAppender(name: string): void;
    /**
     * Log an error
     */
    error(message: string, meta?: any): void;
    /**
     * Log a warning
     */
    warn(message: string, meta?: any): void;
    /**
     * Log info
     */
    info(message: string, meta?: any): void;
    /**
     * Log debug information
     */
    debug(message: string, meta?: any): void;
    /**
     * Log trace information
     */
    trace(message: string, meta?: any): void;
    /**
     * Log with specific level and context
     */
    logWithContext(level: LogLevel, message: string, context: LogContext, meta?: any): void;
    /**
     * Core logging method
     */
    private log;
    /**
     * Check if we should log at this level
     */
    private shouldLog;
    /**
     * Write log entry to all appenders
     */
    private writeToAppenders;
    /**
     * Create correlation ID generator
     */
    private createCorrelationIdGenerator;
    /**
     * Create request-scoped logger
     */
    static forRequest(requestId: string, additionalContext?: LogContext): StructuredLogger;
    /**
     * Create task-scoped logger
     */
    static forTask(taskId: string, additionalContext?: LogContext): StructuredLogger;
    /**
     * Create component-scoped logger
     */
    static forComponent(component: string, additionalContext?: LogContext): StructuredLogger;
}
//# sourceMappingURL=structuredLogger.d.ts.map