{-# 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.IoT.Types.BehaviorCriteriaType
-- 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.IoT.Types.BehaviorCriteriaType
  ( BehaviorCriteriaType
      ( ..,
        BehaviorCriteriaType_MACHINE_LEARNING,
        BehaviorCriteriaType_STATIC,
        BehaviorCriteriaType_STATISTICAL
      ),
  )
where

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

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

pattern BehaviorCriteriaType_MACHINE_LEARNING :: BehaviorCriteriaType
pattern $bBehaviorCriteriaType_MACHINE_LEARNING :: BehaviorCriteriaType
$mBehaviorCriteriaType_MACHINE_LEARNING :: forall r. BehaviorCriteriaType -> (Void# -> r) -> (Void# -> r) -> r
BehaviorCriteriaType_MACHINE_LEARNING = BehaviorCriteriaType' "MACHINE_LEARNING"

pattern BehaviorCriteriaType_STATIC :: BehaviorCriteriaType
pattern $bBehaviorCriteriaType_STATIC :: BehaviorCriteriaType
$mBehaviorCriteriaType_STATIC :: forall r. BehaviorCriteriaType -> (Void# -> r) -> (Void# -> r) -> r
BehaviorCriteriaType_STATIC = BehaviorCriteriaType' "STATIC"

pattern BehaviorCriteriaType_STATISTICAL :: BehaviorCriteriaType
pattern $bBehaviorCriteriaType_STATISTICAL :: BehaviorCriteriaType
$mBehaviorCriteriaType_STATISTICAL :: forall r. BehaviorCriteriaType -> (Void# -> r) -> (Void# -> r) -> r
BehaviorCriteriaType_STATISTICAL = BehaviorCriteriaType' "STATISTICAL"

{-# COMPLETE
  BehaviorCriteriaType_MACHINE_LEARNING,
  BehaviorCriteriaType_STATIC,
  BehaviorCriteriaType_STATISTICAL,
  BehaviorCriteriaType'
  #-}