/** @packageDocumentation
 * @module Tiles
 */
import { ImageMapLayerSettings } from "@itwin/core-common";
import { ArcGISServiceMetadata, MapLayerAccessClient, MapLayerAccessToken, MapLayerImageryProvider, MapLayerImageryProviderStatus } from "../../../../tile/internal";
/** Base class for ArcGIS map-layer imagery providers.
 *
 * The initial purpose of this class is to offer shared methods
 * to query ArcGIS services and apply the appropriate security token.
 * @see [[ArcGISMapLayerImageryProvider]]
 * @internal
 */
export declare abstract class ArcGISImageryProvider extends MapLayerImageryProvider {
    protected _accessClient: MapLayerAccessClient | undefined;
    protected _lastAccessToken: MapLayerAccessToken | undefined;
    /** Flag indicating if access token should be added to request.
    * @note We assume a service to require access token for the entire viewing session.
    */
    protected _accessTokenRequired: boolean;
    protected _querySupported: boolean;
    get supportsMapFeatureInfo(): boolean;
    constructor(settings: ImageMapLayerSettings, usesCachedTiles: boolean);
    /** Updates the accessClient token state whenever the status of the provider change.
     * */
    protected onStatusUpdated(status: MapLayerImageryProviderStatus): void;
    /**
     * Fetch an ArcGIS service metadata, and returns its JSON representation.
     * This wrapper maintains token state and should be used instead of the the ArcGisUtilities version.
    */
    protected getServiceJson(): Promise<ArcGISServiceMetadata | undefined>;
    /**
     * Make a request to an ArcGIS service using the provided URL and init parameters.
     * @param url URL to query
     * @param options Custom settings to apply to the request.
     * Refer to fetch API for more details (https://developer.mozilla.org/en-US/docs/Web/API/fetch)
     */
    protected fetch(url: URL, options?: RequestInit): Promise<Response>;
}
//# sourceMappingURL=ArcGISImageryProvider.d.ts.map