/**
 * @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 { Crypto, Duration, Lifetime, RetrySchedule } from "#general";
import type { MdnsServer } from "#mdns/MdnsServer.js";
import { DatatypeModel } from "#model";
import type { MdnsAdvertisement } from "./MdnsAdvertisement.js";
/**
 * An {@link Advertiser} that advertises using an in-process MDNS implementation.
 */
export declare class MdnsAdvertiser extends Advertiser {
    #private;
    readonly crypto: Crypto;
    readonly server: MdnsServer;
    readonly port: number;
    readonly omitPrivateDetails: boolean;
    constructor(crypto: Crypto, server: MdnsServer, options?: MdnsAdvertiser.Options);
    /**
     * Create an advertisement for the specific service.
     */
    getAdvertisement(description: ServiceDescription): MdnsAdvertisement | undefined;
    /**
     * Generate a random 8-byte Matter instance identifier.
     */
    createInstanceId(): string;
    /**
     * Retrieve the broadcast schedule for a specific advertisement.
     */
    broadcastScheduleFor(advertisement: MdnsAdvertisement, event?: Advertiser.BroadcastEvent): RetrySchedule;
    /**
     * Retrieve broadcast configuration for a specific advertisement.
     */
    broadcastConfigFor(advertisement: MdnsAdvertisement, event?: Advertiser.BroadcastEvent): MdnsAdvertiser.BroadcastSchedule;
}
export declare namespace MdnsAdvertiser {
    /**
     * MDNS advertisement configuration options.
     */
    interface Options {
        /**
         * Lifetime of advertiser owner.
         */
        readonly lifetime?: Lifetime.Owner;
        /**
         * The port of the Matter service to advertise.
         *
         * Defaults to 5540.
         */
        readonly port?: number;
        /**
         * Omit the vendor and product ID from announcements for privacy reasons.
         */
        readonly omitPrivateDetails?: boolean;
        /**
         * Broadcast schedule.
         *
         * These control the intervals at which the server broadcasts the advertisement.  Note that order is important;
         * more specific schedules should appear first.
         *
         * By default all broadcasts are configured using {@link DefaultBroadcastSchedule}.
         */
        readonly schedules?: readonly BroadcastSchedule[];
    }
    /**
     * Schedule for automatic broadcasts.
     *
     * Schedules apply conditionally with {@link DefaultBroadcastSchedule} as the fallback.
     */
    interface BroadcastSchedule extends RetrySchedule.Configuration {
        /**
         * Limit this schedule to a particular service kind.
         */
        readonly serviceKind?: ServiceDescription["kind"];
        /**
         * Limit this schedule to initial broadcast or broadcast when reconnecting.
         */
        readonly event?: Advertiser.BroadcastEvent;
        /**
         * Extra time to broadcast after establishing an operational connection.
         *
         * Set to zero to terminate broadcast immediately after connection.  If undefined broadcasts will continue until
         * terminated by {@link timeout} or {@link maximumCount}.
         */
        readonly broadcastAfterConnection?: Duration;
    }
    /**
     * Default schedule for automatic broadcast.
     */
    const DefaultBroadcastSchedule: BroadcastSchedule;
    /**
     * Default schedule for retransmission broadcast.
     */
    const RetransmissionBroadcastSchedule: BroadcastSchedule;
    /**
     * Data model for MDNS advertiser configuration.
     */
    const OptionsSchema: DatatypeModel;
}
//# sourceMappingURL=MdnsAdvertiser.d.ts.map