import React, { createContext, useContext, ReactNode } from 'react'; import { useTraktIntegration } from '../hooks/useTraktIntegration'; import { TraktUser, TraktWatchedItem, TraktWatchlistItem, TraktCollectionItem, TraktRatingItem, TraktPlaybackItem } from '../services/traktService'; interface TraktContextProps { isAuthenticated: boolean; isLoading: boolean; userProfile: TraktUser | null; watchedMovies: TraktWatchedItem[]; watchedShows: TraktWatchedItem[]; watchlistMovies: TraktWatchlistItem[]; watchlistShows: TraktWatchlistItem[]; collectionMovies: TraktCollectionItem[]; collectionShows: TraktCollectionItem[]; continueWatching: TraktPlaybackItem[]; ratedContent: TraktRatingItem[]; checkAuthStatus: () => Promise; refreshAuthStatus: () => Promise; loadWatchedItems: () => Promise; loadAllCollections: () => Promise; isMovieWatched: (imdbId: string) => Promise; isEpisodeWatched: (imdbId: string, season: number, episode: number) => Promise; markMovieAsWatched: (imdbId: string, watchedAt?: Date) => Promise; markEpisodeAsWatched: (imdbId: string, season: number, episode: number, watchedAt?: Date) => Promise; forceSyncTraktProgress?: () => Promise; } const TraktContext = createContext(undefined); export function TraktProvider({ children }: { children: ReactNode }) { const traktIntegration = useTraktIntegration(); return ( {children} ); } export function useTraktContext() { const context = useContext(TraktContext); if (context === undefined) { throw new Error('useTraktContext must be used within a TraktProvider'); } return context; }