/// import { EventEmitter } from 'events'; import { JPEGEncodeOptions } from '../jpeg'; import { DeviceModelId } from '../models'; import { KeyIndex, StreamDeckDeviceInfo } from './id'; export interface OpenStreamDeckOptions { useOriginalKeyOrder?: boolean; resetToLogoOnExit?: boolean; jpegOptions?: JPEGEncodeOptions; } export interface StreamDeckProperties { MODEL: DeviceModelId; COLUMNS: number; ROWS: number; ICON_SIZE: number; KEY_DIRECTION: 'ltr' | 'rtl'; KEY_DATA_OFFSET: number; } export interface FillImageOptions { format: 'rgb' | 'rgba' | 'bgr' | 'bgra'; } export declare type FillPanelOptions = FillImageOptions; export interface InternalFillImageOptions extends FillImageOptions { offset: number; stride: number; } export interface StreamDeck { readonly NUM_KEYS: number; readonly KEY_COLUMNS: number; readonly KEY_ROWS: number; readonly ICON_SIZE: number; readonly ICON_PIXELS: number; readonly ICON_BYTES: number; readonly MODEL: DeviceModelId; /** * Fills the given key with a solid color. * * @param {number} keyIndex The key to fill * @param {number} r The color's red value. 0 - 255 * @param {number} g The color's green value. 0 - 255 * @param {number} b The color's blue value. 0 -255 */ fillColor(keyIndex: KeyIndex, r: number, g: number, b: number): void; /** * Fills the given key with an image in a Buffer. * * @param {number} keyIndex The key to fill * @param {Buffer} imageBuffer * @param {Object} options */ fillImage(keyIndex: KeyIndex, imageBuffer: Buffer, options?: FillImageOptions): void; /** * Fills the whole panel with an image in a Buffer. * * @param {Buffer} imageBuffer */ fillPanel(imageBuffer: Buffer, options?: FillPanelOptions): void; /** * Clears the given key. * * @param {number} keyIndex The key to clear */ clearKey(keyIndex: KeyIndex): void; /** * Clears all keys. */ clearAllKeys(): void; /** * Sets the brightness of the keys on the Stream Deck * * @param {number} percentage The percentage brightness */ setBrightness(percentage: number): void; /** * Resets the display to the startup logo */ resetToLogo(): void; /** * Get firmware version from Stream Deck */ getFirmwareVersion(): string; /** * Get serial number from Stream Deck */ getSerialNumber(): string; /** * Close the Stream Deck */ close(): void; on(event: 'down' | 'up', listener: (keyIndex: KeyIndex) => void): this; on(event: 'error', listener: (e: unknown) => void): this; } export declare abstract class StreamDeckBase extends EventEmitter implements StreamDeck { get NUM_KEYS(): number; get KEY_COLUMNS(): number; get KEY_ROWS(): number; get ICON_SIZE(): number; get ICON_BYTES(): number; get ICON_PIXELS(): number; get MODEL(): DeviceModelId; protected readonly options: Readonly; private readonly device; private readonly releaseExitHook; private readonly deviceProperties; private readonly keyState; constructor(deviceInfo: StreamDeckDeviceInfo, options: OpenStreamDeckOptions, properties: StreamDeckProperties); fillColor(keyIndex: KeyIndex, r: number, g: number, b: number): void; fillImage(keyIndex: KeyIndex, imageBuffer: Buffer, options?: FillImageOptions): void; fillPanel(imageBuffer: Buffer, options?: FillPanelOptions): void; clearKey(keyIndex: KeyIndex): void; clearAllKeys(): void; setBrightness(percentage: number): void; resetToLogo(): void; getFirmwareVersion(): string; getSerialNumber(): string; close(): void; protected abstract transformKeyIndex(keyIndex: KeyIndex): KeyIndex; protected abstract convertFillImage(imageBuffer: Buffer, sourceOptions: InternalFillImageOptions): Buffer; protected getFillImageCommandHeaderLength(): number; protected writeFillImageCommandHeader(buffer: Buffer, keyIndex: number, partIndex: number, isLast: boolean, _bodyLength: number): void; protected abstract getFillImagePacketLength(): number; protected generateFillImageWrites(keyIndex: KeyIndex, byteBuffer: Buffer): Buffer[]; protected sendFeatureReport(payload: Buffer): number; protected getFeatureReport(reportId: number, reportLength: number): number[]; private fillImageRange; private checkValidKeyIndex; private checkRGBValue; private checkSourceFormat; }