import { LogLevel } from '../constants/LogLevel';
import { Formatter } from '../formatter/Formatter';
import { Logger } from '../Logger';
import { InternalLogMeta, LogMeta } from '../LogMeta';
import { LogLine } from '../types/LogLine';
export interface TransportOptionsLogger {
    name: string;
    level: LogLevel;
    exact?: boolean;
}
export interface TransportOptions {
    formatter?: Formatter;
    level?: LogLevel;
    loggers?: Array<TransportOptionsLogger>;
}
export declare abstract class Transport<T extends TransportOptions> {
    private readonly knownLoggers;
    protected readonly options: T;
    constructor(options?: T);
    setLevel(level: LogLevel): void;
    setFormatter(formatter: Formatter): void;
    setLoggers(loggers: Array<TransportOptionsLogger>): void;
    private getAllowedLevel;
    log(origin: Logger, level: LogLevel, input: LogLine, uniqueMarker?: string, extra?: Readonly<{
        [key: string]: any;
    }>): Readonly<InternalLogMeta>;
    logMeta(meta: Readonly<InternalLogMeta>): void;
    private formatAndPrint;
    private static defaultFormatterGetter;
    protected abstract print(meta: Readonly<LogMeta>, message: string): void;
}
