module TD.Query.ResetPassword
  (ResetPassword(..)
  ) where

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

-- | Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time. Returns 'TD.Data.ResetPasswordResult.ResetPasswordResult'
data ResetPassword
  = ResetPassword
  deriving (ResetPassword -> ResetPassword -> Bool
(ResetPassword -> ResetPassword -> Bool)
-> (ResetPassword -> ResetPassword -> Bool) -> Eq ResetPassword
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResetPassword -> ResetPassword -> Bool
== :: ResetPassword -> ResetPassword -> Bool
$c/= :: ResetPassword -> ResetPassword -> Bool
/= :: ResetPassword -> ResetPassword -> Bool
Eq, Int -> ResetPassword -> ShowS
[ResetPassword] -> ShowS
ResetPassword -> String
(Int -> ResetPassword -> ShowS)
-> (ResetPassword -> String)
-> ([ResetPassword] -> ShowS)
-> Show ResetPassword
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResetPassword -> ShowS
showsPrec :: Int -> ResetPassword -> ShowS
$cshow :: ResetPassword -> String
show :: ResetPassword -> String
$cshowList :: [ResetPassword] -> ShowS
showList :: [ResetPassword] -> ShowS
Show)

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

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