/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Branded, Crypto } from "@matter/general"; import { TlvWrapper } from "../tlv/TlvWrapper.js"; import { CaseAuthenticatedTag } from "./CaseAuthenticatedTag.js"; import type { SubjectId } from "./SubjectId.js"; /** * A Node Identifier (Node ID) is a 64-bit number that uniquely identifies an individual Node or a * group of Nodes on a Fabric. * * @see {@link MatterSpecification.v10.Core} § 2.5.5 */ export type NodeId = Branded; export declare function NodeId(v: Parameters[0]): NodeId; export declare namespace NodeId { /** * The Unspecified Node ID (0x0000_0000_0000_0000) is a reserved value that never appears in messages or protocol * usage. It exists to mark or detect the presence of uninitialized, missing, or invalid Node IDs. */ const UNSPECIFIED_NODE_ID: NodeId; function strOf(nodeId: NodeId): string; /** * An Operational Node ID is a 64-bit number that uniquely identifies an individual Node on a Fabric. All messages * must have an Operational Node ID as the source address. All unicast messages must have an Operational Node ID * as the destination address. */ const randomOperationalNodeId: (crypto: Crypto) => NodeId; /** * Returns whether the given Node ID is an Operational Node ID. */ const isOperationalNodeId: (nodeId: SubjectId) => nodeId is NodeId; /** 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 fromGroupId: (groupId: number) => NodeId; /** * A Temporary Local Node ID is a 64-bit Node ID that contains an implementation-dependent value in its lower * 32 bits. This allows implementations to keep track of connections or transport-layer links and similar * housekeeping internal usage purposes in contexts where an Operational Node ID is unavailable. */ const fromTemporaryLocalNodeId: (id: number) => NodeId; /** * This subrange of Node ID is used to assign an access control subject to a group of peer nodes that share a * single CASE session as specified in Section 6.6.2.1.2, “Subjects identified by CASE Authenticated Tag”. */ const fromCaseAuthenticatedTag: (id: CaseAuthenticatedTag) => NodeId; const isCaseAuthenticatedTag: (nodeId: SubjectId) => nodeId is SubjectId; const extractAsCaseAuthenticatedTag: (nodeId: SubjectId) => CaseAuthenticatedTag; /** * This subrange of Node ID is used to assign an access control subject to a particular PAKE key as specified in * Section 6.6.2.1.1, “PASE and Group Subjects”. An example usage would be to create an ACL entry to provide * administrative access to any commissioner communicating via a PASE session established with a particular pincode. */ const getFromPakeKeyIdentifier: (id: number) => NodeId; } /** Tlv schema for a Node Identifier. */ export declare const TlvNodeId: TlvWrapper; //# sourceMappingURL=NodeId.d.ts.map