import { LogLayerTransportParams, LoggerlessTransport, LoggerlessTransportConfig } from "@loglayer/transport";
import { ChalkInstance } from "chalk";
export * from "chalk";

//#region src/types.d.ts
/**
 * Configuration for log level colors.
 * Each log level can have its own chalk styling.
 */
interface ColorConfig {
  /** Style for trace level logs - lowest severity */
  trace?: ChalkInstance;
  /** Style for debug level logs */
  debug?: ChalkInstance;
  /** Style for info level logs - normal operation */
  info?: ChalkInstance;
  /** Style for warning level logs */
  warn?: ChalkInstance;
  /** Style for error level logs */
  error?: ChalkInstance;
  /** Style for fatal level logs - highest severity */
  fatal?: ChalkInstance;
}
/**
 * Configuration for log view styling.
 * Defines colors and styles for different log elements.
 */
interface ViewConfig {
  /** Color configuration for different log levels */
  colors?: ColorConfig;
  /** Style for log entry IDs */
  logIdColor?: ChalkInstance;
  /** Style for data values in structured data */
  dataValueColor?: ChalkInstance;
  /** Style for data keys in structured data */
  dataKeyColor?: ChalkInstance;
}
/**
 * Runtime environment for the transport.
 * Determines how logs are output.
 */
type Runtime = "node" | "browser";
/**
 * Theme configuration for the simple pretty terminal transport.
 * Defines styling for log output.
 */
interface SimplePrettyTerminalTheme extends ViewConfig {}
/**
 * View modes for log display.
 * - inline: Shows all information with complete data structures inline (no truncation)
 * - message-only: Shows only the timestamp, log level and message for a cleaner output (no data shown)
 * - expanded: Shows timestamp, level, and message on first line, with data on indented separate lines
 */
type PrettyTerminalViewMode = "inline" | "message-only" | "expanded";
/**
 * Main configuration interface for SimplePrettyTerminalTransport.
 * Extends the base transport configuration with simple pretty terminal specific options.
 */
interface SimplePrettyTerminalConfig extends LoggerlessTransportConfig {
  /** Maximum depth for inline data display before collapsing. Default is 4. */
  maxInlineDepth?: number;
  /** Custom theme configuration for log display */
  theme?: SimplePrettyTerminalTheme;
  /** Whether the transport is enabled. If false, all operations will no-op. Defaults to true */
  enabled?: boolean;
  /** View mode for log display. Defaults to "inline" */
  viewMode?: PrettyTerminalViewMode;
  /** Whether to show log IDs in the output. Defaults to false */
  showLogId?: boolean;
  /** Custom timestamp format. Can be a date-fns format string or a custom function. Defaults to "HH:mm:ss.SSS" */
  timestampFormat?: string | ((timestamp: number) => string);
  /** Whether to collapse arrays in expanded mode. Defaults to true */
  collapseArrays?: boolean;
  /** Whether to flatten nested objects with dot notation in inline mode. Defaults to true */
  flattenNestedObjects?: boolean;
  /** Runtime environment for output */
  runtime: Runtime;
  /** Whether to include data object as second parameter in browser console calls for better debugging. Defaults to false */
  includeDataInBrowserConsole?: boolean;
  /** Whether to enable sprintf-style message formatting. When true, messages with format specifiers like %s, %d will be parsed. Defaults to false */
  enableSprintf?: boolean;
}
//#endregion
//#region src/SimplePrettyTerminalTransport.d.ts
/**
 * Main transport class that handles simple pretty terminal output.
 * This class provides the display functionality of PrettyTerminal without interactive features.
 *
 * The transport supports three view modes:
 * 1. Inline: Shows all information with complete data structures inline (no truncation)
 * 2. Message-only: Shows only the timestamp, log level and message for a cleaner output (no data shown)
 * 3. Expanded: Shows timestamp, level, and message on first line, with data on indented separate lines
 */
declare class SimplePrettyTerminalTransport extends LoggerlessTransport {
  /** Handles rendering and formatting of logs */
  private renderer;
  /** Configuration options */
  private config;
  /**
   * Creates a new SimplePrettyTerminalTransport instance.
   *
   * @param config - Configuration options for the transport
   */
  constructor(config: SimplePrettyTerminalConfig);
  /**
   * Generates a random ID for each log entry.
   * Uses base36 encoding for compact, readable IDs.
   *
   * @returns A 6-character string ID
   * @example
   * "a1b2c3" // Example generated ID
   */
  private generateId;
  /**
   * Applies sprintf formatting to messages if enabled and applicable.
   * If the first message is a format string and there are additional arguments,
   * formats them using sprintf-js.
   *
   * @param messages - Array of message strings
   * @returns Formatted message string
   */
  private formatMessages;
  /**
   * Main transport method that receives logs from LogLayer.
   * This method is called for each log event and handles:
   * - Generating a unique ID for the log
   * - Converting the log data to a storable format
   * - Rendering the log using the SimpleView renderer
   *
   * @param logLevel - The severity level of the log
   * @param messages - Array of message strings to be joined
   * @param data - Additional structured data to be logged
   * @param hasData - Whether the log includes additional data
   * @returns The original messages array
   */
  shipToLogger({
    logLevel,
    messages,
    data,
    hasData
  }: LogLayerTransportParams): any[];
  /**
   * Changes the view mode for log display.
   *
   * @param viewMode - The new view mode to use
   */
  setViewMode(viewMode: PrettyTerminalViewMode): void;
  /**
   * Gets the current view mode.
   *
   * @returns The current view mode
   */
  getViewMode(): PrettyTerminalViewMode;
}
//#endregion
//#region src/themes.d.ts
/**
 * Moonlight - A dark theme with cool blue tones
 * Inspired by moonlit nights and modern IDEs
 *
 * Color Palette:
 * - Primary: Cool blues and soft greens
 * - Accents: Warm yellows and soft reds
 * - Background: Assumes dark terminal (black or very dark grey)
 *
 * Best used with:
 * - Dark terminal themes
 * - Night-time coding sessions
 * - Environments where eye strain is a concern
 */
declare const moonlight: SimplePrettyTerminalTheme;
/**
 * Sunlight - A light theme with warm tones
 * Inspired by daylight reading and paper documentation
 *
 * Color Palette:
 * - Primary: Deep, rich colors that contrast well with white
 * - Accents: Earth tones and deep jewel tones
 * - Background: Assumes light terminal (white or very light grey)
 *
 * Best used with:
 * - Light terminal themes
 * - Daytime coding sessions
 * - High-glare environments
 * - Printed documentation
 */
declare const sunlight: SimplePrettyTerminalTheme;
/**
 * Neon - A dark theme with vibrant cyberpunk colors
 * Inspired by neon-lit cityscapes and retro-futuristic aesthetics
 *
 * Color Palette:
 * - Primary: Electric blues and hot pinks
 * - Accents: Bright purples and cyber greens
 * - Background: Assumes dark terminal (black or very dark grey)
 *
 * Best used with:
 * - Dark terminal themes
 * - High-contrast preferences
 * - Modern, tech-focused applications
 */
declare const neon: SimplePrettyTerminalTheme;
/**
 * Nature - A light theme with organic, earthy colors
 * Inspired by forest landscapes and natural elements
 *
 * Color Palette:
 * - Primary: Deep forest greens and rich browns
 * - Accents: Autumn reds and golden yellows
 * - Background: Assumes light terminal (white or very light grey)
 *
 * Best used with:
 * - Light terminal themes
 * - Nature-inspired interfaces
 * - Applications focusing on readability
 */
declare const nature: SimplePrettyTerminalTheme;
/**
 * Pastel - A soft, calming theme with gentle colors
 * Inspired by watercolor paintings and soft aesthetics
 *
 * Color Palette:
 * - Primary: Soft pastels and muted tones
 * - Accents: Gentle pinks and light blues
 * - Background: Assumes light terminal (white or very light grey)
 *
 * Best used with:
 * - Light terminal themes
 * - Long coding sessions
 * - Reduced visual stress
 */
declare const pastel: SimplePrettyTerminalTheme;
//#endregion
//#region src/index.d.ts
declare function getSimplePrettyTerminal(config: SimplePrettyTerminalConfig): SimplePrettyTerminalTransport;
//#endregion
export { type PrettyTerminalViewMode, type Runtime, type SimplePrettyTerminalConfig, type SimplePrettyTerminalTheme, SimplePrettyTerminalTransport, getSimplePrettyTerminal, moonlight, nature, neon, pastel, sunlight };
//# sourceMappingURL=index.d.cts.map