{-# 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.AppMesh.Types.DurationUnit
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AppMesh.Types.DurationUnit
  ( DurationUnit
      ( ..,
        DurationUnit_Ms,
        DurationUnit_S
      ),
  )
where

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

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

pattern DurationUnit_Ms :: DurationUnit
pattern $bDurationUnit_Ms :: DurationUnit
$mDurationUnit_Ms :: forall r. DurationUnit -> (Void# -> r) -> (Void# -> r) -> r
DurationUnit_Ms = DurationUnit' "ms"

pattern DurationUnit_S :: DurationUnit
pattern $bDurationUnit_S :: DurationUnit
$mDurationUnit_S :: forall r. DurationUnit -> (Void# -> r) -> (Void# -> r) -> r
DurationUnit_S = DurationUnit' "s"

{-# COMPLETE
  DurationUnit_Ms,
  DurationUnit_S,
  DurationUnit'
  #-}