/** * Interface for CBLogger to provide strong typing * This interface defines the contract that both public and private logger implementations must follow */ export interface ICBLogger { /** * Logs an informational message * @param args - The message arguments to log */ info(...args: any[]): void; /** * Logs a warning message * @param args - The message arguments to log */ warn(...args: any[]): void; /** * Logs an error message * @param args - The message arguments to log */ error(...args: any[]): void; /** * Logs a debug message * @param args - The message arguments to log */ debug(...args: any[]): void; } /** * Log levels enum for consistent logging across packages */ export enum LogLevel { ERROR = 'ERROR', WARN = 'WARN', INFO = 'INFO', DEBUG = 'DEBUG' } // TODO: [KMD] Re-think if we need SafeConsole and also ICBLogger, ideally we should not need them. /** * Safe console interface that provides controlled console methods */ export interface SafeConsole { log: (...args: any[]) => void; info: (...args: any[]) => void; warn: (...args: any[]) => void; error: (...args: any[]) => void; debug: (...args: any[]) => void; trace: () => void; table: () => void; time: () => void; timeEnd: () => void; timeLog: () => void; count: () => void; countReset: () => void; group: () => void; groupCollapsed: () => void; groupEnd: () => void; clear: () => void; }