import { EntityTypes, Short, Extended, Any } from './trakt-entity.model.js'; import { TraktApiIds } from './trakt-id.model.js'; import { TraktImage } from './trakt-image.model.js'; import { TraktCast } from './trakt-people.model.js'; import '@dvcol/common-utils/common/models'; import './trakt-client.model.js'; import '@dvcol/base-http-client'; import '@dvcol/common-utils/http/fetch'; import '../api/trakt-api.filters.js'; type TraktMovieShort = { title: string; year: number; ids: Pick; }; type TraktMovieExtended = TraktMovieShort & { tagline: string; overview: string; /** Calendar Date in ISO 8601 format (YYYY-MM-DD) */ released: string; /** In minutes */ runtime: number; /** 2 character country code (ISO 3166-1 alpha-2) */ country: string; /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; trailer: string; homepage: string; status: 'released' | 'in production' | 'post production' | 'planned' | 'rumored' | 'canceled'; rating: number; votes: number; comment_count: number; /** 2 character language code. (ISO 639-1) */ language: string; /** Array of 2 character language code. (ISO 639-1) */ available_translations: string[]; genres: string[]; certification: string; images: TraktImage; }; type TraktMovie = T extends Extended ? TraktMovieExtended : T extends Short ? TraktMovieShort : TraktMovieShort & Partial; type TraktMovieTrending = { watchers: number; movie: TraktMovie; }; type TraktMovieFavorited = { user_count: number; movie: TraktMovie; }; type TraktMoviePlayed = { watcher_count: number; play_count: number; collected_count: number; movie: TraktMovie; }; type TraktMovieAnticipated = { list_count: number; movie: TraktMovie; }; type TraktMovieBoxOffice = { revenue: number; movie: TraktMovie; }; type TraktMovieUpdate = { /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; movie: TraktMovie; }; type TraktMovieRelease = { /** 2 character country code (ISO 3166-1 alpha-2) */ country: string; certification: string; release_date: string; release_type: 'unknown' | 'premiere' | 'limited' | 'theatrical' | 'digital' | 'physical' | 'tv'; note: string; }; type TraktMovieCast = TraktCast; type TraktMovieStats = { watchers: number; plays: number; collectors: number; comments: number; lists: number; votes: number; favorited: number; }; export type { TraktMovie, TraktMovieAnticipated, TraktMovieBoxOffice, TraktMovieCast, TraktMovieExtended, TraktMovieFavorited, TraktMoviePlayed, TraktMovieRelease, TraktMovieShort, TraktMovieStats, TraktMovieTrending, TraktMovieUpdate };