packages feed

keiro-dsl-0.21.0.0: test/conformance-mapped-register-construction/Conformance/MappedRegisterConstruction/Domain.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}

module Conformance.MappedRegisterConstruction.Domain (MaybeTime (..)) where

import Control.DeepSeq (NFData)
import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import GHC.Generics (Generic)
import Keiki.Shape (CanonicalTypeName (..))

newtype MaybeTime = MaybeTime {timestamp :: Maybe UTCTime}
  deriving stock (Eq, Show, Generic)
  deriving anyclass (FromJSON, ToJSON, NFData)

instance CanonicalTypeName MaybeTime where
  canonicalTypeName :: Proxy MaybeTime -> Text
  canonicalTypeName _ = "conformance.MaybeTime.v1"