module TD.Query.Destroy
  (Destroy(..)
  ) 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, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization. Returns 'TD.Data.Ok.Ok'
data Destroy
  = Destroy
  deriving (Destroy -> Destroy -> Bool
(Destroy -> Destroy -> Bool)
-> (Destroy -> Destroy -> Bool) -> Eq Destroy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Destroy -> Destroy -> Bool
== :: Destroy -> Destroy -> Bool
$c/= :: Destroy -> Destroy -> Bool
/= :: Destroy -> Destroy -> Bool
Eq, Int -> Destroy -> ShowS
[Destroy] -> ShowS
Destroy -> String
(Int -> Destroy -> ShowS)
-> (Destroy -> String) -> ([Destroy] -> ShowS) -> Show Destroy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Destroy -> ShowS
showsPrec :: Int -> Destroy -> ShowS
$cshow :: Destroy -> String
show :: Destroy -> String
$cshowList :: [Destroy] -> ShowS
showList :: [Destroy] -> ShowS
Show)

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

instance AT.ToJSON Destroy where
  toJSON :: Destroy -> Value
toJSON
    Destroy
Destroy
        = [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
"destroy"
          ]