/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Advertiser } from "#advertisement/Advertiser.js";
import { ServiceDescription } from "#advertisement/ServiceDescription.js";
import { FabricManager } from "#fabric/FabricManager.js";
import { SessionManager } from "#session/SessionManager.js";
import { Environment, Environmental } from "@matter/general";
/**
 * Interfaces the {@link DeviceAdvertiser} with other components.
 */
export interface DeviceAdvertiserContext {
    fabrics: FabricManager;
    sessions: SessionManager;
}
/**
 * Advertises a node for commissioning (if uncommissioned) or operationally (if commissioned).
 */
export declare class DeviceAdvertiser {
    #private;
    constructor(context: DeviceAdvertiserContext);
    toString(): string;
    static [Environmental.create](env: Environment): DeviceAdvertiser;
    /**
     * Advertise the device as commissionable.
     */
    enterCommissioningMode(description: ServiceDescription.Commissionable): void;
    /**
     * Cease advertising the device as commissionable.
     */
    exitCommissioningMode(): Promise<void> | undefined;
    /**
     * Advertise the device as operational.
     */
    enterOperationalMode(): void;
    /**
     * Cease advertising the device as operational.
     */
    exitOperationalMode(): void;
    /**
     * Reset automatic advertisement.
     *
     * This is useful when there is a network change.
     */
    restartAdvertisement(): void;
    close(): Promise<void>;
    hasAdvertiser(advertiser: Advertiser): boolean;
    addAdvertiser(advertiser: Advertiser): void;
    deleteAdvertiser(advertiser: Advertiser): Promise<void>;
    clearAdvertisers(): Promise<void>;
}
//# sourceMappingURL=DeviceAdvertiser.d.ts.map