/** * Token translation helpers for the Temporal-based CalendarMethods. * * The other adapters (dayjs/moment/luxon) inherit moment's format token syntax * (YYYY/MM/DD/HH/mm/ss/Q/[H]n/gggg/GGGG/ww/WW/...). Temporal has no such API, * so we tokenize the format string manually and translate to either: * 1. A formatted output string (formatTokens), or * 2. A regex with field captures for parsing (buildParseRegex). */ export interface FormatContext { year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; /** ISO day of week (1=Mon..7=Sun). */ dayOfWeek: number; /** * Locale-relative day of week (0=locale firstDay..6). Used by the moment * `e` token. For Sunday-first locales this equals `dayOfWeek === 7 ? 0 : dayOfWeek`; * for Monday-first it shifts so Monday=0; for Saturday-first Saturday=0. */ localeWeekDay: number; isoWeek: number; isoWeekYear: number; localeWeek: number; localeWeekYear: number; quarter: number; halfYear: 1 | 2; monthShort: string; monthLong: string; weekdayShort: string; weekdayLong: string; weekdayNarrow: string; dayOfYear: number; unixMs: number; } export declare function formatTokens(format: string, ctx: FormatContext): string; export type ParseFieldKey = 'year' | 'month' | 'day' | 'hour' | 'hour12' | 'minute' | 'second' | 'millisecond' | 'isoWeek' | 'isoWeekYear' | 'localeWeek' | 'localeWeekYear' | 'quarter' | 'halfYear' | 'meridiem-upper' | 'meridiem-lower' /** Captured short month name; resolved against `LocaleNames.monthShort`. */ | 'month-short' /** Captured long month name; resolved against `LocaleNames.monthLong`. */ | 'month-long' /** `Do` ordinal — captured digit only, suffix consumed by regex. */ | 'day-ordinal' /** `S` token — 1-digit centiseconds; multiply by 100 → millisecond. */ | 'fractional-1' /** `SS` token — 2-digit deciseconds; multiply by 10 → millisecond. */ | 'fractional-2' /** * `k` / `kk` — 1-24 hour clock used by some locales. The digit 24 * represents midnight (= hour 0); other values map straight to `hour`. */ | 'hour-1to24' /** `DDD` / `DDDD` — day of year (1-366); resolved with `year` to a date. */ | 'day-of-year' /** `x` — Unix epoch milliseconds; standalone enough to derive full datetime. */ | 'unix-ms' /** `X` — Unix epoch seconds; standalone enough to derive full datetime. */ | 'unix-s' /** Weekday tokens / `d` / `e` are consumed but discarded (redundant). */ | 'skip'; /** * Locale-aware name tables consumed by `buildParseRegex`. Each array is * pre-computed by the caller so that `tokens.ts` stays free of `Intl.*` use. */ export interface LocaleNames { /** 12 entries, January..December — short form ("Jan"). */ monthShort: string[]; /** 12 entries, January..December — long form ("January"). */ monthLong: string[]; /** 7 entries, Sunday-indexed — short form ("Mon"). */ weekdayShort: string[]; /** 7 entries, Sunday-indexed — long form ("Monday"). */ weekdayLong: string[]; /** 7 entries, Sunday-indexed — narrow form ("M"). */ weekdayNarrow: string[]; } export interface ParsedFields { year?: number; month?: number; day?: number; hour?: number; hour12?: number; minute?: number; second?: number; millisecond?: number; isoWeek?: number; isoWeekYear?: number; localeWeek?: number; localeWeekYear?: number; quarter?: number; halfYear?: 1 | 2; meridiem?: 'am' | 'pm'; dayOfYear?: number; unixMs?: number; } export declare function buildParseRegex(format: string, names: LocaleNames): { regex: RegExp; captures: ParseFieldKey[]; tokens: Set; }; export declare function applyParseRegex(text: string, regex: RegExp, captures: ParseFieldKey[], names: LocaleNames): ParsedFields | undefined;