import { Status } from "../../DataFrame";
import { ResponseResult } from "../FieldChangeResult";
import { AddNewGroupErrorCode, IChannelsGroup, IChannelsGroupsService, SetObjectsInGroupAndOrderResponseCode } from "./IChannelsGroupsService";
import { IDeviceChannel } from "./IDeviceChannel";
import { IDevice } from "./IDevice";
export declare class ChannelsGroupsService implements IChannelsGroupsService {
    static readonly ServiceName: string;
    private _connection;
    private _synchronized;
    private _synchronizationTaskCompletionSource;
    private _groups;
    private _objectsGroupingSupported;
    private _configurationService;
    constructor();
    SetObjectsInGroupAndOrderAsync(group: IChannelsGroup, objects: (IDeviceChannel | IDevice)[]): Promise<ResponseResult<SetObjectsInGroupAndOrderResponseCode>>;
    private IsDevice;
    private IsDeviceChannel;
    private LogGroupsOrder;
    private LogObjectsInGroupOrder;
    ChangeGroupsOrderAsync(orderedGroups: IChannelsGroup[]): Promise<Status>;
    ChangeObjectsPositionsInGroupAsync(group: IChannelsGroup, channels: IDeviceChannel[]): Promise<Status>;
    IsGroupsAndObjectsOrderingAvailable(): boolean;
    MoveGroupPositionAsync(group: IChannelsGroup, newPosition: number): Promise<Status>;
    MoveObjectInGroupPositionAsync(group: IChannelsGroup, channel: IDeviceChannel, newPosition: number): Promise<Status>;
    AddDeviceChannelToGroupByGuidAsync(channel: IDeviceChannel, groupGuid: string): Promise<Status>;
    AddDeviceChannelToGroupByGuidAsync(channel: IDeviceChannel, groupGuid: string, skipDataUpdate?: boolean): Promise<Status>;
    RemoveDeviceChannelFromGroupByGuidAsync(channel: IDeviceChannel, groupGuid: string): Promise<Status>;
    RemoveDeviceChannelFromGroupByGuidAsync(channel: IDeviceChannel, groupGuid: string, skipDataUpdate?: boolean): Promise<Status>;
    UpsertGroupWithDevicesChannelsAsync(group: IChannelsGroup, deviceChannels: IDeviceChannel[]): Promise<ResponseResult<AddNewGroupErrorCode> | IChannelsGroup>;
    UpdateGroupWithDevicesChannelsAsync(groupGuid: string, deviceChannels: IDeviceChannel[]): Promise<Status>;
    ChangeGroupNameByGuidAsync(groupGuid: string, name: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    ChangeGroupNameAndIconAsync(group: IChannelsGroup, name: string, iconName: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    ChangeGroupNameAndIconByGuidAsync(groupGuid: string, name: string, iconName: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    ChangeGroupIconNameByGuidAsync(groupGuid: string, iconName: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    GetServiceName(): string;
    WaitForSynchronizationAsync(): Promise<void>;
    GetGroupByGuid(guid: string): IChannelsGroup | null;
    ChangeGroupNameAsync(group: IChannelsGroup, name: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    ChangeGroupIconNameAsync(group: IChannelsGroup, iconName: string): Promise<ResponseResult<AddNewGroupErrorCode>>;
    RemoveGroupAsync(group: IChannelsGroup): Promise<Status>;
    RemoveGroupByGuidAsync(groupGuid: string): Promise<Status>;
    GetGroupsAsync(useCache?: boolean): Promise<IChannelsGroup[]>;
    AddDeviceChannelToGroupAsync(channel: IDeviceChannel, group: IChannelsGroup): Promise<Status>;
    AddDeviceChannelToGroupAsync(channel: IDeviceChannel, group: IChannelsGroup, skipDataUpdate?: boolean): Promise<Status>;
    RemoveDeviceChannelFromGroupAsync(channel: IDeviceChannel, group: IChannelsGroup): Promise<Status>;
    RemoveDeviceChannelFromGroupAsync(channel: IDeviceChannel, group: IChannelsGroup, skipDataUpdate?: boolean): Promise<Status>;
    AddNewGroupAsync(name: string): Promise<IChannelsGroup | ResponseResult<AddNewGroupErrorCode>>;
    AddNewGroupWithIconAsync(name: string, iconName: string): Promise<IChannelsGroup | ResponseResult<AddNewGroupErrorCode>>;
}
