/**
 * @license
 * Copyright 2025-2026 Open Home Foundation
 * SPDX-License-Identifier: Apache-2.0
 */
import type { MatterNode } from "@matter-server/ws-client";
/**
 * Gets the primary device type ID for a node.
 * Scans all endpoints for DeviceTypeList attribute (x/29/0) and prefers
 * the first explicitly-mapped, non-infrastructure type. Falls back to
 * the first type found on any endpoint.
 */
export declare function getPrimaryDeviceType(node: MatterNode): number | undefined;
/**
 * Gets the appropriate MDI icon path for a specific endpoint on a node.
 * Prefers non-utility device types when present.
 */
export declare function getEndpointIcon(node: MatterNode, endpoint: number): string;
/**
 * Gets the appropriate MDI icon path for a node.
 * Considers device type and Thread role.
 */
export declare function getDeviceIcon(node: MatterNode, threadRole?: number): string;
/**
 * Gets the appropriate MDI icon path for a network type.
 */
export declare function getNetworkTypeIcon(networkType: string): string;
/**
 * Creates an SVG data URL from an MDI icon path for use in vis.js.
 * @param iconPath - The MDI icon path
 * @param color - The icon color (CSS color string)
 * @param size - The icon size in pixels
 * @param badge - Optional top-right corner badge: an MDI glyph filled white on a colored disc
 * @returns A data URL containing the SVG
 */
export declare function createIconDataUrl(iconPath: string, color: string, size?: number, badge?: {
    iconPath: string;
    color: string;
}): string;
/**
 * Creates an SVG data URL for a network graph node.
 * @param node - The Matter node
 * @param threadRole - Optional Thread routing role
 * @param isSelected - Whether the node is selected
 * @param isOffline - Whether the node is offline
 * @returns A data URL containing the SVG
 */
export declare function createNodeIconDataUrl(node: MatterNode, threadRole?: number, isSelected?: boolean, isOffline?: boolean): string;
/**
 * Creates an SVG data URL for an unknown Thread device (question mark).
 * @param isRouter - Whether the device appears to be a router
 * @param isSelected - Whether the node is selected
 * @returns A data URL containing the SVG
 */
export declare function createUnknownDeviceIconDataUrl(isRouter?: boolean, isSelected?: boolean): string;
/**
 * Creates an SVG data URL for a Thread Border Router identified via mDNS.
 *
 * Thread Leader (mesh routing role) and Primary BBR (backbone role) are orthogonal: the central
 * glyph reflects the mesh role (crown for leader, router otherwise) while a corner star badge marks
 * the primary BBR. A BR that is both shows both.
 *
 * @param isSelected - Whether the node is selected
 * @param isLeader - Whether this BR is the Thread network leader (from MeshCoP state bitmap)
 * @param isPrimaryBbr - Whether this BR is the primary Backbone Border Router (from MeshCoP state bitmap)
 * @returns A data URL containing the SVG
 */
export declare function createBorderRouterIconDataUrl(isSelected?: boolean, isLeader?: boolean, isPrimaryBbr?: boolean): string;
/**
 * Creates an SVG data URL for a WiFi access point/router.
 * @param isSelected - Whether the node is selected
 * @returns A data URL containing the SVG
 */
export declare function createWiFiRouterIconDataUrl(isSelected?: boolean): string;
//# sourceMappingURL=device-icons.d.ts.map