SafeRoute / src /types /index.ts
ayushsahu45's picture
Create types/index.ts
4edc64d verified
export interface Coordinates {
lng: number;
lat: number;
}
export interface RouteData {
geometry: {
coordinates: [number, number][];
};
distance: number;
duration: number;
legs?: {
steps: RouteStep[];
}[];
}
export interface RouteStep {
distance: number;
maneuver: {
type: string;
modifier?: string;
instruction?: string;
name?: string;
};
}
export interface RiskSegment {
start?: [number, number];
end?: [number, number];
risk_probability?: number;
risk_score?: number;
traffic_level?: number;
}
export interface Incident {
type: string;
severity: string;
location: [number, number];
}
export interface WeatherData {
weather?: {
main: string;
description?: string;
}[];
main?: {
temp: number;
};
}
export interface GeocodingResult {
id: string | number;
place_id?: number;
place_name: string;
display_name?: string;
center: [number, number];
lon?: string;
lat?: string;
type?: string;
}
export interface SavedLocation {
id: number;
name: string;
address: string;
loc: [number, number];
timestamp: number;
}
export interface UserProfile {
name: string;
email: string;
photo?: string;
}
export interface MapLayer {
id: string;
name: string;
visible: boolean;
}
export type Theme = 'dark' | 'light';
export type VehicleType = 'driving' | 'cycling';
export type RiskLevel = 'low' | 'moderate' | 'high';
export interface RouteAnalysis {
segments: RiskSegment[];
incidents: Incident[];
overallRisk: number;
safetyScore: number;
}
export interface AirQualityStation {
lat: number;
lon: number;
value: number;
parameter: string;
unit: string;
city: string;
location: string;
}
export interface ContextMenuPosition {
lat: number;
lng: number;
x: number;
y: number;
}
export interface MeasurePoint {
lng: number;
lat: number;
}