///
import type { AsyncLocalStorage } from 'async_hooks';
export declare type JsonValue = JsonObject | JsonValue[] | boolean | number | string | null;
export declare type JsonObject = {
[k: string]: JsonValue;
};
export declare type LogWriter = (message: string) => void;
export declare type MessageContext = JsonObject & T;
export declare type TopLevelAsyncLocalContext = {
messageContext: MessageContext;
transforms: ReadonlyArray>;
};
export declare type NestedAsyncLocalContext = TopLevelAsyncLocalContext & {
sequence: number;
sequenceRoot: string;
};
export declare type AsyncLocalContext = NestedAsyncLocalContext | TopLevelAsyncLocalContext;
export declare type MessageSerializer = (message: Message) => string;
export declare type RoarrGlobalState = {
asyncLocalStorage?: AsyncLocalStorage;
sequence: number;
serializeMessage?: MessageSerializer;
versions: readonly string[];
write: LogWriter;
};
export declare type SprintfArgument = boolean | number | string | null;
export declare type Message = {
readonly context: T;
readonly message: string;
readonly sequence: string;
readonly time: number;
readonly version: string;
};
export declare type TransformMessageFunction = (message: Message) => Message;
export declare type LogMethod = {
(context: Z, message: T, c?: T extends `${string}%${string}` ? SprintfArgument : never, d?: SprintfArgument, e?: SprintfArgument, f?: SprintfArgument, g?: SprintfArgument, h?: SprintfArgument, i?: SprintfArgument, j?: SprintfArgument): void;
(message: T, b?: T extends `${string}%${string}` ? SprintfArgument : never, c?: SprintfArgument, d?: SprintfArgument, e?: SprintfArgument, f?: SprintfArgument, g?: SprintfArgument, h?: SprintfArgument, i?: SprintfArgument, j?: SprintfArgument): void;
};
declare type Child = {
(context: TransformMessageFunction>): Logger;
(context: MessageContext): Logger;
};
export declare type Logger = LogMethod & {
adopt: (routine: () => T, context?: MessageContext | TransformMessageFunction) => Promise;
child: Child;
debug: LogMethod;
error: LogMethod;
fatal: LogMethod;
getContext: () => MessageContext;
info: LogMethod;
trace: LogMethod;
warn: LogMethod;
};
export declare type MessageEventHandler = (message: Message) => void;
export declare type LogLevelName = 'trace' | 'debug' | 'info' | 'error' | 'fatal' | 'warn';
export {};