import { ChatMessage } from './llm-api';

export declare class APIError extends Error {
    statusCode?: number;
    statusText?: string;
}
export interface ClaudeAIOptions {
    /** @defaultValue `https://claude.ai/api` **/
    apiBaseUrl?: string;
    apiOrg: string;
    sessionKey: string;
    /** @defaultValue `claude-2` **/
    model?: ClaudeAI.Model;
    /** @defaultValue `Asia/Shanghai` **/
    timezone?: string;
}
export type ClaudeSendMessageOptions = {
    conversationId?: string;
    parentMessageId?: string;
    messageId?: string;
    abortSignal?: AbortSignal;
    attachments?: ClaudeAI.Attachment[];
    completionParams?: Partial<Omit<ClaudeAI.CompletionParams, 'prompt'>>;
};
export declare class ClaudeAI {
    protected _apiBaseUrl: string;
    protected _sessionKey: string;
    protected _apiOrg: string;
    protected _completionParams: Partial<Omit<ClaudeAI.CompletionParams, 'prompt'>>;
    constructor(opts: ClaudeAIOptions);
    sendMessage(text: string, options?: ClaudeSendMessageOptions): Promise<ChatMessage>;
    protected upsertChatConversations(options?: ClaudeSendMessageOptions): Promise<{
        conversationId: string;
    }>;
    protected createChatConversations(): Promise<{
        uuid: string;
        name: string;
        summary: string;
        created_at: string;
        updated_at: string;
    }>;
    request(path: string, init: RequestInit): Promise<Response>;
    protected defaultHeaders(): Record<string, string>;
    protected authHeaders(): Record<string, string>;
    protected userAgent(): string;
}
export declare namespace ClaudeAI {
    type Model = (string & NonNullable<unknown>) | 'claude-2';
    type Attachment = {
        file_name?: string;
        file_size?: number;
        file_type?: string;
        extracted_content: string;
        totalPages?: number;
    };
    type CompletionParams = {
        model: Model;
        timezone?: string;
        prompt: string;
    };
    type ChatCompletionCreateParams = {
        conversation_uuid: string;
        organization_uuid: string;
        completion: CompletionParams;
        attachments?: Attachment[];
    };
}
