{-# OPTIONS --safe #-}

open import Ledger.Prelude hiding (fromList; ε); open Computational

module Test.Examples.AccountSim.Datum where

open import Tactic.Derive.DecEq
open import Data.Vec as Vec
  hiding (fromList)
import stdlib.Data.Vec.Instances as Vec
import Data.Vec.Relation.Binary.Pointwise.Inductive as Vec

data Label : Set where
  Always : List ( × ) -> Label
instance
  unquoteDecl DecEq-Label = derive-DecEq
    ((quote Label , DecEq-Label)  [])

data Input : Set where
  Open     :  -> Input
  Close    :  -> Input
  Withdraw :  ->  -> Input
  Deposit  :  ->  -> Input
  Transfer :  ->  ->  -> Input
  Cleanup  : Input
instance
  unquoteDecl DecEq-Input = derive-DecEq
    ((quote Input , DecEq-Input)  [])

AccountSimData = Label  Input