/*!
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//  Copyright (C) 2025 jeffy-g <hirotom1107@gmail.com>
//  Released under the MIT license
//  https://opensource.org/licenses/mit-license.php
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
/**
 * @file src/project.ts
 */
import type { TempoEvent } from "./midi-event.ts";
export type TClipSummary<T extends Record<string, any>> = {
  /**
   * ID assigned for use in UI etc.
   *
   * ```
   * "clip-" + crypto.randomUUID()
   * ```
   */
  id: string;
  color: string;
  /**
   * Disabled property for the clip.
   */
  disabled: boolean;
  clipName: string;
  trackName: string;
  annotations?: string;
} & T;
export type TTrackInfo<T extends Record<string, any>> = {
  id: string;
  name: string;
  color: string;
  annotations?: string;
  /**
   * ```
   * Record<"clipName", TMidiClipSummary>
   * ```
   */
  clips: Record<string, TClipSummary<T>>;
};
export type TParsedAbletonLiveSet<T extends Record<string, any>> = {
  /**
   * Ableton Live project name
   * Usually the als file name without the extension.
   */
  alsName: string;
  /**
   * ppq (ticks per quarter note)
   */
  ticksPerQuarter: number;
  /**
   * Tracks in the project.
   * NOTE: currently, this is a Midi tracks only.
   */
  tracks: TTrackInfo<T>[];
  /**
   * Tempo automation events.
   */
  tempoAutomation?: TempoEvent[];
};
