{-# 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.Route53Resolver.Types.FirewallDomainUpdateOperation
-- 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.Route53Resolver.Types.FirewallDomainUpdateOperation
  ( FirewallDomainUpdateOperation
      ( ..,
        FirewallDomainUpdateOperation_ADD,
        FirewallDomainUpdateOperation_REMOVE,
        FirewallDomainUpdateOperation_REPLACE
      ),
  )
where

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

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

pattern FirewallDomainUpdateOperation_ADD :: FirewallDomainUpdateOperation
pattern $bFirewallDomainUpdateOperation_ADD :: FirewallDomainUpdateOperation
$mFirewallDomainUpdateOperation_ADD :: forall r.
FirewallDomainUpdateOperation -> (Void# -> r) -> (Void# -> r) -> r
FirewallDomainUpdateOperation_ADD = FirewallDomainUpdateOperation' "ADD"

pattern FirewallDomainUpdateOperation_REMOVE :: FirewallDomainUpdateOperation
pattern $bFirewallDomainUpdateOperation_REMOVE :: FirewallDomainUpdateOperation
$mFirewallDomainUpdateOperation_REMOVE :: forall r.
FirewallDomainUpdateOperation -> (Void# -> r) -> (Void# -> r) -> r
FirewallDomainUpdateOperation_REMOVE = FirewallDomainUpdateOperation' "REMOVE"

pattern FirewallDomainUpdateOperation_REPLACE :: FirewallDomainUpdateOperation
pattern $bFirewallDomainUpdateOperation_REPLACE :: FirewallDomainUpdateOperation
$mFirewallDomainUpdateOperation_REPLACE :: forall r.
FirewallDomainUpdateOperation -> (Void# -> r) -> (Void# -> r) -> r
FirewallDomainUpdateOperation_REPLACE = FirewallDomainUpdateOperation' "REPLACE"

{-# COMPLETE
  FirewallDomainUpdateOperation_ADD,
  FirewallDomainUpdateOperation_REMOVE,
  FirewallDomainUpdateOperation_REPLACE,
  FirewallDomainUpdateOperation'
  #-}