import type Collection from "@arcgis/core/core/Collection";
import type BuildingComponentSublayer from "@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer";
import type Field from "@arcgis/core/layers/support/Field";
import type { RendererUnion } from "@arcgis/core/renderers/types.js";
import type { FeatureSettings } from "../data/FeatureSettings.js";
import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities.js";
import type { Schema } from "../data/Schema.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { GeometryType, SublayerLike } from "../support/esri.js";
import type { BuildingSublayerExtensionProperties, BuildingSublayerProperties } from "./BuildingSublayerExtension.js";
import { BuildingSublayerExtension, BuildingSublayerSchema } from "./BuildingSublayerExtension.js";
import type { LayerListSettings, LayerListSettingsProperties } from "./support/LayerListSettings.js";
/**
 * Properties that can be passed into the constructor for
 * {@link BuildingComponentSublayerExtension}.
 */
export interface BuildingComponentSublayerExtensionProperties extends BuildingSublayerExtensionProperties {
    /**
     * See {@link BuildingComponentSublayerExtension.enableClientSideData}.
     */
    enableClientSideData?: boolean;
}
/**
 * Extends the capabilities of an Esri `BuildingComponentSublayer` object.
 */
export declare class BuildingComponentSublayerExtension extends BuildingSublayerExtension<BuildingComponentSublayerExtensionProperties> {
    private _enableClientSideData;
    private _capabilitiesField;
    constructor(properties?: BuildingComponentSublayerExtensionProperties);
    /**
     * 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);
    get renderer(): RendererUnion | undefined;
    get sublayer(): BuildingComponentSublayer;
    get hasFeatures(): boolean;
    get canChangeDefinitionExpression(): boolean;
    /**
     * @inheritDoc
     */
    protected _createSublayer(sublayerProperties: BuildingSublayerProperties): Promise<BuildingComponentSublayer>;
    /**
     * @inheritDoc
     */
    protected _isSupportedSublayer(sublayer: SublayerLike): boolean;
    protected _createSchema(): Schema;
    protected _getSerializableProperties(): PropertyDefs<BuildingComponentSublayerExtensionProperties>;
    protected _capabilities(): QuerySourceCapabilities;
    protected _onInitialize(): Promise<void>;
    protected _postInitialize(): Promise<void>;
    protected _createLayerListSettings(properties?: LayerListSettingsProperties): LayerListSettings;
    protected _watchSublayerProperties(): void;
    protected _createFeatureSettings(): FeatureSettings;
    private _updateClientSideFields;
}
/**
 * An implementation of Schema that directly mirrors the equivalent properties
 * on BuildingComponentSublayer.
 */
export declare class BuildingComponentSublayerSchema extends BuildingSublayerSchema {
    protected _sublayerExtension: BuildingComponentSublayerExtension;
    private readonly _fieldCollection;
    constructor(layerExtension: BuildingComponentSublayerExtension);
    get primaryKeyField(): string;
    set primaryKeyField(value: string);
    get geometryType(): GeometryType;
    set geometryType(value: GeometryType);
    /**
     * Creates the backing collection for fields.
     */
    protected _createFieldCollection(): Collection<Field>;
}
