module FlatBuffers
  (
    -- * TemplateHaskell
    TH.mkFlatBuffers
  , TH.defaultOptions
  , TH.Options(..)

    -- * Creating a flatbuffer
  , W.encode
  , W.encodeWithFileIdentifier

    -- * Reading a flatbuffer
  , R.decode
  , R.checkFileIdentifier

  -- * File Identifier
  , FI.FileIdentifier
  , FI.HasFileIdentifier(..)

  -- * Types
  , W.WriteStruct
  , W.WriteTable
  , W.WriteUnion
  , R.Struct
  , R.Table
  , R.Union(..)
  , T.InlineSize(..)
  , T.Alignment(..)
  , T.IsStruct(..)
  , R.ReadError
  ) where

import FlatBuffers.Internal.Compiler.TH as TH
import FlatBuffers.Internal.FileIdentifier as FI
import FlatBuffers.Internal.Read as R
import FlatBuffers.Internal.Types as T
import FlatBuffers.Internal.Write as W