import { AxiosInstance } from "axios";
import { YandexMusicClient } from "../client";
export declare enum Languages {
    en = "en",
    uz = "uz",
    uk = "uk",
    us = "us",
    ru = "ru",
    kk = "kk",
    hy = "hy"
}
declare type data = Record<string, any> | null;
export declare class Requset {
    protected readonly client: YandexMusicClient;
    protected readonly url: string;
    protected readonly axios: AxiosInstance;
    protected _headers: Map<string, any>;
    constructor(client: YandexMusicClient, url: string);
    /**
     * @returns {Map<string, any>} Headers from the request client class
     */
    get headers(): Map<string, any>;
    /**
     * Add language header for each requset.
     * @param {Languages} lang Avlibale variants: en/uz/uk/us/ru/kk/hy.
     * @returns {void} Void functions that set header.
     */
    setLanguage(lang?: keyof typeof Languages): void;
    /**
     * Add token header for each requset.
     * @returns {void} Void functions that set header.
     */
    setAuthorization(): void;
    /**
     * Throws the necessary exceptions, returns a response. Passes custom arguments to the request.
     *
     * @param {"GET" | "POST"} type HTTP request method ("GET" | "POST").
     * @param {string} url Url for the request.
     * @param {data} data Search and additional date for the post request.
     * @param {data} params Search and additional params for the all requests.
     * @returns {Promise<T>} Data from the yandex music api.
     *
     * @throws UnauthorizedError, when token is invalid, or a long wait for a direct link to the file.
     * @throws BadRequestError, when the request is incorrect.
     * @throws NotFoundError, when the page is not found
     * @throws NetworkError, when there are problems with the network
     */
    private wrapper;
    get<T>(url: string, params?: data): Promise<T>;
    post<T>(url: string, data?: data, params?: data): Promise<T>;
    directLink<T>(url: string, params: data): Promise<T>;
}
export declare const baseClient: (url: string) => AxiosInstance;
export {};
//# sourceMappingURL=base.request.d.ts.map