import type { Mock } from 'bun:test';
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
export type LogMethod = (data: unknown, msg?: string, ...args: unknown[]) => unknown;
export type MockLogMethod = Mock<LogMethod>;
export interface MockLogger {
    trace: MockLogMethod;
    debug: MockLogMethod;
    info: MockLogMethod;
    warn: MockLogMethod;
    error: MockLogMethod;
    fatal: MockLogMethod;
    child: Mock<(bindings: Record<string, unknown>) => MockLogger>;
}
export interface CreateMockLoggerOptions {
    captureOutput?: boolean;
    customImplementations?: Partial<Record<LogLevel, LogMethod>>;
}
export interface CapturedLogEntry {
    level: LogLevel;
    message: string;
    meta?: Record<string, unknown>;
    timestamp: Date;
}
export declare function createMockLogger(options?: CreateMockLoggerOptions): MockLogger;
export interface MockLoggerWithCapture {
    logger: MockLogger;
    captured: CapturedLogEntry[];
    clearCaptured: () => void;
    getByLevel: (level: LogLevel) => CapturedLogEntry[];
    getByMessage: (pattern: string | RegExp) => CapturedLogEntry[];
}
/** Creates a mock logger that captures all output for inspection. */
export declare function createMockLoggerWithCapture(): MockLoggerWithCapture;
export declare function restoreMockLogger(logger: MockLogger): void;
export declare function clearMockLogger(logger: MockLogger): void;
