{-# 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.Firehose.Types.DeliveryStreamType
-- 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.Firehose.Types.DeliveryStreamType
  ( DeliveryStreamType
      ( ..,
        DeliveryStreamType_DirectPut,
        DeliveryStreamType_KinesisStreamAsSource
      ),
  )
where

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

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

pattern DeliveryStreamType_DirectPut :: DeliveryStreamType
pattern $bDeliveryStreamType_DirectPut :: DeliveryStreamType
$mDeliveryStreamType_DirectPut :: forall r. DeliveryStreamType -> (Void# -> r) -> (Void# -> r) -> r
DeliveryStreamType_DirectPut = DeliveryStreamType' "DirectPut"

pattern DeliveryStreamType_KinesisStreamAsSource :: DeliveryStreamType
pattern $bDeliveryStreamType_KinesisStreamAsSource :: DeliveryStreamType
$mDeliveryStreamType_KinesisStreamAsSource :: forall r. DeliveryStreamType -> (Void# -> r) -> (Void# -> r) -> r
DeliveryStreamType_KinesisStreamAsSource = DeliveryStreamType' "KinesisStreamAsSource"

{-# COMPLETE
  DeliveryStreamType_DirectPut,
  DeliveryStreamType_KinesisStreamAsSource,
  DeliveryStreamType'
  #-}