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;
}
/**
 * Renders one instant in one absolute format.
 *
 * Pure: the same arguments always produce the same string for a given host
 * locale (and, when no `timeZone` is given, host zone).
 */
export declare function formatInstant(date: Date, format: InstantFormat, { timeZone, isTimezoneShown }?: FormatInstantOptions): string;
//# sourceMappingURL=formatInstant.d.ts.map