import { AnsiLogger } from 'matterbridge/logger';
import { Behavior, MaybePromise } from 'matterbridge/matter';
export declare const CommandNames: {
    readonly IDENTIFY: "identify";
    readonly SELECT_AREAS: "selectAreas";
    readonly CHANGE_TO_MODE: "changeToMode";
    readonly PAUSE: "pause";
    readonly RESUME: "resume";
    readonly GO_HOME: "goHome";
    readonly STOP: "stop";
};
export interface DeviceEndpointCommands extends DeviceCommands {
    selectAreas: (newAreas: number[]) => MaybePromise;
    changeToMode: (newMode: number) => MaybePromise;
    pause: () => MaybePromise;
    resume: () => MaybePromise;
    goHome: () => MaybePromise;
    identify: (identifyTime: number) => MaybePromise;
    stop: () => MaybePromise;
}
export type DeviceCommandHandler = (...args: never[]) => MaybePromise;
export type DeviceCommands = Record<string, DeviceCommandHandler>;
export declare class BehaviorDeviceGeneric<Commands extends DeviceCommands> {
    readonly log: AnsiLogger;
    readonly commands: Partial<Commands>;
    constructor(log: AnsiLogger);
    setCommandHandler<Command extends keyof Commands>(command: Command, handler: Commands[Command]): void;
    executeCommand<Command extends keyof Commands>(command: Command, ...args: Parameters<Commands[Command]>): Promise<void>;
}
export declare class BehaviorRoborock extends Behavior {
    static readonly id = "roborock.vacuum.axx";
    state: BehaviorRoborockState;
}
export interface BehaviorRoborockState {
    device: BehaviorDeviceGeneric<DeviceCommands>;
}
//# sourceMappingURL=BehaviorDeviceGeneric.d.ts.map