import { DrizzleTransaction } from '../db/db.js';
import type { TraceData, SpanData, CreateTraceData, CreateSpanData, UpdateTraceData, UpdateSpanData, TraceQueryOptions, SpanQueryOptions } from '../types/trace.js';
export declare class TraceRepository {
    createTrace(data: CreateTraceData, tsx?: DrizzleTransaction | null): Promise<TraceData>;
    getTraceById(id: string): Promise<TraceData | undefined>;
    getTracesByProjectId(projectId: string, options?: TraceQueryOptions): Promise<{
        traces: TraceData[];
        hasNextPage: boolean;
    }>;
    updateTrace(id: string, data: UpdateTraceData): Promise<TraceData | undefined>;
    deleteTrace(id: string): Promise<void>;
    private buildSpanHierarchy;
    bulkTraceInsert(tracesData: CreateTraceData[]): Promise<TraceData[]>;
    createSpan(data: CreateSpanData, tsx?: any): Promise<SpanData>;
    getSpanById(id: string): Promise<SpanData | undefined>;
    getSpansByTraceId(traceId: string, options?: SpanQueryOptions): Promise<{
        spans: SpanData[];
        hasNextPage: boolean;
    }>;
    getSpansByParentId(parentSpanId: string): Promise<SpanData[]>;
    updateSpan(id: string, data: UpdateSpanData): Promise<SpanData | undefined>;
    deleteSpan(id: string): Promise<void>;
    getTraceWithSpans(traceId: string): Promise<{
        trace: TraceData;
        spans: SpanData[];
    } | undefined>;
    clearProjectTraces(projectId: string): Promise<void>;
}
//# sourceMappingURL=traceRepository.d.ts.map