/** @packageDocumentation
 * @module Internal
 */
import "../../common/DisposePolyfill.js";
import { PropertyDescription } from "@itwin/appui-abstract";
import { IModelConnection } from "@itwin/core-frontend";
import { SelectOption } from "@itwin/itwinui-react";
import { InstanceKey, LabelDefinition, NavigationPropertyInfo, Ruleset } from "@itwin/presentation-common";
/** @internal */
export interface NavigationPropertyTarget {
    label: LabelDefinition;
    key: InstanceKey;
}
/** @internal */
export interface NavigationPropertyTargetsResult {
    options: NavigationPropertyTarget[];
    hasMore: boolean;
}
/** @internal */
export interface UseNavigationPropertyTargetsLoaderProps {
    imodel: IModelConnection;
    ruleset?: Ruleset;
    filterText?: string;
    initialSelectedTarget?: string;
}
/** @internal */
export declare function useNavigationPropertyTargetsLoader(props: UseNavigationPropertyTargetsLoaderProps): {
    selectOptions: SelectOption<string>[];
    loadedOptions: NavigationPropertyTarget[];
    isLoading: boolean;
};
/** @internal */
export declare function useNavigationPropertyTargetsRuleset(getNavigationPropertyInfo: (property: PropertyDescription) => Promise<NavigationPropertyInfo | undefined>, property: PropertyDescription): Ruleset | undefined;
/** @internal */
export declare class NavigationPropertyItemsLoader {
    private _beforeLoad;
    private _onItemsLoaded;
    private _loadItems;
    private _loadedItems;
    private _isLoading;
    private _disposed;
    constructor(_beforeLoad: () => void, _onItemsLoaded: (newItems: NavigationPropertyTarget[]) => void, _loadItems: (filterText?: string) => Promise<NavigationPropertyTarget[]>);
    [Symbol.dispose](): void;
    loadItems(filterText?: string): Promise<void>;
}
//# sourceMappingURL=UseNavigationPropertyTargetsLoader.d.ts.map