/** @packageDocumentation
 * @module IModelConnection
 */
import { BeTimePoint, Id64Array, Id64String } from "@itwin/core-bentley";
import { IModelConnection } from "./IModelConnection";
import { TileTree, TileTreeOwner, TileTreeSupplier } from "./tile/internal";
/** Provides access to [[TileTree]]s associated with an [[IModelConnection]].
 * The tile trees are accessed indirectly via their corresponding [[TileTreeOwner]]s.
 * Loaded tile trees will be discarded after the iModel is closed, after a period of disuse, or when the contents of a [[GeometricModelState]] they represent
 * change.
 * @see [[IModelConnection.tiles]].
 * @public
 * @extensions
 */
export declare class Tiles implements Iterable<{
    supplier: TileTreeSupplier;
    id: any;
    owner: TileTreeOwner;
}> {
    private _iModel;
    private readonly _treesBySupplier;
    private _disposed;
    /** @internal */
    get isDisposed(): boolean;
    /** @internal */
    constructor(iModel: IModelConnection);
    /** @internal */
    dispose(): void;
    /** Intended strictly for tests.
     * @internal
     */
    reset(): void;
    /** @internal */
    purgeTileTrees(modelIds: Id64Array | undefined): Promise<void>;
    private getModelsAnimatedByScheduleScript;
    /** Update the [[Tile]]s for any [[TileTree]]s that use the [RenderSchedule.Script]($common) hosted by the specified
     * [RenderTimeline]($backend) or [DisplayStyle]($backend) element. This method should be invoked after
     * the host element is updated in the database with a new script, so that any [[Viewport]]s displaying tiles produced
     * based on the previous version of the script are updated to use the new version of the script.
     * @param scriptSourceElementId The Id of the RenderTimeline or DisplayStyle element that hosts the script.
     * @public
     */
    updateForScheduleScript(scriptSourceElementId: Id64String): Promise<void>;
    private purgeModelTrees;
    private getSpatialModels;
    /** Obtain the owner of a TileTree.
     * The `id` is unique within all tile trees associated with `supplier`; its specific structure is an implementation detail known only to the supplier.
     * A [[TileTreeReference]] uses this method to obtain the tile tree to which it refers.
     */
    getTileTreeOwner(id: any, supplier: TileTreeSupplier): TileTreeOwner;
    /** Remove tile tree matching the provided tile tree supplier/id
     * @internal
     */
    resetTileTreeOwner(id: any, supplier: TileTreeSupplier): void;
    /** Disposes of all [[TileTree]]s belonging to `supplier` and removes `supplier` from the set of known tile tree suppliers. */
    dropSupplier(supplier: TileTreeSupplier): void;
    /** Invokes a function on each extant TileTreeOwner. */
    forEachTreeOwner(func: (owner: TileTreeOwner) => void): void;
    /** Iterate over all of the TileTreeOwners. */
    [Symbol.iterator](): Iterator<{
        supplier: TileTreeSupplier;
        id: any;
        owner: TileTreeOwner;
    }>;
    /** Obtain the TileTreeOwners supplied by the specified supplier. */
    getTreeOwnersForSupplier(supplier: TileTreeSupplier): Iterable<{
        id: any;
        owner: TileTreeOwner;
    }>;
    /** Unload any tile trees which have not been drawn since at least the specified time, excluding any of the specified TileTrees.
     * @internal
     */
    purge(olderThan: BeTimePoint, exclude?: Set<TileTree>): void;
}
//# sourceMappingURL=Tiles.d.ts.map