import type { EventEmitter } from 'eventemitter3';
import type { DeviceModelId } from './id.js';
import type { StreamDeck, StreamDeckEvents } from './types.js';
import type { StreamDeckControlDefinition } from './controlDefinition.js';
/**
 * A minimal proxy around a StreamDeck instance.
 * This is intended to be used by libraries wrapping this that want to add more methods to the StreamDeck
 */
export declare class StreamDeckProxy implements StreamDeck {
    protected readonly device: StreamDeck;
    constructor(device: StreamDeck);
    get CONTROLS(): Readonly<StreamDeckControlDefinition[]>;
    get MODEL(): DeviceModelId;
    get PRODUCT_NAME(): string;
    get HAS_NFC_READER(): boolean;
    calculateFillPanelDimensions(...args: Parameters<StreamDeck['calculateFillPanelDimensions']>): ReturnType<StreamDeck['calculateFillPanelDimensions']>;
    close(): Promise<void>;
    getHidDeviceInfo(...args: Parameters<StreamDeck['getHidDeviceInfo']>): ReturnType<StreamDeck['getHidDeviceInfo']>;
    sendPreparedBuffer(...args: Parameters<StreamDeck['sendPreparedBuffer']>): ReturnType<StreamDeck['sendPreparedBuffer']>;
    fillKeyColor(...args: Parameters<StreamDeck['fillKeyColor']>): ReturnType<StreamDeck['fillKeyColor']>;
    fillKeyBuffer(...args: Parameters<StreamDeck['fillKeyBuffer']>): ReturnType<StreamDeck['fillKeyBuffer']>;
    prepareFillKeyBuffer(...args: Parameters<StreamDeck['prepareFillKeyBuffer']>): ReturnType<StreamDeck['prepareFillKeyBuffer']>;
    fillPanelBuffer(...args: Parameters<StreamDeck['fillPanelBuffer']>): ReturnType<StreamDeck['fillPanelBuffer']>;
    prepareFillPanelBuffer(...args: Parameters<StreamDeck['prepareFillPanelBuffer']>): ReturnType<StreamDeck['prepareFillPanelBuffer']>;
    clearKey(...args: Parameters<StreamDeck['clearKey']>): ReturnType<StreamDeck['clearKey']>;
    clearPanel(...args: Parameters<StreamDeck['clearPanel']>): ReturnType<StreamDeck['clearPanel']>;
    setBrightness(...args: Parameters<StreamDeck['setBrightness']>): ReturnType<StreamDeck['setBrightness']>;
    resetToLogo(...args: Parameters<StreamDeck['resetToLogo']>): ReturnType<StreamDeck['resetToLogo']>;
    getFirmwareVersion(): Promise<string>;
    getAllFirmwareVersions(): ReturnType<StreamDeck['getAllFirmwareVersions']>;
    getSerialNumber(): Promise<string>;
    fillLcd(...args: Parameters<StreamDeck['fillLcd']>): ReturnType<StreamDeck['fillLcd']>;
    setEncoderColor(...args: Parameters<StreamDeck['setEncoderColor']>): ReturnType<StreamDeck['setEncoderColor']>;
    setEncoderRingSingleColor(...args: Parameters<StreamDeck['setEncoderRingSingleColor']>): ReturnType<StreamDeck['setEncoderRingSingleColor']>;
    setEncoderRingColors(...args: Parameters<StreamDeck['setEncoderRingColors']>): ReturnType<StreamDeck['setEncoderRingColors']>;
    fillLcdRegion(...args: Parameters<StreamDeck['fillLcdRegion']>): ReturnType<StreamDeck['fillLcdRegion']>;
    prepareFillLcdRegion(...args: Parameters<StreamDeck['prepareFillLcdRegion']>): ReturnType<StreamDeck['prepareFillLcdRegion']>;
    clearLcdSegment(...args: Parameters<StreamDeck['clearLcdSegment']>): ReturnType<StreamDeck['clearLcdSegment']>;
    getChildDeviceInfo(...args: Parameters<StreamDeck['getChildDeviceInfo']>): ReturnType<StreamDeck['getChildDeviceInfo']>;
    /**
     * EventEmitter
     */
    eventNames(): Array<EventEmitter.EventNames<StreamDeckEvents>>;
    listeners<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T): Array<EventEmitter.EventListener<StreamDeckEvents, T>>;
    listenerCount(event: EventEmitter.EventNames<StreamDeckEvents>): number;
    emit<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, ...args: EventEmitter.EventArgs<StreamDeckEvents, T>): boolean;
    /**
     * Add a listener for a given event.
     */
    on<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, fn: EventEmitter.EventListener<StreamDeckEvents, T>, context?: unknown): this;
    addListener<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, fn: EventEmitter.EventListener<StreamDeckEvents, T>, context?: unknown): this;
    /**
     * Add a one-time listener for a given event.
     */
    once<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, fn: EventEmitter.EventListener<StreamDeckEvents, T>, context?: unknown): this;
    /**
     * Remove the listeners of a given event.
     */
    removeListener<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, fn?: EventEmitter.EventListener<StreamDeckEvents, T>, context?: unknown, once?: boolean): this;
    off<T extends EventEmitter.EventNames<StreamDeckEvents>>(event: T, fn?: EventEmitter.EventListener<StreamDeckEvents, T>, context?: unknown, once?: boolean): this;
    removeAllListeners(event?: EventEmitter.EventNames<StreamDeckEvents>): this;
}
//# sourceMappingURL=proxy.d.ts.map