/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Branded } from "@matter/general";
import { TlvWrapper } from "../tlv/TlvWrapper.js";
import type { NodeId } from "./NodeId.js";
/**
 * A Group Identifier (Group ID or GID) is a 16-bit number that identifies a set of Nodes across a
 * Fabric at the message layer (see Section 4.15, “Group Key Management”). A Group ID can further
 * be bound to one or more Endpoints within each Node in the group at the interaction layer.
 *
 * The Group ID space is allocated as described in Table 2, “Group ID Allocations”:
 * 0x0000 - Null or unspecified Group ID
 * 0x0001 - 0xFEFF: Application Group ID, assigned by fabric Administrator
 * 0xFF00 - 0xFFFF: Universal Group ID range reserved for static multicast and anycast identifiers
 *
 * @see {@link MatterSpecification.v10.Core} § 2.5.4
 */
export type GroupId = Branded<number, "GroupId">;
export declare function GroupId(groupId: number, validate?: boolean): GroupId;
export declare namespace GroupId {
    const NO_GROUP_ID: GroupId;
    /** This group is used to message all Nodes in a Fabric. */
    const ALL_NODES: GroupId;
    /**
     * This group is used to message all power-capable Nodes in a Fabric. ICD Nodes SHALL NOT subscribe to this group.
     */
    const ALL_NON_ICD_NODES: GroupId;
    const isValid: (groupId: number, validate?: boolean | undefined) => boolean;
    /** Application Group ID, assigned by fabric Administrator */
    function isApplicationGroupId(groupId: GroupId): boolean;
    function assertGroupId(groupId: GroupId): void;
    function fromNodeId(nodeId: NodeId): GroupId;
    /** A Group Node ID is a 64-bit Node ID that contains a particular Group ID in the lower half of the Node ID. */
    const isGroupNodeId: (nodeId: NodeId) => boolean;
}
/** Tlv Schema for a Group Id. */
export declare const TlvGroupId: TlvWrapper<GroupId, number>;
//# sourceMappingURL=GroupId.d.ts.map