import type Layer from "@arcgis/core/layers/Layer";
import type WMSLayer from "@arcgis/core/layers/WMSLayer";
import type PortalItem from "@arcgis/core/portal/PortalItem";
import type { WMSLayerJson } from "../json/WMSLayerJson.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { WFSCapabilities } from "../support/esri.js";
import type { WMSSublayerExtensionCollection, WMSSublayerExtensionProperties, WMSSublayerExtension } from "./WMSSublayerExtension.js";
import type { LayerExtensionProperties, LayerProperties } from "./_LayerExtension.js";
import { LayerExtension } from "./_LayerExtension.js";
import { SublayerExtensionCollectionBase } from "./support/_SublayerExtensionCollection.js";
/**
 * Properties that can be passed into the constructor for
 * {@link mapping/WMSLayerExtension!WMSLayerExtension}.
 */
export interface WMSLayerExtensionProperties extends LayerExtensionProperties {
    /**
     * The Esri WMSLayer object being extended.
     */
    layer?: WMSLayer | (WMSLayerJson & LayerProperties);
    /**
     * See {@link mapping/_LayerExtension!LayerExtension.sublayerExtensions}.
     */
    sublayerExtensions?: (WMSSublayerExtension | WMSSublayerExtensionProperties)[];
    /**
     * See {@link mapping/WMSLayerExtension!WMSLayerExtension.wfsUrl}.
     */
    wfsUrl?: string;
}
/**
 * Extends the capabilities of an Esri `WMSLayer` object.
 */
export declare class WMSLayerExtension extends LayerExtension<WMSLayerExtensionProperties> {
    get layer(): WMSLayer;
    get sublayerExtensions(): WMSSublayerExtensionCollection;
    /**
     * The capabilities of a compatible WFS service to use for identify
     * operations. Call initializeWfs() to populate this.
     */
    get wfsCapabilities(): WFSCapabilities | undefined;
    get supportsSublayers(): boolean;
    get hasFeatures(): boolean;
    /**
     * The URL to a corresponding WFS to use for identifying and querying.
     */
    wfsUrl: string;
    private _deferredSublayerProperties;
    private _wfsCapabilities;
    private _initializeWfsPromise;
    initializeWfs(): Promise<void>;
    _createSublayerExtension(properties?: WMSSublayerExtensionProperties): WMSSublayerExtension;
    protected _onInitialize(): Promise<void>;
    /**
     * @inheritDoc
     */
    protected _isSupportedLayer(layer: Layer): boolean;
    protected _createSublayerExtensionCollection(): SublayerExtensionCollectionBase;
    protected _getSerializableProperties(): PropertyDefs<WMSLayerExtensionProperties>;
    protected _applyPortalItemProperties(portalItem: PortalItem): Promise<void>;
}
