import { AxiosInstance } from "axios"; /* eslint-disable no-unused-vars */ type TrendingTimeSpan = "week" | "day"; type Language = "aa" | "hy" | "or" | "ab" | "hz" | "os" | "af" | "id" | "pa" | "ak" | "ig" | "pl" | "am" | "ii" | "ps" | "an" | "ik" | "pt" | "ar" | "io" | "qu" | "as" | "is" | "rm" | "av" | "it" | "rn" | "ay" | "iu" | "ro" | "az" | "ja" | "ru" | "ba" | "jv" | "rw" | "be" | "ka" | "sa" | "bg" | "kg" | "sc" | "bh" | "ki" | "sd" | "bi" | "kj" | "se" | "bm" | "kk" | "sg" | "bn" | "kl" | "si" | "bo" | "km" | "sk" | "br" | "kn" | "sl" | "bs" | "ko" | "sm" | "ca" | "kr" | "sn" | "ce" | "ks" | "so" | "ch" | "ku" | "sq" | "co" | "kv" | "sr" | "cr" | "kw" | "ss" | "cs" | "ky" | "st" | "cv" | "lb" | "su" | "cy" | "lg" | "sv" | "da" | "li" | "sw" | "de" | "ln" | "ta" | "dv" | "lo" | "te" | "dz" | "lt" | "tg" | "ee" | "lu" | "th" | "el" | "lv" | "ti" | "en" | "mg" | "tk" | "es" | "mh" | "tl" | "et" | "mi" | "tn" | "eu" | "mk" | "to" | "fa" | "ml" | "tr" | "ff" | "mn" | "ts" | "fi" | "mr" | "tt" | "fj" | "ms" | "tw" | "fo" | "mt" | "ty" | "fr" | "my" | "ug" | "fy" | "na" | "uk" | "ga" | "nb" | "ur" | "gd" | "nd" | "uz" | "gl" | "ne" | "ve" | "gn" | "ng" | "vi" | "gu" | "nl" | "wa" | "gv" | "nn" | "wo" | "ha" | "no" | "xh" | "he" | "nr" | "yi" | "hi" | "nv" | "yo" | "ho" | "ny" | "za" | "hr" | "oc" | "zh" | "ht" | "oj" | "zu" | "hu" | "om"; // eslint-disable-next-line no-shadow declare enum Country { Afghanistan = "AF", AlandIslands = "AX", Albania = "AL", Algeria = "DZ", AmericanSamoa = "AS", Andorra = "AD", Angola = "AO", Anguilla = "AI", Antarctica = "AQ", AntiguaAndBarbuda = "AG", Argentina = "AR", Armenia = "AM", Aruba = "AW", Australia = "AU", Austria = "AT", Azerbaijan = "AZ", Bahamas = "BS", Bahrain = "BH", Bangladesh = "BD", Barbados = "BB", Belarus = "BY", Belgium = "BE", Belize = "BZ", Benin = "BJ", Bermuda = "BM", Bhutan = "BT", Bolivia = "BO", BonaireSintEustatiusSaba = "BQ", BosniaAndHerzegovina = "BA", Botswana = "BW", BouvetIsland = "BV", Brazil = "BR", BritishIndianOceanTerritory = "IO", BruneiDarussalam = "BN", Bulgaria = "BG", BurkinaFaso = "BF", Burundi = "BI", Cambodia = "KH", Cameroon = "CM", Canada = "CA", CapeVerde = "CV", CaymanIslands = "KY", CentralAfricanRepublic = "CF", Chad = "TD", Chile = "CL", China = "CN", ChristmasIsland = "CX", CocosKeelingIslands = "CC", Colombia = "CO", Comoros = "KM", Congo = "CG", CongoDemocraticRepublic = "CD", CookIslands = "CK", CostaRica = "CR", CoteDIvoire = "CI", Croatia = "HR", Cuba = "CU", CuraƧao = "CW", Cyprus = "CY", CzechRepublic = "CZ", Denmark = "DK", Djibouti = "DJ", Dominica = "DM", DominicanRepublic = "DO", Ecuador = "EC", Egypt = "EG", ElSalvador = "SV", EquatorialGuinea = "GQ", Eritrea = "ER", Estonia = "EE", Ethiopia = "ET", FalklandIslands = "FK", FaroeIslands = "FO", Fiji = "FJ", Finland = "FI", France = "FR", FrenchGuiana = "GF", FrenchPolynesia = "PF", FrenchSouthernTerritories = "TF", Gabon = "GA", Gambia = "GM", Georgia = "GE", Germany = "DE", Ghana = "GH", Gibraltar = "GI", Greece = "GR", Greenland = "GL", Grenada = "GD", Guadeloupe = "GP", Guam = "GU", Guatemala = "GT", Guernsey = "GG", Guinea = "GN", GuineaBissau = "GW", Guyana = "GY", Haiti = "HT", HeardIslandMcdonaldIslands = "HM", HolySeeVaticanCityState = "VA", Honduras = "HN", HongKong = "HK", Hungary = "HU", Iceland = "IS", India = "IN", Indonesia = "ID", Iran = "IR", Iraq = "IQ", Ireland = "IE", IsleOfMan = "IM", Israel = "IL", Italy = "IT", Jamaica = "JM", Japan = "JP", Jersey = "JE", Jordan = "JO", Kazakhstan = "KZ", Kenya = "KE", Kiribati = "KI", Korea = "KR", KoreaDemocraticPeoplesRepublic = "KP", Kuwait = "KW", Kyrgyzstan = "KG", LaoPeoplesDemocraticRepublic = "LA", Latvia = "LV", Lebanon = "LB", Lesotho = "LS", Liberia = "LR", LibyanArabJamahiriya = "LY", Liechtenstein = "LI", Lithuania = "LT", Luxembourg = "LU", Macao = "MO", Macedonia = "MK", Madagascar = "MG", Malawi = "MW", Malaysia = "MY", Maldives = "MV", Mali = "ML", Malta = "MT", MarshallIslands = "MH", Martinique = "MQ", Mauritania = "MR", Mauritius = "MU", Mayotte = "YT", Mexico = "MX", Micronesia = "FM", Moldova = "MD", Monaco = "MC", Mongolia = "MN", Montenegro = "ME", Montserrat = "MS", Morocco = "MA", Mozambique = "MZ", Myanmar = "MM", Namibia = "NA", Nauru = "NR", Nepal = "NP", Netherlands = "NL", NewCaledonia = "NC", NewZealand = "NZ", Nicaragua = "NI", Niger = "NE", Nigeria = "NG", Niue = "NU", NorfolkIsland = "NF", NorthernMarianaIslands = "MP", Norway = "NO", Oman = "OM", Pakistan = "PK", Palau = "PW", PalestinianTerritory = "PS", Panama = "PA", PapuaNewGuinea = "PG", Paraguay = "PY", Peru = "PE", Philippines = "PH", Pitcairn = "PN", Poland = "PL", Portugal = "PT", PuertoRico = "PR", Qatar = "QA", Reunion = "RE", Romania = "RO", RussianFederation = "RU", Rwanda = "RW", SaintBarthelemy = "BL", SaintHelena = "SH", SaintKittsAndNevis = "KN", SaintLucia = "LC", SaintMartin = "MF", SaintPierreAndMiquelon = "PM", SaintVincentAndGrenadines = "VC", Samoa = "WS", SanMarino = "SM", SaoTomeAndPrincipe = "ST", SaudiArabia = "SA", Senegal = "SN", Serbia = "RS", Seychelles = "SC", SierraLeone = "SL", Singapore = "SG", SintMaarten = "SX", Slovakia = "SK", Slovenia = "SI", SolomonIslands = "SB", Somalia = "SO", SouthAfrica = "ZA", SouthGeorgiaAndSandwichIsl = "GS", SouthSudan = "SS", Spain = "ES", SriLanka = "LK", Sudan = "SD", Suriname = "SR", SvalbardAndJanMayen = "SJ", Swaziland = "SZ", Sweden = "SE", Switzerland = "CH", SyrianArabRepublic = "SY", Taiwan = "TW", Tajikistan = "TJ", Tanzania = "TZ", Thailand = "TH", TimorLeste = "TL", Togo = "TG", Tokelau = "TK", Tonga = "TO", TrinidadAndTobago = "TT", Tunisia = "TN", Turkey = "TR", Turkmenistan = "TM", TurksAndCaicosIslands = "TC", Tuvalu = "TV", Uganda = "UG", Ukraine = "UA", UnitedArabEmirates = "AE", UnitedKingdom = "GB", UnitedStates = "US", UnitedStatesOutlyingIslands = "UM", Uruguay = "UY", Uzbekistan = "UZ", Vanuatu = "VU", Venezuela = "VE", Vietnam = "VN", VirginIslandsBritish = "VG", VirginIslandsUS = "VI", WallisAndFutuna = "WF", WesternSahara = "EH", Yemen = "YE", Zambia = "ZM", Zimbabwe = "ZW" } // thank you kyranjamie // thank you kyranjamie interface KeywordResult { id: number; results: { id: number; name: string; }[]; } interface List { description?: string; favorite_count: number; id: number; item_count: number; iso_639_1: Language; list_type: string; name?: string; poster_path?: string; } interface Response { status_code: number; status_message: string; } interface GenericListResult { total_pages: number; total_results: number; page: number; results: T[]; } interface Image { aspect_ration: number; file_path: string; height: number; iso_639_1: Language | null; vote_average: number; vote_count: number; width: number; } interface Author { name: string; username: string; avatar_path: string | null; rating: number | null; } interface Person { adult: boolean; gender: number | null; id: number; known_for_department: string; name: string; original_name: string; popularity: number; profile_path: string | null; credit_id: number; } interface Cast extends Person { cast_id: number; character: string; order: number; } interface Crew extends Person { department: string; job: string; } interface Video { iso_639_1: Language; iso_3166_1: Country; name: string; key: string; site: string; size: number; type: string; official: boolean; published_at: Date; id: string; } interface Genre { id: number; name: string; } interface ProductionCountry { iso_3166_1: Country; name: string; } interface ProductionCompany { name: string; id: number; logo_path: string | null; origin_country: Country; } interface SpokenLanguage { english_name: string; iso_639_1: Language; name: string; } type MovieStatus = "Rumored" | "Planned" | "In Production" | "Post Production" | "Released" | "Canceled" | "Unknown"; type AppendToResponseMovie = "account_states" | "alternative_titles" | "changes" | "credits" | "external_ids" | "images" | "keywords" | "lists" | "recommendations" | "release_dates" | "reviews" | "similar" | "translations" | "videos"; interface SearchMovieInput { query: string; page?: number; include_adult?: boolean; region?: string; year?: number; primary_release_year?: number; } interface NowPlayingMovieResult { page: number; total_pages: number; total_results: number; results: Movie[]; dates: { maximum: Date; minimum: Date; }; } interface AlternativeTitlesInput { movieId: number; country?: Country; } interface AlternativeTitlesResult { id: number; titles: { iso_3166_1: Country; title: string; type: string; }[]; } interface MoviePageInput { movieId: number; page?: number; } interface ChangesInput extends MoviePageInput { start_date?: Date; end_date?: Date; } interface ChangesResult { changes: { key: string; items: { id: string; action: string; time: Date; iso_639_1: Language; value: string; original_value: string; }[]; }[]; } interface ExternalIdsResult { imdb_id?: string; facebook_id?: string; instagram_id?: string; twitter_id?: string; id?: number; } interface ListResult { id: number; page: number; total_pages: number; total_results: number; results: List[]; } interface ReleaseDateResults { id: number; results: { iso_3166_1: Country; release_dates: { certification: string; iso_639_1: Language; release_date: Date; type: number; note: string; }[]; }[]; } interface Translation { iso_3166_1: Country; iso_639_1: Language; name: string; english_name: string; data: { title: string; overview: string; homepage: string; }; } interface TranslationResults { id: number; translations: Translation[]; } interface VideoResults { id: number; results: Video[]; } interface WatchProviderProvider { display_priority: number; logo_path: string; provider_id: number; provider_name: string; } interface WatchProvidersResult { id: number; results: { AR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; AT: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; AU: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; BE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; BR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; CA: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; CH: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; CL: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; CO: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; CZ: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; DE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; DK: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; EC: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; EE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; ES: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; FI: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; FR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; GB: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; GR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; HU: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; ID: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; IE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; IN: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; IT: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; JP: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; KR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; LT: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; LV: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; MX: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; MY: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; NL: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; NO: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; NZ: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; PE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; PH: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; PL: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; PT: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; RO: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; RU: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; SE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; SG: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; TH: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; TR: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; US: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; VE: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; ZA: { link: string; flatrate: WatchProviderProvider[]; rent: WatchProviderProvider[]; buy: WatchProviderProvider[]; }; }; } interface PopularInput { page?: number; region?: Country; } interface TopRatedInput { page?: number; region?: Country; } interface UpcomingInput { page?: number; region?: Country; } interface ImagesResult { id: number; backdrops: Image[]; posters: Image[]; } interface MovieReview { author: string; author_details: Author; content: string; created_at: Date; id: string; updated_at: Date; url: string; } interface MovieReviewResult extends GenericListResult { id: string; } interface CreditsResult { id: number; cast: Cast[]; crew: Crew[]; } interface AccountStatesResult { id: number; favorite: boolean; rated: { value: number; } | boolean; watchlist: boolean; } interface Credits { cast: Cast[]; crew: Crew[]; } interface Images { backdrops: Image[]; posters: Image[]; logos: Image[]; } interface AccountStates { favorite: boolean; rated: { value: number; } | boolean; watchlist: boolean; } interface Title { iso_3166_1: Country; title: string; type: string; } interface ExternalIds { imdb_id?: string; facebook_id?: string; instagram_id?: string; twitter_id?: string; } interface Keyword { id: number; name: string; } interface Change { key: string; items: { id: string; action: string; time: T; iso_639_1: Language; value: string; original_value: string; }[]; } interface Movie { adult: boolean; backdrop_path: string | null; belongs_to_collection: any | null; budget: number; genres: Genre[]; homepage: string | null; id: number; imdb_id: string | null; original_language: string; original_title: string; overview: string | null; popularity: number; poster_path: string | null; production_companies: ProductionCompany[] | null; production_countries: ProductionCountry[] | null; release_date: Date; revenue: number; runtime: number | null; spoken_languages: SpokenLanguage[] | null; status: MovieStatus; tagline: string | null; title: string; video: boolean; vote_average: number; vote_count: number; credits: Credits | null; images: Images | null; videos: VideoResults | null; reviews: MovieReviewResult | null; recommendations: GenericListResult; account_states: AccountStates | null; alternative_titles: Title[] | null; external_ids: ExternalIds | null; changes: Change | null; keywords: { keywords: { id: number; name: string; }[]; } | null; lists: GenericListResult | null; } type SortValues = "created_at.asc" | "created_at.desc"; type MediaValue = "tv" | "movie"; interface AccountDetailsResults { avatar: { gravatar: { hash: string; }; }; id: number; iso_639_1: Language; iso_3166_1: Country; name: string; include_adult: boolean; username: string; } interface CreatedListsInput { accountID: number; page?: number; } interface MarkFavoriteInput { accountID: number; media_id: number; media_type: MediaValue; favorite: boolean; } interface SortPageAccountInput { sort_by?: SortValues; page?: number; accountID: number; } interface WatchlistInput { accountID: number; media_type: MediaValue; media_id: number; watchlist: boolean; } declare class AccountService { $http: AxiosInstance; session_id: number | undefined; account_id: number | undefined; language: Language; constructor(httpClient: AxiosInstance); getAccount(): Promise; getCreatedLists(createdInput: CreatedListsInput): Promise>; getFavoriteMovies(favoriteInput: SortPageAccountInput): Promise>; // TODO favorite tv shows here markAsFavorite(favoriteInput: MarkFavoriteInput): Promise; getRatedMovies(ratedInput: SortPageAccountInput): Promise>; // TODO get rated tv shows // TODO get rated tv episodes addToWatchlist(watchInput: WatchlistInput): Promise; getMovieWatchlist(watchInput: SortPageAccountInput): Promise>; // TODO get tv show watchlist setSessionId(sessionId: number): void; setLanguage(language: Language): void; } interface NewTokenResult { success: boolean; expires_at: Date; request_token: string; } interface SessionResult { success: boolean; session_id: string; } declare class AuthenticationService { $http: AxiosInstance; constructor(httpClient: AxiosInstance); getAuthenticationToken(): Promise; createAuthUrl(redirectUrl: string): Promise; createSession(requestToken: string): Promise; createSessionWithLogin(username: string, password: string): Promise; } declare class GenericService { protected session_id?: number; protected $http: AxiosInstance; protected language: Language; constructor(client: AxiosInstance); setSessionId(sId: number): void; setLanguage(l: Language): void; } interface GenreResult { genres: { id: number; name: string; }[]; } declare class GenreService extends GenericService { getMovieGenres(): Promise; getTvGenres(): Promise; } declare class MovieService extends GenericService { getTrending(timeSpan: TrendingTimeSpan, page?: number): Promise>; search(input: SearchMovieInput): Promise>; getMovie(id: number, appendToResponse?: AppendToResponseMovie[]): Promise; getLatest(): Promise; getNowPlaying(): Promise; getPopular(popularData?: PopularInput): Promise>; getTopRated(topRatedData?: TopRatedInput): Promise>; getUpcoming(upcomingData?: UpcomingInput): Promise>; getAlternativeTitles(titleData: AlternativeTitlesInput): Promise; getChanges(changesData: ChangesInput): Promise; getCredits(movieId: number): Promise; getExternalIds(movieId: number): Promise; getImages(movieId: number, includeImageLanguage?: Language[]): Promise; getKeyword(movieId: number): Promise; getLists(listData: MoviePageInput): Promise; getRecommendations(recommendationsData: MoviePageInput): Promise>; getReleaseDates(movieId: number): Promise; getReviews(reviewsData: MoviePageInput): Promise; getSimilar(similarData: MoviePageInput): Promise>; getTranslations(movieId: number): Promise; getVideos(movieId: number): Promise; getWatchProviders(movieId: number): Promise; rate(movieId: number, value: number): Promise; deleteRating(movieId: number): Promise; getAccountStates(movieId: number): Promise; } interface TV { first_air_date: Date; overview: string; original_name: string; origin_country: Country; genre_ids: number[]; vote_count: number; original_language: Language; name: string; poster_path: string; id: number; backdrop_path: string | null; vote_average: number; popularity: number; } interface SearchTVInput { query: string; page?: number; include_adult?: boolean; first_air_date_year?: number; } interface SeasonOverview { air_date: Date; episode_count: number; id: number; poster_path: string | null; season_number: number; } interface TVDetails { backdrop_path: string | null; created_by: object[]; episode_run_time: number[]; first_air_date: Date; genres: Genre[]; homepage: string | null; id: number; in_prodution: boolean; languages: Language[]; last_air_date: Date | null; name: string; networks: object[]; // TODO create network interface number_of_episodes: number; number_of_seasons: number; origin_country: Country[]; original_language: Language; original_name: string; overview: string | null; popularity: number; poster_path: string | null; production_companies: ProductionCompany[]; seasons: SeasonOverview[]; status: string; type: string; vote_average: number; vote_count: number; } declare class TVService extends GenericService { getTrending(time: TrendingTimeSpan): Promise>; search(search: SearchTVInput): Promise>; getTopRated(page?: number): Promise>; getPopular(page?: number): Promise>; getLatest(): Promise; getAiringToday(page?: number): Promise>; getOnAir(page?: number): Promise>; // TODO add append to response getDetails(id: number): Promise; } declare class API { apiKey: string; $http: AxiosInstance; auth: AuthenticationService; movies: MovieService; tv: TVService; account: AccountService; genre: GenreService; language: Language; private imageUrl; private sessionId; constructor(apiKey: string); setLanguage(l: Language): void; getImageUrl(path: string, size: string): string; setSessionId(session: number): void; } export { API as default, TrendingTimeSpan, Language, KeywordResult, List, Country, Response, GenericListResult, Image, Author, Cast, Crew, Video, Genre, ProductionCompany, ProductionCountry, SpokenLanguage, MovieStatus, SearchMovieInput, NowPlayingMovieResult, AlternativeTitlesResult, AlternativeTitlesInput, ChangesInput, ChangesResult, ExternalIdsResult, ListResult, MoviePageInput, ReleaseDateResults, TranslationResults, VideoResults, WatchProvidersResult, PopularInput, TopRatedInput, UpcomingInput, AppendToResponseMovie, ImagesResult, MovieReviewResult, CreditsResult, MovieReview, Translation, AccountStatesResult, Movie, Keyword, GenreResult, AccountDetailsResults, CreatedListsInput, MarkFavoriteInput, SortPageAccountInput, WatchlistInput };