import { Blob as Blob_2 } from 'node:buffer';
import { Locales } from '@localazy/languages';

export declare abstract class ApiBase {
    protected api: ApiClient;
    constructor(api: ApiClient);
    protected static getId(val: string | {
        id: string;
    }, prop: string): string;
}

export declare class ApiClient {
    client: IHttpAdapter;
    projects: ApiProjects;
    import: ApiImport;
    export: ApiExport;
    formats: ApiFormats;
    files: ApiFiles;
    keys: ApiKeys;
    glossary: ApiGlossary;
    webhooks: ApiWebhooks;
    screenshots: ApiScreenshots;
    constructor(options: ApiClientOptions);
}

export declare type ApiClientOptions = {
    authToken: string;
    apiUrl?: string;
};

export declare class ApiExport extends ApiBase {
    /**
     * Export translated keys as JSON object.
     *
     * @param request Export JSON request config.
     * @param config Request config.
     */
    json(request: ExportJsonRequest, config?: RequestConfig): Promise<I18nJson>;
    protected static mapLanguages(languages: `${Locales}`[], result: Key[][]): ("es_419" | "zh#Hans" | "aa" | "aa_DJ" | "aa_ET" | "ab" | "ab_GE" | "ace" | "ace_ID" | "ach" | "ach_UG" | "ada" | "ady" | "ady_RU" | "ae" | "aeb" | "aeb_TN" | "af" | "af_NA" | "af_ZA" | "agq" | "ain" | "ain#Latn" | "ak" | "ak_GH" | "akk" | "akz" | "ale" | "aln" | "aln_XK" | "alt" | "am" | "am_ET" | "an" | "ang" | "anp" | "ar" | "ar_AE" | "ar_BH" | "ar_DJ" | "ar_DZ" | "ar_EG" | "ar_EH" | "ar_ER" | "ar_IL" | "ar_IQ" | "ar_JO" | "ar_KM" | "ar_KW" | "ar_LB" | "ar_LY" | "ar_MA" | "ar_MR" | "ar_OM" | "ar_PS" | "ar_QA" | "ar_SA" | "ar_SD" | "ar_SO" | "ar_SY" | "cs" | "cs_CZ" | "ar_TD" | "ar_TN" | "ar_YE" | "ar_IR" | "ar_SS" | "ar_AE#Syrc" | "ar_BH#Syrc" | "ar_DJ#Syrc" | "ar_DZ#Syrc" | "ar_EG#Syrc" | "ar_EH#Syrc" | "ar_ER#Syrc" | "ar_IL#Syrc" | "ar_IQ#Syrc" | "ar_JO#Syrc" | "ar_KM#Syrc" | "ar_KW#Syrc" | "ar_LB#Syrc" | "ar_LY#Syrc" | "ar_MA#Syrc" | "ar_MR#Syrc" | "ar_OM#Syrc" | "ar_PS#Syrc" | "en" | "ar_QA#Syrc" | "ar_SA#Syrc" | "ar_SD#Syrc" | "ar_SO#Syrc" | "ar_SY#Syrc" | "ar_TD#Syrc" | "ar_TN#Syrc" | "ar_YE#Syrc" | "ar_IR#Syrc" | "ar_SS#Syrc" | "arc" | "arn" | "aro" | "arp" | "arq" | "arq_DZ" | "ars" | "arw" | "ary" | "ary_MA" | "arz" | "arz_EG" | "as" | "as_IN" | "asa" | "ast" | "ast_ES" | "av" | "av_RU" | "avk" | "awa" | "awa_IN" | "ay" | "ay_BO" | "az_AZ#Arab" | "az_IQ" | "az_IR" | "az_RU#Arab" | "az#Arab" | "az_AZ#Cyrl" | "az_IQ#Cyrl" | "az_IR#Cyrl" | "az_RU" | "az#Cyrl" | "az_IQ#Latn" | "az_IR#Latn" | "az_RU#Latn" | "az" | "ba" | "ba_RU" | "bal" | "bal_AF" | "bal_IR" | "bal_PK" | "bal_AF#Latn" | "bal_IR#Latn" | "bal_PK#Latn" | "ban" | "ban_ID" | "bar" | "bar_AT" | "bar_DE" | "bas" | "bax" | "bbc" | "bbc_ID" | "bbj" | "be" | "be_BY" | "bej" | "bej_SD" | "bem" | "bem_ZM" | "bew" | "bew_ID" | "bez" | "bfd" | "bfq" | "bg" | "bg_BG" | "bgn" | "bgn_PK" | "bho" | "bho_IN" | "bho_MU" | "bho_NP" | "bi" | "bi_VU" | "bik" | "bik_PH" | "bin" | "bin_NG" | "bjn" | "bjn_ID" | "bkm" | "bla" | "bm_ML" | "bm" | "bm_ML#Nkoo" | "bm#Nkoo" | "bn" | "bn_BD" | "bn_IN" | "bo" | "bo_CN" | "bpy" | "bqi" | "bqi_IR" | "br" | "bra" | "brh" | "brh_PK" | "brh_PK#Latn" | "brx" | "brx_IN" | "bs_BA#Cyrl" | "bs#Cyrl" | "bs" | "bss" | "bua" | "bug" | "bug_ID" | "bum" | "bum_CM" | "byn" | "byv" | "ca" | "ca_AD" | "ca_ES" | "cad" | "car" | "cay" | "cch" | "ccp#Beng" | "ccp" | "ce" | "ce_RU" | "ceb" | "ceb_PH" | "cgg" | "cgg_UG" | "ch" | "ch_GU" | "chk" | "chk_FM" | "chm" | "chn" | "cho" | "chp" | "chp#Cans" | "chr" | "chy" | "cic" | "ckb" | "ckb_IQ" | "ckb_IR" | "co" | "cop#Arab" | "cop#Grek" | "cps" | "cr" | "cr#Latn" | "crh" | "crs" | "crs_SC" | "cs_SK" | "csb" | "csb_PL" | "cu" | "cv" | "cv_RU" | "cy" | "cy_GB" | "da" | "da_DK" | "da_DE" | "dak" | "dar" | "dav" | "de" | "de_AT" | "de_BE" | "de_CH" | "de_DE" | "de_LI" | "de_LU" | "de_BR" | "de_CZ" | "de_DK" | "de_FR" | "de_GB" | "de_HU" | "de_KZ" | "de_NL" | "de_PL" | "de_SI" | "de_SK" | "de_US" | "del" | "den" | "den#Cans" | "dgr" | "din" | "dje" | "dje_NE" | "doi" | "doi_IN" | "dsb" | "dtp" | "dua" | "dum" | "dv" | "dv_MV" | "dyo" | "dyo_SN" | "dyo_SN#Arab" | "dyu" | "dyu_BF" | "dz" | "dz_BT" | "ebu" | "ee" | "ee_GH" | "ee_TG" | "efi" | "efi_NG" | "egl" | "egy" | "eka" | "el" | "el_CY" | "el_GR" | "en_AG" | "en_AI" | "en_AS" | "en_AU" | "en_BB" | "en_BI" | "en_BM" | "en_BS" | "en_BW" | "en_BZ" | "en_CA" | "en_CC" | "en_CK" | "en_CM" | "en_CX" | "en_DG" | "en_DM" | "en_ER" | "en_FJ" | "en_FK" | "en_FM" | "en_GB" | "en_GD" | "en_GG" | "en_GH" | "en_GI" | "en_GM" | "en_GU" | "en_GY" | "en_HK" | "en_IE" | "en_IM" | "en_IN" | "en_IO" | "en_JE" | "en_JM" | "en_KE" | "en_KI" | "en_KN" | "en_KY" | "en_LC" | "en_LR" | "en_LS" | "en_MG" | "en_MH" | "en_MP" | "en_MS" | "en_MT" | "en_MU" | "en_MW" | "en_NA" | "en_NF" | "en_NG" | "en_NR" | "en_NU" | "en_NZ" | "en_PG" | "en_PH" | "en_PK" | "en_PN" | "en_PR" | "en_PW" | "en_RW" | "en_SB" | "en_SC" | "en_SD" | "en_SG" | "en_SH" | "en_SL" | "en_SS" | "en_SX" | "en_SZ" | "en_TC" | "en_TK" | "en_TO" | "en_TT" | "en_TV" | "en_TZ" | "en_UG" | "en_UM" | "en_US" | "en_VC" | "en_VG" | "en_VI" | "en_VU" | "en_WS" | "en_ZA" | "en_ZM" | "en_ZW" | "en_AC" | "en_AE" | "en_AR" | "en_AT" | "en_BA" | "en_BD" | "en_BE" | "en_BG" | "en_BR" | "en_CH" | "en_CL" | "en_CY" | "en_CZ" | "en_DE" | "en_DK" | "en_DZ" | "en_EE" | "en_EG" | "en_ES" | "en_ET" | "en_FI" | "en_FR" | "en_GR" | "en_HR" | "en_HU" | "en_IL" | "en_IQ" | "en_IT" | "en_JO" | "en_KZ" | "en_LB" | "en_LK" | "en_LT" | "en_LU" | "en_LV" | "en_MA" | "en_MX" | "en_MY" | "en_NL" | "en_PL" | "en_PT" | "en_RO" | "en_SE" | "en_SI" | "en_SK" | "en_TA" | "en_TH" | "en_TR" | "en_YE" | "enm" | "eo" | "es" | "es_AR" | "es_BO" | "es_CL" | "es_CO" | "es_CR" | "es_CU" | "es_DO" | "es_EA" | "es_EC" | "es_ES" | "es_GQ" | "es_GT" | "es_HN" | "es_IC" | "es_MX" | "es_NI" | "es_PA" | "es_PE" | "es_PR" | "es_PY" | "es_SV" | "es_UY" | "es_VE" | "es_AD" | "es_BZ" | "es_DE" | "es_FR" | "es_GI" | "es_PH" | "es_PT" | "es_RO" | "es_US" | "esu" | "et" | "et_EE" | "eu" | "eu_ES" | "ewo" | "ext" | "fa" | "fa_AF" | "fa_IR" | "fa_PK" | "fan" | "fan_GQ" | "ff" | "ff_GN" | "ff_SN" | "fi" | "fi_FI" | "fi_EE" | "fi_SE" | "fil" | "fil_PH" | "fil_US" | "fit" | "fj" | "fj_FJ" | "fo" | "fo_FO" | "fon" | "fon_BJ" | "fr" | "fr_BE" | "fr_BF" | "fr_BI" | "fr_BJ" | "fr_BL" | "fr_CA" | "fr_CD" | "fr_CF" | "fr_CG" | "fr_CH" | "fr_CI" | "fr_CM" | "fr_DJ" | "fr_DZ" | "fr_FR" | "fr_GA" | "fr_GF" | "fr_GN" | "fr_GP" | "fr_GQ" | "fr_HT" | "fr_KM" | "fr_LU" | "fr_MA" | "fr_MC" | "fr_MF" | "fr_MG" | "fr_ML" | "fr_MQ" | "fr_MU" | "fr_NC" | "fr_NE" | "fr_PF" | "fr_PM" | "fr_RE" | "fr_RW" | "fr_SC" | "fr_SN" | "fr_SY" | "fr_TD" | "fr_TG" | "fr_TN" | "fr_VU" | "fr_WF" | "fr_YT" | "fr_DE" | "fr_GB" | "fr_IT" | "fr_NL" | "fr_PT" | "fr_RO" | "fr_TF" | "fr_US" | "frc" | "frm" | "fro" | "frp" | "frr" | "frs" | "fur" | "fy" | "fy_NL" | "ga" | "ga_IE" | "ga_GB" | "gaa" | "gaa_GH" | "gag" | "gag#Cyrl" | "gan" | "gan_CN" | "gay" | "gba" | "gbz" | "gd" | "gd_GB" | "gez" | "gil" | "gil_KI" | "gl" | "gl_ES" | "glk" | "glk_IR" | "gmh" | "gn" | "gn_PY" | "goh" | "gom" | "gom_IN" | "gon_IN#Deva" | "gon#Deva" | "gon_IN" | "gon" | "gor" | "gor_ID" | "got" | "grb" | "grc" | "gsw" | "gsw_CH" | "gsw_LI" | "gsw_DE" | "gu" | "gu_IN" | "guc" | "gur" | "guz" | "guz_KE" | "gv" | "gv_IM" | "gwi" | "ha_NE#Arab" | "ha_NG#Arab" | "ha#Arab" | "ha_NE" | "ha_NG" | "ha" | "hai" | "hak" | "hak_CN" | "haw" | "haw_US" | "he" | "he_IL" | "hi" | "hi_IN" | "hi_FJ" | "hi_ZA" | "hif_FJ#Deva" | "hif#Deva" | "hif_FJ" | "hif" | "hil" | "hil_PH" | "hit" | "hmn" | "ho" | "ho_PG" | "hr" | "hr_BA" | "hr_HR" | "hr_AT" | "hr_RS" | "hr_SI" | "hsb" | "hsn" | "hsn_CN" | "ht" | "ht_HT" | "hu" | "hu_HU" | "hu_AT" | "hu_RO" | "hu_RS" | "hup" | "hy" | "hy_AM" | "hy_RU" | "hz" | "ia" | "iba" | "ibb" | "ibb_NG" | "id" | "id_ID" | "id_ID#Arab" | "ig" | "ig_NG" | "ii" | "ii_CN" | "ii_CN#Latn" | "ik" | "ilo" | "ilo_PH" | "inh" | "inh_RU" | "inh_RU#Arab" | "inh_RU#Latn" | "is" | "is_IS" | "it" | "it_CH" | "it_IT" | "it_SM" | "it_VA" | "it_DE" | "it_FR" | "it_HR" | "it_MT" | "it_US" | "iu_CA" | "iu" | "iu_CA#Latn" | "iu#Latn" | "izh" | "ja" | "ja_JP" | "jam" | "jam_JM" | "jgo" | "jmc" | "jpr" | "jrb" | "jut" | "jv" | "jv_ID" | "jv_ID#Java" | "ka" | "ka_GE" | "kaa" | "kab" | "kab_DZ" | "kac" | "kaj" | "kam" | "kam_KE" | "kbd" | "kbd_RU" | "kcg" | "kde" | "kde_TZ" | "kea" | "kea_CV" | "kfo" | "kg" | "kg_CD" | "kgp" | "kha" | "kha_IN" | "kha_IN#Beng" | "khq" | "khw" | "ki" | "ki_KE" | "kiu" | "kj" | "kj_NA" | "kk_KZ#Arab" | "kk_CN" | "kk#Arab" | "kk_KZ" | "kk_CN#Cyrl" | "kk" | "kkj" | "kl" | "kl_GL" | "kl_DK" | "kln" | "kln_KE" | "km" | "km_KH" | "kmb" | "kmb_AO" | "kn" | "kn_IN" | "ko" | "ko_KP" | "ko_KR" | "ko_CN" | "ko_US" | "koi" | "koi_RU" | "kok" | "kok_IN" | "kos" | "kpe" | "kr" | "krc" | "krc_RU" | "kri" | "kri_SL" | "krj" | "krl" | "kru" | "kru_IN" | "ks_IN" | "ks" | "ks_IN#Deva" | "ks#Deva" | "ksb" | "ksf" | "ksh" | "ku_SY" | "ku_TR#Arab" | "ku#Arab" | "ku_SY#Cyrl" | "ku_TR#Cyrl" | "ku#Cyrl" | "ku_SY#Latn" | "ku_TR" | "ku" | "kum" | "kum_RU" | "kut" | "kv" | "kv_RU" | "kw" | "ky_KG#Arab" | "ky#Arab" | "ky_KG" | "ky" | "ky_KG#Latn" | "ky#Latn" | "la" | "la_VA" | "lad" | "lag" | "lah" | "lah_PK" | "lam" | "lb" | "lb_LU" | "lez" | "lez_RU" | "lfn#Cyrl" | "lfn" | "lg" | "lg_UG" | "li" | "lij" | "liv" | "lkt" | "lmo" | "ln" | "ln_CD" | "lo" | "lo_LA" | "lol" | "loz" | "lrc" | "lrc_IR" | "lt" | "lt_LT" | "lt_PL" | "ltg" | "lu" | "lu_CD" | "lua" | "lua_CD" | "lui" | "lun" | "luo" | "luo_KE" | "lus" | "luy" | "luy_KE" | "lv" | "lv_LV" | "lzh" | "lzz#Geor" | "lzz" | "mad" | "mad_ID" | "maf" | "mag" | "mag_IN" | "mai" | "mai_IN" | "mai_NP" | "mak" | "mak_ID" | "man_GM" | "man_GN#Latn" | "man" | "man_GM#Nkoo" | "man_GN" | "man#Nkoo" | "mas" | "mdf" | "mdf_RU" | "mdr" | "men" | "men_SL" | "mer" | "mer_KE" | "mfe" | "mfe_MU" | "mg" | "mg_MG" | "mgh" | "mgh_MZ" | "mgo" | "mh" | "mh_MH" | "mi" | "mi_NZ" | "mic" | "min" | "min_ID" | "mk" | "mk_MK" | "ml" | "ml_IN" | "mn" | "mn_MN" | "mn_CN" | "mnc" | "mni" | "mni_IN" | "mni_IN#Mtei" | "moh" | "mos" | "mos_BF" | "mr" | "mr_IN" | "mrj" | "ms_BN#Arab" | "ms_MY#Arab" | "ms_SG#Arab" | "ms_CC" | "ms_ID" | "ms#Arab" | "ms_BN" | "ms_MY" | "ms_SG" | "ms_CC#Latn" | "ms_ID#Latn" | "ms" | "mt" | "mt_MT" | "mua" | "mus" | "mwl" | "mwr" | "mwr_IN" | "mwv" | "my" | "my_MM" | "myv" | "myv_RU" | "mzn" | "mzn_IR" | "na" | "na_NR" | "nan" | "nan_CN" | "nap" | "naq" | "nb" | "nb_NO" | "nb_SJ" | "nd" | "nd_ZW" | "nds" | "nds_DE" | "nds_NL" | "ne" | "ne_NP" | "ne_IN" | "new" | "ng" | "ng_NA" | "nia" | "niu" | "niu_NU" | "njo" | "nl" | "nl_AW" | "nl_BE" | "nl_BQ" | "nl_CW" | "nl_NL" | "nl_SR" | "nl_SX" | "nl_DE" | "nmg" | "nn" | "nn_NO" | "nnh" | "nog" | "non" | "nov" | "nqo" | "nr" | "nr_ZA" | "nso" | "nso_ZA" | "nus" | "nv" | "ny" | "ny_MW" | "ny_ZM" | "nym" | "nym_TZ" | "nyn" | "nyn_UG" | "nyo" | "nzi" | "oc" | "oc_FR" | "oj" | "oj#Latn" | "om" | "om_ET" | "om_ET#Ethi" | "or" | "or_IN" | "os" | "os_GE" | "osa" | "osa#Latn" | "pa_IN#Arab" | "pa#Arab" | "pa_PK#Guru" | "pa" | "pag" | "pag_PH" | "pal" | "pam" | "pam_PH" | "pap" | "pap_AW" | "pap_CW" | "pap_BQ" | "pau" | "pau_PW" | "pcd" | "pcm" | "pcm_NG" | "pdc" | "pdt" | "peo" | "pfl" | "phn" | "pi" | "pi#Sinh" | "pi#Thai" | "pl" | "pl_PL" | "pl_UA" | "pms" | "pnt#Cyrl" | "pnt" | "pnt#Latn" | "pon" | "pon_FM" | "prg" | "pro" | "ps" | "ps_AF" | "ps_PK" | "pt" | "pt_AO" | "pt_BR" | "pt_CV" | "pt_GQ" | "pt_GW" | "pt_MO" | "pt_MZ" | "pt_PT" | "pt_ST" | "pt_TL" | "qu" | "qu_BO" | "qu_EC" | "qu_PE" | "quc" | "quc_GT" | "qug" | "raj" | "raj_IN" | "rap" | "rar" | "rgn" | "rif_MA#Latn" | "rif#Latn" | "rif_MA" | "rif" | "rm" | "rm_CH" | "rn" | "rn_BI" | "ro" | "ro_MD" | "ro_RO" | "ro_RS" | "ro_MD#Cyrl" | "ro_RO#Cyrl" | "ro_RS#Cyrl" | "rof" | "rom" | "rom#Cyrl" | "rtm" | "ru" | "ru_BY" | "ru_KG" | "ru_KZ" | "ru_RU" | "ru_UA" | "ru_BG" | "ru_DE" | "ru_EE" | "ru_LT" | "ru_LV" | "ru_PL" | "ru_SJ" | "ru_TJ" | "ru_UZ" | "rue" | "rug" | "rup" | "rw" | "rw_RW" | "rwk" | "sa_IN" | "sa" | "sa_IN#Sinh" | "sa#Sinh" | "sad" | "sah" | "sah_RU" | "sam" | "saq" | "sas" | "sas_ID" | "sat" | "sat_IN" | "sat_IN#Beng" | "sat_IN#Deva" | "sat_IN#Olck" | "sat_IN#Orya" | "saz" | "sbp" | "sc" | "sc_IT" | "scn" | "sco" | "sco_GB" | "sd_IN#Arab" | "sd_PK" | "sd" | "sd_IN" | "sd_PK#Deva" | "sd#Deva" | "sd_IN#Sind" | "sd_PK#Sind" | "sd#Sind" | "sdc" | "sdh" | "sdh_IR" | "se" | "se_NO" | "se_NO#Cyrl" | "see" | "seh" | "seh_MZ" | "sei" | "sel" | "ses" | "sg" | "sg_CF" | "sga" | "sgs" | "shi_MA#Arab" | "shi#Arab" | "shi_MA#Latn" | "shi#Latn" | "shi" | "shn" | "shn_MM" | "si" | "si_LK" | "sid" | "sid_ET" | "sk" | "sk_SK" | "sk_CZ" | "sk_RS" | "sl" | "sl_SI" | "sl_AT" | "sli" | "sly" | "sm" | "sm_AS" | "sm_WS" | "sma" | "smj" | "smn" | "sms" | "sn" | "sn_ZW" | "snk" | "snk_ML" | "so" | "so_SO" | "so_DJ" | "so_ET" | "so_SO#Arab" | "so_DJ#Arab" | "so_ET#Arab" | "sq" | "sq_AL" | "sq_XK" | "sq_MK" | "sq_RS" | "sr_ME#Cyrl" | "sr" | "sr_BA#Latn" | "sr_RS#Latn" | "sr_XK#Latn" | "sr#Latn" | "srn" | "srn_SR" | "srr" | "srr_SN" | "ss" | "ss_SZ" | "ss_ZA" | "ssy" | "st" | "st_LS" | "st_ZA" | "stq" | "su" | "su_ID" | "su_ID#Sund" | "suk" | "suk_TZ" | "sus" | "sus_GN" | "sus_GN#Arab" | "sv" | "sv_AX" | "sv_FI" | "sv_SE" | "sw" | "sw_KE" | "sw_TZ" | "sw_UG" | "sw_CD" | "swb" | "swb_YT" | "swb_YT#Latn" | "syr" | "szl" | "ta" | "ta_LK" | "ta_SG" | "ta_IN" | "ta_MY" | "tcy" | "tcy_IN" | "te" | "te_IN" | "tem" | "tem_SL" | "teo" | "teo_UG" | "ter" | "tet" | "tet_TL" | "tg_TJ#Arab" | "tg#Arab" | "tg_TJ" | "tg" | "tg_TJ#Latn" | "tg#Latn" | "th" | "th_TH" | "ti" | "ti_ER" | "ti_ET" | "tig" | "tig_ER" | "tiv" | "tiv_NG" | "tk_TM#Arab" | "tk_AF#Arab" | "tk_IR#Arab" | "tk#Arab" | "tk_TM#Cyrl" | "tk_AF#Cyrl" | "tk_IR#Cyrl" | "tk#Cyrl" | "tk_TM" | "tk_AF" | "tk_IR" | "tk" | "tkl" | "tkl_TK" | "tkr#Cyrl" | "tkr" | "tli" | "tly#Arab" | "tly#Cyrl" | "tly" | "tmh" | "tmh_NE" | "tn" | "tn_BW" | "tn_ZA" | "to" | "to_TO" | "tog" | "tpi" | "tpi_PG" | "tr" | "tr_CY" | "tr_TR" | "tr_DE" | "tr_CY#Arab" | "tr_TR#Arab" | "tr_DE#Arab" | "tru" | "tru#Syrc" | "trv" | "ts" | "ts_MZ" | "ts_ZA" | "tsd" | "tsi" | "tt" | "tt_RU" | "ttt#Cyrl" | "ttt" | "ttt#Arab" | "tum" | "tum_MW" | "tvl" | "tvl_TV" | "twq" | "ty" | "ty_PF" | "tyv" | "tyv_RU" | "tzm_MA" | "tzm" | "tzm_MA#Tfng" | "tzm#Tfng" | "udm" | "udm_RU" | "udm_RU#Latn" | "ug_CN" | "ug" | "ug_CN#Cyrl" | "ug#Cyrl" | "ug_CN#Latn" | "ug#Latn" | "uga" | "uk" | "uk_UA" | "uk_RS" | "umb" | "umb_AO" | "ur" | "ur_PK" | "ur_IN" | "uz_UZ#Arab" | "uz#Arab" | "uz_UZ#Cyrl" | "uz_AF#Cyrl" | "uz#Cyrl" | "uz_AF#Latn" | "uz" | "vai#Latn" | "vai" | "ve" | "ve_ZA" | "vec" | "vep" | "vi" | "vi_VN" | "vi_US" | "vls" | "vls_BE" | "vmf" | "vmf_DE" | "vo" | "vot" | "vro" | "vun" | "wa" | "wae" | "wal" | "wal_ET" | "war" | "war_PH" | "was" | "wbp" | "wo" | "wo_SN" | "wo_SN#Arab" | "wuu" | "wuu_CN" | "xal" | "xh" | "xh_ZA" | "xmf" | "xog" | "xog_UG" | "yao" | "yap" | "yav" | "ybb" | "yi" | "yo" | "yo_NG" | "yrl" | "yue_HK#Hans" | "yue#Hans" | "yue_CN#Hant" | "yue" | "za" | "za_CN" | "za_CN#Hans" | "zap" | "zea" | "zen" | "zgh" | "zgh_MA" | "zh_HK#Hans" | "zh_MO#Hans" | "zh_TW#Hans" | "zh_ID#Hans" | "zh_MY#Hans" | "zh_TH#Hans" | "zh_US#Hans" | "zh_VN#Hans" | "zh_CN#Hant" | "zh_SG#Hant" | "zh_ID" | "zh_MY" | "zh_TH" | "zh_US" | "zh_VN" | "zu" | "zu_ZA" | "zun" | "zza" | "zza_TR" | "az_AZ#Latn" | "bs_BA#Latn" | "pa_IN#Guru" | "pa_PK#Arab" | "shi_MA#Tfng" | "sr_BA#Cyrl" | "sr_ME#Latn" | "sr_RS#Cyrl" | "sr_XK#Cyrl" | "uz_AF#Arab" | "uz_UZ#Latn" | "yue_CN#Hans" | "yue_HK#Hant" | "zh_CN#Hans" | "zh_HK#Hant" | "zh_MO#Hant" | "zh_SG#Hans" | "zh_TW#Hant" | "zh#Hant" | "ar_001" | "en_001" | "yi_001" | "en_150" | "se_SE" | "en_AD" | "en_MM" | "xxa" | "xxb" | "xxc" | "xxd" | "xxe" | "xxf" | "xxg" | Json)[][];
    protected static mapResult(keysList: Key[]): Json;
}

export declare class ApiFiles extends ApiBase {
    /**
     * List all {@link File  files} in the project.
     *
     * @param request Files list request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/files#list-files-in-project  Localazy API Docs}
     */
    list(request: FilesListRequest, config?: RequestConfig): Promise<File_2[]>;
    /**
     * First {@link File  file} in the project.
     *
     * @param request Files list request config.
     * @param config Request config.
     * @throws Error At least one file must exist, otherwise an error is thrown.
     *
     * @see {@link https://localazy.com/docs/api/files#list-files-in-project  Localazy API Docs}
     */
    first(request: FilesListRequest, config?: RequestConfig): Promise<File_2>;
    /**
     * List all {@link Key  keys} for the language in the {@link File  file}.
     *
     * @param request File list keys request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/files#retrieve-a-list-of-keys-and-translations-from-file
     * | Localazy API Docs}
     */
    listKeys(request: FileListKeysRequest, config?: RequestConfig): Promise<Key[]>;
    /**
     * List all {@link Key  keys} for the language in the {@link File  file}. Result is paginated.
     *
     * @param request File list keys request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/files#retrieve-a-list-of-keys-and-translations-from-file
     * | Localazy API Docs}
     */
    listKeysPage(request: FileListKeysRequest, config?: RequestConfig): Promise<KeysPaginated>;
    /**
     * Get the contents of the {@link File  file}.
     *
     * @param request File get contents request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/files#list-file-content  Localazy API Docs}
     */
    getContents(request: FileGetContentsRequest, config?: RequestConfig): Promise<Blob_2>;
}

export declare class ApiFormats extends ApiBase {
    /**
     * List all {@link Format  formats} and related options.
     *
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/import#list-available-file-types  Localazy API Docs}
     */
    list(config?: RequestConfig): Promise<Format[]>;
}

export declare class ApiGlossary extends ApiBase {
    /**
     * List all {@link GlossaryRecord  glossary records} in the project.
     *
     * @param request Glossary records list request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/glossary#list-all-glossary-terms  Localazy API Docs}
     */
    list(request: GlossaryListRequest, config?: RequestConfig): Promise<GlossaryRecord[]>;
    /**
     * Find {@link GlossaryRecord  glossary record} specified by `id`.
     *
     * @param request Glossary record find request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/glossary#get-glossary-term  Localazy API Docs}
     */
    find(request: GlossaryFindRequest, config?: RequestConfig): Promise<GlossaryRecord>;
    /**
     * Create {@link GlossaryRecord  glossary record}.
     * There is a limit of 1000 glossary records per project.
     *
     * @param request Glossary record create request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/glossary#create-new-glossary-term  Localazy API Docs}
     */
    create(request: GlossaryCreateRequest, config?: RequestConfig): Promise<string>;
    /**
     * Update {@link GlossaryRecord  glossary record} specified by `id`.
     *
     * @param request Glossary record update request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/glossary#update-glossary-term  Localazy API Docs}
     */
    update(request: GlossaryUpdateRequest, config?: RequestConfig): Promise<void>;
    /**
     * Delete {@link GlossaryRecord  glossary record} specified by `id`.
     *
     * @param request Glossary record delete request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/glossary#delete-glossary-term  Localazy API Docs}
     */
    delete(request: GlossaryDeleteRequest, config?: RequestConfig): Promise<void>;
}

export declare class ApiImport extends ApiBase {
    /**
     * Import source keys from JSON object.
     *
     * @param request Import JSON request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/import#import-content-to-a-project  Localazy API Docs}
     */
    json(request: ImportJsonRequest, config?: RequestConfig): Promise<ReturnType<ApiImport['getImportedFile']>>;
    /**
     * Get progress of the import session.
     *
     * @param request Import session progress request.
     * @param config Request config.
     *
     * Not available in the Localazy API Docs yet.
     */
    getProgress(request: ImportProgressRequest, config?: RequestConfig): Promise<UploadSessionStatus>;
    protected getImportedFile(project: string | Project, data: ImportData, importBatch: string): Promise<File_2 & {
        importBatch: string;
    }>;
}

export declare class ApiKeys extends ApiBase {
    /**
     * Update {@link Key  key}.
     *
     * @param request Key update request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/source-keys#update-source-key  Localazy API Docs}
     */
    update(request: KeyUpdateRequest, config?: RequestConfig): Promise<void>;
    /**
     * Delete {@link Key  key}.
     *
     * @param request Key delete request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/source-keys#delete-source-key  Localazy API Docs}
     */
    delete(request: KeyDeleteRequest, config?: RequestConfig): Promise<void>;
    /**
     * Deprecate keys.
     *
     * @param request Key deprecate request config.
     * @param config Request config.
     */
    deprecate(request: KeyDeprecateRequest, config?: RequestConfig): Promise<void>;
}

export declare class ApiProjects extends ApiBase {
    /**
     * List all {@link Project  projects}.
     *
     * @param request Projects list request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/projects#list-projects  Localazy API Docs}
     */
    list(request?: ProjectsListRequest, config?: RequestConfig): Promise<Project[]>;
    /**
     * First {@link Project  project}.
     *
     * @param request Projects list request config.
     * @param config Request config.
     * @throws Error At least one project must exist, otherwise an error is thrown.
     *
     * @see {@link https://localazy.com/docs/api/projects#list-projects  Localazy API Docs}
     */
    first(request?: ProjectsListRequest, config?: RequestConfig): Promise<Project>;
}

export declare class ApiScreenshots extends ApiBase {
    /**
     * List all {@link Screenshot  screenshots} in the project.
     *
     * @param request Screenshots list request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#list-screenshots  Localazy API Docs}
     */
    list(request: ScreenshotsListRequest, config?: RequestConfig): Promise<Screenshot[]>;
    /**
     * List all {@link ScreenshotTag  screenshots tags} in the project.
     *
     * @param request Screenshots list tags request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#list-screenshots-tags  Localazy API Docs}
     */
    listTags(request: ScreenshotsListTagsRequest, config?: RequestConfig): Promise<ScreenshotTag[]>;
    /**
     * Create {@link Screenshot  screenshot}.
     *
     * @param request Screenshot create request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#create-a-new-screenshot  Localazy API Docs}
     */
    create(request: ScreenshotCreateRequest, config?: RequestConfig): Promise<string>;
    /**
     * Update the image data of {@link Screenshot  screenshot}.
     *
     * @param request Screenshot update image data request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#update-the-image-of-an-existing-screenshot
     * | Localazy API Docs}
     */
    updateImageData(request: ScreenshotUpdateImageDataRequest, config?: RequestConfig): Promise<void>;
    /**
     * Update {@link Screenshot  screenshot}.
     * Image data are updated with `screenshots.updateImageData`.
     *
     * @param request Screenshot update request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#update-an-existing-screenshot  Localazy API Docs}
     */
    update(request: ScreenshotUpdateRequest, config?: RequestConfig): Promise<void>;
    /**
     * Delete {@link Screenshot  screenshot}.
     *
     * @param request Screenshot delete request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/screenshot-management#delete-a-screenshot  Localazy API Docs}
     */
    delete(request: ScreenshotDeleteRequest, config?: RequestConfig): Promise<void>;
}

export declare class ApiWebhooks extends ApiBase {
    /**
     * List all {@link Webhook webhooks} in the project.
     *
     * @param request Webhooks list request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/webhooks-api#list-webhooks-configuration  Localazy API Docs}
     */
    list(request: WebhooksListRequest, config?: RequestConfig): Promise<Webhook[]>;
    /**
     * Update all {@link Webhook  webhooks} in the project.
     *
     * @param request Webhooks update request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/webhooks-api#update-webhooks-configuration  Localazy API Docs}
     */
    update(request: WebhooksUpdateRequest, config?: RequestConfig): Promise<void>;
    /**
     * Get secret for {@link Webhook  webhooks} in the project.
     * Localazy signs the webhook events it sends to your endpoints and adds a signature in the request header
     * {@link https://localazy.com/docs/api/webhooks-api#security}.
     *
     * @param request Webhooks get secret request config.
     * @param config Request config.
     *
     * @see {@link https://localazy.com/docs/api/webhooks-api#webhook-secrets  Localazy API Docs}
     */
    getSecret(request: WebhooksGetSecretRequest, config?: RequestConfig): Promise<WebhooksSecret>;
}

export declare const delay: (ms?: number) => Promise<unknown>;

export declare type ExportJsonRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    file: File_2 | string;
    langs: `${Locales}`[];
};

export declare class FetchHttpAdapter implements IHttpAdapter<RequestConfig> {
    protected apiUrl: string;
    protected authToken: string;
    constructor(options: ApiClientOptions);
    get(url: string, config?: RequestConfig): Promise<object | string | Blob>;
    post(url: string, data: unknown, config?: RequestConfig): Promise<object | string | Blob>;
    put(url: string, data: unknown, config?: RequestConfig): Promise<object | string | Blob>;
    delete(url: string, config?: RequestConfig): Promise<object | string | Blob>;
    protected urlFactory(url: string): string;
    protected configFactory(method: string, config?: RequestConfig, data?: unknown): RequestInit;
    protected makeRequest(method: string, url: string, config?: RequestConfig, data?: unknown): Promise<object | string | Blob>;
}

declare type File_2 = {
    /**
     * Unique identifier of the file.
     */
    id: string;
    /**
     * Type of the file; please refer to file formats. Value complex is used for complex files described above.
     */
    type: string;
    /**
     * Name of the file.
     */
    name: string;
    /**
     * Stored path to the file. Optional and only available if provided.
     */
    path?: string;
    /**
     * The module the file belongs to. Optional and only available if provided.
     */
    module?: string;
    /**
     * A list of associated product flavors. Optional and only available if provided.
     */
    productFlavors?: string;
    /**
     * A build type the file is associated with. Optional and only available if provided.
     */
    buildType?: string;
};
export { File_2 as File }

export declare type FileGetContentsRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * File object or File ID.
     */
    file: File_2 | string;
    /**
     * Locale code. See Locales enum with all available codes.
     */
    lang: `${Locales}`;
};

export declare type FileListKeysRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * File object or File ID.
     */
    file: File_2 | string;
    /**
     * Locale code. See Locales enum with all available codes.
     */
    lang: `${Locales}`;
    /**
     * Returns also deprecated keys.
     */
    deprecated?: boolean;
    /**
     * Number of keys to be returned in a single call (max 1000). Default 1000.
     */
    limit?: number;
    /**
     * Used for paging long lists.
     */
    next?: string;
    /**
     * Receive additional info such as translation note, whether it's hidden etc.
     */
    extra_info?: boolean;
    /**
     * Receive also metadata for the key.
     */
    metadata?: boolean;
};

export declare type FilesListRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type Format = {
    type: string;
    name: string;
    supportStrings: boolean;
    supportPlurals: boolean;
    supportArrays: boolean;
    supportStructuredKeys: boolean;
    plurals?: FormatPluralMeta[];
    arrays?: FormatArrayMeta[];
    keyTransformers?: FormatKeyTransformerMeta[];
};

export declare type FormatArrayMeta = {
    type: string;
    name: string;
    isDefault: boolean;
};

export declare type FormatKeyTransformerMeta = {
    type: string;
    name: string;
    isDefault: boolean;
};

export declare type FormatPluralMeta = {
    type: string;
    name: string;
    isDefault: boolean;
    requiredParams?: FormatPluralMetaRequiredParam[];
};

export declare type FormatPluralMetaRequiredParam = {
    type: string;
    description: string;
};

export declare type GlossaryCreateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Description of the glossary term.
     */
    description: string;
    /**
     * Whether the term should be translated or left as is.
     */
    translateTerm: boolean;
    /**
     * Wheter the term is case-sensitive or not.
     */
    caseSensitive: boolean;
    /**
     * Contains an array of the term and it’s translations.
     */
    term: GlossaryRecordTerm[];
};

export declare type GlossaryDeleteRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * GlossaryRecord object or GlossaryRecord ID.
     */
    glossaryRecord: GlossaryRecord | string;
};

export declare type GlossaryFindRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * GlossaryRecord object or GlossaryRecord ID.
     */
    glossaryRecord: GlossaryRecord | string;
};

export declare type GlossaryListRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type GlossaryRecord = {
    /**
     * GlossaryRecord ID.
     */
    id: string;
    /**
     * Description of the glossary term.
     */
    description: string;
    /**
     * Whether the term should be translated or left as is.
     */
    translateTerm: boolean;
    /**
     * Wheter the term is case-sensitive or not.
     */
    caseSensitive: boolean;
    /**
     * Contains an array of the term and it’s translations.
     */
    term: GlossaryRecordTerm[];
};

export declare type GlossaryRecordTerm = {
    /**
     * Language code in which the term is used. Make sure to include source language.
     */
    lang: `${Locales}`;
    /**
     * The value of the glossary term.
     */
    term: string;
};

export declare type GlossaryUpdateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * GlossaryRecord object or GlossaryRecord ID.
     */
    glossaryRecord: GlossaryRecord | string;
    /**
     * Description of the glossary term.
     */
    description: string;
    /**
     * Whether the term should be translated or left as is.
     */
    translateTerm: boolean;
    /**
     * Wheter the term is case-sensitive or not.
     */
    caseSensitive: boolean;
    /**
     * Contains an array of the term and it’s translations.
     */
    term: GlossaryRecordTerm[];
};

export declare enum I18nDeprecate {
    NONE = "none",
    FILE = "file",
    PROJECT = "project"
}

/**
 * @example
 * ```json
 * {
 *   "en": {
 *     "headers": {
 *       "name": "Name"
 *     },
 *     "status": [
 *       "Published",
 *       "Draft"
 *     ],
 *     "tooltips.company": "Company"
 *   }
 * }
 * ```
 */
export declare type I18nJson = Partial<LocalesKeys> & Json;

export declare interface IHttpAdapter<T = object> {
    get: (url: string, config?: T) => Promise<object | string | Blob>;
    post: (url: string, data: unknown, config?: T) => Promise<object | string | Blob>;
    put: (url: string, data: unknown, config?: T) => Promise<object | string | Blob>;
    delete: (url: string, config?: T) => Promise<object | string | Blob>;
}

export declare type ImportContentOptions = {
    /**
     * The file type to be used for backing the strings. @see https://localazy.com/docs/api/import#response-1
     * Default: 'api'
     */
    type?: string;
    /**
     * Plural type to be used for encoding plurals in the output file. Available options depend on the type.
     * @see [Formats](https://localazy.com/docs/api/import#retrieve-a-list-of-available-file-types)
     */
    plural?: string;
    /**
     * Defines how to encode string arrays. Available options depend on the type
     * @see [Formats](https://localazy.com/docs/api/import#retrieve-a-list-of-available-file-types)
     */
    array?: string;
    /**
     * Defines how to transform structured keys for formats into plain string ones for a format that doesn't
     * support structured keys. Available options depend on the type.
     * @see [Formats](https://localazy.com/docs/api/import#retrieve-a-list-of-available-file-types)
     */
    keyTransformer?: string;
    /**
     * Key-value map of additional parameters that may be necessary for array, plural and keyTransformer.
     * @see [Formats](https://localazy.com/docs/api/import#retrieve-a-list-of-available-file-types)
     */
    params?: Record<string, any>;
    /**
     * List of additional features for the given type. Available options depend on the type
     * @see [Integration quick starts](https://localazy.com/docs/integrations)
     */
    features?: string[];
};

export declare type ImportData = ImportI18nOptions & {
    files: ImportDataFile[];
};

export declare const importDataFactory: (request: ImportJsonRequest, chunks: I18nJson[]) => ImportData;

export declare type ImportDataFile = ImportFileOptions & {
    content: ImportContentOptions & I18nJson;
};

export declare type ImportFileOptions = {
    /**
     * The file name.
     *
     * Default: 'content.json'
     */
    name?: string;
    /**
     * The path to the file without the file name.
     */
    path?: string;
    /**
     * Optional module specification.
     */
    module?: string;
    /**
     * Optional build type.
     */
    buildType?: string;
    /**
     * Optional product flavors.
     */
    productFlavors?: string[];
};

export declare type ImportI18nOptions = {
    /**
     * Import all translations to go through the review process.
     * Useful when you are unsure about their quality and want to do an extra check.
     * Default: false
     */
    importAsNew?: boolean;
    /**
     * Import all translations and set them as the current version.
     * By default, Localazy doesn't overwrite existing current translations and lets you decide through
     * the review process.
     * Default: false
     */
    forceCurrent?: boolean;
    /**
     * Overwrite the source language translations even if there are existing human changes.
     * This option is useful when the source of truth is not Localazy, and it's required to
     * always synchronize the source language translations.
     * Default: false
     */
    forceSource?: boolean;
    /**
     * Do not import translations that are the same as the source language content.
     * Default: true
     */
    filterSource?: boolean;
    /**
     * Tell the server to deprecate any key missing in this upload batch
     * Default: 'none'
     */
    deprecate?: `${I18nDeprecate}`;
};

export declare type ImportJsonRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    json: I18nJson;
    i18nOptions?: ImportI18nOptions;
    fileOptions?: ImportFileOptions;
    contentOptions?: ImportContentOptions;
};

export declare type ImportProgressRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Import session identifier.
     */
    importBatch: string;
};

export declare type Json<K extends string | number | symbol = any, T = any> = Record<K, T | any>;

export declare class JsonUtils {
    /**
     * Physical limit is 100000.
     */
    static readonly CHUNK_LIMIT: number;
    static slice(json: I18nJson): I18nJson[];
    /**
     * Example input:
     * const json = {
     *   en: {
     *     headers: {
     *       name: 'Name',
     *       user: 'User',
     *     },
     *     'headers.company': 'Company',
     *     user: {
     *       role: ['Admin', 'Editor'],
     *     },
     *   },
     * };
     *
     * Example result:
     * const result = [
     *   { en: { headers: { name: 'Name' } } },
     *   { en: { headers: { user: 'User' } } },
     *   { en: { 'headers.company': 'Company' } },
     *   { en: { user: { role: ['Admin', 'Editor'] } } },
     * ];
     */
    protected static sliceByValue(json: Json, keys?: string[]): Json[];
    protected static mergeChunkValues(values: Json[]): Json;
}

export declare type Key = {
    /**
     * Key ID.
     */
    id: string;
    /**
     * Nested keys are stored as array entries. Simple keys are arrays containing single item.
     */
    key: string[];
    value: KeyValue;
    /**
     * Associated comment for translators.
     * Only available when extra_info=true.
     */
    comment?: string;
    /**
     * Information about the deprecation state of the key (-1 = not deprecated).
     * Only available when extra_info=true.
     */
    deprecated?: number;
    /**
     * Information about whether the key is marked as hidden or visible on Localazy.
     * Only available when extra_info=true.
     */
    hidden?: boolean;
    /**
     * Information about the character limit (-1 = no limit specified).
     * Only available when extra_info=true.
     */
    limit?: number;
};

export declare type KeyDeleteRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Key object or Key ID.
     */
    key: Key | string;
};

export declare type KeyDeprecateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * List of keys identifiers to deprecate.
     */
    phrases: Key[] | Pick<Key, 'id'>[] | string[];
};

export declare type KeysPaginated = {
    keys: Key[];
    /**
     * Next is the paging key. The field is not contained if there are no more pages.
     */
    next?: string;
};

export declare type KeyUpdateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Key object or Key ID.
     */
    key: Key | string;
    /**
     * Set to 0 or greater to mark the key as deprecated in the corresponding version;
     * set to -1 to mark the key as not deprecated.
     */
    deprecated?: number;
    /**
     * Set to true to mark the key as hidden on Localazy.
     */
    hidden?: boolean;
    /**
     * Provide custom comment for translators.
     */
    comment?: string;
    /**
     * Change the character limit or set to -1 to disable it.
     */
    limit?: number;
};

export declare type KeyValue = string | string[] | Record<string, any>;

export declare type Language = {
    /**
     * Internal identifier of the language on Localazy.
     */
    id: number;
    /**
     * Locale code.
     */
    code: string;
    /**
     * English name of the language / locale.
     */
    name: string;
    /**
     * Number of active keys.
     */
    active: number;
    /**
     * Number of keys waiting for review.
     */
    review: number;
    /**
     * Number of keys with approved version/translation.
     */
    current: number;
    /**
     * Number of keys that are already translated (but may not be approved yet).
     */
    translated: number;
    /**
     * Number of keys in the source changed state.
     */
    sourceChanged: number;
    /**
     * Number of keys in the need review state.
     */
    needImprovement: number;
};

export { Locales }

export declare type LocalesKeys = Record<Locales, any>;

export declare type Organization = {
    availableKeys: number;
    usedKeys: number;
    figma: boolean;
    connectedApps: boolean;
    releaseTags: boolean;
    formatConversions: boolean;
    screenshots: boolean;
    screenshotsForFigma: boolean;
    additionalMt: boolean;
    mtPretranslate: boolean;
    webhooks: boolean;
};

export declare type Project = {
    /**
     * Unique project identifier.
     */
    id: string;
    /**
     * Identifier of the organization the project belongs to.
     */
    orgId: string;
    /**
     * Project name.
     */
    name: string;
    /**
     * Project slug.
     */
    slug: string;
    /**
     * Full URL to the project image or empty string if there is no image available.
     */
    image: string;
    /**
     * Full URL to the project on Localazy.
     */
    url: string;
    /**
     * Project description.
     */
    description: string;
    /**
     * Project type.
     */
    type: `${ProjectType}`;
    /**
     * Project tone.
     */
    tone: `${ProjectTone}`;
    /**
     * Role of the current user accessing API (based on the token).
     */
    role: `${UserRole}`;
    /**
     * The identifier of the source language of the project.
     */
    sourceLanguage: number;
    /**
     * List of enabled features and available source keys.
     * Only available if the organization query parameter is set to true.
     */
    organization: Organization;
    /**
     * List of all languages and their current state. Only available if the languages query parameter is set to true.
     */
    languages: Language[];
};

export declare type ProjectsListRequest = {
    /**
     * Include the organization object in the output.
     */
    organization?: boolean;
    /**
     * Include languages in the output.
     */
    languages?: boolean;
};

export declare enum ProjectTone {
    NOT_SPECIFIED = "not_specified",
    FORMAL = "formal",
    INFORMAL = "informal"
}

export declare enum ProjectType {
    PUBLIC = "public",
    PRIVATE = "private",
    RESTRICTED = "restricted"
}

export declare type RequestConfig = {
    headers?: Record<string, string>;
    params?: Record<string, string>;
    responseType?: 'json' | 'text' | 'blob';
};

export declare type Screenshot = {
    id: string;
    url: string;
    comment: string;
    phrases: ScreenshotPhrase[];
    tags: ScreenshotTag[];
    ocrData: string;
    metadata: ScreenshotMetadata;
};

export declare type ScreenshotCreateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Image in data format with base64 encoding: `data:image/jpeg;base64...`.
     * JPEG or PNG images are supported.
     * Must be larger or equal to 36x36.
     * Must be smaller or equal to 4096x4096.
     * Must be smaller than 5 MB.
     */
    encodedData: string;
};

export declare type ScreenshotDeleteRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Screenshot object or Screenshot ID.
     */
    screenshot: Screenshot | string;
};

export declare type ScreenshotMetadata = Record<string, string>;

export declare type ScreenshotPhrase = string;

export declare type ScreenshotsListRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type ScreenshotsListTagsRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type ScreenshotTag = string;

export declare type ScreenshotUpdateImageDataRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Screenshot object or Screenshot ID.
     */
    screenshot: Screenshot | string;
    /**
     * Image in data format with base64 encoding: `data:image/jpeg;base64...`.
     * JPEG or PNG images are supported.
     * Must be larger or equal to 36x36.
     * Must be smaller or equal to 4096x4096.
     * Must be smaller than 5 MB.
     */
    encodedData: string;
};

export declare type ScreenshotUpdateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * Screenshot object or Screenshot ID.
     */
    screenshot: Screenshot | string;
    /**
     * Custom comment for the screenshot
     */
    comment?: string;
    /**
     * Add or remove tags. Adding has priority over removing. Cannot be used together with tags.
     */
    addTags?: ScreenshotTag[];
    removeTags?: ScreenshotTag[];
    /**
     * Replace tags with the current value. Cannot be used together with addTags and/or removeTags.
     */
    tags?: ScreenshotTag[];
    /**
     * Add or remove linked phrases. Adding has priority over removing. Cannot be used together with phrases.
     */
    addPhrases?: ScreenshotPhrase[];
    removePhrases?: ScreenshotPhrase[];
    /**
     * Replace linked phrases with the current value. Cannot be used together with addPhrases and/or removePhrases.
     */
    phrases?: ScreenshotPhrase[];
    /**
     * Add or remove metadata. Adding has priority over removing. Cannot be used together with metadata.
     */
    addMetadata?: ScreenshotMetadata;
    removeMetadata?: string[];
    /**
     * Replace metadata with the current value. Cannot be used together with addMetadata and/or removeMetadata.
     */
    metadata?: ScreenshotMetadata;
};

export declare type UploadSessionStatus = {
    /**
     * Possible status of the upload session.
     */
    status: UploadStatus;
    /**
     * Number of keys added in the upload session.
     */
    added?: number;
    /**
     * Number of keys updated in the upload session.
     */
    updated?: number;
    /**
     * Number of keys deprecated in the upload session.
     */
    deprecated?: number;
};

export declare enum UploadStatus {
    NOT_FOUND = "not_found",
    SCHEDULED = "scheduled",
    IN_PROGRESS = "in_progress",
    DONE = "done",
    INVALID_ID = "invalid_id",
    ERROR = "error"
}

export declare enum UserRole {
    NONE = "none",
    TRANSLATOR = "translator",
    TRUSTED_TRANSLATOR = "trusted_translator",
    REVIEWER = "reviewer",
    MANAGER = "manager",
    OWNER = "owner",
    DEVELOPER = "developer"
}

export declare type Webhook = {
    /**
     * Whether the webhook is enabled or disabled.
     */
    enabled: boolean;
    /**
     * Custom ID that is passed when the webhook is invoked. Empty by default.
     */
    customId?: string;
    /**
     * Description of the webhook. Empty by default.
     */
    description?: string;
    /**
     * URL which is invoked on the webhook event.
     */
    url: string;
    /**
     * The list of event types for which this webhook is invoked.
     */
    events: `${WebhookEvent}`[];
};

export declare enum WebhookEvent {
    PROJECT_PUBLISHED = "project_published",
    IMPORT_FINISHED = "import_finished",
    IMPORT_FINISHED_EMPTY = "import_finished_empty",
    COMMENT_ADDED = "comment_added",
    TAG_PROMOTED = "tag_promoted"
}

export declare type WebhooksGetSecretRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type WebhooksListRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
};

export declare type WebhooksSecret = string;

export declare type WebhooksUpdateRequest = {
    /**
     * Project object or Project ID.
     */
    project: Project | string;
    /**
     * An array of Webhooks.
     */
    items: Webhook[];
};

export { }
