import type { CivilDateTime, JulianTime, Ut1Input, ZonedTime } from './time.js'; export type SolarClockMode = 'mean' | 'apparent'; export type SolarTimeInput = Ut1Input | ZonedTime; export interface EquationOfTimeResult { readonly jdUT1: number; readonly jdTT: number; readonly equationDays: number; readonly equationSeconds: number; readonly apparentSunRightAscensionRad: number; readonly gastRad: number; } export class SolarClock implements CivilDateTime { private constructor(); readonly year: number; readonly month: number; readonly day: number; readonly hour: number; readonly minute: number; readonly second: number; readonly mode: SolarClockMode; readonly longitudeDeg: number; readonly jdSolar: number; readonly instant: JulianTime; readonly sourceClock: ZonedTime | null; readonly equationOfTimeSeconds: number; toJSON(): CivilDateTime & { mode: SolarClockMode; longitudeDeg: number; jdSolar: number; jdUT1: number; jdTT: number; sourceClock: (CivilDateTime & { offsetMinutes: number }) | null; equationOfTimeSeconds: number; }; } export type SourcedSolarClock = SolarClock & { readonly sourceClock: ZonedTime }; export type UnsourcedSolarClock = SolarClock & { readonly sourceClock: null }; export function equationOfTime(time: SolarTimeInput): EquationOfTimeResult; export function meanSolarTime(time: ZonedTime, longitudeDeg: number): SourcedSolarClock; export function meanSolarTime(time: Ut1Input, longitudeDeg: number): UnsourcedSolarClock; export function trueSolarTime(time: ZonedTime, longitudeDeg: number): SourcedSolarClock; export function trueSolarTime(time: Ut1Input, longitudeDeg: number): UnsourcedSolarClock; export const localMeanSolarTime: typeof meanSolarTime; export const localApparentSolarTime: typeof trueSolarTime; export function localMeanToApparentSolarTime(jdLocalMean: number, longitudeDeg: number): number; export function localApparentToMeanSolarTime(jdLocalApparent: number, longitudeDeg: number): number; export const SOLAR_TIME_INFO: Readonly<{ longitudeConvention: string; meanDefinition: string; apparentDefinition: string; clockIsVirtual: true; }>;