{-# 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.Organizations.Types.EffectivePolicyType
-- 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.Organizations.Types.EffectivePolicyType
  ( EffectivePolicyType
      ( ..,
        EffectivePolicyType_AISERVICES_OPT_OUT_POLICY,
        EffectivePolicyType_BACKUP_POLICY,
        EffectivePolicyType_TAG_POLICY
      ),
  )
where

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

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

pattern EffectivePolicyType_AISERVICES_OPT_OUT_POLICY :: EffectivePolicyType
pattern $bEffectivePolicyType_AISERVICES_OPT_OUT_POLICY :: EffectivePolicyType
$mEffectivePolicyType_AISERVICES_OPT_OUT_POLICY :: forall r. EffectivePolicyType -> (Void# -> r) -> (Void# -> r) -> r
EffectivePolicyType_AISERVICES_OPT_OUT_POLICY = EffectivePolicyType' "AISERVICES_OPT_OUT_POLICY"

pattern EffectivePolicyType_BACKUP_POLICY :: EffectivePolicyType
pattern $bEffectivePolicyType_BACKUP_POLICY :: EffectivePolicyType
$mEffectivePolicyType_BACKUP_POLICY :: forall r. EffectivePolicyType -> (Void# -> r) -> (Void# -> r) -> r
EffectivePolicyType_BACKUP_POLICY = EffectivePolicyType' "BACKUP_POLICY"

pattern EffectivePolicyType_TAG_POLICY :: EffectivePolicyType
pattern $bEffectivePolicyType_TAG_POLICY :: EffectivePolicyType
$mEffectivePolicyType_TAG_POLICY :: forall r. EffectivePolicyType -> (Void# -> r) -> (Void# -> r) -> r
EffectivePolicyType_TAG_POLICY = EffectivePolicyType' "TAG_POLICY"

{-# COMPLETE
  EffectivePolicyType_AISERVICES_OPT_OUT_POLICY,
  EffectivePolicyType_BACKUP_POLICY,
  EffectivePolicyType_TAG_POLICY,
  EffectivePolicyType'
  #-}