import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";

export interface PlaybackInfoProperties extends Partial<Pick<PlaybackInfo, "aspectRatio" | "containerFormat" | "framerate" | "gop" | "klv">> {}

/**
 * The PlaybackInfo class provides information about the playback of a video.
 * This information includes the framerate, container format, group of pictures (GOP), aspect ratio, and key length value (KLV).
 *
 * @since 4.33
 * @see [VideoLayer.playbackInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/VideoLayer/#playbackInfo)
 */
export default class PlaybackInfo extends PlaybackInfoSuperclass {
  constructor(properties?: PlaybackInfoProperties);
  /**
   * Describes the relationship between the layers video data width and height.
   * The value is expressed as X:Y.
   */
  accessor aspectRatio: string | null | undefined;
  /**
   * The file format that holds and organizes video content including the video
   * data, audio data and metadata. The container acts as a wrapper that defines
   * details about how the video content is constructed.
   */
  accessor containerFormat: string | null | undefined;
  /**
   * The framerate of the video represents the number of frames per second of
   * the video layer media source.
   */
  accessor framerate: string | null | undefined;
  /**
   * The group of pictures (GOP) of the video. The GOP is a value representing
   * a count of successive frames within then coded video stream. Each coded
   * video stream consists of successive GOPs, from which the visible frames
   * are generated.
   */
  accessor gop: number | null | undefined;
  /**
   * Defines the key length value (KLV) data encoding standard applied to the
   * available metadata content within the stream.
   */
  accessor klv: Record<string, string> | null | undefined;
}
declare const PlaybackInfoSuperclass: typeof JSONSupport & typeof ClonableMixin