import type { EventEmitter } from 'eventemitter3';
import type { DeviceModelId } from './id.js';
import type { BlackmagicController, BlackmagicControllerEvents } from './types.js';
import type { BlackmagicControllerControlDefinition } from './controlDefinition.js';
/**
 * A minimal proxy around a BlackmagicController instance.
 * This is intended to be used by libraries wrapping this that want to add more methods to the BlackmagicController
 */
export declare class BlackmagicControllerProxy implements BlackmagicController {
    protected device: BlackmagicController;
    constructor(device: BlackmagicController);
    get CONTROLS(): Readonly<BlackmagicControllerControlDefinition[]>;
    get MODEL(): DeviceModelId;
    get PRODUCT_NAME(): string;
    close(): Promise<void>;
    getHidDeviceInfo(...args: Parameters<BlackmagicController['getHidDeviceInfo']>): ReturnType<BlackmagicController['getHidDeviceInfo']>;
    setButtonColor(...args: Parameters<BlackmagicController['setButtonColor']>): ReturnType<BlackmagicController['setButtonColor']>;
    setButtonColors(...args: Parameters<BlackmagicController['setButtonColors']>): ReturnType<BlackmagicController['setButtonColors']>;
    setTbarLeds(...args: Parameters<BlackmagicController['setTbarLeds']>): ReturnType<BlackmagicController['setTbarLeds']>;
    clearKey(...args: Parameters<BlackmagicController['clearKey']>): ReturnType<BlackmagicController['clearKey']>;
    clearPanel(...args: Parameters<BlackmagicController['clearPanel']>): ReturnType<BlackmagicController['clearPanel']>;
    getBatteryLevel(): Promise<number | null>;
    getFirmwareVersion(): Promise<string>;
    getSerialNumber(): Promise<string>;
    /**
     * EventEmitter
     */
    eventNames(): Array<EventEmitter.EventNames<BlackmagicControllerEvents>>;
    listeners<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T): Array<EventEmitter.EventListener<BlackmagicControllerEvents, T>>;
    listenerCount(event: EventEmitter.EventNames<BlackmagicControllerEvents>): number;
    emit<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, ...args: EventEmitter.EventArgs<BlackmagicControllerEvents, T>): boolean;
    /**
     * Add a listener for a given event.
     */
    on<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, fn: EventEmitter.EventListener<BlackmagicControllerEvents, T>, context?: unknown): this;
    addListener<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, fn: EventEmitter.EventListener<BlackmagicControllerEvents, T>, context?: unknown): this;
    /**
     * Add a one-time listener for a given event.
     */
    once<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, fn: EventEmitter.EventListener<BlackmagicControllerEvents, T>, context?: unknown): this;
    /**
     * Remove the listeners of a given event.
     */
    removeListener<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, fn?: EventEmitter.EventListener<BlackmagicControllerEvents, T>, context?: unknown, once?: boolean): this;
    off<T extends EventEmitter.EventNames<BlackmagicControllerEvents>>(event: T, fn?: EventEmitter.EventListener<BlackmagicControllerEvents, T>, context?: unknown, once?: boolean): this;
    removeAllListeners(event?: EventEmitter.EventNames<BlackmagicControllerEvents>): this;
}
//# sourceMappingURL=proxy.d.ts.map