{-# 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.ApplicationAutoScaling.Types.PolicyType
-- 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.ApplicationAutoScaling.Types.PolicyType
  ( PolicyType
      ( ..,
        PolicyType_StepScaling,
        PolicyType_TargetTrackingScaling
      ),
  )
where

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

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

pattern PolicyType_StepScaling :: PolicyType
pattern $bPolicyType_StepScaling :: PolicyType
$mPolicyType_StepScaling :: forall r. PolicyType -> (Void# -> r) -> (Void# -> r) -> r
PolicyType_StepScaling = PolicyType' "StepScaling"

pattern PolicyType_TargetTrackingScaling :: PolicyType
pattern $bPolicyType_TargetTrackingScaling :: PolicyType
$mPolicyType_TargetTrackingScaling :: forall r. PolicyType -> (Void# -> r) -> (Void# -> r) -> r
PolicyType_TargetTrackingScaling = PolicyType' "TargetTrackingScaling"

{-# COMPLETE
  PolicyType_StepScaling,
  PolicyType_TargetTrackingScaling,
  PolicyType'
  #-}