/**
 * LoggerPort — structured logger interface.
 *
 * Shape matches Pino's child-logger subset. Host wires any concrete
 * logger (pino, winston, console-shim) that implements these methods.
 *
 * OTel instrumentation: import { createTracedLoggerPort } to wrap any
 * LoggerPort implementation with OpenTelemetry spans per log call.
 * Gracefully degrades to noop spans when no OTel SDK is installed.
 */
export interface LoggerPort {
    debug(objOrMsg: object | string, msg?: string): void;
    info(objOrMsg: object | string, msg?: string): void;
    warn(objOrMsg: object | string, msg?: string): void;
    error(objOrMsg: object | string, msg?: string): void;
    child?(bindings: Record<string, unknown>): LoggerPort;
}
/**
 * Thrown when the log transport fails to flush pending buffers (disk full,
 * network timeout on remote sink, or backend refused connection).
 * Callers may retry flush or discard pending entries depending on criticality.
 */
export declare class LoggerFlushError extends Error {
    readonly cause?: unknown | undefined;
    /** Number of log entries that could not be flushed. */
    readonly pendingCount: number;
    constructor(message: string, pendingCount: number, cause?: unknown | undefined);
}
/**
 * noopLogger — convenience for tests where logs are not asserted.
 */
export declare const noopLogger: LoggerPort;
/**
 * Wrap any LoggerPort implementation with OTel spans per log call.
 * Each log level emits a short-lived span capturing the level and
 * optional metadata. Gracefully degrades to noop spans when no OTel
 * SDK is installed.
 *
 * Usage:
 *   const raw: LoggerPort = pino();
 *   const traced = createTracedLoggerPort(raw);
 *   traced.info("boot") // emits "logger.info" span
 */
export declare function createTracedLoggerPort(impl: LoggerPort): LoggerPort;
//# sourceMappingURL=logger.d.ts.map