@elgato-stream-deck/core
Version:
An npm module for interfacing with the Elgato Stream Deck
82 lines • 4.83 kB
TypeScript
import { EventEmitter } from 'eventemitter3';
import type { HIDDevice, HIDDeviceInfo } from '../hid-device.js';
import type { DeviceModelId, Dimension, KeyIndex } from '../id.js';
import type { FillImageOptions, FillPanelDimensionsOptions, FillPanelOptions, StreamDeck, StreamDeckEvents, StreamDeckTcpChildDeviceInfo } from '../types.js';
import type { ButtonsLcdDisplayService } from '../services/buttonsLcdDisplay/interface.js';
import type { StreamDeckButtonControlDefinition, StreamDeckControlDefinition } from '../controlDefinition.js';
import type { LcdSegmentDisplayService } from '../services/lcdSegmentDisplay/interface.js';
import type { PropertiesService } from '../services/properties/interface.js';
import type { CallbackHook } from '../services/callback-hook.js';
import type { StreamDeckInputService } from '../services/input/interface.js';
import type { EncoderLedService } from '../services/encoderLed/interface.js';
import { type PreparedBuffer } from '../preparedBuffer.js';
export type EncodeJPEGHelper = (buffer: Uint8Array, width: number, height: number) => Promise<Uint8Array>;
export interface OpenStreamDeckOptions {
encodeJPEG?: EncodeJPEGHelper;
}
export type StreamDeckProperties = Readonly<{
MODEL: DeviceModelId;
PRODUCT_NAME: string;
KEY_DATA_OFFSET: number;
SUPPORTS_RGB_KEY_FILL: boolean;
CONTROLS: Readonly<StreamDeckControlDefinition[]>;
/**
* TODO - rework this
* @deprecated
*/
KEY_SPACING_HORIZONTAL: number;
/**
* TODO - rework this
* @deprecated
*/
KEY_SPACING_VERTICAL: number;
FULLSCREEN_PANELS: number;
HAS_NFC_READER: boolean;
/** Whether this device supports child devices */
SUPPORTS_CHILD_DEVICES: boolean;
}>;
export interface StreamDeckServicesDefinition {
deviceProperties: StreamDeckProperties;
events: CallbackHook<StreamDeckEvents>;
properties: PropertiesService;
buttonsLcd: ButtonsLcdDisplayService;
inputService: StreamDeckInputService;
lcdSegmentDisplay: LcdSegmentDisplayService | null;
encoderLed: EncoderLedService | null;
}
export declare class StreamDeckBase extends EventEmitter<StreamDeckEvents> implements StreamDeck {
#private;
get CONTROLS(): Readonly<StreamDeckControlDefinition[]>;
get MODEL(): DeviceModelId;
get PRODUCT_NAME(): string;
get HAS_NFC_READER(): boolean;
protected readonly device: HIDDevice;
protected readonly deviceProperties: Readonly<StreamDeckProperties>;
constructor(device: HIDDevice, _options: Readonly<Required<OpenStreamDeckOptions>>, services: StreamDeckServicesDefinition);
protected checkValidKeyIndex(keyIndex: KeyIndex, feedbackType: StreamDeckButtonControlDefinition['feedbackType'] | null): void;
calculateFillPanelDimensions(options?: FillPanelDimensionsOptions): Dimension | null;
close(): Promise<void>;
getHidDeviceInfo(): Promise<HIDDeviceInfo>;
setBrightness(percentage: number): Promise<void>;
resetToLogo(): Promise<void>;
getFirmwareVersion(): Promise<string>;
getAllFirmwareVersions(): Promise<Record<string, string>>;
getSerialNumber(): Promise<string>;
sendPreparedBuffer(buffer: PreparedBuffer): Promise<void>;
fillKeyColor(keyIndex: KeyIndex, r: number, g: number, b: number): Promise<void>;
fillKeyBuffer(keyIndex: KeyIndex, imageBuffer: Uint8Array, options?: FillImageOptions): Promise<void>;
prepareFillKeyBuffer(keyIndex: KeyIndex, imageBuffer: Uint8Array | Uint8ClampedArray, options?: FillImageOptions, jsonSafe?: boolean): Promise<PreparedBuffer>;
fillPanelBuffer(imageBuffer: Uint8Array, options?: FillPanelOptions): Promise<void>;
prepareFillPanelBuffer(imageBuffer: Uint8Array | Uint8ClampedArray, options?: FillPanelOptions, jsonSafe?: boolean): Promise<PreparedBuffer>;
clearKey(keyIndex: KeyIndex): Promise<void>;
clearPanel(): Promise<void>;
fillLcd(...args: Parameters<StreamDeck['fillLcd']>): ReturnType<StreamDeck['fillLcd']>;
fillLcdRegion(...args: Parameters<StreamDeck['fillLcdRegion']>): ReturnType<StreamDeck['fillLcdRegion']>;
prepareFillLcdRegion(...args: Parameters<StreamDeck['prepareFillLcdRegion']>): ReturnType<StreamDeck['prepareFillLcdRegion']>;
clearLcdSegment(...args: Parameters<StreamDeck['clearLcdSegment']>): ReturnType<StreamDeck['clearLcdSegment']>;
setEncoderColor(...args: Parameters<StreamDeck['setEncoderColor']>): ReturnType<StreamDeck['setEncoderColor']>;
setEncoderRingSingleColor(...args: Parameters<StreamDeck['setEncoderRingSingleColor']>): ReturnType<StreamDeck['setEncoderRingSingleColor']>;
setEncoderRingColors(...args: Parameters<StreamDeck['setEncoderRingColors']>): ReturnType<StreamDeck['setEncoderRingColors']>;
getChildDeviceInfo(): Promise<StreamDeckTcpChildDeviceInfo | null>;
}
//# sourceMappingURL=base.d.ts.map