{-# 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.AutoScaling.Types.PredefinedMetricPairType
-- 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.AutoScaling.Types.PredefinedMetricPairType
  ( PredefinedMetricPairType
      ( ..,
        PredefinedMetricPairType_ALBRequestCount,
        PredefinedMetricPairType_ASGCPUUtilization,
        PredefinedMetricPairType_ASGNetworkIn,
        PredefinedMetricPairType_ASGNetworkOut
      ),
  )
where

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

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

pattern PredefinedMetricPairType_ALBRequestCount :: PredefinedMetricPairType
pattern $bPredefinedMetricPairType_ALBRequestCount :: PredefinedMetricPairType
$mPredefinedMetricPairType_ALBRequestCount :: forall r.
PredefinedMetricPairType -> (Void# -> r) -> (Void# -> r) -> r
PredefinedMetricPairType_ALBRequestCount = PredefinedMetricPairType' "ALBRequestCount"

pattern PredefinedMetricPairType_ASGCPUUtilization :: PredefinedMetricPairType
pattern $bPredefinedMetricPairType_ASGCPUUtilization :: PredefinedMetricPairType
$mPredefinedMetricPairType_ASGCPUUtilization :: forall r.
PredefinedMetricPairType -> (Void# -> r) -> (Void# -> r) -> r
PredefinedMetricPairType_ASGCPUUtilization = PredefinedMetricPairType' "ASGCPUUtilization"

pattern PredefinedMetricPairType_ASGNetworkIn :: PredefinedMetricPairType
pattern $bPredefinedMetricPairType_ASGNetworkIn :: PredefinedMetricPairType
$mPredefinedMetricPairType_ASGNetworkIn :: forall r.
PredefinedMetricPairType -> (Void# -> r) -> (Void# -> r) -> r
PredefinedMetricPairType_ASGNetworkIn = PredefinedMetricPairType' "ASGNetworkIn"

pattern PredefinedMetricPairType_ASGNetworkOut :: PredefinedMetricPairType
pattern $bPredefinedMetricPairType_ASGNetworkOut :: PredefinedMetricPairType
$mPredefinedMetricPairType_ASGNetworkOut :: forall r.
PredefinedMetricPairType -> (Void# -> r) -> (Void# -> r) -> r
PredefinedMetricPairType_ASGNetworkOut = PredefinedMetricPairType' "ASGNetworkOut"

{-# COMPLETE
  PredefinedMetricPairType_ALBRequestCount,
  PredefinedMetricPairType_ASGCPUUtilization,
  PredefinedMetricPairType_ASGNetworkIn,
  PredefinedMetricPairType_ASGNetworkOut,
  PredefinedMetricPairType'
  #-}