/**
 * Represents the available logging levels in order of increasing severity.
 * The configured log level acts as a threshold - only messages at or above
 * that level will be processed.
 *
 * Levels from least to most severe:
 * - Trace: Fine-grained debugging and tracing information
 * - Debug: Detailed development-time debugging information
 * - Info: General runtime information about application flow
 * - Warn: Potentially harmful situations that don't interrupt operation
 * - Error: Error conditions that affect functionality
 * - Off: Completely disable logging
 *
 * @example
 * ```typescript
 * // Configure logging level based on environment
 * provideLogging(
 *   withLogLevel(isDevMode() ? LogLevel.Debug : LogLevel.Warn)
 * );
 *
 * // Using different levels in code
 * logger.trace('Entering method', { method: 'processData' }); // Development tracing
 * logger.debug('Processing chunk', { size: chunk.length }); // Debug information
 * logger.info('User logged in', { userId: '123' }); // Runtime information
 * logger.warn('API response slow', { responseTime: '2500ms' }); // Warning
 * logger.error('Failed to save', error, { retry: true }); // Error condition
 * ```
 */
export const enum LogLevel {
  /** Fine-grained debugging and tracing information for development */
  Trace = 'trace',

  /** Detailed information useful during development and debugging */
  Debug = 'debug',

  /** General information about application flow and runtime events */
  Info = 'info',

  /** Potentially harmful situations that don't prevent operation */
  Warn = 'warn',

  /** Error conditions that affect application functionality */
  Error = 'error',

  /** Completely disable logging output */
  Off = 'off',
}
