{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Lightsail.Types.MetricUnit
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Lightsail.Types.MetricUnit
  ( MetricUnit
      ( ..,
        MetricUnit_Bits,
        MetricUnit_Bits_Second,
        MetricUnit_Bytes,
        MetricUnit_Bytes_Second,
        MetricUnit_Count,
        MetricUnit_Count_Second,
        MetricUnit_Gigabits,
        MetricUnit_Gigabits_Second,
        MetricUnit_Gigabytes,
        MetricUnit_Gigabytes_Second,
        MetricUnit_Kilobits,
        MetricUnit_Kilobits_Second,
        MetricUnit_Kilobytes,
        MetricUnit_Kilobytes_Second,
        MetricUnit_Megabits,
        MetricUnit_Megabits_Second,
        MetricUnit_Megabytes,
        MetricUnit_Megabytes_Second,
        MetricUnit_Microseconds,
        MetricUnit_Milliseconds,
        MetricUnit_None,
        MetricUnit_Percent,
        MetricUnit_Seconds,
        MetricUnit_Terabits,
        MetricUnit_Terabits_Second,
        MetricUnit_Terabytes,
        MetricUnit_Terabytes_Second
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

newtype MetricUnit = MetricUnit'
  { MetricUnit -> Text
fromMetricUnit ::
      Data.Text
  }
  deriving stock
    ( Int -> MetricUnit -> ShowS
[MetricUnit] -> ShowS
MetricUnit -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MetricUnit] -> ShowS
$cshowList :: [MetricUnit] -> ShowS
show :: MetricUnit -> String
$cshow :: MetricUnit -> String
showsPrec :: Int -> MetricUnit -> ShowS
$cshowsPrec :: Int -> MetricUnit -> ShowS
Prelude.Show,
      ReadPrec [MetricUnit]
ReadPrec MetricUnit
Int -> ReadS MetricUnit
ReadS [MetricUnit]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MetricUnit]
$creadListPrec :: ReadPrec [MetricUnit]
readPrec :: ReadPrec MetricUnit
$creadPrec :: ReadPrec MetricUnit
readList :: ReadS [MetricUnit]
$creadList :: ReadS [MetricUnit]
readsPrec :: Int -> ReadS MetricUnit
$creadsPrec :: Int -> ReadS MetricUnit
Prelude.Read,
      MetricUnit -> MetricUnit -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MetricUnit -> MetricUnit -> Bool
$c/= :: MetricUnit -> MetricUnit -> Bool
== :: MetricUnit -> MetricUnit -> Bool
$c== :: MetricUnit -> MetricUnit -> Bool
Prelude.Eq,
      Eq MetricUnit
MetricUnit -> MetricUnit -> Bool
MetricUnit -> MetricUnit -> Ordering
MetricUnit -> MetricUnit -> MetricUnit
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MetricUnit -> MetricUnit -> MetricUnit
$cmin :: MetricUnit -> MetricUnit -> MetricUnit
max :: MetricUnit -> MetricUnit -> MetricUnit
$cmax :: MetricUnit -> MetricUnit -> MetricUnit
>= :: MetricUnit -> MetricUnit -> Bool
$c>= :: MetricUnit -> MetricUnit -> Bool
> :: MetricUnit -> MetricUnit -> Bool
$c> :: MetricUnit -> MetricUnit -> Bool
<= :: MetricUnit -> MetricUnit -> Bool
$c<= :: MetricUnit -> MetricUnit -> Bool
< :: MetricUnit -> MetricUnit -> Bool
$c< :: MetricUnit -> MetricUnit -> Bool
compare :: MetricUnit -> MetricUnit -> Ordering
$ccompare :: MetricUnit -> MetricUnit -> Ordering
Prelude.Ord,
      forall x. Rep MetricUnit x -> MetricUnit
forall x. MetricUnit -> Rep MetricUnit x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MetricUnit x -> MetricUnit
$cfrom :: forall x. MetricUnit -> Rep MetricUnit x
Prelude.Generic
    )
  deriving newtype
    ( Eq MetricUnit
Int -> MetricUnit -> Int
MetricUnit -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: MetricUnit -> Int
$chash :: MetricUnit -> Int
hashWithSalt :: Int -> MetricUnit -> Int
$chashWithSalt :: Int -> MetricUnit -> Int
Prelude.Hashable,
      MetricUnit -> ()
forall a. (a -> ()) -> NFData a
rnf :: MetricUnit -> ()
$crnf :: MetricUnit -> ()
Prelude.NFData,
      Text -> Either String MetricUnit
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String MetricUnit
$cfromText :: Text -> Either String MetricUnit
Data.FromText,
      MetricUnit -> Text
forall a. (a -> Text) -> ToText a
toText :: MetricUnit -> Text
$ctoText :: MetricUnit -> Text
Data.ToText,
      MetricUnit -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: MetricUnit -> ByteString
$ctoBS :: MetricUnit -> ByteString
Data.ToByteString,
      MetricUnit -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: MetricUnit -> ByteStringBuilder
$cbuild :: MetricUnit -> ByteStringBuilder
Data.ToLog,
      HeaderName -> MetricUnit -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> MetricUnit -> [Header]
$ctoHeader :: HeaderName -> MetricUnit -> [Header]
Data.ToHeader,
      MetricUnit -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: MetricUnit -> QueryString
$ctoQuery :: MetricUnit -> QueryString
Data.ToQuery,
      Value -> Parser [MetricUnit]
Value -> Parser MetricUnit
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MetricUnit]
$cparseJSONList :: Value -> Parser [MetricUnit]
parseJSON :: Value -> Parser MetricUnit
$cparseJSON :: Value -> Parser MetricUnit
Data.FromJSON,
      FromJSONKeyFunction [MetricUnit]
FromJSONKeyFunction MetricUnit
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [MetricUnit]
$cfromJSONKeyList :: FromJSONKeyFunction [MetricUnit]
fromJSONKey :: FromJSONKeyFunction MetricUnit
$cfromJSONKey :: FromJSONKeyFunction MetricUnit
Data.FromJSONKey,
      [MetricUnit] -> Encoding
[MetricUnit] -> Value
MetricUnit -> Encoding
MetricUnit -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [MetricUnit] -> Encoding
$ctoEncodingList :: [MetricUnit] -> Encoding
toJSONList :: [MetricUnit] -> Value
$ctoJSONList :: [MetricUnit] -> Value
toEncoding :: MetricUnit -> Encoding
$ctoEncoding :: MetricUnit -> Encoding
toJSON :: MetricUnit -> Value
$ctoJSON :: MetricUnit -> Value
Data.ToJSON,
      ToJSONKeyFunction [MetricUnit]
ToJSONKeyFunction MetricUnit
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [MetricUnit]
$ctoJSONKeyList :: ToJSONKeyFunction [MetricUnit]
toJSONKey :: ToJSONKeyFunction MetricUnit
$ctoJSONKey :: ToJSONKeyFunction MetricUnit
Data.ToJSONKey,
      [Node] -> Either String MetricUnit
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String MetricUnit
$cparseXML :: [Node] -> Either String MetricUnit
Data.FromXML,
      MetricUnit -> XML
forall a. (a -> XML) -> ToXML a
toXML :: MetricUnit -> XML
$ctoXML :: MetricUnit -> XML
Data.ToXML
    )

pattern MetricUnit_Bits :: MetricUnit
pattern $bMetricUnit_Bits :: MetricUnit
$mMetricUnit_Bits :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Bits = MetricUnit' "Bits"

pattern MetricUnit_Bits_Second :: MetricUnit
pattern $bMetricUnit_Bits_Second :: MetricUnit
$mMetricUnit_Bits_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Bits_Second = MetricUnit' "Bits/Second"

pattern MetricUnit_Bytes :: MetricUnit
pattern $bMetricUnit_Bytes :: MetricUnit
$mMetricUnit_Bytes :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Bytes = MetricUnit' "Bytes"

pattern MetricUnit_Bytes_Second :: MetricUnit
pattern $bMetricUnit_Bytes_Second :: MetricUnit
$mMetricUnit_Bytes_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Bytes_Second = MetricUnit' "Bytes/Second"

pattern MetricUnit_Count :: MetricUnit
pattern $bMetricUnit_Count :: MetricUnit
$mMetricUnit_Count :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Count = MetricUnit' "Count"

pattern MetricUnit_Count_Second :: MetricUnit
pattern $bMetricUnit_Count_Second :: MetricUnit
$mMetricUnit_Count_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Count_Second = MetricUnit' "Count/Second"

pattern MetricUnit_Gigabits :: MetricUnit
pattern $bMetricUnit_Gigabits :: MetricUnit
$mMetricUnit_Gigabits :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Gigabits = MetricUnit' "Gigabits"

pattern MetricUnit_Gigabits_Second :: MetricUnit
pattern $bMetricUnit_Gigabits_Second :: MetricUnit
$mMetricUnit_Gigabits_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Gigabits_Second = MetricUnit' "Gigabits/Second"

pattern MetricUnit_Gigabytes :: MetricUnit
pattern $bMetricUnit_Gigabytes :: MetricUnit
$mMetricUnit_Gigabytes :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Gigabytes = MetricUnit' "Gigabytes"

pattern MetricUnit_Gigabytes_Second :: MetricUnit
pattern $bMetricUnit_Gigabytes_Second :: MetricUnit
$mMetricUnit_Gigabytes_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Gigabytes_Second = MetricUnit' "Gigabytes/Second"

pattern MetricUnit_Kilobits :: MetricUnit
pattern $bMetricUnit_Kilobits :: MetricUnit
$mMetricUnit_Kilobits :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Kilobits = MetricUnit' "Kilobits"

pattern MetricUnit_Kilobits_Second :: MetricUnit
pattern $bMetricUnit_Kilobits_Second :: MetricUnit
$mMetricUnit_Kilobits_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Kilobits_Second = MetricUnit' "Kilobits/Second"

pattern MetricUnit_Kilobytes :: MetricUnit
pattern $bMetricUnit_Kilobytes :: MetricUnit
$mMetricUnit_Kilobytes :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Kilobytes = MetricUnit' "Kilobytes"

pattern MetricUnit_Kilobytes_Second :: MetricUnit
pattern $bMetricUnit_Kilobytes_Second :: MetricUnit
$mMetricUnit_Kilobytes_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Kilobytes_Second = MetricUnit' "Kilobytes/Second"

pattern MetricUnit_Megabits :: MetricUnit
pattern $bMetricUnit_Megabits :: MetricUnit
$mMetricUnit_Megabits :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Megabits = MetricUnit' "Megabits"

pattern MetricUnit_Megabits_Second :: MetricUnit
pattern $bMetricUnit_Megabits_Second :: MetricUnit
$mMetricUnit_Megabits_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Megabits_Second = MetricUnit' "Megabits/Second"

pattern MetricUnit_Megabytes :: MetricUnit
pattern $bMetricUnit_Megabytes :: MetricUnit
$mMetricUnit_Megabytes :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Megabytes = MetricUnit' "Megabytes"

pattern MetricUnit_Megabytes_Second :: MetricUnit
pattern $bMetricUnit_Megabytes_Second :: MetricUnit
$mMetricUnit_Megabytes_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Megabytes_Second = MetricUnit' "Megabytes/Second"

pattern MetricUnit_Microseconds :: MetricUnit
pattern $bMetricUnit_Microseconds :: MetricUnit
$mMetricUnit_Microseconds :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Microseconds = MetricUnit' "Microseconds"

pattern MetricUnit_Milliseconds :: MetricUnit
pattern $bMetricUnit_Milliseconds :: MetricUnit
$mMetricUnit_Milliseconds :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Milliseconds = MetricUnit' "Milliseconds"

pattern MetricUnit_None :: MetricUnit
pattern $bMetricUnit_None :: MetricUnit
$mMetricUnit_None :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_None = MetricUnit' "None"

pattern MetricUnit_Percent :: MetricUnit
pattern $bMetricUnit_Percent :: MetricUnit
$mMetricUnit_Percent :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Percent = MetricUnit' "Percent"

pattern MetricUnit_Seconds :: MetricUnit
pattern $bMetricUnit_Seconds :: MetricUnit
$mMetricUnit_Seconds :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Seconds = MetricUnit' "Seconds"

pattern MetricUnit_Terabits :: MetricUnit
pattern $bMetricUnit_Terabits :: MetricUnit
$mMetricUnit_Terabits :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Terabits = MetricUnit' "Terabits"

pattern MetricUnit_Terabits_Second :: MetricUnit
pattern $bMetricUnit_Terabits_Second :: MetricUnit
$mMetricUnit_Terabits_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Terabits_Second = MetricUnit' "Terabits/Second"

pattern MetricUnit_Terabytes :: MetricUnit
pattern $bMetricUnit_Terabytes :: MetricUnit
$mMetricUnit_Terabytes :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Terabytes = MetricUnit' "Terabytes"

pattern MetricUnit_Terabytes_Second :: MetricUnit
pattern $bMetricUnit_Terabytes_Second :: MetricUnit
$mMetricUnit_Terabytes_Second :: forall {r}. MetricUnit -> ((# #) -> r) -> ((# #) -> r) -> r
MetricUnit_Terabytes_Second = MetricUnit' "Terabytes/Second"

{-# COMPLETE
  MetricUnit_Bits,
  MetricUnit_Bits_Second,
  MetricUnit_Bytes,
  MetricUnit_Bytes_Second,
  MetricUnit_Count,
  MetricUnit_Count_Second,
  MetricUnit_Gigabits,
  MetricUnit_Gigabits_Second,
  MetricUnit_Gigabytes,
  MetricUnit_Gigabytes_Second,
  MetricUnit_Kilobits,
  MetricUnit_Kilobits_Second,
  MetricUnit_Kilobytes,
  MetricUnit_Kilobytes_Second,
  MetricUnit_Megabits,
  MetricUnit_Megabits_Second,
  MetricUnit_Megabytes,
  MetricUnit_Megabytes_Second,
  MetricUnit_Microseconds,
  MetricUnit_Milliseconds,
  MetricUnit_None,
  MetricUnit_Percent,
  MetricUnit_Seconds,
  MetricUnit_Terabits,
  MetricUnit_Terabits_Second,
  MetricUnit_Terabytes,
  MetricUnit_Terabytes_Second,
  MetricUnit'
  #-}