/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { DnsRecordType } from "#codec/DnsCodec.js"; import { RetrySchedule } from "#net/RetrySchedule.js"; import type { DnssdName } from "./DnssdName.js"; import type { DnssdNames } from "./DnssdNames.js"; /** * Solicits DNS-SD records for specific names. */ export interface DnssdSolicitor { /** * Send a single MDNS query for a specific DNS-SD name. * * Multiple solicitations for the same name are coalesced into the same query using a macrotask. */ solicit(solicitation: DnssdSolicitor.Solicitation): void; /** * Send MDNS queries for a specific DNS-SD name using a standard MDNS transmission schedule. * * The solicitor does not have a notion of "discovery complete", so this function does not return until * {@link DnssdSolicitor.Discovery.abort} signals abort (or the solicitor is closed). * * Multiple simultaneous attempts to complete discovery of the same name will not result in redundant solicitations. * * If fields in {@link discovery} change their value is used for the next solicitation. */ discover(discovery: DnssdSolicitor.Discovery): Promise; } /** * Solicit one or more record types for a name. * * "Soliciting" consists of broadcasting a query for a DNS-SD name. Groups multiple solicitations in the same * macrotask into a single packet. */ export declare namespace DnssdSolicitor { /** * Configures solicitation of a single name. */ interface Solicitation { /** * The name to solicit. */ name: DnssdName; /** * Record types to request. */ recordTypes: DnsRecordType[]; /** * Additional names to include as known answers. */ associatedNames?: Iterable; } /** * Configures repeated solicitation. */ interface Discovery extends Solicitation { /** * Terminates discovery. */ abort: AbortSignal; } /** * Default retry schedule per RFC 6762 (initial delay of 20-120ms. handled separately). */ const DefaultRetries: RetrySchedule.Configuration; } /** * Concrete implementation of {@link DnssdSolicitor} that sends DNS-SD queries via multicast. */ export declare class QueryMulticaster implements DnssdSolicitor { #private; constructor(names: DnssdNames, retries?: RetrySchedule.Configuration); solicit(solicitation: DnssdSolicitor.Solicitation): void; discover(discovery: DnssdSolicitor.Discovery): Promise; close(): Promise; } //# sourceMappingURL=DnssdSolicitor.d.ts.map