/**
 * Message format for chat interactions
 */
export interface ChatMessage {
    role: 'assistant' | 'user' | 'system';
    content: string;
}
/**
 * Options for chat interactions
 */
export interface ChatOptions {
    systemMessage: string;
    userMessage: string;
    messageHistory: ChatMessage[];
}
/**
 * Response format for chat interactions
 */
export interface ChatResponse {
    role: 'assistant';
    message: string;
}
/**
 * Abstract base class for multi-modal AI models.
 * Provides a common interface for different AI providers (OpenAI, Anthropic, Perplexity, Ollama)
 */
export declare abstract class MultiModalModel {
    /**
     * Initializes the model and any necessary resources
     * Should be called before using any other methods
     */
    abstract start(): Promise<void>;
    /**
     * Cleans up any resources used by the model
     * Should be called when the model is no longer needed
     */
    abstract stop(): Promise<void>;
    /**
     * Synchronous chat interaction with the model
     * @param optionsArg Options containing system message, user message, and message history
     * @returns Promise resolving to the assistant's response
     */
    abstract chat(optionsArg: ChatOptions): Promise<ChatResponse>;
    /**
     * Streaming interface for chat interactions
     * Allows for real-time responses from the model
     * @param input Stream of user messages
     * @returns Stream of model responses
     */
    abstract chatStream(input: ReadableStream<Uint8Array>): Promise<ReadableStream<string>>;
    /**
     * Text-to-speech conversion
     * @param optionsArg Options containing the message to convert to speech
     * @returns Promise resolving to a readable stream of audio data
     * @throws Error if the provider doesn't support audio generation
     */
    abstract audio(optionsArg: {
        message: string;
    }): Promise<NodeJS.ReadableStream>;
    /**
     * Vision-language processing
     * @param optionsArg Options containing the image and prompt for analysis
     * @returns Promise resolving to the model's description or analysis of the image
     * @throws Error if the provider doesn't support vision tasks
     */
    abstract vision(optionsArg: {
        image: Buffer;
        prompt: string;
    }): Promise<string>;
    /**
     * Document analysis and processing
     * @param optionsArg Options containing system message, user message, PDF documents, and message history
     * @returns Promise resolving to the model's analysis of the documents
     * @throws Error if the provider doesn't support document processing
     */
    abstract document(optionsArg: {
        systemMessage: string;
        userMessage: string;
        pdfDocuments: Uint8Array[];
        messageHistory: ChatMessage[];
    }): Promise<{
        message: any;
    }>;
}
