import { Observable } from "rxjs";
import { Id64String } from "@itwin/core-bentley";
import { ECSqlQueryDef } from "@itwin/presentation-shared";
import { RxjsNodeParser } from "../internal/RxjsHierarchyDefinition.js";
import { SourceInstanceHierarchyNode } from "./IModelHierarchyNode.js";
import { LimitingECSqlQueryExecutor } from "./LimitingECSqlQueryExecutor.js";
import { NodeSelectClauseColumnNames } from "./NodeSelectQueryFactory.js";
interface ReadNodesProps {
    queryExecutor: LimitingECSqlQueryExecutor;
    query: ECSqlQueryDef;
    limit?: number | "unbounded";
    parser?: RxjsNodeParser;
}
/** @internal */
export declare function readNodes(props: ReadNodesProps): Observable<SourceInstanceHierarchyNode>;
/**
 * The interface should contain a member for each `NodeSelectClauseColumnNames` value.
 * @internal
 */
export interface RowDef {
    [NodeSelectClauseColumnNames.FullClassName]: string;
    [NodeSelectClauseColumnNames.ECInstanceId]: Id64String;
    [NodeSelectClauseColumnNames.DisplayLabel]: string;
    [NodeSelectClauseColumnNames.HasChildren]?: boolean;
    [NodeSelectClauseColumnNames.HideIfNoChildren]?: boolean;
    [NodeSelectClauseColumnNames.HideNodeInHierarchy]?: boolean;
    [NodeSelectClauseColumnNames.Grouping]?: string;
    [NodeSelectClauseColumnNames.ExtendedData]?: string;
    [NodeSelectClauseColumnNames.AutoExpand]?: boolean;
    [NodeSelectClauseColumnNames.SupportsFiltering]?: boolean;
}
/** @internal */
export declare function defaultNodesParser(row: {
    [columnName: string]: any;
}): SourceInstanceHierarchyNode;
export {};
//# sourceMappingURL=TreeNodesReader.d.ts.map