/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ValueModel } from "../models/index.js";
/**
 * A "feature set" is a set of features for a cluster.  The names of features present appear in this set.
 *
 * TODO - Feature metadata is a bit messy and needs a refactor to consolidate available/supported and names/codes
 */
export declare class FeatureSet extends Set<FeatureSet.Flag> {
    /**
     * Create a new feature set from an iterable that returns active names or from an object of the form { [featureName:
     * string]: true }
     */
    constructor(definition?: FeatureSet.Definition);
    /**
     * Access features as an array of feature names.
     */
    get array(): string[];
    /**
     * Access features as an object mapping feature name -> true.
     */
    get record(): {
        [k: string]: boolean;
    };
    /**
     * Determine if I am identical to another set.
     */
    is(other?: FeatureSet): boolean;
    map<T>(fn: (name: FeatureSet.Flag) => T): T[];
}
export declare namespace FeatureSet {
    type Flag = string;
    type Flags = Iterable<FeatureSet.Flag>;
    type Definition = Flags | {
        [name: string]: boolean | undefined;
    };
    /**
     * Normalize the feature map and list of supported feature names into sets of "all" and "supported" features by
     * abbreviation.
     *
     * The input feature set may reference features by short name ("LT") or long name ("lighting").  Name match is case
     * insensitive.
     */
    function normalize(featureMap: ValueModel, supportedFeatures?: FeatureSet): {
        featuresAvailable: FeatureSet;
        featuresSupported: FeatureSet;
    };
}
//# sourceMappingURL=FeatureSet.d.ts.map