{-# 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.NetworkManager.Types.AttachmentType
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.NetworkManager.Types.AttachmentType
  ( AttachmentType
      ( ..,
        AttachmentType_CONNECT,
        AttachmentType_SITE_TO_SITE_VPN,
        AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE,
        AttachmentType_VPC
      ),
  )
where

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

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

pattern AttachmentType_CONNECT :: AttachmentType
pattern $bAttachmentType_CONNECT :: AttachmentType
$mAttachmentType_CONNECT :: forall {r}. AttachmentType -> ((# #) -> r) -> ((# #) -> r) -> r
AttachmentType_CONNECT = AttachmentType' "CONNECT"

pattern AttachmentType_SITE_TO_SITE_VPN :: AttachmentType
pattern $bAttachmentType_SITE_TO_SITE_VPN :: AttachmentType
$mAttachmentType_SITE_TO_SITE_VPN :: forall {r}. AttachmentType -> ((# #) -> r) -> ((# #) -> r) -> r
AttachmentType_SITE_TO_SITE_VPN = AttachmentType' "SITE_TO_SITE_VPN"

pattern AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE :: AttachmentType
pattern $bAttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE :: AttachmentType
$mAttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE :: forall {r}. AttachmentType -> ((# #) -> r) -> ((# #) -> r) -> r
AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE = AttachmentType' "TRANSIT_GATEWAY_ROUTE_TABLE"

pattern AttachmentType_VPC :: AttachmentType
pattern $bAttachmentType_VPC :: AttachmentType
$mAttachmentType_VPC :: forall {r}. AttachmentType -> ((# #) -> r) -> ((# #) -> r) -> r
AttachmentType_VPC = AttachmentType' "VPC"

{-# COMPLETE
  AttachmentType_CONNECT,
  AttachmentType_SITE_TO_SITE_VPN,
  AttachmentType_TRANSIT_GATEWAY_ROUTE_TABLE,
  AttachmentType_VPC,
  AttachmentType'
  #-}