@logitech-mx-creative-console/core
Version:
An npm module for interfacing with the Logitech MX Creative Console
47 lines • 2.66 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, MXCreativeConsole, MXCreativeConsoleEvents } from '../types.js';
import type { ButtonsLcdDisplayService } from '../services/buttonsLcdDisplay/interface.js';
import type { MXConsoleButtonControlDefinition, MXConsoleControlDefinition } from '../controlDefinition.js';
import type { PropertiesService } from '../services/properties/interface.js';
import type { CallbackHook } from '../services/callback-hook.js';
import type { MXCreativeConsoleInputService } from '../services/input/interface.js';
export type EncodeJPEGHelper = (buffer: Uint8Array, width: number, height: number) => Promise<Uint8Array>;
export interface OpenMXConsoleOptions {
encodeJPEG?: EncodeJPEGHelper;
}
export type MXConsoleProperties = Readonly<{
MODEL: DeviceModelId;
PRODUCT_NAME: string;
CONTROLS: Readonly<MXConsoleControlDefinition[]>;
PANEL_SIZE: Dimension;
}>;
export interface MXConsoleServicesDefinition {
deviceProperties: MXConsoleProperties;
events: CallbackHook<MXCreativeConsoleEvents>;
properties: PropertiesService;
buttonsLcd: ButtonsLcdDisplayService;
inputService: MXCreativeConsoleInputService;
}
export declare class MXConsoleBase extends EventEmitter<MXCreativeConsoleEvents> implements MXCreativeConsole {
#private;
get CONTROLS(): Readonly<MXConsoleControlDefinition[]>;
get MODEL(): DeviceModelId;
get PRODUCT_NAME(): string;
protected readonly device: HIDDevice;
protected readonly deviceProperties: Readonly<MXConsoleProperties>;
constructor(device: HIDDevice, _options: Readonly<Required<OpenMXConsoleOptions>>, services: MXConsoleServicesDefinition);
protected checkValidKeyIndex(keyIndex: KeyIndex, feedbackType: MXConsoleButtonControlDefinition['feedbackType'] | null): void;
calculateFillPanelDimensions(options?: FillPanelDimensionsOptions): Dimension | null;
close(): Promise<void>;
getHidDeviceInfo(): Promise<HIDDeviceInfo>;
setBrightness(percentage: number): Promise<void>;
resetToLogo(): Promise<void>;
fillKeyColor(keyIndex: KeyIndex, r: number, g: number, b: number): Promise<void>;
fillKeyBuffer(keyIndex: KeyIndex, imageBuffer: Uint8Array, options?: FillImageOptions): Promise<void>;
fillPanelBuffer(imageBuffer: Uint8Array, options?: FillPanelOptions): Promise<void>;
clearKey(keyIndex: KeyIndex): Promise<void>;
clearPanel(): Promise<void>;
}
//# sourceMappingURL=base.d.ts.map