import { Chat, List } from '..';
import { ChatHistory } from './Chat';
import { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
export interface OpenAiChatApi {
    chatCompletion: (history: ChatHistory) => Promise<any>;
    createAudioTranscription: (file: File) => Promise<any>;
    uploadFile: (file: File) => Promise<any>;
}
export type ChatCompletionMessage = ChatCompletionMessageParam & {
    id: string;
};
export type ChatRoomHistory = List<ChatCompletionMessage>;
export declare class OpenAiChat {
    chat: Chat;
    loadingAiResponse: boolean;
    api: OpenAiChatApi;
    constructor(api: OpenAiChatApi);
    get lastAssistantMessageIndex(): number;
    get history(): ChatHistory;
    /**
     * The api does not include an id for the message, so we strip these out
     */
    get chatAiChatHistory(): {
        userId: string;
        content: string;
    }[];
    addMessage: (message: ChatCompletionMessage) => void;
    requestAudioTranscription: (file: File) => Promise<void>;
    uploadFile: (file: File) => Promise<void>;
    sendUserMessage: (message: string) => Promise<void>;
    setAiLoading: (loading: boolean) => void;
    /**
     * Handle error when content length is exceeded
     * code: "context_length_exceeded"
     * message: "This model's maximum context length is 4097 tokens. However, your messages resulted in 4176 tokens. Please reduce the length of the messages."
     * param: "messages"
     * type: "invalid_request_error"
     */
    private handleErrorContentLengthExceeded;
    private resolveErrorMessage;
    private handleErrorMessage;
}
