module Michelson.Printer
( RenderDoc(..)
, printDoc
, printUntypedContract
, printTypedContract
) where
import Data.Singletons (SingI)
import qualified Data.Text.Lazy as TL
import Michelson.Printer.Util (RenderDoc(..), printDoc)
import qualified Michelson.Typed as T
import qualified Michelson.Untyped as U
printUntypedContract :: (RenderDoc op) => U.Contract' op -> TL.Text
printUntypedContract = printDoc . renderDoc
printTypedContract :: (SingI p, SingI s) => T.Contract p s -> TL.Text
printTypedContract = printUntypedContract . T.convertContract