import type { MaybeAsync, Plugin, Hook, HookId } from '@gasket/core'; export type LogLevel = 'error' | 'warn' | 'info' | 'debug'; type LogMethods = Record void>; export interface Logger extends LogMethods { close?: () => MaybeAsync; child: (meta: Record) => Logger; } export function createChildLogger( parent: { [K in HookId]?: Hook; }, metadata: Record ): Logger; export function verifyLoggerLevels(logger: Logger): void; declare module '@gasket/core' { interface Gasket { logger: Logger; } export interface GasketConfig { logger?: { /** * When true, overrides the global console methods (log, info, warn, error, debug) * to route all output through gasket.logger. Useful for capturing third-party * dependencies that call console.* directly. */ overrideConsole?: boolean; }; } export interface HookExecTypes { createLogger(): Logger; } export interface GasketActions { getLogger(): Logger; } } declare const plugin: Plugin; export default plugin;