/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
/**
 * Describes the number symbols of the locale.
 */
export interface LocaleNumberSymbols {
    /**
     * The decimal separator.
     */
    decimal?: string;
    /**
     * The group separator.
     */
    group?: string;
    /**
     * The percent sign.
     */
    percentSign?: string;
}
/**
 * Describes a currency of a locale.
 */
export interface LocaleCurrency {
    /**
     * The display name of the currency.
     */
    displayName?: string;
    /**
     * The currency symbol.
     */
    symbol?: string;
    /**
     * The narrow currency symbol.
     */
    "symbol-alt-narrow"?: string;
}
/**
 * Describes the currencies of the locale.
 */
export interface LocaleCurrencies {
    /**
     * The currency data with the currency code as a key (field name).
     */
    [propName: string]: LocaleCurrency;
}
/**
 * Describes the number data of the locale.
 */
export interface LocaleNumbers {
    /**
     * The number symbols of the locale.
     */
    symbols?: LocaleNumberSymbols;
    /**
     * The currencies of the locale.
     */
    currencies?: LocaleCurrencies;
    /**
     * The default currency of the locale.
     */
    localeCurrency: string;
}
/**
 * Describes the calendar data of the locale.
 */
export interface LocaleCalendarPatterns {
    /**
     * The short-date pattern.
     */
    d?: string;
    /**
     * The long-date pattern.
     */
    D?: string;
    /**
     * The abbreviated month and day pattern.
     */
    m?: string;
    /**
     * The wide month and day pattern.
     */
    M?: string;
    /**
     * The abbreviated month and year pattern.
     */
    y?: string;
    /**
     * The wide month and year pattern.
     */
    Y?: string;
    /**
     * The full date and time pattern.
     */
    F?: string;
    /**
     * The short general date and time pattern.
     */
    g?: string;
    /**
     * The long general date and time pattern.
     */
    G?: string;
    /**
     * The short time pattern.
     */
    t?: string;
    /**
     * The long time pattern.
     */
    T?: string;
    /**
     * The universal sortable local date and time pattern.
     */
    s?: string;
    /**
     * The universal sortable UTC date and time pattern.
     */
    u?: string;
}
/**
 * Describes the date and time formats of the locale.
 */
export interface LocaleDateTimeFormats {
    /**
     * The full date-time format.
     */
    full?: string;
    /**
     * The long date-time format.
     */
    long?: string;
    /**
     * The medium date-time format.
     */
    medium?: string;
    /**
     * The short date-time format.
     */
    short?: string;
    /**
     * The skeleton formats of the locale.
     */
    availableFormats?: any;
}
/**
 * Describes the time formats of the locale.
 */
export interface LocaleTimeFormats {
    /**
     * The full time format.
     */
    full?: string;
    /**
     * The long time format.
     */
    long?: string;
    /**
     * The medium time format.
     */
    medium?: string;
    /**
     * The short time format.
     */
    short?: string;
}
/**
 * Describes the date formats of the locale.
 */
export interface LocaleDateFormats {
    /**
     * The full date format.
     */
    full?: string;
    /**
     * The long date format.
     */
    long?: string;
    /**
     * The medium date format.
     */
    medium?: string;
    /**
     * The short date format.
     */
    short?: string;
}
/**
 * Describes the name types of the locale date formats.
 */
export interface LocaleDateFormatNames {
    /**
     * An array with the abbreviated names.
     */
    abbreviated?: string[];
    /**
     * An array with the narrow names.
     */
    narrow?: string[];
    /**
     * An array with the short names.
     */
    short?: string[];
    /**
     * An array with the wide names.
     */
    wide?: string[];
}
/**
 * Describes the date-format names of the locale.
 */
export interface LocaleDateFormatNameTypes {
    /**
     * The default format names.
     */
    format?: LocaleDateFormatNames;
    /**
     * The standalone format names.
     */
    'stand-alone'?: LocaleDateFormatNames;
}
/**
 * Describes the day-period names of the locale.
 */
export interface LocaleDayPeriodNames {
    /**
     * The Ante meridiem name.
     */
    am?: string;
    /**
     * The Post meridiem name.
     */
    pm?: string;
}
/**
 * Describes the data for the day-period names of the locale.
 */
export interface LocaleDayPeriodNameTypes {
    /**
     * The default format names.
     */
    format?: LocaleDayPeriodNames;
    /**
     * The standalone format names.
     */
    'stand-alone'?: LocaleDayPeriodNames;
}
/**
 * Describes the date-field names of the locale.
 */
export interface LocaleDateFieldNames {
    /**
     * The wide field name.
     */
    wide?: string;
    /**
     * The short field name.
     */
    short?: string;
    /**
     * The narrow field name.
     */
    narrow?: string;
}
/**
 * Describes the data for the date-field names of the locale.
 */
export interface LocaleDateFieldNameTypes {
    /**
     * The field names for an era.
     */
    era?: LocaleDateFieldNames;
    /**
     * The field names for a year.
     */
    year?: LocaleDateFieldNames;
    /**
     * The field names for a quarter.
     */
    quarter?: LocaleDateFieldNames;
    /**
     * The field names for a month.
     */
    month?: LocaleDateFieldNames;
    /**
     * The field names for a week.
     */
    week?: LocaleDateFieldNames;
    /**
     * The field names for a day.
     */
    day?: LocaleDateFieldNames;
    /**
     * The field names for a weekday.
     */
    weekday?: LocaleDateFieldNames;
    /**
     * The field names for a day period.
     */
    dayperiod?: LocaleDateFieldNames;
    /**
     * The field names for an hour.
     */
    hour?: LocaleDateFieldNames;
    /**
     * The field names for a minute.
     */
    minute?: LocaleDateFieldNames;
    /**
     * The field names for a second.
     */
    second?: LocaleDateFieldNames;
    /**
     * The field names for a zone.
     */
    zone?: LocaleDateFieldNames;
}
/**
 * Describes the calendar data of the locale.
 */
export interface LocaleCalendar {
    /**
     * The GMT format of the locale.
     */
    gmtFormat?: string;
    /**
     * The zero (offset) GMT format of the locale.
     */
    gmtZeroFormat?: string;
    /**
     * The predefined patterns of the locale.
     */
    patterns?: LocaleCalendarPatterns;
    /**
     * The date and time formats of the locale.
     */
    dateTimeFormats?: LocaleDateTimeFormats;
    /**
     * The time formats of the locale.
     */
    timeFormats?: LocaleTimeFormats;
    /**
     * The date formats of the locale.
     */
    dateFormats?: LocaleDateFormats;
    /**
     * The data for the day names of the locale.
     */
    days?: LocaleDateFormatNameTypes;
    /**
     * The data for the day-period names of the locale.
     */
    dayPeriods?: LocaleDayPeriodNameTypes;
    /**
     * The data for the month names of the locale.
     */
    months?: LocaleDateFormatNameTypes;
    /**
     * The data for the quarter names of the locale.
     */
    quarters?: LocaleDateFormatNameTypes;
    /**
     * The data for the era names of the locale.
     */
    eras?: LocaleDateFormatNameTypes;
    /**
     * The date-field names of the locale.
     */
    dateFields: LocaleDateFieldNameTypes;
}
/**
 * Describes the data of the locale.
 */
export interface Locale {
    /**
     * The name of the locale.
     */
    name?: string;
    /**
     * The territory of the locale.
     */
    territory?: string;
    /**
     * The numbers data of the locale.
     */
    numbers?: LocaleNumbers;
    /**
     * The calendar data of the locale.
     */
    calendar?: LocaleCalendar;
}
