/** * mDNS Discovery for Dyson Devices * Discovers Dyson devices on the local network via mDNS/Bonjour */ import { Bonjour } from 'bonjour-service'; /** Default discovery timeout in milliseconds */ export declare const DEFAULT_DISCOVERY_TIMEOUT = 10000; /** * Discovery result containing device serial and IP address */ export interface DiscoveredDevice { /** Device serial number extracted from mDNS name */ serial: string; /** Device IP address (IPv4 preferred) */ ipAddress: string; /** Device hostname */ hostname: string; /** mDNS service port */ port: number; } /** * Options for mDNS discovery */ export interface DiscoveryOptions { /** Discovery timeout in milliseconds (default: 10000) */ timeout?: number; /** Stop after finding this many devices (0 = find all) */ maxDevices?: number; } /** Bonjour factory type for dependency injection */ export type BonjourFactory = () => Bonjour; /** * mDNS Discovery for Dyson devices * Discovers devices advertising the _dyson_mqtt._tcp service * * @example * ```typescript * const discovery = new MdnsDiscovery(); * const devices = await discovery.discover(); * // devices is Map * ``` */ export declare class MdnsDiscovery { private bonjour; private browser; private readonly bonjourFactory; constructor(bonjourFactory?: BonjourFactory); /** * Discover Dyson devices on the local network * * @param options - Discovery options * @returns Map of device serial numbers to IP addresses */ discover(options?: DiscoveryOptions): Promise>; /** * Discover devices and return detailed information * * @param options - Discovery options * @returns Array of discovered device details */ discoverDetailed(options?: DiscoveryOptions): Promise; /** * Stop any ongoing discovery */ stop(): void; /** * Parse mDNS service into device info * Service name format: {serial}_dyson_mqtt._tcp.local */ private parseService; /** * Extract serial number from mDNS service name */ private extractSerial; /** * Get IPv4 address from service, preferring IPv4 over IPv6 */ private getIPv4Address; /** * Check if address is IPv4 */ private isIPv4; /** * Validate and clamp timeout value */ private validateTimeout; /** * Clean up bonjour resources */ private cleanup; } //# sourceMappingURL=mdnsDiscovery.d.ts.map