import { AllowArray, Nullable } from '../types.js'; type MaterialMovieType = 'foreign-movie' | 'soviet-cartoon' | 'foreign-cartoon' | 'russian-cartoon' | 'anime' | 'russian-movie'; type MaterialSerialType = 'cartoon-serial' | 'documentary-serial' | 'russian-serial' | 'foreign-serial' | 'anime-serial' | 'multi-part-film'; type MaterialType = MaterialMovieType | MaterialSerialType; type ExternalDatabase = 'kinopoisk_id' | 'imdb_id' | 'mdl_id' | 'worldart_link' | 'shikimori_id'; type ExternalDatabaseGenresType = 'kinopoisk' | 'shikimori' | 'mydramalist' | 'all'; type RatingMPAA = 'G' | 'PG' | 'PG-13' | 'R' | 'R+' | 'Rx'; type AnimeKind = 'tv' | 'movie' | 'ova' | 'ona' | 'special' | 'music' | 'tv_13' | 'tv_24' | 'tv_48'; type AnimeStatus = 'anons' | 'ongoing' | 'released'; type TranslationType = 'voice' | 'subtitles'; interface Translation { id: number; title: string; type: TranslationType; } interface FilterByExternalDatabase { countries?: AllowArray; genres?: AllowArray; anime_genres?: AllowArray; drama_genres?: AllowArray; all_genres?: AllowArray; duration?: string | number; kinopoisk_rating?: number | string; imdb_rating?: number | string; shikimori_rating?: number | string; mydramalist_rating?: number | string; actors?: AllowArray; directors?: AllowArray; producers?: AllowArray; writers?: AllowArray; composers?: AllowArray; editors?: AllowArray; designers?: AllowArray; operators?: AllowArray; rating_mpaa?: AllowArray; minimal_age?: number | string; anime_kind?: AllowArray; anime_status?: AllowArray; drama_status?: AllowArray; all_status?: AllowArray; anime_studios?: AllowArray; anime_licensed_by?: AllowArray; } interface MaterialData { title?: string; anime_title?: string; title_en?: string; other_titles?: string[]; other_titles_en?: string[]; other_titles_jp?: string[]; anime_license_name?: string; anime_licensed_by?: string[]; anime_kind?: AnimeKind; all_status?: AnimeStatus; anime_status?: AnimeStatus; drama_status?: AnimeStatus; year?: number; tagline?: string; description?: string; anime_description?: string; poster_url?: string; screenshots?: string[]; duration?: number; countries?: string[]; all_genres?: string[]; genres?: string[]; anime_genres?: string[]; drama_genres?: string[]; anime_studios?: string[]; kinopoisk_rating?: number; kinopoisk_votes?: number; imdb_rating?: number; imdb_votes?: number; shikimori_rating?: number; shikimori_votes?: number; mydramalist_rating?: number; mydramalist_votes?: number; premiere_ru?: string; premiere_world?: string; aired_at?: string; released_at?: string; next_episode_at?: string; rating_mpaa?: RatingMPAA; minimal_age?: number; episodes_total?: number; episodes_aired?: number; actors?: string[]; directors?: string[]; producers?: string[]; writers?: string[]; composers?: string[]; editors?: string[]; designers?: string[]; operators?: string[]; } interface SharedFields { types?: AllowArray; year?: AllowArray; block_translations?: AllowArray; translation_id?: AllowArray; translation_type?: TranslationType; has_field?: AllowArray; has_field_and?: boolean; lgbt?: boolean; sort?: 'title' | 'count'; } interface EpisodeDataObject { title?: string; link: string; screenshots: string[]; } interface EpisodesObject { [episode: string | number]: string | EpisodeDataObject; } interface SeasonObject { link: string; title?: string; episodes?: EpisodesObject; } interface SeasonsObject { [season: string | number]: SeasonObject; } interface BlockedSeasonsObject { [season: string | number]: 'all' | string[]; } interface TranslationV1Object { id: number; title: string; type: TranslationType; } interface MaterialObject { id: string; title: string; title_orig: string; other_title: string; link: string; year: number; kinopoisk_id: string | number; imdb_id: string | number; mdl_id: string | number; worldart_link: string; shikimori_id: number; type: MaterialType; quality: string; caprip: boolean; lgbt: boolean; translation: TranslationV1Object; created_at: string; updated_at: string; blocked_countries: string[]; seasons?: SeasonsObject; last_season?: number; last_episode?: number; episodes_count?: number; blocked_seasons?: BlockedSeasonsObject | 'all'; screenshots: string[]; material_data?: MaterialData; } interface SharedSearchListFields { limit?: number; camrip?: boolean; with_seasons?: boolean; with_episodes?: boolean; with_episodes_data?: boolean; with_page_links?: boolean; not_blocked_in?: AllowArray; not_blocked_for_me?: boolean; with_material_data?: boolean; next?: string; } interface KodikResponse { time: string; total: number; results: T; } interface KodikResponseWithPagination extends KodikResponse { prev_page: Nullable; next_page: Nullable; } export { AnimeKind, AnimeStatus, BlockedSeasonsObject, EpisodeDataObject, EpisodesObject, ExternalDatabase, ExternalDatabaseGenresType, FilterByExternalDatabase, KodikResponse, KodikResponseWithPagination, MaterialData, MaterialMovieType, MaterialObject, MaterialSerialType, MaterialType, RatingMPAA, SeasonObject, SeasonsObject, SharedFields, SharedSearchListFields, Translation, TranslationType, TranslationV1Object };