import type { DiagLogger } from "@opentelemetry/api";
import { LoggingDestination, LoggingFlags } from "./Types";
export declare enum LogKind {
    Info = "info   ",
    Warn = "warning",
    Error = "error  ",
    Debug = "debug  "
}
export declare class DtLogger {
    /**
     * Returns true if logger is enabled.
     * Optionally the logging flag is checked
     * @param flag Logging flag to check
     * @returns true if log message will be sent out
     */
    enabled(flag?: string): boolean;
    /**
     * Configure the logger.
     * @param destination The logging destination to use
     * @param flags The logging flags
     */
    configure(destination?: LoggingDestination, flags?: LoggingFlags): void;
    /**
     * Formats and sends a log message.
     * @param kind The kind of message (e.g. error/warning)
     * @param component The component logging the message
     * @param msg The actual message
     */
    log(kind: LogKind, component: string, msg: string): void;
    /**
     * Helper to log an info message.
     * @see log
     */
    info: (component: string, msg: string) => void;
    /**
     * Helper to log a warning message.
     * @see log
     */
    warn: (component: string, msg: string) => void;
    /**
     * Helper to log an error message.
     * @see log
     */
    error: (component: string, msg: string) => void;
    /**
     * Helper to log a debug message.
     * @see log
     */
    debug: (component: string, msg: string) => void;
    /**
     * Helper to log an agent exception as warning.
     * @param component The component logging the message
     * @param e the exception to log
     */
    logAgentException(component: string, e: unknown): void;
    private _flags;
    private _logFn?;
}
/**
 * elementary logging interface
 */
export interface Logger {
    /**
     * true, if logging is enabled
     */
    readonly enabled: boolean;
    /**
     * true, if debug logging is enabled
     */
    readonly debugEnabled: boolean;
    debug(msg: string): void;
    info(msg: string): void;
    warn(msg: string): void;
    error(msg: string): void;
    /**
     * unified reporting of exceptions caught in agent code
     * @param e
     */
    logAgentException(e: unknown): void;
}
/**
 * convenience class for component level logging
 */
export declare class ComponentLogger implements Logger, DiagLogger {
    readonly componentName: string;
    constructor(componentName: string, debugFlagName?: string);
    readonly debugFlagName: string;
    get enabled(): boolean;
    get debugEnabled(): boolean;
    info(msg: string): void;
    warn(msg: string): void;
    error(msg: string): void;
    verbose(msg: string): void;
    /**
     * Helper to log a debug message.
     * Note: check if debug logging is enabled before calling this API to avoid expensive
     * log message composition
     * @see log
     */
    debug(msg: string): void;
    logAgentException(e: unknown): void;
}
export declare const logger: DtLogger;
//# sourceMappingURL=Logger.d.ts.map