-- autorun/laundering_init.lua
-- Bootstrap du système de blanchiment d'argent.
-- Ordre de chargement : sh_config → sh_api → sv_* → cl_*
-- Respecte les conventions : AddCSLuaFile pour sh_* et cl_* uniquement.
-- JAMAIS de AddCSLuaFile sur les sv_*.

-- ============================================================================
-- SERVEUR
-- ============================================================================

if SERVER then
    -- Shared (des deux côtés)
    AddCSLuaFile("laundering/sh_config.lua")
    AddCSLuaFile("laundering/sh_api.lua")

    -- Client uniquement
    AddCSLuaFile("laundering/cl_net.lua")
    AddCSLuaFile("laundering/cl_ui.lua")

    -- JAMAIS AddCSLuaFile("laundering/sv_*.lua")

    -- Chargement serveur dans l'ordre des dépendances
    include("laundering/sh_config.lua")   -- Config (doit être premier)
    include("laundering/sh_api.lua")      -- Namespace + Compute + tables internes

    include("laundering/sv_storage.lua")  -- SQLite CRUD (doit précéder sv_npc et sv_core)
    include("laundering/sv_npc.lua")      -- SpawnNPC + InitPostEntity
    include("laundering/sv_core.lua")     -- Execute / finishTransaction / cancelTransaction
    include("laundering/sv_net.lua")      -- util.AddNetworkString + net.Receive C→S
    include("laundering/sv_commands.lua") -- Concommands admin
    include("laundering/sv_hooks.lua")    -- PlayerDisconnected / PlayerDeath / ShutDown

    -- Initialisation du schéma SQLite
    Laundering.Storage.Init()

    print("[Laundering] Système de blanchiment chargé.")
end

-- ============================================================================
-- CLIENT
-- ============================================================================

if CLIENT then
    include("laundering/sh_config.lua")
    include("laundering/sh_api.lua")
    include("laundering/cl_net.lua")
    include("laundering/cl_ui.lua")
end
