import { StorageDomain } from '../base.js';
import type { GetEntityTypesArgs, GetEntityTypesResponse, GetEntityNamesArgs, GetEntityNamesResponse, GetServiceNamesArgs, GetServiceNamesResponse, GetEnvironmentsArgs, GetEnvironmentsResponse, GetTagsArgs, GetTagsResponse, GetMetricNamesArgs, GetMetricNamesResponse, GetMetricLabelKeysArgs, GetMetricLabelKeysResponse, GetMetricLabelValuesArgs, GetMetricLabelValuesResponse } from './discovery.js';
import type { BatchCreateFeedbackArgs, CreateFeedbackArgs, ListFeedbackArgs, ListFeedbackResponse, GetFeedbackAggregateArgs, GetFeedbackAggregateResponse, GetFeedbackBreakdownArgs, GetFeedbackBreakdownResponse, GetFeedbackTimeSeriesArgs, GetFeedbackTimeSeriesResponse, GetFeedbackPercentilesArgs, GetFeedbackPercentilesResponse } from './feedback.js';
import type { BatchCreateLogsArgs, ListLogsArgs, ListLogsResponse } from './logs.js';
import type { BatchCreateMetricsArgs, ListMetricsArgs, ListMetricsResponse, GetMetricAggregateArgs, GetMetricAggregateResponse, GetMetricBreakdownArgs, GetMetricBreakdownResponse, GetMetricTimeSeriesArgs, GetMetricTimeSeriesResponse, GetMetricPercentilesArgs, GetMetricPercentilesResponse } from './metrics.js';
import type { BatchCreateScoresArgs, CreateScoreArgs, ListScoresArgs, ListScoresResponse, ScoreRecord, GetScoreAggregateArgs, GetScoreAggregateResponse, GetScoreBreakdownArgs, GetScoreBreakdownResponse, GetScoreTimeSeriesArgs, GetScoreTimeSeriesResponse, GetScorePercentilesArgs, GetScorePercentilesResponse } from './scores.js';
import type { BatchCreateSpansArgs, BatchDeleteTracesArgs, BatchUpdateSpansArgs, CreateSpanArgs, GetBranchArgs, GetBranchResponse, GetRootSpanArgs, GetRootSpanResponse, GetSpanArgs, GetSpanResponse, GetSpansArgs, GetSpansResponse, GetStructureResponse, GetTraceArgs, GetTraceResponse, GetTraceLightResponse, ListBranchesArgs, ListBranchesResponse, ListTracesArgs, ListTracesLightResponse, ListTracesResponse, UpdateSpanArgs } from './tracing.js';
import type { ObservabilityStorageStrategy, TracingStorageStrategy } from './types.js';
export type ObservabilityStorageFeature = 'delta-polling';
/**
 * Base storage class for observability data (traces, metrics, logs, scores, feedback).
 * Not abstract -- provides default implementations that throw "not implemented" errors.
 * Storage adapters override only the methods they support.
 */
export declare class ObservabilityStorage extends StorageDomain {
    constructor();
    dangerouslyClearAll(): Promise<void>;
    /**
     * Provides hints for tracing strategy selection by the MastraStorageExporter.
     * Storage adapters can override this to specify their preferred and supported strategies.
     */
    get observabilityStrategy(): {
        preferred: ObservabilityStorageStrategy;
        supported: ObservabilityStorageStrategy[];
    };
    /**
     * Provides hints for tracing strategy selection by the MastraStorageExporter.
     * Storage adapters can override this to specify their preferred and supported strategies.
     * @deprecated Use {@link observabilityStrategy} instead.
     * @see {@link observabilityStrategy} for the replacement property.
     */
    get tracingStrategy(): {
        preferred: TracingStorageStrategy;
        supported: TracingStorageStrategy[];
    };
    /**
     * Reports the tracing strategy currently in effect for this attached observability store.
     *
     * Single-strategy stores can rely on the default implementation. Multi-strategy stores
     * should override this getter only when they can determine the actual configured mode
     * from storage-owned configuration, not exporter state.
     */
    get runtimeTracingStrategy(): TracingStorageStrategy | undefined;
    /**
     * Optional feature list for observability storage APIs.
     * Stores that implement delta polling should override this and opt in explicitly.
     * Older stores and older package versions will simply omit it, which keeps page mode working.
     */
    getFeatures(): readonly ObservabilityStorageFeature[] | undefined;
    /**
     * Creates a single Span record in the storage provider.
     */
    createSpan(_args: CreateSpanArgs): Promise<void>;
    /**
     * Updates a single Span with partial data. Primarily used for realtime trace creation.
     *
     * @deprecated This method only works with stores that support span updates,
     * It will be removed in the future. Instead try to add all data to a span before
     * ending it.
     */
    updateSpan(_args: UpdateSpanArgs): Promise<void>;
    /**
     * Retrieves a single span.
     */
    getSpan(_args: GetSpanArgs): Promise<GetSpanResponse | null>;
    /**
     * Retrieves a single root span.
     */
    getRootSpan(_args: GetRootSpanArgs): Promise<GetRootSpanResponse | null>;
    /**
     * Retrieves a single trace with all its associated spans.
     */
    getTrace(_args: GetTraceArgs): Promise<GetTraceResponse | null>;
    /**
     * Retrieves the structural skeleton of a trace -- parent/child links, span
     * type, timing, and status -- with heavy fields (input, output, attributes,
     * metadata, tags, links) excluded. Intended for waterfall/timeline rendering
     * where the full payload would be wasteful.
     *
     * Default implementation forwards to {@link getTraceLight} (the legacy
     * override surface). Backends should override either method -- the response
     * shape is identical, and the unimplemented one delegates to the
     * implemented one. The cycle guard is what makes that safe.
     */
    getStructure(args: GetTraceArgs): Promise<GetStructureResponse | null>;
    /**
     * @deprecated Use {@link getStructure} instead. Default implementation
     * forwards to {@link getStructure} so backends that only override the
     * canonical name still work for legacy callers.
     */
    getTraceLight(args: GetTraceArgs): Promise<GetTraceLightResponse | null>;
    /**
     * Retrieves the subtree of spans rooted at a given span, optionally bounded
     * to `depth` levels of descendants.
     *
     * Default implementation prefers a two-step path: fetch the lightweight
     * structure to determine which spans belong to the branch, then batch-fetch
     * only those with full data. This avoids pulling the entire trace when the
     * branch is a small slice of a large trace. Backends that don't yet
     * implement {@link getStructure} or {@link getSpans} fall back to fetching
     * the full trace and walking it in memory.
     */
    getBranch(args: GetBranchArgs): Promise<GetBranchResponse | null>;
    /**
     * Batch-fetches spans by spanId within a single trace. Used by the
     * optimized {@link getBranch} path to fetch only the spans that belong to
     * the requested branch (after walking the lightweight structure to identify
     * them) instead of pulling the entire trace.
     */
    getSpans(_args: GetSpansArgs): Promise<GetSpansResponse>;
    /**
     * Retrieves a list of traces with optional filtering.
     */
    listTraces(_args: ListTracesArgs): Promise<ListTracesResponse>;
    /**
     * Retrieves a lightweight list of traces with optional filtering.
     */
    listTracesLight(_args: ListTracesArgs): Promise<ListTracesLightResponse>;
    /**
     * Lists trace branches across all traces. Unlike {@link listTraces} (which
     * returns one row per root-rooted trace), each row here is a single branch
     * anchor span, including ones nested under a different root entity -- useful
     * for "show me every run of agent X" regardless of caller. Pairs with
     * {@link getBranch} to expand a single branch into its subtree.
     */
    listBranches(_args: ListBranchesArgs): Promise<ListBranchesResponse>;
    /**
     * Creates multiple Spans in a single batch.
     */
    batchCreateSpans(_args: BatchCreateSpansArgs): Promise<void>;
    /**
     * Updates multiple Spans in a single batch.
     */
    batchUpdateSpans(_args: BatchUpdateSpansArgs): Promise<void>;
    /**
     * Deletes multiple traces and all their associated spans in a single batch operation.
     */
    batchDeleteTraces(_args: BatchDeleteTracesArgs): Promise<void>;
    /**
     * Creates multiple log records in a single batch.
     */
    batchCreateLogs(_args: BatchCreateLogsArgs): Promise<void>;
    /**
     * Retrieves a list of logs with optional filtering.
     */
    listLogs(_args: ListLogsArgs): Promise<ListLogsResponse>;
    /**
     * Creates multiple metric observations in a single batch.
     */
    batchCreateMetrics(_args: BatchCreateMetricsArgs): Promise<void>;
    listMetrics(_args: ListMetricsArgs): Promise<ListMetricsResponse>;
    getMetricAggregate(_args: GetMetricAggregateArgs): Promise<GetMetricAggregateResponse>;
    getMetricBreakdown(_args: GetMetricBreakdownArgs): Promise<GetMetricBreakdownResponse>;
    getMetricTimeSeries(_args: GetMetricTimeSeriesArgs): Promise<GetMetricTimeSeriesResponse>;
    getMetricPercentiles(_args: GetMetricPercentilesArgs): Promise<GetMetricPercentilesResponse>;
    getMetricNames(_args: GetMetricNamesArgs): Promise<GetMetricNamesResponse>;
    getMetricLabelKeys(_args: GetMetricLabelKeysArgs): Promise<GetMetricLabelKeysResponse>;
    getMetricLabelValues(_args: GetMetricLabelValuesArgs): Promise<GetMetricLabelValuesResponse>;
    getEntityTypes(_args: GetEntityTypesArgs): Promise<GetEntityTypesResponse>;
    getEntityNames(_args: GetEntityNamesArgs): Promise<GetEntityNamesResponse>;
    getServiceNames(_args: GetServiceNamesArgs): Promise<GetServiceNamesResponse>;
    getEnvironments(_args: GetEnvironmentsArgs): Promise<GetEnvironmentsResponse>;
    getTags(_args: GetTagsArgs): Promise<GetTagsResponse>;
    /**
     * Creates a single score record.
     */
    createScore(_args: CreateScoreArgs): Promise<void>;
    /**
     * Creates multiple score observations in a single batch.
     */
    batchCreateScores(_args: BatchCreateScoresArgs): Promise<void>;
    /**
     * Retrieves a list of scores with optional filtering.
     */
    listScores(_args: ListScoresArgs): Promise<ListScoresResponse>;
    /**
     * Retrieves a single score by its score ID.
     */
    getScoreById(_scoreId: string): Promise<ScoreRecord | null>;
    getScoreAggregate(_args: GetScoreAggregateArgs): Promise<GetScoreAggregateResponse>;
    getScoreBreakdown(_args: GetScoreBreakdownArgs): Promise<GetScoreBreakdownResponse>;
    getScoreTimeSeries(_args: GetScoreTimeSeriesArgs): Promise<GetScoreTimeSeriesResponse>;
    getScorePercentiles(_args: GetScorePercentilesArgs): Promise<GetScorePercentilesResponse>;
    /**
     * Creates a single feedback record.
     */
    createFeedback(_args: CreateFeedbackArgs): Promise<void>;
    /**
     * Creates multiple feedback observations in a single batch.
     */
    batchCreateFeedback(_args: BatchCreateFeedbackArgs): Promise<void>;
    /**
     * Retrieves a list of feedback with optional filtering.
     */
    listFeedback(_args: ListFeedbackArgs): Promise<ListFeedbackResponse>;
    getFeedbackAggregate(_args: GetFeedbackAggregateArgs): Promise<GetFeedbackAggregateResponse>;
    getFeedbackBreakdown(_args: GetFeedbackBreakdownArgs): Promise<GetFeedbackBreakdownResponse>;
    getFeedbackTimeSeries(_args: GetFeedbackTimeSeriesArgs): Promise<GetFeedbackTimeSeriesResponse>;
    getFeedbackPercentiles(_args: GetFeedbackPercentilesArgs): Promise<GetFeedbackPercentilesResponse>;
}
//# sourceMappingURL=base.d.ts.map