import { AIAdapter, AIAdapterConfig, AIMessage, AIResponse, AICompletionOptions, AIStreamChunk } from '../types/index.js';

export declare abstract class BaseAIAdapter implements AIAdapter {
    protected config: AIAdapterConfig;
    protected currentModel: string;
    constructor(config: AIAdapterConfig);
    abstract get name(): string;
    abstract get models(): string[];
    protected abstract getDefaultModel(): string;
    abstract complete(messages: AIMessage[], options?: AICompletionOptions): Promise<AIResponse>;
    abstract stream?(messages: AIMessage[], options?: AICompletionOptions): AsyncIterable<AIStreamChunk>;
    abstract isAvailable(): Promise<boolean>;
    getModel(): string;
    setModel(model: string): void;
    protected retry<T>(operation: () => Promise<T>, attempts?: number, delay?: number): Promise<T>;
    protected isRetryableError(error: unknown): boolean;
    protected sleep(ms: number): Promise<void>;
    protected formatMessages(messages: AIMessage[]): unknown[];
    protected createAbortController(signal?: AbortSignal, timeout?: number): AbortController;
}
//# sourceMappingURL=base-adapter.d.ts.map