import { Country } from './country';

/** Countries phone codes */
export const COUNTRIES_PHONE_CODES: Record<Country, string> = {
  [Country.Afghanistan]: '+93',
  [Country.Albania]: '+355',
  [Country.Algeria]: '+213',
  [Country.AmericanSamoa]: '+1684',
  [Country.Andorra]: '+376',
  [Country.Angola]: '+244',
  [Country.Anguilla]: '+1264',
  [Country.Antarctica]: '+672',
  [Country.AntiguaAndBarbuda]: '+1268',
  [Country.Argentina]: '+54',
  [Country.Armenia]: '+374',
  [Country.Aruba]: '+297',
  [Country.Australia]: '+61',
  [Country.Austria]: '+43',
  [Country.Azerbaijan]: '+994',
  [Country.Bahamas]: '+1242',
  [Country.Bahrain]: '+973',
  [Country.Bangladesh]: '+880',
  [Country.Barbados]: '+1246',
  [Country.Belarus]: '+375',
  [Country.Belgium]: '+32',
  [Country.Belize]: '+501',
  [Country.Benin]: '+229',
  [Country.Bermuda]: '+1441',
  [Country.Bhutan]: '+975',
  [Country.BoliviaPlurinationalStateOfBolivia]: '+591',
  [Country.BosniaAndHerzegovina]: '+387',
  [Country.Botswana]: '+267',
  [Country.BouvetIsland]: '+55',
  [Country.Brazil]: '+55',
  [Country.BritishIndianOceanTerritory]: '+246',
  [Country.BruneiDarussalam]: '+673',
  [Country.Bulgaria]: '+359',
  [Country.BurkinaFaso]: '+226',
  [Country.Burundi]: '+257',
  [Country.Cambodia]: '+855',
  [Country.Cameroon]: '+237',
  [Country.Canada]: '+1',
  [Country.CapeVerde]: '+238',
  [Country.CaymanIslands]: '+1345',
  [Country.CentralAfricanRepublic]: '+236',
  [Country.Chad]: '+235',
  [Country.Chile]: '+56',
  [Country.China]: '+86',
  [Country.ChristmasIsland]: '+61',
  [Country.CocosKeelingIslands]: '+61',
  [Country.Colombia]: '+57',
  [Country.Comoros]: '+269',
  [Country.Congo]: '+242',
  [Country.CongoTheDemocraticRepublicOfThe]: '+243',
  [Country.CookIslands]: '+682',
  [Country.CostaRica]: '+506',
  [Country.IvoryCoast]: '+225',
  [Country.Croatia]: '+385',
  [Country.Cuba]: '+53',
  [Country.Cyprus]: '+357',
  [Country.CzechRepublic]: '+420',
  [Country.Denmark]: '+45',
  [Country.Djibouti]: '+253',
  [Country.Dominica]: '+1767',
  [Country.DominicanRepublic]: '+1849',
  [Country.Ecuador]: '+593',
  [Country.Egypt]: '+20',
  [Country.ElSalvador]: '+503',
  [Country.EquatorialGuinea]: '+240',
  [Country.Eritrea]: '+291',
  [Country.Estonia]: '+372',
  [Country.Ethiopia]: '+251',
  [Country.FalklandIslands]: '+500',
  [Country.FaroeIslands]: '+298',
  [Country.Fiji]: '+679',
  [Country.Finland]: '+358',
  [Country.France]: '+33',
  [Country.FrenchPolynesia]: '+689',
  [Country.FrenchSouthernAndAntarcticLands]: '+262',
  [Country.Gabon]: '+241',
  [Country.Gambia]: '+220',
  [Country.Georgia]: '+995',
  [Country.Germany]: '+49',
  [Country.Ghana]: '+233',
  [Country.Gibraltar]: '+350',
  [Country.Greece]: '+30',
  [Country.Greenland]: '+299',
  [Country.Grenada]: '+1473',
  [Country.Guadeloupe]: '+590',
  [Country.Guam]: '+1671',
  [Country.Guatemala]: '+502',
  [Country.Guernsey]: '+44',
  [Country.Guinea]: '+224',
  [Country.GuineaBissau]: '+245',
  [Country.Guyana]: '+592',
  [Country.Haiti]: '+509',
  [Country.HeardIslandAndMcDonaldIslands]: '+672',
  [Country.VaticanCityStateHolySee]: '+379',
  [Country.Honduras]: '+504',
  [Country.HongKong]: '+852',
  [Country.Hungary]: '+36',
  [Country.Iceland]: '+354',
  [Country.India]: '+91',
  [Country.Indonesia]: '+62',
  [Country.IranIslamicRepublicOf]: '+98',
  [Country.Iraq]: '+964',
  [Country.Ireland]: '+353',
  [Country.IsleOfMan]: '+44',
  [Country.Israel]: '+972',
  [Country.Italy]: '+39',
  [Country.Jamaica]: '+1876',
  [Country.Japan]: '+81',
  [Country.Jersey]: '+44',
  [Country.Jordan]: '+962',
  [Country.Kazakhstan]: '+7',
  [Country.Kenya]: '+254',
  [Country.Kiribati]: '+686',
  [Country.NorthKorea]: '+850',
  [Country.SouthKorea]: '+82',
  [Country.Kuwait]: '+965',
  [Country.Kyrgyzstan]: '+996',
  [Country.Laos]: '+856',
  [Country.Latvia]: '+371',
  [Country.Lebanon]: '+961',
  [Country.Lesotho]: '+266',
  [Country.Liberia]: '+231',
  [Country.LibyanArabJamahiriya]: '+218',
  [Country.Liechtenstein]: '+423',
  [Country.Lithuania]: '+370',
  [Country.Luxembourg]: '+352',
  [Country.Macau]: '+853',
  [Country.MacedoniaTheFormerYugoslavRepublicOf]: '+389',
  [Country.Madagascar]: '+261',
  [Country.Malawi]: '+265',
  [Country.Malaysia]: '+60',
  [Country.Maldives]: '+960',
  [Country.Mali]: '+223',
  [Country.Malta]: '+356',
  [Country.MarshallIslands]: '+692',
  [Country.Martinique]: '+596',
  [Country.Mauritania]: '+222',
  [Country.Mauritius]: '+230',
  [Country.Mayotte]: '+262',
  [Country.Mexico]: '+52',
  [Country.MicronesiaFederatedStatesOf]: '+691',
  [Country.MoldovaRepublicOf]: '+373',
  [Country.Monaco]: '+377',
  [Country.Mongolia]: '+976',
  [Country.Montenegro]: '+382',
  [Country.Montserrat]: '+1664',
  [Country.Morocco]: '+212',
  [Country.Mozambique]: '+258',
  [Country.Myanmar]: '+95',
  [Country.Namibia]: '+264',
  [Country.Nauru]: '+674',
  [Country.Nepal]: '+977',
  [Country.Netherlands]: '+31',
  [Country.NetherlandsAntilles]: '+599',
  [Country.NewCaledonia]: '+687',
  [Country.NewZealand]: '+64',
  [Country.Nicaragua]: '+505',
  [Country.Niger]: '+227',
  [Country.Nigeria]: '+234',
  [Country.Niue]: '+683',
  [Country.NorfolkIsland]: '+672',
  [Country.NorthernMarianaIslands]: '+1670',
  [Country.Norway]: '+47',
  [Country.Oman]: '+968',
  [Country.Pakistan]: '+92',
  [Country.Palau]: '+680',
  [Country.PalestinianTerritoryOccupied]: '+970',
  [Country.Panama]: '+507',
  [Country.PapuaNewGuinea]: '+675',
  [Country.Paraguay]: '+595',
  [Country.Peru]: '+51',
  [Country.Philippines]: '+63',
  [Country.Pitcairn]: '+870',
  [Country.Poland]: '+48',
  [Country.Portugal]: '+351',
  [Country.PuertoRico]: '+1939',
  [Country.Qatar]: '+974',
  [Country.Reunion]: '+262',
  [Country.Romania]: '+40',
  [Country.Russia]: '+7',
  [Country.Rwanda]: '+250',
  [Country.SaintHelenaAscensionAndTristanDaCunha]: '+290',
  [Country.SaintKittsAndNevis]: '+1869',
  [Country.SaintLucia]: '+1758',
  [Country.SaintPierreAndMiquelon]: '+508',
  [Country.SaintVincentAndTheGrenadines]: '+1784',
  [Country.Samoa]: '+685',
  [Country.SanMarino]: '+378',
  [Country.SaoTomeAndPrincipe]: '+239',
  [Country.SaudiArabia]: '+966',
  [Country.Senegal]: '+221',
  [Country.Serbia]: '+381',
  [Country.Seychelles]: '+248',
  [Country.SierraLeone]: '+232',
  [Country.Singapore]: '+65',
  [Country.Slovakia]: '+421',
  [Country.Slovenia]: '+386',
  [Country.SolomonIslands]: '+677',
  [Country.Somalia]: '+252',
  [Country.SouthAfrica]: '+27',
  [Country.SouthGeorgiaAndTheSouthSandwichIslands]: '+500',
  [Country.Spain]: '+34',
  [Country.SriLanka]: '+94',
  [Country.Sudan]: '+249',
  [Country.Suriname]: '+597',
  [Country.SvalbardAndJanMayen]: '+47',
  [Country.Swaziland]: '+268',
  [Country.Sweden]: '+46',
  [Country.Switzerland]: '+41',
  [Country.Syria]: '+963',
  [Country.Taiwan]: '+886',
  [Country.Tajikistan]: '+992',
  [Country.TanzaniaUnitedRepublicOf]: '+255',
  [Country.Thailand]: '+66',
  [Country.TimorLeste]: '+670',
  [Country.Togo]: '+228',
  [Country.Tokelau]: '+690',
  [Country.Tonga]: '+676',
  [Country.TrinidadAndTobago]: '+1868',
  [Country.Tunisia]: '+216',
  [Country.Turkey]: '+90',
  [Country.Turkmenistan]: '+993',
  [Country.TurksAndCaicosIslands]: '+1649',
  [Country.Tuvalu]: '+688',
  [Country.Uganda]: '+256',
  [Country.Ukraine]: '+380',
  [Country.UnitedArabEmirates]: '+971',
  [Country.UnitedKingdom]: '+44',
  [Country.UnitedStates]: '+1',
  [Country.UnitedStatesMinorOutlyingIslands]: '+1581',
  [Country.Uruguay]: '+598',
  [Country.Uzbekistan]: '+998',
  [Country.Vanuatu]: '+678',
  [Country.VenezuelaBolivarianRepublicOf]: '+58',
  [Country.Vietnam]: '+84',
  [Country.VirginIslandsBritish]: '+1284',
  [Country.VirginIslandsUS]: '+1340',
  [Country.WallisAndFutuna]: '+681',
  [Country.WesternSahara]: '+732',
  [Country.Yemen]: '+967',
  [Country.Zambia]: '+260',
  [Country.Zimbabwe]: '+263',
};

/**
 * Some countries have the same phone codes (for example USA and Canada has +1,
 * Australia and Cocos Keeling Islands has +61). This map sets the main countries
 * for given phone codes.
 */
export const MAIN_PHONE_CODES_COUNTRIES: Record<string, Country> = {
  '+1': Country.UnitedStates,
  '+7': Country.Russia,
  '+61': Country.Australia,
};
