{-# 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.EKS.Types.UpdateType
-- 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.EKS.Types.UpdateType
  ( UpdateType
      ( ..,
        UpdateType_AddonUpdate,
        UpdateType_AssociateEncryptionConfig,
        UpdateType_AssociateIdentityProviderConfig,
        UpdateType_ConfigUpdate,
        UpdateType_DisassociateIdentityProviderConfig,
        UpdateType_EndpointAccessUpdate,
        UpdateType_LoggingUpdate,
        UpdateType_VersionUpdate
      ),
  )
where

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

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

pattern UpdateType_AddonUpdate :: UpdateType
pattern $bUpdateType_AddonUpdate :: UpdateType
$mUpdateType_AddonUpdate :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_AddonUpdate = UpdateType' "AddonUpdate"

pattern UpdateType_AssociateEncryptionConfig :: UpdateType
pattern $bUpdateType_AssociateEncryptionConfig :: UpdateType
$mUpdateType_AssociateEncryptionConfig :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_AssociateEncryptionConfig = UpdateType' "AssociateEncryptionConfig"

pattern UpdateType_AssociateIdentityProviderConfig :: UpdateType
pattern $bUpdateType_AssociateIdentityProviderConfig :: UpdateType
$mUpdateType_AssociateIdentityProviderConfig :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_AssociateIdentityProviderConfig = UpdateType' "AssociateIdentityProviderConfig"

pattern UpdateType_ConfigUpdate :: UpdateType
pattern $bUpdateType_ConfigUpdate :: UpdateType
$mUpdateType_ConfigUpdate :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_ConfigUpdate = UpdateType' "ConfigUpdate"

pattern UpdateType_DisassociateIdentityProviderConfig :: UpdateType
pattern $bUpdateType_DisassociateIdentityProviderConfig :: UpdateType
$mUpdateType_DisassociateIdentityProviderConfig :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_DisassociateIdentityProviderConfig = UpdateType' "DisassociateIdentityProviderConfig"

pattern UpdateType_EndpointAccessUpdate :: UpdateType
pattern $bUpdateType_EndpointAccessUpdate :: UpdateType
$mUpdateType_EndpointAccessUpdate :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_EndpointAccessUpdate = UpdateType' "EndpointAccessUpdate"

pattern UpdateType_LoggingUpdate :: UpdateType
pattern $bUpdateType_LoggingUpdate :: UpdateType
$mUpdateType_LoggingUpdate :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_LoggingUpdate = UpdateType' "LoggingUpdate"

pattern UpdateType_VersionUpdate :: UpdateType
pattern $bUpdateType_VersionUpdate :: UpdateType
$mUpdateType_VersionUpdate :: forall r. UpdateType -> (Void# -> r) -> (Void# -> r) -> r
UpdateType_VersionUpdate = UpdateType' "VersionUpdate"

{-# COMPLETE
  UpdateType_AddonUpdate,
  UpdateType_AssociateEncryptionConfig,
  UpdateType_AssociateIdentityProviderConfig,
  UpdateType_ConfigUpdate,
  UpdateType_DisassociateIdentityProviderConfig,
  UpdateType_EndpointAccessUpdate,
  UpdateType_LoggingUpdate,
  UpdateType_VersionUpdate,
  UpdateType'
  #-}