import { TemporalMixinInterface } from "../../../elements/EFTemporal.js";
import { FocusContext } from "../../focusContext.js";
import { TrimChangeDetail } from "../TrimHandles.js";
import * as lit44 from "lit";
import { LitElement, PropertyValueMap, ReactiveController, TemplateResult, nothing } from "lit";

//#region src/gui/timeline/tracks/TrackItem.d.ts
declare class ElementTrackController implements ReactiveController {
  private host;
  private track;
  private lastDuration;
  private durationCheckFrame?;
  constructor(host: LitElement, track: TrackItem);
  remove(): void;
  hostDisconnected(): void;
  hostConnected(): void;
  private checkDuration;
  hostUpdated(): void;
}
declare const TrackItem_base: typeof LitElement;
declare class TrackItem extends TrackItem_base {
  static styles: lit44.CSSResult[];
  focusContext?: FocusContext;
  focusedElement?: HTMLElement | null;
  get isFocused(): boolean;
  /**
   * Get element type for styling and icons
   */
  protected getElementType(): "video" | "audio" | "image" | "text" | "timegroup" | "captions" | "unknown";
  /**
   * Get color for element type using shared theme utility
   */
  protected getElementTypeColor(): string;
  /**
   * @deprecated Use getElementTypeColor() instead
   */
  protected getElementTypeColorOld(): string;
  /**
   * Get icon for element type
   */
  protected getElementIcon(): TemplateResult | typeof nothing;
  /**
   * Format duration for display
   */
  protected formatDuration(ms: number): string;
  /**
   * Get tooltip text with element info
   */
  protected getTooltipText(): string;
  element: TemporalMixinInterface & LitElement;
  pixelsPerMs: number;
  enableTrim: boolean;
  hideSelectors?: string[];
  showSelectors?: string[];
  get gutterStyles(): {
    position: string;
    left: string;
    width: string;
  };
  get trimPortionStyles(): {
    width: string;
    left: string;
  };
  protected handleTrimChange(e: CustomEvent<TrimChangeDetail>): void;
  contents(): TemplateResult | typeof nothing;
  animations(): never[];
  renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
  render(): TemplateResult<1>;
  protected trackController?: ElementTrackController;
  update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-track-item": TrackItem;
  }
}
//#endregion
export { TrackItem };
//# sourceMappingURL=TrackItem.d.ts.map