

return function(instance)
local env = instance.env

--- Notification library enums
-- @name builtins_library.NOTIFY
-- @class table
-- @field GENERIC
-- @field ERROR
-- @field UNDO
-- @field HINT
-- @field CLEANUP
env.NOTIFY = {
	["GENERIC"] = NOTIFY_GENERIC,
	["ERROR"] = NOTIFY_ERROR,
	["UNDO"] = NOTIFY_UNDO,
	["HINT"] = NOTIFY_HINT,
	["CLEANUP"] = NOTIFY_CLEANUP
}

--- Align enum for drawing text
-- @name builtins_library.TEXT_ALIGN
-- @class table
-- @field LEFT Align the text on the left
-- @field CENTER Align the text in center
-- @field RIGHT Align the text on the right
-- @field TOP Align the text on the top
-- @field BOTTOM Align the text on the bottom
env.TEXT_ALIGN = {
	["LEFT"] = TEXT_ALIGN_LEFT,
	["CENTER"] = TEXT_ALIGN_CENTER,
	["RIGHT"] = TEXT_ALIGN_RIGHT,
	["TOP"] = TEXT_ALIGN_TOP,
	["BOTTOM"] = TEXT_ALIGN_BOTTOM
}

--- ENUMs of keyboard keys for use with input library
-- @name builtins_library.KEY
-- @class table
-- @field FIRST
-- @field NONE
-- @field 0
-- @field KEY0
-- @field 1
-- @field KEY1
-- @field 2
-- @field KEY2
-- @field 3
-- @field KEY3
-- @field 4
-- @field KEY4
-- @field 5
-- @field KEY5
-- @field 6
-- @field KEY6
-- @field 7
-- @field KEY7
-- @field 8
-- @field KEY8
-- @field 9
-- @field KEY9
-- @field A
-- @field B
-- @field C
-- @field D
-- @field E
-- @field F
-- @field G
-- @field H
-- @field I
-- @field J
-- @field K
-- @field L
-- @field M
-- @field N
-- @field O
-- @field P
-- @field Q
-- @field R
-- @field S
-- @field T
-- @field U
-- @field V
-- @field W
-- @field X
-- @field Y
-- @field Z
-- @field KP_INS
-- @field PAD_0
-- @field KP_END
-- @field PAD_1
-- @field KP_DOWNARROW
-- @field PAD_2
-- @field KP_PGDN
-- @field PAD_3
-- @field KP_LEFTARROW
-- @field PAD_4
-- @field KP_5
-- @field PAD_5
-- @field KP_RIGHTARROW
-- @field PAD_6
-- @field KP_HOME
-- @field PAD_7
-- @field KP_UPARROW
-- @field PAD_8
-- @field KP_PGUP
-- @field PAD_9
-- @field PAD_DIVIDE
-- @field KP_SLASH
-- @field KP_MULTIPLY
-- @field PAD_MULTIPLY
-- @field KP_MINUS
-- @field PAD_MINUS
-- @field KP_PLUS
-- @field PAD_PLUS
-- @field KP_ENTER
-- @field PAD_ENTER
-- @field KP_DEL
-- @field PAD_DECIMAL
-- @field LBRACKET
-- @field RBRACKET
-- @field SEMICOLON
-- @field APOSTROPHE
-- @field BACKQUOTE
-- @field COMMA
-- @field PERIOD
-- @field SLASH
-- @field BACKSLASH
-- @field MINUS
-- @field EQUAL
-- @field ENTER
-- @field SPACE
-- @field BACKSPACE
-- @field TAB
-- @field CAPSLOCK
-- @field NUMLOCK
-- @field ESCAPE
-- @field SCROLLLOCK
-- @field INS
-- @field INSERT
-- @field DEL
-- @field DELETE
-- @field HOME
-- @field END
-- @field PGUP
-- @field PAGEUP
-- @field PGDN
-- @field PAGEDOWN
-- @field PAUSE
-- @field BREAK
-- @field SHIFT
-- @field LSHIFT
-- @field RSHIFT
-- @field ALT
-- @field LALT
-- @field RALT
-- @field CTRL
-- @field LCONTROL
-- @field RCTRL
-- @field RCONTROL
-- @field LWIN
-- @field RWIN
-- @field APP
-- @field UPARROW
-- @field UP
-- @field LEFTARROW
-- @field LEFT
-- @field DOWNARROW
-- @field DOWN
-- @field RIGHTARROW
-- @field RIGHT
-- @field F1
-- @field F2
-- @field F3
-- @field F4
-- @field F5
-- @field F6
-- @field F7
-- @field F8
-- @field F9
-- @field F10
-- @field F11
-- @field F12
-- @field CAPSLOCKTOGGLE
-- @field NUMLOCKTOGGLE
-- @field SCROLLLOCKTOGGLE
-- @field LAST
-- @field COUNT
env.KEY = {
	["FIRST"] = 0,
	["NONE"] = 0,
	["0"] = 1, ["KEY0"] = 1,
	["1"] = 2, ["KEY1"] = 2,
	["2"] = 3, ["KEY2"] = 3,
	["3"] = 4, ["KEY3"] = 4,
	["4"] = 5, ["KEY4"] = 5,
	["5"] = 6, ["KEY5"] = 6,
	["6"] = 7, ["KEY6"] = 7,
	["7"] = 8, ["KEY7"] = 8,
	["8"] = 9, ["KEY8"] = 9,
	["9"] = 10, ["KEY9"] = 10,
	["A"] = 11,
	["B"] = 12,
	["C"] = 13,
	["D"] = 14,
	["E"] = 15,
	["F"] = 16,
	["G"] = 17,
	["H"] = 18,
	["I"] = 19,
	["J"] = 20,
	["K"] = 21,
	["L"] = 22,
	["M"] = 23,
	["N"] = 24,
	["O"] = 25,
	["P"] = 26,
	["Q"] = 27,
	["R"] = 28,
	["S"] = 29,
	["T"] = 30,
	["U"] = 31,
	["V"] = 32,
	["W"] = 33,
	["X"] = 34,
	["Y"] = 35,
	["Z"] = 36,
	["KP_INS"] = 37,
	["PAD_0"] = 37,
	["KP_END"] = 38,
	["PAD_1"] = 38,
	["KP_DOWNARROW"] = 39,
	["PAD_2"] = 39,
	["KP_PGDN"] = 40,
	["PAD_3"] = 40,
	["KP_LEFTARROW"] = 41,
	["PAD_4"] = 41,
	["KP_5"] = 42,
	["PAD_5"] = 42,
	["KP_RIGHTARROW"] = 43,
	["PAD_6"] = 43,
	["KP_HOME"] = 44,
	["PAD_7"] = 44,
	["KP_UPARROW"] = 45,
	["PAD_8"] = 45,
	["KP_PGUP"] = 46,
	["PAD_9"] = 46,
	["PAD_DIVIDE"] = 47,
	["KP_SLASH"] = 47,
	["KP_MULTIPLY"] = 48,
	["PAD_MULTIPLY"] = 48,
	["KP_MINUS"] = 49,
	["PAD_MINUS"] = 49,
	["KP_PLUS"] = 50,
	["PAD_PLUS"] = 50,
	["KP_ENTER"] = 51,
	["PAD_ENTER"] = 51,
	["KP_DEL"] = 52,
	["PAD_DECIMAL"] = 52,
	["["] = 53,
	["LBRACKET"] = 53,
	["]"] = 54,
	["RBRACKET"] = 54,
	["SEMICOLON"] = 55,
	["'"] = 56,
	["APOSTROPHE"] = 56,
	["`"] = 57,
	["BACKQUOTE"] = 57,
	[","] = 58,
	["COMMA"] = 58,
	["."] = 59,
	["PERIOD"] = 59,
	["/"] = 60,
	["SLASH"] = 60,
	["\\"] = 61,
	["BACKSLASH"] = 61,
	["-"] = 62,
	["MINUS"] = 62,
	["="] = 63,
	["EQUAL"] = 63,
	["ENTER"] = 64,
	["SPACE"] = 65,
	["BACKSPACE"] = 66,
	["TAB"] = 67,
	["CAPSLOCK"] = 68,
	["NUMLOCK"] = 69,
	["ESCAPE"] = 70,
	["SCROLLLOCK"] = 71,
	["INS"] = 72,
	["INSERT"] = 72,
	["DEL"] = 73,
	["DELETE"] = 73,
	["HOME"] = 74,
	["END"] = 75,
	["PGUP"] = 76,
	["PAGEUP"] = 76,
	["PGDN"] = 77,
	["PAGEDOWN"] = 77,
	["PAUSE"] = 78,
	["BREAK"] = 78,
	["SHIFT"] = 79,
	["LSHIFT"] = 79,
	["RSHIFT"] = 80,
	["ALT"] = 81,
	["LALT"] = 81,
	["RALT"] = 82,
	["CTRL"] = 83,
	["LCONTROL"] = 83,
	["RCTRL"] = 84,
	["RCONTROL"] = 84,
	["LWIN"] = 85,
	["RWIN"] = 86,
	["APP"] = 87,
	["UPARROW"] = 88,
	["UP"] = 88,
	["LEFTARROW"] = 89,
	["LEFT"] = 89,
	["DOWNARROW"] = 90,
	["DOWN"] = 90,
	["RIGHTARROW"] = 91,
	["RIGHT"] = 91,
	["F1"] = 92,
	["F2"] = 93,
	["F3"] = 94,
	["F4"] = 95,
	["F5"] = 96,
	["F6"] = 97,
	["F7"] = 98,
	["F8"] = 99,
	["F9"] = 100,
	["F10"] = 101,
	["F11"] = 102,
	["F12"] = 103,
	["CAPSLOCKTOGGLE"] = 104,
	["NUMLOCKTOGGLE"] = 105,
	["SCROLLLOCKTOGGLE"] = 106,
	["LAST"] = 106,
	["COUNT"] = 106
}

--- ENUMs of mouse buttons for use with input library
-- @name builtins_library.MOUSE
-- @class table
-- @field MOUSE1
-- @field LEFT
-- @field MOUSE2
-- @field RIGHT
-- @field MOUSE3
-- @field MIDDLE
-- @field MOUSE4
-- @field 4
-- @field MOUSE5
-- @field 5
-- @field MWHEELUP
-- @field WHEEL_UP
-- @field MWHEELDOWN
-- @field WHEEL_DOWN
-- @field COUNT
-- @field FIRST
-- @field LAST
env.MOUSE = {
	["MOUSE1"] = 107,
	["LEFT"] = 107,
	["MOUSE2"] = 108,
	["RIGHT"] = 108,
	["MOUSE3"] = 109,
	["MIDDLE"] = 109,
	["MOUSE4"] = 110,
	["4"] = 110,
	["MOUSE5"] = 111,
	["5"] = 111,
	["MWHEELUP"] = 112,
	["WHEEL_UP"] = 112,
	["MWHEELDOWN"] = 113,
	["WHEEL_DOWN"] = 113,
	["COUNT"] = 7,
	["FIRST"] = 107,
	["LAST"] = 113
}

--- PATTACH enum for particle library
-- @name builtins_library.PATTACH
-- @class table
-- @field ABSORIGIN
-- @field ABSORIGIN_FOLLOW
-- @field CUSTOMORIGIN
-- @field POINT
-- @field POINT_FOLLOW
-- @field WORLDORIGIN
env.PATTACH = {
	["ABSORIGIN"] = PATTACH_ABSORIGIN,
	["ABSORIGIN_FOLLOW"] =  PATTACH_ABSORIGIN_FOLLOW,
	["CUSTOMORIGIN"] =  PATTACH_CUSTOMORIGIN,
	["POINT"] = PATTACH_POINT,
	["POINT_FOLLOW"] = PATTACH_POINT_FOLLOW,
	["WORLDORIGIN"] =  PATTACH_WORLDORIGIN,
}

--- ENUMs of ef for use with hologram:addEffects hologram:removeEffects entity:isEffectActive
-- @name builtins_library.EF
-- @class table
-- @field BONEMERGE
-- @field BONEMERGE_FASTCULL
-- @field BRIGHTLIGHT
-- @field DIMLIGHT
-- @field NOINTERP
-- @field NOSHADOW
-- @field NODRAW
-- @field NORECEIVESHADOW
-- @field ITEM_BLINK
-- @field PARENT_ANIMATES
-- @field FOLLOWBONE
env.EF = {
	BONEMERGE = EF_BONEMERGE,
	BONEMERGE_FASTCULL = EF_BONEMERGE_FASTCULL,
	BRIGHTLIGHT = EF_BRIGHTLIGHT,
	DIMLIGHT = EF_DIMLIGHT,
	NOINTERP = EF_NOINTERP,
	NOSHADOW = EF_NOSHADOW,
	NODRAW = EF_NODRAW,
	NORECEIVESHADOW = EF_NORECEIVESHADOW,
	ITEM_BLINK = EF_ITEM_BLINK,
	PARENT_ANIMATES = EF_PARENT_ANIMATES,
	FOLLOWBONE = EF_FOLLOWBONE
}

--- ENUMs of physics object flags
-- @name builtins_library.FVPHYSICS
-- @class table
-- @field CONSTRAINT_STATIC
-- @field DMG_DISSOLVE
-- @field DMG_SLICE
-- @field HEAVY_OBJECT
-- @field MULTIOBJECT_ENTITY
-- @field NO_IMPACT_DMG
-- @field NO_NPC_IMPACT_DMG
-- @field NO_PLAYER_PICKUP
-- @field NO_SELF_COLLISIONS
-- @field PART_OF_RAGDOLL
-- @field PENETRATING
-- @field PLAYER_HELD
-- @field WAS_THROWN
env.FVPHYSICS = {
	["CONSTRAINT_STATIC"] = FVPHYSICS_CONSTRAINT_STATIC,
	["DMG_DISSOLVE"] = FVPHYSICS_DMG_DISSOLVE,
	["DMG_SLICE"] = FVPHYSICS_DMG_SLICE,
	["HEAVY_OBJECT"] = FVPHYSICS_HEAVY_OBJECT,
	["MULTIOBJECT_ENTITY"] = FVPHYSICS_MULTIOBJECT_ENTITY,
	["NO_IMPACT_DMG"] = FVPHYSICS_NO_IMPACT_DMG,
	["NO_NPC_IMPACT_DMG"] = FVPHYSICS_NO_NPC_IMPACT_DMG,
	["NO_PLAYER_PICKUP"] = FVPHYSICS_NO_PLAYER_PICKUP,
	["NO_SELF_COLLISIONS"] = FVPHYSICS_NO_SELF_COLLISIONS,
	["PART_OF_RAGDOLL"] = FVPHYSICS_PART_OF_RAGDOLL,
	["PENETRATING"] = FVPHYSICS_PENETRATING,
	["PLAYER_HELD"] = FVPHYSICS_PLAYER_HELD,
	["WAS_THROWN"] = FVPHYSICS_WAS_THROWN,
}

--- ENUMs of entity move types
-- @name builtins_library.MOVETYPE
-- @class table
-- @field NONE
-- @field ISOMETRIC
-- @field WALK
-- @field STEP
-- @field FLY
-- @field FLYGRAVITY
-- @field VPHYSICS
-- @field PUSH
-- @field NOCLIP
-- @field LADDER
-- @field OBSERVER
-- @field CUSTOM
env.MOVETYPE = {
	NONE = MOVETYPE_NONE,
	ISOMETRIC = MOVETYPE_ISOMETRIC,
	WALK = MOVETYPE_WALK,
	STEP = MOVETYPE_STEP,
	FLY = MOVETYPE_FLY,
	FLYGRAVITY = MOVETYPE_FLYGRAVITY,
	VPHYSICS = MOVETYPE_VPHYSICS,
	PUSH = MOVETYPE_PUSH,
	NOCLIP = MOVETYPE_NOCLIP,
	LADDER = MOVETYPE_LADDER,
	OBSERVER = MOVETYPE_OBSERVER,
	CUSTOM = MOVETYPE_CUSTOM,
}

--- ENUMs used by Entity.setCustomPropForces (Entity.PhysicsSimulate internally)
-- @name builtins_library.SIM
-- @class table
-- @field NOTHING
-- @field LOCAL_ACCELERATION
-- @field LOCAL_FORCE
-- @field GLOBAL_ACCELERATION
-- @field GLOBAL_FORCE
env.SIM = {
	NOTHING = SIM_NOTHING,
	LOCAL_ACCELERATION = SIM_LOCAL_ACCELERATION,
	LOCAL_FORCE = SIM_LOCAL_FORCE,
	GLOBAL_ACCELERATION = SIM_GLOBAL_ACCELERATION,
	GLOBAL_FORCE = SIM_GLOBAL_FORCE,
}

--- ENUMs of in_keys for use with player:keyDown
-- @name builtins_library.IN_KEY
-- @class table
-- @field ALT1
-- @field ALT2
-- @field ATTACK
-- @field ATTACK2
-- @field BACK
-- @field DUCK
-- @field FORWARD
-- @field JUMP
-- @field LEFT
-- @field MOVELEFT
-- @field MOVERIGHT
-- @field RELOAD
-- @field RIGHT
-- @field SCORE
-- @field SPEED
-- @field USE
-- @field WALK
-- @field ZOOM
-- @field GRENADE1
-- @field GRENADE2
-- @field WEAPON1
-- @field WEAPON2
-- @field BULLRUSH
-- @field CANCEL
-- @field RUN
env.IN_KEY = {
	["ALT1"] = IN_ALT1,
	["ALT2"] = IN_ALT2,
	["ATTACK"] = IN_ATTACK,
	["ATTACK2"] = IN_ATTACK2,
	["BACK"] = IN_BACK,
	["DUCK"] = IN_DUCK,
	["FORWARD"] = IN_FORWARD,
	["JUMP"] = IN_JUMP,
	["LEFT"] = IN_LEFT,
	["MOVELEFT"] = IN_MOVELEFT,
	["MOVERIGHT"] = IN_MOVERIGHT,
	["RELOAD"] = IN_RELOAD,
	["RIGHT"] = IN_RIGHT,
	["SCORE"] = IN_SCORE,
	["SPEED"] = IN_SPEED,
	["USE"] = IN_USE,
	["WALK"] = IN_WALK,
	["ZOOM"] = IN_ZOOM,
	["GRENADE1"] = IN_GRENADE1,
	["GRENADE2"] = IN_GRENADE2,
	["WEAPON1"] = IN_WEAPON1,
	["WEAPON2"] = IN_WEAPON2,
	["BULLRUSH"] = IN_BULLRUSH,
	["CANCEL"] = IN_CANCEL,
	["RUN"] = IN_RUN,
}

--- ENUMs of gesture_slot for use with player:playGesture player:resetGesture
-- @name builtins_library.GESTURE_SLOT
-- @class table
-- @field ATTACK_AND_RELOAD
-- @field GRENADE
-- @field JUMP
-- @field SWIM
-- @field FLINCH
-- @field VCD
-- @field CUSTOM
env.GESTURE_SLOT = {
	["ATTACK_AND_RELOAD"] = GESTURE_SLOT_ATTACK_AND_RELOAD,
	["GRENADE"] = GESTURE_SLOT_GRENADE,
	["JUMP"] = GESTURE_SLOT_JUMP,
	["SWIM"] = GESTURE_SLOT_SWIM,
	["FLINCH"] = GESTURE_SLOT_FLINCH,
	["VCD"] = GESTURE_SLOT_VCD,
	["CUSTOM"] = GESTURE_SLOT_CUSTOM
}

--- ENUMs of collision groups for use with entity:setCollisionGroup
-- @name builtins_library.COLLISION_GROUP
-- @class table
-- @field NONE
-- @field DEBRIS
-- @field DEBRIS_TRIGGER
-- @field INTERACTIVE_DEBRIS
-- @field INTERACTIVE
-- @field PLAYER
-- @field BREAKABLE_GLASS
-- @field VEHICLE
-- @field PLAYER_MOVEMENT
-- @field NPC
-- @field IN_VEHICLE
-- @field WEAPON
-- @field VEHICLE_CLIP
-- @field PROJECTILE
-- @field DOOR_BLOCKER
-- @field PASSABLE_DOOR
-- @field DISSOLVING
-- @field PUSHAWAY
-- @field NPC_ACTOR
-- @field NPC_SCRIPTED
-- @field WORLD
env.COLLISION_GROUP = {
	["NONE"] = COLLISION_GROUP_NONE,
	["DEBRIS"] = COLLISION_GROUP_DEBRIS,
	["DEBRIS_TRIGGER"] = COLLISION_GROUP_DEBRIS_TRIGGER,
	["INTERACTIVE_DEBRIS"] = COLLISION_GROUP_INTERACTIVE_DEBRIS,
	["INTERACTIVE"] = COLLISION_GROUP_INTERACTIVE,
	["PLAYER"] = COLLISION_GROUP_PLAYER,
	["BREAKABLE_GLASS"] = COLLISION_GROUP_BREAKABLE_GLASS,
	["VEHICLE"] = COLLISION_GROUP_VEHICLE,
	["PLAYER_MOVEMENT"] = COLLISION_GROUP_PLAYER_MOVEMENT,
	["NPC"] = COLLISION_GROUP_NPC,
	["IN_VEHICLE"] = COLLISION_GROUP_IN_VEHICLE,
	["WEAPON"] = COLLISION_GROUP_WEAPON,
	["VEHICLE_CLIP"] = COLLISION_GROUP_VEHICLE_CLIP,
	["PROJECTILE"] = COLLISION_GROUP_PROJECTILE,
	["DOOR_BLOCKER"] = COLLISION_GROUP_DOOR_BLOCKER,
	["PASSABLE_DOOR"] = COLLISION_GROUP_PASSABLE_DOOR,
	["DISSOLVING"] = COLLISION_GROUP_DISSOLVING,
	["PUSHAWAY"] = COLLISION_GROUP_PUSHAWAY,
	["NPC_ACTOR"] = COLLISION_GROUP_NPC_ACTOR,
	["NPC_SCRIPTED"] = COLLISION_GROUP_NPC_SCRIPTED,
	["WORLD"] = COLLISION_GROUP_WORLD
}


--- ENUMs of solid for use with entity:getSolid
-- @name builtins_library.SOLID
-- @class table
-- @field NONE
-- @field BSP
-- @field BBOX
-- @field OBB
-- @field OBB_YAW
-- @field CUSTOM
-- @field VPHYSICS

env.SOLID = {
	["NONE"] = SOLID_NONE,
	["BSP"] = SOLID_BSP,
	["BBOX"] = SOLID_BBOX,
	["OBB"] = SOLID_OBB,
	["OBB_YAW"] = SOLID_OBB_YAW,
	["CUSTOM"] = SOLID_CUSTOM,
	["VPHYSICS"] = SOLID_VPHYSICS
}

--- ENUMs of solid flags for use with entity:getSolidFlags
-- @name builtins_library.FSOLID
-- @class table
-- @field CUSTOMRAYTEST
-- @field CUSTOMBOXTEST
-- @field NOT_SOLID
-- @field TRIGGER
-- @field NOT_STANDABLE
-- @field VOLUME_CONTENTS
-- @field FORCE_WORLD_ALIGNED
-- @field USE_TRIGGER_BOUNDS
-- @field ROOT_PARENT_ALIGNED
-- @field TRIGGER_TOUCH_DEBRIS
env.FSOLID = {
	["CUSTOMRAYTEST"] = FSOLID_CUSTOMRAYTEST,
	["CUSTOMBOXTEST"] = FSOLID_CUSTOMBOXTEST,
	["NOT_SOLID"] = FSOLID_NOT_SOLID,
	["TRIGGER"] = FSOLID_TRIGGER,
	["NOT_STANDABLE"] = FSOLID_NOT_STANDABLE,
	["VOLUME_CONTENTS"] = FSOLID_VOLUME_CONTENTS,
	["FORCE_WORLD_ALIGNED"] = FSOLID_FORCE_WORLD_ALIGNED,
	["USE_TRIGGER_BOUNDS"] = FSOLID_USE_TRIGGER_BOUNDS,
	["ROOT_PARENT_ALIGNED"] = FSOLID_ROOT_PARENT_ALIGNED,
	["TRIGGER_TOUCH_DEBRIS"] = FSOLID_TRIGGER_TOUCH_DEBRIS
}

--- ENUMs of mesh types. To be used with mesh.generate.
-- @name builtins_library.MATERIAL
-- @class table
-- @field LINES
-- @field LINE_LOOP
-- @field LINE_STRIP
-- @field POINTS
-- @field POLYGON
-- @field QUADS
-- @field TRIANGLES
-- @field TRIANGLE_STRIP
env.MATERIAL = {
	["POINTS"] = MATERIAL_POINTS or 0,
	["LINES"] = MATERIAL_LINES or 1,
	["TRIANGLES"] = MATERIAL_TRIANGLES or 2,
	["TRIANGLE_STRIP"] = MATERIAL_TRIANGLE_STRIP or 3,
	["LINE_STRIP"] = MATERIAL_LINE_STRIP or 4,
	["LINE_LOOP"] = MATERIAL_LINE_LOOP or 5,
	["POLYGON"] = MATERIAL_POLYGON or 6,
	["QUADS"] = MATERIAL_QUADS or 7
}

--- ENUMs of fog modes to use with render.setFogMode.
-- @name builtins_library.MATERIAL_FOG
-- @class table
-- @field NONE
-- @field LINEAR
-- @field LINEAR_BELOW_FOG_Z
env.MATERIAL_FOG = {
	["NONE"] = MATERIAL_FOG_NONE or 0,
	["LINEAR"] = MATERIAL_FOG_LINEAR or 1,
	["LINEAR_BELOW_FOG_Z"] = MATERIAL_FOG_LINEAR_BELOW_FOG_Z or 2
}

--- ENUMs used as trace masks in the trace library. These are simply combinations of the CONTENTS enums.
-- @name builtins_library.MASK
-- @class table
-- @field OPAQUE_AND_NPCS
-- @field SOLID
-- @field OPAQUE
-- @field PLAYERSOLID_BRUSHONLY
-- @field BLOCKLOS
-- @field SHOT_HULL
-- @field ALL
-- @field VISIBLE
-- @field NPCWORLDSTATIC
-- @field DEADSOLID
-- @field SPLITAREAPORTAL
-- @field CURRENT
-- @field BLOCKLOS_AND_NPCS
-- @field SHOT
-- @field NPCSOLID
-- @field SOLID_BRUSHONLY
-- @field VISIBLE_AND_NPCS
-- @field NPCSOLID_BRUSHONLY
-- @field SHOT_PORTAL
-- @field WATER
-- @field PLAYERSOLID
env.MASK = {
	["OPAQUE_AND_NPCS"] = MASK_OPAQUE_AND_NPCS,
	["SOLID"] = MASK_SOLID,
	["OPAQUE"] = MASK_OPAQUE,
	["PLAYERSOLID_BRUSHONLY"] = MASK_PLAYERSOLID_BRUSHONLY,
	["BLOCKLOS"] = MASK_BLOCKLOS,
	["SHOT_HULL"] = MASK_SHOT_HULL,
	["ALL"] = MASK_ALL,
	["VISIBLE"] = MASK_VISIBLE,
	["NPCWORLDSTATIC"] = MASK_NPCWORLDSTATIC,
	["DEADSOLID"] = MASK_DEADSOLID,
	["SPLITAREAPORTAL"] = MASK_SPLITAREAPORTAL,
	["CURRENT"] = MASK_CURRENT,
	["BLOCKLOS_AND_NPCS"] = MASK_BLOCKLOS_AND_NPCS,
	["SHOT"] = MASK_SHOT,
	["NPCSOLID"] = MASK_NPCSOLID,
	["SOLID_BRUSHONLY"] = MASK_SOLID_BRUSHONLY,
	["VISIBLE_AND_NPCS"] = MASK_VISIBLE_AND_NPCS,
	["NPCSOLID_BRUSHONLY"] = MASK_NPCSOLID_BRUSHONLY,
	["SHOT_PORTAL"] = MASK_SHOT_PORTAL,
	["WATER"] = MASK_WATER,
	["PLAYERSOLID"] = MASK_PLAYERSOLID
}

--- ENUMs used as masks in the trace library.
-- @name builtins_library.CONTENTS
-- @class table
-- @field CURRENT_270
-- @field DETAIL
-- @field IGNORE_NODRAW_OPAQUE
-- @field BLOCKLOS
-- @field GRATE
-- @field CURRENT_0
-- @field AREAPORTAL
-- @field DEBRIS
-- @field MONSTERCLIP
-- @field SLIME
-- @field WINDOW
-- @field LADDER
-- @field CURRENT_180
-- @field TRANSLUCENT
-- @field EMPTY
-- @field TEAM2
-- @field CURRENT_UP
-- @field TESTFOGVOLUME
-- @field TEAM1
-- @field AUX
-- @field CURRENT_DOWN
-- @field ORIGIN
-- @field TEAM3
-- @field MOVEABLE
-- @field PLAYERCLIP
-- @field SOLID
-- @field TEAM4
-- @field MONSTER
-- @field HITBOX
-- @field CURRENT_90
-- @field OPAQUE
-- @field WATER
env.CONTENTS = {
	["CURRENT_270"] = CONTENTS_CURRENT_270,
	["DETAIL"] = CONTENTS_DETAIL,
	["IGNORE_NODRAW_OPAQUE"] = CONTENTS_IGNORE_NODRAW_OPAQUE,
	["BLOCKLOS"] = CONTENTS_BLOCKLOS,
	["GRATE"] = CONTENTS_GRATE,
	["CURRENT_0"] = CONTENTS_CURRENT_0,
	["AREAPORTAL"] = CONTENTS_AREAPORTAL,
	["DEBRIS"] = CONTENTS_DEBRIS,
	["MONSTERCLIP"] = CONTENTS_MONSTERCLIP,
	["SLIME"] = CONTENTS_SLIME,
	["WINDOW"] = CONTENTS_WINDOW,
	["LADDER"] = CONTENTS_LADDER,
	["CURRENT_180"] = CONTENTS_CURRENT_180,
	["TRANSLUCENT"] = CONTENTS_TRANSLUCENT,
	["EMPTY"] = CONTENTS_EMPTY,
	["TEAM2"] = CONTENTS_TEAM2,
	["CURRENT_UP"] = CONTENTS_CURRENT_UP,
	["TESTFOGVOLUME"] = CONTENTS_TESTFOGVOLUME,
	["TEAM1"] = CONTENTS_TEAM1,
	["AUX"] = CONTENTS_AUX,
	["CURRENT_DOWN"] = CONTENTS_CURRENT_DOWN,
	["ORIGIN"] = CONTENTS_ORIGIN,
	["TEAM3"] = CONTENTS_TEAM3,
	["MOVEABLE"] = CONTENTS_MOVEABLE,
	["PLAYERCLIP"] = CONTENTS_PLAYERCLIP,
	["SOLID"] = CONTENTS_SOLID,
	["TEAM4"] = CONTENTS_TEAM4,
	["MONSTER"] = CONTENTS_MONSTER,
	["HITBOX"] = CONTENTS_HITBOX,
	["CURRENT_90"] = CONTENTS_CURRENT_90,
	["OPAQUE"] = CONTENTS_OPAQUE,
	["WATER"] = CONTENTS_WATER
}

--- ENUMs of stencil comparisons and operations
-- @name builtins_library.STENCIL
-- @class table
-- @field NEVER
-- @field LESS
-- @field EQUAL
-- @field LESSEQUAL
-- @field GREATER
-- @field NOTEQUAL
-- @field GREATEREQUAL
-- @field ALWAYS
-- @field KEEP
-- @field ZERO
-- @field REPLACE
-- @field INCRSAT
-- @field DECRSAT
-- @field INVERT
-- @field INCR
-- @field DECR
env.STENCIL = {
	["NEVER"] = STENCIL_NEVER or 1,
	["LESS"] = STENCIL_LESS or 2,
	["EQUAL"] = STENCIL_EQUAL or 3,
	["LESSEQUAL"] = STENCIL_LESSEQUAL or 4,
	["GREATER"] = STENCIL_GREATER or 5,
	["NOTEQUAL"] = STENCIL_NOTEQUAL or 6,
	["GREATEREQUAL"] = STENCIL_GREATEREQUAL or 7,
	["ALWAYS"] = STENCIL_ALWAYS or 8,
	["KEEP"] = STENCIL_KEEP or 1,
	["ZERO"] = STENCIL_ZERO or 2,
	["REPLACE"] = STENCIL_REPLACE or 3,
	["INCRSAT"] = STENCIL_INCRSAT or 4,
	["DECRSAT"] = STENCIL_DECRSAT or 5,
	["INVERT"] = STENCIL_INVERT or 6,
	["INCR"] = STENCIL_INCR or 7,
	["DECR"] = STENCIL_DECR or 8
}
	
--- ENUMs used by render.SetModelLighting
-- @name builtins_library.BOX
-- @class table
-- @field FRONT
-- @field BACK
-- @field RIGHT
-- @field LEFT
-- @field TOP
-- @field BOTTOM
env.BOX = {
	FRONT = 0,
	BACK = 1,
	RIGHT = 2,
	LEFT = 3,
	TOP = 4,
	BOTTOM = 5
}

--- ENUMs of texture filtering modes
-- @name builtins_library.TEXFILTER
-- @class table
-- @field NONE
-- @field POINT
-- @field LINEAR
-- @field ANISOTROPIC
env.TEXFILTER = {
	NONE = TEXFILTER.NONE,
	POINT = TEXFILTER.POINT,
	LINEAR = TEXFILTER.LINEAR,
	ANISOTROPIC = TEXFILTER.ANISOTROPIC
}

--- ENUMs of blend functions
-- @name builtins_library.BLEND
-- @class table
-- @field ZERO
-- @field ONE
-- @field DST_COLOR
-- @field ONE_MINUS_DST_COLOR
-- @field SRC_ALPHA
-- @field ONE_MINUS_SRC_ALPHA
-- @field DST_ALPHA
-- @field ONE_MINUS_DST_ALPHA
-- @field SRC_ALPHA_SATURATE
-- @field SRC_COLOR
-- @field ONE_MINUS_SRC_COLOR
env.BLEND = {
	ZERO = BLEND_ZERO,
	ONE = BLEND_ONE,
	DST_COLOR = BLEND_DST_COLOR,
	ONE_MINUS_DST_COLOR = BLEND_ONE_MINUS_DST_COLOR,
	SRC_ALPHA = BLEND_SRC_ALPHA,
	ONE_MINUS_SRC_ALPHA = BLEND_ONE_MINUS_SRC_ALPHA,
	DST_ALPHA = BLEND_DST_ALPHA,
	ONE_MINUS_DST_ALPHA = BLEND_ONE_MINUS_DST_ALPHA,
	SRC_ALPHA_SATURATE = BLEND_SRC_ALPHA_SATURATE,
	SRC_COLOR = BLEND_SRC_COLOR,
	ONE_MINUS_SRC_COLOR = BLEND_ONE_MINUS_SRC_COLOR
}

--- ENUMs of blend modes
-- @name builtins_library.BLENDFUNC
-- @class table
-- @field ADD
-- @field SUBTRACT
-- @field REVERSE_SUBTRACT
-- @field MIN
-- @field MAX
env.BLENDFUNC = {
	ADD = BLENDFUNC_ADD,
	SUBTRACT = BLENDFUNC_SUBTRACT,
	REVERSE_SUBTRACT = BLENDFUNC_REVERSE_SUBTRACT,
	MIN = BLENDFUNC_MIN,
	MAX = BLENDFUNC_MAX,
}

--- ENUMs of entity render modes to be used with Entity.setRenderMode
-- @name builtins_library.RENDERMODE
-- @class table
-- @field NORMAL
-- @field TRANSCOLOR
-- @field TRANSTEXTURE
-- @field GLOW
-- @field TRANSALPHA
-- @field TRANSADD
-- @field ENVIROMENTAL
-- @field TRANSADDFRAMEBLEND
-- @field TRANSALPHADD
-- @field WORLDGLOW
-- @field NONE
env.RENDERMODE = {
	NORMAL = RENDERMODE_NORMAL,
	TRANSCOLOR = RENDERMODE_TRANSCOLOR,
	TRANSTEXTURE = RENDERMODE_TRANSTEXTURE,
	GLOW = RENDERMODE_GLOW,
	TRANSALPHA = RENDERMODE_TRANSALPHA,
	TRANSADD = RENDERMODE_TRANSADD,
	ENVIROMENTAL = RENDERMODE_ENVIROMENTAL,
	TRANSADDFRAMEBLEND = RENDERMODE_TRANSADDFRAMEBLEND,
	TRANSALPHADD = RENDERMODE_TRANSALPHADD,
	WORLDGLOW = RENDERMODE_WORLDGLOW,
	NONE = RENDERMODE_NONE
}

--- ENUMs of entity renderfx to be used with Entity.setRenderFX
-- @name builtins_library.RENDERFX
-- @class table
-- @field NONE
-- @field PULSESLOW
-- @field PULSEFAST
-- @field PULSESLOWWIDE
-- @field PULSEFASTWIDE
-- @field FADESLOW
-- @field FADEFAST
-- @field SOLIDSLOW
-- @field SOLIDFAST
-- @field STROBESLOW
-- @field STROBEFAST
-- @field STROBEFASTER
-- @field FLICKERSLOW
-- @field FLICKERFAST
-- @field NODISSIPATION
-- @field DISTORT
-- @field HOLOGRAM
-- @field EXPLODE
-- @field GLOWSHELL
-- @field CLAMPMINSCALE
-- @field RAIN
-- @field SNOW
-- @field SPOTLIGHT
-- @field RAGDOLL
-- @field PULSEFASTWIDER
env.RENDERFX = {
	NONE = kRenderFxNone,
	PULSESLOW = kRenderFxPulseSlow,
	PULSEFAST = kRenderFxPulseFast,
	PULSESLOWWIDE = kRenderFxPulseSlowWide,
	PULSEFASTWIDE = kRenderFxPulseFastWide,
	FADESLOW = kRenderFxFadeSlow,
	FADEFAST = kRenderFxFadeFast,
	SOLIDSLOW = kRenderFxSolidSlow,
	SOLIDFAST = kRenderFxSolidFast,
	STROBESLOW = kRenderFxStrobeSlow,
	STROBEFAST = kRenderFxStrobeFast,
	STROBEFASTER = kRenderFxStrobeFaster,
	FLICKERSLOW = kRenderFxFlickerSlow,
	FLICKERFAST = kRenderFxFlickerFast,
	NODISSIPATION = kRenderFxNoDissipation,
	DISTORT = kRenderFxDistort,
	HOLOGRAM = kRenderFxHologram,
	EXPLODE = kRenderFxExplode,
	GLOWSHELL = kRenderFxGlowShell,
	CLAMPMINSCALE = kRenderFxClampMinScale,
	RAIN = kRenderFxEnvRain,
	SNOW = kRenderFxEnvSnow,
	SPOTLIGHT = kRenderFxSpotlight,
	RAGDOLL = kRenderFxRagdoll,
	PULSEFASTWIDER = kRenderFxPulseFastWider
}

--- ENUMs of entity rendergroups
-- @name builtins_library.RENDERGROUP
-- @class table
-- @field STATIC_HUGE
-- @field OPAQUE_HUGE
-- @field STATIC
-- @field OPAQUE
-- @field TRANSLUCENT
-- @field BOTH
-- @field VIEWMODEL
-- @field VIEWMODEL_TRANSLUCENT
-- @field OPAQUE_BRUSH
-- @field OTHER
env.RENDERGROUP = {
	STATIC_HUGE = RENDERGROUP_STATIC_HUGE,
	OPAQUE_HUGE = RENDERGROUP_OPAQUE_HUGE,
	STATIC = RENDERGROUP_STATIC,
	OPAQUE = RENDERGROUP_OPAQUE,
	TRANSLUCENT = RENDERGROUP_TRANSLUCENT,
	BOTH = RENDERGROUP_BOTH,
	VIEWMODEL = RENDERGROUP_VIEWMODEL,
	VIEWMODEL_TRANSLUCENT = RENDERGROUP_VIEWMODEL_TRANSLUCENT,
	OPAQUE_BRUSH = RENDERGROUP_OPAQUE_BRUSH,
	OTHER = RENDERGROUP_OTHER
}

--- VRmod library enums
-- @name vr_library.VR
-- @class table
-- @field BOOLEAN_PRIMARYFIRE
-- @field VECTOR1_PRIMARYFIRE
-- @field BOOLEAN_SECONDARYFIRE
-- @field BOOLEAN_CHANGEWEAPON
-- @field BOOLEAN_USE
-- @field BOOLEAN_SPAWNMENU
-- @field VECTOR2_WALKDIRECTION
-- @field BOOLEAN_WALK
-- @field BOOLEAN_FLASHLIGHT
-- @field BOOLEAN_TURNLEFT
-- @field BOOLEAN_TURNRIGHT
-- @field VECTOR2_SMOOTHTURN
-- @field BOOLEAN_CHAT
-- @field BOOLEAN_RELOAD
-- @field BOOLEAN_JUMP
-- @field BOOLEAN_LEFT_PICKUP
-- @field BOOLEAN_RIGHT_PICKUP
-- @field BOOLEAN_UNDO
-- @field BOOLEAN_SPRINT
-- @field VECTOR1_FORWARD
-- @field VECTOR1_REVERSE
-- @field BOOLEAN_TURBO
-- @field VECTOR2_STEER
-- @field BOOLEAN_HANDBRAKE
-- @field BOOLEAN_EXIT
-- @field BOOLEAN_TURRET
env.VR = {
	["BOOLEAN_PRIMARYFIRE"] = "boolean_primaryfire",
	["VECTOR1_PRIMARYFIRE"] = "vector1_primaryfire",
	["BOOLEAN_SECONDARYFIRE"] = "boolean_secondaryfire",
	["BOOLEAN_CHANGEWEAPON"] = "boolean_changeweapon",
	["BOOLEAN_USE"] = "boolean_use",
	["BOOLEAN_SPAWNMENU"] = "boolean_spawnmenu",
	["VECTOR2_WALKDIRECTION"] = "vector2_walkdirection",
	["BOOLEAN_WALK"] = "boolean_walk",
	["BOOLEAN_FLASHLIGHT"] = "boolean_flashlight",
	["BOOLEAN_TURNLEFT"] = "boolean_turnleft",
	["BOOLEAN_TURNRIGHT"] = "boolean_turnright",
	["VECTOR2_SMOOTHTURN"] = "vector2_smoothturn",
	["BOOLEAN_CHAT"] = "boolean_chat",
	["BOOLEAN_RELOAD"] = "boolean_reload",
	["BOOLEAN_JUMP"] = "boolean_jump",
	["BOOLEAN_LEFT_PICKUP"] = "boolean_left_pickup",
	["BOOLEAN_RIGHT_PICKUP"] = "boolean_right_pickup",
	["BOOLEAN_UNDO"] = "boolean_undo",
	["BOOLEAN_SPRINT"] = "boolean_sprint",
	["VECTOR1_FORWARD"] = "vector1_forward",
	["VECTOR1_REVERSE"] = "vector1_reverse",
	["BOOLEAN_TURBO"] = "boolean_turbo",
	["VECTOR2_STEER"] = "vector2_steer",
	["BOOLEAN_HANDBRAKE"] = "boolean_handbrake",
	["BOOLEAN_EXIT"] = "boolean_exit",
	["BOOLEAN_TURRET"] = "boolean_turret",
}

--- ENUMs describing surface material. Used in TraceResult
-- @name builtins_library.MAT
-- @class table
-- @field ANTLION
-- @field BLOODYFLESH
-- @field CONCRETE
-- @field DIRT
-- @field EGGSHELL
-- @field FLESH
-- @field GRATE
-- @field ALIENFLESH
-- @field CLIP
-- @field SNOW
-- @field PLASTIC
-- @field METAL
-- @field SAND
-- @field FOLIAGE
-- @field COMPUTER
-- @field SLOSH
-- @field TILE
-- @field GRASS
-- @field VENT
-- @field WOOD
-- @field DEFAULT
-- @field GLASS
-- @field WARPSHIELD
env.MAT = {
	ANTLION = MAT_ANTLION,
	BLOODYFLESH = MAT_BLOODYFLESH,
	CONCRETE = MAT_CONCRETE,
	DIRT = MAT_DIRT,
	EGGSHELL = MAT_EGGSHELL,
	FLESH = MAT_FLESH,
	GRATE = MAT_GRATE,
	ALIENFLESH = MAT_ALIENFLESH,
	CLIP = MAT_CLIP,
	SNOW = MAT_SNOW,
	PLASTIC = MAT_PLASTIC,
	METAL = MAT_METAL,
	SAND = MAT_SAND,
	FOLIAGE = MAT_FOLIAGE,
	COMPUTER = MAT_COMPUTER,
	SLOSH = MAT_SLOSH,
	TILE = MAT_TILE,
	GRASS = MAT_GRASS,
	VENT = MAT_VENT,
	WOOD = MAT_WOOD,
	DEFAULT = MAT_DEFAULT,
	GLASS = MAT_GLASS,
	WARPSHIELD = MAT_WARPSHIELD,
}

--- Player and NPC hitgroup ENUMs
-- @name builtins_library.HITGROUP
-- @class table
-- @field GENERIC
-- @field HEAD
-- @field CHEST
-- @field STOMACH
-- @field LEFTARM
-- @field RIGHTARM
-- @field LEFTLEG
-- @field RIGHTLEG
-- @field GEAR
env.HITGROUP = {
	GENERIC = HITGROUP_GENERIC,
	HEAD = HITGROUP_HEAD,
	CHEST = HITGROUP_CHEST,
	STOMACH = HITGROUP_STOMACH,
	LEFTARM = HITGROUP_LEFTARM,
	RIGHTARM = HITGROUP_RIGHTARM,
	LEFTLEG = HITGROUP_LEFTLEG,
	RIGHTLEG = HITGROUP_RIGHTLEG,
	GEAR = HITGROUP_GEAR,
}

--- file.asyncRead ENUMs
-- @name builtins_library.FSASYNC
-- @class table
-- @field ERR_NOT_MINE
-- @field ERR_RETRY_LATER
-- @field ERR_ALIGNMENT
-- @field ERR_FAILURE
-- @field ERR_READING
-- @field ERR_NOMEMORY
-- @field ERR_UNKNOWNID
-- @field ERR_FILEOPEN
-- @field OK
-- @field STATUS_PENDING
-- @field STATUS_INPROGRESS
-- @field STATUS_ABORTED
-- @field STATUS_UNSERVICED
env.FSASYNC = {
	ERR_NOT_MINE = FSASYNC_ERR_NOT_MINE,
	ERR_RETRY_LATER = FSASYNC_ERR_RETRY_LATER,
	ERR_ALIGNMENT = FSASYNC_ERR_ALIGNMENT,
	ERR_FAILURE = FSASYNC_ERR_FAILURE,
	ERR_READING = FSASYNC_ERR_READING,
	ERR_NOMEMORY = FSASYNC_ERR_NOMEMORY,
	ERR_UNKNOWNID = FSASYNC_ERR_UNKNOWNID,
	ERR_FILEOPEN = FSASYNC_ERR_FILEOPEN,
	OK = FSASYNC_OK,
	STATUS_PENDING = FSASYNC_STATUS_PENDING,
	STATUS_INPROGRESS = FSASYNC_STATUS_INPROGRESS,
	STATUS_ABORTED = FSASYNC_STATUS_ABORTED,
	STATUS_UNSERVICED = FSASYNC_STATUS_UNSERVICED
}

--- Midi Command ENUMS
-- @name midi_library.MIDI
-- @class table
-- @field NOTE_OFF
-- @field NOTE_ON
-- @field AFTERTOUCH
-- @field CONTINUOUS_CONTROLLER
-- @field PATCH_CHANGE
-- @field CHANNEL_PRESSURE
-- @field PITCH_BEND
env.MIDI = {
	NOTE_OFF = 0x80,
	NOTE_ON = 0x90,
	AFTERTOUCH = 0xA0,
	CONTINUOUS_CONTROLLER = 0xB0,
	PATCH_CHANGE = 0xC0,
	CHANNEL_PRESSURE = 0xD0,
	PITCH_BEND = 0xE0
}

--- NavArea direction ENUMs
-- @name navmesh_library.NAV_DIR
-- @class table
-- @field NORTH 0
-- @field SOUTH 1
-- @field EAST 2
-- @field WEST 3
env.NAV_DIR = {
	NORTH = 0,
	EAST = 1,
	SOUTH = 2,
	WEST = 3
}

--- ENUMs used by NavArea:getAttributes and NavArea:hasAttributes
-- @name navmesh_library.NAV_MESH
-- @class table
-- @field INVALID The nav area is invalid.
-- @field CROUCH Must crouch to use this node/area
-- @field JUMP Must jump to traverse this area (only used during generation)
-- @field PRECISE Do not adjust for obstacles, just move along area
-- @field NO_JUMP Inhibit discontinuity jumping
-- @field STOP Must stop when entering this area
-- @field RUN Must run to traverse this area
-- @field WALK Must walk to traverse this area
-- @field AVOID Avoid this area unless alternatives are too dangerous
-- @field TRANSIENT Area may become blocked, and should be periodically checked
-- @field DONT_HIDE Area should not be considered for hiding spot generation
-- @field STAND Bots hiding in this area should stand
-- @field NO_HOSTAGES Hostages shouldn't use this area
-- @field STAIRS This area represents stairs, do not attempt to climb or jump them - just walk up
-- @field NO_MERGE Don't merge this area with adjacent areas
-- @field OBSTACLE_TOP This nav area is the climb point on the tip of an obstacle
-- @field CLIFF This nav area is adjacent to a drop of at least CliffHeight
-- @field FUNC_COST Area has designer specified cost controlled by func_nav_cost entities
-- @field HAS_ELEVATOR Area is in an elevator's path
-- @field NAV_BLOCKER -2147483648
env.NAV_MESH = {
	INVALID = 0,
	CROUCH = 1,
	JUMP = 2,
	PRECISE = 4,
	NO_JUMP = 8,
	STOP = 16,
	RUN = 32,
	WALK = 64,
	AVOID = 128,
	TRANSIENT = 256,
	DONT_HIDE = 512,
	STAND = 1024,
	NO_HOSTAGES = 2048,
	STAIRS = 4096,
	NO_MERGE = 8192,
	OBSTACLE_TOP = 16384,
	CLIFF = 32768,
	FUNC_COST = 536870912,
	HAS_ELEVATOR = 1073741824,
	NAV_BLOCKER = -2147483648
}

--- ENUMs used by NavArea methods. These Enums correspond to each corner of a CNavArea
-- @name navmesh_library.NAV_CORNER
-- @class table
-- @field NORTH_WEST 0
-- @field NORTH_EAST 1
-- @field SOUTH_EAST 2
-- @field SOUTH_WEST 3
-- @field NUM_CORNERS Represents all corners, only applicable to certain functions, such as NavArea:placeOnGround.
env.NAV_CORNER = {
	NORTH_WEST = 0,
	NORTH_EAST = 1,
	SOUTH_EAST = 2,
	SOUTH_WEST = 3,
	NUM_CORNERS = 4
}

--- ENUMs used by NavArea:getParentHow.
-- @class table
-- @name navmesh_library.NAV_TRAVERSE_TYPE
-- @field GO_NORTH 0
-- @field GO_EAST 1
-- @field GO_SOUTH 2
-- @field GO_WEST 3
-- @field GO_LADDER_UP 4
-- @field GO_LADDER_DOWN 5
-- @field GO_JUMP 6
-- @field GO_ELEVATOR_UP 7
-- @field GO_ELEVATOR_DOWN 8
env.NAV_TRAVERSE_TYPE = {
	GO_NORTH = 0,
	GO_EAST = 1,
	GO_SOUTH = 2,
	GO_WEST = 3,
	GO_LADDER_UP = 4,
	GO_LADDER_DOWN = 5,
	GO_JUMP = 6,
	GO_ELEVATOR_UP = 7,
	GO_ELEVATOR_DOWN = 8
}

--- ENUMs used for anything that returns a damage type.
-- @name builtins_library.DAMAGE
-- @class table
-- @field GENERIC
-- @field CRUSH
-- @field BULLET
-- @field SLASH
-- @field BURN
-- @field VEHICLE
-- @field FALL
-- @field BLAST
-- @field CLUB
-- @field SHOCK
-- @field SONIC
-- @field ENERGYBEAM
-- @field PREVENTPHYSICSFORCE
-- @field NEVERGIB
-- @field ALWAYSGIB
-- @field DROWN
-- @field PARALYZE
-- @field NERVEGAS
-- @field POISON
-- @field RADIATION
-- @field DROWNRECOVER
-- @field ACID
-- @field SLOWBURN
-- @field REMOVENORAGDOLL
-- @field PHYSGUN
-- @field PLASMA
-- @field AIRBOAT
-- @field DISSOLVE
-- @field BLASTSURFACE
-- @field DIRECT
-- @field BUCKSHOT
-- @field SNIPER
-- @field MISSILEDEFENSE
env.DAMAGE = {
	["GENERIC"] = 0,
	["CRUSH"] = 1,
	["BULLET"] = 2,
	["SLASH"] = 4,
	["BURN"] = 8,
	["VEHICLE"] = 16,
	["FALL"] = 32,
	["BLAST"] = 64,
	["CLUB"] = 128,
	["SHOCK"] = 256,
	["SONIC"] = 512,
	["ENERGYBEAM"] = 1024,
	["PREVENTPHYSICSFORCE"] = 2048,
	["NEVERGIB"] = 4096,
	["ALWAYSGIB"] = 8192,
	["DROWN"] = 16384,
	["PARALYZE"] = 32768,
	["NERVEGAS"] = 65536,
	["POISON"] = 131072,
	["RADIATION"] = 262144,
	["DROWNRECOVER"] = 524288,
	["ACID"] = 1048576,
	["SLOWBURN"] = 2097152,
	["REMOVENORAGDOLL"] = 4194304,
	["PHYSGUN"] = 8388608,
	["PLASMA"] = 16777216,
	["AIRBOAT"] = 33554432,
	["DISSOLVE"] = 67108864,
	["BLASTSURFACE"] = 134217728,
	["DIRECT"] = 268435456,
	["BUCKSHOT"] = 536870912,
	["SNIPER"] = 1073741824,
	["MISSILEDEFENSE"] = 2147483648
}

--- ENUMs used by Bass:getState()
-- @name builtins_library.GMOD_CHANNEL
-- @class table
-- @field STOPPED 0
-- @field PLAYING 1
-- @field PAUSED 2
-- @field STALLED 3
env.GMOD_CHANNEL = {
	STOPPED = 0,
	PLAYING = 1,
	PAUSED = 2,
	STALLED = 3
}

end
