UNPKG

@duncte123/obs-websocket-js

Version:
1,456 lines (1,113 loc) 31.5 kB
// This file is generated, do not edit. // TypeScript Version: 3.1 /// <reference types="node" /> declare module "@duncte123/obs-websocket-js" { import { EventEmitter } from "events"; namespace ObsWebSocket { type Callback<K extends keyof RequestMethodReturnMap> = ( error?: Error | ObsWebSocket.ObsError, response?: RequestMethodReturnMap[K] ) => void; interface ObsError { messageId: string; status: "error"; error: string; } interface SceneItem { cy: number; cx: number; alignment: number; name: string; id: number; render: boolean; muted: boolean; locked: boolean; source_cx: number; source_cy: number; type: string; volume: number; x: number; y: number; parentGroupName?: string; groupChildren?: ObsWebSocket.SceneItem[]; } interface SceneItemTransform { rotation: number; visible: boolean; locked: boolean; sourceWidth: number; sourceHeight: number; width: number; height: number; parentGroupName?: string; groupChildren?: ObsWebSocket.SceneItemTransform[]; position: { x: number; y: number; alignment: number }; scale: { x: number; y: number; filter: string }; crop: { top: number; right: number; bottom: number; left: number }; bounds: { type: string; alignment: number; x: number; y: number }; } interface OBSStats { fps: number; "render-total-frames": number; "render-missed-frames": number; "output-total-frames": number; "output-skipped-frames": number; "average-frame-time": number; "cpu-usage": number; "memory-usage": number; "free-disk-space": number; } interface Output { name: string; type: string; width: number; height: number; flags: { rawValue: number; audio: boolean; video: boolean; encoded: boolean; multiTrack: boolean; service: boolean; }; settings: {}; active: boolean; reconnecting: boolean; congestion: number; totalFrames: number; droppedFrames: number; totalBytes: number; } interface ScenesCollection { "sc-name": string; } interface Scene { name: string; sources: ObsWebSocket.SceneItem[]; } } interface RequestMethodsArgsMap { GetVersion: void; GetAuthRequired: void; Authenticate: { auth: string }; SetHeartbeat: { enable: boolean }; SetFilenameFormatting: { "filename-formatting": string }; GetFilenameFormatting: void; GetStats: void; BroadcastCustomMessage: { realm: string; data: {} }; GetVideoInfo: void; OpenProjector: { type?: string; monitor?: number; geometry?: string; name?: string; }; TriggerHotkeyByName: { hotkeyName: string }; TriggerHotkeyBySequence: { keyId: string; keyModifiers?: { shift: boolean; alt: boolean; control: boolean; command: boolean; }; }; ExecuteBatch: { requests: { "request-type": string; "message-id"?: string; [k: string]: any; }[]; abortOnFail?: boolean; }; Sleep: { sleepMillis: number }; PlayPauseMedia: { sourceName: string; playPause: boolean }; RestartMedia: { sourceName: string }; StopMedia: { sourceName: string }; NextMedia: { sourceName: string }; PreviousMedia: { sourceName: string }; GetMediaDuration: { sourceName: string }; GetMediaTime: { sourceName: string }; SetMediaTime: { sourceName: string; timestamp: number }; ScrubMedia: { sourceName: string; timeOffset: number }; GetMediaState: { sourceName: string }; GetMediaSourcesList: void; CreateSource: { sourceName: string; sourceKind: string; sceneName: string; sourceSettings?: {}; setVisible?: boolean; }; GetSourcesList: void; GetSourceTypesList: void; GetVolume: { source: string; useDecibel?: boolean }; SetVolume: { source: string; volume: number; useDecibel?: boolean }; SetAudioTracks: { sourceName: string; track: number; active: boolean }; GetAudioTracks: { sourceName: string }; GetMute: { source: string }; SetMute: { source: string; mute: boolean }; ToggleMute: { source: string }; GetSourceActive: { sourceName: string }; GetAudioActive: { sourceName: string }; SetSourceName: { sourceName: string; newName: string }; SetSyncOffset: { source: string; offset: number }; GetSyncOffset: { source: string }; GetSourceSettings: { sourceName: string; sourceType?: string }; SetSourceSettings: { sourceName: string; sourceType?: string; sourceSettings: {}; }; GetTextGDIPlusProperties: { source: string }; SetTextGDIPlusProperties: { source: string; align?: string; bk_color?: number; bk_opacity?: number; chatlog?: boolean; chatlog_lines?: number; color?: number; extents?: boolean; extents_cx?: number; extents_cy?: number; file?: string; read_from_file?: boolean; font?: { face?: string; flags?: number; size?: number; style?: string }; gradient?: boolean; gradient_color?: number; gradient_dir?: number; gradient_opacity?: number; outline?: boolean; outline_color?: number; outline_size?: number; outline_opacity?: number; text?: string; valign?: string; vertical?: boolean; render?: boolean; }; GetTextFreetype2Properties: { source: string }; SetTextFreetype2Properties: { source: string; color1?: number; color2?: number; custom_width?: number; drop_shadow?: boolean; font?: { face?: string; flags?: number; size?: number; style?: string }; from_file?: boolean; log_mode?: boolean; outline?: boolean; text?: string; text_file?: string; word_wrap?: boolean; }; GetBrowserSourceProperties: { source: string }; SetBrowserSourceProperties: { source: string; is_local_file?: boolean; local_file?: string; url?: string; css?: string; width?: number; height?: number; fps?: number; shutdown?: boolean; render?: boolean; }; GetSpecialSources: void; GetSourceFilters: { sourceName: string }; GetSourceFilterInfo: { sourceName: string; filterName: string }; AddFilterToSource: { sourceName: string; filterName: string; filterType: string; filterSettings: {}; }; RemoveFilterFromSource: { sourceName: string; filterName: string }; ReorderSourceFilter: { sourceName: string; filterName: string; newIndex: number; }; MoveSourceFilter: { sourceName: string; filterName: string; movementType: string; }; SetSourceFilterSettings: { sourceName: string; filterName: string; filterSettings: {}; }; SetSourceFilterVisibility: { sourceName: string; filterName: string; filterEnabled: boolean; }; GetAudioMonitorType: { sourceName: string }; SetAudioMonitorType: { sourceName: string; monitorType: string }; GetSourceDefaultSettings: { sourceKind: string }; TakeSourceScreenshot: { sourceName?: string; embedPictureFormat?: string; saveToFilePath?: string; fileFormat?: string; compressionQuality?: number; width?: number; height?: number; }; RefreshBrowserSource: { sourceName: string }; ListOutputs: void; GetOutputInfo: { outputName: string }; StartOutput: { outputName: string }; StopOutput: { outputName: string; force?: boolean }; SetCurrentProfile: { "profile-name": string }; GetCurrentProfile: void; ListProfiles: void; GetRecordingStatus: void; StartStopRecording: void; StartRecording: void; StopRecording: void; PauseRecording: void; ResumeRecording: void; SetRecordingFolder: { "rec-folder": string }; GetRecordingFolder: void; GetReplayBufferStatus: void; StartStopReplayBuffer: void; StartReplayBuffer: void; StopReplayBuffer: void; SaveReplayBuffer: void; SetCurrentSceneCollection: { "sc-name": string }; GetCurrentSceneCollection: void; ListSceneCollections: void; GetSceneItemList: { sceneName?: string }; GetSceneItemProperties: { "scene-name"?: string; item: { name?: string; id?: number }; }; SetSceneItemProperties: { "scene-name"?: string; item: { name?: string; id?: number }; rotation?: number; visible?: boolean; locked?: boolean; position: { x?: number; y?: number; alignment?: number }; scale: { x?: number; y?: number; filter?: string }; crop: { top?: number; bottom?: number; left?: number; right?: number }; bounds: { type?: string; alignment?: number; x?: number; y?: number }; }; ResetSceneItem: { "scene-name"?: string; item: { name?: string; id?: number }; }; SetSceneItemRender: { "scene-name"?: string; source?: string; item?: number; render: boolean; }; SetSceneItemPosition: { "scene-name"?: string; item: string; x: number; y: number; }; SetSceneItemTransform: { "scene-name"?: string; item: string; "x-scale": number; "y-scale": number; rotation: number; }; SetSceneItemCrop: { "scene-name"?: string; item: string; top: number; bottom: number; left: number; right: number; }; DeleteSceneItem: { scene?: string; item: { name: string; id: number } }; AddSceneItem: { sceneName: string; sourceName: string; setVisible?: boolean; }; DuplicateSceneItem: { fromScene?: string; toScene?: string; item: { name: string; id: number }; }; SetCurrentScene: { "scene-name": string }; GetCurrentScene: void; GetSceneList: void; CreateScene: { sceneName: string }; ReorderSceneItems: { scene?: string; items: { id?: number; name?: string }[]; }; SetSceneTransitionOverride: { sceneName: string; transitionName: string; transitionDuration?: number; }; RemoveSceneTransitionOverride: { sceneName: string }; GetSceneTransitionOverride: { sceneName: string }; GetStreamingStatus: void; StartStopStreaming: void; StartStreaming: { stream?: { type?: string; metadata?: {}; settings?: { server?: string; key?: string; use_auth?: boolean; username?: string; password?: string; }; }; }; StopStreaming: void; SetStreamSettings: { type: string; settings: { server?: string; key?: string; use_auth?: boolean; username?: string; password?: string; }; save: boolean; }; GetStreamSettings: void; SaveStreamSettings: void; SendCaptions: { text: string }; GetStudioModeStatus: void; GetPreviewScene: void; SetPreviewScene: { "scene-name": string }; TransitionToProgram: { "with-transition"?: { name: string; duration?: number }; }; EnableStudioMode: void; DisableStudioMode: void; ToggleStudioMode: void; GetTransitionList: void; GetCurrentTransition: void; SetCurrentTransition: { "transition-name": string }; SetTransitionDuration: { duration: number }; GetTransitionDuration: void; GetTransitionPosition: void; GetTransitionSettings: { transitionName: string }; SetTransitionSettings: { transitionName: string; transitionSettings: {} }; ReleaseTBar: void; SetTBarPosition: { position: number; release?: boolean }; GetVirtualCamStatus: void; StartStopVirtualCam: void; StartVirtualCam: void; StopVirtualCam: void; } interface RequestMethodReturnMap { GetVersion: { messageId: string; status: "ok"; version: number; "obs-websocket-version": string; "obs-studio-version": string; "available-requests": string; "supported-image-export-formats": string; }; GetAuthRequired: { messageId: string; status: "ok"; authRequired: boolean; challenge?: string; salt?: string; }; Authenticate: void; SetHeartbeat: void; SetFilenameFormatting: void; GetFilenameFormatting: { messageId: string; status: "ok"; "filename-formatting": string; }; GetStats: { messageId: string; status: "ok"; stats: ObsWebSocket.OBSStats }; BroadcastCustomMessage: void; GetVideoInfo: { messageId: string; status: "ok"; baseWidth: number; baseHeight: number; outputWidth: number; outputHeight: number; scaleType: string; fps: number; videoFormat: string; colorSpace: string; colorRange: string; }; OpenProjector: void; TriggerHotkeyByName: void; TriggerHotkeyBySequence: void; ExecuteBatch: { messageId: string; status: "ok"; results: { "message-id": string; status: string; error?: string; [k: string]: any; }[]; }; Sleep: void; PlayPauseMedia: void; RestartMedia: void; StopMedia: void; NextMedia: void; PreviousMedia: void; GetMediaDuration: { messageId: string; status: "ok"; mediaDuration: number; }; GetMediaTime: { messageId: string; status: "ok"; timestamp: number }; SetMediaTime: void; ScrubMedia: void; GetMediaState: { messageId: string; status: "ok"; mediaState: string }; GetMediaSourcesList: { messageId: string; status: "ok"; mediaSources: { sourceName: string; sourceKind: string; mediaState: string; }[]; }; CreateSource: { messageId: string; status: "ok"; itemId: number }; GetSourcesList: { messageId: string; status: "ok"; sources: { name: string; typeId: string; type: string }[]; }; GetSourceTypesList: { messageId: string; status: "ok"; types: { typeId: string; displayName: string; type: string; defaultSettings: {}; caps: { isAsync: boolean; hasVideo: boolean; hasAudio: boolean; canInteract: boolean; isComposite: boolean; doNotDuplicate: boolean; doNotSelfMonitor: boolean; }; }[]; }; GetVolume: { messageId: string; status: "ok"; name: string; volume: number; muted: boolean; }; SetVolume: void; SetAudioTracks: void; GetAudioTracks: { messageId: string; status: "ok"; track1: boolean; track2: boolean; track3: boolean; track4: boolean; track5: boolean; track6: boolean; }; GetMute: { messageId: string; status: "ok"; name: string; muted: boolean }; SetMute: void; ToggleMute: void; GetSourceActive: { messageId: string; status: "ok"; sourceActive: boolean }; GetAudioActive: { messageId: string; status: "ok"; audioActive: boolean }; SetSourceName: void; SetSyncOffset: void; GetSyncOffset: { messageId: string; status: "ok"; name: string; offset: number; }; GetSourceSettings: { messageId: string; status: "ok"; sourceName: string; sourceType: string; sourceSettings: {}; }; SetSourceSettings: { messageId: string; status: "ok"; sourceName: string; sourceType: string; sourceSettings: {}; }; GetTextGDIPlusProperties: { messageId: string; status: "ok"; source: string; align: string; bk_color: number; bk_opacity: number; chatlog: boolean; chatlog_lines: number; color: number; extents: boolean; extents_cx: number; extents_cy: number; file: string; read_from_file: boolean; font: { face: string; flags: number; size: number; style: string }; gradient: boolean; gradient_color: number; gradient_dir: number; gradient_opacity: number; outline: boolean; outline_color: number; outline_size: number; outline_opacity: number; text: string; valign: string; vertical: boolean; }; SetTextGDIPlusProperties: void; GetTextFreetype2Properties: { messageId: string; status: "ok"; source: string; color1: number; color2: number; custom_width: number; drop_shadow: boolean; font: { face: string; flags: number; size: number; style: string }; from_file: boolean; log_mode: boolean; outline: boolean; text: string; text_file: string; word_wrap: boolean; }; SetTextFreetype2Properties: void; GetBrowserSourceProperties: { messageId: string; status: "ok"; source: string; is_local_file: boolean; local_file: string; url: string; css: string; width: number; height: number; fps: number; shutdown: boolean; }; SetBrowserSourceProperties: void; GetSpecialSources: { messageId: string; status: "ok"; "desktop-1"?: string; "desktop-2"?: string; "mic-1"?: string; "mic-2"?: string; "mic-3"?: string; }; GetSourceFilters: { messageId: string; status: "ok"; filters: { enabled: boolean; type: string; name: string; settings: {} }[]; }; GetSourceFilterInfo: { messageId: string; status: "ok"; enabled: boolean; type: string; name: string; settings: {}; }; AddFilterToSource: void; RemoveFilterFromSource: void; ReorderSourceFilter: void; MoveSourceFilter: void; SetSourceFilterSettings: void; SetSourceFilterVisibility: void; GetAudioMonitorType: { messageId: string; status: "ok"; monitorType: string; }; SetAudioMonitorType: void; GetSourceDefaultSettings: { messageId: string; status: "ok"; sourceKind: string; defaultSettings: {}; }; TakeSourceScreenshot: { messageId: string; status: "ok"; sourceName: string; img: string; imageFile: string; }; RefreshBrowserSource: void; ListOutputs: { messageId: string; status: "ok"; outputs: ObsWebSocket.Output[]; }; GetOutputInfo: { messageId: string; status: "ok"; outputInfo: ObsWebSocket.Output; }; StartOutput: void; StopOutput: void; SetCurrentProfile: void; GetCurrentProfile: { messageId: string; status: "ok"; "profile-name": string; }; ListProfiles: { messageId: string; status: "ok"; profiles: { "profile-name": string }[]; }; GetRecordingStatus: { messageId: string; status: "ok"; isRecording: boolean; isRecordingPaused: boolean; recordTimecode?: string; recordingFilename?: string; }; StartStopRecording: void; StartRecording: void; StopRecording: void; PauseRecording: void; ResumeRecording: void; SetRecordingFolder: void; GetRecordingFolder: { messageId: string; status: "ok"; "rec-folder": string; }; GetReplayBufferStatus: { messageId: string; status: "ok"; isReplayBufferActive: boolean; }; StartStopReplayBuffer: void; StartReplayBuffer: void; StopReplayBuffer: void; SaveReplayBuffer: void; SetCurrentSceneCollection: void; GetCurrentSceneCollection: { messageId: string; status: "ok"; "sc-name": string; }; ListSceneCollections: { messageId: string; status: "ok"; "scene-collections": ObsWebSocket.ScenesCollection[]; }; GetSceneItemList: { messageId: string; status: "ok"; sceneName: string; sceneItems: { itemId: number; sourceKind: string; sourceName: string; sourceType: string; }[]; }; GetSceneItemProperties: { messageId: string; status: "ok"; name: string; itemId: number; rotation: number; visible: boolean; muted: boolean; locked: boolean; sourceWidth: number; sourceHeight: number; width: number; height: number; parentGroupName?: string; groupChildren?: ObsWebSocket.SceneItemTransform[]; position: { x: number; y: number; alignment: number }; scale: { x: number; y: number; filter: string }; crop: { top: number; right: number; bottom: number; left: number }; bounds: { type: string; alignment: number; x: number; y: number }; }; SetSceneItemProperties: void; ResetSceneItem: void; SetSceneItemRender: void; SetSceneItemPosition: void; SetSceneItemTransform: void; SetSceneItemCrop: void; DeleteSceneItem: void; AddSceneItem: { messageId: string; status: "ok"; itemId: number }; DuplicateSceneItem: { messageId: string; status: "ok"; scene: string; item: { id: number; name: string }; }; SetCurrentScene: void; GetCurrentScene: { messageId: string; status: "ok"; name: string; sources: ObsWebSocket.SceneItem[]; }; GetSceneList: { messageId: string; status: "ok"; "current-scene": string; scenes: ObsWebSocket.Scene[]; }; CreateScene: void; ReorderSceneItems: void; SetSceneTransitionOverride: void; RemoveSceneTransitionOverride: void; GetSceneTransitionOverride: { messageId: string; status: "ok"; transitionName: string; transitionDuration: number; }; GetStreamingStatus: { messageId: string; status: "ok"; streaming: boolean; recording: boolean; "recording-paused": boolean; virtualcam: boolean; "preview-only": boolean; "stream-timecode"?: string; "rec-timecode"?: string; "virtualcam-timecode"?: string; }; StartStopStreaming: void; StartStreaming: void; StopStreaming: void; SetStreamSettings: void; GetStreamSettings: { messageId: string; status: "ok"; type: string; settings: { server: string; key: string; use_auth: boolean; username: string; password: string; }; }; SaveStreamSettings: void; SendCaptions: void; GetStudioModeStatus: { messageId: string; status: "ok"; "studio-mode": boolean; }; GetPreviewScene: { messageId: string; status: "ok"; name: string; sources: ObsWebSocket.SceneItem[]; }; SetPreviewScene: void; TransitionToProgram: void; EnableStudioMode: void; DisableStudioMode: void; ToggleStudioMode: void; GetTransitionList: { messageId: string; status: "ok"; "current-transition": string; transitions: { name: string }[]; }; GetCurrentTransition: { messageId: string; status: "ok"; name: string; duration?: number; }; SetCurrentTransition: void; SetTransitionDuration: void; GetTransitionDuration: { messageId: string; status: "ok"; "transition-duration": number; }; GetTransitionPosition: { messageId: string; status: "ok"; position: number; }; GetTransitionSettings: { messageId: string; status: "ok"; transitionSettings: {}; }; SetTransitionSettings: { messageId: string; status: "ok"; transitionSettings: {}; }; ReleaseTBar: void; SetTBarPosition: void; GetVirtualCamStatus: { messageId: string; status: "ok"; isVirtualCam: boolean; virtualCamTimecode?: string; }; StartStopVirtualCam: void; StartVirtualCam: void; StopVirtualCam: void; } interface EventHandlersDataMap { ConnectionOpened: void; ConnectionClosed: void; AuthenticationSuccess: void; AuthenticationFailure: void; error: { error: any; message: string; type: string; // This would require importing all of the WebSocket types so leaving out for now. // target: WebSocket; }; SwitchScenes: { "scene-name": string; sources: ObsWebSocket.SceneItem[] }; ScenesChanged: { scenes: ObsWebSocket.Scene[] }; SceneCollectionChanged: { sceneCollection: string }; SceneCollectionListChanged: { sceneCollections: { name: string }[] }; SwitchTransition: { "transition-name": string }; TransitionListChanged: { transitions: { name: string }[] }; TransitionDurationChanged: { "new-duration": number }; TransitionBegin: { name: string; type: string; duration: number; "from-scene"?: string; "to-scene": string; }; TransitionEnd: { name: string; type: string; duration: number; "to-scene": string; }; TransitionVideoEnd: { name: string; type: string; duration: number; "from-scene"?: string; "to-scene": string; }; ProfileChanged: { profile: string }; ProfileListChanged: { profiles: { name: string }[] }; StreamStarting: { "preview-only": boolean }; StreamStarted: void; StreamStopping: { "preview-only": boolean }; StreamStopped: void; StreamStatus: { streaming: boolean; recording: boolean; "replay-buffer-active": boolean; "bytes-per-sec": number; "kbits-per-sec": number; strain: number; "total-stream-time": number; "num-total-frames": number; "num-dropped-frames": number; fps: number; "render-total-frames": number; "render-missed-frames": number; "output-total-frames": number; "output-skipped-frames": number; "average-frame-time": number; "cpu-usage": number; "memory-usage": number; "free-disk-space": number; "preview-only": boolean; }; RecordingStarting: void; RecordingStarted: { recordingFilename: string }; RecordingStopping: { recordingFilename: string }; RecordingStopped: { recordingFilename: string }; RecordingPaused: void; RecordingResumed: void; VirtualCamStarted: void; VirtualCamStopped: void; ReplayStarting: void; ReplayStarted: void; ReplayStopping: void; ReplayStopped: void; Exiting: void; Heartbeat: { pulse: boolean; "current-profile"?: string; "current-scene"?: string; streaming?: boolean; "total-stream-time"?: number; "total-stream-bytes"?: number; "total-stream-frames"?: number; recording?: boolean; "total-record-time"?: number; "total-record-bytes"?: number; "total-record-frames"?: number; stats: ObsWebSocket.OBSStats; }; BroadcastCustomMessage: { realm: string; data: {} }; SourceCreated: { sourceName: string; sourceType: string; sourceKind: string; sourceSettings: {}; }; SourceDestroyed: { sourceName: string; sourceType: string; sourceKind: string; }; SourceVolumeChanged: { sourceName: string; volume: number; volumeDb: number; }; SourceMuteStateChanged: { sourceName: string; muted: boolean }; SourceAudioDeactivated: { sourceName: string }; SourceAudioActivated: { sourceName: string }; SourceAudioSyncOffsetChanged: { sourceName: string; syncOffset: number }; SourceAudioMixersChanged: { sourceName: string; mixers: { id: number; enabled: boolean }[]; hexMixersValue: string; }; SourceRenamed: { previousName: string; newName: string; sourceType: string; }; SourceFilterAdded: { sourceName: string; filterName: string; filterType: string; filterSettings: {}; }; SourceFilterRemoved: { sourceName: string; filterName: string; filterType: string; }; SourceFilterVisibilityChanged: { sourceName: string; filterName: string; filterEnabled: boolean; }; SourceFiltersReordered: { sourceName: string; filters: { name: string; type: string; enabled: boolean }[]; }; MediaPlaying: { sourceName: string; sourceKind: string }; MediaPaused: { sourceName: string; sourceKind: string }; MediaRestarted: { sourceName: string; sourceKind: string }; MediaStopped: { sourceName: string; sourceKind: string }; MediaNext: { sourceName: string; sourceKind: string }; MediaPrevious: { sourceName: string; sourceKind: string }; MediaStarted: { sourceName: string; sourceKind: string }; MediaEnded: { sourceName: string; sourceKind: string }; SourceOrderChanged: { "scene-name": string; "scene-items": { "source-name": string; "item-id": number }[]; }; SceneItemAdded: { "scene-name": string; "item-name": string; "item-id": number; }; SceneItemRemoved: { "scene-name": string; "item-name": string; "item-id": number; }; SceneItemVisibilityChanged: { "scene-name": string; "item-name": string; "item-id": number; "item-visible": boolean; }; SceneItemLockChanged: { "scene-name": string; "item-name": string; "item-id": number; "item-locked": boolean; }; SceneItemTransformChanged: { "scene-name": string; "item-name": string; "item-id": number; transform: ObsWebSocket.SceneItemTransform; }; SceneItemSelected: { "scene-name": string; "item-name": string; "item-id": number; }; SceneItemDeselected: { "scene-name": string; "item-name": string; "item-id": number; }; PreviewSceneChanged: { "scene-name": string; sources: ObsWebSocket.SceneItem[]; }; StudioModeSwitched: { "new-state": boolean }; } class ObsWebSocket extends EventEmitter { connect( options?: { address?: string; password?: string; secure?: boolean }, callback?: (error?: Error) => void ): Promise<void>; disconnect(): void; send<K extends keyof RequestMethodsArgsMap>( requestType: K, ...args: RequestMethodsArgsMap[K] extends object ? [RequestMethodsArgsMap[K]] : [undefined?] ): Promise<RequestMethodReturnMap[K]>; sendCallback<K extends keyof RequestMethodsArgsMap>( requestType: K, ...args: RequestMethodsArgsMap[K] extends object ? [RequestMethodsArgsMap[K], ObsWebSocket.Callback<K>] : [ObsWebSocket.Callback<K>] ): void; on<K extends keyof EventHandlersDataMap>( type: K, listener: (data: EventHandlersDataMap[K]) => void ): this; } export = ObsWebSocket; }