/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Behavior } from "#behavior/Behavior.js";
import { SharedEnvironmentServices } from "#general";
import { FabricAuthorityConfiguration, MdnsScannerTargetCriteria } from "#protocol";
import { CaseAuthenticatedTag, FabricId, NodeId } from "#types";
/**
 * Node controller functionality.
 *
 * For our purposes, a "controller" is a node that supports commissioning of remote devices.
 *
 * This class initializes components required for controller usage and tracks active discoveries.  Discovery logic
 * resides in {@link Discovery} and commissioning logic in {@link CommissioningClient}.
 */
export declare class ControllerBehavior extends Behavior {
    #private;
    static readonly id = "controller";
    internal: ControllerBehavior.Internal;
    state: ControllerBehavior.State;
    initialize(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
    get fabricAuthorityConfig(): FabricAuthorityConfiguration;
}
export declare namespace ControllerBehavior {
    class Internal {
        /**
         * MDNS scanner criteria for each controlled fabric (keyed by operational ID).
         */
        mdnsTargetCriteria: MdnsScannerTargetCriteria;
        services?: SharedEnvironmentServices;
    }
    class State {
        /**
         * Set to false to disable scanning on BLE.
         *
         * By default the controller scans via BLE if BLE is available.
         */
        ble?: boolean;
        /**
         * Set to false to disable scanning on IP networks.
         *
         * By default the controller always scans on IP networks.
         */
        ip?: boolean;
        /**
         * Node ID assignment strategy.
         */
        nodeIdAssignment: "sequential" | "random";
        /**
         * Next assigned ID when {@link nodeIdAssignment} is "sequential".
         *
         * matter.js increments this value automatically after allocating a new node ID.  This means that the
         * "sequential" strategy does not reuse IDs from decommissioned nodes.
         *
         * If there is a conflict with an existing ID, matter.js increments this value until it identifies a free ID.
         */
        nextNodeId?: NodeId;
        /**
         * Contains the label of the admin fabric which is set for all commissioned devices
         */
        adminFabricLabel: string;
        /**
         * Contains the FabricId of the admin fabric when a defined number needs to be used because special Certificates
         * are used.
         * If not provided, a random FabricId will be generated.
         */
        adminFabricId?: FabricId;
        /**
         * Contains the NodeId of the admin node when a defined number needs to be used because special Certificates
         * are used.
         * If not provided, a random NodeId will be generated.
         */
        adminNodeId?: NodeId;
        /**
         * Case Authenticated Tags to be used to commission and connect to devices.
         */
        caseAuthenticatedTags?: CaseAuthenticatedTag[];
    }
}
//# sourceMappingURL=ControllerBehavior.d.ts.map