{-# 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.Connect.Types.LexVersion
-- 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.Connect.Types.LexVersion
  ( LexVersion
      ( ..,
        LexVersion_V1,
        LexVersion_V2
      ),
  )
where

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

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

pattern LexVersion_V1 :: LexVersion
pattern $bLexVersion_V1 :: LexVersion
$mLexVersion_V1 :: forall r. LexVersion -> (Void# -> r) -> (Void# -> r) -> r
LexVersion_V1 = LexVersion' "V1"

pattern LexVersion_V2 :: LexVersion
pattern $bLexVersion_V2 :: LexVersion
$mLexVersion_V2 :: forall r. LexVersion -> (Void# -> r) -> (Void# -> r) -> r
LexVersion_V2 = LexVersion' "V2"

{-# COMPLETE
  LexVersion_V1,
  LexVersion_V2,
  LexVersion'
  #-}