/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Endpoint } from "#endpoint/Endpoint.js";
import type { ClientNode } from "#node/ClientNode.js";
import { Duration } from "@matter/general";
import { Fabric, PeerAddress } from "@matter/protocol";
import { FabricIndex, NodeId } from "@matter/types";
import { OtaSoftwareUpdateRequestor } from "@matter/types/clusters/ota-software-update-requestor";
export declare class OtaAnnouncements {
    #private;
    constructor(endpoint: Endpoint, ownFabric: Fabric);
    /**
     * Set the interval to a time value or undefined to disable announcements
     */
    set interval(interval: Duration | undefined);
    /**
     * Determine if we can request an update for the given node and return node meta-data needed for the process.
     * The Node needs to be commissioned (have a peer address), being not disabled, and having an active subscription
     * (to not work with outdated data).
     * When a node is applicable for updates, it also subscribes to softwareVersion changes to be able to react
     */
    peerApplicableForUpdate(peer: ClientNode): {
        otaEndpoint: Endpoint<import("../../../index.js").EndpointType.Empty>;
        peerAddress: {
            readonly fabricIndex: FabricIndex;
            readonly nodeId: NodeId;
        };
    } | undefined;
    /** Announce ourselves as OTA Provider to the given node's endpoint */
    announceOtaProvider(endpoint: Endpoint, peerAddress: PeerAddress, announcementReason?: OtaSoftwareUpdateRequestor.AnnouncementReason): Promise<void>;
    close(): Promise<void>;
}
//# sourceMappingURL=OtaAnnouncements.d.ts.map