> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sure-developer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> What sure_lib provides and how its modules fit together

# Overview

sure\_lib is a focused Lua 5.4 helper library for FiveM resources that use `ox_lib` and `es_extended`. It is designed around lazy module loading: a consuming resource imports one shared loader, then requests the module it needs through `sure.getModule(moduleName)`.

<CardGroup cols={3}>
  <Card title="Shared" icon="share-2" href="./validator.mdx">
    `validator`, `listener`, `track`, and `config` run on both client and server.
  </Card>

  <Card title="Client" icon="user" href="./lui.mdx">
    `player`, `spawn`, `lui`, and client `cooldown` handle local runtime work.
  </Card>

  <Card title="Server" icon="server" href="./db.mdx">
    `db`, `esx`, and server `cooldown` apply authoritative gameplay changes.
  </Card>
</CardGroup>

## Module catalog

| Module      | Side              | Purpose                                                                                         |
| ----------- | ----------------- | ----------------------------------------------------------------------------------------------- |
| `validator` | Shared            | Runtime schema validation for objects, arrays, primitives, callbacks, ranges, and enums.        |
| `listener`  | Shared            | Local and network event listeners with validator-backed argument checks.                        |
| `track`     | Shared            | Small reactive state primitive with dependency-based effects.                                   |
| `config`    | Shared            | Cached Lua config loading with optional validator schemas.                                      |
| `player`    | Client            | Dynamic ESX player shortcuts, including inventory, accounts, loadout, ped, vehicle, and coords. |
| `spawn`     | Client            | Ped/object spawning, streaming on proximity, and scoped cleanup.                                |
| `lui`       | Client            | Lua-driven NUI rendering with builder and declarative node APIs.                                |
| `cooldown`  | Client and server | Synchronized position-keyed cooldown state with optional pause and reset behavior.              |
| `db`        | Server            | oxmysql-backed model helpers plus schema push/pull console commands.                            |
| `esx`       | Server            | Safe transaction helpers for items and account money.                                           |

<Tip>
  sure\_lib does not load every module eagerly. Side-specific modules return `nil` when requested from the wrong runtime, which helps keep client/server boundaries clear.
</Tip>

## Repository shape

<Tree>
  <Tree.File name="fxmanifest.lua" />

  <Tree.File name="init.lua" />

  <Tree.Folder name="shared" defaultOpen>
    <Tree.File name="init.lua" />

    <Tree.Folder name="modules" defaultOpen>
      <Tree.Folder name="validator" defaultOpen>
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="listener">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="track">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="config">
        <Tree.File name="index.lua" />
      </Tree.Folder>
    </Tree.Folder>
  </Tree.Folder>

  <Tree.Folder name="client" defaultOpen>
    <Tree.Folder name="modules">
      <Tree.Folder name="player">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="cooldown">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="spawn">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="lui">
        <Tree.File name="index.lua" />

        <Tree.File name="builder.lua" />

        <Tree.File name="blueprint.lua" />

        <Tree.File name="renderer.lua" />
      </Tree.Folder>
    </Tree.Folder>
  </Tree.Folder>

  <Tree.Folder name="server" defaultOpen>
    <Tree.Folder name="modules">
      <Tree.Folder name="esx">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="cooldown">
        <Tree.File name="index.lua" />
      </Tree.Folder>

      <Tree.Folder name="db">
        <Tree.File name="index.lua" />
      </Tree.Folder>
    </Tree.Folder>
  </Tree.Folder>

  <Tree.Folder name="web">
    <Tree.Folder name="lui">
      <Tree.File name="index.html" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

## How data moves

```mermaid theme={"dark"}
sequenceDiagram
  participant Resource as Your resource
  participant Loader as sure.getModule
  participant Module as sure_lib module
  participant Runtime as FiveM / ESX / ox_lib

  Resource->>Loader: request module by name
  Loader->>Module: require side-specific or shared path
  Resource->>Module: call API
  Module->>Runtime: use FiveM, ESX, or ox_lib primitives
  Runtime-->>Module: state, event, callback, or result
  Module-->>Resource: validated return value
```

<Check>
  Use sure\_lib when you want small runtime helpers without hiding the underlying FiveM and ESX concepts.
</Check>
