declare enum LogLevel {
    DEBUG = 0,
    INFO = 1,
    WARN = 2,
    ERROR = 3,
    SILENT = 4
}
interface LogEntry {
    timestamp: Date;
    level: LogLevel;
    name: string;
    message: string;
    data?: any;
    duration?: number;
}
type LogHandler = (entry: LogEntry) => void;
declare class Logger {
    private static globalLevel;
    private static handlers;
    private static performanceTimers;
    private readonly name;
    private level;
    constructor(name: string, level?: LogLevel);
    setLevel(level: LogLevel): void;
    getLevel(): LogLevel;
    debug(message: string, data?: any): void;
    info(message: string, data?: any): void;
    warn(message: string, data?: any): void;
    error(message: string, data?: any): void;
    /**
     * Start performance timer
     * @param message Description of the operation
     * @param data Additional context data
     * @returns Function to end the timer
     */
    startTimer(message: string, data?: any): () => void;
    /**
     * Measure function execution time
     * @param fn Function to measure
     * @param message Performance description
     * @param data Additional context
     * @returns Function execution result
     */
    measure<T>(fn: () => T | Promise<T>, message: string, data?: any): Promise<T>;
    private log;
    static addHandler(handler: LogHandler): void;
    static removeHandler(handler: LogHandler): void;
    static setGlobalLevel(level: LogLevel): void;
    private static defaultConsoleHandler;
}
export { Logger, LogLevel, type LogHandler, type LogEntry };
