declare const languages: {
    auto: string;
    af: string;
    sq: string;
    am: string;
    ar: string;
    hy: string;
    as: string;
    ay: string;
    az: string;
    bm: string;
    eu: string;
    be: string;
    bn: string;
    bho: string;
    bs: string;
    bg: string;
    ca: string;
    ceb: string;
    ny: string;
    zh: string;
    zh_HANT: string;
    co: string;
    hr: string;
    cs: string;
    da: string;
    dv: string;
    doi: string;
    nl: string;
    en: string;
    eo: string;
    et: string;
    ee: string;
    tl: string;
    fi: string;
    fr: string;
    fy: string;
    gl: string;
    ka: string;
    de: string;
    el: string;
    gn: string;
    gu: string;
    ht: string;
    ha: string;
    haw: string;
    iw: string;
    hi: string;
    hmn: string;
    hu: string;
    is: string;
    ig: string;
    ilo: string;
    id: string;
    ga: string;
    it: string;
    ja: string;
    jw: string;
    kn: string;
    kk: string;
    km: string;
    rw: string;
    gom: string;
    ko: string;
    kri: string;
    ku: string;
    ckb: string;
    ky: string;
    lo: string;
    la: string;
    lv: string;
    ln: string;
    lt: string;
    lg: string;
    lb: string;
    mk: string;
    mai: string;
    mg: string;
    ms: string;
    ml: string;
    mt: string;
    mi: string;
    mr: string;
    "mni-Mtei": string;
    lus: string;
    mn: string;
    my: string;
    ne: string;
    no: string;
    or: string;
    om: string;
    ps: string;
    fa: string;
    pl: string;
    pt: string;
    pa: string;
    qu: string;
    ro: string;
    ru: string;
    sm: string;
    sa: string;
    gd: string;
    nso: string;
    sr: string;
    st: string;
    sn: string;
    sd: string;
    si: string;
    sk: string;
    sl: string;
    so: string;
    es: string;
    su: string;
    sw: string;
    sv: string;
    tg: string;
    ta: string;
    tt: string;
    te: string;
    th: string;
    ti: string;
    ts: string;
    tr: string;
    tk: string;
    ak: string;
    uk: string;
    ur: string;
    ug: string;
    uz: string;
    vi: string;
    cy: string;
    xh: string;
    yi: string;
    yo: string;
    zu: string;
}, exceptions: {
    source: {
        zh_HANT: string;
    };
    target: {
        auto: string;
    };
}, mappings: {
    request: {
        zh: string;
        zh_HANT: string;
    };
    response: {
        "zh-CN": string;
        "zh-TW": string;
    };
};
export declare const LanguageType: {
    readonly SOURCE: "source";
    readonly TARGET: "target";
};
type LangType = (typeof LanguageType)[keyof typeof LanguageType];
/**
 * Represents a valid language code in the system
 *
 * This type uses conditional types to filter out exception codes
 * based on the language context (source or target)
 *
 * @template T - Optional language type (source/target)
 *
 * @example
 * ```typescript
 * // All language codes including "auto"
 * const anyCode: LangCode = "en";
 *
 * // Source language codes (excludes zh_HANT which maps to zh)
 * const sourceCode: LangCode<"source"> = "en";
 *
 * // Target language codes (excludes "auto" which maps to "en")
 * const targetCode: LangCode<"target"> = "fr";
 * ```
 */
export type LangCode<T extends LangType | void = void> = T extends LangType ? Exclude<keyof typeof languages, keyof (typeof exceptions)[T]> : keyof typeof languages;
/**
 * Represents Google Translate-specific language codes
 *
 * Handles the mapping between internal codes and Google API expectations
 *
 * @template T - Language code or type
 *
 * @example
 * ```typescript
 * // Maps "zh" to "zh-CN" for Google API
 * const googleCode: LangCodeGoogle = mapGoogleCode("zh");
 * ```
 */
export type LangCodeGoogle<T extends LangCode | LangType = LangCode> = T extends LangType ? Exclude<LangCode<T>, keyof (typeof mappings)['request']> | keyof (typeof mappings)['response'] : Exclude<T, keyof (typeof mappings)['request']> | keyof (typeof mappings)['response'];
/**
 * Verifies if a string is a valid language code in our system
 *
 * @param code - Code to validate (e.g. "en", "zh", "auto")
 * @param langType - Optional language type to check against specific exceptions
 * @returns Type guard confirming code is valid
 *
 * @example
 * ```typescript
 * // Check if valid for any context
 * if (isValidCode("xyz")) {
 *   // Not valid, won't enter this block
 * }
 *
 * // Check if valid as a source language
 * if (isValidCode("auto", LanguageType.SOURCE)) {
 *   // Valid as source, will enter this block
 * }
 * ```
 */
export declare const isValidCode: <T extends LangType>(code: string | null | undefined, langType?: T) => code is LangCode<T>;
/**
 * Replaces language codes with their exceptions based on language type
 *
 * Handles special cases like:
 * - Converting Traditional Chinese (zh_HANT) to standard Chinese (zh) for source languages
 * - Converting "auto" to "en" for target languages
 *
 * @param langType - Source or target language type
 * @param langCode - Original language code
 * @returns Potentially replaced language code appropriate for the context
 *
 * @example
 * ```typescript
 * // Traditional Chinese gets replaced with standard Chinese for source
 * replaceExceptedCode(LanguageType.SOURCE, "zh_HANT") // returns "zh"
 *
 * // "auto" gets replaced with "en" for target
 * replaceExceptedCode(LanguageType.TARGET, "auto") // returns "en"
 * ```
 *
 * @see {@link exceptions} for the full mapping of exceptions
 */
export declare const replaceExceptedCode: <T extends LangType>(langType: T, langCode: LangCode) => LangCode<T>;
/**
 * Maps internal language codes to Google Translate API codes
 *
 * Google Translate API uses slightly different codes for some languages.
 * This function converts our internal codes to match Google's expectations.
 *
 * @param langCode - Internal language code
 * @returns Google-compatible language code
 *
 * @example
 * ```typescript
 * mapGoogleCode("zh") // returns "zh-CN"
 * mapGoogleCode("zh_HANT") // returns "zh-TW"
 * mapGoogleCode("en") // returns "en" (unchanged)
 * ```
 *
 * @see {@link mappings.request} for the full mapping table
 */
export declare const mapGoogleCode: <T extends LangCode>(langCode: T) => LangCodeGoogle<T>;
/**
 * Maps Google Translate API response codes back to internal language codes
 *
 * The reverse operation of {@link mapGoogleCode} - converts Google's specific
 * codes back to our internal representation for consistent handling.
 *
 * @param langCode - Google API language code
 * @returns Internal language code
 *
 * @example
 * ```typescript
 * mapLingvaCode("zh-CN") // returns "zh"
 * mapLingvaCode("zh-TW") // returns "zh"
 * mapLingvaCode("en") // returns "en" (unchanged)
 * ```
 *
 * @see {@link mappings.response} for the full mapping table
 */
export declare const mapLingvaCode: <T extends LangType>(langCode: LangCodeGoogle<T>) => LangCode<T>;
export declare const languageList: {
    all: {
        auto: string;
        af: string;
        sq: string;
        am: string;
        ar: string;
        hy: string;
        as: string;
        ay: string;
        az: string;
        bm: string;
        eu: string;
        be: string;
        bn: string;
        bho: string;
        bs: string;
        bg: string;
        ca: string;
        ceb: string;
        ny: string;
        zh: string;
        zh_HANT: string;
        co: string;
        hr: string;
        cs: string;
        da: string;
        dv: string;
        doi: string;
        nl: string;
        en: string;
        eo: string;
        et: string;
        ee: string;
        tl: string;
        fi: string;
        fr: string;
        fy: string;
        gl: string;
        ka: string;
        de: string;
        el: string;
        gn: string;
        gu: string;
        ht: string;
        ha: string;
        haw: string;
        iw: string;
        hi: string;
        hmn: string;
        hu: string;
        is: string;
        ig: string;
        ilo: string;
        id: string;
        ga: string;
        it: string;
        ja: string;
        jw: string;
        kn: string;
        kk: string;
        km: string;
        rw: string;
        gom: string;
        ko: string;
        kri: string;
        ku: string;
        ckb: string;
        ky: string;
        lo: string;
        la: string;
        lv: string;
        ln: string;
        lt: string;
        lg: string;
        lb: string;
        mk: string;
        mai: string;
        mg: string;
        ms: string;
        ml: string;
        mt: string;
        mi: string;
        mr: string;
        "mni-Mtei": string;
        lus: string;
        mn: string;
        my: string;
        ne: string;
        no: string;
        or: string;
        om: string;
        ps: string;
        fa: string;
        pl: string;
        pt: string;
        pa: string;
        qu: string;
        ro: string;
        ru: string;
        sm: string;
        sa: string;
        gd: string;
        nso: string;
        sr: string;
        st: string;
        sn: string;
        sd: string;
        si: string;
        sk: string;
        sl: string;
        so: string;
        es: string;
        su: string;
        sw: string;
        sv: string;
        tg: string;
        ta: string;
        tt: string;
        te: string;
        th: string;
        ti: string;
        ts: string;
        tr: string;
        tk: string;
        ak: string;
        uk: string;
        ur: string;
        ug: string;
        uz: string;
        vi: string;
        cy: string;
        xh: string;
        yi: string;
        yo: string;
        zu: string;
    };
    source: {
        auto: string;
        af: string;
        sq: string;
        am: string;
        ar: string;
        hy: string;
        as: string;
        ay: string;
        az: string;
        bm: string;
        eu: string;
        be: string;
        bn: string;
        bho: string;
        bs: string;
        bg: string;
        ca: string;
        ceb: string;
        ny: string;
        zh: string;
        zh_HANT: string;
        co: string;
        hr: string;
        cs: string;
        da: string;
        dv: string;
        doi: string;
        nl: string;
        en: string;
        eo: string;
        et: string;
        ee: string;
        tl: string;
        fi: string;
        fr: string;
        fy: string;
        gl: string;
        ka: string;
        de: string;
        el: string;
        gn: string;
        gu: string;
        ht: string;
        ha: string;
        haw: string;
        iw: string;
        hi: string;
        hmn: string;
        hu: string;
        is: string;
        ig: string;
        ilo: string;
        id: string;
        ga: string;
        it: string;
        ja: string;
        jw: string;
        kn: string;
        kk: string;
        km: string;
        rw: string;
        gom: string;
        ko: string;
        kri: string;
        ku: string;
        ckb: string;
        ky: string;
        lo: string;
        la: string;
        lv: string;
        ln: string;
        lt: string;
        lg: string;
        lb: string;
        mk: string;
        mai: string;
        mg: string;
        ms: string;
        ml: string;
        mt: string;
        mi: string;
        mr: string;
        "mni-Mtei": string;
        lus: string;
        mn: string;
        my: string;
        ne: string;
        no: string;
        or: string;
        om: string;
        ps: string;
        fa: string;
        pl: string;
        pt: string;
        pa: string;
        qu: string;
        ro: string;
        ru: string;
        sm: string;
        sa: string;
        gd: string;
        nso: string;
        sr: string;
        st: string;
        sn: string;
        sd: string;
        si: string;
        sk: string;
        sl: string;
        so: string;
        es: string;
        su: string;
        sw: string;
        sv: string;
        tg: string;
        ta: string;
        tt: string;
        te: string;
        th: string;
        ti: string;
        ts: string;
        tr: string;
        tk: string;
        ak: string;
        uk: string;
        ur: string;
        ug: string;
        uz: string;
        vi: string;
        cy: string;
        xh: string;
        yi: string;
        yo: string;
        zu: string;
    };
    target: {
        auto: string;
        af: string;
        sq: string;
        am: string;
        ar: string;
        hy: string;
        as: string;
        ay: string;
        az: string;
        bm: string;
        eu: string;
        be: string;
        bn: string;
        bho: string;
        bs: string;
        bg: string;
        ca: string;
        ceb: string;
        ny: string;
        zh: string;
        zh_HANT: string;
        co: string;
        hr: string;
        cs: string;
        da: string;
        dv: string;
        doi: string;
        nl: string;
        en: string;
        eo: string;
        et: string;
        ee: string;
        tl: string;
        fi: string;
        fr: string;
        fy: string;
        gl: string;
        ka: string;
        de: string;
        el: string;
        gn: string;
        gu: string;
        ht: string;
        ha: string;
        haw: string;
        iw: string;
        hi: string;
        hmn: string;
        hu: string;
        is: string;
        ig: string;
        ilo: string;
        id: string;
        ga: string;
        it: string;
        ja: string;
        jw: string;
        kn: string;
        kk: string;
        km: string;
        rw: string;
        gom: string;
        ko: string;
        kri: string;
        ku: string;
        ckb: string;
        ky: string;
        lo: string;
        la: string;
        lv: string;
        ln: string;
        lt: string;
        lg: string;
        lb: string;
        mk: string;
        mai: string;
        mg: string;
        ms: string;
        ml: string;
        mt: string;
        mi: string;
        mr: string;
        "mni-Mtei": string;
        lus: string;
        mn: string;
        my: string;
        ne: string;
        no: string;
        or: string;
        om: string;
        ps: string;
        fa: string;
        pl: string;
        pt: string;
        pa: string;
        qu: string;
        ro: string;
        ru: string;
        sm: string;
        sa: string;
        gd: string;
        nso: string;
        sr: string;
        st: string;
        sn: string;
        sd: string;
        si: string;
        sk: string;
        sl: string;
        so: string;
        es: string;
        su: string;
        sw: string;
        sv: string;
        tg: string;
        ta: string;
        tt: string;
        te: string;
        th: string;
        ti: string;
        ts: string;
        tr: string;
        tk: string;
        ak: string;
        uk: string;
        ur: string;
        ug: string;
        uz: string;
        vi: string;
        cy: string;
        xh: string;
        yi: string;
        yo: string;
        zu: string;
    };
};
export {};
