import { ICorePlatform } from '../types/platform.js';
/**
 * Logger created by {@link LogManager}
 */
export declare class Logger {
    readonly mgr: LogManager;
    readonly tag: string;
    readonly parent: Logger;
    private color;
    prefix: string;
    constructor(mgr: LogManager, tag: string, parent?: Logger);
    getPrefix(): string;
    log(level: number, fmt: string, ...args: unknown[]): void;
    readonly error: (fmt: string, ...args: unknown[]) => void;
    readonly warn: (fmt: string, ...args: unknown[]) => void;
    readonly info: (fmt: string, ...args: unknown[]) => void;
    readonly debug: (fmt: string, ...args: unknown[]) => void;
    readonly verbose: (fmt: string, ...args: unknown[]) => void;
    /**
     * Create a {@link Logger} with the given tag
     * from the same {@link LogManager} as the current
     * Logger.
     *
     * @param tag  Logger tag
     */
    create(tag: string): Logger;
}
/**
 * Log manager. A logger that allows managing child loggers
 */
export declare class LogManager extends Logger {
    static OFF: number;
    static ERROR: number;
    static WARN: number;
    static INFO: number;
    static DEBUG: number;
    static VERBOSE: number;
    level: number;
    handler: (color: number, level: number, tag: string, fmt: string, args: unknown[]) => void;
    constructor(tag: string | undefined, platform: ICorePlatform);
    private _filter;
    /**
     * Create a {@link Logger} with the given tag
     *
     * @param tag  Logger tag
     */
    create(tag: string): Logger;
    /**
     * Filter logging by tags.
     *
     * @param cb
     */
    filter(cb: ((tag: string) => boolean) | null): void;
}
