/**
 * Core type definitions for research-cli
 */
export interface ProviderRequest {
    query: string;
    model?: string | undefined;
    webSearch?: boolean | undefined;
    webSearchContextSize?: "low" | "medium" | "high" | undefined;
    maxTokens?: number | undefined;
    temperature?: number | undefined;
}
export interface ProviderEvent {
    type: "start" | "tool_call" | "tool_result" | "chunk" | "final" | "error";
    data?: unknown;
}
export interface LlmProvider {
    name: "openai" | "perplexity" | "claude" | "gemini";
    streamQuery(input: ProviderRequest): AsyncIterable<ProviderEvent>;
    supportsWebSearch: boolean;
}
export interface Citation {
    url: string;
    title: string;
    date?: string | undefined;
}
export interface ProviderError {
    code: "PROVIDER_TIMEOUT" | "API_KEY_MISSING" | "RATE_LIMITED" | "NETWORK_ERROR" | "UNKNOWN_ERROR";
    message: string;
    provider: "openai" | "perplexity" | "claude" | "gemini";
}
export interface CliOptions {
    provider: "openai" | "perplexity" | "claude" | "gemini";
    model?: string | undefined;
    web: boolean;
    webSearchContextSize?: "low" | "medium" | "high" | undefined;
    stream: boolean;
    format: "md" | "json" | "jsonl" | "raw";
    maxTokens?: number | undefined;
    temperature?: number | undefined;
    timeout?: number | undefined;
    dryRun: boolean;
    output?: string | undefined;
    verbose: boolean;
}
export interface StartEvent {
    type: "start";
    data: {
        provider: string;
        model: string;
        timestamp: number;
    };
}
export interface ToolCallEvent {
    type: "tool_call";
    data: {
        name: string;
        args: Record<string, unknown>;
    };
}
export interface ToolResultEvent {
    type: "tool_result";
    data: {
        name: string;
        results: unknown[];
    };
}
export interface ChunkEvent {
    type: "chunk";
    data: {
        text: string;
    };
}
export interface UsageStats {
    input_tokens: number;
    output_tokens: number;
    total_tokens: number;
    reasoning_tokens?: number;
}
export interface FinalEvent {
    type: "final";
    data: {
        answer: string;
        citations: Citation[];
        usage?: UsageStats | undefined;
    };
}
export interface ErrorEvent {
    type: "error";
    data: {
        message: string;
        code: string;
    };
}
//# sourceMappingURL=types.d.ts.map