import type { JikanClient } from "../client";
import type { Anime, AnimeCharacter, AnimeEpisode, AnimeExternal, AnimeForum, AnimeNews, AnimePicture, AnimeQueryParams, AnimeRecommendation, AnimeRelation, AnimeReview, AnimeStaff, AnimeStatistics, AnimeStreaming, AnimeTheme, AnimeUserUpdate, AnimeVideo, JikanPaginatedResponse, JikanResponse } from "../types";
export declare class AnimeEndpoint {
    private client;
    constructor(client: JikanClient);
    /**
     * Get anime by ID
     * @param id Anime ID
     * @returns Promise with anime data
     */
    getById(id: number): Promise<JikanResponse<Anime>>;
    /**
     * Get anime characters and voice actors
     * @param id Anime ID
     * @returns Promise with anime characters data
     */
    getCharacters(id: number): Promise<JikanResponse<AnimeCharacter[]>>;
    /**
     * Get anime staff
     * @param id Anime ID
     * @returns Promise with anime staff data
     */
    getStaff(id: number): Promise<JikanResponse<AnimeStaff[]>>;
    /**
     * Get anime episodes
     * @param id Anime ID
     * @param page Page number
     * @returns Promise with anime episodes data
     */
    getEpisodes(id: number, page?: number): Promise<JikanPaginatedResponse<AnimeEpisode>>;
    /**
     * Get anime episode by ID
     * @param animeId Anime ID
     * @param episodeId Episode ID
     * @returns Promise with anime episode data
     */
    getEpisodeById(animeId: number, episodeId: number): Promise<JikanResponse<AnimeEpisode>>;
    /**
     * Get anime news
     * @param id Anime ID
     * @param page Page number
     * @returns Promise with anime news data
     */
    getNews(id: number, page?: number): Promise<JikanPaginatedResponse<AnimeNews>>;
    /**
     * Get anime forum topics
     * @param id Anime ID
     * @param filter Filter topics (all, episode, other)
     * @returns Promise with anime forum data
     */
    getForum(id: number, filter?: "all" | "episode" | "other"): Promise<JikanResponse<AnimeForum[]>>;
    /**
     * Get anime videos
     * @param id Anime ID
     * @returns Promise with anime videos data
     */
    getVideos(id: number): Promise<JikanResponse<AnimeVideo>>;
    /**
     * Get anime pictures
     * @param id Anime ID
     * @returns Promise with anime pictures data
     */
    getPictures(id: number): Promise<JikanResponse<AnimePicture[]>>;
    /**
     * Get anime statistics
     * @param id Anime ID
     * @returns Promise with anime statistics data
     */
    getStatistics(id: number): Promise<JikanResponse<AnimeStatistics>>;
    /**
     * Get more anime info
     * @param id Anime ID
     * @returns Promise with more anime info
     */
    getMoreInfo(id: number): Promise<JikanResponse<string>>;
    /**
     * Get anime recommendations
     * @param id Anime ID
     * @returns Promise with anime recommendations data
     */
    getRecommendations(id: number): Promise<JikanResponse<AnimeRecommendation[]>>;
    /**
     * Get anime user updates
     * @param id Anime ID
     * @param page Page number
     * @returns Promise with anime user updates data
     */
    getUserUpdates(id: number, page?: number): Promise<JikanPaginatedResponse<AnimeUserUpdate>>;
    /**
     * Get anime reviews
     * @param id Anime ID
     * @param page Page number
     * @returns Promise with anime reviews data
     */
    getReviews(id: number, page?: number): Promise<JikanPaginatedResponse<AnimeReview>>;
    /**
     * Get anime relations
     * @param id Anime ID
     * @returns Promise with anime relations data
     */
    getRelations(id: number): Promise<JikanResponse<AnimeRelation[]>>;
    /**
     * Get anime themes
     * @param id Anime ID
     * @returns Promise with anime themes data
     */
    getThemes(id: number): Promise<JikanResponse<AnimeTheme>>;
    /**
     * Get anime external links
     * @param id Anime ID
     * @returns Promise with anime external links data
     */
    getExternal(id: number): Promise<JikanResponse<AnimeExternal[]>>;
    /**
     * Get anime streaming links
     * @param id Anime ID
     * @returns Promise with anime streaming links data
     */
    getStreaming(id: number): Promise<JikanResponse<AnimeStreaming[]>>;
    /**
     * Search for anime
     * @param params Search parameters
     * @returns Promise with anime search results
     */
    search(params?: AnimeQueryParams): Promise<JikanPaginatedResponse<Anime>>;
}
