import { EventEmitter } from "node:events"; import { VoIPEvents, VoIP } from "../../../interfaces/voip/voip.js"; import { Message } from "../../../interfaces/message/message.js"; import twilio from "twilio"; import { TranscriptStatus, TwilioMetadata } from "./types.js"; import { WebSocketListener } from "./twilio_gateway.js"; import { UUID } from "node:crypto"; export interface TwilioVoIPOptions { metadata: TwilioMetadata; accountSid: string; authToken: string; recordingStatusURL: URL; transcriptStatusURL: URL; } export declare class TwilioVoIP extends EventEmitter> implements VoIP> { protected metadata: TwilioMetadata; protected listener?: WebSocketListener; protected client: twilio.Twilio; protected recordingStatusURL: URL; protected transcriptStatusURL: URL; protected recordingId?: string; protected activeMessages: Set; constructor({ metadata, accountSid, authToken, recordingStatusURL, transcriptStatusURL }: TwilioVoIPOptions); setWebSocketListener: (webSocketListener: WebSocketListener) => void; protected updateMetadata: (metadata: TwilioMetadata) => void; post: (message: Message) => void; abort: (uuid: UUID) => void; protected deleteActiveMessage: (uuid: UUID) => void; transferTo: (tel: string) => void; hangup: () => void; startTranscript: () => Promise; startRecording: () => Promise; stopRecording: () => Promise; removeRecording: () => Promise; dispose: () => void; }