/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { Fabric } from "#fabric/Fabric.js";
import { Lifetime } from "@matter/general";
import { Advertisement } from "./Advertisement.js";
import type { ServiceDescription } from "./ServiceDescription.js";
/**
 * A component that advertises a Matter service.
 */
export declare abstract class Advertiser implements Lifetime.Owner {
    #private;
    constructor(lifetime?: Lifetime.Owner);
    /**
     * Begin advertising on configured schedule.
     *
     * Note that so long as the advertisement is installed the device will continue to respond to MDNS queries even if
     * the advertisement schedule is elapsed.
     *
     * Returns undefined if the advertiser does not support this type of advertisement.
     */
    advertise(description: ServiceDescription, event: Advertiser.BroadcastEvent): Advertisement | undefined;
    /**
     * Create a new advertiser or retrieve existing advertiser.
     */
    protected abstract getAdvertisement(description: ServiceDescription): Advertisement | undefined;
    /**
     * Destroy the instance.
     */
    close(): Promise<void>;
    /**
     * The set of advertisements active for this advertiser.
     */
    get advertisements(): Set<Advertisement<ServiceDescription>>;
    /**
     * Obtain the active advertisement for {@link fabric}, if any.
     */
    advertisementForFabric(fabric: Fabric): Advertisement<ServiceDescription.Operational> | undefined;
    /**
     * Select advertisements using a predicate.
     */
    filter(predicate: (ad: Advertisement) => boolean): Advertisement<ServiceDescription>[];
    join(...name: unknown[]): Lifetime;
}
export declare namespace Advertiser {
    /**
     * A hint for scheduling regarding why broadcast is initiated.
     */
    type BroadcastEvent = "startup" | "reconnect" | "retransmit";
}
//# sourceMappingURL=Advertiser.d.ts.map