import type { LoggerFn } from "./types.js"; import type { ErrorLogger, ErrorContext } from "./error-logger.js"; export interface LoggerContext { dryRun?: boolean; verbose?: boolean; scope?: string; } export interface ScopedLogger { readonly context: Required> & Pick; info(message: string): void; success(message: string): void; warn(message: string): void; error(message: string): void; errorResolved(label: string, value: string): void; errorWithStack(error: Error, context?: ErrorContext): void; logException(error: Error, operation: string, context?: ErrorContext): void; dryRun(message: string): void; verbose(message: string): void; intro(title: string): void; resolved(label: string, value: string): void; nextSteps(steps: string[]): void; feedback(label: string, url: string): void; child(context: Partial): ScopedLogger; } export interface LoggerFactory { base: LoggerFn; errorLogger?: ErrorLogger; create(context?: LoggerContext): ScopedLogger; setErrorLogger(errorLogger: ErrorLogger): void; } export interface LoggerTheme { intro?: (text: string) => string; resolvedSymbol?: string; errorSymbol?: string; } export declare function createLoggerFactory(emitter?: LoggerFn, theme?: LoggerTheme): LoggerFactory;