import { IFSFlagMetadata, SerializedFlagMetadata } from '../types';
import { VisitorDelegate } from '../visitor/VisitorDelegate';
import { IFSFlagCollection } from './IFSFlagCollection';
import { IFSFlag } from './IFSFlag';
/**
 * Represents a collection of flags.
 */
export declare class FSFlagCollection implements IFSFlagCollection {
    private _visitor?;
    private _keys;
    private _flags;
    /**
       * Creates a new instance of FSFlagCollection.
       * @param param - The parameter object.
       * @param param.visitor - The visitor delegate.
       * @param param.flags - The initial flags.
       */
    constructor(param: {
        visitor?: VisitorDelegate;
        flags?: Map<string, IFSFlag>;
    });
    /**
     * @inheritdoc
     */
    get size(): number;
    /**
     * @inheritdoc
     */
    get(key: string): IFSFlag;
    /**
     * @inheritdoc
     */
    has(key: string): boolean;
    /**
     * @inheritdoc
     */
    keys(): Set<string>;
    /**
     * @inheritdoc
     */
    [Symbol.iterator](): Iterator<[string, IFSFlag]>;
    /**
     * @inheritdoc
     */
    filter(predicate: (value: IFSFlag, key: string, collection: IFSFlagCollection) => boolean): IFSFlagCollection;
    /**
     * @inheritdoc
     */
    exposeAll(): Promise<void>;
    /**
     * @inheritdoc
     */
    getMetadata(): Map<string, IFSFlagMetadata>;
    /**
     * @inheritdoc
     */
    toJSON(): SerializedFlagMetadata[];
    forEach(callbackfn: (value: IFSFlag, key: string, collection: IFSFlagCollection) => void): void;
}
