import { TraktApiParamsExtended, TraktApiExtended, TraktApiParamsPagination } from './trakt-client.model.js'; import { Any, EntityTypes } from './trakt-entity.model.js'; import { TraktEpisode } from './trakt-episode.model.js'; import { d as TraktList } from '../trakt-list.model-CeURmxQs.js'; import { TraktMovie } from './trakt-movie.model.js'; import { TraktSeason } from './trakt-season.model.js'; import { TraktShow } from './trakt-show.model.js'; import '@dvcol/base-http-client'; import '@dvcol/common-utils/common/models'; import '@dvcol/common-utils/http/fetch'; import '../api/trakt-api.filters.js'; import './trakt-id.model.js'; import './trakt-image.model.js'; import './trakt-people.model.js'; type BaseTraktWatchlistItem = { movie: TraktMovie; show: TraktShow; season: TraktSeason; episode: TraktEpisode; }; type TraktWatchlistItem = { type: T extends Any ? 'movie' | 'show' | 'season' | 'episode' : T; } & (T extends 'movie' ? Pick, 'movie'> : T extends 'show' ? Pick, 'show'> : T extends 'season' ? Pick, 'season' | 'show'> : T extends 'episode' ? Pick, 'episode' | 'show'> : Pick, 'movie'> | Pick, 'show'> | Pick, 'season' | 'show'> | Pick, 'episode' | 'show'>); type TraktWatchlist = { rank: number; id: number; /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ listed_at: string; notes: string; } & TraktWatchlistItem; type TraktWatchlistList = TraktList<'watchlist'>; type TraktWatchlistAdded = { added: { movies: number; shows: number; seasons: number; episodes: number; }; existing: { movies: number; shows: number; seasons: number; episodes: number; }; not_found: { movies: Pick[]; shows: Pick[]; seasons: Pick[]; episodes: Pick[]; }; list: { /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; item_count: number; }; }; type TraktWatchlistRemoved = { deleted: { movies: number; shows: number; seasons: number; episodes: number; }; not_found: { movies: Pick[]; shows: Pick[]; seasons: Pick[]; episodes: Pick[]; }; list: { /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; item_count: number; }; }; type TraktWatchlistGetQuery = { /** Filter for a specific item type */ type?: 'movies' | 'shows' | 'seasons' | 'episodes'; /** How to sort (only if type is also sent) */ sort?: 'rank' | 'added' | 'released' | 'title'; } & TraktApiParamsExtended & TraktApiParamsPagination; export type { TraktWatchlist, TraktWatchlistAdded, TraktWatchlistGetQuery, TraktWatchlistList, TraktWatchlistRemoved };