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 RvcRunMode360 {
    Idle = 0,
    Cleaning = 1,
    Mapping = 2
}
export declare enum RvcCleanMode360 {
    Quiet = 0,// Eye: Quiet  Heurist: Quiet  Vis Nav: Quiet
    Quick = 1,//                             Vis Nav: Quick
    High = 2,//             Heurist: High
    MaxBoost = 3,// Eye: Max    Heurist: Max    Vis Nav: Boost
    Auto = 4
}
export declare const VENDOR_ERROR_360 = 128;
export interface EndpointCommands360 {
    ChangeRunMode: (newMode: RvcRunMode360) => MaybePromise;
    ChangeCleanMode: (newMode: RvcCleanMode360) => MaybePromise;
    Pause: () => MaybePromise;
    Resume: () => MaybePromise;
    GoHome: () => MaybePromise;
}
type EndpointCommand360Args<T extends keyof EndpointCommands360> = Parameters<EndpointCommands360[T]>;
export declare class BehaviorDevice360 {
    readonly log: AnsiLogger;
    readonly commands: Partial<EndpointCommands360>;
    constructor(log: AnsiLogger);
    setCommandHandler<Command extends keyof EndpointCommands360>(command: Command, handler: EndpointCommands360[Command]): void;
    executeCommand<Command extends keyof EndpointCommands360>(command: Command, ...args: EndpointCommand360Args<Command>): Promise<void>;
}
export declare class Behavior360 extends Behavior {
    static readonly id = "dyson-rvc";
    state: Behavior360.State;
}
export declare namespace Behavior360 {
    class State {
        device: BehaviorDevice360;
    }
}
export declare class RvcRunModeServer360 extends RvcRunModeBehavior {
    changeToMode({ newMode }: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
}
export declare class RvcCleanModeServer360 extends RvcCleanModeBehavior {
    changeToMode({ newMode }: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
}
export declare class RvcOperationalStateServer360 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=endpoint-360-behavior.d.ts.map