@duncte123/obs-websocket-js
Version:
Fork of obs ws v4 so I can create a bridge to v5
1,456 lines (1,113 loc) • 31.5 kB
TypeScript
// 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;
}