{-# 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.MediaConvert.Types.OutputGroupType
-- 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.MediaConvert.Types.OutputGroupType
  ( OutputGroupType
      ( ..,
        OutputGroupType_CMAF_GROUP_SETTINGS,
        OutputGroupType_DASH_ISO_GROUP_SETTINGS,
        OutputGroupType_FILE_GROUP_SETTINGS,
        OutputGroupType_HLS_GROUP_SETTINGS,
        OutputGroupType_MS_SMOOTH_GROUP_SETTINGS
      ),
  )
where

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

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

pattern OutputGroupType_CMAF_GROUP_SETTINGS :: OutputGroupType
pattern $bOutputGroupType_CMAF_GROUP_SETTINGS :: OutputGroupType
$mOutputGroupType_CMAF_GROUP_SETTINGS :: forall r. OutputGroupType -> (Void# -> r) -> (Void# -> r) -> r
OutputGroupType_CMAF_GROUP_SETTINGS = OutputGroupType' "CMAF_GROUP_SETTINGS"

pattern OutputGroupType_DASH_ISO_GROUP_SETTINGS :: OutputGroupType
pattern $bOutputGroupType_DASH_ISO_GROUP_SETTINGS :: OutputGroupType
$mOutputGroupType_DASH_ISO_GROUP_SETTINGS :: forall r. OutputGroupType -> (Void# -> r) -> (Void# -> r) -> r
OutputGroupType_DASH_ISO_GROUP_SETTINGS = OutputGroupType' "DASH_ISO_GROUP_SETTINGS"

pattern OutputGroupType_FILE_GROUP_SETTINGS :: OutputGroupType
pattern $bOutputGroupType_FILE_GROUP_SETTINGS :: OutputGroupType
$mOutputGroupType_FILE_GROUP_SETTINGS :: forall r. OutputGroupType -> (Void# -> r) -> (Void# -> r) -> r
OutputGroupType_FILE_GROUP_SETTINGS = OutputGroupType' "FILE_GROUP_SETTINGS"

pattern OutputGroupType_HLS_GROUP_SETTINGS :: OutputGroupType
pattern $bOutputGroupType_HLS_GROUP_SETTINGS :: OutputGroupType
$mOutputGroupType_HLS_GROUP_SETTINGS :: forall r. OutputGroupType -> (Void# -> r) -> (Void# -> r) -> r
OutputGroupType_HLS_GROUP_SETTINGS = OutputGroupType' "HLS_GROUP_SETTINGS"

pattern OutputGroupType_MS_SMOOTH_GROUP_SETTINGS :: OutputGroupType
pattern $bOutputGroupType_MS_SMOOTH_GROUP_SETTINGS :: OutputGroupType
$mOutputGroupType_MS_SMOOTH_GROUP_SETTINGS :: forall r. OutputGroupType -> (Void# -> r) -> (Void# -> r) -> r
OutputGroupType_MS_SMOOTH_GROUP_SETTINGS = OutputGroupType' "MS_SMOOTH_GROUP_SETTINGS"

{-# COMPLETE
  OutputGroupType_CMAF_GROUP_SETTINGS,
  OutputGroupType_DASH_ISO_GROUP_SETTINGS,
  OutputGroupType_FILE_GROUP_SETTINGS,
  OutputGroupType_HLS_GROUP_SETTINGS,
  OutputGroupType_MS_SMOOTH_GROUP_SETTINGS,
  OutputGroupType'
  #-}