/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Fabric } from "@matter/protocol"; import { EndpointNumber, FabricIndex, GroupId } from "@matter/types"; import { GroupKeyManagement } from "@matter/types/clusters/group-key-management"; declare const GroupKeyManagementBase: import("./GroupKeyManagementBehavior.js").GroupKeyManagementBehaviorConstructor; /** * This is the default server implementation of {@link GroupKeyManagementBehavior}. */ export declare class GroupKeyManagementServer extends GroupKeyManagementBase { #private; readonly state: GroupKeyManagementServer.State; static readonly schema: import("@matter/model").ClusterModel; initialize(): void; keySetWrite({ groupKeySet }: GroupKeyManagement.KeySetWriteRequest): Promise; keySetRead({ groupKeySetId, }: GroupKeyManagement.KeySetReadRequest): GroupKeyManagement.KeySetReadResponse; keySetRemove({ groupKeySetId }: GroupKeyManagement.KeySetRemoveRequest): void; keySetReadAllIndices(): GroupKeyManagement.KeySetReadAllIndicesResponse; addEndpointForGroup(fabric: Fabric, groupId: GroupId, endpointId: EndpointNumber, groupName: string): void; /** * Remove endpoint from the provided group, or all groups if no groupId is provided. */ removeEndpoint(fabric: Fabric, endpointId: EndpointNumber, groupId?: GroupId): boolean; /** * Returns whether a GroupKeySetId exists for a given fabric. Called by GroupcastServer to validate KeySetIDs. */ validateKeySetId(fabricIndex: FabricIndex, keySetId: number): boolean; /** * Creates a new GroupKeySet for a Groupcast group key, bypassing normal KeySetWrite validation. * Used by GroupcastServer when JoinGroup or UpdateGroupKey is called with a `key` parameter. * The key set uses TrustFirst policy and EpochStartTime0=1 as required by core§11.27.7.1.4. * * @returns true on success, throws if the key set already exists or resources are exhausted */ createKeySetForGroupcast(fabric: Fabric, keySetId: number, epochKey0: Uint8Array): Promise; setGroupcastAdopted(fabricIndex: FabricIndex, adopted: boolean): void; } export declare namespace GroupKeyManagementServer { class State extends GroupKeyManagementBase.State { /** * Extended state to hold and persist the group key sets for this server. This structure contains all * GroupKeySet entries for all fabrics beside the fabric specific entries of the groupKeyset 0 */ groupKeySets: (GroupKeyManagement.GroupKeySet & { fabricIndex: FabricIndex; })[]; maxGroupKeysPerFabric: number; maxGroupsPerFabric: number; /** * Per-fabric Groupcast adoption state. Only present when the Groupcast feature is enabled and the optional * GroupcastAdoption attribute is defined; the default server never populates it. */ groupcastAdoption?: GroupKeyManagement.GroupcastAdoption[]; } } export {}; //# sourceMappingURL=GroupKeyManagementServer.d.ts.map