import type { LatLngTuple } from './geo'; import type { Point } from './prediction'; export interface TelemetryPoint { altitude: number; datetime: string; latitude: number; longitude: number; payload: string; } export interface TelemetryMetadata { complete_datetime: string; start_datetime: string; } export interface RawTelemetry { metadata: TelemetryMetadata; telemetry: TelemetryPoint[]; } export interface Telemetry { flight_path: LatLngTuple[]; launch: Point; datapoints: TelemetryPoint[]; } export function parseTelemetry(points: TelemetryPoint[]): Telemetry { if (points.length === 0) { throw new Error('Telemetry requires at least one datapoint'); } const flight_path: LatLngTuple[] = points.map((p) => [p.latitude, p.longitude, p.altitude]); const launch: Point = { latlng: { lat: points[0].latitude, lng: points[0].longitude, alt: points[0].altitude }, datetime: new Date(points[0].datetime), }; return { flight_path, launch, datapoints: points }; }