/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Subject } from "#action/server/Subject.js";
import type { Fabric } from "#fabric/Fabric.js";
import { BasicMap } from "#general";
import { EndpointNumber, GroupId } from "#types";
import { KeySets, OperationalKeySet } from "./KeySets.js";
export declare class Groups {
    #private;
    /** Operational variant of the group table, maps group Ids to a list of enabled endpoints. */
    readonly endpointMap: Map<GroupId, EndpointNumber[]>;
    constructor(fabric: Fabric, keySets: KeySets<OperationalKeySet>);
    /** Operative lookup of the group key sets by a group id and to react on added removed groups. */
    get idMap(): BasicMap<GroupId, number>;
    /** Updates the group key id map when changed in Group Key Management Cluster. Only changes are taken over. */
    set idMap(map: Map<GroupId, number>);
    subjectForGroup(id: GroupId, keySetId: number): Subject;
    /** Returns the multicast address for a given group id for this fabric. */
    multicastAddress(groupId: GroupId): string;
    /**
     * Returns the current operational group key for a given group id and returns the keys, start time and
     * their session IDs.
     */
    currentKeyForId(groupId: GroupId): {
        keySetId: number;
        key: import("#general").Bytes;
        sessionId?: number;
        startTime: import("#general").Timestamp;
    };
}
//# sourceMappingURL=Groups.d.ts.map