import type { AnyExecutionContext } from '../execution-context/ExecutionContext';
export declare enum LogLevel {
    Off = 0,
    Error = 1,
    Warn = 2,
    Log = 3,
    Debug = 4,
    Verbose = 5
}
type LogMethod = (typeof console)['log'];
export type OnLogCallback = (level: LogLevel, metadata: Record<string, unknown>, ...args: unknown[]) => void;
export type LoggerEffect = ReturnType<ReturnType<typeof LoggerEffectFactory>>['effect']['logger'];
export type LogProvider = {
    error: LogMethod;
    warn: LogMethod;
    log: LogMethod;
    debug: LogMethod;
    verbose: LogMethod;
};
declare class Logger {
    private readonly parent?;
    private readonly logMetadata?;
    private logLevel;
    private logProvider;
    private readonly logCallbacks;
    constructor(parent?: Logger, metadata?: Record<string, unknown>);
    get verbose(): {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    get debug(): {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    get log(): {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    get warn(): {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    get error(): {
        (...data: any[]): void;
        (message?: any, ...optionalParams: any[]): void;
    };
    get level(): LogLevel;
    get provider(): LogProvider;
    get metadata(): Record<string, unknown>;
    setLevel(level: LogLevel): void;
    setProvider(provider: LogProvider): void;
    addOnLogCallback(callback: OnLogCallback): () => void;
    private get onLogCallbacks();
    private resolveMethod;
}
export declare const LoggerEffectFactory: (metadata?: Record<string, unknown>) => import("../effect/Types").EffectFactory<AnyExecutionContext, {
    logger: Logger;
}>;
export {};
