/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { ActionContext } from "#behavior/context/ActionContext.js"; import { CommissioningServer } from "#behavior/system/commissioning/CommissioningServer.js"; import { EventsBehavior } from "#behavior/system/events/EventsBehavior.js"; import { NetworkServer } from "#behavior/system/network/NetworkServer.js"; import { ServerNetworkRuntime } from "#behavior/system/network/ServerNetworkRuntime.js"; import { ProductDescriptionServer } from "#behavior/system/product-description/ProductDescriptionServer.js"; import { SessionsBehavior } from "#behavior/system/sessions/SessionsBehavior.js"; import { SubscriptionsServer } from "#behavior/system/subscriptions/SubscriptionsServer.js"; import { Construction, Diagnostic, Identity } from "@matter/general"; import { Interactable } from "@matter/protocol"; import { AccessControlServer } from "../behaviors/access-control/AccessControlServer.js"; import { Peers } from "./client/Peers.js"; import { Node } from "./Node.js"; /** * A server-side Matter {@link Node}. * * The Matter specification often refers to server-side nodes as "devices". */ export declare class ServerNode extends Node { #private; /** * Construct a new ServerNode. * * You can use {@link create} to construct the node and wait for it to initialize fully. * * @param type the variation of {@link RootEndpoint} that defines the root endpoint's behavior * @param options root endpoint options and the node's environment */ constructor(type?: T, options?: Node.Options); /** * Construct a new ServerNode. * * You can use {@link create} to construct the node and wait for it to initialize fully. * * @param config a {@link Endpoint.Configuration} for the root endpoint */ constructor(config: Partial>); /** * Create a new ServerNode. * * @param type the variation of {@link RootEndpoint} that defines the root endpoint's behavior * @param options root endpoint configuration and, optionally, the node's environment */ static create, T extends ServerNode.RootEndpoint = ServerNode.RootEndpoint>(this: This, type?: T, options?: Node.Options): Promise>; /** * Create a new ServerNode. * * @param config root endpoint configuration and, optionally, the node's {@link Environment} */ static create, T extends ServerNode.RootEndpoint = ServerNode.RootEndpoint>(this: This, config: Partial>): Promise>; protected createRuntime(): ServerNetworkRuntime; [Construction.destruct](): Promise; protected get diagnosticSections(): Diagnostic[]; prepareRuntimeShutdown(): Promise; /** * Perform a factory reset of the node. */ erase(): Promise; protected eraseWithMutex(): Promise; /** * Access other nodes on the fabric. */ get peers(): Peers; get interaction(): Interactable; readonly nodeType: "server"; protected initialize(): Promise; /** * By default, on factory reset we erase all stored data. * * If this is inappropriate for your application, you may override to alter the behavior. Matter requires that all * "security- and privacy-related data and key material" is removed on factory reset. * * @see {@link MatterSpecification.v161.Core} § 13.4 */ protected resetStorage(): Promise; /** * Discard the in-memory state the node's services hold for what a factory reset erases. */ private resetServiceState; /** * Normal endpoints must have an owner to complete construction but server nodes have no such precondition for * construction. */ protected assertConstructable(): void; } export declare namespace ServerNode { /** * The root endpoint of a server node without the Groupcast cluster. Its Access Control server has no Auxiliary * feature. Controllers, which need neither, use this as their root. * * A node with a Groups server on any endpoint does not conform to Matter 1.6.1 without Groupcast on its root, so * use this only for nodes without Groups or that deliberately model a pre-Groupcast device. */ const RootEndpointWithoutGroupcast: import("../index.js").MutableEndpoint.With, import("../index.js").SupportedBehaviors.With<{ readonly parts: typeof import("../index.js").PartsBehavior; } & { readonly index: typeof import("../index.js").IndexBehavior; } & { readonly accessControl: typeof AccessControlServer; } & { readonly basicInformation: typeof import("../behaviors/index.js").BasicInformationServer; } & { readonly generalCommissioning: typeof import("../behaviors/index.js").GeneralCommissioningServer; } & { readonly generalDiagnostics: typeof import("../behaviors/index.js").GeneralDiagnosticsServer; } & { readonly administratorCommissioning: typeof import("../behaviors/index.js").AdministratorCommissioningServer; } & { readonly operationalCredentials: typeof import("../behaviors/index.js").OperationalCredentialsServer; } & { readonly groupKeyManagement: typeof import("../behaviors/index.js").GroupKeyManagementServer; }, readonly [typeof CommissioningServer, typeof NetworkServer, typeof ProductDescriptionServer, typeof SubscriptionsServer, typeof SessionsBehavior, typeof EventsBehavior]>, {}>; interface RootEndpointWithoutGroupcast extends Identity { } /** * The default root endpoint of a server node. * * @see {@link MatterSpecification.v161.Device} § 2.1 */ const RootEndpoint: RootEndpoint; /** * Typed without Groupcast so a node type may select any Groupcast features, or leave the cluster out, and still * satisfy this type. Use `node.stateOf(GroupcastServer)` for the Groupcast state of a default node. */ interface RootEndpoint extends Identity { } } //# sourceMappingURL=ServerNode.d.ts.map