/// import { EventEmitter } from 'events'; import { ClientType } from './Client'; import { InteractiveError } from './errors'; import { IControl, IGroupDataArray, IGroupDeletionParams, IInput, IParticipantArray, ISceneControlDeletion, ISceneData, ISceneDataArray, ISceneDeletionParams } from './state/interfaces'; import { IState } from './state/IState'; export interface IClient extends EventEmitter { clientType: ClientType; state: IState; execute(method: string, params: T, discard: boolean): Promise; ready(isReady: boolean): Promise; createControls(controls: ISceneData): Promise; createGroups(groups: IGroupDataArray): Promise; createScene(scene: ISceneData): Promise; createScenes(scenes: ISceneDataArray): Promise; updateControls(controls: ISceneData): Promise; updateGroups(groups: IGroupDataArray): Promise; deleteControls(controls: ISceneControlDeletion): Promise; deleteGroup(data: IGroupDeletionParams): Promise; deleteScene(data: ISceneDeletionParams): Promise; updateScenes(scenes: ISceneDataArray): Promise; updateParticipants(participants: IParticipantArray): Promise; giveInput(_: T): Promise; getTime(): Promise; on(event: 'open', listener: () => void): this; on(event: 'send', listener: (payload: string) => void): this; on(event: 'message', listener: (payload: string) => void): this; on(event: 'error', listener: (err: InteractiveError.Base) => void): this; on(event: 'hello', listener: () => void): this; on(event: string, listener: Function): this; }