/**
 * @publicApi
 */
export type LogLevel = 'log' | 'error' | 'warn' | 'debug' | 'verbose' | 'fatal';

/**
 * @publicApi
 */
export interface LoggerService {
  /**
   * Write a 'log' level log.
   */
  log(message: any, ...optionalParams: any[]): any;
  
  /**
   * Write an 'error' level log.
   */
  error(message: any, ...optionalParams: any[]): any;
  
  /**
   * Write a 'warn' level log.
   */
  warn(message: any, ...optionalParams: any[]): any;
  
  /**
   * Write a 'debug' level log.
   */
  debug?(message: any, ...optionalParams: any[]): any;
  
  /**
   * Write a 'verbose' level log.
   */
  verbose?(message: any, ...optionalParams: any[]): any;
  
  /**
   * Write a 'fatal' level log.
   */
  fatal?(message: any, ...optionalParams: any[]): any;
  
  /**
   * Set log levels.
   * @param levels log levels
   */
  setLogLevels?(levels: LogLevel[]): any;
}

export interface LogBufferRecord {
  /**
   * Method to execute.
   */
  methodRef: Function;
  
  /**
   * Arguments to pass to the method.
   */
  arguments: unknown[];
  
  /**
   * Timestamp when log was created
   */
  timestamp: Date;
  
  /**
   * Log level
   */
  level: LogLevel;
  
  /**
   * Context information
   */
  context?: string;
}

export interface LoggerOptions {
  /**
   * Include timestamp in logs
   */
  timestamp?: boolean;
  
  /**
   * Environment mode (affects log behavior)
   */
  environment?: 'development' | 'production';
  
  /**
   * Enable console output
   */
  enableConsole?: boolean;
  
  /**
   * Enable remote logging
   */
  enableRemoteLogging?: boolean;
  
  /**
   * Remote logging endpoint
   */
  remoteLoggingUrl?: string;
} 