/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { GroupKeyManagement } from "#clusters/group-key-management";
import { Fabric } from "#protocol";
import { EndpointNumber, FabricIndex, GroupId } from "#types";
import { GroupKeyManagementBehavior } from "./GroupKeyManagementBehavior.js";
/**
 * This is the default server implementation of {@link GroupKeyManagementBehavior}.
 */
export declare class GroupKeyManagementServer extends GroupKeyManagementBehavior {
    #private;
    state: GroupKeyManagementServer.State;
    static readonly schema: import("#model").ClusterModel;
    initialize(): void;
    keySetWrite({ groupKeySet }: GroupKeyManagement.KeySetWriteRequest): Promise<void>;
    keySetRead({ groupKeySetId, }: GroupKeyManagement.KeySetReadRequest): GroupKeyManagement.KeySetReadResponse;
    keySetRemove({ groupKeySetId }: GroupKeyManagement.KeySetRemoveRequest): Promise<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;
}
export declare namespace GroupKeyManagementServer {
    class State extends GroupKeyManagementBehavior.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;
    }
}
//# sourceMappingURL=GroupKeyManagementServer.d.ts.map