/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Diagnostic } from "../log/Diagnostic.js"; import { MatterError } from "../MatterError.js"; import type { MaybePromise } from "../util/Promises.js"; import type { TcpConnection, TcpListener, TcpListenerOptions } from "./tcp/TcpConnection.js"; import type { Transport } from "./Transport.js"; import type { UdpSocket, UdpSocketOptions } from "./udp/UdpSocket.js"; /** Options for {@link Network.connectTcp}. */ export interface TcpConnectOptions extends Transport.OpenChannelOptions { /** Per-call timeout in milliseconds. Defaults to TCP_CONNECTION_TIMEOUT_MS. */ timeout?: number; } /** * Network errors typically reflect transient environmental conditions (unreachable host, interface down) rather than * defects, so they present as a compact message without a stack trace. */ export declare class NetworkError extends MatterError { [Diagnostic.value]: unknown; } export declare class TcpDisconnectError extends NetworkError { } export declare class NoAddressAvailableError extends NetworkError { } export declare class BindError extends NetworkError { } export declare class AddressInUseError extends BindError { } export declare class AddressUnreachableError extends NetworkError { } export declare class NetworkUnreachableError extends NetworkError { } export declare function tcpErrorFrom(error: Error): NetworkError; export declare const STANDARD_MATTER_PORT = 5540; /** * @see {@link MatterSpecification.v11.Core} ยง 11.11.4.4 * Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies. */ export declare enum InterfaceType { /** * Indicates an interface of an unspecified type. */ Unspecified = 0, /** * Indicates a Wi-Fi interface. */ WiFi = 1, /** * Indicates a Ethernet interface. */ Ethernet = 2, /** * Indicates a Cellular interface. */ Cellular = 3, /** * Indicates a Thread interface. */ Thread = 4 } export type NetworkInterface = { name: string; type?: InterfaceType; }; export type NetworkInterfaceDetails = { mac: string; ipV4: string[]; ipV6: string[]; }; export type NetworkInterfaceDetailed = NetworkInterface & NetworkInterfaceDetails; export declare abstract class Network { abstract getNetInterfaces(configuration?: NetworkInterface[]): MaybePromise; abstract getIpMac(netInterface: string): MaybePromise; abstract createUdpSocket(options: UdpSocketOptions): Promise; /** Create a TCP server socket. Override in platform implementations that support TCP. */ createTcpListener(_options: TcpListenerOptions): Promise; /** Connect to a remote TCP endpoint. Override in platform implementations that support TCP. */ connectTcp(_host: string, _port: number, _options?: TcpConnectOptions): Promise; close(): Promise; } //# sourceMappingURL=Network.d.ts.map