{-# LANGUAGE DeriveDataTypeable, DerivingStrategies #-} -- | Michelson contract in untyped model. module Michelson.Untyped.Contract ( Parameter , Storage , Contract (..) ) where import Data.Aeson.TH (defaultOptions, deriveJSON) import Data.Data (Data(..)) import Fmt (genericF) import Formatting.Buildable (Buildable(build)) import Michelson.Untyped.Type (Type) type Parameter = Type type Storage = Type data Contract op = Contract { para :: Parameter , stor :: Storage , code :: [op] } deriving stock (Eq, Show, Functor, Data, Generic) instance Buildable op => Buildable (Contract op) where build = genericF deriveJSON defaultOptions ''Contract