import { stringify } from 'safe-stable-stringify';
import { h as StringifyAwareReporter, g as ReadonlyMeta, e as LiteralUnion, E as ExtendedRfc5424LogLevels, c as LoggerTypesAwareReporter, d as LoggerTypesConfig, a as DefaultLogTypes } from './types-BGWAKixQ.mjs';

type AbstractJsonReporterOptions = {
    error: Partial<{
        exclude?: string[];
        maxDepth?: number;
        useToJSON?: boolean;
    }>;
};
declare abstract class AbstractJsonReporter<L extends string = string> implements StringifyAwareReporter<L> {
    protected stringify: typeof stringify | undefined;
    protected errorOptions: AbstractJsonReporterOptions["error"];
    constructor(options?: Partial<AbstractJsonReporterOptions>);
    setStringify(function_: any): void;
    log(meta: ReadonlyMeta<L>): void;
    protected abstract _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
}

declare abstract class AbstractPrettyReporter<T extends string = string, L extends string = string> implements LoggerTypesAwareReporter<T, L> {
    protected readonly _styles: PrettyStyleOptions;
    protected _loggerTypes: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;
    protected constructor(options: Partial<PrettyStyleOptions>);
    setLoggerTypes(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): void;
    abstract log(meta: ReadonlyMeta<L>): void;
}
type PrettyStyleOptions = {
    bold: {
        label: boolean;
    };
    dateFormatter: (date: Date) => string;
    messageLength: number | undefined;
    underline: {
        label: boolean;
        prefix: boolean;
        suffix: boolean;
    };
    uppercase: {
        label: boolean;
    };
};

export { AbstractJsonReporter as A, type PrettyStyleOptions as P, type AbstractJsonReporterOptions as a, AbstractPrettyReporter as b };
