import "./DisposePolyfill.js";
import { ECClassHierarchyInspector, ECSqlQueryExecutor } from "@itwin/presentation-shared";
import { createHiliteSetProvider, HiliteSet, HiliteSetProvider } from "./HiliteSetProvider.js";
import { SelectionStorage } from "./SelectionStorage.js";
/**
 * Props for creating an `IModelHiliteSetProvider` instance.
 * @public
 */
export interface IModelHiliteSetProviderProps {
    /** Selection storage to use for retrieving the hilite set. */
    selectionStorage: SelectionStorage;
    /** A callback that should return iModel access by iModel key. */
    imodelProvider: (imodelKey: string) => ECClassHierarchyInspector & ECSqlQueryExecutor;
    /** An optional hilite set provider factory. If not provided, defaults to `createHiliteSetProvider` from this package. */
    createHiliteSetProvider?: typeof createHiliteSetProvider;
}
/**
 * Defines return value of `createIModelHiliteSetProvider`.
 *
 * **Warning:** Used in public API as a return value. Not expected to be created / extended by package
 * consumers, may be supplemented with required attributes any time.
 *
 * @see `createIModelHiliteSetProvider`
 * @public
 */
export interface IModelHiliteSetProvider {
    /** Get the hilite set provider for the specified iModel. */
    getHiliteSetProvider(props: {
        /** iModel to get hilite set provider for */
        imodelKey: string;
    }): HiliteSetProvider;
    /** Get the hilite set iterator for active selection in the specified iModel. */
    getCurrentHiliteSet(props: {
        /** iModel to get hilite set for */
        imodelKey: string;
    }): AsyncIterableIterator<HiliteSet>;
    /**
     * Disposes the cache.
     */
    [Symbol.dispose]: () => void;
}
/**
 * Creates a hilite set provider that can efficiently get a hilite set for the "active" selection in an iModel.
 *
 * This specific implementation caches the hilite set for the current selection, so subsequent hilite set
 * requests for the same iModel, don't cost until selection changes.
 *
 * @public
 */
export declare function createIModelHiliteSetProvider(props: IModelHiliteSetProviderProps): IModelHiliteSetProvider;
//# sourceMappingURL=IModelHiliteSetProvider.d.ts.map