/** * @license * Copyright 2025-2026 Open Home Foundation * SPDX-License-Identifier: Apache-2.0 */ import type { BorderRouterEntry } from "@matter-server/ws-client"; import { BaseNetworkGraph } from "./base-network-graph.js"; import type { ThreadEdgePair, ThreadExternalDevice } from "./network-types.js"; declare global { interface HTMLElementTagNameMap { "thread-graph": ThreadGraph; } } export declare class ThreadGraph extends BaseNetworkGraph { borderRouters: ReadonlyMap; hideOfflineNodes: boolean; hideWeakSignalEdges: boolean; hideMediumSignalEdges: boolean; hideStrongSignalEdges: boolean; /** Cache of external Thread devices (Border Routers and unknown) for the current render */ private _unknownDevices; /** Cached map of external Thread devices (rebuilt in _updateGraph) */ private _unknownDevicesMapCache; /** All computed edge pairs (rebuilt in _updateGraph) */ private _edgePairs; /** Base state of each edge after filter+dedup, before highlight */ private _edgeBaseState; /** Whether highlight is currently active */ private _isHighlighted; /** Node ID currently highlighted (for icon restoration on clear) */ private _highlightedNodeId; /** Get external Thread devices as a map for use by details panel */ get unknownDevicesMap(): ReadonlyMap; /** Get computed edge pairs (for potential use by other components) */ get edgePairs(): Map; updated(changedProperties: Map): void; /** * Searches for a Thread node (known or unknown) and selects it. Matches, in priority order: * 1. Extended address (EUI-64), accepting `AABBCCDDEEFF0011`, `AA:BB:...`, or `0x...` forms. * 2. Node id (exact). * 3. Visible device label (case-insensitive substring). * Returns true when a match is found. */ selectBySearch(query: string): boolean; protected _updateGraph(): void; /** * Highlights edges connected to the selected node with swap/arrow logic. * * For each visible edge connected to the highlighted node: * - If the visible edge comes from the remote node AND there is a * dedup-hidden edge from the highlighted node → SWAP: show the * highlighted node's edge instead (its signal is better or equal, * but we prefer the highlighted node's perspective). * - Otherwise → thicken the edge. If the pair is truly one-way (only * one of edgeAB/edgeBA exists), also draw an arrow in the data * direction so asymmetric visibility is visible at a glance. */ protected _highlightConnections(nodeId: number | string): void; /** * Thicken a connected edge and add a directional arrow when the pair is * truly one-way in data (only one of edgeAB/edgeBA exists). Used for the * highlighted-reports-peer branch where filter-hidden peer directions * should not draw an arrow on the user's own perspective. * * Explicit arrow object (vs the shorthand "to") keeps the head visible * on dashed offline edges where some vis.js builds skip the shorthand. */ private _asymmetricEdgeUpdate; /** * Thicken a connected edge and always add a directional arrow. Used for * the remote-reports-highlighted branch where the displayed edge is the * peer's direction (no swap target available); the user sees the same * single line whether the outgoing direction is filter-hidden or absent. */ private _reverseEdgeUpdate; /** * Swap a node's icon between the default and highlighted variants. * Kept separate so both `_highlightConnections` (switching target) and * `_clearHighlights` (fully unselecting) reach the same end state. */ private _setNodeIconHighlight; /** * Clears all highlights and restores the graph to its base state * (after filter+dedup, before highlight modifications). */ protected _clearHighlights(): void; /** * Restores all edges to their base state (undoes highlight modifications). * This resets hidden/visible state, width, color, and dashes. */ private _restoreEdgeBaseState; render(): import("lit-html").TemplateResult<1>; } //# sourceMappingURL=thread-graph.d.ts.map