/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { NetworkInterface, NetworkInterfaceDetailed, TransportInterface, UdpInterface } from "#general";
import { ServerNode } from "#node/ServerNode.js";
import { TransactionalInteractionServer } from "#node/server/TransactionalInteractionServer.js";
import { InstanceBroadcaster, MatterDevice, MdnsInstanceBroadcaster } from "#protocol";
import { NetworkRuntime } from "./NetworkRuntime.js";
/**
 * Handles network functionality for {@link NodeServer}.
 */
export declare class ServerNetworkRuntime extends NetworkRuntime {
    #private;
    get owner(): ServerNode;
    /**
     * Access the MDNS broadcaster for the node.
     */
    get mdnsBroadcaster(): MdnsInstanceBroadcaster;
    get networkInterfaceConfiguration(): NetworkInterface[];
    getNetworkInterfaces(): Promise<NetworkInterfaceDetailed[]>;
    openAdvertisementWindow(): Promise<void>;
    advertiseNow(): Promise<void>;
    /**
     * The IPv6 {@link UdpInterface}. We create this interface independently of the server so the OS can select a port
     * before we are fully online.
     */
    protected getPrimaryNetInterface(): Promise<UdpInterface>;
    /**
     * A BLE broadcaster.
     */
    protected get bleBroadcaster(): InstanceBroadcaster;
    /**
     * A BLE transport.
     */
    protected get bleTransport(): TransportInterface;
    /**
     * Add transports to the {@link MatterDevice}.
     */
    protected addTransports(device: MatterDevice): Promise<void>;
    /**
     * Add broadcasters to the {@link MatterDevice}.
     */
    protected addBroadcasters(device: MatterDevice): Promise<void>;
    /**
     * When the first Fabric gets added we need to enable MDNS broadcasting.
     */
    enableMdnsBroadcasting(): void;
    /**
     * On commission we turn off bluetooth and join the IP network if we haven't already.
     *
     * On decommission we're destroyed so don't need to handle that case.
     */
    endUncommissionedMode(): void;
    /**
     * Expose the internal InteractionServer for testing.
     */
    get interactionServer(): TransactionalInteractionServer;
    get operationalPort(): number;
    endCommissioning(): Promise<void> | undefined;
    protected start(): Promise<void>;
    protected stop(): Promise<void>;
    protected blockNewActivity(): void;
}
//# sourceMappingURL=ServerNetworkRuntime.d.ts.map