/**
 * @file This file contain the MangaKitsu class, used to get Manga informations from the Kitsu.app API.
 */
import { IKitsuChapter, IKitsuChapters, IKitsuManga, IKitsuMangaFind, IKitsuMangaList, IKitsuMangaSingle, TKitsuHandleError } from "./interfaces/index.js";
/**
 * @class
 * @description MangaKitsu is a class that's using the Kitsu.app API, with this class you can find Mangas informations in different ways
 * @example
 * Basic usage:
 * ```js
 * // CJS
 * const { MangaKitsu } = require("aniki")
 * // JS ESM or TS
 * import { MangaKitsu } from "aniki";
 *
 * const manga = new MangaKitsu();
 *
 * // Normal
 * manga.find({ query: "Oshi no Ko" }).then(a => console.log(a.data[0]));
 *
 * // Find by an id
 * manga.findById(3600).then(a => console.log(a.data));
 *
 * // Handling errors
 *
 * manga.find(
 *  { query: "Oshi no ko" },
 *  async ({ apiError, moduleError }, status) => {
 *    if (apiError) console.error(await apiError);
 *    if (moduleError) console.error(await moduleError);
 * });
 *
 *
 * // Best practice to avoid using .then() method is by using asynchronous functions
 *
 * async function getManga(query) {
 * // ...
 *  const a = await manga.find({ query: query })
 *
 * // Tip to avoid multiple awaits
 * const a = manga.find({query: ""});
 * const b = manga.list({});
 * const [A, B] = await Promise.all([a, b])
 * }
 *
 * ```
 * @since 1.0.2
 */
declare class MangaKitsu {
    private defaultHandleError;
    /**
     * @method
     * @param {IKitsuMangaFind} params - The parameters for the request.
     * @param {TKitsuHandleError} [handleError] - Used for handling errors from the method and the API.
     * @description The find method is used to find mangas with different parameters.
     * @returns {Promise<IKitsuManga | undefined>} - Returns a Promise with the IKitsuManga inteface.
     * @example
     * ```js
     * manga.find({ query: "Oshi no ko", offset: 0 }).then(a => console.log(a)); // offset is optional.
     * ```
     * @since 1.0.2
     */
    find(params: IKitsuMangaFind, handleError?: TKitsuHandleError): Promise<IKitsuManga | undefined>;
    /**
     * @method
     * @param {number | `${number}`} id - The ID of the manga.
     * @param {TKitsuHandleError} [handleError] - Used for handling errors from the method and the API.
     * @description Get an Manga with the ID.
     * @returns {Promise<IKitsuMangaSingle | undefined>} - Return a Promise.
     * @example
     * ```js
     * manga.findById(30).then(r => console.log(r.data.id));
     *
     * // Or
     * manga.findById("30").then(r => console.log(r.data.id));
     * ```
     * @since 1.3.0
     */
    findById(id: number | `${number}`, handleError?: TKitsuHandleError): Promise<IKitsuMangaSingle | undefined>;
    /**
     *
     * @method
     * @param {IKitsuMangaList} params - The parameters for the request.
     * @param {TKitsuHandleError} [handleError] - Used for handling errors from the method and the API.
     * @description Get an list of Mangas, you can choose the page, and the number of Mangas per page.
     * @returns {Promise<IKitsuManga | undefined>} - Return a Promise.
     * @example
     * ```js
     * Manga.list({ offset: 0, perPage: 10 }).then(a => console.log(a));
     * ```
     * @since 1.0.2
     *
     */
    list(params: IKitsuMangaList, handleError?: TKitsuHandleError): Promise<IKitsuManga | undefined>;
    /**
     * @method
     * @param {number | `${number}`} id - The parameters to find a specific chapter of a manga using the chapter ID.
     * @param {TKitsuHandleError} [handleError] - Used for handling errors from the method and the API.
     * @description Get an chapter with the ID.
     * @returns {Promise<IKitsuChapter | undefined>} - Return a IKitsuChapter Promise interface or undefined if it has no result.
     * @example
     * ```js
     * manga.chapter(30).then(r => console.log(r.data.attributes.titles.en));
     * ```
     * @since 1.3.0
     */
    chapter(id: number | `${number}`, handleError?: TKitsuHandleError): Promise<IKitsuChapter | undefined>;
    /**
     * @method
     * @param {number | `${number}`} mangaId - The parameters to find all chapters of an manga using its ID.
     * @param {TKitsuHandleError} [handleError] - Used for handling errors from the method and the API.
     * @returns {Promise<IKitsuChapters | undefined>} Return a IKitsuChapters Promise interface or undefined if it has no result.
     * @example
     * ```js
     * manga.chapters(7442).then(r => console.log(r.data.attributes.titles.en));
     * ```
     * @since 1.3.5
     */
    chapters(mangaId: number | `${number}`, handleError?: TKitsuHandleError): Promise<IKitsuChapters | undefined>;
}
export { MangaKitsu };
export default MangaKitsu;
