import { CrowdinApi, PaginationOptions, PatchRequest, ResponseList, ResponseObject } from '../core';
/**
 * Crowdin supports more than 300 world languages and custom languages created in the system.
 *
 * Use API to get the list of all supported languages and retrieve additional details (e.g. text direction, internal code) on specific language.
 */
export declare class Languages extends CrowdinApi {
    /**
     * @param options optional pagination parameters for the request
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.getMany
     */
    listSupportedLanguages(options?: PaginationOptions): Promise<ResponseList<LanguagesModel.Language>>;
    /**
     * @param limit maximum number of items to retrieve (default 25)
     * @param offset starting offset in the collection (default 0)
     * @deprecated optional parameters should be passed through an object
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.getMany
     */
    listSupportedLanguages(limit?: number, offset?: number): Promise<ResponseList<LanguagesModel.Language>>;
    /**
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.post
     */
    addCustomLanguage(request: LanguagesModel.AddLanguageRequest): Promise<ResponseObject<LanguagesModel.Language>>;
    /**
     * @param languageId language identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.get
     */
    getLanguage(languageId: string): Promise<ResponseObject<LanguagesModel.Language>>;
    /**
     * @param languageId language identifier
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.delete
     */
    deleteCustomLanguage(languageId: string): Promise<void>;
    /**
     * @param languageId language identifier
     * @param request request body
     * @see https://developer.crowdin.com/api/v2/#operation/api.languages.patch
     */
    editCustomLanguage(languageId: string, request: PatchRequest[]): Promise<ResponseObject<LanguagesModel.Language>>;
}
export declare namespace LanguagesModel {
    interface Language {
        id: string;
        name: string;
        editorCode: string;
        twoLettersCode: string;
        threeLettersCode: string;
        locale: string;
        androidCode: string;
        osxCode: string;
        osxLocale: string;
        pluralCategoryNames: string[];
        pluralRules: string;
        pluralExamples: string[];
        textDirection: TextDirection;
        dialectOf: string;
    }
    interface AddLanguageRequest {
        name: string;
        code: string;
        localeCode: string;
        textDirection: TextDirection;
        pluralCategoryNames: string[];
        threeLettersCode: string;
        twoLettersCode?: string;
        dialectOf?: string;
    }
    type TextDirection = 'ltr' | 'rtl';
}
