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/api-reference/esri-layers-mixins-TemporalLayer.html#timeInfo) defined with a valid
   * [trackIdField](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#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/api-reference/esri-layers-mixins-TemporalLayer.html#timeInfo) defined with a valid
   * [trackIdField](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#trackIdField).
   *
   * @beta
   * @since 4.32
   */
  get trackInfo(): TrackInfo | null | undefined;
  set trackInfo(value: TrackInfoProperties | null | undefined);
}