import { LogLevel, OutputWriter } from '../types/core.js'; /** * Entry in the log buffer */ export interface BufferEntry { message: string; level: LogLevel; styles: string[]; timestamp: number; } /** * BufferWriter collects log messages in memory instead of outputting to console. * Useful for: * - CLI operations with spinners (buffer logs during spinner, show after) * - Testing (capture logs for assertions) * - Batch processing (collect logs, process together) * * @implements {OutputWriter} * @since 4.0.0 * * @example * import logger, { BufferWriter } from '@mks2508/better-logger'; * * const buffer = new BufferWriter(); * logger.updateConfig({ * outputMode: 'custom', * outputWriter: buffer * }); * * // Logs go to buffer, not console * spinner.start('Loading...'); * logger.info('Connecting...'); * logger.info('Processing...'); * spinner.stop(); * * // Show buffered logs * logger.updateConfig({ outputMode: 'console' }); * buffer.flush(); // Outputs all buffered logs to console */ export declare class BufferWriter implements OutputWriter { private buffer; private maxSize; /** * Creates a new BufferWriter * @param maxSize - Maximum number of entries to buffer (default: 1000) */ constructor(maxSize?: number); /** * Writes a log entry to the buffer * @param message - Formatted log message * @param level - Log level * @param styles - CSS styles (for browser console) */ write(message: string, level: LogLevel, styles: string[]): void; /** * Returns all buffered entries * @returns Copy of the buffer array */ getBuffer(): BufferEntry[]; /** * Returns buffered entries filtered by log level * @param levels - Log levels to include * @returns Filtered buffer entries */ getByLevel(...levels: LogLevel[]): BufferEntry[]; /** * Returns the number of buffered entries */ get size(): number; /** * Checks if buffer is empty */ get isEmpty(): boolean; /** * Clears all buffered entries */ clear(): void; /** * Outputs all buffered entries to console and clears the buffer */ flush(): void; /** * Outputs buffered entries to console without clearing */ replay(): void; /** * Returns all messages as an array of strings */ toArray(): string[]; /** * Returns all messages joined as a single string * @param separator - String to join messages with (default: newline) */ toString(separator?: string): string; } //# sourceMappingURL=BufferWriter.d.ts.map