import { ITypedEvent } from '../../TypedEvent';
import { FieldChangeResult } from '../FieldChangeResult';
import { CommunicationWay, DeviceState, DeviceType, IconType, IDevice, IDeviceResponseTypeInfo, IDeviceTaskTypeInfo } from './IDevice';
import { IDeviceChannel } from './IDeviceChannel';
import { IDeviceState, IDeviceStateData } from './IDeviceState';
import { IDeviceTask } from './IDeviceTask';
import { DeviceTaskExecutionResult } from './TaskExecutionResult';
export declare class Device implements IDevice {
    private static _devicesService;
    private _onDeviceStateChangedEvent;
    private _onDeviceStateRefreshedOrChangedEvent;
    private _onDeviceTasksExecutionChangedOnChannelsEvent;
    private _onDeviceFirmwareVersionChangedEvent;
    private _guid?;
    private _name?;
    private _iconType;
    private _channelsAmount?;
    private _serialNumber;
    private _model;
    private _modelGuid;
    private _manufacturerGuid;
    private _isVirtual;
    private _isEnabled;
    private _deviceState;
    private _deviceType;
    private _communicationWay;
    private _availableTasksTypes;
    private _availableResponseTypes;
    private _channels;
    private _protocolGuid;
    private _softwareVersion;
    constructor();
    OnDeviceFirmwareVersionChangedEvent(): ITypedEvent<{
        FirmwareVersion: string;
    }>;
    OnDeviceStateRefreshedOrChangedEvent(): ITypedEvent<IDeviceState<IDeviceStateData>>;
    get ShouldChannelsBeGrouped(): boolean;
    get States(): IDeviceState<IDeviceStateData>[];
    RemoveDeviceAsync(): Promise<DeviceTaskExecutionResult>;
    ExecuteDeviceTaskAsync(task: IDeviceTask): Promise<DeviceTaskExecutionResult>;
    OnDeviceTasksExecutionChangedOnChannelsEvent(): ITypedEvent<number[]>;
    OnDeviceStateChangedEvent(): ITypedEvent<IDeviceState<any>>;
    get Guid(): string;
    set Guid(guid: string);
    get IconType(): IconType;
    set IconType(iconType: IconType);
    get Name(): string;
    set Name(name: string);
    set SoftwareVersion(version: string | null);
    get SoftwareVersion(): string | null;
    get ChannelsAmount(): number;
    set ChannelsAmount(amount: number);
    get SerialNumber(): string | null;
    set SerialNumber(serialNumber: string | null);
    get Model(): string | null;
    set Model(model: string | null);
    get ModelGuid(): string | null;
    set ModelGuid(model: string | null);
    get ManufacturerGuid(): string | null;
    set ManufacturerGuid(manufacturerGuid: string | null);
    get IsVirtual(): boolean;
    set IsVirtual(isVirtual: boolean);
    get IsEnabled(): boolean;
    set IsEnabled(isEnabled: boolean);
    get DeviceState(): DeviceState;
    set DeviceState(deviceState: DeviceState);
    get DeviceType(): DeviceType;
    set DeviceType(deviceType: DeviceType);
    get CommunicationWay(): CommunicationWay;
    set CommunicationWay(communicationWay: CommunicationWay);
    get AvailableTaskTypes(): IDeviceTaskTypeInfo[];
    set AvailableTaskTypes(availableTasksTypes: IDeviceTaskTypeInfo[]);
    get AvailableResponseTypes(): IDeviceResponseTypeInfo[];
    set AvailableResponseTypes(availableResponseTypes: IDeviceResponseTypeInfo[]);
    get Channels(): IDeviceChannel[];
    get ProtocolGuid(): string | null;
    set ProtocolGuid(value: string | null);
    ChangeDeviceNameAsync(name: string): Promise<FieldChangeResult>;
    ExecuteTaskAsync(task: IDeviceTask): Promise<DeviceTaskExecutionResult>;
}
