/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Timestamp } from "#time/Timestamp.js";
import type { IpService } from "./IpService.js";
/**
 * Tracks status of an {@link IpService}, logs state changes and manages service discovery.
 */
export declare class IpServiceStatus {
    #private;
    constructor(service: IpService);
    close(): Promise<void>;
    /**
     * Is the service actively connecting?
     *
     * This is true so long as a promise passed to {@link connecting} is unresolved.
     */
    get isConnecting(): boolean;
    /**
     * Is the service currently reachable?
     *
     * This value is writable.  If you set {@link isReachable} to false and {@link isConnecting} is true, the service
     * enters discovery mode and begins active solicitation so long as neither condition changes.
     *
     * The service sets {@link isReachable} to true automatically if:
     *
     * - It discovers a new (previously unknown) address, or
     *
     * - The input promise to {@link connecting} resolves to true
     *
     * The service sets {@link isReachable} to false automatically if the input promise to {@link connecting} resolves
     * to false.
     */
    get isReachable(): boolean;
    /**
     * Are we actively performing MDNS discovery for the service?
     */
    get isResolving(): boolean;
    set isReachable(isReachable: boolean);
    get lastReceiptAt(): Timestamp | undefined;
    set lastReceiptAt(time: Timestamp);
    get connectionInitiatedAt(): Timestamp | undefined;
    /**
     * Register a new connection attempt.
     *
     * If {@link result} resolves as true the service is marked as reachable.  If {@link result} resolves as false
     * reachability is not modified.
     *
     * If {@link result} throws an error other than {@link AbortedError}, the service is marked as unreachable and if
     * the error logged.
     *
     * {@link isConnecting} will be true until {@link result} resolves.
     */
    connecting(result: PromiseLike<boolean>): void;
}
//# sourceMappingURL=IpServiceStatus.d.ts.map