import { default as React } from 'react';
export type ClockFormat = "12h" | "24h" | "iso" | "met";
export type DateFormat = "iso" | "julian" | "gregorian" | "none";
export type TimeSource = "realtime" | "simulation" | "custom";
/**
* Timer configuration for AOS/LOS countdown/up timers
*/
export interface TimerConfig {
/** Timer label (e.g., "AOS", "LOS", "MET") */
label: string;
/** Target timestamp (for countdown) or start timestamp (for countup) */
timestamp: Date;
/** Timer direction: 'countdown' counts to target, 'countup' counts from start */
direction: "countdown" | "countup";
/** Optional status color */
status?: "normal" | "caution" | "critical" | "standby";
/** Show days in timer format */
showDays?: boolean;
}
/**
* Simulation time configuration
*/
export interface SimulationTimeConfig {
/** Simulation epoch (t=0) as Date or ISO string */
epoch: Date | string;
/** Current simulation time offset in seconds from epoch */
elapsedSeconds?: number;
/** Time scale factor (1 = realtime, 2 = 2x speed, etc.) */
timeScale?: number;
/** Whether simulation is running */
isRunning?: boolean;
/** Callback to get current simulation time */
getCurrentTime?: () => Date;
}
export interface MissionClockProps {
/** Clock format */
format?: ClockFormat;
/** Timezone label to display */
timezone?: string;
/** Hide seconds */
hideSeconds?: boolean;
/** Small size variant */
small?: boolean;
/** Show date */
showDate?: boolean;
/** Date format (iso, julian, gregorian) */
dateFormat?: DateFormat;
/** Custom className */
className?: string;
/** Click handler */
onClick?: () => void;
/** AOS timer - countdown/up to Acquisition of Signal */
aosTimer?: TimerConfig | Date;
/** LOS timer - countdown/up to Loss of Signal */
losTimer?: TimerConfig | Date;
/** Additional custom timers */
customTimers?: TimerConfig[];
/** Time source: realtime, simulation, or custom */
timeSource?: TimeSource;
/** Simulation time configuration (for timeSource='simulation') */
simulationConfig?: SimulationTimeConfig;
/** Custom time provider (for timeSource='custom') */
customTime?: Date | (() => Date);
/** Mission start time for MET display */
missionStart?: Date | string;
/** Show MET (Mission Elapsed Time) instead of wall clock */
showMET?: boolean;
/** Update interval in milliseconds (default: 1000) */
updateInterval?: number;
/** Compact mode - single line display */
compact?: boolean;
/** Show milliseconds */
showMilliseconds?: boolean;
}
/**
* MissionClock - Advanced mission time display for space operations
*
* Supports real-time clock, simulation time, MET (Mission Elapsed Time),
* and AOS/LOS timers following Astro UX Design System patterns.
*
* @example
* ```tsx
* // Basic clock
*
*
* // With AOS/LOS timers
*
*
* // Simulation time
*
*
* // Mission Elapsed Time
*
*
* // Julian day format
*
* ```
*/
export declare const MissionClock: React.NamedExoticComponent;
/**
* SimpleTimer - Standalone countdown/up timer
*/
export interface SimpleTimerProps {
/** Timer label */
label: string;
/** Target/start timestamp */
timestamp: Date;
/** Timer direction */
direction?: "countdown" | "countup";
/** Status color */
status?: "normal" | "caution" | "critical" | "standby";
/** Show days */
showDays?: boolean;
/** Custom className */
className?: string;
}
export declare const SimpleTimer: React.NamedExoticComponent;
/**
* MissionElapsedTime - Dedicated MET display
*/
export interface MissionElapsedTimeProps {
/** Mission launch/start time */
launchTime: Date | string;
/** Show milliseconds */
showMilliseconds?: boolean;
/** Custom className */
className?: string;
/** Small variant */
small?: boolean;
}
export declare const MissionElapsedTime: React.NamedExoticComponent;
/**
* SimulationClock - Clock driven by simulation time
*/
export interface SimulationClockProps {
/** Simulation epoch */
epoch: Date | string;
/** Elapsed seconds from epoch */
elapsedSeconds?: number;
/** Time scale factor */
timeScale?: number;
/** Whether simulation is running */
isRunning?: boolean;
/** Show date */
showDate?: boolean;
/** Date format */
dateFormat?: DateFormat;
/** Custom className */
className?: string;
/** Small variant */
small?: boolean;
}
export declare const SimulationClock: React.NamedExoticComponent;
export default MissionClock;