import type { LogLevel } from './logger.js';
export interface DebugRuntimeOptions {
    dev?: boolean;
    logLevel?: LogLevel;
    trace?: boolean;
    traceContent?: boolean;
    traceBufferSize?: number;
    traceCategories?: string[];
}
export interface DebugRuntimeConfig {
    logLevel: LogLevel;
    collectDebugTrace: boolean;
    traceContent: boolean;
    traceBufferSize: number;
    traceCategories: string[];
}
/**
 * ALWAYS-ON trace categories. These bypass the `collectDebugTrace` master switch
 * (and category selection) so they are collected in production daemons where
 * `--trace` is unset. They exist so mesh completion diagnostics — the FSM-transition
 * and completion-gate snapshots that explain an early / missing agent:generating_completed
 * notification — are retrievable via mesh_read_debug (chat_debug_bundle) without asking
 * an operator to relaunch the daemon with tracing on.
 *
 * SAFETY: only add a category here after confirming every record() call site for it
 * carries a content-free payload (statuses, epochs, timestamps, deltas, lengths, roles,
 * enum-like reasons — never transcript / prompt / bubble text). Always-on collection makes
 * such payloads unconditional, so a content-bearing field would leak into the ring buffer
 * in production.
 */
export declare const ALWAYS_ON_TRACE_CATEGORIES: readonly string[];
export declare function isAlwaysOnTraceCategory(category?: string | null): boolean;
export declare function resolveDebugRuntimeConfig(options?: DebugRuntimeOptions): DebugRuntimeConfig;
export declare function setDebugRuntimeConfig(config: DebugRuntimeConfig): void;
export declare function getDebugRuntimeConfig(): DebugRuntimeConfig;
export declare function resetDebugRuntimeConfig(): void;
export declare function shouldCollectTraceCategory(category?: string | null): boolean;
