/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 * 
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 * 
 * 
 * Generated by LanguageCLDRGenScript
 *
 * @generated
 * @flow strict
 * @oncall i18n_fbt_oss
 * @noformat
 * @nogrep
 */

'use strict';

const IntlCLDRNumberType01 = require('./IntlCLDRNumberType01');
const IntlCLDRNumberType02 = require('./IntlCLDRNumberType02');
const IntlCLDRNumberType03 = require('./IntlCLDRNumberType03');
const IntlCLDRNumberType04 = require('./IntlCLDRNumberType04');
const IntlCLDRNumberType05 = require('./IntlCLDRNumberType05');
const IntlCLDRNumberType06 = require('./IntlCLDRNumberType06');
const IntlCLDRNumberType07 = require('./IntlCLDRNumberType07');
const IntlCLDRNumberType08 = require('./IntlCLDRNumberType08');
const IntlCLDRNumberType09 = require('./IntlCLDRNumberType09');
const IntlCLDRNumberType10 = require('./IntlCLDRNumberType10');
const IntlCLDRNumberType11 = require('./IntlCLDRNumberType11');
const IntlCLDRNumberType12 = require('./IntlCLDRNumberType12');
const IntlCLDRNumberType13 = require('./IntlCLDRNumberType13');
const IntlCLDRNumberType14 = require('./IntlCLDRNumberType14');
const IntlCLDRNumberType15 = require('./IntlCLDRNumberType15');
const IntlCLDRNumberType16 = require('./IntlCLDRNumberType16');
const IntlCLDRNumberType17 = require('./IntlCLDRNumberType17');
const IntlCLDRNumberType18 = require('./IntlCLDRNumberType18');
const IntlCLDRNumberType19 = require('./IntlCLDRNumberType19');
const IntlCLDRNumberType20 = require('./IntlCLDRNumberType20');
const IntlCLDRNumberType21 = require('./IntlCLDRNumberType21');
const IntlCLDRNumberType22 = require('./IntlCLDRNumberType22');
const IntlCLDRNumberType23 = require('./IntlCLDRNumberType23');
const IntlCLDRNumberType24 = require('./IntlCLDRNumberType24');
const IntlCLDRNumberType25 = require('./IntlCLDRNumberType25');
const IntlCLDRNumberType26 = require('./IntlCLDRNumberType26');
const IntlCLDRNumberType27 = require('./IntlCLDRNumberType27');
const IntlCLDRNumberType28 = require('./IntlCLDRNumberType28');
const IntlCLDRNumberType29 = require('./IntlCLDRNumberType29');
const IntlCLDRNumberType30 = require('./IntlCLDRNumberType30');
const IntlCLDRNumberType31 = require('./IntlCLDRNumberType31');
const IntlCLDRNumberType32 = require('./IntlCLDRNumberType32');
const IntlCLDRNumberType33 = require('./IntlCLDRNumberType33');
const IntlCLDRNumberType34 = require('./IntlCLDRNumberType34');
const IntlCLDRNumberType35 = require('./IntlCLDRNumberType35');
const IntlCLDRNumberType36 = require('./IntlCLDRNumberType36');
const IntlCLDRNumberType37 = require('./IntlCLDRNumberType37');
const IntlCLDRNumberType38 = require('./IntlCLDRNumberType38');
const IntlCLDRNumberType39 = require('./IntlCLDRNumberType39');
const IntlCLDRNumberType40 = require('./IntlCLDRNumberType40');
const IntlCLDRNumberType41 = require('./IntlCLDRNumberType41');
const IntlCLDRNumberType42 = require('./IntlCLDRNumberType42');
const IntlCLDRNumberType43 = require('./IntlCLDRNumberType43');
const IntlCLDRNumberType44 = require('./IntlCLDRNumberType44');
const IntlCLDRNumberType45 = require('./IntlCLDRNumberType45');
const IntlCLDRNumberType46 = require('./IntlCLDRNumberType46');
const IntlCLDRNumberType47 = require('./IntlCLDRNumberType47');

const localeToNumberType = {
  "pt_PT": IntlCLDRNumberType05
};

const langToNumberType = {
  "bm": IntlCLDRNumberType01,
  "bo": IntlCLDRNumberType01,
  "dz": IntlCLDRNumberType01,
  "id": IntlCLDRNumberType01,
  "ig": IntlCLDRNumberType01,
  "ii": IntlCLDRNumberType01,
  "in": IntlCLDRNumberType01,
  "ja": IntlCLDRNumberType01,
  "jbo": IntlCLDRNumberType01,
  "jv": IntlCLDRNumberType01,
  "jw": IntlCLDRNumberType01,
  "kde": IntlCLDRNumberType01,
  "kea": IntlCLDRNumberType01,
  "km": IntlCLDRNumberType01,
  "ko": IntlCLDRNumberType01,
  "lkt": IntlCLDRNumberType01,
  "lo": IntlCLDRNumberType01,
  "ms": IntlCLDRNumberType01,
  "my": IntlCLDRNumberType01,
  "nqo": IntlCLDRNumberType01,
  "root": IntlCLDRNumberType01,
  "sah": IntlCLDRNumberType01,
  "ses": IntlCLDRNumberType01,
  "sg": IntlCLDRNumberType01,
  "th": IntlCLDRNumberType01,
  "to": IntlCLDRNumberType01,
  "vi": IntlCLDRNumberType01,
  "wo": IntlCLDRNumberType01,
  "yo": IntlCLDRNumberType01,
  "yue": IntlCLDRNumberType01,
  "zh": IntlCLDRNumberType01,
  "am": IntlCLDRNumberType02,
  "as": IntlCLDRNumberType02,
  "bn": IntlCLDRNumberType02,
  "fa": IntlCLDRNumberType02,
  "gu": IntlCLDRNumberType02,
  "hi": IntlCLDRNumberType02,
  "kn": IntlCLDRNumberType02,
  "mr": IntlCLDRNumberType02,
  "zu": IntlCLDRNumberType02,
  "ff": IntlCLDRNumberType03,
  "fr": IntlCLDRNumberType03,
  "hy": IntlCLDRNumberType03,
  "kab": IntlCLDRNumberType03,
  "pt": IntlCLDRNumberType04,
  "ast": IntlCLDRNumberType05,
  "ca": IntlCLDRNumberType05,
  "de": IntlCLDRNumberType05,
  "en": IntlCLDRNumberType05,
  "et": IntlCLDRNumberType05,
  "fi": IntlCLDRNumberType05,
  "fy": IntlCLDRNumberType05,
  "gl": IntlCLDRNumberType05,
  "ia": IntlCLDRNumberType05,
  "io": IntlCLDRNumberType05,
  "it": IntlCLDRNumberType05,
  "ji": IntlCLDRNumberType05,
  "nl": IntlCLDRNumberType05,
  "sc": IntlCLDRNumberType05,
  "scn": IntlCLDRNumberType05,
  "sv": IntlCLDRNumberType05,
  "sw": IntlCLDRNumberType05,
  "ur": IntlCLDRNumberType05,
  "yi": IntlCLDRNumberType05,
  "si": IntlCLDRNumberType06,
  "ak": IntlCLDRNumberType07,
  "bh": IntlCLDRNumberType07,
  "guw": IntlCLDRNumberType07,
  "ln": IntlCLDRNumberType07,
  "mg": IntlCLDRNumberType07,
  "nso": IntlCLDRNumberType07,
  "pa": IntlCLDRNumberType07,
  "ti": IntlCLDRNumberType07,
  "wa": IntlCLDRNumberType07,
  "tzm": IntlCLDRNumberType08,
  "af": IntlCLDRNumberType09,
  "asa": IntlCLDRNumberType09,
  "az": IntlCLDRNumberType09,
  "bem": IntlCLDRNumberType09,
  "bez": IntlCLDRNumberType09,
  "bg": IntlCLDRNumberType09,
  "brx": IntlCLDRNumberType09,
  "ce": IntlCLDRNumberType09,
  "cgg": IntlCLDRNumberType09,
  "chr": IntlCLDRNumberType09,
  "ckb": IntlCLDRNumberType09,
  "dv": IntlCLDRNumberType09,
  "ee": IntlCLDRNumberType09,
  "el": IntlCLDRNumberType09,
  "eo": IntlCLDRNumberType09,
  "es": IntlCLDRNumberType09,
  "eu": IntlCLDRNumberType09,
  "fo": IntlCLDRNumberType09,
  "fur": IntlCLDRNumberType09,
  "gsw": IntlCLDRNumberType09,
  "ha": IntlCLDRNumberType09,
  "haw": IntlCLDRNumberType09,
  "hu": IntlCLDRNumberType09,
  "jgo": IntlCLDRNumberType09,
  "jmc": IntlCLDRNumberType09,
  "ka": IntlCLDRNumberType09,
  "kaj": IntlCLDRNumberType09,
  "kcg": IntlCLDRNumberType09,
  "kk": IntlCLDRNumberType09,
  "kkj": IntlCLDRNumberType09,
  "kl": IntlCLDRNumberType09,
  "ks": IntlCLDRNumberType09,
  "ksb": IntlCLDRNumberType09,
  "ku": IntlCLDRNumberType09,
  "ky": IntlCLDRNumberType09,
  "lb": IntlCLDRNumberType09,
  "lg": IntlCLDRNumberType09,
  "mas": IntlCLDRNumberType09,
  "mgo": IntlCLDRNumberType09,
  "ml": IntlCLDRNumberType09,
  "mn": IntlCLDRNumberType09,
  "nah": IntlCLDRNumberType09,
  "nb": IntlCLDRNumberType09,
  "nd": IntlCLDRNumberType09,
  "ne": IntlCLDRNumberType09,
  "nn": IntlCLDRNumberType09,
  "nnh": IntlCLDRNumberType09,
  "no": IntlCLDRNumberType09,
  "nr": IntlCLDRNumberType09,
  "ny": IntlCLDRNumberType09,
  "nyn": IntlCLDRNumberType09,
  "om": IntlCLDRNumberType09,
  "or": IntlCLDRNumberType09,
  "os": IntlCLDRNumberType09,
  "pap": IntlCLDRNumberType09,
  "ps": IntlCLDRNumberType09,
  "rm": IntlCLDRNumberType09,
  "rof": IntlCLDRNumberType09,
  "rwk": IntlCLDRNumberType09,
  "saq": IntlCLDRNumberType09,
  "sd": IntlCLDRNumberType09,
  "sdh": IntlCLDRNumberType09,
  "seh": IntlCLDRNumberType09,
  "sn": IntlCLDRNumberType09,
  "so": IntlCLDRNumberType09,
  "sq": IntlCLDRNumberType09,
  "ss": IntlCLDRNumberType09,
  "ssy": IntlCLDRNumberType09,
  "st": IntlCLDRNumberType09,
  "syr": IntlCLDRNumberType09,
  "ta": IntlCLDRNumberType09,
  "te": IntlCLDRNumberType09,
  "teo": IntlCLDRNumberType09,
  "tig": IntlCLDRNumberType09,
  "tk": IntlCLDRNumberType09,
  "tn": IntlCLDRNumberType09,
  "tr": IntlCLDRNumberType09,
  "ts": IntlCLDRNumberType09,
  "ug": IntlCLDRNumberType09,
  "uz": IntlCLDRNumberType09,
  "ve": IntlCLDRNumberType09,
  "vo": IntlCLDRNumberType09,
  "vun": IntlCLDRNumberType09,
  "wae": IntlCLDRNumberType09,
  "xh": IntlCLDRNumberType09,
  "xog": IntlCLDRNumberType09,
  "da": IntlCLDRNumberType10,
  "is": IntlCLDRNumberType11,
  "mk": IntlCLDRNumberType12,
  "fil": IntlCLDRNumberType13,
  "tl": IntlCLDRNumberType13,
  "lv": IntlCLDRNumberType14,
  "prg": IntlCLDRNumberType14,
  "lag": IntlCLDRNumberType15,
  "ksh": IntlCLDRNumberType16,
  "iu": IntlCLDRNumberType17,
  "kw": IntlCLDRNumberType17,
  "naq": IntlCLDRNumberType17,
  "se": IntlCLDRNumberType17,
  "sma": IntlCLDRNumberType17,
  "smi": IntlCLDRNumberType17,
  "smj": IntlCLDRNumberType17,
  "smn": IntlCLDRNumberType17,
  "sms": IntlCLDRNumberType17,
  "shi": IntlCLDRNumberType18,
  "mo": IntlCLDRNumberType19,
  "ro": IntlCLDRNumberType19,
  "bs": IntlCLDRNumberType20,
  "hr": IntlCLDRNumberType20,
  "sh": IntlCLDRNumberType20,
  "sr": IntlCLDRNumberType20,
  "gd": IntlCLDRNumberType21,
  "sl": IntlCLDRNumberType22,
  "dsb": IntlCLDRNumberType23,
  "hsb": IntlCLDRNumberType23,
  "he": IntlCLDRNumberType24,
  "iw": IntlCLDRNumberType24,
  "cs": IntlCLDRNumberType25,
  "sk": IntlCLDRNumberType25,
  "pl": IntlCLDRNumberType26,
  "be": IntlCLDRNumberType27,
  "lt": IntlCLDRNumberType28,
  "mt": IntlCLDRNumberType29,
  "ru": IntlCLDRNumberType30,
  "uk": IntlCLDRNumberType30,
  "br": IntlCLDRNumberType31,
  "ga": IntlCLDRNumberType32,
  "gv": IntlCLDRNumberType33,
  "ar": IntlCLDRNumberType34,
  "ars": IntlCLDRNumberType34,
  "cy": IntlCLDRNumberType35,
  "ceb": IntlCLDRNumberType36,
  "fuv": IntlCLDRNumberType36,
  "su": IntlCLDRNumberType36,
  "gn": IntlCLDRNumberType37,
  "fb": IntlCLDRNumberType37,
  "la": IntlCLDRNumberType37,
  "li": IntlCLDRNumberType37,
  "tlh": IntlCLDRNumberType37,
  "grc": IntlCLDRNumberType37,
  "rw": IntlCLDRNumberType37,
  "zza": IntlCLDRNumberType37,
  "co": IntlCLDRNumberType37,
  "ht": IntlCLDRNumberType37,
  "quc": IntlCLDRNumberType37,
  "rn": IntlCLDRNumberType37,
  "mi": IntlCLDRNumberType38,
  "tg": IntlCLDRNumberType38,
  "tt": IntlCLDRNumberType39,
  "sa": IntlCLDRNumberType40,
  "qu": IntlCLDRNumberType41,
  "ay": IntlCLDRNumberType42,
  "szl": IntlCLDRNumberType43,
  "bho": IntlCLDRNumberType44,
  "ik": IntlCLDRNumberType45,
  "rup": IntlCLDRNumberType46,
  "tob": IntlCLDRNumberType47
};

export type LangToNumberTypeValues = $Values<typeof langToNumberType>;
export type LocaleToNumberTypeValues = $Values<typeof localeToNumberType>;

const FBLocaleToLang = require('./FBLocaleToLang');

function _getNumberModuleForLang(lang: string): LangToNumberTypeValues {
  return langToNumberType[lang] || IntlCLDRNumberType01;
}

function _getNumberModuleForLocale(
  locale: string,
): LocaleToNumberTypeValues | LangToNumberTypeValues {
  return (
    localeToNumberType[locale] ||
    _getNumberModuleForLang(FBLocaleToLang.get(locale))
  );
}

function forLocale(
  locale: string,
): LocaleToNumberTypeValues | LangToNumberTypeValues {
  return _getNumberModuleForLocale(locale);
}

const IntlNumberType = {
  _getNumberModuleForLang,
  _getNumberModuleForLocale,
  forLanguage(language: string ): LangToNumberTypeValues {
    return _getNumberModuleForLang(language);
  },
  forLocale,
  get: forLocale,
};

module.exports = IntlNumberType;
