module Types where import Data.ByteString import Crypto.Hash as H -- | Things that the developer sees. data Seen = Seen { seenData :: ByteString } deriving (Show) -- | Things that the developer enters. data Entered = Entered { enteredData :: ByteString , echoData :: ByteString -- ^ Data that is expected to be Seen, but has not been received -- at the time this was entered. } deriving (Show) -- | An activity (either Entered or Seen) with a pointer -- to the Activity before this one. -- -- The Signature is over both the data in the activity, and its pointer. data Activity a = Activity a HashPointer Signature | StartActivity a Signature deriving (Show) data Signature = Signature ByteString deriving (Show) -- | A SHA2 hash pointer to something that hashes to this value. newtype HashPointer = HashPointer (H.Digest H.SHA256) deriving (Show)