/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { CertificateAuthority } from "#certificate/CertificateAuthority.js";
import { AsyncObservable, Construction, Environment, Environmental } from "@matter/general";
import { CaseAuthenticatedTag, FabricId, FabricIndex, NodeId, VendorId } from "@matter/types";
import { Fabric } from "./Fabric.js";
import { FabricManager } from "./FabricManager.js";
/**
 * Configuration for fabrics controlled by a FabricAuthority.
 */
export interface FabricAuthorityConfiguration {
    readonly adminFabricLabel: string;
    readonly adminVendorId?: VendorId;
    readonly adminNodeId?: NodeId;
    /** @deprecated Fabric index is assigned automatically, please do not specify this. */
    readonly adminFabricIndex?: FabricIndex;
    readonly adminFabricId?: FabricId;
    readonly caseAuthenticatedTags?: CaseAuthenticatedTag[];
}
/**
 * Interfaces FabricAuthority with other components.
 */
export interface FabricAuthorityContext {
    ca: CertificateAuthority;
    fabrics: FabricManager;
}
export declare const DEFAULT_ADMIN_VENDOR_ID: VendorId;
/**
 * Manages fabrics controlled locally associated with a specific CA.
 */
export declare class FabricAuthority {
    #private;
    constructor({ ca, fabrics }: FabricAuthorityContext);
    get construction(): Construction<FabricAuthority>;
    close(): import("@matter/general").MaybePromise;
    /**
     * Access the certificate authority.
     */
    get ca(): CertificateAuthority;
    /**
     * Get the default fabric for this authority.
     * When rotateNoc is true (the default), the NOC key pair is rotated once per runtime when the fabric already exists.
     */
    defaultFabric(config: FabricAuthorityConfiguration, rotateNoc?: boolean): Promise<Fabric>;
    /**
     * List all controlled fabrics.
     */
    get fabrics(): Fabric[];
    /**
     * Emits after creating a new fabric.
     */
    get fabricAdded(): AsyncObservable<[Fabric], void>;
    /**
     * Determine whether a fabric belongs to this authority.
     */
    hasControlOf(fabric: Fabric): boolean;
    /**
     * Create new fabric under our control.
     */
    createFabric(config: FabricAuthorityConfiguration): Promise<Fabric>;
    static [Environmental.create](env: Environment): FabricAuthority;
}
//# sourceMappingURL=FabricAuthority.d.ts.map