/**
 * @file Observability Hooks
 * OpenTelemetry integration for evaluation tracing
 */
import type { EvaluationEvents, EvaluationSpanAttributes, EvaluationTraceContext, EventHandler, PipelineResult, ScoreResult } from "../../types/index.js";
/**
 * Observability hooks manager
 */
export declare class ObservabilityHooks {
    private _handlers;
    private _traceContext?;
    private _enabled;
    /**
     * Enable/disable observability
     */
    set enabled(value: boolean);
    get enabled(): boolean;
    /**
     * Set trace context for all events
     */
    setTraceContext(context: EvaluationTraceContext): void;
    /**
     * Clear trace context
     */
    clearTraceContext(): void;
    /**
     * Get current trace context
     */
    getTraceContext(): EvaluationTraceContext | undefined;
    /**
     * Register an event handler
     */
    on<K extends keyof EvaluationEvents>(event: K, handler: EventHandler<EvaluationEvents[K]>): () => void;
    /**
     * Remove an event handler
     */
    off<K extends keyof EvaluationEvents>(event: K, handler: EventHandler<EvaluationEvents[K]>): void;
    /**
     * Emit an event
     */
    emit<K extends keyof EvaluationEvents>(event: K, data: Omit<EvaluationEvents[K], "traceContext">): Promise<void>;
    /**
     * Clear all handlers
     */
    clear(): void;
    /**
     * Get handler count for an event
     */
    listenerCount(event: keyof EvaluationEvents): number;
}
/**
 * Global observability hooks instance
 */
export declare const observabilityHooks: ObservabilityHooks;
/**
 * Helper: Create a console logger hook
 */
export declare function createConsoleLoggerHook(): void;
/**
 * Helper: Create a metrics collector hook
 * Accepts the actual MetricsCollector interface from reporting/metricsCollector
 */
export declare function createMetricsCollectorHook(collector: {
    recordScorer: (scorerId: string, scorerName: string, result: ScoreResult) => void;
    recordPipeline: (result: PipelineResult) => void;
}): void;
/**
 * OpenTelemetry span attributes
 */
/**
 * Create span attributes from scorer result
 */
export declare function scorerToSpanAttributes(result: ScoreResult): EvaluationSpanAttributes;
/**
 * Create span attributes from pipeline result
 */
export declare function pipelineToSpanAttributes(result: PipelineResult): EvaluationSpanAttributes;
