import { Locale } from "../Locale";
import { Time } from "../../type/Time";
import { DateFormat } from "./DateFormat";
export type DateTimeFormatOptions = Intl.DateTimeFormatOptions & {
    locales?: string | Locale;
};
export declare const i18n: {
    de: {
        shortDayNames: string[];
        longDayNames: string[];
        shortMonthNames: string[];
        longMonthNames: string[];
    };
    en: {
        shortDayNames: string[];
        longDayNames: string[];
        shortMonthNames: string[];
        longMonthNames: string[];
    };
    fr: {
        shortDayNames: string[];
        longDayNames: string[];
        shortMonthNames: string[];
        longMonthNames: string[];
    };
    ru: {
        shortDayNames: string[];
        longDayNames: string[];
        shortMonthNames: string[];
        longMonthNames: string[];
    };
};
/**
 * Java compatible class for date/time formatting subclasses which formats and parses dates and/or time in a language-independent manner.
 * Date and time formats are specified by date and time _pattern strings_. Within date and time pattern strings, unquoted letters from 'A' to 'Z' and from 'a' to 'z' are interpreted as pattern letters representing the components of a date or time string.
 *
 * Date and time display formats can have two sections. The first is required and contains the format for dates and times; the second is optional and specifies how to represent nulls:
 * `date-time-format;null-format`
 *
 * Characters with special meaning in _date_ section of display format:
 * |Character| Meaning                                     | Example |
 * |---      | ---                                         | ---     |
 * | `d`     | Day number with no leading zero             | 9       |
 * | `dd`    | Day number with leading zero if appropriate | 09      |
 * | `D`     | Day number in year                          | 189     |
 * | `E`     | Day name in week, gives starting 1 letter   | M       |
 * | `EEE`   | Day name in week, gives starting 2 letters  | Mo      |
 * | `EEE`   | Day name in week, gives starting 3 letters  | Mon     |
 * | `EEEE`  | Day name in week                            | Monday  |
 * | `M`     | Month number with no leading zero           | 6       |
 * | `MM`    | Month number with leading zero if appropriate| 06     |
 * | `MMM`   | Month name abbreviation                     | Jun     |
 * | `MMMM`  | Month name                                  | June    |
 * | `yy`    | Two-digit year                              | 97      |
 * | `yyyy`  | Four-digit year                             | 1997    |
 * | `u`     | ISO 8601 day number of the week (1 = Monday, ..., 7 = Sunday)   | 1      |
 * | `w`     | ISO 8601 week number of the year            | 8       |
 * | `ww`    | ISO 8601 week number of the year, leading zero for single-digit | 08     |
 * | `W`     | ISO 8601 week number of the month           | 3       |
 * | `WW`    | ISO 8601 week number of the month, leading zero for single-digit| 03     |
 *
 * Colons, slashes, and spaces display as entered in the mask.
 *
 * You can use the following keywords as date display formats when you want to determine a localized appropriate format to use:
 * - [Default]
 * - [ShortDate]
 * - [MediumDate]
 * - [LongDate]
 * - [FullDate]
 * - [IsoDate]
 *
 * Note that [Date] is not a valid display format.
 *
 * Character meaning in _time_ section of the display format:
 *
 * |Character| Meaning                                          | Example |
 * |---      | ---                                              | ---     |
 * |`h`      | Hours; no leading zero for single-digit hours (12-hour clock)    | 1       |
 * |`hh`     | Hours; leading zero for single-digit hours (12-hour clock)       | 01      |
 * |`H`      | Hours; no leading zero for single-digit hours (24-hour clock)    | 3       |
 * |`HH`     | Hours; leading zero for single-digit hours (24-hour clock)       | 03      |
 * |`m`      | Minute with no leading zero (must follow h or hh)| 5   |
 * |`mm`     | Minute with leading zero if appropriate (must follow h or hh)| 05  |
 * |`s`      | Second with no leading zero (must follow m or mm)| 7   |
 * |`ss`     | Second with leading zero (must follow m or mm)   | 07  |
 * |`S`      | Milliseconds; gives 1 digits                     | 3   |
 * |`SS`     | Milliseconds; gives 2 digits                     | 25  |
 * |`SSS`    | Milliseconds; gives 3 digits                     | 248 |
 * |`a`      | Am/pm marker in lower case                       | am  |
 * |`A`      | Am/pm marker in upper case                       | PM  |
 * |`z`      | Timezone abbreviation, e.g. GMT+0700, UTC        | GMT-05:00 |
 * |`Z`      | RFC 822 timezone offset, e.g. -0500 or +0230     | +0400 |
 * |`X`      | ISO 8601 timezone offset, e.g. Z, +04            | +04   |
 * |`XX`     | ISO 8601 timezone offset, e.g. Z, -0500          | +0400 |
 * |`XXX`    | ISO 8601 timezone offset, e.g. Z, +02:30         | +04:00|
 * |`TT`     | Time between the date and the current date (narrow style)| -8 h        |
 * |`TTT`    | Time between the date and the current date (short style) | in 10 hr.   |
 * |`TTTT`   | Time between the date and the current date (long style)  | in 10 hours |
 *
 * Colons, slashes, and spaces display as entered in the mask.
 *
 * You can use the following keywords as a time display formats when you want to determine a localized appropriate format to use:
 * - [Time]
 * - [ShortTime]
 * - [LongTime]
 * - [IsoTime]
 * - [LongTimeAgo]
 * - [ShortTimeAgo]
 *
 * For display both date and time values apply the following keywords:
 * - [DateTime]
 * - [IsoDateTime]
 * - [IsoDateTimeTZ]
 * - [IsoDateTimeUTC]
 * @example
 * console.log( new DateTimeFormat("EEEE, MMMM dd, yyyy, h:mm:ss a").format(Date.now()) ); // Saturday, June 09, 2007, 5:46:21 PM
 * @since 0.5.0
 * @license MIT, (c) 2022 ALEXANDER STRELKOV, alv.strelkov@gmail.com
 */
export declare class SimpleDateFormat extends DateFormat {
    private _dtFormatter;
    private _rtFormatter;
    private _options;
    private _locale;
    private _pattern;
    private _subpatterns;
    private _utcgmt;
    constructor(pattern?: string, options?: DateTimeFormatOptions);
    private _decompose;
    private formatTimeAgo;
    /**
     * Get proper timezone abbreviation or timezone offset.
     *
     * This will fall back to `GMT+xxxx` if it does not recognize the
     * timezone within the `timezone` RegEx above. Currently only common
     * American and Australian timezone abbreviations are supported.
     *
     * @param  {String | Date} date
     * @return {String}
     */
    static formatTimezone(date: Date): string;
    /**
     * @override
     */
    format(value: Date | Time | string | number | null): string;
}
