/** * astroengine validated ranges -- the measured spans behind the headline, and * the delta-T uncertainty that bounds what any ephemeris can say about ancient * dates. * * The engine's analytic series (VSOP87D, Meeus Moon/Pluto, the Kepler pack) * return numbers at any epoch; what is *validated* is narrower and per body. * This module is the one source of truth for those spans (mirroring * `docs/range-expansion.md` and `accuracy.json` -- "validated, not asserted": * the figures move only when the Horizons measurement does), consumed by * {@link engineCapabilities} for introspection and by chart assembly for * per-chart warnings. * * It is a leaf module (imports only core types) so both `chart.ts` and * `capabilities.ts` can use it without an import cycle. */ import type { EngineData, ChebData } from "./core.js"; /** A calendar-year span, inclusive. */ export interface BodySpan { from: number; to: number; } /** The measured headline band. The label is registry-pinned to accuracy.json. * 1000-3000: every body is packed across the span and measures sub-arcsecond * on the frame-free basis (range-expansion.md Tier C); the ~3.3" uniform * apparent floor is the IAU76/80-vs-Vondrak2011 frame term, not position * error. The small bodies are fitted 1600-2484 (Horizons serves them only * ~1600-2500) and report that narrower span via engineCapabilities. */ export declare const HEADLINE: BodySpan; export declare const HEADLINE_LABEL = "1000-3000"; /** Measured spans that are narrower or wider than the headline * (docs/range-expansion.md's table). */ export declare const MEASURED: Record; export declare const VSOP_BODIES: Set; /** Analytic points with no stated range bound (docs/range-expansion.md). */ export declare const ANALYTIC_BODIES: Set; /** Approximate calendar year for a Julian Day (for reporting spans). */ export declare function jdYear(jd: number): number; /** A pack's fitted span in calendar years (`jd0 + segments * seg_days`). */ export declare function packSpan(pack: ChebData): BodySpan; /** * The measured validated span for a body under the given engine data, or * `null` for analytic points with no stated bound and unknown (synthetic) * bodies. Packed bodies report the headline: outside their *fitted* span * they are not computed at all (they land in `Chart.unavailable`), so the * validated question only arises inside it. */ export declare function validatedSpanFor(body: string, data: EngineData): BodySpan | null; /** * One-sigma uncertainty of delta T (TT - UT1) in seconds at a calendar year. * * Breakpoints from Morrison & Stephenson, "Historical values of the Earth's * clock error deltaT and the calculation of eclipses" (J. Hist. Astron. 35, * 2004), Table 1's sigma column; the telescopic era tapers to the IERS * measured span (effectively exact), and the future grows quadratically from * the end of the measured tables (extrapolation, stated as such). Linear * interpolation between breakpoints. * * This is what bounds ancient charts: at year 150 the position theories are * fine but sigma(deltaT) is minutes, which smears the fast movers -- the * Ascendant/MC rotate 0.25 deg per minute of clock error and the Moon moves * 0.55 arcsec per second -- while Jupiter barely notices. Chart warnings * report exactly that split. */ export declare function deltaTSigma(year: number): number;