{-#LANGUAGE KindSignatures, GADTs, DeriveGeneric, OverloadedStrings, TemplateHaskell #-}
{-# LANGUAGE StandaloneDeriving #-}
module Distrib.Butter.Lib.K where

import Distrib.Butter.Lang
import Data.Aeson
import GHC.Generics
import Control.Monad.Free

class (Monad m) => SerialM m where
  toV   :: m a -> Value
  fromV :: Value -> m a

sendB :: (SerialM m, ToJSON a) => ProcessID -> Butter m a -> Butter m ()
sendB to program = undefined

receiveB :: (SerialM m, FromJSON a) => Butter m (Butter m a)
receiveB = undefined