sig
  type state
  type oCamlFunction = Lua_api_lib.state -> int
  type thread_status =
      LUA_OK
    | LUA_YIELD
    | LUA_ERRRUN
    | LUA_ERRSYNTAX
    | LUA_ERRMEM
    | LUA_ERRERR
  type gc_command =
      GCSTOP
    | GCRESTART
    | GCCOLLECT
    | GCCOUNT
    | GCCOUNTB
    | GCSTEP
    | GCSETPAUSE
    | GCSETSTEPMUL
  type lua_type =
      LUA_TNONE
    | LUA_TNIL
    | LUA_TBOOLEAN
    | LUA_TLIGHTUSERDATA
    | LUA_TNUMBER
    | LUA_TSTRING
    | LUA_TTABLE
    | LUA_TFUNCTION
    | LUA_TUSERDATA
    | LUA_TTHREAD
  type 'a lua_Reader = Lua_api_lib.state -> '-> string option
  type writer_status = NO_WRITING_ERROR | WRITING_ERROR
  type 'a lua_Writer =
      Lua_api_lib.state -> string -> '-> Lua_api_lib.writer_status
  val multret : int
  val registryindex : int
  val environindex : int
  val globalsindex : int
  exception Error of Lua_api_lib.thread_status
  exception Type_error of string
  val thread_status_of_int : int -> Lua_api_lib.thread_status
  val int_of_thread_status : Lua_api_lib.thread_status -> int
  val lua_type_of_int : int -> Lua_api_lib.lua_type
  val int_of_lua_type : Lua_api_lib.lua_type -> int
  external atpanic :
    Lua_api_lib.state ->
    Lua_api_lib.oCamlFunction -> Lua_api_lib.oCamlFunction
    = "lua_atpanic__stub"
  external call : Lua_api_lib.state -> int -> int -> unit = "lua_call__stub"
  external checkstack : Lua_api_lib.state -> int -> bool
    = "lua_checkstack__stub"
  external concat : Lua_api_lib.state -> int -> unit = "lua_concat__stub"
  val cpcall :
    Lua_api_lib.state ->
    Lua_api_lib.oCamlFunction -> '-> Lua_api_lib.thread_status
  external createtable : Lua_api_lib.state -> int -> int -> unit
    = "lua_createtable__stub"
  val dump :
    Lua_api_lib.state ->
    'Lua_api_lib.lua_Writer -> '-> Lua_api_lib.writer_status
  external equal : Lua_api_lib.state -> int -> int -> bool
    = "lua_equal__stub"
  external error : Lua_api_lib.state -> 'a = "lua_error__stub"
  val gc : Lua_api_lib.state -> Lua_api_lib.gc_command -> int -> int
  external getfenv : Lua_api_lib.state -> int -> unit = "lua_getfenv__stub"
  external getfield : Lua_api_lib.state -> int -> string -> unit
    = "lua_getfield__stub"
  val getglobal : Lua_api_lib.state -> string -> unit
  external getmetatable : Lua_api_lib.state -> int -> bool
    = "lua_getmetatable__stub"
  external gettable : Lua_api_lib.state -> int -> unit = "lua_gettable__stub"
  external gettop : Lua_api_lib.state -> int = "lua_gettop__stub"
  external insert : Lua_api_lib.state -> int -> unit = "lua_insert__stub"
  external isboolean : Lua_api_lib.state -> int -> bool
    = "lua_isboolean__stub"
  external iscfunction : Lua_api_lib.state -> int -> bool
    = "lua_iscfunction__stub"
  external isfunction : Lua_api_lib.state -> int -> bool
    = "lua_isfunction__stub"
  external islightuserdata : Lua_api_lib.state -> int -> bool
    = "lua_islightuserdata__stub"
  external isnil : Lua_api_lib.state -> int -> bool = "lua_isnil__stub"
  external isnone : Lua_api_lib.state -> int -> bool = "lua_isnone__stub"
  external isnoneornil : Lua_api_lib.state -> int -> bool
    = "lua_isnoneornil__stub"
  external isnumber : Lua_api_lib.state -> int -> bool = "lua_isnumber__stub"
  external isstring : Lua_api_lib.state -> int -> bool = "lua_isstring__stub"
  external istable : Lua_api_lib.state -> int -> bool = "lua_istable__stub"
  external isthread : Lua_api_lib.state -> int -> bool = "lua_isthread__stub"
  external isuserdata : Lua_api_lib.state -> int -> bool
    = "lua_isuserdata__stub"
  external lessthan : Lua_api_lib.state -> int -> int -> bool
    = "lua_lessthan__stub"
  val load :
    Lua_api_lib.state ->
    'Lua_api_lib.lua_Reader -> '-> string -> Lua_api_lib.thread_status
  external newtable : Lua_api_lib.state -> unit = "lua_newtable__stub"
  val newthread : Lua_api_lib.state -> Lua_api_lib.state
  external default_gc : Lua_api_lib.state -> int = "default_gc__stub"
  val make_gc_function :
    Lua_api_lib.oCamlFunction -> Lua_api_lib.oCamlFunction
  external newuserdata : Lua_api_lib.state -> '-> unit
    = "lua_newuserdata__stub"
  external next : Lua_api_lib.state -> int -> int = "lua_next__stub"
  external objlen : Lua_api_lib.state -> int -> int = "lua_objlen__stub"
  val pcall :
    Lua_api_lib.state -> int -> int -> int -> Lua_api_lib.thread_status
  external pop : Lua_api_lib.state -> int -> unit = "lua_pop__stub"
  external pushboolean : Lua_api_lib.state -> bool -> unit
    = "lua_pushboolean__stub"
  external pushcfunction :
    Lua_api_lib.state -> Lua_api_lib.oCamlFunction -> unit
    = "lua_pushcfunction__stub"
  val pushocamlfunction :
    Lua_api_lib.state -> Lua_api_lib.oCamlFunction -> unit
  val pushfstring :
    Lua_api_lib.state -> ('a, unit, string, string) Pervasives.format4 -> 'a
  external pushinteger : Lua_api_lib.state -> int -> unit
    = "lua_pushinteger__stub"
  val pushlightuserdata : Lua_api_lib.state -> '-> unit
  external pushliteral : Lua_api_lib.state -> string -> unit
    = "lua_pushlstring__stub"
  external pushlstring : Lua_api_lib.state -> string -> unit
    = "lua_pushlstring__stub"
  external pushnil : Lua_api_lib.state -> unit = "lua_pushnil__stub"
  external pushnumber : Lua_api_lib.state -> float -> unit
    = "lua_pushnumber__stub"
  val pushstring : Lua_api_lib.state -> string -> unit
  val pushthread : Lua_api_lib.state -> bool
  external pushvalue : Lua_api_lib.state -> int -> unit
    = "lua_pushvalue__stub"
  val pushvfstring :
    Lua_api_lib.state -> ('a, unit, string, string) Pervasives.format4 -> 'a
  external rawequal : Lua_api_lib.state -> int -> int -> bool
    = "lua_rawequal__stub"
  external rawget : Lua_api_lib.state -> int -> unit = "lua_rawget__stub"
  external rawgeti : Lua_api_lib.state -> int -> int -> unit
    = "lua_rawgeti__stub"
  external rawset : Lua_api_lib.state -> int -> unit = "lua_rawset__stub"
  external rawseti : Lua_api_lib.state -> int -> int -> unit
    = "lua_rawseti__stub"
  val register :
    Lua_api_lib.state -> string -> Lua_api_lib.oCamlFunction -> unit
  external remove : Lua_api_lib.state -> int -> unit = "lua_remove__stub"
  external replace : Lua_api_lib.state -> int -> unit = "lua_replace__stub"
  val resume : Lua_api_lib.state -> int -> Lua_api_lib.thread_status
  external setfenv : Lua_api_lib.state -> int -> bool = "lua_setfenv__stub"
  external setfield : Lua_api_lib.state -> int -> string -> unit
    = "lua_setfield__stub"
  external setglobal : Lua_api_lib.state -> string -> unit
    = "lua_setglobal__stub"
  external setmetatable : Lua_api_lib.state -> int -> int
    = "lua_setmetatable__stub"
  external settable : Lua_api_lib.state -> int -> int = "lua_settable__stub"
  external settop : Lua_api_lib.state -> int -> unit = "lua_settop__stub"
  val status : Lua_api_lib.state -> Lua_api_lib.thread_status
  external toboolean : Lua_api_lib.state -> int -> bool
    = "lua_toboolean__stub"
  val tocfunction :
    Lua_api_lib.state -> int -> Lua_api_lib.oCamlFunction option
  val toocamlfunction :
    Lua_api_lib.state -> int -> Lua_api_lib.oCamlFunction option
  val tointeger : Lua_api_lib.state -> int -> int
  val tolstring : Lua_api_lib.state -> int -> string option
  val tonumber : Lua_api_lib.state -> int -> float
  val tostring : Lua_api_lib.state -> int -> string option
  val tothread : Lua_api_lib.state -> int -> Lua_api_lib.state option
  val touserdata :
    Lua_api_lib.state ->
    int -> [> `Light_userdata of '| `Userdata of 'a ] option
  val type_ : Lua_api_lib.state -> int -> Lua_api_lib.lua_type
  val typename : Lua_api_lib.state -> Lua_api_lib.lua_type -> string
  val xmove : Lua_api_lib.state -> Lua_api_lib.state -> int -> unit
  val yield : Lua_api_lib.state -> int -> int
  val init : unit lazy_t
end