import { AnimeGenres, AnimeStatuses, AnimeTypes, FilterOrderEnum } from "../constants"; export type AnimeStatus = typeof AnimeStatuses[number]; export type AnimeType = typeof AnimeTypes[number]; export type AnimeGenre = typeof AnimeGenres[number]; export type FilterOrderType = keyof typeof FilterOrderEnum; export type FilterAnimeResults = SearchAnimeResults; export interface PartialAnimeData { /** Título del animé */ title: string; /** URL de la carátula del animé */ cover: string; /** La sinopsis (descripción) del animé */ synopsis: string; /** Evaluación de estrellas del animé */ rating: string; /** Id del animé */ id: string; /** El tipo de anime: OVA | Anime | Película | Especial */ type: AnimeType; /** La URL directa a la página de éste animé */ url: string; } export interface SearchAnimeResults { /** URL a la página anterior, o null en caso de no haber*/ previousPage: string | null; /** URL a la página siguiente, o null en caso de no haber*/ nextPage: string | null; /** Número de páginas con resultados de la búsqueda realizada */ foundPages: number; /** Los animés encontrados en la búsqueda */ data: PartialAnimeData[]; } export interface AnimeData { /** Titulo del animé */ title: string; /** Array con titulos alternativos de este animé */ alternative_titles: string[]; /** Estado de este animé: "En emision" | "Finalizado" | "Proximamente" */ status: AnimeStatus; /** Evaluación de estrellas de este animé */ rating: string; /** El tipo de anime: "OVA" | "Anime" | "Película" | "Especial" */ type: AnimeType; /** URL a la carátula de este animé */ cover: string; /** Sinopsis o descripción del animé */ synopsis: string; /** Array con los géneros (etiquetas) del anime */ genres: AnimeGenre[]; /** Número de episodios que tiene este animé */ episodes: EpisodeData[]; /** La URL directa a la pagina del animé */ url: string; } export interface EpisodeData { /** Número del episodio */ number: number; /** Link del episodio */ url: string; } export interface ChapterData { /** Título del episodio */ title: string; /** Número del episodio */ chapter: number; /** URL del thumbnail de este episodio */ cover: string; /** URL directa del episodio */ url: string; } export interface AnimeOnAirData { /** Título del animé */ title: string; /** El tipo de anime: "OVA" | "Anime" | "Película" | "Especial" */ type: AnimeType; /** La id de este animé */ id: string; /** La URL directa a la página de este anime */ url: string; } export interface FilterOptions { /** Lista de generos para la búsqueda */ genres?: AnimeGenre[]; /** Lista de tipos para la búsqueda */ types?: AnimeType[]; /** Los statuses de los animés para filtrar */ statuses?: AnimeStatus[]; /** El orden en el que se recibirán los animés */ order?: FilterOrderType; }