summaryrefslogtreecommitdiffhomepage
path: root/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Types.hs')
-rw-r--r--Types.hs35
1 files changed, 35 insertions, 0 deletions
diff --git a/Types.hs b/Types.hs
new file mode 100644
index 0000000..c41e30a
--- /dev/null
+++ b/Types.hs
@@ -0,0 +1,35 @@
+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)