{-# 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.KMS.Types.GrantOperation
-- 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.KMS.Types.GrantOperation
  ( GrantOperation
      ( ..,
        GrantOperation_CreateGrant,
        GrantOperation_Decrypt,
        GrantOperation_DescribeKey,
        GrantOperation_Encrypt,
        GrantOperation_GenerateDataKey,
        GrantOperation_GenerateDataKeyPair,
        GrantOperation_GenerateDataKeyPairWithoutPlaintext,
        GrantOperation_GenerateDataKeyWithoutPlaintext,
        GrantOperation_GetPublicKey,
        GrantOperation_ReEncryptFrom,
        GrantOperation_ReEncryptTo,
        GrantOperation_RetireGrant,
        GrantOperation_Sign,
        GrantOperation_Verify
      ),
  )
where

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

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

pattern GrantOperation_CreateGrant :: GrantOperation
pattern $bGrantOperation_CreateGrant :: GrantOperation
$mGrantOperation_CreateGrant :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_CreateGrant = GrantOperation' "CreateGrant"

pattern GrantOperation_Decrypt :: GrantOperation
pattern $bGrantOperation_Decrypt :: GrantOperation
$mGrantOperation_Decrypt :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_Decrypt = GrantOperation' "Decrypt"

pattern GrantOperation_DescribeKey :: GrantOperation
pattern $bGrantOperation_DescribeKey :: GrantOperation
$mGrantOperation_DescribeKey :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_DescribeKey = GrantOperation' "DescribeKey"

pattern GrantOperation_Encrypt :: GrantOperation
pattern $bGrantOperation_Encrypt :: GrantOperation
$mGrantOperation_Encrypt :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_Encrypt = GrantOperation' "Encrypt"

pattern GrantOperation_GenerateDataKey :: GrantOperation
pattern $bGrantOperation_GenerateDataKey :: GrantOperation
$mGrantOperation_GenerateDataKey :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_GenerateDataKey = GrantOperation' "GenerateDataKey"

pattern GrantOperation_GenerateDataKeyPair :: GrantOperation
pattern $bGrantOperation_GenerateDataKeyPair :: GrantOperation
$mGrantOperation_GenerateDataKeyPair :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_GenerateDataKeyPair = GrantOperation' "GenerateDataKeyPair"

pattern GrantOperation_GenerateDataKeyPairWithoutPlaintext :: GrantOperation
pattern $bGrantOperation_GenerateDataKeyPairWithoutPlaintext :: GrantOperation
$mGrantOperation_GenerateDataKeyPairWithoutPlaintext :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_GenerateDataKeyPairWithoutPlaintext = GrantOperation' "GenerateDataKeyPairWithoutPlaintext"

pattern GrantOperation_GenerateDataKeyWithoutPlaintext :: GrantOperation
pattern $bGrantOperation_GenerateDataKeyWithoutPlaintext :: GrantOperation
$mGrantOperation_GenerateDataKeyWithoutPlaintext :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_GenerateDataKeyWithoutPlaintext = GrantOperation' "GenerateDataKeyWithoutPlaintext"

pattern GrantOperation_GetPublicKey :: GrantOperation
pattern $bGrantOperation_GetPublicKey :: GrantOperation
$mGrantOperation_GetPublicKey :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_GetPublicKey = GrantOperation' "GetPublicKey"

pattern GrantOperation_ReEncryptFrom :: GrantOperation
pattern $bGrantOperation_ReEncryptFrom :: GrantOperation
$mGrantOperation_ReEncryptFrom :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_ReEncryptFrom = GrantOperation' "ReEncryptFrom"

pattern GrantOperation_ReEncryptTo :: GrantOperation
pattern $bGrantOperation_ReEncryptTo :: GrantOperation
$mGrantOperation_ReEncryptTo :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_ReEncryptTo = GrantOperation' "ReEncryptTo"

pattern GrantOperation_RetireGrant :: GrantOperation
pattern $bGrantOperation_RetireGrant :: GrantOperation
$mGrantOperation_RetireGrant :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_RetireGrant = GrantOperation' "RetireGrant"

pattern GrantOperation_Sign :: GrantOperation
pattern $bGrantOperation_Sign :: GrantOperation
$mGrantOperation_Sign :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_Sign = GrantOperation' "Sign"

pattern GrantOperation_Verify :: GrantOperation
pattern $bGrantOperation_Verify :: GrantOperation
$mGrantOperation_Verify :: forall r. GrantOperation -> (Void# -> r) -> (Void# -> r) -> r
GrantOperation_Verify = GrantOperation' "Verify"

{-# COMPLETE
  GrantOperation_CreateGrant,
  GrantOperation_Decrypt,
  GrantOperation_DescribeKey,
  GrantOperation_Encrypt,
  GrantOperation_GenerateDataKey,
  GrantOperation_GenerateDataKeyPair,
  GrantOperation_GenerateDataKeyPairWithoutPlaintext,
  GrantOperation_GenerateDataKeyWithoutPlaintext,
  GrantOperation_GetPublicKey,
  GrantOperation_ReEncryptFrom,
  GrantOperation_ReEncryptTo,
  GrantOperation_RetireGrant,
  GrantOperation_Sign,
  GrantOperation_Verify,
  GrantOperation'
  #-}