/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { AccessControlServer } from "#behaviors/access-control"; import { GroupMessageEventInfo } from "@matter/protocol"; import { Groupcast } from "@matter/types/clusters/groupcast"; import { GroupcastBehavior } from "./GroupcastBehavior.js"; /** * This is the default server implementation of {@link GroupcastBehavior}. * * The Groupcast cluster is node-scoped and must be placed on the root endpoint. * Use {@link GroupcastServer.with} to enable the desired features (e.g. "Listener", "Sender"). * * Key behaviors: * - Manages per-fabric group membership (persistent). * - Drives {@link FabricGroups} with group-to-key-set mappings and multicast address policy. * - Registers an {@link AccessControlServer.AuxAclObservable} to supply synthetic ACL entries for groups * with `hasAuxiliaryAcl=true`. AccessControlServer calls back to collect entries when needed. * - On first use by a fabric, marks the fabric as "GroupcastAdopted" in GKM, making GroupKeyMap read-only. * - Migrates legacy group data from the Groups cluster on startup. */ export declare class GroupcastServer extends GroupcastBehavior { #private; internal: GroupcastServer.Internal; initialize(): void; joinGroup(request: Groupcast.JoinGroupRequest): Promise; leaveGroup(request: Groupcast.LeaveGroupRequest): Groupcast.LeaveGroupResponse; updateGroupKey(request: Groupcast.UpdateGroupKeyRequest): Promise; configureAuxiliaryAcl(request: Groupcast.ConfigureAuxiliaryAclRequest): void; groupcastTesting(request: Groupcast.GroupcastTestingRequest): void; [Symbol.asyncDispose](): Promise; } export declare namespace GroupcastServer { /** Non-persistent internal state for GroupcastServer. */ class Internal { /** * Observable that holds all auxiliary ACL entries supplied by this cluster. * AccessControlServer subscribes to this and rebuilds its ACL cache whenever it emits. */ auxAcl: AccessControlServer.AuxAclObservable; /** Active subscription handler on SessionManager.groupMessage while fabricUnderTest is set. */ groupMessageHandler?: (info: GroupMessageEventInfo) => void; } /** Default state overrides for GroupcastServer. */ class State extends GroupcastBehavior.State { /** * Implementation-defined maximum membership count (min 10 per spec). * Set to 2 * GKM.maxGroupsPerFabric (44) so per-fabric quota floor(44/2)=22 aligns exactly * with GKM's per-fabric cap. Even number avoids spillover semantics. */ maxMembershipCount: number; /** Implementation-defined maximum multicast address count (min 1 per spec). */ maxMcastAddrCount: number; } } //# sourceMappingURL=GroupcastServer.d.ts.map