{-# 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.Snowball.Types.SnowballType
-- 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.Snowball.Types.SnowballType
  ( SnowballType
      ( ..,
        SnowballType_EDGE,
        SnowballType_EDGE_C,
        SnowballType_EDGE_CG,
        SnowballType_EDGE_S,
        SnowballType_SNC1_HDD,
        SnowballType_SNC1_SSD,
        SnowballType_STANDARD
      ),
  )
where

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

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

pattern SnowballType_EDGE :: SnowballType
pattern $bSnowballType_EDGE :: SnowballType
$mSnowballType_EDGE :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_EDGE = SnowballType' "EDGE"

pattern SnowballType_EDGE_C :: SnowballType
pattern $bSnowballType_EDGE_C :: SnowballType
$mSnowballType_EDGE_C :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_EDGE_C = SnowballType' "EDGE_C"

pattern SnowballType_EDGE_CG :: SnowballType
pattern $bSnowballType_EDGE_CG :: SnowballType
$mSnowballType_EDGE_CG :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_EDGE_CG = SnowballType' "EDGE_CG"

pattern SnowballType_EDGE_S :: SnowballType
pattern $bSnowballType_EDGE_S :: SnowballType
$mSnowballType_EDGE_S :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_EDGE_S = SnowballType' "EDGE_S"

pattern SnowballType_SNC1_HDD :: SnowballType
pattern $bSnowballType_SNC1_HDD :: SnowballType
$mSnowballType_SNC1_HDD :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_SNC1_HDD = SnowballType' "SNC1_HDD"

pattern SnowballType_SNC1_SSD :: SnowballType
pattern $bSnowballType_SNC1_SSD :: SnowballType
$mSnowballType_SNC1_SSD :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_SNC1_SSD = SnowballType' "SNC1_SSD"

pattern SnowballType_STANDARD :: SnowballType
pattern $bSnowballType_STANDARD :: SnowballType
$mSnowballType_STANDARD :: forall r. SnowballType -> (Void# -> r) -> (Void# -> r) -> r
SnowballType_STANDARD = SnowballType' "STANDARD"

{-# COMPLETE
  SnowballType_EDGE,
  SnowballType_EDGE_C,
  SnowballType_EDGE_CG,
  SnowballType_EDGE_S,
  SnowballType_SNC1_HDD,
  SnowballType_SNC1_SSD,
  SnowballType_STANDARD,
  SnowballType'
  #-}