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/references/core/layers/support/SceneModification/) collection used to apply client-side
 * modifications to an
 * [IntegratedMeshLayer.modifications](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/#modifications) or
 * [IntegratedMesh3DTilesLayer.modifications](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/#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/references/core/geometry/operators/projectOperator/).
 *
 * @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/references/core/layers/IntegratedMeshLayer/#modifications)
 * @see [IntegratedMesh3DTilesLayer.modifications](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/#modifications)
 * @see [SceneModification](https://developers.arcgis.com/javascript/latest/references/core/layers/support/SceneModification/)
 */
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/references/core/layers/support/SceneModifications/) instance that
   *   invoked this method.
   * @see [slice()](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/#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