import { IDeviceState, IDeviceStateData } from './IDeviceState';
import { DeviceTaskExecutionResult } from './TaskExecutionResult';
import { IDeviceTask } from './IDeviceTask';
import { IDevice, IDeviceResponseTypeInfo, IDeviceTaskTypeInfo } from './IDevice';
import { ITypedEvent } from '../../TypedEvent';
import { FieldChangeResult } from '../FieldChangeResult';
export interface IDeviceChannel {
    get ChannelId(): string;
    get Number(): number;
    set Number(value: number);
    get Name(): string;
    set Name(value: string);
    get IconName(): string;
    set IconName(value: string);
    get States(): IDeviceState<IDeviceStateData>[];
    get Mode(): ChannelConfigurations;
    get ChannelGroups(): string[];
    get CustomData(): Record<string, string>;
    get Roles(): Roles[];
    get IsHidden(): boolean;
    get Configurations(): Record<string, string>;
    get AvailableTaskTypes(): IDeviceTaskTypeInfo[];
    get AvailableResponseTypes(): IDeviceResponseTypeInfo[];
    IsCustomDataAndRolesSupported(): boolean;
    SetCustomDataAsync(dataId: string, data: string): Promise<FieldChangeResult>;
    RemoveCustomDataAsync(dataId: string): Promise<FieldChangeResult>;
    GetDevice(): IDevice;
    HideAsync(): Promise<FieldChangeResult>;
    ShowAsync(): Promise<FieldChangeResult>;
    ChangeNameAsync(name: string): Promise<FieldChangeResult>;
    ChangeIconNameAsync(name: string): Promise<FieldChangeResult>;
    ChangeGroupsAsync(groups: string[]): Promise<FieldChangeResult>;
    ExecuteTaskAsync(task: IDeviceTask): Promise<DeviceTaskExecutionResult>;
    OnTasksExecutionChangeEvent(): ITypedEvent<TaskExecution>;
    OnChannelStateChangedEvent(): ITypedEvent<IDeviceState<IDeviceStateData>>;
    OnChannelStateRefreshedOrChangedEvent(): ITypedEvent<IDeviceState<IDeviceStateData>>;
}
export declare enum TaskExecution {
    NoTasksExecuting = 0,
    ExecutingTasks = 1
}
export declare enum ChannelConfigurations {
    Default = 0,
    Monostable = 1,
    Bistable = 2,
    Gate = 3,
    Gateway = 4
}
export declare enum Roles {
    None = 0,
    OnOff = 1,
    OnOffLights = 2,
    OnOffWithDelay = 3,
    GateSwitchState = 4,
    GatePulse = 5,
    GateOpenClose = 6,
    GatewayOpenClose = 7,
    GatewayPulse = 8,
    Monostable = 9,
    Dimmer = 10,
    Blind = 11,
    Roller = 12,
    TemperatureSensor = 13,
    BrightnessSensor = 14,
    HumiditySensor = 15,
    PowerMeter = 16,
    RGBLight = 17,
    RGBWLight = 18,
    LightsWarmth = 19,
    TemperatureControl = 20,
    BlindsWithPrecisePosition = 21,
    MovementSensor = 21,
    SimpleRemote = 22,
    BlindsRemote = 23,
    DistanceSensor = 24,
    Multisensor = 25,
    IOTransmitter = 26,
    DoorOpenClose = 27,
    WindSensor = 28,
    BatterySensor = 29,
    PressureSensor = 30
}
