import { vi } from "vitest";

//#region src/test-utils/mocks/logger.d.ts

interface MockLogger {
  info: ReturnType<typeof vi.fn>;
  warn: ReturnType<typeof vi.fn>;
  error: ReturnType<typeof vi.fn>;
  debug: ReturnType<typeof vi.fn>;
  child: ReturnType<typeof vi.fn>;
  with: ReturnType<typeof vi.fn>;
  getPinoInstance: ReturnType<typeof vi.fn>;
}
interface MockLoggerModule {
  getLogger: ReturnType<typeof vi.fn>;
  runWithLogContext: ReturnType<typeof vi.fn>;
}
interface MockLoggerResult {
  mockLogger: MockLogger;
  module: MockLoggerModule;
  /** Clear all mock call data. Use in beforeEach when asserting on logger calls. */
  clearAll: () => void;
}
declare function createMockLogger(): MockLogger;
declare function createMockLoggerModule(): MockLoggerResult;
//#endregion
export { MockLogger, MockLoggerModule, MockLoggerResult, createMockLogger, createMockLoggerModule };