import { DysonDevice, DysonDeviceConstructorParams } from './dyson-device-base.js';
import { DysonMqtt360, DysonMqttStatus360 } from './dyson-mqtt-360.js';
import { EntityName } from './config-types.js';
import { DysonMqttStatus } from './dyson-mqtt.js';
import { BasicInformation } from 'matterbridge/matter/clusters';
import { RvcCleanModeLabels } from './endpoint-360-rvc.js';
import { Endpoint360, UpdatePowerSource360, UpdateRvcOperationalState360 } from './endpoint-360.js';
import { RvcCleanMode360 } from './endpoint-360-behavior.js';
import { Dyson360PowerMode } from './dyson-360-types.js';
import { Dyson360MappedFaults } from './dyson-device-360-faults.js';
import { EndpointBase } from './endpoint-base.js';
export type PowerModeMap = [Dyson360PowerMode, ...RvcCleanModeLabels[number]];
export declare abstract class DysonDevice360Base extends DysonDevice<DysonMqtt360> {
    static readonly mqttConstructor: typeof DysonMqtt360;
    mqttListener: () => void;
    endpoint?: Endpoint360;
    constructor(...args: DysonDeviceConstructorParams<DysonMqtt360>);
    makeEndpoint(): Endpoint360;
    getEntities(): {
        name: EntityName;
        description: string;
    }[];
    getEndpoints(_validatedNames: EntityName[]): EndpointBase[];
    start(): Promise<void>;
    stop(): Promise<void>;
    abstract getBatteryPartNumber(): string;
    abstract getProductAppearance(): BasicInformation.ProductAppearance;
    abstract getPowerModeMaps(): PowerModeMap[];
    cleanModeToPowerMode(cleanMode: RvcCleanMode360): Dyson360PowerMode;
    powerModeToCleanMode(powerMode: Dyson360PowerMode): RvcCleanMode360;
    updateClusterAttributes(status: DysonMqttStatus<DysonMqttStatus360>): Promise<void>;
    mapBatteryStatus(status: DysonMqttStatus<DysonMqttStatus360>, faults: Dyson360MappedFaults): UpdatePowerSource360;
    mapOperationalState(status: DysonMqttStatus<DysonMqttStatus360>, faults: Dyson360MappedFaults): UpdateRvcOperationalState360;
}
//# sourceMappingURL=dyson-device-360-base.d.ts.map