/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Behavior } from "#behavior/Behavior.js"; import { DatafileRoot } from "@matter/general"; import { DatatypeModel } from "@matter/model"; import { RemoteInterface } from "./RemoteInterface.js"; /** * Base class for {@link Behavior}s that enable remote access to a {@link ServerNode} via a non-Matter API. * * Each protocol supported by Matter.js implements a subclass of {@link RemoteServer} and {@link RemoteInterface}. * * The {@link RemoteServer} provides a convenient interface for adding a protocol to a {@link ServerNode}. The The * {@link RemoteInterface} implements the actual protocol. * * For greater control you may instantiate and manage {@link RemoteInterface} separately from {@link RemoteServer}. To * implement your own protocol you may extend the server implementations provided by matter.js, or create a new protocol * implementation by subclassing {@link RemoteInterface} yourself. */ export declare abstract class RemoteServer extends Behavior { #private; static readonly early = true; static interfaceType: RemoteInterface.Type; internal: RemoteServer.Internal; readonly state: RemoteServer.State; initialize(): Promise; [Symbol.asyncDispose](): Promise; static readonly schema: DatatypeModel; } export declare namespace RemoteServer { class Internal { interface?: RemoteInterface; lock?: DatafileRoot.Lock; } class State { /** * The public address at which the service endpoint is accessible. * * The address is a URL. See subclasses for supported protocols. An "s" suffix indicates standard TLS support. * The "+unix" suffix indicates that the hostname is a URL encoded path to a UNIX socket. The socket path may * be absolute or relative to the node's storage root. * * The path portion of the URL generally acts as a namespace prefix for the relevant protocol implementation. * Matter.js replaces the special token `{node}` in the URL with the {@link ServerNode.id}. This allows for * multiple nodes to participate in a protocol in separate namespaces. */ address: string; /** * Set to false to disable this service. */ enabled: boolean; /** * By default the HTTP endpoint is available as soon as the {@link Node} initializes. * * If you set this to false, the HTTP endpoint is only available when the {@link Node}'s Matter networking is * also online. */ allowOfflineUse: boolean; /** * Certificate for encrypted endpoints in PEM format. */ certificate?: string; /** * Private key for encrypted endpoints in PEM format. */ key?: string; } } //# sourceMappingURL=RemoteServer.d.ts.map