package Enum::Declare::Common::Country;

use 5.014;
use strict;
use warnings;

use Enum::Declare;

# ── ISO 3166-1 Alpha-2 codes (249 entries) ──

enum Alpha2 :Str :Type :Export {
	AD = "Andorra",
	AE = "United Arab Emirates",
	AF = "Afghanistan",
	AG = "Antigua and Barbuda",
	AI = "Anguilla",
	AL = "Albania",
	AM = "Armenia",
	AO = "Angola",
	AQ = "Antarctica",
	AR = "Argentina",
	AS = "American Samoa",
	AT = "Austria",
	AU = "Australia",
	AW = "Aruba",
	AX = "Aland Islands",
	AZ = "Azerbaijan",
	BA = "Bosnia and Herzegovina",
	BB = "Barbados",
	BD = "Bangladesh",
	BE = "Belgium",
	BF = "Burkina Faso",
	BG = "Bulgaria",
	BH = "Bahrain",
	BI = "Burundi",
	BJ = "Benin",
	BL = "Saint Barthelemy",
	BM = "Bermuda",
	BN = "Brunei Darussalam",
	BO = "Bolivia",
	BQ = "Bonaire, Sint Eustatius and Saba",
	BR = "Brazil",
	BS = "Bahamas",
	BT = "Bhutan",
	BV = "Bouvet Island",
	BW = "Botswana",
	BY = "Belarus",
	BZ = "Belize",
	CA = "Canada",
	CC = "Cocos (Keeling) Islands",
	CD = "Congo, Democratic Republic of the",
	CF = "Central African Republic",
	CG = "Congo",
	CH = "Switzerland",
	CI = "Cote d'Ivoire",
	CK = "Cook Islands",
	CL = "Chile",
	CM = "Cameroon",
	CN = "China",
	CO = "Colombia",
	CR = "Costa Rica",
	CU = "Cuba",
	CV = "Cabo Verde",
	CW = "Curacao",
	CX = "Christmas Island",
	CY = "Cyprus",
	CZ = "Czechia",
	DE = "Germany",
	DJ = "Djibouti",
	DK = "Denmark",
	DM = "Dominica",
	DO = "Dominican Republic",
	DZ = "Algeria",
	EC = "Ecuador",
	EE = "Estonia",
	EG = "Egypt",
	EH = "Western Sahara",
	ER = "Eritrea",
	ES = "Spain",
	ET = "Ethiopia",
	FI = "Finland",
	FJ = "Fiji",
	FK = "Falkland Islands",
	FM = "Micronesia",
	FO = "Faroe Islands",
	FR = "France",
	GA = "Gabon",
	GB = "United Kingdom",
	GD = "Grenada",
	GE = "Georgia",
	GF = "French Guiana",
	GG = "Guernsey",
	GH = "Ghana",
	GI = "Gibraltar",
	GL = "Greenland",
	GM = "Gambia",
	GN = "Guinea",
	GP = "Guadeloupe",
	GQ = "Equatorial Guinea",
	GR = "Greece",
	GS = "South Georgia and the South Sandwich Islands",
	GT = "Guatemala",
	GU = "Guam",
	GW = "Guinea-Bissau",
	GY = "Guyana",
	HK = "Hong Kong",
	HM = "Heard Island and McDonald Islands",
	HN = "Honduras",
	HR = "Croatia",
	HT = "Haiti",
	HU = "Hungary",
	ID = "Indonesia",
	IE = "Ireland",
	IL = "Israel",
	IM = "Isle of Man",
	IN = "India",
	IO = "British Indian Ocean Territory",
	IQ = "Iraq",
	IR = "Iran",
	IS = "Iceland",
	IT = "Italy",
	JE = "Jersey",
	JM = "Jamaica",
	JO = "Jordan",
	JP = "Japan",
	KE = "Kenya",
	KG = "Kyrgyzstan",
	KH = "Cambodia",
	KI = "Kiribati",
	KM = "Comoros",
	KN = "Saint Kitts and Nevis",
	KP = "North Korea",
	KR = "South Korea",
	KW = "Kuwait",
	KY = "Cayman Islands",
	KZ = "Kazakhstan",
	LA = "Laos",
	LB = "Lebanon",
	LC = "Saint Lucia",
	LI = "Liechtenstein",
	LK = "Sri Lanka",
	LR = "Liberia",
	LS = "Lesotho",
	LT = "Lithuania",
	LU = "Luxembourg",
	LV = "Latvia",
	LY = "Libya",
	MA = "Morocco",
	MC = "Monaco",
	MD = "Moldova",
	ME = "Montenegro",
	MF = "Saint Martin (French part)",
	MG = "Madagascar",
	MH = "Marshall Islands",
	MK = "North Macedonia",
	ML = "Mali",
	MM = "Myanmar",
	MN = "Mongolia",
	MO = "Macao",
	MP = "Northern Mariana Islands",
	MQ = "Martinique",
	MR = "Mauritania",
	MS = "Montserrat",
	MT = "Malta",
	MU = "Mauritius",
	MV = "Maldives",
	MW = "Malawi",
	MX = "Mexico",
	MY = "Malaysia",
	MZ = "Mozambique",
	NA = "Namibia",
	NC = "New Caledonia",
	NE = "Niger",
	NF = "Norfolk Island",
	NG = "Nigeria",
	NI = "Nicaragua",
	NL = "Netherlands",
	NO = "Norway",
	NP = "Nepal",
	NR = "Nauru",
	NU = "Niue",
	NZ = "New Zealand",
	OM = "Oman",
	PA = "Panama",
	PE = "Peru",
	PF = "French Polynesia",
	PG = "Papua New Guinea",
	PH = "Philippines",
	PK = "Pakistan",
	PL = "Poland",
	PM = "Saint Pierre and Miquelon",
	PN = "Pitcairn",
	PR = "Puerto Rico",
	PS = "Palestine",
	PT = "Portugal",
	PW = "Palau",
	PY = "Paraguay",
	QA = "Qatar",
	RE = "Reunion",
	RO = "Romania",
	RS = "Serbia",
	RU = "Russian Federation",
	RW = "Rwanda",
	SA = "Saudi Arabia",
	SB = "Solomon Islands",
	SC = "Seychelles",
	SD = "Sudan",
	SE = "Sweden",
	SG = "Singapore",
	SH = "Saint Helena",
	SI = "Slovenia",
	SJ = "Svalbard and Jan Mayen",
	SK = "Slovakia",
	SL = "Sierra Leone",
	SM = "San Marino",
	SN = "Senegal",
	SO = "Somalia",
	SR = "Suriname",
	SS = "South Sudan",
	ST = "Sao Tome and Principe",
	SV = "El Salvador",
	SX = "Sint Maarten (Dutch part)",
	SY = "Syrian Arab Republic",
	SZ = "Eswatini",
	TC = "Turks and Caicos Islands",
	TD = "Chad",
	TF = "French Southern Territories",
	TG = "Togo",
	TH = "Thailand",
	TJ = "Tajikistan",
	TK = "Tokelau",
	TL = "Timor-Leste",
	TM = "Turkmenistan",
	TN = "Tunisia",
	TO = "Tonga",
	TR = "Turkiye",
	TT = "Trinidad and Tobago",
	TV = "Tuvalu",
	TW = "Taiwan",
	TZ = "Tanzania",
	UA = "Ukraine",
	UG = "Uganda",
	UM = "United States Minor Outlying Islands",
	US = "United States",
	UY = "Uruguay",
	UZ = "Uzbekistan",
	VA = "Holy See",
	VC = "Saint Vincent and the Grenadines",
	VE = "Venezuela",
	VG = "Virgin Islands (British)",
	VI = "Virgin Islands (U.S.)",
	VN = "Vietnam",
	VU = "Vanuatu",
	WF = "Wallis and Futuna",
	WS = "Samoa",
	YE = "Yemen",
	YT = "Mayotte",
	ZA = "South Africa",
	ZM = "Zambia",
	ZW = "Zimbabwe"
};

# ── ISO 3166-1 Alpha-3 codes (249 entries) ──

enum Alpha3 :Str :Type :Export {
	AND = "Andorra",
	ARE = "United Arab Emirates",
	AFG = "Afghanistan",
	ATG = "Antigua and Barbuda",
	AIA = "Anguilla",
	ALB = "Albania",
	ARM = "Armenia",
	AGO = "Angola",
	ATA = "Antarctica",
	ARG = "Argentina",
	ASM = "American Samoa",
	AUT = "Austria",
	AUS = "Australia",
	ABW = "Aruba",
	ALA = "Aland Islands",
	AZE = "Azerbaijan",
	BIH = "Bosnia and Herzegovina",
	BRB = "Barbados",
	BGD = "Bangladesh",
	BEL = "Belgium",
	BFA = "Burkina Faso",
	BGR = "Bulgaria",
	BHR = "Bahrain",
	BDI = "Burundi",
	BEN = "Benin",
	BLM = "Saint Barthelemy",
	BMU = "Bermuda",
	BRN = "Brunei Darussalam",
	BOL = "Bolivia",
	BES = "Bonaire, Sint Eustatius and Saba",
	BRA = "Brazil",
	BHS = "Bahamas",
	BTN = "Bhutan",
	BVT = "Bouvet Island",
	BWA = "Botswana",
	BLR = "Belarus",
	BLZ = "Belize",
	CAN = "Canada",
	CCK = "Cocos (Keeling) Islands",
	COD = "Congo, Democratic Republic of the",
	CAF = "Central African Republic",
	COG = "Congo",
	CHE = "Switzerland",
	CIV = "Cote d'Ivoire",
	COK = "Cook Islands",
	CHL = "Chile",
	CMR = "Cameroon",
	CHN = "China",
	COL = "Colombia",
	CRI = "Costa Rica",
	CUB = "Cuba",
	CPV = "Cabo Verde",
	CUW = "Curacao",
	CXR = "Christmas Island",
	CYP = "Cyprus",
	CZE = "Czechia",
	DEU = "Germany",
	DJI = "Djibouti",
	DNK = "Denmark",
	DMA = "Dominica",
	DOM = "Dominican Republic",
	DZA = "Algeria",
	ECU = "Ecuador",
	EST = "Estonia",
	EGY = "Egypt",
	ESH = "Western Sahara",
	ERI = "Eritrea",
	ESP = "Spain",
	ETH = "Ethiopia",
	FIN = "Finland",
	FJI = "Fiji",
	FLK = "Falkland Islands",
	FSM = "Micronesia",
	FRO = "Faroe Islands",
	FRA = "France",
	GAB = "Gabon",
	GBR = "United Kingdom",
	GRD = "Grenada",
	GEO = "Georgia",
	GUF = "French Guiana",
	GGY = "Guernsey",
	GHA = "Ghana",
	GIB = "Gibraltar",
	GRL = "Greenland",
	GMB = "Gambia",
	GIN = "Guinea",
	GLP = "Guadeloupe",
	GNQ = "Equatorial Guinea",
	GRC = "Greece",
	SGS = "South Georgia and the South Sandwich Islands",
	GTM = "Guatemala",
	GUM = "Guam",
	GNB = "Guinea-Bissau",
	GUY = "Guyana",
	HKG = "Hong Kong",
	HMD = "Heard Island and McDonald Islands",
	HND = "Honduras",
	HRV = "Croatia",
	HTI = "Haiti",
	HUN = "Hungary",
	IDN = "Indonesia",
	IRL = "Ireland",
	ISR = "Israel",
	IMN = "Isle of Man",
	IND = "India",
	IOT = "British Indian Ocean Territory",
	IRQ = "Iraq",
	IRN = "Iran",
	ISL = "Iceland",
	ITA = "Italy",
	JEY = "Jersey",
	JAM = "Jamaica",
	JOR = "Jordan",
	JPN = "Japan",
	KEN = "Kenya",
	KGZ = "Kyrgyzstan",
	KHM = "Cambodia",
	KIR = "Kiribati",
	COM = "Comoros",
	KNA = "Saint Kitts and Nevis",
	PRK = "North Korea",
	KOR = "South Korea",
	KWT = "Kuwait",
	CYM = "Cayman Islands",
	KAZ = "Kazakhstan",
	LAO = "Laos",
	LBN = "Lebanon",
	LCA = "Saint Lucia",
	LIE = "Liechtenstein",
	LKA = "Sri Lanka",
	LBR = "Liberia",
	LSO = "Lesotho",
	LTU = "Lithuania",
	LUX = "Luxembourg",
	LVA = "Latvia",
	LBY = "Libya",
	MAR = "Morocco",
	MCO = "Monaco",
	MDA = "Moldova",
	MNE = "Montenegro",
	MAF = "Saint Martin (French part)",
	MDG = "Madagascar",
	MHL = "Marshall Islands",
	MKD = "North Macedonia",
	MLI = "Mali",
	MMR = "Myanmar",
	MNG = "Mongolia",
	MAC = "Macao",
	MNP = "Northern Mariana Islands",
	MTQ = "Martinique",
	MRT = "Mauritania",
	MSR = "Montserrat",
	MLT = "Malta",
	MUS = "Mauritius",
	MDV = "Maldives",
	MWI = "Malawi",
	MEX = "Mexico",
	MYS = "Malaysia",
	MOZ = "Mozambique",
	NAM = "Namibia",
	NCL = "New Caledonia",
	NER = "Niger",
	NFK = "Norfolk Island",
	NGA = "Nigeria",
	NIC = "Nicaragua",
	NLD = "Netherlands",
	NOR = "Norway",
	NPL = "Nepal",
	NRU = "Nauru",
	NIU = "Niue",
	NZL = "New Zealand",
	OMN = "Oman",
	PAN = "Panama",
	PER = "Peru",
	PYF = "French Polynesia",
	PNG = "Papua New Guinea",
	PHL = "Philippines",
	PAK = "Pakistan",
	POL = "Poland",
	SPM = "Saint Pierre and Miquelon",
	PCN = "Pitcairn",
	PRI = "Puerto Rico",
	PSE = "Palestine",
	PRT = "Portugal",
	PLW = "Palau",
	PRY = "Paraguay",
	QAT = "Qatar",
	REU = "Reunion",
	ROU = "Romania",
	SRB = "Serbia",
	RUS = "Russian Federation",
	RWA = "Rwanda",
	SAU = "Saudi Arabia",
	SLB = "Solomon Islands",
	SYC = "Seychelles",
	SDN = "Sudan",
	SWE = "Sweden",
	SGP = "Singapore",
	SHN = "Saint Helena",
	SVN = "Slovenia",
	SJM = "Svalbard and Jan Mayen",
	SVK = "Slovakia",
	SLE = "Sierra Leone",
	SMR = "San Marino",
	SEN = "Senegal",
	SOM = "Somalia",
	SUR = "Suriname",
	SSD = "South Sudan",
	STP = "Sao Tome and Principe",
	SLV = "El Salvador",
	SXM = "Sint Maarten (Dutch part)",
	SYR = "Syrian Arab Republic",
	SWZ = "Eswatini",
	TCA = "Turks and Caicos Islands",
	TCD = "Chad",
	ATF = "French Southern Territories",
	TGO = "Togo",
	THA = "Thailand",
	TJK = "Tajikistan",
	TKL = "Tokelau",
	TLS = "Timor-Leste",
	TKM = "Turkmenistan",
	TUN = "Tunisia",
	TON = "Tonga",
	TUR = "Turkiye",
	TTO = "Trinidad and Tobago",
	TUV = "Tuvalu",
	TWN = "Taiwan",
	TZA = "Tanzania",
	UKR = "Ukraine",
	UGA = "Uganda",
	UMI = "United States Minor Outlying Islands",
	USA = "United States",
	URY = "Uruguay",
	UZB = "Uzbekistan",
	VAT = "Holy See",
	VCT = "Saint Vincent and the Grenadines",
	VEN = "Venezuela",
	VGB = "Virgin Islands (British)",
	VIR = "Virgin Islands (U.S.)",
	VNM = "Vietnam",
	VUT = "Vanuatu",
	WLF = "Wallis and Futuna",
	WSM = "Samoa",
	YEM = "Yemen",
	MYT = "Mayotte",
	ZAF = "South Africa",
	ZMB = "Zambia",
	ZWE = "Zimbabwe"
};

1;

=head1 NAME

Enum::Declare::Common::Country - ISO 3166-1 country codes to country names

=head1 SYNOPSIS

    use Enum::Declare::Common::Country;

    say US;   # "United States of America"
    say GB;   # "United Kingdom"
    say USA;  # "United States of America"

    my $meta = Alpha2();
    say $meta->count;         # 249
    say $meta->name('us');    # "US" (constant name)

=head1 ENUMS

=head2 Alpha2 :Str :Export

249 ISO 3166-1 alpha-2 codes. Values are full country names.

=head2 Alpha3 :Str :Export

249 ISO 3166-1 alpha-3 codes. Values are full country names.

=head1 AUTHOR

LNATION C<< <email@lnation.org> >>

=head1 LICENSE AND COPYRIGHT

Copyright 2026 LNATION. Artistic License 2.0.

=cut
