import type { RealityData } from "@itwin/core-common";
import { type AccessToken, type GuidString } from "@itwin/core-bentley";
import type { RealityDataAccessClient } from "./RealityDataClient";
/**
 * Extent of a reality data, delimited by southwest and northeast coordinates.
 */
export interface Extent {
    southWest: Point;
    northEast: Point;
}
/**
 * Point used to define an extent.
 */
export interface Point {
    latitude: number;
    longitude: number;
}
/**
 * Provides information regarding the acquisition, such as dates and acquirer used.
 */
export interface Acquisition {
    startDateTime: Date;
    endDateTime?: Date;
    acquirer?: string;
}
/** RealityData
 * This class implements a Reality Data instance.
 * Data is accessed directly through methods of the reality data instance.
 * Access to the data required a properly entitled token though the access to the blob is controlled through
 * an Azure blob URL, the token may be required to obtain this Azure blob URL or refresh it.
 * The Azure blob URL is considered valid for an hour and is refreshed after 50 minutes.
 * In addition to the reality data properties, and Azure blob URL and internal states, a reality data also contains
 * the identification of the iTwin to be used for access permissions and
 * may contain a RealityDataClient to obtain the specialization to communicate with Reality Management API (to obtain the Azure blob URL).
 * @beta
 */
export declare class ITwinRealityData implements RealityData {
    id: GuidString;
    displayName?: string;
    dataset?: string;
    group?: string;
    dataCenterLocation?: string;
    description?: string;
    rootDocument?: string;
    tags?: string[];
    acquisition?: Acquisition;
    size?: number;
    authoring?: boolean;
    classification?: string;
    type?: string;
    extent?: Extent;
    /** @deprecated in 1.0.1 not used in Reality Management API. Will be removed in next major update.*/
    accessControl?: string;
    modifiedDateTime?: Date;
    lastAccessedDateTime?: Date;
    createdDateTime?: Date;
    /** Link to client to fetch the blob url */
    client: undefined | RealityDataAccessClient;
    /** The GUID identifier of the iTwin used when using the client. */
    iTwinId: GuidString;
    /** Cache parameters for reality data access. Contains the blob url, the timestamp to refresh (every 50 minutes) the url and the root document path. */
    private _containerCache;
    /**
     * Creates an instance of RealityData.
     * @beta
     */
    constructor(client: RealityDataAccessClient, realityData?: any | undefined, iTwinId?: any | undefined);
    /**
       * Gets string url to fetch blob data from. Access is read-only.
       * @param accessToken The client request context.
       * @param blobPath name or path of tile
       * @param writeAccess Optional boolean indicating if write access is requested. Default is false for read-only access. The realitydata:modify scope is required to grant the "write" access.
       * @returns string url for blob data
       * @beta
       */
    getBlobUrl(accessToken: AccessToken, blobPath: string, writeAccess?: boolean): Promise<URL>;
    /**
     * Try to use authorizationClient in RealityDataClientOptions to get the access token
     * otherwise, will return the input token
     * This is a workaround to support different authorization client for the reality data client and iTwin-core.
     */
    private resolveAccessToken;
    /**
       * Gets a tile access url URL object
       * @param accessToken The client request context.
       * @param writeAccess Optional boolean indicating if write access is requested. Default is false for read-only access.
       * @returns app URL object for blob url
       * @beta
       */
    private getContainerUrl;
}
//# sourceMappingURL=RealityData.d.ts.map