/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { AccessControlServer } from "#behaviors/access-control"; import { Duration, Observable } from "@matter/general"; import { DataReport, DataReportPayloadIterator, ExchangeManager, InteractionRecipient, InteractionServerMessenger, InvokeRequest, Message, MessageExchange, NodeSession, PeerAddress, ProtocolHandler, ReadRequest, SessionManager, SubscribeRequest, TimedRequest, WriteRequest } from "@matter/protocol"; import { AttributePath, EventPath } from "@matter/types"; import { ServerNode } from "../ServerNode.js"; import { ServerSubscription } from "./ServerSubscription.js"; export interface PeerSubscription { subscriptionId: number; peerAddress: PeerAddress; minIntervalFloor: Duration; maxIntervalCeiling: Duration; attributeRequests?: AttributePath[]; eventRequests?: EventPath[]; isFabricFiltered: boolean; maxInterval: Duration; sendInterval: Duration; } /** Cumulative counters tracked by the interaction server since startup. */ export interface InteractionCounters { totalSubscriptionsEstablished: number; totalInteractionModelMessagesSent: number; totalInteractionModelMessagesReceived: number; } /** * Interfaces {@link InteractionServer} with other components. */ export interface InteractionContext { readonly sessions: SessionManager; readonly exchangeManager: ExchangeManager; } /** * Translates interactions from the Matter protocol to matter.js APIs. */ export declare class InteractionServer implements ProtocolHandler, InteractionRecipient { #private; readonly id = 1; readonly requiresSecureSession = true; constructor(node: ServerNode, sessions: SessionManager); [Symbol.asyncDispose](): Promise; blockNewActivity(): void; protected get isClosing(): boolean; get maxPathsPerInvoke(): number; get subscriptionEstablishmentStarted(): Observable<[peerAddress: PeerAddress], void>; get counters(): InteractionCounters; onNewExchange(exchange: MessageExchange, message: Message): Promise; get aclServer(): AccessControlServer; get clientHandler(): ProtocolHandler | undefined; set clientHandler(clientHandler: ProtocolHandler); handleReadRequest(exchange: MessageExchange, readRequest: ReadRequest, message: Message): Promise<{ dataReport: DataReport; payload?: DataReportPayloadIterator; }>; handleWriteRequest(exchange: MessageExchange, writeRequest: WriteRequest, messenger: InteractionServerMessenger, message: Message): Promise; handleSubscribeRequest(exchange: MessageExchange, request: SubscribeRequest, messenger: InteractionServerMessenger, message: Message): Promise; establishFormerSubscription({ subscriptionId, attributeRequests, eventRequests, isFabricFiltered, minIntervalFloor, maxIntervalCeiling, maxInterval, sendInterval, }: PeerSubscription, session: NodeSession): Promise; handleInvokeRequest(exchange: MessageExchange, request: InvokeRequest, messenger: InteractionServerMessenger, message: Message): Promise; handleTimedRequest(exchange: MessageExchange, { timeout }: TimedRequest): void; close(): Promise; } //# sourceMappingURL=InteractionServer.d.ts.map