import { Logger as TsLogger } from "tslog";
import type { DaoCoreConfig } from "../config/types.js";
import { shouldSkipMutatingLoggingConfigRead } from "./config.js";
import { type LogLevel } from "./levels.js";
import type { LoggerSettings } from "./types.js";
export type { LoggerSettings } from "./types.js";
export declare const DEFAULT_LOG_DIR: string;
export declare const DEFAULT_LOG_FILE: string;
type LogObj = {
    date?: Date;
} & Record<string, unknown>;
type ResolvedSettings = {
    level: LogLevel;
    file: string;
    maxFileBytes: number;
};
export type LoggerResolvedSettings = ResolvedSettings;
type LoggerConfigLoader = () => DaoCoreConfig["logging"] | undefined;
export declare function setLoggerConfigLoaderForTests(loader?: LoggerConfigLoader): void;
export declare function isFileLogLevelEnabled(level: LogLevel): boolean;
export declare function getLogger(): TsLogger<LogObj>;
export declare function getChildLogger(bindings?: Record<string, unknown>, opts?: {
    level?: LogLevel;
}): TsLogger<LogObj>;
export declare function toPinoLikeLogger(logger: TsLogger<LogObj>, level: LogLevel): PinoLikeLogger;
export type PinoLikeLogger = {
    level: string;
    child: (bindings?: Record<string, unknown>) => PinoLikeLogger;
    trace: (...args: unknown[]) => void;
    debug: (...args: unknown[]) => void;
    info: (...args: unknown[]) => void;
    warn: (...args: unknown[]) => void;
    error: (...args: unknown[]) => void;
    fatal: (...args: unknown[]) => void;
};
export declare function getResolvedLoggerSettings(): LoggerResolvedSettings;
export declare function setLoggerOverride(settings: LoggerSettings | null): void;
export declare function resetLogger(): void;
export declare const testApi: {
    resolveActiveLogFile: typeof resolveActiveLogFile;
    shouldSkipMutatingLoggingConfigRead: typeof shouldSkipMutatingLoggingConfigRead;
};
export { testApi as __test__ };
declare function resolveActiveLogFile(file: string): string;
