import type Accessor from "../../core/Accessor.js";
import type { IdentifiableMixin, IdentifiableMixinProperties } from "../../core/Identifiable.js";
import type { MultiOriginJSONSupportMixin } from "../../core/MultiOriginJSONSupport.js";

export interface BuildingSublayerProperties extends IdentifiableMixinProperties, Partial<Pick<BuildingSublayer, "opacity" | "title" | "visible">> {}

/**
 * BuildingSublayer is the base class for sublayers of a BuildingSceneLayer.
 * It can be either a [BuildingGroupSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/buildingSublayers/BuildingGroupSublayer/) which contains
 * nested BuildingSublayers or a [BuildingComponentSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/buildingSublayers/BuildingComponentSublayer/), which is a layer similar to
 * a 3DObject [SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) for one component of the building.
 *
 * @since 4.10
 * @see [Sample - BuildingSceneLayer with Slice widget](https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice/)
 * @see [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/)
 * @see [BuildingComponentSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/buildingSublayers/BuildingComponentSublayer/)
 * @see [BuildingGroupSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/buildingSublayers/BuildingGroupSublayer/)
 * @see [SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/)
 */
export default class BuildingSublayer extends BuildingSublayerSuperclass {
  constructor(properties?: BuildingSublayerProperties);
  /**
   * The sublayer's layer id as defined by the Scene Service.
   *
   * @default -1
   */
  get id(): number;
  /**
   * Indicates if this sublayer is empty. This property is only read from the service.
   * Empty sublayers are not loaded for rendering and applications can choose to hide
   * them in their UI.
   */
  get isEmpty(): boolean | null | undefined;
  /**
   * The modelName is a standard name for each sublayer. For example the sublayer
   * containing the doors in a building has the modelName "Doors". Use this
   * property to retrieve sublayers in a [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/).
   *
   * @example
   * // use modelName to identify a sublayer
   * const doorslayer = buildingSceneLayer.allSublayers.find(function(sublayer) {
   *   return sublayer.modelName === "Doors";
   * });
   */
  get modelName(): string | null | undefined;
  /**
   * Opacity of the sublayer.
   *
   * @default 1
   */
  accessor opacity: number;
  /**
   * The title of the sublayer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/)
   * and [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
   *
   * @default ""
   */
  accessor title: string | null | undefined;
  /**
   * Indicates if the sublayer is visible in the view.
   *
   * @default true
   */
  accessor visible: boolean;
}
declare const BuildingSublayerSuperclass: typeof Accessor & typeof MultiOriginJSONSupportMixin & typeof IdentifiableMixin