{-# 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.LakeFormation.Types.ResourceShareType
-- 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.LakeFormation.Types.ResourceShareType
  ( ResourceShareType
      ( ..,
        ResourceShareType_ALL,
        ResourceShareType_FOREIGN
      ),
  )
where

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

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

pattern ResourceShareType_ALL :: ResourceShareType
pattern $bResourceShareType_ALL :: ResourceShareType
$mResourceShareType_ALL :: forall r. ResourceShareType -> (Void# -> r) -> (Void# -> r) -> r
ResourceShareType_ALL = ResourceShareType' "ALL"

pattern ResourceShareType_FOREIGN :: ResourceShareType
pattern $bResourceShareType_FOREIGN :: ResourceShareType
$mResourceShareType_FOREIGN :: forall r. ResourceShareType -> (Void# -> r) -> (Void# -> r) -> r
ResourceShareType_FOREIGN = ResourceShareType' "FOREIGN"

{-# COMPLETE
  ResourceShareType_ALL,
  ResourceShareType_FOREIGN,
  ResourceShareType'
  #-}