import type { Mastra } from '@mastra/core';
import { MastraBase } from '@mastra/core/base';
import type { IMastraLogger } from '@mastra/core/logger';
import type { ClientObservabilityProxy, CorrelationContext, ConfigSelector, ConfigSelectorOptions, FeedbackInput, ObservabilityEntrypoint, ObservabilityInstance, RecordedTrace, ScoreInput } from '@mastra/core/observability';
import type { ObservabilityRegistryConfig } from './config.js';
/**
 * Top-level observability entrypoint. Manages a registry of ObservabilityInstance
 * configurations and provides instance selection via config selectors.
 */
export declare class Observability extends MastraBase implements ObservabilityEntrypoint {
    #private;
    constructor(config: ObservabilityRegistryConfig);
    /** Initialize all exporter instances with the Mastra context (storage, config, etc.). */
    setMastraContext(options: {
        mastra: Mastra;
    }): void;
    /** Propagate a logger to this instance and all registered observability instances. */
    setLogger(options: {
        logger: IMastraLogger;
    }): void;
    /** Get the observability instance chosen by the config selector for the given options. */
    getSelectedInstance(options: ConfigSelectorOptions): ObservabilityInstance | undefined;
    getRecordedTrace(args: {
        traceId: string;
    }): Promise<RecordedTrace | null>;
    addScore(args: {
        traceId?: string;
        spanId?: string;
        correlationContext?: CorrelationContext;
        score: ScoreInput;
    }): Promise<void>;
    addFeedback(args: {
        traceId?: string;
        spanId?: string;
        correlationContext?: CorrelationContext;
        feedback: FeedbackInput;
    }): Promise<void>;
    /** Register a named observability instance, optionally marking it as default. */
    registerInstance(name: string, instance: ObservabilityInstance, isDefault?: boolean): void;
    /** Get a registered instance by name. */
    getInstance(name: string): ObservabilityInstance | undefined;
    /** Get the default observability instance. */
    getDefaultInstance(): ObservabilityInstance | undefined;
    /** List all registered observability instances. */
    listInstances(): ReadonlyMap<string, ObservabilityInstance>;
    /** Unregister an instance by name. Returns true if it was found and removed. */
    unregisterInstance(name: string): boolean;
    /** Check whether an instance with the given name is registered. */
    hasInstance(name: string): boolean;
    /** Set the config selector used to choose an instance at runtime. */
    setConfigSelector(selector: ConfigSelector): void;
    /** Remove all registered instances and reset the registry. */
    clear(): void;
    /** Shut down all registered instances, flushing any pending data. */
    shutdown(): Promise<void>;
    /**
     * Returns the proxy responsible for client observability (W3C trace
     * context injection + OTLP/JSON payload reception for spans/logs
     * returned from client-side execution).
     *
     * Lazily constructed on first call. Resolves the target observability
     * instance per receive call so config selection works the same way
     * as for server-side spans.
     */
    getClientObservabilityProxy(): ClientObservabilityProxy | undefined;
}
//# sourceMappingURL=default.d.ts.map