import { Observable } from "rxjs";
import { ECClassHierarchyInspector, InstanceKey } from "@itwin/presentation-shared";
import { HierarchyFilteringPath } from "../HierarchyFiltering.js";
import { DefineHierarchyLevelProps, HierarchyLevelDefinition, InstanceNodesQueryDefinition } from "../imodel/IModelHierarchyDefinition.js";
import { RxjsHierarchyDefinition, RxjsNodeParser, RxjsNodePostProcessor, RxjsNodePreProcessor } from "../internal/RxjsHierarchyDefinition.js";
interface FilteringHierarchyDefinitionProps {
    imodelAccess: ECClassHierarchyInspector & {
        imodelKey: string;
    };
    source: RxjsHierarchyDefinition;
    nodeIdentifierPaths: HierarchyFilteringPath[];
    nodesParser?: RxjsNodeParser;
}
/** @internal */
export declare class FilteringHierarchyDefinition implements RxjsHierarchyDefinition {
    private _imodelAccess;
    private _source;
    private _nodeIdentifierPaths;
    private _nodesParser;
    constructor(props: FilteringHierarchyDefinitionProps);
    get preProcessNode(): RxjsNodePreProcessor;
    private shouldExpandGroupingNode;
    get postProcessNode(): RxjsNodePostProcessor;
    get parseNode(): RxjsNodeParser;
    defineHierarchyLevel(props: DefineHierarchyLevelProps): Observable<HierarchyLevelDefinition>;
}
/** @internal */
export declare const ECSQL_COLUMN_NAME_FilterECInstanceId = "FilterECInstanceId";
/** @internal */
export declare const ECSQL_COLUMN_NAME_FilterClassName = "FilterClassName";
/** @internal */
export declare function applyECInstanceIdsFilter(def: InstanceNodesQueryDefinition, filteredInstanceKeys: InstanceKey[]): InstanceNodesQueryDefinition;
/** @internal */
export declare function applyECInstanceIdsSelector(def: InstanceNodesQueryDefinition): InstanceNodesQueryDefinition;
export {};
//# sourceMappingURL=FilteringHierarchyDefinition.d.ts.map