import AssistantEngine from '../../engine'; import { EntityMap } from '../../utils/entity-utils'; import Conversation, { ConversationDelegate } from "../conversation"; import { ServerProtocolMessage, ClientProtocolMessage, Message } from "."; export interface SubprotocolImplementation { destroy(): void; handle(msg: any): Promise; } /** * A single connection from a conversation API client. * * This class implements the websocket-based protocol used by the server * and cloud platforms. It extends the conversation protocol with options * related to synchronizing devices, controlling audio, accessing the * user's location, and more. */ export default class ConversationWebSocketConnection implements ConversationDelegate { readonly send: (msg: ServerProtocolMessage) => Promise; private _syncDevices; private _replayHistory; private _pingListener; private _deviceAddedListener; private _conversation; private _engine; private _subprotocols; constructor(conversation: Conversation, sendCallback: (msg: ServerProtocolMessage) => Promise, options?: { replayHistory?: boolean; syncDevices?: boolean; }); get conversationId(): string; get engine(): AssistantEngine; start(): Promise; destroy(): void; private _requestSubprotocol; private _dispatchSubprotocol; handle(msg: ClientProtocolMessage): Promise; setHypothesis(hypothesis: string): Promise; setExpected(what: string | null, context: { code: string[]; entities: EntityMap; }): Promise; addMessage(msg: Message): Promise; private _sendNewDevice; }