import type Layer from "@arcgis/core/layers/Layer";
import type TileLayer from "@arcgis/core/layers/TileLayer";
import type PortalItem from "@arcgis/core/portal/PortalItem";
import type { Schema } from "../data/Schema.js";
import type { TiledMapServiceLayerJson } from "../json/TiledMapServiceLayerJson.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { TileSublayerExtensionProperties, TileSublayerExtension } from "./TileSublayerExtension.js";
import type { LayerExtensionProperties, LayerProperties } from "./_LayerExtension.js";
import { LayerExtension } from "./_LayerExtension.js";
import type { LayerListSettings, LayerListSettingsProperties } from "./support/LayerListSettings.js";
/**
 * Properties that can be passed into the constructor for
 * {@link TileLayerExtension}.
 */
export interface TileLayerExtensionProperties extends LayerExtensionProperties {
    /**
     * The Esri TileLayer object being extended.
     */
    layer?: TileLayer | (TiledMapServiceLayerJson & TileLayerProperties);
}
/**
 * Properties that can be specified for the
 * {@link TileLayerExtensionProperties.layer} property.
 */
export type TileLayerProperties = LayerProperties & {
    /**
     * URL to an offline tile package for this layer. Not supported in the
     * TypeScript API.
     */
    $tilePackageUrl?: string;
};
/**
 * Extends the capabilities of an Esri TileLayer object.
 */
export declare class TileLayerExtension extends LayerExtension<TileLayerExtensionProperties> {
    get layer(): TileLayer;
    get supportsSublayers(): boolean;
    protected _createSublayerExtension(properties?: TileSublayerExtensionProperties): TileSublayerExtension;
    protected _applyLayerProperties(properties: LayerProperties, layer: Layer): Promise<void>;
    protected _createLayerListSettings(properties?: LayerListSettingsProperties): LayerListSettings;
    protected _getSerializableProperties(): PropertyDefs<TileLayerExtensionProperties>;
    /**
     * @inheritDoc
     */
    protected _isSupportedLayer(layer: Layer): boolean;
    protected _createSchema(): Schema;
    protected _initializeLayer(): Promise<void>;
    protected _onInitialize(): Promise<void>;
    protected _applyPortalItemProperties(portalItem: PortalItem): Promise<void>;
}
