import type Layer from "@arcgis/core/layers/Layer";
import type WFSLayer from "@arcgis/core/layers/WFSLayer.js";
import type PortalItem from "@arcgis/core/portal/PortalItem.js";
import type { RendererUnion } from "@arcgis/core/renderers/types.js";
import type { Feature } from "../data/Feature.js";
import type { FeatureSettings } from "../data/FeatureSettings.js";
import type { FeatureReadOptions } from "../data/FeatureSource.js";
import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities.js";
import type { Schema } from "../data/Schema.js";
import type { WFSLayerJson } from "../json/WFSLayerJson.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { LayerExtensionProperties, LayerProperties } from "./_LayerExtension.js";
import { LayerExtension } from "./_LayerExtension.js";
/**
 * Properties that can be passed into the constructor for
 * {@link WFSLayerExtension}.
 */
export interface WFSLayerExtensionProperties extends LayerExtensionProperties {
    /**
     * The Esri WFSLayer object being extended.
     */
    layer?: WFSLayer | (WFSLayerJson & LayerProperties);
    /**
     * See {@link WFSLayerExtension.enableClientSideData}.
     */
    enableClientSideData?: boolean;
}
/**
 * Extends the capabilities of an Esri WFSLayer object.
 */
export declare class WFSLayerExtension extends LayerExtension<WFSLayerExtensionProperties> {
    get renderer(): RendererUnion;
    get hasFeatures(): boolean;
    get layer(): WFSLayer;
    get canChangeLabels(): boolean;
    get canChangeRenderer(): boolean;
    get canChangeDefinitionExpression(): boolean;
    /**
     * Indicates that the layer's data should be available client-side, within
     * the graphics that render on the map. Client-side data allows for fast
     * identify operations to be performed, as no external queries are
     * necessary; however, this can cause the map's load time to increase. When
     * enabled, all fields that are configured in the layer's PopupTemplate will
     * load client-side. The default is false.
     */
    get enableClientSideData(): boolean;
    set enableClientSideData(isEnabled: boolean);
    private _enableClientSideData;
    protected _onInitialize(): Promise<void>;
    protected _applyPortalItemProperties(portalItem: PortalItem): void | Promise<void>;
    protected _capabilities(): QuerySourceCapabilities;
    protected _getSerializableProperties(): PropertyDefs<WFSLayerExtensionProperties>;
    /**
     * @inheritDoc
     */
    protected _isSupportedLayer(layer: Layer): boolean;
    protected _createFeatureSettings(): FeatureSettings;
    protected _createSchema(): Schema;
    protected _getFeatures(ids: string[], options?: FeatureReadOptions): AsyncIterable<Feature>;
    private _updateClientSideFields;
}
