import { AnsiLogger } from 'matterbridge/logger';
import { Config } from './config-types.js';
import { RX9ApplianceInfo, RX9ApplianceState, RX9BatteryStatus, RX9Capabilities, RX9Dustbin, RX9Message, RX92PowerMode, RX9RobotStatus } from './aegapi-rx9-types.js';
import { AEGAPIRX9 } from './aegapi-rx9.js';
import { Appliance, ApplianceInfoDTO } from './aegapi-types.js';
import EventEmitter from 'events';
import { PeriodicOp } from './periodic-op.js';
import { ActivityRX9 } from './aeg-appliance-rx9-ctrl-activity.js';
export interface DynamicStateRX9 {
    connected: boolean;
    enabled: boolean;
    batteryStatus: RX9BatteryStatus;
    dustbinStatus: RX9Dustbin;
    firmwareVersion: string;
    robotStatus: RX9RobotStatus;
    messages: RX9Message[];
    ecoMode?: boolean;
    powerMode?: RX92PowerMode;
    apiError?: unknown;
    isDocked: boolean;
    isCharging: boolean;
    fauxStatus: RX9RobotStatus;
}
export type StatusEventRX9 = keyof DynamicStateRX9;
type StatusEventMap = {
    [event in StatusEventRX9]-?: [DynamicStateRX9[event], Partial<DynamicStateRX9>[event]];
};
interface OtherEventMap {
    error: [unknown];
    preEmitPatch: [DynamicStateRX9];
    message: [RX9Message];
    changed: [StatusEventRX9[], DynamicStateRX9];
}
export declare class AEGApplianceRX9 extends EventEmitter<StatusEventMap & OtherEventMap> implements Appliance, ApplianceInfoDTO {
    readonly log: AnsiLogger;
    readonly config: Config;
    readonly api: AEGAPIRX9;
    readonly setActivity: (command: ActivityRX9) => Promise<boolean>;
    readonly applianceId: string;
    readonly applianceName: string;
    readonly applianceType: string;
    readonly created: string;
    readonly brand: string;
    readonly colour: string;
    readonly deviceType: string;
    readonly model: string;
    readonly pnc: string;
    readonly serialNumber: string;
    readonly variant: string;
    readonly capabilities: RX9Capabilities[];
    readonly platform: string;
    readonly state: DynamicStateRX9;
    private emittedState;
    private readonly emittedMessages;
    poll?: PeriodicOp;
    constructor(log: AnsiLogger, config: Config, api: AEGAPIRX9, appliance: Appliance, info: RX9ApplianceInfo, state: RX9ApplianceState);
    start(): Promise<void>;
    stop(): Promise<void>;
    pollApplianceState(): Promise<void>;
    pollError(err?: unknown): void;
    toString(): string;
    updateFromApplianceState(state: RX9ApplianceState): void;
    updateDerivedAndEmit(): void;
    updateDerived(): void;
    updateStatus(update: Partial<DynamicStateRX9>): void;
    emitChangeEvents(): void;
    emitMessages(): void;
    static create(log: AnsiLogger, config: Config, api: AEGAPIRX9, appliance: Appliance): Promise<AEGApplianceRX9>;
}
export {};
//# sourceMappingURL=aeg-appliance-rx9.d.ts.map