import type { Level } from './level'; import type { Logger } from './logger'; import type { LogWriter } from './logWriter'; import type { LogEvent } from './logEvent'; export type LevelName = 'TRACE' | 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL' | 'ALL' | 'MARK' | 'OFF'; export type ValidColors = 'white' | 'gray' | 'black' | 'blue' | 'cyan' | 'green' | 'magenta' | 'red' | 'yellow'; export type LevelParam = LevelName | Level | { level: number; levelName: LevelName; color: ValidColors; }; export type LevelConstructorProps = Record; export type LoggerPrimitiveTypes = string | number | boolean | undefined | bigint | null; export type LoggerArg = string | number | boolean | undefined | bigint | null | Record | Array | Error; export type CallStack = { callStack?: string; callerName?: string; className?: string; columnNumber?: number; fileName?: string; functionAlias?: string; functionName?: string; lineNumber?: number; }; export type PartialBy = Omit & Partial>; export type RequiredBy = Omit & Required>; export type EmptyObject = { [K in any]: never; }; export type LayoutFn = Array, CA extends Record = Record, DA = any, CO extends Record = Record> = (data: D, options: { logWriterConfig: CA; context: CO; loggerName: string; level: Level; }) => DA; export type LayoutFnInferred, TLogWriter extends LogWriter> = (event: LogEvent ? TDataOut : never, TLogger extends Logger ? TContext : never>, logWriterName: string, logWriterConfig: TLogWriter extends LogWriter ? TConfigA : never) => TLogWriter extends LogWriter ? TFormattedData : never; export type LoggerConfig> = { loggerName: string; level: LevelParam; useCallStack?: boolean; context?: TContext; };