import type { LogEntry, LogStage, LoggingLevel } from './log-types';
export interface StageOptions {
    /** Optional level override; default `'info'`. */
    level?: LoggingLevel;
    /** Optional latency in ms (typically attached to `respond`/`cleanup`). */
    latencyMs?: number;
    /** Optional structured error info for `cleanup` stages. */
    error?: LogEntry['error'];
}
export interface Logger {
    child(context: Record<string, unknown>): Logger;
    debug(event: string, message: string, context?: Record<string, unknown>): void;
    info(event: string, message: string, context?: Record<string, unknown>): void;
    warn(event: string, message: string, context?: Record<string, unknown>): void;
    error(event: string, message: string, context?: Record<string, unknown>): void;
    /**
     * Emit a stage-tagged log entry.
     *
     * Locked signature: `stage(stage, event, message, context?, options?)`.
     * `options.level` defaults to `'info'`. Use `options.latencyMs` on
     * `respond`/`cleanup`. Use `options.error` for structured error info.
     */
    stage(stage: LogStage, event: string, message: string, context?: Record<string, unknown>, options?: StageOptions): void;
}
export declare function createLogger(source: string, baseContext?: Record<string, unknown>): Logger;
//# sourceMappingURL=logger.d.ts.map