import { type CSSProperties, type HTMLAttributes, type InputHTMLAttributes, type ReactNode, type Ref } from 'react';
import { type CssLength } from '../../../utils/css';
type VinylMusicPlayerControlCallback = (track: VinylMusicPlayerTrack, index: number) => void;
type ProgressInputProps = Omit, 'aria-label' | 'aria-valuetext' | 'className' | 'disabled' | 'id' | 'max' | 'min' | 'onChange' | 'step' | 'style' | 'type' | 'value'>;
export type VinylMusicPlayerTrack = {
id: string;
title: string;
artist: string;
artworkUrl: string;
artworkAlt?: string;
backgroundUrl?: string;
accent?: CSSProperties['background'];
duration?: number;
};
export type VinylMusicPlayerProps = Omit, 'children' | 'onChange'> & {
tracks: readonly VinylMusicPlayerTrack[];
activeTrackId?: string;
defaultActiveTrackId?: string;
onActiveTrackIdChange?: (trackId: string, track: VinylMusicPlayerTrack, index: number) => void;
playing?: boolean;
defaultPlaying?: boolean;
onPlayingChange?: (playing: boolean) => void;
repeat?: boolean;
defaultRepeat?: boolean;
onRepeatChange?: (repeat: boolean) => void;
progress?: number;
defaultProgress?: number;
onProgressChange?: (progress: number) => void;
currentTime?: number;
duration?: number;
formatTime?: (seconds: number) => string;
headerLabel?: ReactNode;
progressLabel?: string;
emptyLabel?: ReactNode;
disabled?: boolean;
animated?: boolean;
width?: CssLength;
height?: CssLength;
minWidth?: CssLength;
recordSize?: CssLength;
artworkSize?: CssLength;
vinylImageUrl?: string;
vinylCoverImageUrl?: string;
progressInputProps?: ProgressInputProps;
onNext?: VinylMusicPlayerControlCallback;
onPrevious?: VinylMusicPlayerControlCallback;
onShuffle?: VinylMusicPlayerControlCallback;
ref?: Ref;
};
export declare const VinylMusicPlayer: ({ tracks, activeTrackId, defaultActiveTrackId, onActiveTrackIdChange, playing, defaultPlaying, onPlayingChange, repeat, defaultRepeat, onRepeatChange, progress, defaultProgress, onProgressChange, currentTime, duration, formatTime: formatTimeProp, headerLabel, progressLabel, emptyLabel, disabled, animated, width, height, minWidth, recordSize, artworkSize, vinylImageUrl, vinylCoverImageUrl, progressInputProps, onNext, onPrevious, onShuffle, className, style, ref, "aria-label": ariaLabel, ...rootProps }: VinylMusicPlayerProps) => import("react/jsx-runtime").JSX.Element;
export {};