{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

module Simplex.Messaging.Protocol.Types
  ( ClientNotice (..),
  ) where

import qualified Data.Aeson.TH as J
import Data.Int (Int64)
import Simplex.Messaging.Parsers

data ClientNotice = ClientNotice
  { ClientNotice -> Maybe Int64
ttl :: Maybe Int64 -- seconds, Nothing - indefinite
  }
  deriving (ClientNotice -> ClientNotice -> Bool
(ClientNotice -> ClientNotice -> Bool)
-> (ClientNotice -> ClientNotice -> Bool) -> Eq ClientNotice
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ClientNotice -> ClientNotice -> Bool
== :: ClientNotice -> ClientNotice -> Bool
$c/= :: ClientNotice -> ClientNotice -> Bool
/= :: ClientNotice -> ClientNotice -> Bool
Eq, Int -> ClientNotice -> ShowS
[ClientNotice] -> ShowS
ClientNotice -> String
(Int -> ClientNotice -> ShowS)
-> (ClientNotice -> String)
-> ([ClientNotice] -> ShowS)
-> Show ClientNotice
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ClientNotice -> ShowS
showsPrec :: Int -> ClientNotice -> ShowS
$cshow :: ClientNotice -> String
show :: ClientNotice -> String
$cshowList :: [ClientNotice] -> ShowS
showList :: [ClientNotice] -> ShowS
Show)

$(J.deriveJSON defaultJSON ''ClientNotice)