export declare enum LogFormat {
    RAW = "raw",
    PRETTY = "pretty",
    JSON = "json"
}
export declare enum LogLevel {
    INFO = "INFO",
    DEBUG = "DEBUG",
    WARN = "WARN",
    ERROR = "ERROR",
    RAW_DATA = "RAW_DATA",
    COMMAND = "COMMAND",
    RESPONSE = "RESPONSE"
}
export interface LoggerConfig {
    enabled?: boolean;
    filePath: string;
    format?: LogFormat;
    levels?: LogLevel[];
    maxLines?: number;
}
export declare class OBD2Logger {
    private enabled;
    private filePath;
    private format;
    private levels;
    private maxLines;
    private stream;
    constructor(config: LoggerConfig);
    enable(): void;
    disable(): void;
    isEnabled(): boolean;
    setFormat(format: LogFormat): void;
    setLevels(levels: LogLevel[]): void;
    setMaxLines(max: number): void;
    isLevelEnabled(level: LogLevel): boolean;
    info(context: string, message: string, data?: Record<string, unknown>): void;
    debug(context: string, message: string, data?: Record<string, unknown>): void;
    warn(context: string, message: string, data?: Record<string, unknown>): void;
    error(context: string, message: string, data?: Record<string, unknown>): void;
    logRawData(context: string, raw: string): void;
    logCommand(context: string, command: string, data?: Record<string, unknown>): void;
    logResponse(context: string, response: string, data?: Record<string, unknown>): void;
    private log;
    private formatEntry;
    private formatRaw;
    private formatJson;
    private formatPretty;
    private getLevelTag;
    private ensureDirectory;
    private writeToFile;
    private trimExcessLines;
    close(): void;
}
//# sourceMappingURL=logger.d.ts.map