import type TrackInfo from "../support/TrackInfo.js";
import type { TrackInfoProperties } from "../support/TrackInfo.js";

export interface TrackableLayerProperties {
  /**
   * Allows you to render track data for a layer, including a track line, previous observations, and latest observations.
   * For `trackInfo` to work, the layer must have [timeInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/TemporalLayer/#timeInfo) defined with a valid
   * [trackIdField](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TimeInfo/#trackIdField).
   *
   * @beta
   * @since 4.32
   */
  trackInfo?: TrackInfoProperties | null;
}

/**
 * Mixin for layers that support track info.
 *
 * @since 4.32
 */
export abstract class TrackableLayer {
  constructor(...args: any[]);
  /**
   * Allows you to render track data for a layer, including a track line, previous observations, and latest observations.
   * For `trackInfo` to work, the layer must have [timeInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/TemporalLayer/#timeInfo) defined with a valid
   * [trackIdField](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TimeInfo/#trackIdField).
   *
   * @beta
   * @since 4.32
   */
  get trackInfo(): TrackInfo | null | undefined;
  set trackInfo(value: TrackInfoProperties | null | undefined);
}