/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ServerAddressUdp } from "#net/ServerAddress.js";
import { ServerAddressSet } from "#net/ServerAddressSet.js";
import { AsyncObservable } from "#util/Observable.js";
import { DnssdName } from "./DnssdName.js";
import { DnssdNames } from "./DnssdNames.js";
import { IpServiceStatus } from "./IpServiceStatus.js";
/**
 * A service addressable by IP that updates as {@link DnssdNames} change.
 */
export declare class IpService {
    #private;
    constructor(name: string, via: string, names: DnssdNames);
    /**
     * The DNS-SD name.
     */
    get name(): DnssdName;
    /**
     * Other DNS-SD names.
     */
    get names(): DnssdNames;
    /**
     * Identifier used for logging.
     */
    get via(): string;
    /**
     * Status details of the service.
     */
    get status(): IpServiceStatus;
    /**
     * Release resources.
     */
    close(): Promise<void>;
    /**
     * Known addresses.
     */
    get addresses(): ServerAddressSet<ServerAddressUdp>;
    /**
     * Values from TXT records.
     */
    get parameters(): Map<string, string>;
    /**
     * Emits when the service changes.
     */
    get changed(): AsyncObservable<[], void>;
    map<T>(fn: (addr: ServerAddressUdp) => T): T[];
    /**
     * Stream address updates, starting with initial set of addresses.
     *
     * Outputs addresses in priority order so the stream may be used directly for establishing new connections.
     *
     * If no addresses are present, triggers discovery using standard MDNS backoff schedule.
     */
    addressChanges({ abort, order, }?: {
        abort?: AbortSignal;
        order?: ServerAddressSet.Comparator;
        ipv4?: boolean;
    }): AsyncGenerator<{
        kind: "add" | "delete";
        address: ServerAddressUdp;
    }>;
}
export declare namespace IpService {
    interface AddressChange {
        kind: "add" | "delete";
        address: ServerAddressUdp;
    }
}
//# sourceMappingURL=IpService.d.ts.map