import type { Device } from './devices.js';
import type { StateGroup } from './encoding.js';
export interface Group {
    label: string;
    uuid: string;
    devices: Device[];
}
export interface GroupsOptions {
    onAdded?: (group: Group) => void;
    onChanged?: (group: Group) => void;
    onRemoved?: (group: Group) => void;
}
export interface GroupsInstance {
    readonly registered: Map<string, Group>;
    register(device: Device, group: StateGroup): void;
    remove(uuid: string): void;
    removeDevice(device: Device): void;
    [Symbol.iterator](): Iterator<Group>;
}
export declare function Groups(options?: GroupsOptions): GroupsInstance;
//# sourceMappingURL=groups.d.ts.map