import NHSearchResults, { NHSort, NHHentaiPartial, NHLanguage } from './search_results';
export { NHSearchResults, NHSort, NHHentaiPartial, NHLanguage };
export interface NHTag {
    name: string;
    amount: number;
    amountString: string;
    url: string;
}
export interface NHUser {
    avatar: string;
    username: string;
    joined: number;
    favoriteTags?: string | null;
    about?: string | null;
    recentFavorites: NHHentaiPartial[];
    recentComments: NHComment[];
}
export interface NHComment {
    id: number;
    gallery_id: number;
    poster: {
        id: number;
        username: string;
        slug: string;
        url: string;
        avatar_url: string;
        is_superuser: boolean;
        is_staff: boolean;
    };
    post_date: number;
    body: string;
    hentai: () => Promise<NHHentai>;
    user: () => Promise<NHUser>;
}
export interface NHHentai {
    title: string;
    cleanTitle: string;
    id: number;
    url: string;
    cover: string;
    images: string[];
    thumbnails: string[];
    tags: {
        tags: NHTag[];
        parodies: NHTag[];
        characters: NHTag[];
        artists: NHTag[];
        groups: NHTag[];
        languages: NHTag[];
        categories: NHTag[];
    };
    uploaded: number;
    pages: number;
    recommended: NHHentaiPartial[];
    comments: () => Promise<NHComment[]>;
}
export declare class NHentai {
    static readonly nhentaiRegex: RegExp;
    /**
     * @throws if number is negative
     * @throws if url is falsey or does not match NHentai.nhentaiRegex
     */
    hentai(url: number | string): Promise<NHHentai>;
    private tags;
    private toNumber;
    /**
     * Get a random hentai from nhentai.net
     *
     * @param english true if random hentai should be english
     * @returns a random hentai
     */
    random(english: boolean): Promise<NHHentai>;
    user(id: number, slug: string): Promise<NHUser>;
    /**
     * Search for a hentai on nhentai.net
     *
     * @returns {Promise<NHSearchResults>} search results
     */
    search(query: string, sort?: NHSort): Promise<NHSearchResults>;
}
//# sourceMappingURL=index.d.ts.map