interface HianimeResult {
    page: number;
    totalPage: number;
    hasNextPage: boolean;
    results: Result[];
}
interface Result {
    id: string;
    image?: string;
    title?: string;
    type?: string;
    language?: Language;
    dataId: string;
}
interface Language {
    sub?: null | string;
    dub?: null | string;
}
declare enum Type {
    Ona = "ONA",
    Special = "SPECIAL",
    Tv = "TV"
}

interface HianimeEpisode {
    id: string;
    number: string;
    title: string;
    href: string;
}

interface HianimeSources {
    headers: Record<string, string>;
    sources: Source[];
    tracks?: Track[];
    encrypted?: boolean;
    intro?: Timeskip;
    outro?: Timeskip;
    server?: number;
}
interface Timeskip {
    start?: number;
    end?: number;
}
interface Source {
    file?: string;
    type?: string;
}
interface Track {
    file?: string;
    label?: string;
    kind?: string;
    default?: boolean;
}

declare class Hianime {
    private readonly BASE_URL;
    private readonly MALSYNC_URL;
    private getAnimeList;
    getSubbedAnime(page?: number): Promise<HianimeResult>;
    getDubbedAnime(page?: number): Promise<HianimeResult>;
    getMostPopular(page?: number): Promise<HianimeResult>;
    getMovies(page?: number): Promise<HianimeResult>;
    getTVShows(page?: number): Promise<HianimeResult>;
    getSpecialList(page?: number): Promise<HianimeResult>;
    getONAList(page?: number): Promise<HianimeResult>;
    getOVAList(page?: number): Promise<HianimeResult>;
    getTopAiring(page?: number): Promise<HianimeResult>;
    search(query: string, page?: number): Promise<HianimeResult>;
    getEpisodesByMALID(malId: string): Promise<HianimeEpisode[]>;
    getEpisodes(dataId: string): Promise<HianimeEpisode[]>;
    getEpisodeServers(episodeId: string): Promise<{
        sub: {
            type: string;
            id: string;
            serverId: string;
            name: string;
        }[];
        dub: {
            type: string;
            id: string;
            serverId: string;
            name: string;
        }[];
    }>;
    getEpisodeSources(serverId: string): Promise<HianimeSources>;
}

export { Hianime, type HianimeEpisode, type HianimeResult, type HianimeSources, type Language, type Result, type Source, type Timeskip, type Track, Type, Hianime as default };
