import type { Unavailable } from "./unavailable";
export declare enum MessageRole {
    USER = "user",
    ASSISTANT = "assistant"
}
export interface Message {
    role: MessageRole;
    content: string;
    timestamp: Date;
}
export interface SessionMessagesList {
    messages: Message[];
    total: number;
    hasMore: boolean;
}
export declare enum SessionStatus {
    PENDING = "pending",
    PROCESSING = "processing",
    PROCESSED = "processed",
    FAILED = "failed",
    INSUFFICIENT_BALANCE = "insufficient_balance"
}
export interface SessionModel {
    sessionId: string;
    status: SessionStatus | Unavailable;
    createdAt: Date | Unavailable;
    metadata: Record<string, any> | Unavailable;
}
export declare enum RecallStrategy {
    LOW_LATENCY = "low_latency",
    BALANCED = "balanced",
    AGENTIC = "agentic",
    AUTO = "auto"
}
export declare enum DateRangeFilterType {
    EVENT_DATE = "event_date",
    CREATED_AT = "created_at"
}
export interface QueryDateRangeFilter {
    filterType: DateRangeFilterType;
    startDate: string;
    endDate: string;
}
export interface ContextMetadata {
    memoryIds?: string[];
    sessionIds?: string[];
    agentReasoning?: string;
    vectorSearchQueries?: string[];
    keywords?: string[];
    sessionSummariesSearchQueries?: string[];
    dateRangeFilters?: QueryDateRangeFilter[];
    recallStrategyUsed?: RecallStrategy;
}
export interface ContextResponse {
    isFinal: boolean;
    statusUpdateMessage?: string;
    errorMessage?: string;
    context?: string;
    metadata?: ContextMetadata;
}
