import { DysonAirCurrentSensorData, DysonAirEnvironmentalUsageData } from './dyson-air-sensor-types.js';
import { DysonAirProductState, DysonAirProductStateChange } from './dyson-air-state-types.js';
import { DysonAirFaultChange, DysonAirFaultStatus, DysonAirResetFilterLife, DysonAirResetHEPAFilterLife, DysonAirResetSource, DysonAirScheduler, DysonAirSleepTimer } from './dyson-air-types.js';
import { DysonModeReason, DysonMsg, DysonStateReason } from './dyson-types.js';
export interface DysonAirMsgHello extends DysonMsg {
    msg: 'HELLO';
    model: string;
    version: string;
    protocol: string;
    serialNumber: string;
    macAddress: string;
    moduleHardware: string;
    moduleBootloader: string;
    moduleSoftware: string;
    moduleNwp: string;
    productHardware: string;
    productBootloader: string;
    productSoftware: string;
    resetSource: DysonAirResetSource;
}
export interface DysonAirMsgGoneAway extends DysonMsg {
    msg: 'GONE-AWAY';
}
export interface DysonAirMsgGoodbye extends DysonMsg {
    msg: 'GOODBYE';
    reason: 'UNKNOWN';
}
export interface DysonAirMsgCurrentState extends DysonMsg {
    msg: 'CURRENT-STATE';
    modeReason: DysonModeReason;
    stateReason: DysonStateReason;
    dial?: string;
    rssi?: string;
    channel?: string;
    fghp?: string;
    fqhp?: string;
    productState: DysonAirProductState;
    scheduler: DysonAirScheduler;
}
export interface DysonAirMsgStateChange extends DysonMsg {
    msg: 'STATE-CHANGE';
    modeReason: DysonModeReason;
    stateReason: DysonStateReason;
    productState: DysonAirProductStateChange;
    scheduler: DysonAirScheduler;
}
export interface DysonAirMsgEnvironmentalCurrentSensorData extends DysonMsg {
    msg: 'ENVIRONMENTAL-CURRENT-SENSOR-DATA';
    data: DysonAirCurrentSensorData;
}
export interface DysonAirMsgEnvironmentalAndUsageData extends DysonMsg {
    msg: 'ENVIRONMENTAL-AND-USAGE-DATA';
    data: DysonAirEnvironmentalUsageData;
}
export interface DysonAirMsgCurrentFaults extends DysonMsg {
    msg: 'CURRENT-FAULTS';
    productErrors: {
        [fault: string]: DysonAirFaultStatus;
    };
    productWarnings: {
        [fault: string]: DysonAirFaultStatus;
    };
    moduleErrors: {
        [fault: string]: DysonAirFaultStatus;
    };
    moduleWarnings: {
        [fault: string]: DysonAirFaultStatus;
    };
}
export interface DysonAirMsgFaultsChange extends DysonMsg {
    msg: 'FAULTS-CHANGE';
    productErrors: {
        [fault: string]: DysonAirFaultChange;
    };
    productWarnings: {
        [fault: string]: DysonAirFaultChange;
    };
    moduleErrors: {
        [fault: string]: DysonAirFaultChange;
    };
    moduleWarnings: {
        [fault: string]: DysonAirFaultChange;
    };
}
export interface DysonAirMsgRequestCurrentFaults extends DysonMsg {
    msg: 'REQUEST-CURRENT-FAULTS';
    'mode-reason'?: DysonModeReason;
}
export interface DysonAirMsgRequestCurrentState extends DysonMsg {
    msg: 'REQUEST-CURRENT-STATE';
    'mode-reason'?: DysonModeReason;
}
export interface DysonAirMsgRequestProductEnvironmentCurrentSensorData extends DysonMsg {
    msg: 'REQUEST-PRODUCT-ENVIRONMENT-CURRENT-SENSOR-DATA';
    'mode-reason'?: DysonModeReason;
}
export interface DysonAirMsgStateSet extends DysonMsg {
    msg: 'STATE-SET';
    'mode-reason'?: DysonModeReason;
    data: DysonAirProductState & {
        rstf?: DysonAirResetFilterLife;
        rhtf?: DysonAirResetHEPAFilterLife;
        sltm?: DysonAirSleepTimer;
    };
}
export interface DysonAirMsgScheduleSet extends DysonMsg {
    msg: 'SCHEDULE-SET';
    version: string;
}
//# sourceMappingURL=dyson-air-msg-types.d.ts.map