import type Collection from "../../core/Collection.js";
import type SceneModification from "./SceneModification.js";
import type { ReadonlyArrayOrCollection } from "../../core/Collection.js";
import type { JSONSupportMixin } from "../../core/JSONSupport.js";
import type { SceneModificationProperties } from "./SceneModification.js";

export type SceneModificationsItems = ReadonlyArrayOrCollection<SceneModificationProperties>;

/**
 * A [SceneModification](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SceneModification.html) collection used to apply client-side
 * modifications to an
 * [IntegratedMeshLayer#modifications](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-IntegratedMeshLayer.html#modifications) or
 * [IntegratedMesh3DTilesLayer#modifications](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-IntegratedMesh3DTilesLayer.html#modifications).
 *
 * > [!WARNING]
 * >
 * > Scene modifications need to be in the same spatial reference as the layer they modify. Reprojection between WGS84
 * > and WebMercator will be done automatically. Reprojection of the geometry to other spatial references can be done
 * > with the [projectOperator](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-operators-projectOperator.html).
 *
 * @since 4.16
 * @see [Sample - Integrated mesh modification](https://developers.arcgis.com/javascript/latest/sample-code/layers-integratedmeshlayer-modification/)
 * @see [IntegratedMeshLayer#modifications](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-IntegratedMeshLayer.html#modifications)
 * @see [IntegratedMesh3DTilesLayer#modifications](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-IntegratedMesh3DTilesLayer.html#modifications)
 * @see [SceneModification](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SceneModification.html)
 */
export default class SceneModifications extends SceneModificationsSuperclass {
  constructor(properties?: SceneModificationsItems);
  /**
   * Creates a clone of this object.
   *
   * @returns A clone of the [SceneModifications](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SceneModifications.html) instance that
   *   invoked this method.
   * @see [Collection#slice()](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Collection.html#slice)
   * @example
   * // slides is a clone of the scene slides
   * let slides = scene.presentation.slides.clone();
   */
  clone(): SceneModifications;
}
declare const SceneModificationsSuperclass: typeof Collection<SceneModification> & typeof JSONSupportMixin