import type BuildingComponentSublayer from "@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer";
import type BuildingGroupSublayer from "@arcgis/core/layers/buildingSublayers/BuildingGroupSublayer";
import type { FeatureSettings } from "../data/FeatureSettings.js";
import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities.js";
import type { Schema } from "../data/Schema.js";
import type { BuildingSceneSublayerJson } from "../json/BuildingSceneSublayerJson.js";
import type { GeometryType } from "../support/esri.js";
import type { BuildingSceneLayerExtension } from "./BuildingSceneLayerExtension.js";
import type { SublayerExtensionProperties, SublayerProperties } from "./_SublayerExtension.js";
import { SublayerExtension, SublayerSchema } from "./_SublayerExtension.js";
import { PopupTemplateFeatureSettings } from "./support/PopupTemplateFeatureSettings.js";
/**
 * Properties that can be specified for the `BuildingSublayer.sublayer`
 * property.
 */
export interface BuildingSublayerProperties extends BuildingSceneSublayerJson, Omit<SublayerProperties, "id"> {
}
/**
 * Properties that can be passed into the constructor for
 * {@link BuildingSublayerExtension}.
 */
export interface BuildingSublayerExtensionProperties extends SublayerExtensionProperties {
    /**
     * See {@link mapping/_SublayerExtension!SublayerExtension.sublayer}.
     */
    sublayer?: BuildingComponentSublayer | BuildingGroupSublayer | BuildingSublayerProperties;
    /**
     * See
     * {@link mapping/_SublayerExtension!SublayerExtension.sublayerExtensions}.
     */
    sublayerExtensions?: (SublayerExtension | BuildingSublayerExtensionProperties)[];
}
/**
 * Extends the capabilities of an Esri `BuildingSublayer` object.
 */
export declare abstract class BuildingSublayerExtension<TProperties extends BuildingSublayerExtensionProperties = BuildingSublayerExtensionProperties> extends SublayerExtension<TProperties> {
    get sublayer(): BuildingComponentSublayer | BuildingGroupSublayer;
    get layerExtension(): BuildingSceneLayerExtension;
    constructor(properties?: TProperties);
    /**
     * @inheritDoc
     */
    protected _applySublayerProperties(properties: BuildingSublayerProperties, sublayer: BuildingComponentSublayer | BuildingGroupSublayer): Promise<void>;
    /**
     * @inheritDoc
     */
    protected _serializeSublayer(sublayer: BuildingComponentSublayer | BuildingGroupSublayer): BuildingSublayerProperties;
    /**
     * @inheritDoc
     */
    protected _capabilities(): QuerySourceCapabilities;
    protected _createSchema(): Schema;
    protected _createFeatureSettings(): FeatureSettings;
}
/**
 * An implementation of SublayerSchema specific to BuildingSublayers.
 */
export declare class BuildingSublayerSchema extends SublayerSchema {
    get primaryKeyField(): string;
    set primaryKeyField(value: string);
    get geometryType(): GeometryType;
    set geometryType(value: GeometryType);
    protected _sublayerExtension: BuildingSublayerExtension;
}
/**
 * An implementation of FeatureSettings that mirrors the equivalent properties
 * on an Esri BuildingSublayer object.
 */
export declare class BuildingSublayerFeatureSettings extends PopupTemplateFeatureSettings {
    /**
     * The parent sublayer extension.
     */
    protected readonly _layerExtension: BuildingSublayerExtension;
}
