import { Dyson360CleaningMode, Dyson360CleaningType, Dyson360Faults, Dyson360Position, Dyson360PowerMode, Dyson360State } from './dyson-360-types.js';
import { DysonModeReason, DysonMsg } from './dyson-types.js';
export interface Dyson360MsgDeviceCredentials extends DysonMsg {
    msg: 'DEVICE-CREDENTIALS';
    serialNumber: string;
    apPasswordHash: string;
}
export interface Dyson360MsgConnectionStatus extends DysonMsg {
    msg: 'CONNECTION-STATUS';
    status: string;
    phase: string;
    network: string;
    requestId: string;
    ip: string;
}
export interface Dyson360MsgHello extends DysonMsg {
    msg: 'HELLO';
    protocol: string;
    serial: string;
    version: string;
}
export interface Dyson360MsgGoodbye extends DysonMsg {
    msg: 'GOODBYE';
    reason: 'UNKNOWN';
}
export interface Dyson360MsgGoneAway extends DysonMsg {
    msg: 'GONE-AWAY';
}
export interface Dyson360MsgImBack extends DysonMsg {
    msg: 'IM-BACK';
    state?: Dyson360State;
}
export interface Dyson360MsgCurrentState extends DysonMsg {
    msg: 'CURRENT-STATE';
    batteryChargeLevel: number;
    cleanDuration?: number;
    cleanId: string;
    currentVacuumPowerMode: Dyson360PowerMode;
    defaultVacuumPowerMode: Dyson360PowerMode;
    currentCleaningMode?: Dyson360CleaningMode;
    defaultCleaningMode?: Dyson360CleaningMode;
    faults?: Dyson360Faults;
    fullCleanType: Dyson360CleaningType;
    globalPosition: Dyson360Position;
    state: Dyson360State;
}
export interface Dyson360MsgStateChange extends DysonMsg {
    msg: 'STATE-CHANGE';
    batteryChargeLevel: number;
    cleanDuration?: number;
    cleanId: string;
    currentVacuumPowerMode: Dyson360PowerMode;
    defaultVacuumPowerMode: Dyson360PowerMode;
    currentCleaningMode?: Dyson360CleaningMode;
    defaultCleaningMode?: Dyson360CleaningMode;
    faults?: Dyson360Faults;
    fullCleanType: Dyson360CleaningType;
    globalPosition: Dyson360Position;
    newstate: Dyson360State;
    oldstate: Dyson360State;
    endOfClean?: boolean;
}
export interface Dyson360MsgMapData extends DysonMsg {
    msg: 'MAP-DATA';
    gridID: string;
    cleanId: string;
    data: {
        content: string;
        contentType: string;
        contentEncoding: string;
    };
}
export interface Dyson360MsgMapGlobal extends DysonMsg {
    msg: 'MAP-GLOBAL';
    angle: number;
    cleanId: string;
    gridID: string;
    x: number;
    y: number;
}
export interface Dyson360MsgMapGrid extends DysonMsg {
    msg: 'MAP-GRID';
    anchor: Dyson360Position;
    cleanId: string;
    gridID: string;
    height: number;
    resolution: number;
    width: number;
}
export interface Dyson360MsgTelemetryData extends DysonMsg {
    msg: 'TELEMETRY-DATA';
    field1: string;
    field2: string;
    field3: string;
    field4: string;
    id: string;
}
export interface Dyson360MsgRequestCurrentState extends DysonMsg {
    msg: 'REQUEST-CURRENT-STATE';
    'mode-reason'?: DysonModeReason;
}
export interface Dyson360MsgStateSet extends DysonMsg {
    msg: 'STATE-SET';
    'mode-reason': DysonModeReason;
    data: {
        defaultVacuumPowerMode: Dyson360PowerMode;
    };
}
export interface Dyson360MsgStart extends DysonMsg {
    msg: 'START';
    'mode-reason': DysonModeReason;
    fullCleanType: Dyson360CleaningType;
    cleaningMode?: Dyson360CleaningMode;
}
export interface Dyson360MsgPause extends DysonMsg {
    msg: 'PAUSE';
    'mode-reason': DysonModeReason;
}
export interface Dyson360MsgResume extends DysonMsg {
    msg: 'RESUME';
    'mode-reason': DysonModeReason;
}
export interface Dyson360MsgAbort extends DysonMsg {
    msg: 'ABORT';
    'mode-reason': DysonModeReason;
}
//# sourceMappingURL=dyson-360-msg-types.d.ts.map