/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { Fabric } from "#fabric/Fabric.js";
import { BasicMap, Bytes, StorageContext } from "#general";
import { GroupKeySet, KeySets, OperationalKeySet } from "#groups/KeySets.js";
import { MessagingState } from "#groups/MessagingState.js";
import { GroupId } from "#types";
export declare const GROUP_SECURITY_INFO: AllowSharedBufferSource;
export declare const IPK_DEFAULT_EPOCH_START_TIME: bigint;
/**
 * Class that contains an operational view on the Group Keys for a fabric
 */
export declare class FabricGroups {
    #private;
    constructor(fabric: Fabric, storage?: StorageContext);
    set storage(storage: StorageContext);
    /** Operative lookup of the group key sets by their id. */
    get keySets(): KeySets<OperationalKeySet>;
    get messaging(): MessagingState;
    /** Operative lookup of the group key set id and the key by a group session Id. */
    get sessions(): Map<number, {
        keySetId: number;
        key: Bytes;
    }[]>;
    get groupKeyIdMap(): BasicMap<GroupId, number>;
    set groupKeyIdMap(map: Map<GroupId, number>);
    get endpoints(): Map<GroupId, import("#types").EndpointNumber[]>;
    currentKeyForGroup(groupId: GroupId): {
        keySetId: number;
        key: Bytes;
        sessionId?: number;
        startTime: import("#general").Timestamp;
    };
    subjectForGroup(id: GroupId, keySetId: number): import("../index.js").Subject;
    multicastAddressFor(groupId: GroupId): string;
    /**
     * Sets new group key set data and pre-calculates all operative data like session ids and operational keys.
     * Overwriting the existing one if it exists.
     */
    setFromGroupKeySet(groupKeySet: GroupKeySet): Promise<void>;
    /** Removes a group key set by its id and cleans up the counters and data. */
    removeGroupKeySet(groupKeySetId: number): Promise<boolean>;
}
//# sourceMappingURL=FabricGroups.d.ts.map