import type { TraceManager } from './TraceManager';
import type { RelationSchemasBase } from './types';
type SimpleLoggerFn = (message: string) => void;
interface ConsoleLike {
    log: (...args: any[]) => void;
    group: (...args: any[]) => void;
    groupCollapsed: (...args: any[]) => void;
    groupEnd: () => void;
}
/**
 * Options for configuring the ConsoleTraceLogger
 */
export interface ConsoleTraceLoggerOptions {
    /**
     * The logging mechanism. Can be a console-like object (supporting .log, .group, etc.)
     * or a simple function that accepts a string message.
     * Defaults to the global `console` object.
     */
    logger?: ConsoleLike | SimpleLoggerFn;
    /**
     * Whether to enable verbose logging with more details.
     * Defaults to false.
     */
    verbose?: boolean;
    /**
     * Prefix added to all log messages.
     * Defaults to '[Trace]'.
     */
    prefix?: string;
    /**
     * Maximum string length for attributes/relatedTo objects before truncation.
     * Defaults to 500.
     */
    maxObjectStringLength?: number;
    /**
     * Enable console grouping (.group, .groupCollapsed, .groupEnd).
     * Only effective if the logger is a console-like object.
     * Defaults to true.
     */
    enableGrouping?: boolean;
    /**
     * Enable ANSI color codes in the output.
     * Only effective if the logger is a console-like object.
     * Defaults to true.
     */
    enableColors?: boolean;
}
/**
 * A utility for logging trace information
 */
export declare function createConsoleTraceLogger<RelationSchemasT extends RelationSchemasBase<RelationSchemasT>>(traceManager: TraceManager<RelationSchemasT>, optionsInput?: ConsoleTraceLoggerOptions): {
    getCurrentTrace: () => {
        id: string;
        name: string;
        variant: string;
        startTime: number;
        attributes?: Record<string, unknown>;
        relatedTo?: Record<string, unknown>;
        requiredSpans: {
            name: string;
            isMatched: boolean;
            matcher: Function;
        }[];
    } | null;
    setOptions: (newOptions: Partial<ConsoleTraceLoggerOptions>) => void;
    cleanup: () => void;
};
export {};
