module TD.Query.Close
  (Close(..)
  ) where

import qualified Data.Aeson as A
import qualified Data.Aeson.Types as AT
import qualified TD.Lib.Internal as I

-- | Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization. Returns 'TD.Data.Ok.Ok'
data Close
  = Close
  deriving (Close -> Close -> Bool
(Close -> Close -> Bool) -> (Close -> Close -> Bool) -> Eq Close
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Close -> Close -> Bool
== :: Close -> Close -> Bool
$c/= :: Close -> Close -> Bool
/= :: Close -> Close -> Bool
Eq, Int -> Close -> ShowS
[Close] -> ShowS
Close -> String
(Int -> Close -> ShowS)
-> (Close -> String) -> ([Close] -> ShowS) -> Show Close
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Close -> ShowS
showsPrec :: Int -> Close -> ShowS
$cshow :: Close -> String
show :: Close -> String
$cshowList :: [Close] -> ShowS
showList :: [Close] -> ShowS
Show)

instance I.ShortShow Close where
  shortShow :: Close -> String
shortShow
    Close
Close
        = String
"Close"

instance AT.ToJSON Close where
  toJSON :: Close -> Value
toJSON
    Close
Close
        = [Pair] -> Value
A.object
          [ Key
"@type" Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Text -> Value
AT.String Text
"close"
          ]