import { Optional } from '../../../common';
import { BehaviorSubject } from 'rxjs';
import { DeviceModel } from '../devices.model';
import { DeviceOpState, DeviceState } from './device.state';
export declare const ModeStateName: 'mode';
export type ModeStateName = typeof ModeStateName;
export type Modes<SubModes extends Record<string, DeviceState<string, object>>> = {
    active: DeviceState<string, object> | undefined;
    subModes: SubModes;
};
export type ModeType = {
    state?: {
        mode?: number;
    };
};
export type ModeIdMap = (state: ModeState) => Optional<DeviceState<string, any>>;
export declare const defaultModeIdMap: ModeIdMap;
export declare class ModeState extends DeviceOpState<ModeStateName, Optional<DeviceState<string, unknown>>> {
    private readonly identifierMap;
    readonly activeIdentifier: BehaviorSubject<Optional<number[]>>;
    readonly modes: DeviceState<string, any>[];
    protected readonly inline: boolean;
    get activeMode(): Optional<DeviceState<string, any>>;
    constructor(device: DeviceModel, modes: Optional<DeviceState<string, any>>[], opType?: number, identifier?: number[], inline?: boolean, identifierMap?: ModeIdMap);
    parseState(data: ModeType): void;
    parseOpCommand(opCommand: number[]): void;
}
//# sourceMappingURL=mode.state.d.ts.map