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