/**
 * @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<void>;
    leaveGroup(request: Groupcast.LeaveGroupRequest): Groupcast.LeaveGroupResponse;
    updateGroupKey(request: Groupcast.UpdateGroupKeyRequest): Promise<void>;
    configureAuxiliaryAcl(request: Groupcast.ConfigureAuxiliaryAclRequest): void;
    groupcastTesting(request: Groupcast.GroupcastTestingRequest): void;
    [Symbol.asyncDispose](): Promise<void>;
}
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