import type { IJodit } from "jodit/esm/types/index";
import type { IAIAssistantResult, IAIMessage, IConversationOptions, ISelectionContext } from "../interface/index";
import type { ToolRegistry } from "./tool-registry";
/**
 * API Client - handles requests to AI API with retry logic
 */
export declare class APIClient {
    private jodit;
    private toolRegistry;
    private abortControllers;
    constructor(jodit: IJodit, toolRegistry: ToolRegistry);
    /**
     * Send request to AI API
     */
    sendRequest(conversationId: string, messages: Readonly<IAIMessage[]>, parentMessageId: string | null, selectionContexts: ISelectionContext[], conversationOptions?: IConversationOptions): Promise<IAIAssistantResult>;
    /**
     * Abort current request
     */
    abort(): void;
    /**
     * Check if request is in progress
     */
    isInProgress(): boolean;
    /**
     * Build request context
     */
    private buildRequestContext;
    /**
     * Expand messages with tool calls by adding separate tool result messages
     */
    private expandToolMessages;
    private expandToolResultsMessage;
    /**
     * Validate API response
     */
    private validateResponse;
    /**
     * Calculate retry delay with exponential backoff
     */
    private calculateRetryDelay;
    /**
     * Sleep utility
     */
    private sleep;
    /**
     * Destroy client
     */
    destruct(): void;
}
