import { type ILogObj, type ISettingsParam, Logger } from 'tslog';
import type { Options } from 'rotating-file-stream';
export declare const expensiveTrace: (log: Logger<ILogObj> | undefined, supplier: () => string) => void;
export declare class FlowrLogger extends Logger<ILogObj> {
    /** by keeping track of all children we can propagate updates of the settings (e.g., in tests) */
    private readonly childLoggers;
    getSubLogger(settings?: ISettingsParam<ILogObj>, logObj?: ILogObj): Logger<ILogObj>;
    updateSettings(updater: (logger: Logger<ILogObj>) => void): void;
    /**
     * make the logger log to a file as well
     *
     * Rotation needs the optional `rotating-file-stream` dependency. Without it (the slim runtime images install with
     * `--omit=optional`) the log is appended to a single file instead.
     */
    logToFile(filename?: string, options?: Options): void;
}
export declare const enum LogLevel {
    Silly = 0,
    Trace = 1,
    Debug = 2,
    Info = 3,
    Warn = 4,
    Error = 5,
    Fatal = 6
}
export declare const LogLevelNames: {
    readonly silly: LogLevel.Silly;
    readonly trace: LogLevel.Trace;
    readonly debug: LogLevel.Debug;
    readonly info: LogLevel.Info;
    readonly warn: LogLevel.Warn;
    readonly error: LogLevel.Error;
    readonly fatal: LogLevel.Fatal;
};
export type LogLevelName = keyof typeof LogLevelNames;
/** Set the global minimum log level by name. */
export declare function setLogLevel(level: LogLevelName): void;
export declare const log: FlowrLogger;
