{-# 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.CloudFront.Types.FunctionStage
-- 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.CloudFront.Types.FunctionStage
  ( FunctionStage
      ( ..,
        FunctionStage_DEVELOPMENT,
        FunctionStage_LIVE
      ),
  )
where

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

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

pattern FunctionStage_DEVELOPMENT :: FunctionStage
pattern $bFunctionStage_DEVELOPMENT :: FunctionStage
$mFunctionStage_DEVELOPMENT :: forall r. FunctionStage -> (Void# -> r) -> (Void# -> r) -> r
FunctionStage_DEVELOPMENT = FunctionStage' "DEVELOPMENT"

pattern FunctionStage_LIVE :: FunctionStage
pattern $bFunctionStage_LIVE :: FunctionStage
$mFunctionStage_LIVE :: forall r. FunctionStage -> (Void# -> r) -> (Void# -> r) -> r
FunctionStage_LIVE = FunctionStage' "LIVE"

{-# COMPLETE
  FunctionStage_DEVELOPMENT,
  FunctionStage_LIVE,
  FunctionStage'
  #-}