import { Behavior, MaybePromise } from 'matterbridge/matter';
import { ModeBase, RvcOperationalState } from 'matterbridge/matter/clusters';
import { RvcCleanModeBehavior, RvcOperationalStateBehavior, RvcRunModeBehavior } from 'matterbridge/matter/behaviors';
import { AnsiLogger } from 'matterbridge/logger';
export declare enum RvcRunModeRX9 {
    Idle = 0,
    Cleaning = 1
}
export declare enum RvcCleanModeRX9 {
    Quiet = 0,
    Smart = 1,// (not RX9.1)
    Power = 2,
    QuietSpot = 3,
    SmartSpot = 4,// (not RX9.1)
    PowerSpot = 5
}
export declare enum RvcOperationalStateRX9 {
    Stopped = 0,
    Running = 1,
    Paused = 2,
    Error = 3,
    SeekingCharger = 64,
    Charging = 65,
    Docked = 66,
    ManualSteering = 128,
    FirmwareUpgrade = 129
}
export declare const VENDOR_ERROR_RX9 = 128;
export interface EndpointCommandsRX9 {
    ChangeRunMode: (newMode: RvcRunModeRX9) => MaybePromise;
    ChangeCleanMode: (newMode: RvcCleanModeRX9) => MaybePromise;
    Pause: () => MaybePromise;
    Resume: () => MaybePromise;
    GoHome: () => MaybePromise;
}
type EndpointCommandRX9Args<T extends keyof EndpointCommandsRX9> = Parameters<EndpointCommandsRX9[T]>;
export declare class BehaviorDeviceRX9 {
    readonly log: AnsiLogger;
    readonly commands: Partial<EndpointCommandsRX9>;
    constructor(log: AnsiLogger);
    setCommandHandler<Command extends keyof EndpointCommandsRX9>(command: Command, handler: EndpointCommandsRX9[Command]): void;
    executeCommand<Command extends keyof EndpointCommandsRX9>(command: Command, ...args: EndpointCommandRX9Args<Command>): Promise<void>;
}
export declare class BehaviorRX9 extends Behavior {
    static readonly id = "rx9";
    state: BehaviorRX9.State;
}
export declare namespace BehaviorRX9 {
    class State {
        device: BehaviorDeviceRX9;
    }
}
export declare class RvcRunModeServerRX9 extends RvcRunModeBehavior {
    changeToMode({ newMode }: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
}
export declare class RvcCleanModeServerRX9 extends RvcCleanModeBehavior {
    changeToMode({ newMode }: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
}
export declare class RvcOperationalStateServerRX9 extends RvcOperationalStateBehavior {
    command(command: 'Pause' | 'Resume' | 'GoHome', defaultErrorId: RvcOperationalState.ErrorState): Promise<RvcOperationalState.OperationalCommandResponse>;
    pause(): Promise<RvcOperationalState.OperationalCommandResponse>;
    resume(): Promise<RvcOperationalState.OperationalCommandResponse>;
    goHome(): Promise<RvcOperationalState.OperationalCommandResponse>;
}
export {};
//# sourceMappingURL=behavior-rx9.d.ts.map