@meyer/hyperdeck-emulator
Version:
Typescript Node.js library for emulating a Blackmagic Hyperdeck
197 lines • 6.75 kB
TypeScript
import { Timecode } from './Timecode';
import type { CommandName, CommandParamsByCommandName, CommandResponsesByCommandName } from './api';
export interface NotificationConfig {
transport: boolean;
remote: boolean;
slot: boolean;
configuration: boolean;
}
export declare type DeserializedCommandsByName = {
[K in CommandName]: {
raw: string;
name: K;
parameters: CommandParamsByCommandName[K];
};
};
export declare type DeserializedCommand = DeserializedCommandsByName[CommandName];
export declare type CommandHandler<T extends CommandName> = (cmd: DeserializedCommandsByName[T]['parameters']) => Promise<CommandResponsesByCommandName[T]>;
export declare type ResponsesByCommandName = {
[K in CommandName]: {
name: K;
response: CommandResponsesByCommandName[K];
};
};
export declare type CommandResponse = ResponsesByCommandName[CommandName];
export declare type ResponseCode = ErrorCode | SynchronousCode | AsynchronousCode;
export declare enum ErrorCode {
SyntaxError = 100,
UnsupportedParameter = 101,
InvalidValue = 102,
Unsupported = 103,
DiskFull = 104,
NoDisk = 105,
DiskError = 106,
TimelineEmpty = 107,
InternalError = 108,
OutOfRange = 109,
NoInput = 110,
RemoteControlDisabled = 111,
ConnectionRejected = 120,
InvalidState = 150,
InvalidCodec = 151,
InvalidFormat = 160,
InvalidToken = 161,
FormatNotPrepared = 162
}
export declare enum SynchronousCode {
OK = 200,
SlotInfo = 202,
DeviceInfo = 204,
ClipsInfo = 205,
DiskList = 206,
TransportInfo = 208,
Notify = 209,
Remote = 210,
Configuration = 211,
ClipsCount = 214,
Uptime = 215,
FormatReady = 216
}
export declare enum AsynchronousCode {
ConnectionInfo = 500,
SlotInfo = 502,
TransportInfo = 508,
RemoteInfo = 510,
ConfigurationInfo = 511
}
export declare type NotifyType = 'slot' | 'transport' | 'remote' | 'configuration';
export declare const responseNamesByCode: Record<ResponseCode, string>;
export declare const slotStatus: {
empty: boolean;
mounting: boolean;
error: boolean;
mounted: boolean;
};
export declare type SlotStatus = keyof typeof slotStatus;
export declare const isSlotStatus: (value: any) => value is "empty" | "mounting" | "error" | "mounted";
export declare const videoFormats: {
NTSC: boolean;
PAL: boolean;
NTSCp: boolean;
PALp: boolean;
'720p50': boolean;
'720p5994': boolean;
'720p60': boolean;
'1080p23976': boolean;
'1080p24': boolean;
'1080p25': boolean;
'1080p2997': boolean;
'1080p30': boolean;
'1080i50': boolean;
'1080i5994': boolean;
'1080i60': boolean;
'4Kp23976': boolean;
'4Kp24': boolean;
'4Kp25': boolean;
'4Kp2997': boolean;
'4Kp30': boolean;
'4Kp50': boolean;
'4Kp5994': boolean;
'4Kp60': boolean;
};
export interface ClipV1 {
name: string;
startT: Timecode;
duration: Timecode;
}
export declare const isClipV1: (value: any) => value is ClipV1;
export interface ClipV2 {
startT: Timecode;
duration: number;
inT: Timecode;
outT: Timecode;
name: string;
}
export declare type VideoFormat = keyof typeof videoFormats;
export declare const isVideoFormat: (value: any) => value is "NTSC" | "PAL" | "NTSCp" | "PALp" | "720p50" | "720p5994" | "720p60" | "1080p23976" | "1080p24" | "1080p25" | "1080p2997" | "1080p30" | "1080i50" | "1080i5994" | "1080i60" | "4Kp23976" | "4Kp24" | "4Kp25" | "4Kp2997" | "4Kp30" | "4Kp50" | "4Kp5994" | "4Kp60";
export declare const transportStatus: {
preview: boolean;
stopped: boolean;
play: boolean;
forward: boolean;
rewind: boolean;
jog: boolean;
shuttle: boolean;
record: boolean;
};
export declare type TransportStatus = keyof typeof transportStatus;
export declare const isTransportStatus: (value: any) => value is "preview" | "play" | "record" | "jog" | "shuttle" | "stopped" | "forward" | "rewind";
export declare const stopModes: {
lastframe: boolean;
nextframe: boolean;
black: boolean;
};
export declare type StopMode = keyof typeof stopModes;
export declare const isStopMode: (value: any) => value is "lastframe" | "nextframe" | "black";
export declare const videoInputs: {
SDI: boolean;
HDMI: boolean;
component: boolean;
};
export declare type VideoInput = keyof typeof videoInputs;
export declare const isVideoInput: (value: any) => value is "SDI" | "HDMI" | "component";
export declare const audioInputs: {
XLR: boolean;
RCA: boolean;
embedded: boolean;
};
export declare type AudioInput = keyof typeof audioInputs;
export declare const isAudioInput: (value: any) => value is "XLR" | "RCA" | "embedded";
export declare const audioCodecs: {
PCM: boolean;
AAC: boolean;
};
export declare type AudioCodec = keyof typeof audioCodecs;
export declare const isAudioCodec: (value: any) => value is "PCM" | "AAC";
export declare const timecodeInputs: {
external: boolean;
embedded: boolean;
preset: boolean;
clip: boolean;
};
export declare type TimecodeInput = keyof typeof timecodeInputs;
export declare const isTimecodeInput: (value: any) => value is "embedded" | "external" | "preset" | "clip";
export declare const recordTriggers: {
none: boolean;
recordbit: boolean;
timecoderun: boolean;
};
export declare type RecordTrigger = keyof typeof recordTriggers;
export declare const isRecordTrigger: (value: any) => value is "none" | "recordbit" | "timecoderun";
export declare type FileFormat = 'QuickTimeUncompressed' | 'QuickTimeProResHQ' | 'QuickTimeProRes' | 'QuickTimeProResLT' | 'QuickTimeProResProxy' | 'QuickTimeDNxHR220' | 'DNxHR220';
export declare type ArgKey = keyof TypesByStringKey;
export declare type ArgsTypes<T extends Record<string, ArgKey>> = {
[K in keyof T]?: TypesByStringKey[T[K]];
};
export interface TypesByStringKey {
boolean: boolean;
string: string;
timecode: Timecode;
number: number;
videoformat: VideoFormat;
stopmode: StopMode;
goto: 'start' | 'end' | string | number;
videoinput: VideoInput;
audioinput: AudioInput;
fileformat: string;
audiocodec: AudioCodec;
timecodeinput: TimecodeInput;
recordtrigger: RecordTrigger;
clips: ClipV1[];
slotstatus: SlotStatus;
transportstatus: TransportStatus;
}
export declare const stringToValueFns: {
[K in keyof TypesByStringKey]: (value: unknown) => TypesByStringKey[K];
};
//# sourceMappingURL=types.d.ts.map