///
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;
}