/**
 * Debug logging utilities for takt
 * Writes debug logs to file when enabled in config.
 * When verbose console is enabled, also outputs to stderr.
 */
import type { PromptLogRecord } from './types.js';
/** Debug configuration (duplicated from core/models to avoid shared → core dependency) */
interface DebugConfig {
    enabled: boolean;
    logFile?: string;
    trace?: boolean;
}
/**
 * Debug logger singleton.
 * Manages file-based debug logging and verbose console output.
 */
export declare class DebugLogger {
    private static instance;
    private debugEnabled;
    private traceEnabled;
    private debugLogFile;
    private debugPromptsLogFile;
    private initialized;
    private verboseConsoleEnabled;
    private constructor();
    static getInstance(): DebugLogger;
    /** Reset singleton for testing */
    static resetInstance(): void;
    /** Get default debug log file prefix */
    private static getDefaultLogPrefix;
    /** Initialize debug logger from config */
    init(config?: DebugConfig, projectDir?: string): void;
    /** Reset state (for testing) */
    reset(): void;
    /** Enable or disable verbose console output */
    setVerboseConsole(enabled: boolean): void;
    /** Check if verbose console is enabled */
    isVerboseConsole(): boolean;
    /** Check if debug is enabled */
    isEnabled(): boolean;
    /** Get current debug log file path */
    getLogFile(): string | null;
    /** Get current debug prompts log file path */
    getPromptsLogFile(): string | null;
    /** Format log message with timestamp and level */
    private static formatLogMessage;
    /** Format a compact console log line */
    private static formatConsoleMessage;
    /** Write a log entry to verbose console (stderr) and/or file */
    writeLog(level: string, component: string, message: string, data?: unknown): void;
    /** Write a prompt/response debug log entry */
    writePromptLog(record: PromptLogRecord): void;
    /** Create a scoped logger for a component */
    createLogger(component: string): {
        trace: (message: string, data?: unknown) => void;
        debug: (message: string, data?: unknown) => void;
        info: (message: string, data?: unknown) => void;
        warn: (message: string, data?: unknown) => void;
        error: (message: string, data?: unknown) => void;
        enter: (funcName: string, args?: Record<string, unknown>) => void;
        exit: (funcName: string, result?: unknown) => void;
    };
}
export declare function initDebugLogger(config?: DebugConfig, projectDir?: string): void;
export declare function resetDebugLogger(): void;
export declare function setVerboseConsole(enabled: boolean): void;
export declare function isVerboseConsole(): boolean;
export declare function isDebugEnabled(): boolean;
export declare function getDebugLogFile(): string | null;
export declare function getDebugPromptsLogFile(): string | null;
export declare function debugLog(component: string, message: string, data?: unknown): void;
export declare function infoLog(component: string, message: string, data?: unknown): void;
export declare function errorLog(component: string, message: string, data?: unknown): void;
export declare function writePromptLog(record: PromptLogRecord): void;
export declare function traceEnter(component: string, funcName: string, args?: Record<string, unknown>): void;
export declare function traceExit(component: string, funcName: string, result?: unknown): void;
export declare function createLogger(component: string): {
    trace: (message: string, data?: unknown) => void;
    debug: (message: string, data?: unknown) => void;
    info: (message: string, data?: unknown) => void;
    warn: (message: string, data?: unknown) => void;
    error: (message: string, data?: unknown) => void;
    enter: (funcName: string, args?: Record<string, unknown>) => void;
    exit: (funcName: string, result?: unknown) => void;
};
export {};
//# sourceMappingURL=debug.d.ts.map