import { ExitCode } from './exit-code'; import { SourceSet } from './sources/source-set'; import { Abilities } from './abilities'; import { Limits } from './limits'; import { MessageKey } from './message-key'; import { Query } from './query/query'; import { UserEvent } from './user-event'; /** ChatHandler is a collection of callback functions called by certain events within the vchat-core. Feel free to implement the handler within the product to be able to act upon events of the vchat-core. */ export interface ChatHandler { /** * Triggered on chat stop. */ onChatStop(code: ExitCode, exitMessage?: string): void; /** * Triggered when Chat is paused due to enabled one click payment when the time limit is hit */ onChatPause?(): void; /** * * Triggered when the chat resumes due to a one click payment done after a previous pause. * * @param sourceSet - the new sourceset to use when resuming. @deprecated Use {@link ChatHandler.onStreamSourceUpdate} instead. */ onChatResume?(sourceSet: SourceSet): void; /** * handle incoming message * * @param text - * @param from - * @param key - * @param params - */ onMessage(text: string, from: string, key: keyof MessageKey, params: Record): void; /** * Triggered when a single ability is updated */ onAbilityUpdate(name: keyof Abilities, value: boolean): void; /** * Triggered when a query (like "want to access single chat") is fired */ onQuery(query: Query): void; onSingleModeUpdate(value: boolean): void; /** * Triggered to notify about updated sources for the video chat. * @param updatedSourceSet - the updated sources */ onStreamSourceUpdate?(updatedSourceSet: SourceSet): void; /** * Triggered on text chat mute / unmute */ onTextMuteUpdate(value: boolean): void; /** * Triggered when host mutes / unmutes audio */ onAudioMuteUpdate(value: boolean): void; onStreamOrientationUpdate(value: string): void; /** * Triggered when (video) time limit is updated */ onLimitUpdate?(param: keyof Limits, value: number): void; onVideoLimitWarningUpdate?(belowThreshold: boolean, value: number): void; onUserEvent?(event: UserEvent): void; onLeftVoyeurMode?(): void; }