export type GetContextResponse = {
  currentCoordinates: {
    latitude: number;
    longitude: number;
  };
  endStopId: string;
  nearestSightId: string;
  nearestStationId?: string | null;
  rawCoordinates: {
    latitude: number;
    longitude: number;
  };
  routeId: string;
  route_id?: number | string;
  routeNumber: string;
  routeProgress: {
    startStopId: string;
    endStopId: string;
    percentageCompleted: number;
  };
  startStopId: string;
  maintenanceModeOn: boolean;
  error?: string | boolean | { message?: string };
  message?: string;
  status?: string;
};

export type GetContextStationsResponse = {
  stationId: string[];
};

export type GetWeatherResponse = {
  currentWeather: {
    temperatureCelsius: number;
    description: string;
    humidity?: number;
    windSpeed: number;
    windDegree: number;
  };
  forecast: {
    date: string;
    description: string;
    humidity?: number;

    minTemperatureCelsius: number;
    maxTemperatureCelsius: number;
    windDegree: number;
    windSpeed: number;
  }[];
};

export type GetRouteResponse = {
  carrier: string;
  carrier_id: number;
  center_latitude: number;
  center_longitude: number;
  governor_appeal: number;
  id: number;
  path: [number, number][];
  rotate: number;
  route_direction: boolean;
  route_number: string;
  route_sys_number: string;
  scale_max: number;
  scale_min: number;
  video_preview: string;
  video_timer?: number;
  icon?: string;
  icon_size?: number;
  font_size?: number;
};

export type GetCarrierResponse = {
  city: string;
  city_id: number;
  full_name: string;
  id: number;
  logo: string;
  short_name: string;
  slogan: string;
  main_color?: string;
  left_color?: string;
  right_color?: string;
};

export type GetCityResponse = {
  arms: string;
  country: string;
  country_code: string;
  id: number;
  name: string;
};

export type GetRouteSightsResponse = {
  id: number;
  name: string;
  description: string;
  city_id: string;
  address: string;
  latitude: number;
  longitude: number;
  thumbnail: string;
  watermark_lu: string;
  watermark_rd: string;
  left_article: number;
  preview_media: string;
  video_preview: string;
  icon_size?: number;
  icon?: string;
  alt_icon?: string;
  is_default_icon?: boolean;
  short_name?: string;
}[];

export type GetRouteStationsResponse = {
  id: number;
  name: string;
  system_name: string;
  description: string;
  address: string;
  latitude: number;
  longitude: number;
  direction: boolean;
  city_id: string;
  offset_x: number;
  offset_y: number;
  align: number;
  stick: number;
  icon?: string;
  transfers: {
    tram: string;
    trolleybus: string;
    bus: string;
    train: string;
    metro_red: string;
    metro_green: string;
    metro_blue: string;
    metro_purple: string;
    metro_orange: string;
  };
}[];

export type GetMediaResponse = {
  id: string;
  filename: string;
  media_name: string;
  media_type: number;
};

export type GetArticleResponse = {
  id: number;
  heading: string;
  body: string;
};

export type GetSightArticleResponse = {
  id: number;
  heading: string;
  body: string;
  media: GetMediaResponse;
};
