---@diagnostic disable: lowercase-global
local EventService = require('event.service')
-- Loop in main func, usage wait only with os.clock
---@param cb fun(clock: number): boolean | nil
---@param pr number? Priority. Default: `0`
function onMainThread(cb, pr) EventService:add('onMainThread', cb, pr) end
---@param cb fun(): nil
---@param pr number? Priority. Default: `0`
function onTerminate(cb, pr) EventService:add('onTerminate', cb, pr) end
---@param cb fun(msg: integer, wparam: integer, lparam: number): boolean | nil
---@param pr number? Priority. Default: `0`
function onProcessMessage(cb, pr) EventService:add('onProcessMessage', cb, pr) end
-- ---@param cb fun(player_id: integer, hostname: string, settings: InitGame.Settings, vehicle_models: number[], vehicle_friendly_fire: boolean): { player_id: integer, hostname: string, settings: InitGame.Settings, vehicle_models: number[], vehicle_friendly_fire: boolean } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onInitGame(cb, pr) EventService:add('onInitGame', cb, pr) end
-- ---@param cb fun(): boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onSendSpawn(cb, pr) EventService:add('onSendSpawn', cb, pr) end
-- ---@param cb fun(): boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onDisconnect(cb, pr) EventService:add('onConnectionClosed', cb, pr) end
-- ---@param cb fun(color: number, text: string): { color: number, text: string } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onServerMessage(cb, pr) EventService:add('onServerMessage', cb, pr) end
-- ---@param cb fun(player_id: integer): { player_id: integer } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onPlayerQuit(cb, pr) EventService:add('onPlayerQuit', cb, pr) end
-- ---@param cb fun(state: boolean): { state: boolean } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onTogglePlayerSpectating(cb, pr) EventService:add('onTogglePlayerSpectating', cb, pr) end
-- ---@param cb fun(dialog_id: number, style: integer, title: string, button_1: string, button_2: string, text: string): { dialog_id: number, style: integer, title: string, button_1: string, button_2: string, text: string } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onShowDialog(cb, pr) EventService:add('onShowDialog', cb, pr) end
-- ---@param cb fun(player_id: integer, data: AimSyncData): boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onAimSync(cb, pr) EventService:add('onAimSync', cb, pr) end
-- ---@param cb fun(player_id: integer, data: PlayerSyncData): boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onPlayerSync(cb, pr) EventService:add('onPlayerSync', cb, pr) end
-- ---@param cb fun(controllable: boolean): { controllable: boolean } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onTogglePlayerControllable(cb, pr) EventService:add('onTogglePlayerControllable', cb, pr) end
-- ---@param cb fun(player_id: integer, anim_lib: string, anim_name: string, frame_delta: number, loop: boolean, lock_x: boolean, lock_y: boolean, freeze: boolean, time: number): { player_id: integer, anim_lib: string, anim_name: string, frame_delta: number, loop: boolean, lock_x: boolean, lock_y: boolean, freeze: boolean, time: number } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onApplyPlayerAnimation(cb, pr) EventService:add('onApplyPlayerAnimation', cb, pr) end
-- ---@param cb fun(player_id: integer): boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onClearPlayerAnimation(cb, pr) EventService:add('onClearPlayerAnimation', cb, pr) end
-- ---@param cb fun(weapon_id: integer): {weapon_id: integer} | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onSetPlayerArmedWeapon(cb, pr) EventService:add('onSetPlayerArmedWeapon', cb, pr) end
-- ---@param cb fun(player_id: integer, damage: integer, weapon: number, body_part: number, is_take: boolean): { player_id: integer, damage: integer, weapon: number, body_part: number, is_take: boolean } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onSendGiveDamage(cb, pr) EventService:add('onSendGiveDamage', cb, pr) end
-- ---@param cb fun(player_id: integer, damage: integer, weapon: number, body_part: number, is_take: boolean): { player_id: integer, damage: integer, weapon: number, body_part: number, is_take: boolean } | boolean | nil
-- ---@param pr number? Priority. Default: `0`
-- function onSendTakeDamage(cb, pr) EventService:add('onSendTakeDamage', cb, pr) end
---* CUSTOM * ---
-- ---@param cb fun(): nil
-- ---@param pr number? Priority. Default: `0`
-- function onFirstSpawn(cb, pr) EventService:add('onFirstSpawn', cb, pr) end