{-# 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.ComputeOptimizer.Types.MetricStatistic
-- 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.ComputeOptimizer.Types.MetricStatistic
  ( MetricStatistic
      ( ..,
        MetricStatistic_Average,
        MetricStatistic_Maximum
      ),
  )
where

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

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

pattern MetricStatistic_Average :: MetricStatistic
pattern $bMetricStatistic_Average :: MetricStatistic
$mMetricStatistic_Average :: forall r. MetricStatistic -> (Void# -> r) -> (Void# -> r) -> r
MetricStatistic_Average = MetricStatistic' "Average"

pattern MetricStatistic_Maximum :: MetricStatistic
pattern $bMetricStatistic_Maximum :: MetricStatistic
$mMetricStatistic_Maximum :: forall r. MetricStatistic -> (Void# -> r) -> (Void# -> r) -> r
MetricStatistic_Maximum = MetricStatistic' "Maximum"

{-# COMPLETE
  MetricStatistic_Average,
  MetricStatistic_Maximum,
  MetricStatistic'
  #-}