import Usage from "../models/chatgpt-usage.js";
import Options from "../models/chatgpt-options.js";
import Conversation from "../models/conversation.js";
import { OpenAI } from "openai";
declare class Assistant {
    options: Options;
    private db;
    onUsage: (usage: Usage) => void;
    private openai;
    private assistantId;
    private theadId;
    private runId;
    private conversationThreads;
    constructor(key: string | string[], options?: Options);
    createAssistant(options: Options): Promise<void>;
    createThread(): Promise<string>;
    addMessageToThread(threadId: string, content: string): Promise<OpenAI.Beta.Threads.Messages.Message>;
    runAssistant(threadId: string, instructions?: string): Promise<string>;
    checkRunStatus(threadId: string, runId: string): Promise<OpenAI.Beta.Threads.Runs.Run>;
    getAssistantResponses(threadId: string): Promise<OpenAI.Beta.Threads.Messages.Message[]>;
    createAndRunThread(prompt: string, userName?: string, conversationId?: string | null): Promise<any>;
    waitForRunToComplete(threadId: string, runId: string): Promise<void>;
    formatResponse(responses: any[]): any;
    private getOpenAIKey;
    private chunksToLines;
    private linesToMessages;
    private streamCompletion;
    private getInstructions;
    addConversation(conversationId: string, userName?: string): Conversation;
    getConversation(conversationId: string, userName?: string): Conversation;
    resetConversation(conversationId: string): Conversation;
    ask(prompt: string, conversationId?: string, type?: number, function_name?: string, userName?: string): Promise<any>;
    askPost(data: (arg0: string) => void, usage: (usage: Usage) => void, prompt: string, conversationId?: string, function_name?: string, userName?: string, type?: number): Promise<any>;
    moderate(prompt: string, key: string): Promise<boolean>;
    private generatePrompt;
    private generateMessages;
    private countTokens;
    private getToday;
    private getTime;
    private wait;
}
export default Assistant;
