/**
 * Inlined replacement for the subset of `d3-time-format` semiotic
 * uses (the `timeFormat(spec)` factory).
 *
 * Why this module exists: `d3-time-format` (~86KB) plus its `d3-time`
 * peer (~40KB) ship a complete strftime engine with locale-data
 * bundles we don't use. semiotic only consumes the strftime token
 * parser — locale formatting can defer to `Intl.DateTimeFormat`,
 * which is built into every modern runtime.
 *
 * What's implemented (the chart-axis-relevant subset):
 *
 *   - `%Y` — 4-digit year
 *   - `%y` — 2-digit year (zero-padded)
 *   - `%m` — 2-digit month (01–12)
 *   - `%d` — 2-digit day (01–31)
 *   - `%e` — day of month, space-padded (matches d3)
 *   - `%H` — 2-digit hour, 24-hr (00–23)
 *   - `%I` — 2-digit hour, 12-hr (01–12)
 *   - `%M` — 2-digit minute (00–59)
 *   - `%S` — 2-digit second (00–59)
 *   - `%L` — 3-digit millisecond (000–999)
 *   - `%p` — AM/PM
 *   - `%b` — short month name (Jan, Feb …)
 *   - `%B` — long month name (January, February …)
 *   - `%a` — short weekday name (Mon, Tue …)
 *   - `%A` — long weekday name (Monday, Tuesday …)
 *   - `%j` — day of year (001–366)
 *   - `%%` — literal `%`
 *
 * What's NOT implemented (rare in chart axis labels):
 *
 *   - `%U` / `%W` — week of year (Sunday/Monday-based)
 *   - `%Z` / `%z` — timezone name / offset
 *   - `%c` / `%x` / `%X` — locale-default date/time/full forms
 *   - `%f` — microseconds (always 0 in JS Date anyway)
 *
 * Localized name forms (`%b`/`%B`/`%a`/`%A`) defer to
 * `Intl.DateTimeFormat` pinned to `en-US`. `d3-time-format` ships
 * with an en-US default locale (`d3-time-format`'s
 * `timeFormatDefaultLocale` swap is opt-in), so pinning matches its
 * default behavior — and crucially, keeps tick labels stable across
 * environments. Using the runtime's ambient locale would change axis
 * text per CI runner / browser system locale, which surfaces as
 * baseline drift in pixel / SSR snapshot tests.
 *
 * This shim uses the local timezone (matching `d3-time-format`'s
 * `timeFormat`); for UTC equivalence we'd add a `utcFormat` factory
 * that mirrors `getUTC*` accessors. Add it to this module rather than
 * re-introducing the dependency if a UTC formatter becomes necessary.
 */
/**
 * Build a date formatter from a strftime-style spec string.
 * Mirrors `d3.timeFormat(spec)`: returns `(date: Date) => string`.
 *
 * Tokens are scanned left-to-right; literal text between tokens
 * passes through unchanged. The returned function uses the local
 * timezone (matching d3-time-format's `timeFormat`).
 */
export declare function timeFormat(spec: string): (date: Date) => string;
