import { Extension } from './Extension.js';
import { WorldTree } from '../tree/WorldTree.js';
import { type IViewer } from '../../IViewer.js';
import type { PropertyInfo } from '../filtering/PropertyManager.js';
/** TO DO: Should remove selectedObjects entirely*/
export type FilteringState = {
    selectedObjects?: string[];
    hiddenObjects?: string[];
    isolatedObjects?: string[];
    colorGroups?: {
        value: string;
        color: string;
        ids: string[];
    }[];
    userColorGroups?: {
        ids: string[];
        color: string;
    }[];
    activePropFilterKey?: string;
    passMin?: number | null;
    passMax?: number | null;
};
export declare class FilteringExtension extends Extension {
    WTI: WorldTree;
    private Renderer;
    private StateKey;
    private VisibilityState;
    private ColorStringFilterState;
    private ColorNumericFilterState;
    private UserspaceColorState;
    private CurrentFilteringState;
    get filteringState(): FilteringState;
    get enabled(): boolean;
    set enabled(value: boolean);
    constructor(viewer: IViewer);
    hideObjects(objectIds: string[], stateKey?: string | undefined, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    showObjects(objectIds: string[], stateKey?: string | undefined, includeDescendants?: boolean): FilteringState;
    isolateObjects(objectIds: string[], stateKey?: string | undefined, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    unIsolateObjects(objectIds: string[], stateKey?: string | undefined, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    private setVisibilityState;
    private visibilityWalk;
    setColorFilter(prop: PropertyInfo, ghost?: boolean): FilteringState;
    private setNumericColorFilter;
    private setStringColorFilter;
    removeColorFilter(): FilteringState;
    setUserObjectColors(groups: {
        objectIds: string[];
        color: string;
    }[]): FilteringState;
    removeUserObjectColors(): FilteringState;
    resetFilters(): FilteringState | null;
    private setFilters;
    private idCache;
    private getDescendantIds;
}
