import type { LevelName, LoggerArg } from './types'; import type { LogEvent } from './logEvent'; import type { Logger } from './logger'; type WriteMethod = ((data: D) => Promise) | ((data: D) => void); export type ShutdownCb = ((e?: Error) => void) | ((e?: Error) => Promise); export type ShutdownFn = ((cb?: ShutdownCb) => Promise) | ((cb?: ShutdownCb) => void); export type LayoutFn, TFormattedData, TConfigA extends Record, TContext extends Record> = (event: LogEvent, logWriterName: string, logWriterConfig: TConfigA) => TFormattedData; export declare abstract class LogWriter> { name: string; protected activeWrites: Set; abstract config: TConfigA; isShuttingDown: boolean; constructor(name: string); shutdownWriter: ShutdownFn; protected _shutdown: ShutdownFn; register>(logger: TLogger, levelName: LevelName, layoutFn: LayoutFn ? TDataOut : never, TFormattedData, TConfigA, TLogger extends Logger ? TContext : never>): void; write: WriteMethod; protected abstract _write: WriteMethod; } export {};