import { LogLevel } from './logLevel';
/**
 * Interface for log printers.
 */
export interface ILogPrinter {
    /**
     * Print a log message.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The log message.
     * @param args - Additional arguments to log.
     */
    printLine(level: LogLevel, name: string, message: string, ...args: unknown[]): void;
}
/**
 * Abstract base class for log printers.
 * Provides common functionality for formatting log messages.
 */
export declare abstract class BasePrinter implements ILogPrinter {
    /**
     * Print a log message.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The log message.
     * @param args - Additional arguments to log.
     */
    printLine(level: LogLevel, name: string, message: string, ...args: unknown[]): void;
    /**
     * Output a formatted log message.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The formatted log message.
     */
    protected abstract output(level: LogLevel, name: string, message: string): void;
    /**
     * Format a log message.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The log message.
     * @param args - Additional arguments to log.
     * @returns The formatted log message.
     */
    protected formatMessage(message: string, ...args: unknown[]): string;
}
/**
 * Console printer for logging messages to the console.
 */
export declare class ConsolePrinter extends BasePrinter {
    /**
     * Output a formatted log message to the console.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The formatted log message.
     */
    protected output(level: LogLevel, name: string, message: string): void;
}
/**
 * Prints all logging messages using the console.debug function.
 */
export declare class DebugPrinter extends BasePrinter {
    /**
     * Output a formatted log message to the console.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The formatted log message.
     */
    protected output(level: LogLevel, name: string, message: string): void;
}
/**
 * File printer for logging messages to a file.
 */
export declare class FilePrinter extends BasePrinter {
    private logFilePath;
    private writeQueue;
    private fileHandle?;
    private closeTimeout?;
    constructor(logFilePath: string);
    /**
     * Ensure the log file directory exists.
     */
    private ensureLogFileDirectory;
    /**
     * Initialize the file handle for the log file.
     */
    private getFileHandle;
    /**
     * Create a log entry string.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The log message.
     * @returns The formatted log entry string.
     */
    private createLogEntry;
    /**
     * Close the file handle after a delay.
     */
    private scheduleClose;
    /**
     * Output a formatted log message to a file asynchronously.
     * @param level - The severity level of the log message.
     * @param name - The name of the logger.
     * @param message - The formatted log message.
     */
    protected output(level: LogLevel, name: string, message: string): void;
}
