/** @packageDocumentation
 * @module RpcInterface
 */
import type { TransferConfig } from "@itwin/object-storage-core/lib/common";
import { Id64Array } from "@itwin/core-bentley";
import { IModelRpcProps } from "../IModel";
import { RpcInterface } from "../RpcInterface";
import { ElementGraphicsRequestProps } from "../tile/ElementGraphics";
import { IModelTileTreeProps, TileContentIdentifier, TileContentSource, TileVersionInfo } from "../TileProps";
/** @public */
export declare abstract class IModelTileRpcInterface extends RpcInterface {
    static getClient(): IModelTileRpcInterface;
    /** The immutable name of the interface. */
    static readonly interfaceName = "IModelTileRpcInterface";
    /** The semantic version of the interface. */
    static interfaceVersion: string;
    /** Get storage config required to download tiles from the tile cache.
     * @returns undefined if the backend does not support caching. In that case, tiles must be requested using [[generateTileContent]].
     * @beta
     */
    getTileCacheConfig(_tokenProps: IModelRpcProps): Promise<TransferConfig | undefined>;
    /** @internal */
    requestTileTreeProps(_tokenProps: IModelRpcProps, _id: string): Promise<IModelTileTreeProps>;
    /** Ask the backend to generate content for the specified tile. This function, unlike the deprecated `requestTileContent`, does not check the cloud storage tile cache -
     * Use `CloudStorageTileCache.retrieve` for that.
     * @returns TileContentSource - if Backend, use retrieveTileContent. If ExternalCache, use TileAdmin.requestCachedTileContent
     * @internal
     */
    generateTileContent(_rpcProps: IModelRpcProps, _treeId: string, _contentId: string, _guid: string | undefined): Promise<TileContentSource>;
    /** Retrieves tile content from the backend once it's generated by generateTileContent.
     *  @internal
     */
    retrieveTileContent(_rpcProps: IModelRpcProps, _key: TileContentIdentifier): Promise<Uint8Array>;
    /** @internal */
    queryVersionInfo(): Promise<TileVersionInfo>;
    /** This is a temporary workaround for folks developing authoring applications, to be removed when proper support for such applications is introduced.
     * Given a set of model Ids, it purges any associated tile tree state on the back-end so that the next request for the tile tree or content will recreate that state.
     * Invoked after a modification is made to the model(s).
     * If no array of model Ids is supplied, it purges *all* tile trees, which can be quite inefficient.
     * @internal
     */
    purgeTileTrees(_tokenProps: IModelRpcProps, _modelIds: Id64Array | undefined): Promise<void>;
    /** Requests graphics for a single element in "iMdl" format.
     * @returns graphics in iMdl format, or `undefined` if the element's geometry produced no graphics or the request was canceled before completion.
     * @throws IModelError on bad request (nonexistent element, duplicate request Id, etc).
     * @internal
     */
    requestElementGraphics(_rpcProps: IModelRpcProps, _request: ElementGraphicsRequestProps): Promise<Uint8Array | undefined>;
}
//# sourceMappingURL=IModelTileRpcInterface.d.ts.map