import { CommandBus, EventBus } from '@nestjs/cqrs';
import { Device } from '../../../device';
import { DeviceFactory } from '../../../device.factory';
import { DeviceModel } from '../../../devices.model';
import { IceMakerNuggetSizeState, NuggetSizeStateName } from './ice-maker.nugget-size';
import { BasketFullStateName, IceMakerBasketFull } from './ice-maker.basket-full';
import { IceMakerStatusState, IceMakerStatusStateName } from './ice-maker.status';
import { IceMakerScheduledStart, ScheduledStartStateName } from './ice-maker.scheduled-start';
import { ActiveState, ActiveStateName, ConnectedState, ConnectedStateName, PowerState, PowerStateName, TemperatureState, TemperatureStateName } from '../../../states';
import { IceMakerMakingIceState, MakingIceStateName } from './ice-maker.make-ice';
import { Optional } from '../../../../../common/types';
import { NuggetSize } from './types';
export declare const IceMakerType: 'ice-maker';
export type IceMakerType = typeof IceMakerType;
export declare class IceMakerDevice extends Device<IceMakerStates> implements IceMaker {
    static readonly deviceType: IceMakerType;
    get deviceType(): string;
    get NuggetSize(): typeof NuggetSize;
    constructor(device: DeviceModel, eventBus: EventBus, commandBus: CommandBus);
    get [BasketFullStateName](): Optional<IceMakerBasketFull>;
    get [MakingIceStateName](): Optional<IceMakerMakingIceState>;
    get [NuggetSizeStateName](): Optional<IceMakerNuggetSizeState>;
    get [ScheduledStartStateName](): Optional<IceMakerScheduledStart>;
    get [IceMakerStatusStateName](): Optional<IceMakerStatusState>;
    get [PowerStateName](): Optional<PowerState>;
    get [ConnectedStateName](): Optional<ConnectedState>;
    get [ActiveStateName](): Optional<ActiveState>;
    get [TemperatureStateName](): Optional<TemperatureState>;
}
export declare class IceMakerFactory extends DeviceFactory<IceMakerDevice, Omit<IceMaker, 'NuggetSize'>> {
    constructor();
}
export type IceMakerStates = {
    [BasketFullStateName]: Optional<IceMakerBasketFull>;
    [MakingIceStateName]: Optional<IceMakerMakingIceState>;
    [NuggetSizeStateName]: Optional<IceMakerNuggetSizeState>;
    [ScheduledStartStateName]: Optional<IceMakerScheduledStart>;
    [IceMakerStatusStateName]: Optional<IceMakerStatusState>;
    [PowerStateName]: Optional<PowerState>;
    [ConnectedStateName]: Optional<ConnectedState>;
    [ActiveStateName]: Optional<ActiveState>;
    [TemperatureStateName]: Optional<TemperatureState>;
};
export type IceMaker = {
    NuggetSize: typeof NuggetSize;
} & IceMakerStates;
//# sourceMappingURL=ice-maker.d.ts.map