Primitive types
Lua primitive types are always lowercase, matching the values returned by Lua’s built-intype() function.
| Notation | Description | Example value |
|---|---|---|
string | A Lua string | "hello" |
number | A Lua number | 42, 3.14 |
boolean | A Lua boolean | true, false |
Compound types
Compound types describe Lua tables and functions. The notation follows LuaLS conventions for arrays, dictionaries, records, and callable types.| Notation | Description | Example | Lua value |
|---|---|---|---|
T[] | An array-like table whose elements are of type T | string[] — an array of strings | {"foo", "bar"} |
{[K]: V} | A dictionary-like table with keys of type K and values of type V | {[string]: string} — a table mapping strings to strings | {["name"] = "binarly", ["team"] = "research"} |
{field: T, ...} | A record-like table with known, named fields | {var: string, result: number} | {var = "x", result = 32} |
fun(param: T, ...) | A function type with named, typed parameters | fun(project: ProjectHandle, context: FunctionContext) | function(project, context) ... end |
Custom types
VulHunt exposes several custom types as Luauserdata objects. These are always written in PascalCase (e.g., ProjectHandle, FunctionContext, AddressValue). When a custom type appears in an array or dictionary, the same compound rules apply:
| Notation | Meaning |
|---|---|
AddressValue | A single address value |
AddressValue[] | An array of address values |
{[string]: VariantTable} | A dictionary mapping strings to variant tables |
Combined notation
Parameters and return types may accept multiple forms, separated byor:
string, an AddressValue, or a CallsToQuery table.