import { InjectionToken } from '@angular/core';
import { Nullable, PlainObject } from '@angular-ru/cdk/typings';
import { LoggerService } from '../logger.service';
export declare type ConsoleOperation<T = unknown, P = unknown> = (message?: T, ...optionalParams: P[]) => void;
export interface GroupMethods extends Function {
    group(label: string, pipeline?: Pipeline): LoggerService;
    groupCollapsed(label: string, pipeline?: Pipeline): LoggerService;
}
export declare const LOGGER_OPTIONS: InjectionToken<string>;
export declare type TimerLevels = LoggerLevel.TRACE | LoggerLevel.DEBUG | LoggerLevel.INFO | LoggerLevel.WARN | LoggerLevel.ERROR;
export declare type LogFn = GroupMethods & ConsoleOperation;
export interface FormatOutput {
    label: string;
    style: string;
}
/**
 * Used in factory methods
 */
export declare enum LoggerLevel {
    ALL = 1,
    TRACE = 2,
    DEBUG = 3,
    INFO = 4,
    LOG = 5,
    WARN = 6,
    ERROR = 7,
    OFF = 8
}
export declare const enum GroupLevel {
    GROUP = "group",
    GROUP_COLLAPSED = "groupCollapsed"
}
export declare type Pipeline<T = unknown> = (logger: LoggerService) => T;
export interface TimerInfo {
    title: string;
    startTime: number;
}
export declare type PipeOperation = GroupMethods | ConsoleOperation;
export declare type GroupMethod<T = unknown> = (groupTitle?: string, ...optionalParams: T[]) => unknown;
export declare type GroupFactoryMethod = (title: string, pipeline: Nullable<Pipeline>, logger: LoggerService, level: LoggerLevel) => void;
export interface LoggerOptions<T = unknown> {
    instance: T extends Console ? T : unknown;
    minLevel: LoggerLevel;
    globalLineStyle: string;
    cssClassMap: Record<string, unknown>;
    useLevelGroup: boolean;
    labelColors: PlainObject;
    labelNames: PlainObject;
    format?(label: string, style: string): FormatOutput;
    options?(config: Partial<LoggerOptions>): LoggerOptions;
}
//# sourceMappingURL=logger.external.d.ts.map