content: module Language.Wasm (
      Module,
      ValidModule,
      ValidationError(..),
      parse,
      validate,
      Language.Wasm.parseScript,
      encode,
      encodeLazy,
      decode,
      decodeLazy,
      Script,
      Command(..),
      ModuleDef(..),
      Action(..),
      Assertion(..),
      Ident(..),
      Meta(..),
      runScript,
      Valid.getModule
  ) where
  
  import qualified Data.ByteString as BS
  import qualified Data.ByteString.Lazy as LBS
  
  import Language.Wasm.Structure as Struct
  import Language.Wasm.Script as Script
  import Language.Wasm.Lexer as Lexer
  import Language.Wasm.Parser as Parser
  import Language.Wasm.Validate as Valid
  import Language.Wasm.Binary as Binary
  
  -- | Parse WebAssembly text representation to `Module`
  parse :: LBS.ByteString -> Either String Module
  parse content = Lexer.scanner content >>= Parser.parseModule
  
  -- | Parse WebAssembly extended script grammar
  parseScript :: LBS.ByteString -> Either String Script
  parseScript content = Lexer.scanner content >>= Parser.parseScript
  
  -- | Dump `Module` to binary representation
  encode :: Module -> BS.ByteString
  encode = dumpModule
  
  -- | Dump `Module` to binary representation lazily
  encodeLazy :: Module -> LBS.ByteString
  encodeLazy = dumpModuleLazy
  
  -- | Decode `Module` from binary representation
  decode :: BS.ByteString -> Either String Module
  decode = decodeModule
  
  -- | Decode `Module` from binary representation lazily
  decodeLazy :: LBS.ByteString -> Either String Module
  decodeLazy = decodeModuleLazy
  