/*
 * Copyright (C) 2023-2024 Reyadeyat
 *
 * Reyadeyat/Haseb is licensed under the
 * BSD 3-Clause "New" or "Revised" License
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://reyadeyat.net/LICENSE/HASEB.LICENSE
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export class StringI18n {
    constructor(content: any);
    public get(language: string, default_string?: string): string;
    public static fromJSON(json: any): StringI18n;
}


export class LanguageI18N {
    name: string;
    code: string;
    directionality: string;
    constructor(name: string, code: string, directionality: string);
    getName(): string;
    getCode(): string;
    getDirectionality(): string;
}

export class WorldLanguages {
    static readonly WorldLanguagesInstance: WorldLanguages;
    constructor();
    static aa: LanguageI18N;
    static ab: LanguageI18N;
    static af: LanguageI18N;
    static ak: LanguageI18N;
    static als: LanguageI18N;
    static am: LanguageI18N;
    static an: LanguageI18N;
    static ang: LanguageI18N;
    static ar: LanguageI18N;
    static arc: LanguageI18N;
    static arz: LanguageI18N;
    static as: LanguageI18N;
    static ast: LanguageI18N;
    static av: LanguageI18N;
    static awa: LanguageI18N;
    static ay: LanguageI18N;
    static az: LanguageI18N;
    static ba: LanguageI18N;
    static bar: LanguageI18N;
    static bat_smg: LanguageI18N;
    static bcl: LanguageI18N;
    static be: LanguageI18N;
    static be_x_old: LanguageI18N;
    static bg: LanguageI18N;
    static bh: LanguageI18N;
    static bi: LanguageI18N;
    static bm: LanguageI18N;
    static bn: LanguageI18N;
    static bo: LanguageI18N;
    static bpy: LanguageI18N;
    static br: LanguageI18N;
    static brx: LanguageI18N;
    static bs: LanguageI18N;
    static bug: LanguageI18N;
    static bxr: LanguageI18N;
    static ca: LanguageI18N;
    static cdo: LanguageI18N;
    static ce: LanguageI18N;
    static ceb: LanguageI18N;
    static ch: LanguageI18N;
    static cho: LanguageI18N;
    static chr: LanguageI18N;
    static chy: LanguageI18N;
    static ckb: LanguageI18N;
    static co: LanguageI18N;
    static cr: LanguageI18N;
    static crn: LanguageI18N;
    static cs: LanguageI18N;
    static csb: LanguageI18N;
    static cu: LanguageI18N;
    static cv: LanguageI18N;
    static cy: LanguageI18N;
    static da: LanguageI18N;
    static de: LanguageI18N;
    static diq: LanguageI18N;
    static dsb: LanguageI18N;
    static dv: LanguageI18N;
    static dz: LanguageI18N;
    static ee: LanguageI18N;
    static el: LanguageI18N;
    static en: LanguageI18N;
    static eo: LanguageI18N;
    static es: LanguageI18N;
    static et: LanguageI18N;
    static eu: LanguageI18N;
    static ext: LanguageI18N;
    static fa: LanguageI18N;
    static ff: LanguageI18N;
    static fi: LanguageI18N;
    static fiu_vro: LanguageI18N;
    static fj: LanguageI18N;
    static fo: LanguageI18N;
    static fr: LanguageI18N;
    static frp: LanguageI18N;
    static fur: LanguageI18N;
    static fy: LanguageI18N;
    static ga: LanguageI18N;
    static gan: LanguageI18N;
    static gbm: LanguageI18N;
    static gd: LanguageI18N;
    static gil: LanguageI18N;
    static gl: LanguageI18N;
    static gn: LanguageI18N;
    static got: LanguageI18N;
    static gu: LanguageI18N;
    static gv: LanguageI18N;
    static ha: LanguageI18N;
    static hak: LanguageI18N;
    static haw: LanguageI18N;
    static he: LanguageI18N;
    static hi: LanguageI18N;
    static ho: LanguageI18N;
    static hr: LanguageI18N;
    static ht: LanguageI18N;
    static hu: LanguageI18N;
    static hy: LanguageI18N;
    static hz: LanguageI18N;
    static ia: LanguageI18N;
    static id: LanguageI18N;
    static ie: LanguageI18N;
    static ig: LanguageI18N;
    static ii: LanguageI18N;
    static ik: LanguageI18N;
    static ilo: LanguageI18N;
    static inh: LanguageI18N;
    static io: LanguageI18N;
    static is: LanguageI18N;
    static it: LanguageI18N;
    static iu: LanguageI18N;
    static ja: LanguageI18N;
    static jbo: LanguageI18N;
    static jv: LanguageI18N;
    static ka: LanguageI18N;
    static kg: LanguageI18N;
    static ki: LanguageI18N;
    static kj: LanguageI18N;
    static kk: LanguageI18N;
    static kl: LanguageI18N;
    static km: LanguageI18N;
    static kn: LanguageI18N;
    static khw: LanguageI18N;
    static ko: LanguageI18N;
    static kr: LanguageI18N;
    static ks: LanguageI18N;
    static ksh: LanguageI18N;
    static ku: LanguageI18N;
    static kv: LanguageI18N;
    static kw: LanguageI18N;
    static ky: LanguageI18N;
    static la: LanguageI18N;
    static lad: LanguageI18N;
    static lan: LanguageI18N;
    static lb: LanguageI18N;
    static lg: LanguageI18N;
    static li: LanguageI18N;
    static lij: LanguageI18N;
    static lmo: LanguageI18N;
    static ln: LanguageI18N;
    static lo: LanguageI18N;
    static lzz: LanguageI18N;
    static lt: LanguageI18N;
    static lv: LanguageI18N;
    static map_bms: LanguageI18N;
    static mg: LanguageI18N;
    static man: LanguageI18N;
    static mh: LanguageI18N;
    static mi: LanguageI18N;
    static min: LanguageI18N;
    static mk: LanguageI18N;
    static ml: LanguageI18N;
    static mn: LanguageI18N;
    static mo: LanguageI18N;
    static mr: LanguageI18N;
    static mrh: LanguageI18N;
    static ms: LanguageI18N;
    static mt: LanguageI18N;
    static mus: LanguageI18N;
    static mwl: LanguageI18N;
    static my: LanguageI18N;
    static na: LanguageI18N;
    static nah: LanguageI18N;
    static nap: LanguageI18N;
    static nd: LanguageI18N;
    static nds: LanguageI18N;
    static nds_nl: LanguageI18N;
    static ne: LanguageI18N;
    static new: LanguageI18N;
    static ng: LanguageI18N;
    static nl: LanguageI18N;
    static nn: LanguageI18N;
    static no: LanguageI18N;
    static nr: LanguageI18N;
    static nso: LanguageI18N;
    static nrm: LanguageI18N;
    static nv: LanguageI18N;
    static ny: LanguageI18N;
    static oc: LanguageI18N;
    static oj: LanguageI18N;
    static om: LanguageI18N;
    static or: LanguageI18N;
    static os: LanguageI18N;
    static pa: LanguageI18N;
    static pag: LanguageI18N;
    static pam: LanguageI18N;
    static pap: LanguageI18N;
    static pdc: LanguageI18N;
    static pi: LanguageI18N;
    static pih: LanguageI18N;
    static pl: LanguageI18N;
    static pms: LanguageI18N;
    static ps: LanguageI18N;
    static pt: LanguageI18N;
    static qu: LanguageI18N;
    static rm: LanguageI18N;
    static rmy: LanguageI18N;
    static rn: LanguageI18N;
    static ro: LanguageI18N;
    static roa_rup: LanguageI18N;
    static ru: LanguageI18N;
    static rw: LanguageI18N;
    static sa: LanguageI18N;
    static sc: LanguageI18N;
    static scn: LanguageI18N;
    static sco: LanguageI18N;
    static sd: LanguageI18N;
    static se: LanguageI18N;
    static sg: LanguageI18N;
    static sh: LanguageI18N;
    static si: LanguageI18N;
    static simple: LanguageI18N;
    static sk: LanguageI18N;
    static sl: LanguageI18N;
    static sm: LanguageI18N;
    static sn: LanguageI18N;
    static so: LanguageI18N;
    static sq: LanguageI18N;
    static sr: LanguageI18N;
    static ss: LanguageI18N;
    static st: LanguageI18N;
    static su: LanguageI18N;
    static sv: LanguageI18N;
    static sw: LanguageI18N;
    static ta: LanguageI18N;
    static te: LanguageI18N;
    static tet: LanguageI18N;
    static tg: LanguageI18N;
    static th: LanguageI18N;
    static ti: LanguageI18N;
    static tk: LanguageI18N;
    static tl: LanguageI18N;
    static tlh: LanguageI18N;
    static tn: LanguageI18N;
    static to: LanguageI18N;
    static tpi: LanguageI18N;
    static tr: LanguageI18N;
    static ts: LanguageI18N;
    static tt: LanguageI18N;
    static tum: LanguageI18N;
    static tw: LanguageI18N;
    static ty: LanguageI18N;
    static udm: LanguageI18N;
    static ug: LanguageI18N;
    static uk: LanguageI18N;
    static ur: LanguageI18N;
    static uz: LanguageI18N;
    static uz_AF: LanguageI18N;
    static ve: LanguageI18N;
    static vi: LanguageI18N;
    static vec: LanguageI18N;
    static vls: LanguageI18N;
    static vo: LanguageI18N;
    static wa: LanguageI18N;
    static war: LanguageI18N;
    static wo: LanguageI18N;
    static xal: LanguageI18N;
    static xh: LanguageI18N;
    static xmf: LanguageI18N;
    static yi: LanguageI18N;
    static yo: LanguageI18N;
    static za: LanguageI18N;
    static zg: LanguageI18N;
    static zh: LanguageI18N;
    static zh_classical: LanguageI18N;
    static zh_min_nan: LanguageI18N;
    static zh_yue: LanguageI18N;
    static zu: LanguageI18N;

    static language_list: LanguageI18N[];
    static language_code_map: Map<string, LanguageI18N>;
    static language_name_map: Map<string, LanguageI18N>;
    static isLanguage(code: string): boolean;
    static getLanguage(code: string): LanguageI18N;
    static getLanguageList(): LanguageI18N[];
    static getLanguageCodeMap(): Map<string, LanguageI18N>;
    static getLanguageNameMap(): Map<string, LanguageI18N>;
}