/** * @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=IPK_DEFAULT_EPOCH_START_TIME (Matter epoch zero = Jan 1, 2000). * * @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 (provisional Matter 1.6 GCAST feature). Only present when the Groupcast * feature is enabled; the default server rejects it while provisional. */ groupcastAdoption?: GroupKeyManagement.GroupcastAdoption[]; } } export {}; //# sourceMappingURL=GroupKeyManagementServer.d.ts.map