import type { Locale } from '../i18n/types';
import type { TimestampFormat } from './Timestamp';
/**
 * Every format that names a fixed instant, plus `'full'` — the long absolute
 * style ("February 19, 2026 at 5:00:00 PM UTC") that backs a relative
 * timestamp's accessible name and the tooltip's default line.
 *
 * `'relative'`, `'relative_short'`, and `'auto'` are excluded: a relative
 * phrase names no instant, so a zone could not change what it says.
 */
export type InstantFormat = Exclude<TimestampFormat, 'relative' | 'relative_short' | 'auto'> | 'full';
export interface FormatInstantOptions {
    /**
     * IANA time zone identifier. Omit for the viewer's own zone — which is what
     * `Intl` already does with no `timeZone`, so the omitted path never
     * constructs an explicit-zone formatter and cannot drift from the host
     * default.
     *
     * Must already be one the platform accepts. An identifier `Intl` does not
     * recognize throws a `RangeError` from its constructor, before any
     * formatting happens; deciding what to do about that belongs to whoever
     * took the identifier from a consumer, not here (tooltipEntries resolves
     * and warns in `resolveTimezoneID`, then passes only what survived).
     */
    timeZone?: string;
    /**
     * Whether to append the zone abbreviation. Honoured by `date_time` and
     * `time` only: `'full'` always carries one because that is the style, and
     * the `system_*` shapes never do — a trailing "PST" would break anything
     * parsing them, which is why `isTimezoneShown` has never applied to them.
     * @default false
     */
    isTimezoneShown?: boolean;
    /**
     * How the zone name is spelled when a format carries one. `'short'` is the
     * abbreviation ("PST"); `'long'` spells it out ("Pacific Standard Time").
     * Only `'full'` honours it — it is the one format that always names its zone.
     * The spelled-out form backs a relative timestamp's accessible name, where an
     * abbreviation reads as an unexpanded initialism to a screen reader
     * (WCAG 3.1.4); every visible surface keeps the abbreviation.
     * @default 'short'
     */
    timeZoneNameStyle?: 'short' | 'long';
}
/**
 * Renders one instant in one absolute format.
 *
 * Pure: the same arguments always produce the same string for the requested
 * locale (and, when no `timeZone` is given, host zone).
 */
export declare function formatInstant(date: Date, format: InstantFormat, locale: Locale, { timeZone, isTimezoneShown, timeZoneNameStyle, }?: FormatInstantOptions): string;
//# sourceMappingURL=formatInstant.d.ts.map