import { Shape } from "./../style/shape";
import { BaseLogger, IBaseLoggerOption, ILogGroup, ILogGroupEnd, ILogTime, ILogTimeStep, ILogTimeEnd, ILogTrace } from "./baseLogger";
import { ILog } from "./baseLogger";
export type TitlePairs = {
    str: string;
    style?: string;
}[];
export type LoggerOptionParam = {
    enable?: boolean;
    log?: ILog;
    logGroup?: ILogGroup;
    logGroupCollapsed?: ILogGroup;
    logGroupEnd?: ILogGroupEnd;
    logTime?: ILogTime;
    logTimeStep?: ILogTimeStep;
    logTimeEnd?: ILogTimeEnd;
    logTrace?: ILogTrace;
    level?: number;
    shape?: Shape;
    isCollapsed?: boolean;
};
export declare class LoggerOption implements IBaseLoggerOption {
    enable?: boolean;
    log?: ILog;
    logGroup?: ILogGroup;
    logGroupCollapsed?: ILogGroup;
    logGroupEnd?: ILogGroupEnd;
    logTime?: ILogTime;
    logTimeStep?: ILogTimeStep;
    logTimeEnd?: ILogTimeEnd;
    logTrace?: ILogTrace;
    level?: number;
    shape?: Shape;
    isCollapsed?: boolean;
    constructor(param?: LoggerOptionParam);
}
export declare class Logger extends BaseLogger {
    private loggerOption;
    constructor(options?: LoggerOption);
    setLoggerOption(option: LoggerOption): void;
    getLoggerOption(): LoggerOption;
    setLevel(level: number): void;
    isLevelAllowed(level: number): boolean;
    protected customFormat(level: number, pairs: TitlePairs, ...data: any[]): void;
    protected formatLog(level: number, title: string, message: string, titleCss: string, messageCss: string, ...data: any[]): void;
    protected formatGroup(level: number, label: string | TitlePairs, logs: () => void): void;
    protected formatTiming(level: number, label: string, logs: (step: (...data: any[]) => void) => any, stepSplit?: string): Promise<void>;
    protected formatTrace(level: number, ...data: any[]): void;
}
export default Logger;
