export interface IClassLoggerLogData {
    args: any[];
    className: string;
    propertyName: string | symbol;
    classInstance?: any;
}
export interface IClassLoggerLogResData {
    result: any;
    error: boolean;
}
export declare type IClassLoggerFormatterStartData = IClassLoggerLogData & {
    include: IClassLoggerIncludeConfig;
};
export declare type IClassLoggerFormatterEndData = IClassLoggerFormatterStartData & IClassLoggerLogResData;
export interface IClassLoggerFormatter {
    start: (data: IClassLoggerFormatterStartData) => string;
    end: (data: IClassLoggerFormatterEndData) => string;
}
export interface IClassLoggerMessageConfigIncludeComplex {
    start: boolean;
    end: boolean;
}
export interface IClassLoggerIncludeConfig {
    args: boolean | IClassLoggerMessageConfigIncludeComplex;
    construct: boolean;
    result: boolean;
    classInstance: boolean | IClassLoggerMessageConfigIncludeComplex;
}
export declare class ClassLoggerFormatterService implements IClassLoggerFormatter {
    protected readonly placeholderNotAvailable = "N/A";
    protected readonly placeholderUndefined = "undefined";
    start(data: IClassLoggerFormatterStartData): string;
    end(data: IClassLoggerFormatterEndData): string;
    protected base({ className, propertyName }: IClassLoggerFormatterStartData): string;
    protected operation({ error }: IClassLoggerFormatterEndData): " -> error" | " -> done";
    protected args({ args }: IClassLoggerFormatterStartData): string;
    protected classInstance({ classInstance }: IClassLoggerFormatterStartData): string;
    protected result({ result }: IClassLoggerFormatterEndData): string;
    protected final(): string;
    protected complexObjectToString(obj: any): string;
    protected valueToString(val: any): string;
    protected includeComplex(includeComplex: boolean | IClassLoggerMessageConfigIncludeComplex, type: keyof IClassLoggerMessageConfigIncludeComplex): boolean;
    protected isPlainObjectOrArray(obj: object | null): boolean;
    protected errorToString(error: Error & {
        code?: string;
    }): string;
}
