import { UUID } from "node:crypto"; import { OpenAI } from "openai"; import { Stream } from "openai/streaming.mjs"; import { Message } from "../../../../interfaces/message/message.js"; import { Agent } from "../../../../interfaces/agent/agent.js"; import { STT } from "../../../../interfaces/stt/stt.js"; import { TTS } from "../../../../interfaces/tts/tts.js"; import { Mutex } from "../../../../commons/mutex.js"; import { VoIP, VoIPEvents } from "../../../../interfaces/voip/voip.js"; export interface OpenAIAgentOptions>> { voip: VoIPT; stt: STT; tts: TTS; apiKey: string; model: string; queueSizeLimit?: number; } export declare abstract class OpenAIAgent>> implements Agent { protected voip: VoIPT; protected stt: STT; protected tts: TTS; protected openAI: OpenAI; protected model: string; protected stream?: Stream; protected activeMessages: Set; protected dispatches: Set; protected mutex: Mutex; constructor({ apiKey, model, voip, stt, tts, queueSizeLimit }: OpenAIAgentOptions); abstract inference: (message: Message) => Promise; post: (message: Message) => void; protected dispatchStream: (uuid: UUID, stream: Stream, allowInterrupt?: boolean) => Promise; protected dispatchMessage: (message: Message, allowInterrupt?: boolean) => Promise; protected postStream: (uuid: UUID, stream: Stream) => Promise; protected createDispatch: (uuid: UUID) => Promise; abort: () => void; protected deleteActiveMessage: (uuid: UUID) => void; dispose: (err?: unknown) => void; setTTS: (tts: TTS) => void; setSTT: (stt: STT) => void; activate(): void; deactivate(): void; }