{-# 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.DirectConnect.Types.GatewayType
-- 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.DirectConnect.Types.GatewayType
  ( GatewayType
      ( ..,
        GatewayType_TransitGateway,
        GatewayType_VirtualPrivateGateway
      ),
  )
where

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

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

pattern GatewayType_TransitGateway :: GatewayType
pattern $bGatewayType_TransitGateway :: GatewayType
$mGatewayType_TransitGateway :: forall r. GatewayType -> (Void# -> r) -> (Void# -> r) -> r
GatewayType_TransitGateway = GatewayType' "transitGateway"

pattern GatewayType_VirtualPrivateGateway :: GatewayType
pattern $bGatewayType_VirtualPrivateGateway :: GatewayType
$mGatewayType_VirtualPrivateGateway :: forall r. GatewayType -> (Void# -> r) -> (Void# -> r) -> r
GatewayType_VirtualPrivateGateway = GatewayType' "virtualPrivateGateway"

{-# COMPLETE
  GatewayType_TransitGateway,
  GatewayType_VirtualPrivateGateway,
  GatewayType'
  #-}