import type { Response } from 'express';
import type { AuthRequest } from '../../../middlewares/validateUser';
export type EntityName = 'session' | 'trace' | 'span' | 'evaluation' | 'security_finding' | 'log';
export type StepType = 'CHAIN' | 'LLM' | 'RETRIEVER' | 'RERANKER' | 'TOOL' | 'AGENT' | 'GUARDRAIL' | 'EVALUATOR' | 'EMBEDDING' | 'MCP' | 'OTHER';
export type FilterOperator = 'eq' | 'neq' | 'in' | 'not_in' | 'contains' | 'starts_with' | 'ends_with' | 'gt' | 'gte' | 'lt' | 'lte' | 'exists';
export interface ServiceInfo {
    name: string;
    version: string;
    environment: string;
}
export interface TimeRangeInfo {
    earliest_event_time: string;
    latest_event_time: string;
    retention_days: number;
}
export interface SupportedConventions {
    otel_traces: boolean;
    otel_logs: boolean;
    otel_metrics: boolean;
    otel_genai: boolean;
    otel_mcp_semantics: boolean;
    openinference_compatible: boolean;
}
export interface EntityDefinition {
    name: EntityName;
    description: string;
    primary_key: string;
    aliases?: string[];
    common_filters: string[];
}
export interface StepTypeDefinition {
    name: StepType;
    description: string;
}
export interface EntityRelationship {
    from: EntityName;
    to: EntityName;
    relationship: 'one_to_many' | 'many_to_one' | 'one_to_one';
    description: string;
}
export interface QueryCapabilities {
    filter_operators: FilterOperator[];
    sort_supported: boolean;
    pagination_supported: boolean;
    timeseries_supported: boolean;
    aggregations_supported: Array<'count' | 'sum' | 'avg' | 'min' | 'max' | 'p50' | 'p95' | 'p99'>;
    full_text_search_supported: boolean;
}
export interface ImportantDimension {
    key: string;
    type: 'string' | 'number' | 'boolean' | 'datetime';
    description: string;
}
export interface PrivacyAndRedaction {
    llm_input_capture: 'enabled' | 'disabled' | 'configurable';
    llm_output_capture: 'enabled' | 'disabled' | 'configurable';
    pii_redaction_supported: boolean;
    redaction_policies: Array<'none' | 'mask_pii' | 'mask_secrets' | 'mask_pii_and_secrets'>;
}
export interface ExampleQuery {
    entity: EntityName;
    filter: Record<string, unknown>;
    sort?: Array<{
        field: string;
        order: 'asc' | 'desc';
    }>;
}
export interface DescribeDataModelResponse {
    service: ServiceInfo;
    time_range: TimeRangeInfo;
    supported_conventions: SupportedConventions;
    entities: EntityDefinition[];
    normalized_step_types: StepTypeDefinition[];
    entity_relationships: EntityRelationship[];
    query_capabilities: QueryCapabilities;
    important_dimensions: ImportantDimension[];
    privacy_and_redaction: PrivacyAndRedaction;
    examples: {
        session_lookup: ExampleQuery;
        slow_llm_spans: ExampleQuery;
        prompt_injection_findings: ExampleQuery;
    };
}
export interface DescribeDataModelOptions {
    serviceName: string;
    version: string;
    environment: string;
    earliestEventTime: string;
    latestEventTime: string;
    retentionDays: number;
    traceId?: string;
    sessionId?: string;
    spanId?: string;
}
export declare function buildDescribeDataModel(options: DescribeDataModelOptions): DescribeDataModelResponse;
export declare class DescribeDataModelController {
    /**
     * GET /api/argus/tools/describe-data-model
     * Returns supported entities, time range, retention, conventions, and field catalog
     * for the current project, optionally scoped by traceId/sessionId/spanId.
     */
    static describe(req: AuthRequest, res: Response): Promise<void>;
}
//# sourceMappingURL=describeDataModelController.d.ts.map