/**
 * Exports publics de la feature tracks
 */

// Components
export { TrackList } from './components/TrackList';
export type { TrackListProps, TrackListColumn } from './components/TrackList';
export { TrackGrid } from './components/TrackGrid';
export type { TrackGridProps } from './components/TrackGrid';
export { TrackCard } from './components/TrackCard';
export type { TrackCardProps } from './components/TrackCard';
export { TrackListSkeleton } from './components/TrackListSkeleton';
export type { TrackListSkeletonProps } from './components/TrackListSkeleton';
export { TrackListEmpty } from './components/TrackListEmpty';
export type {
  TrackListEmptyProps,
  EmptyStateType,
} from './components/TrackListEmpty';
export { TrackListRow } from './components/TrackListRow';
export type { TrackListRowProps } from './components/TrackListRow';
export { TrackListPagination } from './components/TrackListPagination';
export type { TrackListPaginationProps } from './components/TrackListPagination';
export { TrackListSelectionActions } from './components/TrackListSelectionActions';
export type { TrackListSelectionActionsProps } from './components/TrackListSelectionActions';
export { TrackGridDensitySelector } from './components/TrackGridDensitySelector';
export type {
  TrackGridDensitySelectorProps,
  DensityMode,
} from './components/TrackGridDensitySelector';
export { ViewToggle } from './components/ViewToggle';
export type { ViewToggleProps } from './components/ViewToggle';
export { TrackFilters } from './components/TrackFilters';
export type { TrackFiltersProps } from './components/TrackFilters';
export { TrackSort } from './components/TrackSort';
export type { TrackSortProps } from './components/TrackSort';

// Hooks
export { useTrackList } from './hooks/useTrackList';
export type {
  UseTrackListOptions,
  UseTrackListReturn,
} from './hooks/useTrackList';
export { TrackListContainer } from './components/TrackListContainer';
export type { TrackListContainerProps } from './components/TrackListContainer';
export { useInfiniteScroll } from './hooks/useInfiniteScroll';
export type {
  UseInfiniteScrollOptions,
  UseInfiniteScrollReturn,
} from './hooks/useInfiniteScroll';

// Services
export {
  getTracks,
  getTrackById,
  getTracksByArtist,
  getTracksByAlbum,
  getTracksByGenre,
  searchTracks,
} from './services/trackListService';
export type {
  PaginationOptions,
  PaginatedResponse,
  GetTracksOptions,
  TracksResponse,
} from './services/trackListService';
export type { ApiError } from '@/schemas/apiSchemas';

// Types
export type {
  TrackListDisplayMode,
  TrackSortOption,
  SortOrder,
  TrackFilterOptions,
  TrackSortOptions,
  TrackListBaseProps,
  TrackListState,
} from './types';
