import { default as alpha2to3Mapping } from 'countries-list/dist/countries2to3.json';
import { default as alpha3to2Mapping } from 'countries-list/dist/countries3to2.json';
import { hasFlag } from 'country-flag-icons';
import * as Flags from "country-flag-icons/react/3x2";
declare const alpha2to3MappingSupportedByProvider: {
    AD: string;
    AE: string;
    AF: string;
    AG: string;
    AI: string;
    AL: string;
    AM: string;
    AO: string;
    AQ: string;
    AR: string;
    AS: string;
    AT: string;
    AU: string;
    AW: string;
    AX: string;
    AZ: string;
    BA: string;
    BB: string;
    BD: string;
    BE: string;
    BF: string;
    BG: string;
    BH: string;
    BI: string;
    BJ: string;
    BL: string;
    BM: string;
    BN: string;
    BO: string;
    BQ: string;
    BR: string;
    BS: string;
    BT: string;
    BV: string;
    BW: string;
    BY: string;
    BZ: string;
    CA: string;
    CC: string;
    CD: string;
    CF: string;
    CG: string;
    CH: string;
    CI: string;
    CK: string;
    CL: string;
    CM: string;
    CN: string;
    CO: string;
    CR: string;
    CU: string;
    CV: string;
    CW: string;
    CX: string;
    CY: string;
    CZ: string;
    DE: string;
    DJ: string;
    DK: string;
    DM: string;
    DO: string;
    DZ: string;
    EC: string;
    EE: string;
    EG: string;
    EH: string;
    ER: string;
    ES: string;
    ET: string;
    FI: string;
    FJ: string;
    FK: string;
    FM: string;
    FO: string;
    FR: string;
    GA: string;
    GB: string;
    GD: string;
    GE: string;
    GF: string;
    GG: string;
    GH: string;
    GI: string;
    GL: string;
    GM: string;
    GN: string;
    GP: string;
    GQ: string;
    GR: string;
    GS: string;
    GT: string;
    GU: string;
    GW: string;
    GY: string;
    HK: string;
    HM: string;
    HN: string;
    HR: string;
    HT: string;
    HU: string;
    ID: string;
    IE: string;
    IL: string;
    IM: string;
    IN: string;
    IO: string;
    IQ: string;
    IR: string;
    IS: string;
    IT: string;
    JE: string;
    JM: string;
    JO: string;
    JP: string;
    KE: string;
    KG: string;
    KH: string;
    KI: string;
    KM: string;
    KN: string;
    KP: string;
    KR: string;
    KW: string;
    KY: string;
    KZ: string;
    LA: string;
    LB: string;
    LC: string;
    LI: string;
    LK: string;
    LR: string;
    LS: string;
    LT: string;
    LU: string;
    LV: string;
    LY: string;
    MA: string;
    MC: string;
    MD: string;
    ME: string;
    MF: string;
    MG: string;
    MH: string;
    MK: string;
    ML: string;
    MM: string;
    MN: string;
    MO: string;
    MP: string;
    MQ: string;
    MR: string;
    MS: string;
    MT: string;
    MU: string;
    MV: string;
    MW: string;
    MX: string;
    MY: string;
    MZ: string;
    NA: string;
    NC: string;
    NE: string;
    NF: string;
    NG: string;
    NI: string;
    NL: string;
    NO: string;
    NP: string;
    NR: string;
    NU: string;
    NZ: string;
    OM: string;
    PA: string;
    PE: string;
    PF: string;
    PG: string;
    PH: string;
    PK: string;
    PL: string;
    PM: string;
    PN: string;
    PR: string;
    PS: string;
    PT: string;
    PW: string;
    PY: string;
    QA: string;
    RE: string;
    RO: string;
    RS: string;
    RU: string;
    RW: string;
    SA: string;
    SB: string;
    SC: string;
    SD: string;
    SE: string;
    SG: string;
    SH: string;
    SI: string;
    SJ: string;
    SK: string;
    SL: string;
    SM: string;
    SN: string;
    SO: string;
    SR: string;
    SS: string;
    ST: string;
    SV: string;
    SX: string;
    SY: string;
    SZ: string;
    TC: string;
    TD: string;
    TF: string;
    TG: string;
    TH: string;
    TJ: string;
    TK: string;
    TL: string;
    TM: string;
    TN: string;
    TO: string;
    TR: string;
    TT: string;
    TV: string;
    TW: string;
    TZ: string;
    UA: string;
    UG: string;
    UM: string;
    US: string;
    UY: string;
    UZ: string;
    VA: string;
    VC: string;
    VE: string;
    VG: string;
    VI: string;
    VN: string;
    VU: string;
    WF: string;
    WS: string;
    XK: string;
    YE: string;
    YT: string;
    ZA: string;
    ZM: string;
    ZW: string;
} & {
    AN: string;
    EU: string;
};
export type CountryCodeSupportedByProvider = keyof typeof alpha2to3MappingSupportedByProvider;
export declare const toAlpha2CountryCodeSupportedByProvider: (v: string) => CountryCodeSupportedByProvider;
/**
 * Alpha-2 Country Code
 */
export type CountryCode = keyof typeof alpha2to3Mapping;
/**
 * Validate and narrow a `string` to {@link CountryCode}. Mirrors
 * {@link toAlpha2CountryCodeSupportedByProvider} but accepts the full alpha-2
 * country set — use this when you need a `CountryCode` without an `as` cast,
 * e.g. when mapping a `Country.countryCode: string` (from client-epic-state)
 * to a form's `CountryCode[]` prop. Logs a `console.error` if the input isn't
 * a recognized ISO-3166-1 alpha-2 code.
 */
export declare const toCountryCode: (v: string) => CountryCode;
export declare const isCountryCode: (v: string) => v is CountryCode;
/**
 * Alpha-3 Country Code
 */
export type CountryCode3 = keyof typeof alpha3to2Mapping;
interface CountryDetails {
    capital: string;
    code: CountryCode;
    code3: CountryCode3;
    currency: string;
    name: string;
}
export declare const getCountries: () => CountryDetails[];
export declare const getAlpha2: (countryCode: CountryCode3) => CountryCode;
export declare const getAlpha3: (countryCode: CountryCode) => CountryCode3;
export declare const countryList: CountryDetails[];
/**
 * Resolve a free-form nationality string (as returned by the passport parser —
 * e.g. "USA", "UNITED STATES OF AMERICA", "GB") to an ISO-3166-1 alpha-2
 * {@link CountryCode}. Backed by the `countries-list` dataset so it covers the
 * full country set rather than a hand-maintained synonym list.
 *
 * Resolution order: alpha-2 → alpha-3 → English country name (exact, then the
 * input containing the canonical name, longest match winning so e.g.
 * "Guinea-Bissau" beats "Guinea"). Returns `undefined` when nothing matches.
 */
export declare const resolveNationalityToIsoCode: (rawNationality: string) => CountryCode | undefined;
export { hasFlag, Flags };
