package Enum::Declare::Common::CountryISO;

use 5.014;
use strict;
use warnings;

use Enum::Declare;

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

enum Alpha2 :Str :Type :Export {
	AD = "AD",
	AE = "AE",
	AF = "AF",
	AG = "AG",
	AI = "AI",
	AL = "AL",
	AM = "AM",
	AO = "AO",
	AQ = "AQ",
	AR = "AR",
	AS = "AS",
	AT = "AT",
	AU = "AU",
	AW = "AW",
	AX = "AX",
	AZ = "AZ",
	BA = "BA",
	BB = "BB",
	BD = "BD",
	BE = "BE",
	BF = "BF",
	BG = "BG",
	BH = "BH",
	BI = "BI",
	BJ = "BJ",
	BL = "BL",
	BM = "BM",
	BN = "BN",
	BO = "BO",
	BQ = "BQ",
	BR = "BR",
	BS = "BS",
	BT = "BT",
	BV = "BV",
	BW = "BW",
	BY = "BY",
	BZ = "BZ",
	CA = "CA",
	CC = "CC",
	CD = "CD",
	CF = "CF",
	CG = "CG",
	CH = "CH",
	CI = "CI",
	CK = "CK",
	CL = "CL",
	CM = "CM",
	CN = "CN",
	CO = "CO",
	CR = "CR",
	CU = "CU",
	CV = "CV",
	CW = "CW",
	CX = "CX",
	CY = "CY",
	CZ = "CZ",
	DE = "DE",
	DJ = "DJ",
	DK = "DK",
	DM = "DM",
	DO = "DO",
	DZ = "DZ",
	EC = "EC",
	EE = "EE",
	EG = "EG",
	EH = "EH",
	ER = "ER",
	ES = "ES",
	ET = "ET",
	FI = "FI",
	FJ = "FJ",
	FK = "FK",
	FM = "FM",
	FO = "FO",
	FR = "FR",
	GA = "GA",
	GB = "GB",
	GD = "GD",
	GE = "GE",
	GF = "GF",
	GG = "GG",
	GH = "GH",
	GI = "GI",
	GL = "GL",
	GM = "GM",
	GN = "GN",
	GP = "GP",
	GQ = "GQ",
	GR = "GR",
	GS = "GS",
	GT = "GT",
	GU = "GU",
	GW = "GW",
	GY = "GY",
	HK = "HK",
	HM = "HM",
	HN = "HN",
	HR = "HR",
	HT = "HT",
	HU = "HU",
	ID = "ID",
	IE = "IE",
	IL = "IL",
	IM = "IM",
	IN = "IN",
	IO = "IO",
	IQ = "IQ",
	IR = "IR",
	IS = "IS",
	IT = "IT",
	JE = "JE",
	JM = "JM",
	JO = "JO",
	JP = "JP",
	KE = "KE",
	KG = "KG",
	KH = "KH",
	KI = "KI",
	KM = "KM",
	KN = "KN",
	KP = "KP",
	KR = "KR",
	KW = "KW",
	KY = "KY",
	KZ = "KZ",
	LA = "LA",
	LB = "LB",
	LC = "LC",
	LI = "LI",
	LK = "LK",
	LR = "LR",
	LS = "LS",
	LT = "LT",
	LU = "LU",
	LV = "LV",
	LY = "LY",
	MA = "MA",
	MC = "MC",
	MD = "MD",
	ME = "ME",
	MF = "MF",
	MG = "MG",
	MH = "MH",
	MK = "MK",
	ML = "ML",
	MM = "MM",
	MN = "MN",
	MO = "MO",
	MP = "MP",
	MQ = "MQ",
	MR = "MR",
	MS = "MS",
	MT = "MT",
	MU = "MU",
	MV = "MV",
	MW = "MW",
	MX = "MX",
	MY = "MY",
	MZ = "MZ",
	NA = "NA",
	NC = "NC",
	NE = "NE",
	NF = "NF",
	NG = "NG",
	NI = "NI",
	NL = "NL",
	NO = "NO",
	NP = "NP",
	NR = "NR",
	NU = "NU",
	NZ = "NZ",
	OM = "OM",
	PA = "PA",
	PE = "PE",
	PF = "PF",
	PG = "PG",
	PH = "PH",
	PK = "PK",
	PL = "PL",
	PM = "PM",
	PN = "PN",
	PR = "PR",
	PS = "PS",
	PT = "PT",
	PW = "PW",
	PY = "PY",
	QA = "QA",
	RE = "RE",
	RO = "RO",
	RS = "RS",
	RU = "RU",
	RW = "RW",
	SA = "SA",
	SB = "SB",
	SC = "SC",
	SD = "SD",
	SE = "SE",
	SG = "SG",
	SH = "SH",
	SI = "SI",
	SJ = "SJ",
	SK = "SK",
	SL = "SL",
	SM = "SM",
	SN = "SN",
	SO = "SO",
	SR = "SR",
	SS = "SS",
	ST = "ST",
	SV = "SV",
	SX = "SX",
	SY = "SY",
	SZ = "SZ",
	TC = "TC",
	TD = "TD",
	TF = "TF",
	TG = "TG",
	TH = "TH",
	TJ = "TJ",
	TK = "TK",
	TL = "TL",
	TM = "TM",
	TN = "TN",
	TO = "TO",
	TR = "TR",
	TT = "TT",
	TV = "TV",
	TW = "TW",
	TZ = "TZ",
	UA = "UA",
	UG = "UG",
	UM = "UM",
	US = "US",
	UY = "UY",
	UZ = "UZ",
	VA = "VA",
	VC = "VC",
	VE = "VE",
	VG = "VG",
	VI = "VI",
	VN = "VN",
	VU = "VU",
	WF = "WF",
	WS = "WS",
	YE = "YE",
	YT = "YT",
	ZA = "ZA",
	ZM = "ZM",
	ZW = "ZW"
};

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

enum Alpha3 :Str :Type :Export {
	AND = "AND",
	ARE = "ARE",
	AFG = "AFG",
	ATG = "ATG",
	AIA = "AIA",
	ALB = "ALB",
	ARM = "ARM",
	AGO = "AGO",
	ATA = "ATA",
	ARG = "ARG",
	ASM = "ASM",
	AUT = "AUT",
	AUS = "AUS",
	ABW = "ABW",
	ALA = "ALA",
	AZE = "AZE",
	BIH = "BIH",
	BRB = "BRB",
	BGD = "BGD",
	BEL = "BEL",
	BFA = "BFA",
	BGR = "BGR",
	BHR = "BHR",
	BDI = "BDI",
	BEN = "BEN",
	BLM = "BLM",
	BMU = "BMU",
	BRN = "BRN",
	BOL = "BOL",
	BES = "BES",
	BRA = "BRA",
	BHS = "BHS",
	BTN = "BTN",
	BVT = "BVT",
	BWA = "BWA",
	BLR = "BLR",
	BLZ = "BLZ",
	CAN = "CAN",
	CCK = "CCK",
	COD = "COD",
	CAF = "CAF",
	COG = "COG",
	CHE = "CHE",
	CIV = "CIV",
	COK = "COK",
	CHL = "CHL",
	CMR = "CMR",
	CHN = "CHN",
	COL = "COL",
	CRI = "CRI",
	CUB = "CUB",
	CPV = "CPV",
	CUW = "CUW",
	CXR = "CXR",
	CYP = "CYP",
	CZE = "CZE",
	DEU = "DEU",
	DJI = "DJI",
	DNK = "DNK",
	DMA = "DMA",
	DOM = "DOM",
	DZA = "DZA",
	ECU = "ECU",
	EST = "EST",
	EGY = "EGY",
	ESH = "ESH",
	ERI = "ERI",
	ESP = "ESP",
	ETH = "ETH",
	FIN = "FIN",
	FJI = "FJI",
	FLK = "FLK",
	FSM = "FSM",
	FRO = "FRO",
	FRA = "FRA",
	GAB = "GAB",
	GBR = "GBR",
	GRD = "GRD",
	GEO = "GEO",
	GUF = "GUF",
	GGY = "GGY",
	GHA = "GHA",
	GIB = "GIB",
	GRL = "GRL",
	GMB = "GMB",
	GIN = "GIN",
	GLP = "GLP",
	GNQ = "GNQ",
	GRC = "GRC",
	SGS = "SGS",
	GTM = "GTM",
	GUM = "GUM",
	GNB = "GNB",
	GUY = "GUY",
	HKG = "HKG",
	HMD = "HMD",
	HND = "HND",
	HRV = "HRV",
	HTI = "HTI",
	HUN = "HUN",
	IDN = "IDN",
	IRL = "IRL",
	ISR = "ISR",
	IMN = "IMN",
	IND = "IND",
	IOT = "IOT",
	IRQ = "IRQ",
	IRN = "IRN",
	ISL = "ISL",
	ITA = "ITA",
	JEY = "JEY",
	JAM = "JAM",
	JOR = "JOR",
	JPN = "JPN",
	KEN = "KEN",
	KGZ = "KGZ",
	KHM = "KHM",
	KIR = "KIR",
	COM = "COM",
	KNA = "KNA",
	PRK = "PRK",
	KOR = "KOR",
	KWT = "KWT",
	CYM = "CYM",
	KAZ = "KAZ",
	LAO = "LAO",
	LBN = "LBN",
	LCA = "LCA",
	LIE = "LIE",
	LKA = "LKA",
	LBR = "LBR",
	LSO = "LSO",
	LTU = "LTU",
	LUX = "LUX",
	LVA = "LVA",
	LBY = "LBY",
	MAR = "MAR",
	MCO = "MCO",
	MDA = "MDA",
	MNE = "MNE",
	MAF = "MAF",
	MDG = "MDG",
	MHL = "MHL",
	MKD = "MKD",
	MLI = "MLI",
	MMR = "MMR",
	MNG = "MNG",
	MAC = "MAC",
	MNP = "MNP",
	MTQ = "MTQ",
	MRT = "MRT",
	MSR = "MSR",
	MLT = "MLT",
	MUS = "MUS",
	MDV = "MDV",
	MWI = "MWI",
	MEX = "MEX",
	MYS = "MYS",
	MOZ = "MOZ",
	NAM = "NAM",
	NCL = "NCL",
	NER = "NER",
	NFK = "NFK",
	NGA = "NGA",
	NIC = "NIC",
	NLD = "NLD",
	NOR = "NOR",
	NPL = "NPL",
	NRU = "NRU",
	NIU = "NIU",
	NZL = "NZL",
	OMN = "OMN",
	PAN = "PAN",
	PER = "PER",
	PYF = "PYF",
	PNG = "PNG",
	PHL = "PHL",
	PAK = "PAK",
	POL = "POL",
	SPM = "SPM",
	PCN = "PCN",
	PRI = "PRI",
	PSE = "PSE",
	PRT = "PRT",
	PLW = "PLW",
	PRY = "PRY",
	QAT = "QAT",
	REU = "REU",
	ROU = "ROU",
	SRB = "SRB",
	RUS = "RUS",
	RWA = "RWA",
	SAU = "SAU",
	SLB = "SLB",
	SYC = "SYC",
	SDN = "SDN",
	SWE = "SWE",
	SGP = "SGP",
	SHN = "SHN",
	SVN = "SVN",
	SJM = "SJM",
	SVK = "SVK",
	SLE = "SLE",
	SMR = "SMR",
	SEN = "SEN",
	SOM = "SOM",
	SUR = "SUR",
	SSD = "SSD",
	STP = "STP",
	SLV = "SLV",
	SXM = "SXM",
	SYR = "SYR",
	SWZ = "SWZ",
	TCA = "TCA",
	TCD = "TCD",
	ATF = "ATF",
	TGO = "TGO",
	THA = "THA",
	TJK = "TJK",
	TKL = "TKL",
	TLS = "TLS",
	TKM = "TKM",
	TUN = "TUN",
	TON = "TON",
	TUR = "TUR",
	TTO = "TTO",
	TUV = "TUV",
	TWN = "TWN",
	TZA = "TZA",
	UKR = "UKR",
	UGA = "UGA",
	UMI = "UMI",
	USA = "USA",
	URY = "URY",
	UZB = "UZB",
	VAT = "VAT",
	VCT = "VCT",
	VEN = "VEN",
	VGB = "VGB",
	VIR = "VIR",
	VNM = "VNM",
	VUT = "VUT",
	WLF = "WLF",
	WSM = "WSM",
	YEM = "YEM",
	MYT = "MYT",
	ZAF = "ZAF",
	ZMB = "ZMB",
	ZWE = "ZWE"
};

1;

=head1 NAME

Enum::Declare::Common::CountryISO - ISO 3166-1 code-to-code constants

=head1 SYNOPSIS

    use Enum::Declare::Common::CountryISO;

    say US;   # "US"
    say USA;  # "USA"

    # Type-safe country code for DB columns
    $row->{country} = GB;

=head1 ENUMS

=head2 Alpha2 :Str :Export

249 ISO 3166-1 alpha-2 constants. Each returns its own code as a string.

=head2 Alpha3 :Str :Export

249 ISO 3166-1 alpha-3 constants. Each returns its own code as a string.

=head1 AUTHOR

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

=head1 LICENSE AND COPYRIGHT

Copyright 2026 LNATION. Artistic License 2.0.

=cut
