import { Extension } from './core-extensions/Extension';
import { WorldTree } from '../tree/WorldTree';
import { IViewer } from '../../IViewer';
import { PropertyInfo } from '../filtering/PropertyManager';
export type FilteringState = {
    selectedObjects?: string[];
    hiddenObjects?: string[];
    isolatedObjects?: string[];
    colorGroups?: Record<string, 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;
    constructor(viewer: IViewer);
    hideObjects(objectIds: string[], stateKey?: string, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    showObjects(objectIds: string[], stateKey?: string, includeDescendants?: boolean): FilteringState;
    isolateObjects(objectIds: string[], stateKey?: string, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    unIsolateObjects(objectIds: string[], stateKey?: string, includeDescendants?: boolean, ghost?: boolean): FilteringState;
    private setVisibilityState;
    private visibilityWalk;
    private isolationWalk;
    setColorFilter(prop: PropertyInfo, ghost?: boolean): FilteringState;
    private setNumericColorFilter;
    private setStringColorFilter;
    removeColorFilter(): FilteringState;
    setUserObjectColors(groups: {
        objectIds: string[];
        color: string;
    }[]): FilteringState;
    removeUserObjectColors(): FilteringState;
    resetFilters(): FilteringState;
    private setFilters;
    private idCache;
    private getDescendantIds;
}
