/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { FeatureSet, ValueModel } from "#model";
import { AccessControl } from "../AccessControl.js";
import { Schema } from "./Schema.js";
import { ValueSupervisor } from "./ValueSupervisor.js";
/**
 * A RootSupervisor is a {@link ValueSupervisor} that supervises a specific root {@link Schema}.  It acts as a factory
 * for {@link ValueSupervisor}s for sub-schemas of the root schema.
 *
 * You can produce a ValueSupervisor for any schema using this factory. However, there are specific customizations
 * controlled by the root schema:
 *
 * - Change eventing occur for root schema members.  In the case of a cluster this means you can monitor for changes on
 *   a per-attribute basis.
 *
 * - If the root schema defines a cluster, the cluster's featureMap and supportedFeatures affect conformance-based
 *   validation.
 */
export declare class RootSupervisor implements ValueSupervisor {
    #private;
    /**
     * Create a new supervisor.
     *
     * @param schema the {@link Schema} for the supervised data
     */
    constructor(schema: Schema);
    get owner(): RootSupervisor;
    get schema(): Schema;
    get access(): AccessControl;
    get validate(): ValueSupervisor.Validate | undefined;
    get manage(): ValueSupervisor.Manage;
    get patch(): ValueSupervisor.Patch;
    get cast(): ValueSupervisor.Cast;
    /**
     * The names of all members.
     */
    get memberNames(): Set<string>;
    /**
     * Names of fields configured as non-volatile.
     */
    get persistentNames(): Set<string>;
    /**
     * All available features defined in the schema.
     */
    get featureMap(): ValueModel<import("#model").ValueElement>;
    /**
     * Features supported by this implementation.
     */
    get supportedFeatures(): FeatureSet;
    /**
     * Obtain {@link ValueSupervisor} implementation for a specific schema.
     *
     * @param schema the model describing the record type
     * @returns the I/O implementation
     */
    get(schema: Schema): ValueSupervisor;
}
//# sourceMappingURL=RootSupervisor.d.ts.map