import type EsriBuildingSceneLayer from "@arcgis/core/layers/BuildingSceneLayer";
import Portal from "@arcgis/core/portal/Portal";
import { BuildingSceneSublayer } from "./BuildingSceneSublayer.js";
import type { Edges } from "./Edges.js";
import { LayerDefinition } from "./LayerDefinition.js";
import type { OperationalLayerBase } from "./OperationalLayer.js";
export declare namespace BuildingSceneLayer {
    /**
     * Default property values for the Esri JS API BuildingSceneLayer.
     *
     * @deprecated Use "json/*" modules instead.
     */
    const esriBuildingSceneLayerDefaults: {
        elevationInfo: {
            mode: string;
            offset: number;
            unit: string;
        };
        listMode: string;
        maxScale: number;
        minScale: number;
        opacity: number;
        visible: boolean;
    };
    /**
     * Converts an ArcGIS Portal JSON representation of a building scene layer
     * to its Esri JavaScript API representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param layerJson The layer JSON to convert.
     * @param portal The Portal to use for resolving portal item IDs.
     */
    function toEsriApiLayer(layerJson: BuildingSceneLayer, portal?: Portal): Promise<EsriBuildingSceneLayer>;
    /**
     * Applies an ArcGIS Portal JSON representation of a scene layer to its Esri
     * JavaScript API representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param layerJson The layer JSON to apply.
     * @param layer The layer object to apply it to.
     * @param portal The Portal to use for resolving portal item IDs.
     */
    function applyToEsriApiLayer(layerJson: BuildingSceneLayer, layer: EsriBuildingSceneLayer, portal?: Portal): Promise<void>;
    /**
     * Converts an Esri JavaScript API SceneLayer object to its ArcGIS Portal
     * JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param layer The layer object to convert.
     */
    function fromEsriApiBuildingSceneLayer(layer: EsriBuildingSceneLayer): BuildingSceneLayer;
}
/**
 * The BuildingSceneLayer is a layer type designed for on-demand streaming and
 * displaying building data.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface BuildingSceneLayer extends OperationalLayerBase {
    /**
     * Specifies the id of the currently active filter.
     */
    activeFilterId?: string;
    /**
     * A list of filters available for this layer. Overrides filters defined on
     * the service.
     */
    filters?: Filter[];
    /**
     * Optional string containing the item ID of the service if it's registered
     * on ArcGIS Online or your organization's portal.
     */
    itemId?: string;
    /**
     * Additional properties that can define an elevation offset for the layer.
     */
    layerDefinition?: LayerDefinition;
    /**
     * The type of layer.
     */
    layerType: "BuildingSceneLayer";
    /**
     * The URL to the service.
     */
    url?: string;
    /**
     * An array of objects specifying overrides for building scene layer
     * sublayers.
     */
    sublayers?: BuildingSceneSublayer[];
}
/**
 * Filter allows client applications to reduce the drawn elements of a building
 * to specific types and values. Filters on the webscene override the list of
 * existing filters on the service.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Filter {
    /**
     * Description of the filter.
     */
    description?: string;
    /**
     * Metadata about the authoring process for this filter.
     */
    filterAuthoringInfo?: FilterAuthoringInfoCheckbox;
    /**
     * Array of filter blocks defining the filter. A filter contains at least
     * one filter block.
     */
    filterBlocks: FilterBlock[];
    /**
     * Unique filter id (uuid). Either a new id to extend the list of filters,
     * or an existing id to override properties of an existing filter.
     */
    id?: string;
    /**
     * Name of the filter.
     */
    name?: string;
}
/**
 * Client UI with checkbox representation for each filter type and filter value.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FilterAuthoringInfoCheckbox {
    /**
     * Type of filter authoring info. Value of this property must be checkbox.
     */
    type: "checkbox";
    /**
     * Array of filter block authoring infos.
     */
    filterBlocks?: AuthoringInfoFilterBlock[];
}
/**
 * A filter block defines what elements will be filtered with a specific filter
 * mode. To ensure performance on client applications, it is not recommended to
 * declare multiple filter blocks with the same filter mode. Filter blocks are
 * contained in a filter for a building scene layer. Each filter includes at
 * least one filter block.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FilterBlock {
    /**
     * SQL expression to select features that belong to this filter block.
     */
    filterExpression?: string;
    /**
     * Filter mode defines how features are drawn. For example, the filter mode
     * of a filter can be solid or wire frame.
     */
    filterMode?: FilterMode;
    /**
     * Title of the filter block.
     */
    title?: string;
}
/**
 * Filter mode represents the way elements draw when participating in a filter
 * block.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type FilterMode = FilterModeSolid | FilterModeWireFrame;
/**
 * Draw elements of this filter block in solid mode. This mode does not change
 * the display of features.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FilterModeSolid {
    /**
     * Declares filter mode of type solid. Value of this property must be solid.
     */
    type: "solid";
}
/**
 * Draw elements of this filter block in wireframe mode. This mode draws only
 * the edges of the features with the specified edge style.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FilterModeWireFrame {
    /**
     * Declares filter mode of type wire frame. Value of this property must be
     * wireFrame.
     */
    type: "wireFrame";
    /**
     * A size in points by which to extend edges beyond their original end
     * points.
     */
    edges?: Edges;
}
/**
 * The filter authoring info object contains metadata about the authoring
 * process for creating a filter block object. This allows the authoring client
 * to save specific, overridable settings. The next time it is accessed via an
 * authoring client, their selections are remembered. Non-authoring clients can
 * ignore it.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface AuthoringInfoFilterBlock {
    /**
     * Array of defined filter types. Each filter type has an array of filter
     * values.
     */
    filterTypes?: AuthoringInfoFilterType[];
}
/**
 * The file authoring information for a filter, including the filter type and
 * its value settings.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface AuthoringInfoFilterType {
    /**
     * Represents the filter type name. Name is a unique identifier.
     */
    filterType?: string;
    /**
     * Array of filter values. Filter values are the attributes that can be
     * stored for individual fields in a layer.
     */
    filterValues?: string[];
}
