# Core API

The NOVA Core exposes its API through the global `Nova` object (server-side) and through exports (from any script).

## Global Objects

### `Nova` (Server-side only)

The main framework object, available in nova\_core's server scripts.

```lua
Nova.Functions    -- Server function library
Nova.DB           -- Database abstraction
Nova.Players      -- Connected players cache
```

### `Nova.Functions`

| Function                        | Description                      |
| ------------------------------- | -------------------------------- |
| `GetPlayer(source)`             | Get player object by server ID   |
| `GetPlayerByIdentifier(id)`     | Get player by license identifier |
| `GetPlayers()`                  | Get all online player objects    |
| `CreateCallback(name, handler)` | Register a server callback       |
| `Notify(source, msg, type)`     | Send notification to player      |

## Exports

### Server Exports

```lua
-- Get player object
local player = exports['nova_core']:GetPlayer(source)

-- Get config
local config = exports['nova_core']:GetConfig()

-- Get all players
local players = exports['nova_core']:GetPlayers()
```

### Client Exports

```lua
-- Trigger a server callback
exports['nova_core']:TriggerCallback(name, callback, ...)

-- Get local player data (cached)
local data = exports['nova_core']:GetPlayerData()

-- Get config
local config = exports['nova_core']:GetConfig()
```

## Localization

```lua
-- Inside nova_core (server/shared)
local text = _L('key')
local formatted = _L('key_with_args', arg1, arg2)

-- Register new locale entries
NovaLocale.RegisterLocale('pt', { ['key'] = 'Texto' })
NovaLocale.RegisterLocale('en', { ['key'] = 'Text' })

-- Change locale at runtime
NovaLocale.SetLocale('en')
```

## Initialization

```lua
-- Wait for framework to be ready
AddEventHandler('Nova:Ready', function()
    print('NOVA Framework is ready!')
end)
```
