import { Message } from "../chat/Message.js";
import { Provider, ChatRequest, ChatResponse, ChatChunk, ModelInfo, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, EmbeddingRequest, EmbeddingResponse, ProviderCapabilities } from "./Provider.js";
/**
 * Abstract base class for all LLM providers.
 * Provides common functionality and default implementations for unsupported features.
 * Each provider must implement the abstract methods and can override default implementations.
 */
export declare abstract class BaseProvider implements Provider {
    abstract apiBase(): string;
    abstract headers(): Record<string, string>;
    protected abstract providerName(): string;
    get id(): string;
    defaultModel(_feature?: string): string;
    protected throwUnsupportedError(feature: string): never;
    abstract chat(request: ChatRequest): Promise<ChatResponse>;
    capabilities?: ProviderCapabilities;
    /**
     * Provides a set of default capabilities where everything is disabled.
     * Useful for custom providers to start with a safe baseline.
     */
    protected defaultCapabilities(): ProviderCapabilities;
    stream?(_request: ChatRequest): AsyncIterable<ChatChunk>;
    listModels?(): Promise<ModelInfo[]>;
    paint?(_request: ImageRequest): Promise<ImageResponse>;
    transcribe?(_request: TranscriptionRequest): Promise<TranscriptionResponse>;
    moderate?(_request: ModerationRequest): Promise<ModerationResponse>;
    embed?(_request: EmbeddingRequest): Promise<EmbeddingResponse>;
    formatToolResultMessage(toolCallId: string, content: string, options?: {
        isError?: boolean;
    }): Message;
}
//# sourceMappingURL=BaseProvider.d.ts.map