{-# 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.IoTThingsGraph.Types.SystemInstanceFilterName
-- 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.IoTThingsGraph.Types.SystemInstanceFilterName
  ( SystemInstanceFilterName
      ( ..,
        SystemInstanceFilterName_GREENGRASS_GROUP_NAME,
        SystemInstanceFilterName_STATUS,
        SystemInstanceFilterName_SYSTEM_TEMPLATE_ID
      ),
  )
where

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

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

pattern SystemInstanceFilterName_GREENGRASS_GROUP_NAME :: SystemInstanceFilterName
pattern $bSystemInstanceFilterName_GREENGRASS_GROUP_NAME :: SystemInstanceFilterName
$mSystemInstanceFilterName_GREENGRASS_GROUP_NAME :: forall r.
SystemInstanceFilterName -> (Void# -> r) -> (Void# -> r) -> r
SystemInstanceFilterName_GREENGRASS_GROUP_NAME = SystemInstanceFilterName' "GREENGRASS_GROUP_NAME"

pattern SystemInstanceFilterName_STATUS :: SystemInstanceFilterName
pattern $bSystemInstanceFilterName_STATUS :: SystemInstanceFilterName
$mSystemInstanceFilterName_STATUS :: forall r.
SystemInstanceFilterName -> (Void# -> r) -> (Void# -> r) -> r
SystemInstanceFilterName_STATUS = SystemInstanceFilterName' "STATUS"

pattern SystemInstanceFilterName_SYSTEM_TEMPLATE_ID :: SystemInstanceFilterName
pattern $bSystemInstanceFilterName_SYSTEM_TEMPLATE_ID :: SystemInstanceFilterName
$mSystemInstanceFilterName_SYSTEM_TEMPLATE_ID :: forall r.
SystemInstanceFilterName -> (Void# -> r) -> (Void# -> r) -> r
SystemInstanceFilterName_SYSTEM_TEMPLATE_ID = SystemInstanceFilterName' "SYSTEM_TEMPLATE_ID"

{-# COMPLETE
  SystemInstanceFilterName_GREENGRASS_GROUP_NAME,
  SystemInstanceFilterName_STATUS,
  SystemInstanceFilterName_SYSTEM_TEMPLATE_ID,
  SystemInstanceFilterName'
  #-}