    {-|
    Module      : HsLua.Classes
    Copyright   : © 2007–2012 Gracjan Polak;
                  © 2012–2016 Ömer Sinan Ağacan;
                  © 2017-2024 Albert Krewinkel
    License     : MIT
    Maintainer  : Albert Krewinkel <tarleb@hslua.org>
    Stability   : beta
    Portability : non-portable (depends on GHC)

    Convenience module which re-exports all classes and utility functions
    provided by the /hslua-classes/ package.
    -}
    module HsLua.Classes
      ( -- * Receiving values from Lua stack (Lua → Haskell)
        Peekable (..)
      , peekEither
        -- * Pushing values to Lua stack (Haskell → Lua)
      , Pushable (..)
      , pushList
        -- * Calling Functions
      , Exposable (..)
      , toHaskellFunction
      , invoke
      , registerHaskellFunction
        -- * Utility functions and types
      , raiseError
      , Optional (Optional, fromOptional)
        -- ** Retrieving values
      , popValue
      ) where

    import HsLua.Class.Exposable
    import HsLua.Class.Invokable
    import HsLua.Class.Peekable
    import HsLua.Class.Pushable
    import HsLua.Class.Util