-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Parse aviation weather reports
--   
--   Parse aviation weather reports, currently METARs and TAFs
@package avwx
@version 0.3.0.2


-- | Parse aviation weather reports. A qualified import is recommended.
module Data.Aviation.WX

-- | An attoparsec parser that can parse METAR messages.
weatherParser :: (Monad f, CharParsing f) => f Weather

-- | Aviation weather, currently only METARs and TAFs are supported.
data Weather

-- | A METeorological Aerodrome Report
METAR :: ReportType -> Date -> Station -> [Flag] -> Maybe Wind -> [Visibility] -> [(Runway, [Visibility], Maybe VisTrend)] -> [RunwayCondition] -> [WeatherPhenomenon] -> [Cloud] -> Maybe Pressure -> Maybe Int -> Maybe Int -> [Trend] -> Maybe Text -> Bool -> Weather

-- | The type of the report
[_reporttype] :: Weather -> ReportType

-- | The observation date.
[_metardate] :: Weather -> Date

-- | The designation of the observing station.
[_station] :: Weather -> Station

-- | A remark about the reported observation.
[_flags] :: Weather -> [Flag]

-- | The observed wind.
[_metarwind] :: Weather -> Maybe Wind

-- | The observed visibility.
[_metarvisibility] :: Weather -> [Visibility]

-- | The observed visibility for specific runways, usually reported if the
--   runway visibility significantly differs from the general reported
--   visibility.
[_runwayvis] :: Weather -> [(Runway, [Visibility], Maybe VisTrend)]

-- | Surface or close conditions of a specific runway.
[_runwaycond] :: Weather -> [RunwayCondition]

-- | Observed weather phenomena
[_wx] :: Weather -> [WeatherPhenomenon]

-- | Observed cloud layers
[_clouds] :: Weather -> [Cloud]

-- | Measured pressure
[_metarpressure] :: Weather -> Maybe Pressure

-- | Measured pressure
[_temperature] :: Weather -> Maybe Int

-- | Determined dew point
[_dewPoint] :: Weather -> Maybe Int

-- | Expected changes within the next two hours There can be more than one;
--   for example a TEMPO and a BECMG prediction
[_weathertrend] :: Weather -> [Trend]

-- | RMK section (Additional parts of a METAR report that are not part of
--   the official METAR message but are commonly used in various parts of
--   the world; unparsed)
[_remark] :: Weather -> Maybe Text
[_maintenance] :: Weather -> Bool

-- | An automatic terminal information service report
ATIS :: Weather

-- | A non-scheduled METAR
SPECI :: Weather

-- | A terminal aerodrome forecast
TAF :: ReportType -> Date -> [Flag] -> Station -> Date -> Date -> [Transition] -> [Trend] -> Weather

-- | The type of the report
[_reporttype] :: Weather -> ReportType

-- | The date the TAF was issued
[_tafissuedat] :: Weather -> Date

-- | A remark about the reported observation.
[_flags] :: Weather -> [Flag]

-- | The designation of the observing station.
[_station] :: Weather -> Station

-- | The beginning of the validity period
[_tafvalidfrom] :: Weather -> Date

-- | The end of the validity period
[_tafvaliduntil] :: Weather -> Date

-- | The initial conditions predicted to be valid for the duration of the
--   TAF
[_tafinitialconditions] :: Weather -> [Transition]

-- | Zero or more predicted changes
[_tafchanges] :: Weather -> [Trend]

-- | An aviation wx hazard message of moderate severity
AIRMET :: Weather

-- | A significant meteorological information message
SIGMET :: Weather

-- | A general aviation forecast message
GAMET :: Weather
class HasWeather c_akV2 where clouds = (.) weather clouds dewPoint = (.) weather dewPoint flags = (.) weather flags maintenance = (.) weather maintenance metardate = (.) weather metardate metarpressure = (.) weather metarpressure metarvisibility = (.) weather metarvisibility metarwind = (.) weather metarwind remark = (.) weather remark reporttype = (.) weather reporttype runwaycond = (.) weather runwaycond runwayvis = (.) weather runwayvis station = (.) weather station tafchanges = (.) weather tafchanges tafinitialconditions = (.) weather tafinitialconditions tafissuedat = (.) weather tafissuedat tafvalidfrom = (.) weather tafvalidfrom tafvaliduntil = (.) weather tafvaliduntil temperature = (.) weather temperature weathertrend = (.) weather weathertrend wx = (.) weather wx
weather :: HasWeather c_akV2 => Lens' c_akV2 Weather
clouds :: HasWeather c_akV2 => Traversal' c_akV2 [Cloud]
dewPoint :: HasWeather c_akV2 => Traversal' c_akV2 (Maybe Int)
flags :: HasWeather c_akV2 => Traversal' c_akV2 [Flag]
maintenance :: HasWeather c_akV2 => Traversal' c_akV2 Bool
metardate :: HasWeather c_akV2 => Traversal' c_akV2 Date
metarpressure :: HasWeather c_akV2 => Traversal' c_akV2 (Maybe Pressure)
metarvisibility :: HasWeather c_akV2 => Traversal' c_akV2 [Visibility]
metarwind :: HasWeather c_akV2 => Traversal' c_akV2 (Maybe Wind)
remark :: HasWeather c_akV2 => Traversal' c_akV2 (Maybe Text)
reporttype :: HasWeather c_akV2 => Traversal' c_akV2 ReportType
runwaycond :: HasWeather c_akV2 => Traversal' c_akV2 [RunwayCondition]
runwayvis :: HasWeather c_akV2 => Traversal' c_akV2 [(Runway, [Visibility], Maybe VisTrend)]
station :: HasWeather c_akV2 => Traversal' c_akV2 Station
tafchanges :: HasWeather c_akV2 => Traversal' c_akV2 [Trend]
tafinitialconditions :: HasWeather c_akV2 => Traversal' c_akV2 [Transition]
tafissuedat :: HasWeather c_akV2 => Traversal' c_akV2 Date
tafvalidfrom :: HasWeather c_akV2 => Traversal' c_akV2 Date
tafvaliduntil :: HasWeather c_akV2 => Traversal' c_akV2 Date
temperature :: HasWeather c_akV2 => Traversal' c_akV2 (Maybe Int)
weathertrend :: HasWeather c_akV2 => Traversal' c_akV2 [Trend]
wx :: HasWeather c_akV2 => Traversal' c_akV2 [WeatherPhenomenon]
class AsWeather r_alsP where _METAR = (.) _Weather _METAR _ATIS = (.) _Weather _ATIS _SPECI = (.) _Weather _SPECI _TAF = (.) _Weather _TAF _AIRMET = (.) _Weather _AIRMET _SIGMET = (.) _Weather _SIGMET _GAMET = (.) _Weather _GAMET
_Weather :: AsWeather r_alsP => Prism' r_alsP Weather
_METAR :: AsWeather r_alsP => Prism' r_alsP (ReportType, Date, Station, [Flag], Maybe Wind, [Visibility], [(Runway, [Visibility], Maybe VisTrend)], [RunwayCondition], [WeatherPhenomenon], [Cloud], Maybe Pressure, Maybe Int, Maybe Int, [Trend], Maybe Text, Bool)
_ATIS :: AsWeather r_alsP => Prism' r_alsP ()
_SPECI :: AsWeather r_alsP => Prism' r_alsP ()
_TAF :: AsWeather r_alsP => Prism' r_alsP (ReportType, Date, [Flag], Station, Date, Date, [Transition], [Trend])
_AIRMET :: AsWeather r_alsP => Prism' r_alsP ()
_SIGMET :: AsWeather r_alsP => Prism' r_alsP ()
_GAMET :: AsWeather r_alsP => Prism' r_alsP ()

-- | An obersvation date.
data Date
Date :: Int -> Int -> Int -> Date
[_dayOfMonth] :: Date -> Int
[_hour] :: Date -> Int
[_minute] :: Date -> Int
class HasDate c_aoae where dayOfMonth = (.) date dayOfMonth hour = (.) date hour minute = (.) date minute
date :: HasDate c_aoae => Lens' c_aoae Date
dayOfMonth :: HasDate c_aoae => Lens' c_aoae Int
hour :: HasDate c_aoae => Lens' c_aoae Int
minute :: HasDate c_aoae => Lens' c_aoae Int

-- | An aeronautical weather station designator.
newtype Station

-- | The station as identified by its aerodrome's ICAO code.
ICAO :: Text -> Station

-- | A flag describing an aviation meteorological report
data Flag

-- | A message has been corrected after the beginning of its original
--   validity period
COR :: Flag

-- | A message has been corrected prior to its original validity period
AMD :: Flag

-- | A message has been generated fully automatic without a plausibility
--   check by a human
AUTO :: Flag
class HasFlag c_alMM
flag :: HasFlag c_alMM => Lens' c_alMM Flag
class AsFlag r_alNt where _COR = (.) _Flag _COR _AMD = (.) _Flag _AMD _AUTO = (.) _Flag _AUTO
_Flag :: AsFlag r_alNt => Prism' r_alNt Flag
_COR :: AsFlag r_alNt => Prism' r_alNt ()
_AMD :: AsFlag r_alNt => Prism' r_alNt ()
_AUTO :: AsFlag r_alNt => Prism' r_alNt ()

-- | Wind information.
data Wind
Wind :: Maybe WindDirection -> Maybe Unit -> Maybe Int -> Wind

-- | The direction the wind is blowing from.
[_winddirection] :: Wind -> Maybe WindDirection

-- | The wind speed.
[_velocity] :: Wind -> Maybe Unit

-- | The strength of the observed gusts, if any.
[_gusts] :: Wind -> Maybe Int
class HasWind c_aoqW where gusts = (.) wind gusts velocity = (.) wind velocity winddirection = (.) wind winddirection
wind :: HasWind c_aoqW => Lens' c_aoqW Wind
gusts :: HasWind c_aoqW => Lens' c_aoqW (Maybe Int)
velocity :: HasWind c_aoqW => Lens' c_aoqW (Maybe Unit)
winddirection :: HasWind c_aoqW => Lens' c_aoqW (Maybe WindDirection)

-- | Vertical visibility.
data Visibility

-- | Ten kilometres or more. This is also used for <a>P6SM</a> which means
--   6 statute miles or more. Do note that 6SM is a little less than 10km
--   (9.6km)
TenOrMore :: Visibility

-- | Fifty metres or less.
FiftyMetresOrLess :: Visibility

-- | Two kilometres or more.
TwoOrMore :: Visibility

-- | A specific visibility.
SpecificVisibility :: Distance -> (Maybe Direction) -> Visibility
class HasVisibility c_anj8
visibility :: HasVisibility c_anj8 => Lens' c_anj8 Visibility
class AsVisibility r_anjP where _TenOrMore = (.) _Visibility _TenOrMore _FiftyMetresOrLess = (.) _Visibility _FiftyMetresOrLess _TwoOrMore = (.) _Visibility _TwoOrMore _SpecificVisibility = (.) _Visibility _SpecificVisibility
_Visibility :: AsVisibility r_anjP => Prism' r_anjP Visibility
_TenOrMore :: AsVisibility r_anjP => Prism' r_anjP ()
_FiftyMetresOrLess :: AsVisibility r_anjP => Prism' r_anjP ()
_TwoOrMore :: AsVisibility r_anjP => Prism' r_anjP ()
_SpecificVisibility :: AsVisibility r_anjP => Prism' r_anjP (Distance, Maybe Direction)

-- | Runway specification.
data Runway

-- | All runways.
AllRunways :: Runway

-- | A specific runway.
SpecificRunway :: Int -> Maybe Direction -> Runway

-- | The runway's magnetic orientation, divided by ten and rounded.
[_runwayQFU] :: Runway -> Int

-- | For multiple runways with the same QFU, a left, right or centre
--   selector is added.
[_runwayDirection] :: Runway -> Maybe Direction
class HasRunway c_anDO where runwayDirection = (.) runway runwayDirection runwayQFU = (.) runway runwayQFU
runway :: HasRunway c_anDO => Lens' c_anDO Runway
runwayDirection :: HasRunway c_anDO => Traversal' c_anDO (Maybe Direction)
runwayQFU :: HasRunway c_anDO => Traversal' c_anDO Int
class AsRunway r_anG8 where _AllRunways = (.) _Runway _AllRunways _SpecificRunway = (.) _Runway _SpecificRunway
_Runway :: AsRunway r_anG8 => Prism' r_anG8 Runway
_AllRunways :: AsRunway r_anG8 => Prism' r_anG8 ()
_SpecificRunway :: AsRunway r_anG8 => Prism' r_anG8 (Int, Maybe Direction)

-- | A visibility trend specifically for runway conditions
data VisTrend

-- | Visibility will improve (maybe do wait a bit)
VisTrendUpward :: VisTrend

-- | Visibility will deteriorate (still, don't rush the take off and use
--   proper phraseology at all times)
VisTrendDownward :: VisTrend

-- | No expected change in runway visibility conditions
VisTrendNoDistinctTendency :: VisTrend
class HasVisTrend c_amdI
visTrend :: HasVisTrend c_amdI => Lens' c_amdI VisTrend
class AsVisTrend r_amep where _VisTrendUpward = (.) _VisTrend _VisTrendUpward _VisTrendDownward = (.) _VisTrend _VisTrendDownward _VisTrendNoDistinctTendency = (.) _VisTrend _VisTrendNoDistinctTendency
_VisTrend :: AsVisTrend r_amep => Prism' r_amep VisTrend
_VisTrendUpward :: AsVisTrend r_amep => Prism' r_amep ()
_VisTrendDownward :: AsVisTrend r_amep => Prism' r_amep ()
_VisTrendNoDistinctTendency :: AsVisTrend r_amep => Prism' r_amep ()

-- | Runway conditions.
data RunwayCondition

-- | Specific runway conditions exist.
SpecificRunwayCondition :: Runway -> RwyCoverType -> Maybe Int -> Maybe Int -> RunwayBraking -> RunwayCondition

-- | The runway for which specific conditions have been observed.
[_rwcondRunway] :: RunwayCondition -> Runway

-- | Whether and how the runway is contamindated.
[_rwcondCover] :: RunwayCondition -> RwyCoverType

-- | The extent of the contamination in percent.
[_rwcondSpread] :: RunwayCondition -> Maybe Int

-- | The height of the contamination in millimetres.
[_rwcondCoverHeight] :: RunwayCondition -> Maybe Int

-- | The friction coefficient or braking action value.
[_rwcondBrkCoeff] :: RunwayCondition -> RunwayBraking

-- | The runway is closed.
RwyClosed :: Runway -> RunwayCondition

-- | The runway that is closed.
[_rwclosedRunway] :: RunwayCondition -> Runway

-- | The whole aerodrome is closed.
ADClosed :: RunwayCondition
class HasRunwayCondition c_anVJ where rwclosedRunway = (.) runwayCondition rwclosedRunway rwcondBrkCoeff = (.) runwayCondition rwcondBrkCoeff rwcondCover = (.) runwayCondition rwcondCover rwcondCoverHeight = (.) runwayCondition rwcondCoverHeight rwcondRunway = (.) runwayCondition rwcondRunway rwcondSpread = (.) runwayCondition rwcondSpread
runwayCondition :: HasRunwayCondition c_anVJ => Lens' c_anVJ RunwayCondition
rwclosedRunway :: HasRunwayCondition c_anVJ => Traversal' c_anVJ Runway
rwcondBrkCoeff :: HasRunwayCondition c_anVJ => Traversal' c_anVJ RunwayBraking
rwcondCover :: HasRunwayCondition c_anVJ => Traversal' c_anVJ RwyCoverType
rwcondCoverHeight :: HasRunwayCondition c_anVJ => Traversal' c_anVJ (Maybe Int)
rwcondRunway :: HasRunwayCondition c_anVJ => Traversal' c_anVJ Runway
rwcondSpread :: HasRunwayCondition c_anVJ => Traversal' c_anVJ (Maybe Int)
class AsRunwayCondition r_ao21 where _SpecificRunwayCondition = (.) _RunwayCondition _SpecificRunwayCondition _RwyClosed = (.) _RunwayCondition _RwyClosed _ADClosed = (.) _RunwayCondition _ADClosed
_RunwayCondition :: AsRunwayCondition r_ao21 => Prism' r_ao21 RunwayCondition
_SpecificRunwayCondition :: AsRunwayCondition r_ao21 => Prism' r_ao21 (Runway, RwyCoverType, Maybe Int, Maybe Int, RunwayBraking)
_RwyClosed :: AsRunwayCondition r_ao21 => Prism' r_ao21 Runway
_ADClosed :: AsRunwayCondition r_ao21 => Prism' r_ao21 ()

-- | A weather phenomenon. This can be an observed phenomenon in the case
--   of METARs or an expected phenomenon in the case of TAFs.
data WeatherPhenomenon
Phenomenon :: WPIntensity -> Maybe WPDesc -> Maybe WPPrecipitation -> Maybe WPObfuscation -> Maybe WPOther -> WeatherPhenomenon

-- | The intensity of the phenomenon.
[_intensity] :: WeatherPhenomenon -> WPIntensity

-- | The description of the weather phenomenon.
[_desc] :: WeatherPhenomenon -> Maybe WPDesc

-- | The precipitation type of the weather phenomenon.
[_prec] :: WeatherPhenomenon -> Maybe WPPrecipitation

-- | The effects of the phenomenon on the visibility
[_obfus] :: WeatherPhenomenon -> Maybe WPObfuscation

-- | Other details about the phenomenon.
[_other] :: WeatherPhenomenon -> Maybe WPOther
class HasWeatherPhenomenon c_amow where desc = (.) weatherPhenomenon desc intensity = (.) weatherPhenomenon intensity obfus = (.) weatherPhenomenon obfus other = (.) weatherPhenomenon other prec = (.) weatherPhenomenon prec
weatherPhenomenon :: HasWeatherPhenomenon c_amow => Lens' c_amow WeatherPhenomenon
desc :: HasWeatherPhenomenon c_amow => Lens' c_amow (Maybe WPDesc)
intensity :: HasWeatherPhenomenon c_amow => Lens' c_amow WPIntensity
obfus :: HasWeatherPhenomenon c_amow => Lens' c_amow (Maybe WPObfuscation)
other :: HasWeatherPhenomenon c_amow => Lens' c_amow (Maybe WPOther)
prec :: HasWeatherPhenomenon c_amow => Lens' c_amow (Maybe WPPrecipitation)

-- | A cloud specification.
data Cloud

-- | No specific clouds could be observed, because the (given) ground
--   visibility was too low or because the ground is covered in clouds.
VVis :: (Maybe Int) -> Cloud

-- | Clouds were observed.
ObservedCloud :: Cover -> Vertical -> CloudType -> Cloud
class HasCloud c_aoHF
cloud :: HasCloud c_aoHF => Lens' c_aoHF Cloud
class AsCloud r_aoIm where _VVis = (.) _Cloud _VVis _ObservedCloud = (.) _Cloud _ObservedCloud
_Cloud :: AsCloud r_aoIm => Prism' r_aoIm Cloud
_VVis :: AsCloud r_aoIm => Prism' r_aoIm (Maybe Int)
_ObservedCloud :: AsCloud r_aoIm => Prism' r_aoIm (Cover, Vertical, CloudType)

-- | A pressure value. This is intentionally coded individually and not
--   converted to a specific reference.
data Pressure

-- | The QNH value in hectopascals. QNH is the current pressure at sea
--   level, corrected for pressure and temperature changes at the station
--   level.
QNH :: Int -> Pressure

-- | The same as QNH, only in inches (Do you know the old joke?: * ATC:
--   Liner 1723 descend to 3,000ft, the QNH is 1013mb. * Liner 1723: Uh,
--   approach, can we have that in inches please? * ATC: Liner 1723 descend
--   to 36,000 inches, the QNH is 1013mb.
Altimeter :: Int -> Pressure

-- | The current pressure at station level in hectopascals.
QFE :: Int -> Pressure

-- | The current pressure at sea level in hectopascals.
QFF :: Int -> Pressure
class HasPressure c_amiv
pressure :: HasPressure c_amiv => Lens' c_amiv Pressure
class AsPressure r_amjc where _QNH = (.) _Pressure _QNH _Altimeter = (.) _Pressure _Altimeter _QFE = (.) _Pressure _QFE _QFF = (.) _Pressure _QFF
_Pressure :: AsPressure r_amjc => Prism' r_amjc Pressure
_QNH :: AsPressure r_amjc => Prism' r_amjc Int
_Altimeter :: AsPressure r_amjc => Prism' r_amjc Int
_QFE :: AsPressure r_amjc => Prism' r_amjc Int
_QFF :: AsPressure r_amjc => Prism' r_amjc Int

-- | The trend part of an observation message specifies expected changes in
--   weather conditions within the next two hours. A Trend/Transition part
--   of a TAF message specified expected changes in weather conditions
--   within the specified range.
data Trend

-- | A transition that will start within the defined time frame and be
--   completed at the end of the defined time frame
BECMG :: Maybe Date -> Maybe Date -> [Transition] -> Trend
[_becmgStart] :: Trend -> Maybe Date
[_becmgFinished] :: Trend -> Maybe Date
[_becmgTransitions] :: Trend -> [Transition]

-- | A transition that will start within the defined time frame and be
--   finished at the end of the defined time frame
TEMPO :: Maybe Date -> Maybe Date -> [Transition] -> Trend
[_tempoFrom] :: Trend -> Maybe Date
[_tempoTo] :: Trend -> Maybe Date
[_tempoTransitions] :: Trend -> [Transition]

-- | A probability specification. As one of my FIs (ex-atc at EDDF) used to
--   put it: 30% means "I'm quite sure it won't happen but will still put
--   it in here, in case it does after all." 40% means "I'm certain it will
--   happen but will still put it with 40%, in case it does not happen
--   after all."
PROB :: Int -> Trend -> Trend

-- | NOSIG is only applicable to METARs. It means that no significant
--   changes are expected within the next two hours.
NOSIG :: Trend

-- | NOTAVAIL is only applicable to METARs. It means that the METAR message
--   in question does not contain a TREND section.
NOTAVAIL :: Trend
class HasTrend c_alRz where becmgFinished = (.) trend becmgFinished becmgStart = (.) trend becmgStart becmgTransitions = (.) trend becmgTransitions tempoFrom = (.) trend tempoFrom tempoTo = (.) trend tempoTo tempoTransitions = (.) trend tempoTransitions
trend :: HasTrend c_alRz => Lens' c_alRz Trend
becmgFinished :: HasTrend c_alRz => Traversal' c_alRz (Maybe Date)
becmgStart :: HasTrend c_alRz => Traversal' c_alRz (Maybe Date)
becmgTransitions :: HasTrend c_alRz => Traversal' c_alRz [Transition]
tempoFrom :: HasTrend c_alRz => Traversal' c_alRz (Maybe Date)
tempoTo :: HasTrend c_alRz => Traversal' c_alRz (Maybe Date)
tempoTransitions :: HasTrend c_alRz => Traversal' c_alRz [Transition]
class AsTrend r_alYD where _BECMG = (.) _Trend _BECMG _TEMPO = (.) _Trend _TEMPO _PROB = (.) _Trend _PROB _NOSIG = (.) _Trend _NOSIG _NOTAVAIL = (.) _Trend _NOTAVAIL
_Trend :: AsTrend r_alYD => Prism' r_alYD Trend
_BECMG :: AsTrend r_alYD => Prism' r_alYD (Maybe Date, Maybe Date, [Transition])
_TEMPO :: AsTrend r_alYD => Prism' r_alYD (Maybe Date, Maybe Date, [Transition])
_PROB :: AsTrend r_alYD => Prism' r_alYD (Int, Trend)
_NOSIG :: AsTrend r_alYD => Prism' r_alYD ()
_NOTAVAIL :: AsTrend r_alYD => Prism' r_alYD ()

-- | The description of a weather phenomenon.
data WPDesc

-- | Shallow.
Shallow :: WPDesc

-- | Patches.
Patches :: WPDesc

-- | Partial.
WXPartial :: WPDesc

-- | Low, drifting.
LowDrifting :: WPDesc

-- | Blowing.
Blowing :: WPDesc

-- | Shower.
Shower :: WPDesc

-- | Thunderstorm.
Thunderstorm :: WPDesc

-- | Freezing.
Freezing :: WPDesc
class HasWPDesc c_amAd
wPDesc :: HasWPDesc c_amAd => Lens' c_amAd WPDesc
class AsWPDesc r_amAU where _Shallow = (.) _WPDesc _Shallow _Patches = (.) _WPDesc _Patches _WXPartial = (.) _WPDesc _WXPartial _LowDrifting = (.) _WPDesc _LowDrifting _Blowing = (.) _WPDesc _Blowing _Shower = (.) _WPDesc _Shower _Thunderstorm = (.) _WPDesc _Thunderstorm _Freezing = (.) _WPDesc _Freezing
_WPDesc :: AsWPDesc r_amAU => Prism' r_amAU WPDesc
_Shallow :: AsWPDesc r_amAU => Prism' r_amAU ()
_Patches :: AsWPDesc r_amAU => Prism' r_amAU ()
_WXPartial :: AsWPDesc r_amAU => Prism' r_amAU ()
_LowDrifting :: AsWPDesc r_amAU => Prism' r_amAU ()
_Blowing :: AsWPDesc r_amAU => Prism' r_amAU ()
_Shower :: AsWPDesc r_amAU => Prism' r_amAU ()
_Thunderstorm :: AsWPDesc r_amAU => Prism' r_amAU ()
_Freezing :: AsWPDesc r_amAU => Prism' r_amAU ()

-- | The type of the precipitation
data WPPrecipitation

-- | Drizzle.
Drizzle :: WPPrecipitation

-- | Rain.
Rain :: WPPrecipitation

-- | Snow.
Snow :: WPPrecipitation

-- | Snow grains.
ShowGrains :: WPPrecipitation

-- | Ice crystals.
IceCrystals :: WPPrecipitation

-- | Ice pellets.
IcePellets :: WPPrecipitation

-- | Hail.
Hail :: WPPrecipitation

-- | Snow pellets.
SnowPellets :: WPPrecipitation

-- | No precipication detected (fully automated measurement)
NoPrecipitationDetected :: WPPrecipitation

-- | Unknown type of precipitation.
UnknownPrecipitation :: WPPrecipitation
class HasWPPrecipitation c_amKu
wPPrecipitation :: HasWPPrecipitation c_amKu => Lens' c_amKu WPPrecipitation
class AsWPPrecipitation r_amLb where _Drizzle = (.) _WPPrecipitation _Drizzle _Rain = (.) _WPPrecipitation _Rain _Snow = (.) _WPPrecipitation _Snow _ShowGrains = (.) _WPPrecipitation _ShowGrains _IceCrystals = (.) _WPPrecipitation _IceCrystals _IcePellets = (.) _WPPrecipitation _IcePellets _Hail = (.) _WPPrecipitation _Hail _SnowPellets = (.) _WPPrecipitation _SnowPellets _NoPrecipitationDetected = (.) _WPPrecipitation _NoPrecipitationDetected _UnknownPrecipitation = (.) _WPPrecipitation _UnknownPrecipitation
_WPPrecipitation :: AsWPPrecipitation r_amLb => Prism' r_amLb WPPrecipitation
_Drizzle :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_Rain :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_Snow :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_ShowGrains :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_IceCrystals :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_IcePellets :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_Hail :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_SnowPellets :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_NoPrecipitationDetected :: AsWPPrecipitation r_amLb => Prism' r_amLb ()
_UnknownPrecipitation :: AsWPPrecipitation r_amLb => Prism' r_amLb ()

-- | Effects on the visibility by a weather phenomenon
data WPObfuscation

-- | Mist. Visibility impaired but still greater than 1000m
Mist :: WPObfuscation

-- | Fog. Visibility less than 1000m.
Fog :: WPObfuscation

-- | Smoke.
Smoke :: WPObfuscation

-- | Volcanic ash.
VolcanicAsh :: WPObfuscation

-- | Dust.
Dust :: WPObfuscation

-- | Sand.
Sand :: WPObfuscation

-- | Haze.
Haze :: WPObfuscation
class HasWPObfuscation c_amWX
wPObfuscation :: HasWPObfuscation c_amWX => Lens' c_amWX WPObfuscation
class AsWPObfuscation r_amXE where _Mist = (.) _WPObfuscation _Mist _Fog = (.) _WPObfuscation _Fog _Smoke = (.) _WPObfuscation _Smoke _VolcanicAsh = (.) _WPObfuscation _VolcanicAsh _Dust = (.) _WPObfuscation _Dust _Sand = (.) _WPObfuscation _Sand _Haze = (.) _WPObfuscation _Haze
_WPObfuscation :: AsWPObfuscation r_amXE => Prism' r_amXE WPObfuscation
_Mist :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_Fog :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_Smoke :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_VolcanicAsh :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_Dust :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_Sand :: AsWPObfuscation r_amXE => Prism' r_amXE ()
_Haze :: AsWPObfuscation r_amXE => Prism' r_amXE ()

-- | Other important information about a weather phenomenon.
data WPOther

-- | Dust or sand whirls.
DustOrSandwhirls :: WPOther

-- | Squalls.
Squalls :: WPOther

-- | Tornado.
Tornado :: WPOther

-- | Sand storm.
Sandstorm :: WPOther

-- | Dust storm.
Duststorm :: WPOther
class HasWPOther c_an68
wPOther :: HasWPOther c_an68 => Lens' c_an68 WPOther
class AsWPOther r_an6P where _DustOrSandwhirls = (.) _WPOther _DustOrSandwhirls _Squalls = (.) _WPOther _Squalls _Tornado = (.) _WPOther _Tornado _Sandstorm = (.) _WPOther _Sandstorm _Duststorm = (.) _WPOther _Duststorm
_WPOther :: AsWPOther r_an6P => Prism' r_an6P WPOther
_DustOrSandwhirls :: AsWPOther r_an6P => Prism' r_an6P ()
_Squalls :: AsWPOther r_an6P => Prism' r_an6P ()
_Tornado :: AsWPOther r_an6P => Prism' r_an6P ()
_Sandstorm :: AsWPOther r_an6P => Prism' r_an6P ()
_Duststorm :: AsWPOther r_an6P => Prism' r_an6P ()

-- | The Distance.
data Distance

-- | The distance in metres.
Metres :: Int -> Distance

-- | The distance in km.
KM :: Int -> Distance

-- | The distance in statute miles.
SM :: Int -> Distance

-- | The distance in nautical miles.
NM :: Int -> Distance
class HasDistance c_and7
distance :: HasDistance c_and7 => Lens' c_and7 Distance
class AsDistance r_andO where _Metres = (.) _Distance _Metres _KM = (.) _Distance _KM _SM = (.) _Distance _SM _NM = (.) _Distance _NM
_Distance :: AsDistance r_andO => Prism' r_andO Distance
_Metres :: AsDistance r_andO => Prism' r_andO Int
_KM :: AsDistance r_andO => Prism' r_andO Int
_SM :: AsDistance r_andO => Prism' r_andO Int
_NM :: AsDistance r_andO => Prism' r_andO Int

-- | Directions.
data Direction

-- | North.
North :: Direction

-- | South.
South :: Direction

-- | East.
East :: Direction

-- | West.
West :: Direction

-- | Northwest.
NorthWest :: Direction

-- | Northeast.
NorthEast :: Direction

-- | Southwest.
SouthWest :: Direction

-- | Southeast.
SouthEast :: Direction

-- | No direction could be determined
NDV :: Direction

-- | Left runway for runways of the same QFU (part of the runway
--   designator)
RWYLeft :: Direction

-- | Right runway for runways of the same QFU (part of the runway
--   designator)
RWYRight :: Direction

-- | Centre runway for runways of the same QFU (part of the runway
--   designator)
RWYCenter :: Direction
class HasDirection c_anp9
direction :: HasDirection c_anp9 => Lens' c_anp9 Direction
class AsDirection r_anpQ where _North = (.) _Direction _North _South = (.) _Direction _South _East = (.) _Direction _East _West = (.) _Direction _West _NorthWest = (.) _Direction _NorthWest _NorthEast = (.) _Direction _NorthEast _SouthWest = (.) _Direction _SouthWest _SouthEast = (.) _Direction _SouthEast _NDV = (.) _Direction _NDV _RWYLeft = (.) _Direction _RWYLeft _RWYRight = (.) _Direction _RWYRight _RWYCenter = (.) _Direction _RWYCenter
_Direction :: AsDirection r_anpQ => Prism' r_anpQ Direction
_North :: AsDirection r_anpQ => Prism' r_anpQ ()
_South :: AsDirection r_anpQ => Prism' r_anpQ ()
_East :: AsDirection r_anpQ => Prism' r_anpQ ()
_West :: AsDirection r_anpQ => Prism' r_anpQ ()
_NorthWest :: AsDirection r_anpQ => Prism' r_anpQ ()
_NorthEast :: AsDirection r_anpQ => Prism' r_anpQ ()
_SouthWest :: AsDirection r_anpQ => Prism' r_anpQ ()
_SouthEast :: AsDirection r_anpQ => Prism' r_anpQ ()
_NDV :: AsDirection r_anpQ => Prism' r_anpQ ()
_RWYLeft :: AsDirection r_anpQ => Prism' r_anpQ ()
_RWYRight :: AsDirection r_anpQ => Prism' r_anpQ ()
_RWYCenter :: AsDirection r_anpQ => Prism' r_anpQ ()

-- | The runway contamination type.
data RwyCoverType

-- | The runway is not contaminated.
RCTDry :: RwyCoverType

-- | The runway is moist.
RCTMoist :: RwyCoverType

-- | The runway is wet.
RCTWet :: RwyCoverType

-- | The runway is convered with rime.
RCTRime :: RwyCoverType

-- | The runway is covered with dry snow.
RCTDrySnow :: RwyCoverType

-- | The runway is covered with wet snow.
RCTWetSnow :: RwyCoverType

-- | The runway is covered with slush.
RCTSlush :: RwyCoverType

-- | The runway is covered with ice.
RCTIce :: RwyCoverType

-- | The runway is covered with frozen ruts or ridges.
RCTFZRut :: RwyCoverType

-- | The runway contamination type is unknown.
RCTUnknown :: RwyCoverType
class HasRwyCoverType c_anJg
rwyCoverType :: HasRwyCoverType c_anJg => Lens' c_anJg RwyCoverType
class AsRwyCoverType r_anJX where _RCTDry = (.) _RwyCoverType _RCTDry _RCTMoist = (.) _RwyCoverType _RCTMoist _RCTWet = (.) _RwyCoverType _RCTWet _RCTRime = (.) _RwyCoverType _RCTRime _RCTDrySnow = (.) _RwyCoverType _RCTDrySnow _RCTWetSnow = (.) _RwyCoverType _RCTWetSnow _RCTSlush = (.) _RwyCoverType _RCTSlush _RCTIce = (.) _RwyCoverType _RCTIce _RCTFZRut = (.) _RwyCoverType _RCTFZRut _RCTUnknown = (.) _RwyCoverType _RCTUnknown
_RwyCoverType :: AsRwyCoverType r_anJX => Prism' r_anJX RwyCoverType
_RCTDry :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTMoist :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTWet :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTRime :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTDrySnow :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTWetSnow :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTSlush :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTIce :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTFZRut :: AsRwyCoverType r_anJX => Prism' r_anJX ()
_RCTUnknown :: AsRwyCoverType r_anJX => Prism' r_anJX ()

-- | The measured brake efficiency of a specific runway.
data RunwayBraking

-- | The friction coefficient.
BrakingFriction :: Int -> RunwayBraking

-- | The braking coefficient.
BrakingEffect :: Int -> RunwayBraking
class HasRunwayBraking c_ao6t
runwayBraking :: HasRunwayBraking c_ao6t => Lens' c_ao6t RunwayBraking
class AsRunwayBraking r_ao7a where _BrakingFriction = (.) _RunwayBraking _BrakingFriction _BrakingEffect = (.) _RunwayBraking _BrakingEffect
_RunwayBraking :: AsRunwayBraking r_ao7a => Prism' r_ao7a RunwayBraking
_BrakingFriction :: AsRunwayBraking r_ao7a => Prism' r_ao7a Int
_BrakingEffect :: AsRunwayBraking r_ao7a => Prism' r_ao7a Int

-- | A vertical position specification.
data Vertical

-- | A vertical position with reference to the ground in feet.
Height :: Int -> Vertical

-- | A vertical position with reference to the mean sea level/QNH in feet.
Altitude :: Int -> Vertical

-- | A pressure altitude with reference to the standard QNH of 1013
--   hectopascals in hundrets of feet.
FlightLevel :: Int -> Vertical

-- | Vertical position is not specified.
VertNotSpec :: Vertical
class HasVertical c_aokX
vertical :: HasVertical c_aokX => Lens' c_aokX Vertical
class AsVertical r_aolE where _Height = (.) _Vertical _Height _Altitude = (.) _Vertical _Altitude _FlightLevel = (.) _Vertical _FlightLevel _VertNotSpec = (.) _Vertical _VertNotSpec
_Vertical :: AsVertical r_aolE => Prism' r_aolE Vertical
_Height :: AsVertical r_aolE => Prism' r_aolE Int
_Altitude :: AsVertical r_aolE => Prism' r_aolE Int
_FlightLevel :: AsVertical r_aolE => Prism' r_aolE Int
_VertNotSpec :: AsVertical r_aolE => Prism' r_aolE ()

-- | The direction the wind is blowing from.
data WindDirection

-- | The wind is blowing in equal or almost equal strength from a wide
--   variety of directions.
Variable :: WindDirection

-- | The wind is blowing from the specified direction. Directions can be
--   given with reference to true or magnetic north, depending on the type
--   of weather observation/forecast message.
Degrees :: Int -> WindDirection

-- | The wind is blowing from a specific direction range.
Varying :: Int -> Int -> Int -> WindDirection

-- | The mean direction the wind is blowing from.
[_windmean] :: WindDirection -> Int

-- | The minimum direction the wind is blowing from.
[_windfrom] :: WindDirection -> Int

-- | The maximum direction the wind is blowing from.
[_windto] :: WindDirection -> Int
class HasWindDirection c_aotW where windfrom = (.) windDirection windfrom windmean = (.) windDirection windmean windto = (.) windDirection windto
windDirection :: HasWindDirection c_aotW => Lens' c_aotW WindDirection
windfrom :: HasWindDirection c_aotW => Traversal' c_aotW Int
windmean :: HasWindDirection c_aotW => Traversal' c_aotW Int
windto :: HasWindDirection c_aotW => Traversal' c_aotW Int
class AsWindDirection r_aoxk where _Variable = (.) _WindDirection _Variable _Degrees = (.) _WindDirection _Degrees _Varying = (.) _WindDirection _Varying
_WindDirection :: AsWindDirection r_aoxk => Prism' r_aoxk WindDirection
_Variable :: AsWindDirection r_aoxk => Prism' r_aoxk ()
_Degrees :: AsWindDirection r_aoxk => Prism' r_aoxk Int
_Varying :: AsWindDirection r_aoxk => Prism' r_aoxk (Int, Int, Int)

-- | The area that is covered.
data Cover

-- | 1-2 eights are covered.
FEW :: Cover

-- | 3-4 eights are covered.
SCT :: Cover

-- | 5-7 eights are covered.
BKN :: Cover

-- | More than 7 eights are covered.
OVC :: Cover

-- | Cover not specified
CoverNotSpecified :: Cover
class HasCover c_aoY3
cover :: HasCover c_aoY3 => Lens' c_aoY3 Cover
class AsCover r_aoYK where _FEW = (.) _Cover _FEW _SCT = (.) _Cover _SCT _BKN = (.) _Cover _BKN _OVC = (.) _Cover _OVC _CoverNotSpecified = (.) _Cover _CoverNotSpecified
_Cover :: AsCover r_aoYK => Prism' r_aoYK Cover
_FEW :: AsCover r_aoYK => Prism' r_aoYK ()
_SCT :: AsCover r_aoYK => Prism' r_aoYK ()
_BKN :: AsCover r_aoYK => Prism' r_aoYK ()
_OVC :: AsCover r_aoYK => Prism' r_aoYK ()
_CoverNotSpecified :: AsCover r_aoYK => Prism' r_aoYK ()

-- | The type of cloud.
data CloudType

-- | A cumulonimbus cloud.
Cumulonimbus :: CloudType

-- | A developing cb cloud.
ToweringCumulus :: CloudType

-- | A stratus cloud.
Stratus :: CloudType

-- | A cumulus cloud.
Cumulus :: CloudType

-- | A stratocumulus cloud.
Stratocumulus :: CloudType

-- | An altostratus cloud.
Altostratus :: CloudType

-- | An altocumulus cloud.
Altocumulus :: CloudType

-- | A cirrostratus cloud.
Cirrostratus :: CloudType

-- | A cirrus cloud.
Cirrus :: CloudType

-- | An unclassified cloud.
Unclassified :: CloudType
class HasCloudType c_aoLA
cloudType :: HasCloudType c_aoLA => Lens' c_aoLA CloudType
class AsCloudType r_aoMh where _Cumulonimbus = (.) _CloudType _Cumulonimbus _ToweringCumulus = (.) _CloudType _ToweringCumulus _Stratus = (.) _CloudType _Stratus _Cumulus = (.) _CloudType _Cumulus _Stratocumulus = (.) _CloudType _Stratocumulus _Altostratus = (.) _CloudType _Altostratus _Altocumulus = (.) _CloudType _Altocumulus _Cirrostratus = (.) _CloudType _Cirrostratus _Cirrus = (.) _CloudType _Cirrus _Unclassified = (.) _CloudType _Unclassified
_CloudType :: AsCloudType r_aoMh => Prism' r_aoMh CloudType
_Cumulonimbus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_ToweringCumulus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Stratus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Cumulus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Stratocumulus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Altostratus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Altocumulus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Cirrostratus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Cirrus :: AsCloudType r_aoMh => Prism' r_aoMh ()
_Unclassified :: AsCloudType r_aoMh => Prism' r_aoMh ()

-- | The intensity of an observed or expected weather phenomenon.
data WPIntensity

-- | Light
Light :: WPIntensity

-- | Moderate
Moderate :: WPIntensity

-- | Heavy
Heavy :: WPIntensity

-- | Only applicable to METARs. The weather phenomenon was observed in the
--   vicinity of the observed area, not within the observed area itself.
Vicinity :: WPIntensity

-- | Only applicable to METARs. The weather phenomenon was recently
--   observed in the past, but was not observed at the time the report was
--   issued.
Recent :: WPIntensity
class HasWPIntensity c_amte
wPIntensity :: HasWPIntensity c_amte => Lens' c_amte WPIntensity
class AsWPIntensity r_amtV where _Light = (.) _WPIntensity _Light _Moderate = (.) _WPIntensity _Moderate _Heavy = (.) _WPIntensity _Heavy _Vicinity = (.) _WPIntensity _Vicinity _Recent = (.) _WPIntensity _Recent
_WPIntensity :: AsWPIntensity r_amtV => Prism' r_amtV WPIntensity
_Light :: AsWPIntensity r_amtV => Prism' r_amtV ()
_Moderate :: AsWPIntensity r_amtV => Prism' r_amtV ()
_Heavy :: AsWPIntensity r_amtV => Prism' r_amtV ()
_Vicinity :: AsWPIntensity r_amtV => Prism' r_amtV ()
_Recent :: AsWPIntensity r_amtV => Prism' r_amtV ()

-- | A transition in weather conditions. A transition can either be
--   temporary or permanent; this will be encoded in the container
--   structure.
data Transition

-- | A change of wind strength or direction
TransWind :: Wind -> Transition

-- | A change of visibility
TransVis :: [Visibility] -> Transition

-- | A change of visibility for a specific runway
TransRunwayVis :: [(Runway, [Visibility], Maybe VisTrend)] -> Transition

-- | A change of weather phenomenon
TransWX :: [WeatherPhenomenon] -> Transition

-- | A change of ceiling or cloud layers
TransClouds :: [Cloud] -> Transition

-- | A change of ceiling or cloud layers
TransPressure :: [Pressure] -> Transition
class HasTransition c_am5r
transition :: HasTransition c_am5r => Lens' c_am5r Transition
class AsTransition r_am68 where _TransWind = (.) _Transition _TransWind _TransVis = (.) _Transition _TransVis _TransRunwayVis = (.) _Transition _TransRunwayVis _TransWX = (.) _Transition _TransWX _TransClouds = (.) _Transition _TransClouds _TransPressure = (.) _Transition _TransPressure
_Transition :: AsTransition r_am68 => Prism' r_am68 Transition
_TransWind :: AsTransition r_am68 => Prism' r_am68 Wind
_TransVis :: AsTransition r_am68 => Prism' r_am68 [Visibility]
_TransRunwayVis :: AsTransition r_am68 => Prism' r_am68 [(Runway, [Visibility], Maybe VisTrend)]
_TransWX :: AsTransition r_am68 => Prism' r_am68 [WeatherPhenomenon]
_TransClouds :: AsTransition r_am68 => Prism' r_am68 [Cloud]
_TransPressure :: AsTransition r_am68 => Prism' r_am68 [Pressure]

-- | A speed unit.
data Unit

-- | Nautical miles per hour
Knots :: Int -> Unit

-- | Statute miles per hour
Miles :: Int -> Unit

-- | Unknown (miles per second?)
MPS :: Int -> Unit

-- | Kilometres per hour
KMH :: Int -> Unit
class HasUnit c_aoBE
unit :: HasUnit c_aoBE => Lens' c_aoBE Unit
class AsUnit r_aoCl where _Knots = (.) _Unit _Knots _Miles = (.) _Unit _Miles _MPS = (.) _Unit _MPS _KMH = (.) _Unit _KMH
_Unit :: AsUnit r_aoCl => Prism' r_aoCl Unit
_Knots :: AsUnit r_aoCl => Prism' r_aoCl Int
_Miles :: AsUnit r_aoCl => Prism' r_aoCl Int
_MPS :: AsUnit r_aoCl => Prism' r_aoCl Int
_KMH :: AsUnit r_aoCl => Prism' r_aoCl Int
data ReportType
MetarReport :: ReportType
TafReport :: ReportType
instance Data.Aviation.WX.AsCover Data.Aviation.WX.Cover
instance Data.Aviation.WX.HasWPIntensity Data.Aviation.WX.WeatherPhenomenon
instance Data.Aviation.WX.HasCover Data.Aviation.WX.Cover
instance Data.Aviation.WX.AsCloudType Data.Aviation.WX.CloudType
instance Data.Aviation.WX.HasCloudType Data.Aviation.WX.CloudType
instance Data.Aviation.WX.AsCloud Data.Aviation.WX.Cloud
instance Data.Aviation.WX.HasCloud Data.Aviation.WX.Cloud
instance Data.Aviation.WX.AsUnit Data.Aviation.WX.Unit
instance Data.Aviation.WX.HasUnit Data.Aviation.WX.Unit
instance Data.Aviation.WX.AsWindDirection Data.Aviation.WX.WindDirection
instance Data.Aviation.WX.HasWindDirection Data.Aviation.WX.WindDirection
instance Data.Aviation.WX.HasWind Data.Aviation.WX.Wind
instance Data.Aviation.WX.AsVertical Data.Aviation.WX.Vertical
instance Data.Aviation.WX.HasVertical Data.Aviation.WX.Vertical
instance Data.Aviation.WX.Station ~ t0 => Control.Lens.Wrapped.Rewrapped Data.Aviation.WX.Station t0
instance Control.Lens.Wrapped.Wrapped Data.Aviation.WX.Station
instance Data.Aviation.WX.HasDate Data.Aviation.WX.Date
instance Data.Aviation.WX.AsRunwayBraking Data.Aviation.WX.RunwayBraking
instance Data.Aviation.WX.HasRunwayBraking Data.Aviation.WX.RunwayBraking
instance Data.Aviation.WX.AsRunwayCondition Data.Aviation.WX.RunwayCondition
instance Data.Aviation.WX.HasRunwayCondition Data.Aviation.WX.RunwayCondition
instance Data.Aviation.WX.AsRwyCoverType Data.Aviation.WX.RwyCoverType
instance Data.Aviation.WX.HasRwyCoverType Data.Aviation.WX.RwyCoverType
instance Data.Aviation.WX.AsRunway Data.Aviation.WX.Runway
instance Data.Aviation.WX.HasRunway Data.Aviation.WX.Runway
instance Data.Aviation.WX.AsDirection Data.Aviation.WX.Direction
instance Data.Aviation.WX.HasDirection Data.Aviation.WX.Direction
instance Data.Aviation.WX.AsVisibility Data.Aviation.WX.Visibility
instance Data.Aviation.WX.HasVisibility Data.Aviation.WX.Visibility
instance Data.Aviation.WX.AsDistance Data.Aviation.WX.Distance
instance Data.Aviation.WX.HasDistance Data.Aviation.WX.Distance
instance Data.Aviation.WX.AsWPOther Data.Aviation.WX.WPOther
instance Data.Aviation.WX.HasWPOther Data.Aviation.WX.WPOther
instance Data.Aviation.WX.AsWPObfuscation Data.Aviation.WX.WPObfuscation
instance Data.Aviation.WX.HasWPObfuscation Data.Aviation.WX.WPObfuscation
instance Data.Aviation.WX.AsWPPrecipitation Data.Aviation.WX.WPPrecipitation
instance Data.Aviation.WX.HasWPPrecipitation Data.Aviation.WX.WPPrecipitation
instance Data.Aviation.WX.AsWPDesc Data.Aviation.WX.WPDesc
instance Data.Aviation.WX.HasWPDesc Data.Aviation.WX.WPDesc
instance Data.Aviation.WX.AsWPIntensity Data.Aviation.WX.WPIntensity
instance Data.Aviation.WX.HasWPIntensity Data.Aviation.WX.WPIntensity
instance Data.Aviation.WX.HasWeatherPhenomenon Data.Aviation.WX.WeatherPhenomenon
instance Data.Aviation.WX.AsPressure Data.Aviation.WX.Pressure
instance Data.Aviation.WX.HasPressure Data.Aviation.WX.Pressure
instance Data.Aviation.WX.AsVisTrend Data.Aviation.WX.VisTrend
instance Data.Aviation.WX.HasVisTrend Data.Aviation.WX.VisTrend
instance Data.Aviation.WX.AsTransition Data.Aviation.WX.Transition
instance Data.Aviation.WX.HasTransition Data.Aviation.WX.Transition
instance Data.Aviation.WX.AsTrend Data.Aviation.WX.Trend
instance Data.Aviation.WX.HasTrend Data.Aviation.WX.Trend
instance Data.Aviation.WX.AsFlag Data.Aviation.WX.Flag
instance Data.Aviation.WX.HasFlag Data.Aviation.WX.Flag
instance Data.Aviation.WX.AsWeather Data.Aviation.WX.Weather
instance Data.Aviation.WX.HasWeather Data.Aviation.WX.Weather
instance GHC.Show.Show Data.Aviation.WX.Weather
instance GHC.Classes.Eq Data.Aviation.WX.Weather
instance GHC.Show.Show Data.Aviation.WX.Trend
instance GHC.Classes.Eq Data.Aviation.WX.Trend
instance GHC.Show.Show Data.Aviation.WX.Transition
instance GHC.Classes.Eq Data.Aviation.WX.Transition
instance GHC.Show.Show Data.Aviation.WX.Cloud
instance GHC.Classes.Eq Data.Aviation.WX.Cloud
instance GHC.Show.Show Data.Aviation.WX.Cover
instance GHC.Classes.Ord Data.Aviation.WX.Cover
instance GHC.Classes.Eq Data.Aviation.WX.Cover
instance GHC.Enum.Enum Data.Aviation.WX.Cover
instance GHC.Show.Show Data.Aviation.WX.CloudType
instance GHC.Classes.Eq Data.Aviation.WX.CloudType
instance GHC.Enum.Enum Data.Aviation.WX.CloudType
instance GHC.Show.Show Data.Aviation.WX.Wind
instance GHC.Classes.Eq Data.Aviation.WX.Wind
instance GHC.Show.Show Data.Aviation.WX.Unit
instance GHC.Classes.Eq Data.Aviation.WX.Unit
instance GHC.Show.Show Data.Aviation.WX.WindDirection
instance GHC.Classes.Eq Data.Aviation.WX.WindDirection
instance GHC.Show.Show Data.Aviation.WX.Vertical
instance GHC.Classes.Eq Data.Aviation.WX.Vertical
instance GHC.Show.Show Data.Aviation.WX.Station
instance GHC.Classes.Eq Data.Aviation.WX.Station
instance GHC.Show.Show Data.Aviation.WX.Date
instance GHC.Classes.Eq Data.Aviation.WX.Date
instance GHC.Show.Show Data.Aviation.WX.RunwayCondition
instance GHC.Classes.Eq Data.Aviation.WX.RunwayCondition
instance GHC.Show.Show Data.Aviation.WX.RunwayBraking
instance GHC.Classes.Eq Data.Aviation.WX.RunwayBraking
instance GHC.Enum.Enum Data.Aviation.WX.RwyCoverType
instance GHC.Show.Show Data.Aviation.WX.RwyCoverType
instance GHC.Classes.Eq Data.Aviation.WX.RwyCoverType
instance GHC.Show.Show Data.Aviation.WX.Runway
instance GHC.Classes.Eq Data.Aviation.WX.Runway
instance GHC.Show.Show Data.Aviation.WX.Visibility
instance GHC.Classes.Eq Data.Aviation.WX.Visibility
instance GHC.Show.Show Data.Aviation.WX.Direction
instance GHC.Classes.Eq Data.Aviation.WX.Direction
instance GHC.Show.Show Data.Aviation.WX.Distance
instance GHC.Classes.Eq Data.Aviation.WX.Distance
instance GHC.Show.Show Data.Aviation.WX.WeatherPhenomenon
instance GHC.Classes.Eq Data.Aviation.WX.WeatherPhenomenon
instance GHC.Show.Show Data.Aviation.WX.WPOther
instance GHC.Classes.Ord Data.Aviation.WX.WPOther
instance GHC.Classes.Eq Data.Aviation.WX.WPOther
instance GHC.Enum.Enum Data.Aviation.WX.WPOther
instance GHC.Show.Show Data.Aviation.WX.WPObfuscation
instance GHC.Classes.Ord Data.Aviation.WX.WPObfuscation
instance GHC.Classes.Eq Data.Aviation.WX.WPObfuscation
instance GHC.Enum.Enum Data.Aviation.WX.WPObfuscation
instance GHC.Show.Show Data.Aviation.WX.WPPrecipitation
instance GHC.Classes.Ord Data.Aviation.WX.WPPrecipitation
instance GHC.Classes.Eq Data.Aviation.WX.WPPrecipitation
instance GHC.Enum.Enum Data.Aviation.WX.WPPrecipitation
instance GHC.Show.Show Data.Aviation.WX.WPDesc
instance GHC.Classes.Ord Data.Aviation.WX.WPDesc
instance GHC.Classes.Eq Data.Aviation.WX.WPDesc
instance GHC.Enum.Enum Data.Aviation.WX.WPDesc
instance GHC.Show.Show Data.Aviation.WX.WPIntensity
instance GHC.Classes.Eq Data.Aviation.WX.WPIntensity
instance GHC.Enum.Enum Data.Aviation.WX.WPIntensity
instance GHC.Show.Show Data.Aviation.WX.Pressure
instance GHC.Classes.Eq Data.Aviation.WX.Pressure
instance GHC.Show.Show Data.Aviation.WX.VisTrend
instance GHC.Classes.Eq Data.Aviation.WX.VisTrend
instance GHC.Show.Show Data.Aviation.WX.Flag
instance GHC.Classes.Eq Data.Aviation.WX.Flag
instance GHC.Enum.Enum Data.Aviation.WX.ReportType
instance GHC.Show.Show Data.Aviation.WX.ReportType
instance GHC.Classes.Eq Data.Aviation.WX.ReportType

module Data.Aviation.WX.Fetcher

-- | Parse the given METAR text.
parseWeather :: Text -> Either String Weather
fetchMetar :: ICAOStationDesignator -> IO (Either String Weather)
fetchTaf :: ICAOStationDesignator -> IO (Either String Weather)
