import { model } from '@peter-murray/hue-bridge-model';
import { ApiDefinition } from './http/ApiDefinition';
import { Api } from './Api';
type GroupState = model.GroupState;
type Luminaire = model.Luminaire;
type Entertainment = model.Entertainment;
type Zone = model.Zone;
type Room = model.Room;
type LightGroup = model.LightGroup;
type Group = model.Group;
type Lightsource = model.Lightsource;
type AnyGroup = Group | Entertainment | LightGroup | Lightsource | Luminaire | Room | Zone;
export declare class Groups extends ApiDefinition {
    private _groupStateLimiter;
    constructor(hueApi: Api);
    getAll(): Promise<AnyGroup[]>;
    getGroup(id: number | Group): Promise<AnyGroup>;
    /**
     * @param name {string}
     * @returns {Promise<Array<Entertainment|LightGroup|Lightsource|Luminaire|Room|Zone>>}
     */
    getGroupByName(name: string): Promise<AnyGroup[]>;
    createGroup(group: Group | LightGroup | Room | Entertainment | Zone): Promise<AnyGroup>;
    /**
     * Update the Group attributes on the bridge for the specified Group object.
     * @param group The group with updates to be updated on the bridge.
     * @returns {Promise<boolean>}
     */
    updateGroupAttributes(group: Group): Promise<any>;
    deleteGroup(id: number | AnyGroup): Promise<boolean>;
    getGroupState(id: number | Group): Promise<object>;
    setGroupState(id: number | string | Group, state: GroupState): Promise<boolean>;
    getLightGroups(): Promise<LightGroup[]>;
    getLuminaries(): Promise<Luminaire[]>;
    getLightSources(): Promise<Lightsource[]>;
    getRooms(): Promise<Room[]>;
    getZones(): Promise<Zone[]>;
    getEntertainment(): Promise<Entertainment[]>;
    /** Enables the streaming functionality on an Entertainment Group */
    enableStreaming(id: number | string | Entertainment): Promise<boolean>;
    /**
     * Disabled the streaming functionality on an Entertainment Group
     * @param id {int | Entertainment}
     * @returns {Promise<boolean>}
     */
    disableStreaming(id: number | string | Entertainment): Promise<boolean>;
    _getByType(type: string): Promise<AnyGroup[]>;
}
export {};
