import type { IIncludable } from "./IIncludable";
export declare class IncludedItems {
    private itemIdsSet;
    private isInclusionSet;
    /**
     * Includes one item. Returns True if the included items list has changed after the operation.
     */
    include(itemId: string): boolean;
    /**
     * Includes the list of items. Returns True if the included items list has changed after the operation.
     */
    includeList(itemIds: string[]): boolean;
    /**
     * Excludes one item. Returns True if the included items list has changed after the operation.
     */
    exclude(itemId: string): boolean;
    /**
     * Excludes the list of items. Returns True if the included items list has changed after the operation.
     */
    excludeList(itemIds: string[]): boolean;
    /**
     * Tests if the item is included
     */
    testIsIncluded(itemId: string): boolean;
    /**
     * Returns included items, but filtering out items from the all items array
     */
    getIncludedItems(allItems: IIncludable[]): IIncludable[];
    /**
     * Returns included item ids. Useful for serialization.
     */
    getIncludedItemIds(): string[];
    /**
     * Returns excluded item ids. Useful for serialization.
     */
    getExcludedItemIds(): string[];
    /**
     * Clears and switches to exclusion set
     */
    includeAll(): void;
    /**
     * Clears and switches to inclusion set
     */
    excludeAll(): void;
    /**
     * Reconciles the items set with the all items array by removing items that are no longer present
     * @param allItems the array of all items
     */
    reconcile(allItems: IIncludable[]): void;
    /**
     * Returns the size of the item ids set. Mostly for testing
     */
    getItemIdsSetSize(): number;
    /**
     * Removes id. Is used when you need to remove item, for example remove an axis
     */
    removeId(id: string): void;
}
