import { ProcessedHierarchyNode } from "@itwin/presentation-hierarchies"; import type { GuidString, Id64String } from "@itwin/core-bentley"; import type { ClassGroupingNodeKey, DefineHierarchyLevelProps, GroupingHierarchyNode, HierarchyDefinition, HierarchyLevelDefinition, LimitingECSqlQueryExecutor } from "@itwin/presentation-hierarchies"; import type { ECClassHierarchyInspector, ECSchemaProvider, InstanceKey } from "@itwin/presentation-shared"; import type { NormalizedHierarchyFilteringPath } from "../common/Utils.js"; import type { ModelsTreeIdsCache } from "./internal/ModelsTreeIdsCache.js"; /** @beta */ export type ClassGroupingHierarchyNode = GroupingHierarchyNode & { key: ClassGroupingNodeKey; }; /** * Defines hierarchy configuration supported by `ModelsTree`. * @beta */ export interface ModelsTreeHierarchyConfiguration { /** Should element nodes be grouped by class. Defaults to `enable`. */ elementClassGrouping: "enable" | "enableWithCounts" | "disable"; /** Full class name of a `GeometricElement3d` sub-class that should be used to load element nodes. Defaults to `BisCore.GeometricElement3d`. */ elementClassSpecification: string; /** Should models without elements be shown. Defaults to `false`. */ showEmptyModels: boolean; /** Should the root Subject node be hidden. Defaults to `false`. */ hideRootSubject: boolean; /** Should hierarchy level be filterable. Defaults to `enable` */ hierarchyLevelFiltering: "enable" | "disable"; } /** @internal */ export declare const defaultHierarchyConfiguration: ModelsTreeHierarchyConfiguration; interface ModelsTreeDefinitionProps { imodelAccess: ECSchemaProvider & ECClassHierarchyInspector & LimitingECSqlQueryExecutor; idsCache: ModelsTreeIdsCache; hierarchyConfig: ModelsTreeHierarchyConfiguration; componentId?: GuidString; } /** @beta */ export interface ElementsGroupInfo { parent: { ids: Id64String[]; type: "element"; } | { ids: Id64String[]; modelIds: Id64String[]; type: "category"; }; groupingNode: ClassGroupingHierarchyNode; } interface ModelsTreeInstanceKeyPathsBaseProps { imodelAccess: ECClassHierarchyInspector & LimitingECSqlQueryExecutor; idsCache: ModelsTreeIdsCache; hierarchyConfig: ModelsTreeHierarchyConfiguration; limit?: number | "unbounded"; abortSignal?: AbortSignal; componentId?: string; } type ModelsTreeInstanceKeyPathsFromTargetItemsProps = { targetItems: Array; } & ModelsTreeInstanceKeyPathsBaseProps; type ModelsTreeInstanceKeyPathsFromInstanceLabelProps = { label: string; } & ModelsTreeInstanceKeyPathsBaseProps; export type ModelsTreeInstanceKeyPathsProps = ModelsTreeInstanceKeyPathsFromTargetItemsProps | ModelsTreeInstanceKeyPathsFromInstanceLabelProps; export declare namespace ModelsTreeInstanceKeyPathsProps { function isLabelProps(props: ModelsTreeInstanceKeyPathsProps): props is ModelsTreeInstanceKeyPathsFromInstanceLabelProps; } export declare class ModelsTreeDefinition implements HierarchyDefinition { #private; constructor(props: ModelsTreeDefinitionProps); postProcessNode(node: ProcessedHierarchyNode): Promise; defineHierarchyLevel(props: DefineHierarchyLevelProps): Promise; private createSubjectChildrenQuery; private createISubModeledElementChildrenQuery; private createGeometricModel3dChildrenQuery; private createElementChildrenCountSelector; private createSpatialCategoryChildrenQuery; private createGeometricElement3dChildrenQuery; static createInstanceKeyPaths(props: ModelsTreeInstanceKeyPathsProps): Promise; private supportsFiltering; private isSupported; } export {}; //# sourceMappingURL=ModelsTreeDefinition.d.ts.map