-- Generated 08/01/2026 21:50:17 UTC
---@meta

BUILTIN = {
    ---Pauses execution of the current script, please note this behavior is only seen when called from one of the game script files(ysc). In order to wait an asi script use "static void WAIT(DWORD time);" found in main.h
    ---@param ms integer
    WAIT = function(ms) end,

    ---Examples:\
    --- g_384A = SYSTEM::START_NEW_SCRIPT("cellphone_flashhand", 1424);\
    --- l_10D = SYSTEM::START_NEW_SCRIPT("taxiService", 1828);\
    --- SYSTEM::START_NEW_SCRIPT("AM_MP_YACHT", 5000);\
    --- SYSTEM::START_NEW_SCRIPT("emergencycall", 512);\
    --- SYSTEM::START_NEW_SCRIPT("emergencycall", 512); \
    --- SYSTEM::START_NEW_SCRIPT("FM_maintain_cloud_header_data", 1424);\
    --- SYSTEM::START_NEW_SCRIPT("FM_Mission_Controller", 31000);\
    --- SYSTEM::START_NEW_SCRIPT("tennis_family", 3650);\
    --- SYSTEM::START_NEW_SCRIPT("Celebrations", 3650);\
    ---\
    ---Decompiled examples of usage when starting a script:\
    --- \
    ---    SCRIPT::REQUEST_SCRIPT(a_0);\
    ---    if (SCRIPT::HAS_SCRIPT_LOADED(a_0)) {\
    ---        SYSTEM::START_NEW_SCRIPT(a_0, v_3);\
    ---        SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(a_0);\
    ---        return 1;\
    ---}\
    --- \
    ---or:\
    ---\
    ---    v_2 = "MrsPhilips2";\
    ---    SCRIPT::REQUEST_SCRIPT(v_2);\
    ---    while (!SCRIPT::HAS_SCRIPT_LOADED(v_2)) {\
    ---    SCRIPT::REQUEST_SCRIPT(v_2);\
    ---    SYSTEM::WAIT(0);\
    ---}\
    ---    sub_8792(36);\
    ---    SYSTEM::START_NEW_SCRIPT(v_2, 17000);\
    ---    SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(v_2);
    ---@param scriptName string
    ---@param stackSize integer
    ---@return integer
    START_NEW_SCRIPT = function(scriptName, stackSize) end,

    ---return : script thread id, 0 if failed\
    ---Pass pointer to struct of args in p1, size of struct goes into p2
    ---@param scriptName string
    ---@param args Any*
    ---@param argCount integer
    ---@param stackSize integer
    ---@return integer
    START_NEW_SCRIPT_WITH_ARGS = function(scriptName, args, argCount, stackSize) end,

    ---@param scriptHash Hash
    ---@param stackSize integer
    ---@return integer
    START_NEW_SCRIPT_WITH_NAME_HASH = function(scriptHash, stackSize) end,

    ---@param scriptHash Hash
    ---@param args Any*
    ---@param argCount integer
    ---@param stackSize integer
    ---@return integer
    START_NEW_SCRIPT_WITH_NAME_HASH_AND_ARGS = function(scriptHash, args, argCount, stackSize) end,

    ---Counts up. Every 1000 is 1 real-time second. Use SETTIMERA(int value) to set the timer (e.g.: SETTIMERA(0)).
    ---@return integer
    TIMERA = function() end,

    ---@return integer
    TIMERB = function() end,

    ---@param value integer
    SETTIMERA = function(value) end,

    ---@param value integer
    SETTIMERB = function(value) end,

    ---Gets the current frame time.
    ---@return number
    TIMESTEP = function() end,

    ---@param value number
    ---@return number
    SIN = function(value) end,

    ---@param value number
    ---@return number
    COS = function(value) end,

    ---@param value number
    ---@return number
    SQRT = function(value) end,

    ---@param base number
    ---@param exponent number
    ---@return number
    POW = function(base, exponent) end,

    ---@param value number
    ---@return number
    LOG10 = function(value) end,

    ---Calculates the magnitude of a vector.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return number
    VMAG = function(x, y, z) end,

    ---Calculates the magnitude of a vector but does not perform Sqrt operations. (Its way faster)
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return number
    VMAG2 = function(x, y, z) end,

    ---Calculates distance between vectors.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return number
    VDIST = function(x1, y1, z1, x2, y2, z2) end,

    ---Calculates distance between vectors but does not perform Sqrt operations. (Its way faster)
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return number
    VDIST2 = function(x1, y1, z1, x2, y2, z2) end,

    ---@param value integer
    ---@param bitShift integer
    ---@return integer
    SHIFT_LEFT = function(value, bitShift) end,

    ---@param value integer
    ---@param bitShift integer
    ---@return integer
    SHIFT_RIGHT = function(value, bitShift) end,

    ---@param value number
    ---@return integer
    FLOOR = function(value) end,

    ---I'm guessing this rounds a float value up to the next whole number, and FLOOR rounds it down
    ---@param value number
    ---@return integer
    CEIL = function(value) end,

    ---@param value number
    ---@return integer
    ROUND = function(value) end,

    ---@param value integer
    ---@return number
    TO_FLOAT = function(value) end,

    ---THREAD_PRIO_HIGHEST = 0\
    ---THREAD_PRIO_NORMAL = 1\
    ---THREAD_PRIO_LOWEST = 2\
    ---THREAD_PRIO_MANUAL_UPDATE = 100
    ---@param priority integer
    SET_THIS_THREAD_PRIORITY = function(priority) end
}

APP = {
    ---@return BOOL
    APP_DATA_VALID = function() end,

    ---@param property string
    ---@return integer
    APP_GET_INT = function(property) end,

    ---@param property string
    ---@return number
    APP_GET_FLOAT = function(property) end,

    ---@param property string
    ---@return string
    APP_GET_STRING = function(property) end,

    ---@param property string
    ---@param value integer
    APP_SET_INT = function(property, value) end,

    ---@param property string
    ---@param value number
    APP_SET_FLOAT = function(property, value) end,

    ---@param property string
    ---@param value string
    APP_SET_STRING = function(property, value) end,

    ---Called in the gamescripts like:\
    ---APP::APP_SET_APP("car");\
    ---APP::APP_SET_APP("dog");
    ---@param appName string
    APP_SET_APP = function(appName) end,

    ---@param blockName string
    APP_SET_BLOCK = function(blockName) end,

    APP_CLEAR_BLOCK = function() end,

    APP_CLOSE_APP = function() end,

    APP_CLOSE_BLOCK = function() end,

    ---@return BOOL
    APP_HAS_LINKED_SOCIAL_CLUB_ACCOUNT = function() end,

    ---@param appName string
    ---@return BOOL
    APP_HAS_SYNCED_DATA = function(appName) end,

    APP_SAVE_DATA = function() end,

    ---@return integer
    APP_GET_DELETED_FILE_STATUS = function() end,

    ---@param appName string
    ---@return BOOL
    APP_DELETE_APP_DATA = function(appName) end
}

AUDIO = {
    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/RFb4GTny\
    ---\
    ---AUDIO::PLAY_PED_RINGTONE("Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);\
    ---AUDIO::PLAY_PED_RINGTONE("Dial_and_Remote_Ring", PLAYER::PLAYER_PED_ID(), 1);\
    ---
    ---@param ringtoneName string
    ---@param ped Ped
    ---@param p2 BOOL
    PLAY_PED_RINGTONE = function(ringtoneName, ped, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RINGTONE_PLAYING = function(ped) end,

    ---@param ped Ped
    STOP_PED_RINGTONE = function(ped) end,

    ---@return BOOL
    IS_MOBILE_PHONE_CALL_ONGOING = function() end,

    ---@return BOOL
    IS_MOBILE_INTERFERENCE_ACTIVE = function() end,

    ---@return integer
    GET_CURRENT_TV_SHOW_PLAY_TIME = function() end,

    CREATE_NEW_SCRIPTED_CONVERSATION = function() end,

    ---NOTE: ones that are -1, 0 - 35 are determined by a function where it gets a TextLabel from a global then runs,\
    ---GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME and depending on what the result is it goes in check order of 0 - 9 then A - Z then z (lowercase). So it will then return 0 - 35 or -1 if it's 'z'. The func to handle that ^^ is func_67 in dialog_handler.c atleast in TU27 Xbox360 scripts.\
    ---\
    ---p0 is -1, 0 - 35\
    ---p1 is a char or string (whatever you wanna call it)\
    ---p2 is Global 10597 + i * 6. 'i' is a while(i < 70) loop\
    ---p3 is again -1, 0 - 35 \
    ---p4 is again -1, 0 - 35 \
    ---p5 is either 0 or 1 (bool ?)\
    ---p6 is either 0 or 1 (The func to determine this is bool)\
    ---p7 is either 0 or 1 (The func to determine this is bool)\
    ---p8 is either 0 or 1 (The func to determine this is bool)\
    ---p9 is 0 - 3 (Determined by func_60 in dialogue_handler.c)\
    ---p10 is either 0 or 1 (The func to determine this is bool)\
    ---p11 is either 0 or 1 (The func to determine this is bool)\
    ---p12 is unknown as in TU27 X360 scripts it only goes to p11.
    ---@param index integer
    ---@param p1 string
    ---@param p2 string
    ---@param p3 integer
    ---@param p4 integer
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 integer
    ---@param p10 BOOL
    ---@param p11 BOOL
    ---@param p12 BOOL
    ADD_LINE_TO_CONVERSATION = function(index, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) end,

    ---4 calls in the b617d scripts. The only one with p0 and p2 in clear text:\
    ---\
    ---AUDIO::ADD_PED_TO_CONVERSATION(5, l_AF, "DINAPOLI");\
    ---\
    ---=================================================\
    ---One of the 2 calls in dialogue_handler.c p0 is in a while-loop, and so is determined to also possibly be 0 - 15.
    ---@param index integer
    ---@param ped Ped
    ---@param p2 string
    ADD_PED_TO_CONVERSATION = function(index, ped, p2) end,

    ---@param p0 Any
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    SET_POSITION_FOR_NULL_CONV_PED = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param entity Entity
    SET_ENTITY_FOR_NULL_CONV_PED = function(p0, entity) end,

    ---This native controls where the game plays audio from. By default the microphone is positioned on the player.\
    ---When p0 is true the game will play audio from the 3 positions inputted.\
    ---It is recommended to set all 3 positions to the same value as mixing different positions doesn't seem to work well.\
    ---The scripts mostly use it with only one position such as in fbi3.c: \
    ---AUDIO::SET_MICROPHONE_POSITION(true, ENTITY::GET_ENTITY_COORDS(iLocal_3091, true), ENTITY::GET_ENTITY_COORDS(iLocal_3091, true), ENTITY::GET_ENTITY_COORDS(iLocal_3091, true));
    ---@param toggle BOOL
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    SET_MICROPHONE_POSITION = function(toggle, x1, y1, z1, x2, y2, z2, x3, y3, z3) end,

    ---@param p0 BOOL
    SET_CONVERSATION_AUDIO_CONTROLLED_BY_ANIM = function(p0) end,

    ---@param p0 BOOL
    SET_CONVERSATION_AUDIO_PLACEHOLDER = function(p0) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    START_SCRIPT_PHONE_CONVERSATION = function(p0, p1) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    PRELOAD_SCRIPT_PHONE_CONVERSATION = function(p0, p1) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    START_SCRIPT_CONVERSATION = function(p0, p1, p2, p3) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    PRELOAD_SCRIPT_CONVERSATION = function(p0, p1, p2, p3) end,

    START_PRELOADED_CONVERSATION = function() end,

    ---@return BOOL
    GET_IS_PRELOADED_CONVERSATION_READY = function() end,

    ---@return BOOL
    IS_SCRIPTED_CONVERSATION_ONGOING = function() end,

    ---@return BOOL
    IS_SCRIPTED_CONVERSATION_LOADED = function() end,

    ---@return integer
    GET_CURRENT_SCRIPTED_CONVERSATION_LINE = function() end,

    ---@param p0 BOOL
    PAUSE_SCRIPTED_CONVERSATION = function(p0) end,

    RESTART_SCRIPTED_CONVERSATION = function() end,

    ---@param p0 BOOL
    ---@return integer
    STOP_SCRIPTED_CONVERSATION = function(p0) end,

    SKIP_TO_NEXT_SCRIPTED_CONVERSATION_LINE = function() end,

    ---Example from carsteal3.c: AUDIO::INTERRUPT_CONVERSATION(PLAYER::PLAYER_PED_ID(), "CST4_CFAA", "FRANKLIN");\
    ---Voicelines can be found in GTAV\x64\audio\sfx in files starting with "SS_" which seems to mean scripted speech.
    ---@param ped Ped
    ---@param voiceline string
    ---@param speaker string
    INTERRUPT_CONVERSATION = function(ped, voiceline, speaker) end,

    ---One call found in the b617d scripts:\
    ---\
    ---AUDIO::INTERRUPT_CONVERSATION_AND_PAUSE(NETWORK::NET_TO_PED(l_3989._f26F[0/*1*/]), "CONV_INTERRUPT_QUIT_IT", "LESTER");
    ---@param ped Ped
    ---@param p1 string
    ---@param speaker string
    INTERRUPT_CONVERSATION_AND_PAUSE = function(ped, p1, speaker) end,

    ---@param p0 Any*
    ---@return integer
    GET_VARIATION_CHOSEN_FOR_SCRIPTED_LINE = function(p0) end,

    ---@param p0 BOOL
    SET_NO_DUCKING_FOR_CONVERSATION = function(p0) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 integer
    REGISTER_SCRIPT_WITH_AUDIO = function(p0) end,

    ---This native does absolutely nothing, just a nullsub
    UNREGISTER_SCRIPT_WITH_AUDIO = function() end,

    ---All occurrences and usages found in b617d: https://pastebin.com/NzZZ2Tmm\
    ---Full list of mission audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/missionAudioBankNames.json\
    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    REQUEST_MISSION_AUDIO_BANK = function(audioBank, p1, p2) end,

    ---All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/XZ1tmGEz\
    ---Full list of ambient audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientAudioBankNames.json\
    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    REQUEST_AMBIENT_AUDIO_BANK = function(audioBank, p1, p2) end,

    ---All occurrences and usages found in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/AkmDAVn6\
    ---Full list of script audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scriptAudioBankNames.json\
    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    REQUEST_SCRIPT_AUDIO_BANK = function(audioBank, p1, p2) end,

    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    HINT_MISSION_AUDIO_BANK = function(audioBank, p1, p2) end,

    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    HINT_AMBIENT_AUDIO_BANK = function(audioBank, p1, p2) end,

    ---p2 is always -1
    ---@param audioBank string
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    HINT_SCRIPT_AUDIO_BANK = function(audioBank, p1, p2) end,

    RELEASE_MISSION_AUDIO_BANK = function() end,

    RELEASE_AMBIENT_AUDIO_BANK = function() end,

    ---Full list of script audio bank names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scriptAudioBankNames.json
    ---@param audioBank string
    RELEASE_NAMED_SCRIPT_AUDIO_BANK = function(audioBank) end,

    RELEASE_SCRIPT_AUDIO_BANK = function() end,

    UNHINT_AMBIENT_AUDIO_BANK = function() end,

    UNHINT_SCRIPT_AUDIO_BANK = function() end,

    ---@param audioBank string
    UNHINT_NAMED_SCRIPT_AUDIO_BANK = function(audioBank) end,

    ---@return integer
    GET_SOUND_ID = function() end,

    ---@param soundId integer
    RELEASE_SOUND_ID = function(soundId) end,

    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/A8Ny8AHZ\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param soundId integer
    ---@param audioName string
    ---@param audioRef string
    ---@param p3 BOOL
    ---@param p4 Any
    ---@param p5 BOOL
    PLAY_SOUND = function(soundId, audioName, audioRef, p3, p4, p5) end,

    ---List: https://pastebin.com/DCeRiaLJ\
    ---\
    ---All occurrences as of Cayo Perico Heist DLC (b2189), sorted alphabetically and identical lines removed: https://git.io/JtLxM\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param soundId integer
    ---@param audioName string
    ---@param audioRef string
    ---@param p3 BOOL
    PLAY_SOUND_FRONTEND = function(soundId, audioName, audioRef, p3) end,

    ---Only call found in the b617d scripts:\
    ---\
    ---AUDIO::PLAY_DEFERRED_SOUND_FRONTEND("BACK", "HUD_FREEMODE_SOUNDSET");\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param soundName string
    ---@param soundsetName string
    PLAY_DEFERRED_SOUND_FRONTEND = function(soundName, soundsetName) end,

    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/f2A7vTj0 \
    ---No changes made in b678d.\
    ---\
    ---gtaforums.com/topic/795622-audio-for-mods\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param soundId integer
    ---@param audioName string
    ---@param entity Entity
    ---@param audioRef string
    ---@param isNetwork BOOL
    ---@param p5 Any
    PLAY_SOUND_FROM_ENTITY = function(soundId, audioName, entity, audioRef, isNetwork, p5) end,

    ---Only used with "formation_flying_blips_soundset" and "biker_formation_blips_soundset".\
    ---p1 is always the model of p2
    ---@param soundId integer
    ---@param model Hash
    ---@param entity Entity
    ---@param soundSetHash Hash
    ---@param p4 Any
    ---@param p5 Any
    PLAY_SOUND_FROM_ENTITY_HASH = function(soundId, model, entity, soundSetHash, p4, p5) end,

    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/eeFc5DiW\
    ---\
    ---gtaforums.com/topic/795622-audio-for-mods\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param soundId integer
    ---@param audioName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param audioRef string
    ---@param isNetwork BOOL
    ---@param range integer
    ---@param p8 BOOL
    PLAY_SOUND_FROM_COORD = function(soundId, audioName, x, y, z, audioRef, isNetwork, range, p8) end,

    ---@param soundId integer
    ---@param x number
    ---@param y number
    ---@param z number
    UPDATE_SOUND_COORD = function(soundId, x, y, z) end,

    ---@param soundId integer
    STOP_SOUND = function(soundId) end,

    ---Could this be used alongside either, \
    ---SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES or _SET_NETWORK_ID_SYNC_TO_PLAYER to make it so other players can hear the sound while online? It'd be a bit troll-fun to be able to play the Zancudo UFO creepy sounds globally.
    ---@param soundId integer
    ---@return integer
    GET_NETWORK_ID_FROM_SOUND_ID = function(soundId) end,

    ---@param netId integer
    ---@return integer
    GET_SOUND_ID_FROM_NETWORK_ID = function(netId) end,

    ---@param soundId integer
    ---@param variable string
    ---@param p2 number
    SET_VARIABLE_ON_SOUND = function(soundId, variable, p2) end,

    ---From the scripts, p0:\
    ---\
    ---"ArmWrestlingIntensity",\
    ---"INOUT",\
    ---"Monkey_Stream",\
    ---"ZoomLevel"
    ---@param variable string
    ---@param p1 number
    SET_VARIABLE_ON_STREAM = function(variable, p1) end,

    ---@param p0 string
    ---@param p1 BOOL
    OVERRIDE_UNDERWATER_STREAM = function(p0, p1) end,

    ---AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 1.0);\
    ---AUDIO::SET_VARIABLE_ON_UNDER_WATER_STREAM("inTunnel", 0.0);
    ---@param variableName string
    ---@param value number
    SET_VARIABLE_ON_UNDER_WATER_STREAM = function(variableName, value) end,

    ---@param soundId integer
    ---@return BOOL
    HAS_SOUND_FINISHED = function(soundId) end,

    ---Plays ambient speech. See also _0x444180DB.\
    ---\
    ---ped: The ped to play the ambient speech.\
    ---speechName: Name of the speech to play, eg. "GENERIC_HI".\
    ---speechParam: Can be one of the following:\
    ---SPEECH_PARAMS_STANDARD\
    ---SPEECH_PARAMS_ALLOW_REPEAT\
    ---SPEECH_PARAMS_BEAT\
    ---SPEECH_PARAMS_FORCE\
    ---SPEECH_PARAMS_FORCE_FRONTEND\
    ---SPEECH_PARAMS_FORCE_NO_REPEAT_FRONTEND\
    ---SPEECH_PARAMS_FORCE_NORMAL\
    ---SPEECH_PARAMS_FORCE_NORMAL_CLEAR\
    ---SPEECH_PARAMS_FORCE_NORMAL_CRITICAL\
    ---SPEECH_PARAMS_FORCE_SHOUTED\
    ---SPEECH_PARAMS_FORCE_SHOUTED_CLEAR\
    ---SPEECH_PARAMS_FORCE_SHOUTED_CRITICAL\
    ---SPEECH_PARAMS_FORCE_PRELOAD_ONLY\
    ---SPEECH_PARAMS_MEGAPHONE\
    ---SPEECH_PARAMS_HELI\
    ---SPEECH_PARAMS_FORCE_MEGAPHONE\
    ---SPEECH_PARAMS_FORCE_HELI\
    ---SPEECH_PARAMS_INTERRUPT\
    ---SPEECH_PARAMS_INTERRUPT_SHOUTED\
    ---SPEECH_PARAMS_INTERRUPT_SHOUTED_CLEAR\
    ---SPEECH_PARAMS_INTERRUPT_SHOUTED_CRITICAL\
    ---SPEECH_PARAMS_INTERRUPT_NO_FORCE\
    ---SPEECH_PARAMS_INTERRUPT_FRONTEND\
    ---SPEECH_PARAMS_INTERRUPT_NO_FORCE_FRONTEND\
    ---SPEECH_PARAMS_ADD_BLIP\
    ---SPEECH_PARAMS_ADD_BLIP_ALLOW_REPEAT\
    ---SPEECH_PARAMS_ADD_BLIP_FORCE\
    ---SPEECH_PARAMS_ADD_BLIP_SHOUTED\
    ---SPEECH_PARAMS_ADD_BLIP_SHOUTED_FORCE\
    ---SPEECH_PARAMS_ADD_BLIP_INTERRUPT\
    ---SPEECH_PARAMS_ADD_BLIP_INTERRUPT_FORCE\
    ---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED\
    ---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CLEAR\
    ---SPEECH_PARAMS_FORCE_PRELOAD_ONLY_SHOUTED_CRITICAL\
    ---SPEECH_PARAMS_SHOUTED\
    ---SPEECH_PARAMS_SHOUTED_CLEAR\
    ---SPEECH_PARAMS_SHOUTED_CRITICAL\
    ---\
    ---Note: A list of Name and Parameters can be found here https://pastebin.com/1GZS5dCL\
    ---\
    ---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json
    ---@param ped Ped
    ---@param speechName string
    ---@param speechParam string
    ---@param p3 Any
    PLAY_PED_AMBIENT_SPEECH_NATIVE = function(ped, speechName, speechParam, p3) end,

    ---Plays ambient speech. See also _0x5C57B85D.\
    ---\
    ---See PLAY_PED_AMBIENT_SPEECH_NATIVE for parameter specifications.\
    ---\
    ---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json
    ---@param ped Ped
    ---@param speechName string
    ---@param speechParam string
    ---@param p3 Any
    PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE = function(ped, speechName, speechParam, p3) end,

    ---This is the same as PLAY_PED_AMBIENT_SPEECH_NATIVE and PLAY_PED_AMBIENT_SPEECH_AND_CLONE_NATIVE but it will allow you to play a speech file from a specific voice file. It works on players and all peds, even animals.\
    ---\
    ---EX (C#):\
    ---GTA.Native.Function.Call(Hash.PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE, Game.Player.Character, "GENERIC_INSULT_HIGH", "s_m_y_sheriff_01_white_full_01", "SPEECH_PARAMS_FORCE_SHOUTED", 0);\
    ---\
    ---The first param is the ped you want to play it on, the second is the speech name, the third is the voice name, the fourth is the speech param, and the last param is usually always 0.\
    ---\
    ---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json
    ---@param ped Ped
    ---@param speechName string
    ---@param voiceName string
    ---@param speechParam string
    ---@param p4 BOOL
    PLAY_PED_AMBIENT_SPEECH_WITH_VOICE_NATIVE = function(ped, speechName, voiceName, speechParam, p4) end,

    ---Full list of speeches and voices names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/speeches.json
    ---@param speechName string
    ---@param voiceName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param speechParam string
    PLAY_AMBIENT_SPEECH_FROM_POSITION_NATIVE = function(speechName, voiceName, x, y, z, speechParam) end,

    ---This native enables the audio flag "TrevorRageIsOverridden" and sets the voice effect to `voiceEffect`
    ---@param voiceEffect string
    OVERRIDE_TREVOR_RAGE = function(voiceEffect) end,

    RESET_TREVOR_RAGE = function() end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PLAYER_ANGRY = function(ped, toggle) end,

    ---Needs another parameter [int p2]. The signature is PED::PLAY_PAIN(Ped ped, int painID, int p1, int p2);\
    ---\
    ---Last 2 parameters always seem to be 0.\
    ---\
    ---EX: Function.Call(Hash.PLAY_PAIN, TestPed, 6, 0, 0);\
    ---\
    ---Known Pain IDs\
    ---________________________\
    ---\
    ---1 - Doesn't seem to do anything. Does NOT crash the game like previously said. (Latest patch)\
    ---6 - Scream (Short)\
    ---7 - Scared Scream (Kinda Long)\
    ---8 - On Fire\
    ---
    ---@param ped Ped
    ---@param painID integer
    ---@param p1 integer
    ---@param p3 Any
    PLAY_PAIN = function(ped, painID, p1, p3) end,

    RELEASE_WEAPON_AUDIO = function() end,

    ---mode can be any of these: \
    ---SLOWMO_T1_TRAILER_SMASH\
    ---SLOWMO_T1_RAYFIRE_EXPLOSION\
    ---SLOWMO_PROLOGUE_VAULT\
    ---NIGEL_02_SLOWMO_SETTING\
    ---JSH_EXIT_TUNNEL_SLOWMO\
    ---SLOWMO_BIG_SCORE_JUMP\
    ---SLOWMO_FIB4_TRUCK_SMASH\
    ---SLOWMO_EXTREME_04\
    ---SLOW_MO_METH_HOUSE_RAYFIRE\
    ---BARRY_02_SLOWMO\
    ---BARRY_01_SLOWMO
    ---@param mode string
    ACTIVATE_AUDIO_SLOWMO_MODE = function(mode) end,

    ---see ACTIVATE_AUDIO_SLOWMO_MODE for modes
    ---@param mode string
    DEACTIVATE_AUDIO_SLOWMO_MODE = function(mode) end,

    ---Audio List\
    ---gtaforums.com/topic/795622-audio-for-mods/\
    ---\
    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/FTeAj4yZ
    ---@param ped Ped
    ---@param name string
    SET_AMBIENT_VOICE_NAME = function(ped, name) end,

    ---@param ped Ped
    ---@param hash Hash
    SET_AMBIENT_VOICE_NAME_HASH = function(ped, hash) end,

    ---@param ped Ped
    ---@return Hash
    GET_AMBIENT_VOICE_NAME_HASH = function(ped) end,

    ---Assigns some ambient voice to the ped.
    ---@param ped Ped
    SET_PED_VOICE_FULL = function(ped) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@param voiceGroup Hash
    SET_PED_RACE_AND_VOICE_GROUP = function(ped, p1, voiceGroup) end,

    ---From the scripts:\
    ---\
    ---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("PAIGE_PVG"));\
    ---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("TALINA_PVG"));\
    ---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_BLACK_PVG"));\
    ---AUDIO::SET_PED_VOICE_GROUP(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("FEMALE_LOST_WHITE_PVG"));
    ---@param ped Ped
    ---@param voiceGroupHash Hash
    SET_PED_VOICE_GROUP = function(ped, voiceGroupHash) end,

    ---Dat151RelType == 29
    ---@param ped Ped
    ---@param voiceGroupHash Hash
    SET_PED_VOICE_GROUP_FROM_RACE_TO_PVG = function(ped, voiceGroupHash) end,

    ---BOOL p1: 0 = Female; 1 = Male
    ---@param ped Ped
    ---@param p1 BOOL
    SET_PED_GENDER = function(ped, p1) end,

    ---@param ped Ped
    STOP_CURRENT_PLAYING_SPEECH = function(ped) end,

    ---@param ped Ped
    STOP_CURRENT_PLAYING_AMBIENT_SPEECH = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_AMBIENT_SPEECH_PLAYING = function(ped) end,

    ---@param p0 Ped
    ---@return BOOL
    IS_SCRIPTED_SPEECH_PLAYING = function(p0) end,

    ---@param ped Ped
    ---@return BOOL
    IS_ANY_SPEECH_PLAYING = function(ped) end,

    ---@return BOOL
    IS_ANY_POSITIONAL_SPEECH_PLAYING = function() end,

    ---Checks if the ped can play the speech or has the speech file, p2 is usually false.
    ---@param ped Ped
    ---@param speechName string
    ---@param p2 BOOL
    ---@return BOOL
    DOES_CONTEXT_EXIST_FOR_THIS_PED = function(ped, speechName, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_CURRENT_CONVERSATION = function(ped) end,

    ---Sets the ped drunk sounds.  Only works with PLAYER_PED_ID\
    ---\
    ---====================================================\
    ---\
    ---As mentioned above, this only sets the drunk sound to ped/player.\
    ---\
    ---To give the Ped a drunk effect with drunk walking animation try using SET_PED_MOVEMENT_CLIPSET\
    ---\
    ---Below is an example\
    ---\
    ---if (!Function.Call<bool>(Hash.HAS_ANIM_SET_LOADED, "move_m@drunk@verydrunk"))\
    ---                {\
    ---                    Function.Call(Hash.REQUEST_ANIM_SET, "move_m@drunk@verydrunk");\
    ---            }\
    ---                Function.Call(Hash.SET_PED_MOVEMENT_CLIPSET, Ped.Handle, "move_m@drunk@verydrunk", 0x3E800000);\
    ---\
    ---\
    ---\
    ---And to stop the effect use\
    ---RESET_PED_MOVEMENT_CLIPSET
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_IS_DRUNK = function(ped, toggle) end,

    ---Plays sounds from a ped with chop model. For example it used to play bark or sniff sounds. p1 is always 3 or 4294967295 in decompiled scripts. By a quick disassembling I can assume that this arg is unused.\
    ---This native is works only when you call it on the ped with right model (ac_chop only ?)\
    ---Speech Name can be: CHOP_SNIFF_SEQ CHOP_WHINE CHOP_LICKS_MOUTH CHOP_PANT bark GROWL SNARL BARK_SEQ
    ---@param pedHandle Ped
    ---@param p1 integer
    ---@param speechName string
    PLAY_ANIMAL_VOCALIZATION = function(pedHandle, p1, speechName) end,

    ---@param pedHandle Ped
    ---@return BOOL
    IS_ANIMAL_VOCALIZATION_PLAYING = function(pedHandle) end,

    ---mood can be 0 or 1 (it's not a boolean value!). Effects audio of the animal.
    ---@param animal Ped
    ---@param mood integer
    SET_ANIMAL_MOOD = function(animal, mood) end,

    ---@param pedHandle Ped
    ---@param audioEvent string
    PLAY_PED_AUDIO_EVENT_ANIM = function(pedHandle, audioEvent) end,

    ---@return BOOL
    IS_MOBILE_PHONE_RADIO_ACTIVE = function() end,

    ---@param state BOOL
    SET_MOBILE_PHONE_RADIO_STATE = function(state) end,

    ---Returns 255 (radio off index) if the function fails.
    ---@return integer
    GET_PLAYER_RADIO_STATION_INDEX = function() end,

    ---Returns active radio station name
    ---@return string
    GET_PLAYER_RADIO_STATION_NAME = function() end,

    ---Converts radio station index to string. Use HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION to get the user-readable text.
    ---@param radioStation integer
    ---@return string
    GET_RADIO_STATION_NAME = function(radioStation) end,

    ---@return integer
    GET_PLAYER_RADIO_STATION_GENRE = function() end,

    ---@return BOOL
    IS_RADIO_RETUNING = function() end,

    ---@return BOOL
    IS_RADIO_FADED_OUT = function() end,

    ---Tune Forward...
    SET_RADIO_RETUNE_UP = function() end,

    ---Tune Backwards...
    SET_RADIO_RETUNE_DOWN = function() end,

    ---List of radio stations that are in the wheel, in clockwise order, as of LS Tuners DLC: https://git.io/J8a3k\
    ---An older list including hidden radio stations: https://pastebin.com/Kj9t38KF
    ---@param stationName string
    SET_RADIO_TO_STATION_NAME = function(stationName) end,

    ---List of radio stations that are in the wheel, in clockwise order, as of LS Tuners DLC: https://git.io/J8a3k\
    ---An older list including hidden radio stations: https://pastebin.com/Kj9t38KF
    ---@param vehicle Vehicle
    ---@param radioStation string
    SET_VEH_RADIO_STATION = function(vehicle, radioStation) end,

    ---@param vehicle Vehicle
    SET_VEH_HAS_NORMAL_RADIO = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_RADIO_ON = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_VEH_FORCED_RADIO_THIS_FRAME = function(vehicle) end,

    ---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json
    ---@param emitterName string
    ---@param radioStation string
    ---@param p2 Any
    SET_EMITTER_RADIO_STATION = function(emitterName, radioStation, p2) end,

    ---Example:\
    ---AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_01_STAGE", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_02_MAIN_ROOM", false);    AUDIO::SET_STATIC_EMITTER_ENABLED((Any*)"LOS_SANTOS_VANILLA_UNICORN_03_BACK_ROOM", false);\
    ---\
    ---This turns off surrounding sounds not connected directly to peds.\
    ---\
    ---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json
    ---@param emitterName string
    ---@param toggle BOOL
    SET_STATIC_EMITTER_ENABLED = function(emitterName, toggle) end,

    ---Full list of static emitters by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/staticEmitters.json
    ---@param emitterName string
    ---@param entity Entity
    LINK_STATIC_EMITTER_TO_ENTITY = function(emitterName, entity) end,

    ---Sets radio station by index.
    ---@param radioStation integer
    SET_RADIO_TO_STATION_INDEX = function(radioStation) end,

    ---@param active BOOL
    SET_FRONTEND_RADIO_ACTIVE = function(active) end,

    ---"news" that play on the radio after you've done something in story mode(?)
    ---@param newsStory integer
    UNLOCK_MISSION_NEWS_STORY = function(newsStory) end,

    ---@param newsStory integer
    ---@return BOOL
    IS_MISSION_NEWS_STORY_UNLOCKED = function(newsStory) end,

    ---@return integer
    GET_AUDIBLE_MUSIC_TRACK_TEXT_ID = function() end,

    ---@param play BOOL
    PLAY_END_CREDITS_MUSIC = function(play) end,

    SKIP_RADIO_FORWARD = function() end,

    ---@param radioStation string
    FREEZE_RADIO_STATION = function(radioStation) end,

    ---@param radioStation string
    UNFREEZE_RADIO_STATION = function(radioStation) end,

    ---@param toggle BOOL
    SET_RADIO_AUTO_UNFREEZE = function(toggle) end,

    ---@param radioStation string
    SET_INITIAL_PLAYER_STATION = function(radioStation) end,

    ---@param toggle BOOL
    SET_USER_RADIO_CONTROL_ENABLED = function(toggle) end,

    ---Only found this one in the decompiled scripts:\
    ---\
    ---AUDIO::SET_RADIO_TRACK("RADIO_03_HIPHOP_NEW", "ARM1_RADIO_STARTS");\
    ---
    ---@param radioStation string
    ---@param radioTrack string
    SET_RADIO_TRACK = function(radioStation, radioTrack) end,

    ---@param radioStationName string
    ---@param mixName string
    ---@param p2 integer
    SET_RADIO_TRACK_WITH_START_OFFSET = function(radioStationName, mixName, p2) end,

    ---@param radioName string
    ---@param radioTrack string
    ---@param p2 string
    ---@param p3 string
    SET_NEXT_RADIO_TRACK = function(radioName, radioTrack, p2, p3) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_RADIO_LOUD = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    CAN_VEHICLE_RECEIVE_CB_RADIO = function(vehicle) end,

    ---@param toggle BOOL
    SET_MOBILE_RADIO_ENABLED_DURING_GAMEPLAY = function(toggle) end,

    ---@return BOOL
    DOES_PLAYER_VEH_HAVE_RADIO = function() end,

    ---@return BOOL
    IS_PLAYER_VEH_RADIO_ENABLE = function() end,

    ---can't seem to enable radio on cop cars etc
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_RADIO_ENABLED = function(vehicle, toggle) end,

    ---@param p0 Any
    SET_POSITIONED_PLAYER_VEHICLE_RADIO_EMITTER_ENABLED = function(p0) end,

    ---Examples:\
    ---\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_MICHAEL", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_KILL_TREVOR", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "END_CREDITS_SAVE_MICHAEL_TREVOR", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_06_COUNTRY", "MAGDEMO2_RADIO_DINGHY", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE", "SEA_RACE_RADIO_PLAYLIST", 1);\
    ---AUDIO::SET_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK", "OFF_ROAD_RADIO_ROCK_LIST", 1);
    ---@param radioStation string
    ---@param trackListName string
    ---@param p2 BOOL
    SET_CUSTOM_RADIO_TRACK_LIST = function(radioStation, trackListName, p2) end,

    ---3 calls in the b617d scripts, removed duplicate.\
    ---\
    ---AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_16_SILVERLAKE");\
    ---AUDIO::CLEAR_CUSTOM_RADIO_TRACK_LIST("RADIO_01_CLASS_ROCK");
    ---@param radioStation string
    CLEAR_CUSTOM_RADIO_TRACK_LIST = function(radioStation) end,

    ---@return integer
    GET_NUM_UNLOCKED_RADIO_STATIONS = function() end,

    ---@param stationNameHash Hash
    ---@return integer
    FIND_RADIO_STATION_INDEX = function(stationNameHash) end,

    ---6 calls in the b617d scripts, removed identical lines:\
    ---\
    ---AUDIO::SET_RADIO_STATION_MUSIC_ONLY("RADIO_01_CLASS_ROCK", 1);\
    ---AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 0);\
    ---AUDIO::SET_RADIO_STATION_MUSIC_ONLY(AUDIO::GET_RADIO_STATION_NAME(10), 1);
    ---@param radioStation string
    ---@param toggle BOOL
    SET_RADIO_STATION_MUSIC_ONLY = function(radioStation, toggle) end,

    ---@param fadeTime number
    SET_RADIO_FRONTEND_FADE_TIME = function(fadeTime) end,

    ---AUDIO::UNLOCK_RADIO_STATION_TRACK_LIST("RADIO_16_SILVERLAKE", "MIRRORPARK_LOCKED");
    ---@param radioStation string
    ---@param trackListName string
    UNLOCK_RADIO_STATION_TRACK_LIST = function(radioStation, trackListName) end,

    ---@param radioStation string
    ---@param trackListName string
    LOCK_RADIO_STATION_TRACK_LIST = function(radioStation, trackListName) end,

    ---Just a nullsub (i.e. does absolutely nothing) since build 1604.
    ---@param enableMixes BOOL
    UPDATE_UNLOCKABLE_DJ_RADIO_TRACKS = function(enableMixes) end,

    ---Disables the radio station (hides it from the radio wheel).
    ---@param radioStationName string
    ---@param toggle BOOL
    LOCK_RADIO_STATION = function(radioStationName, toggle) end,

    ---Doesn't have an effect in Story Mode.
    ---@param radioStation string
    ---@param toggle BOOL
    SET_RADIO_STATION_AS_FAVOURITE = function(radioStation, toggle) end,

    ---@param radioStation string
    ---@return BOOL
    IS_RADIO_STATION_FAVOURITED = function(radioStation) end,

    ---@param out1 number
    ---@param out2 number
    ---@param out3 integer
    ---@return BOOL
    ---@return number
    ---@return number
    ---@return integer
    GET_NEXT_AUDIBLE_BEAT = function(out1, out2, out3) end,

    ---Changes start time of a tracklist (milliseconds)\
    ---R* uses a random int: MISC::GET_RANDOM_INT_IN_RANGE(0, 13) * 60000)
    ---@param radioStation string
    ---@param trackListName string
    ---@param milliseconds integer
    FORCE_MUSIC_TRACK_LIST = function(radioStation, trackListName, milliseconds) end,

    ---@param radioStationName string
    ---@return integer
    GET_CURRENT_TRACK_PLAY_TIME = function(radioStationName) end,

    ---@param radioStationName string
    ---@return Hash
    GET_CURRENT_TRACK_SOUND_NAME = function(radioStationName) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_MISSILE_WARNING_ENABLED = function(vehicle, toggle) end,

    ---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json
    ---@param zoneName string
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_AMBIENT_ZONE_STATE = function(zoneName, p1, p2) end,

    ---This function also has a p2, unknown. Signature AUDIO::CLEAR_AMBIENT_ZONE_STATE(const char* zoneName, bool p1, Any p2);\
    ---\
    ---Still needs more research.\
    ---\
    ---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json
    ---@param zoneName string
    ---@param p1 BOOL
    CLEAR_AMBIENT_ZONE_STATE = function(zoneName, p1) end,

    ---@param ambientZone string
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_AMBIENT_ZONE_LIST_STATE = function(ambientZone, p1, p2) end,

    ---@param ambientZone string
    ---@param p1 BOOL
    CLEAR_AMBIENT_ZONE_LIST_STATE = function(ambientZone, p1) end,

    ---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json
    ---@param ambientZone string
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_AMBIENT_ZONE_STATE_PERSISTENT = function(ambientZone, p1, p2) end,

    ---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json
    ---@param ambientZone string
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_AMBIENT_ZONE_LIST_STATE_PERSISTENT = function(ambientZone, p1, p2) end,

    ---Full list of ambient zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ambientZones.json
    ---@param ambientZone string
    ---@return BOOL
    IS_AMBIENT_ZONE_ENABLED = function(ambientZone) end,

    REFRESH_CLOSEST_OCEAN_SHORELINE = function() end,

    ---All occurrences found in b617d, sorted alphabetically and identical lines removed: \
    ---\
    ---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_AK");\
    ---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_CUSTOM");\
    ---AUDIO::SET_CUTSCENE_AUDIO_OVERRIDE("_TOOTHLESS");\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param name string
    SET_CUTSCENE_AUDIO_OVERRIDE = function(name) end,

    ---@param variableName string
    ---@param value number
    SET_VARIABLE_ON_SYNCH_SCENE_AUDIO = function(variableName, value) end,

    ---Plays the given police radio message.\
    ---\
    ---All found occurrences in b617d, sorted alphabetically and identical lines removed: https://pastebin.com/GBnsQ5hr\
    ---Full list of police report names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/policeReportNames.json
    ---@param name string
    ---@param p1 number
    ---@return integer
    PLAY_POLICE_REPORT = function(name, p1) end,

    CANCEL_ALL_POLICE_REPORTS = function() end,

    ---Plays the siren sound of a vehicle which is otherwise activated when fastly double-pressing the horn key.\
    ---Only works on vehicles with a police siren.
    ---@param vehicle Vehicle
    BLIP_SIREN = function(vehicle) end,

    ---Overrides the vehicle's horn hash.\
    ---When changing this hash on a vehicle, it will not return the 'overwritten' hash. It will still always return the default horn hash (same as GET_VEHICLE_DEFAULT_HORN)\
    ---\
    ---vehicle - the vehicle whose horn should be overwritten
    ---@param vehicle Vehicle
    ---@param override BOOL
    ---@param hornHash integer
    OVERRIDE_VEH_HORN = function(vehicle, override, hornHash) end,

    ---Checks whether the horn of a vehicle is currently played.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_HORN_ACTIVE = function(vehicle) end,

    ---Makes pedestrians sound their horn longer, faster and more agressive when they use their horn.
    ---@param toggle BOOL
    SET_AGGRESSIVE_HORNS = function(toggle) end,

    ---Does nothing (it's a nullsub).
    ---@param p0 BOOL
    SET_RADIO_POSITION_AUDIO_MUTE = function(p0) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    SET_VEHICLE_CONVERSATIONS_PERSIST = function(p0, p1) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_VEHICLE_CONVERSATIONS_PERSIST_NEW = function(p0, p1, p2) end,

    ---@return BOOL
    IS_STREAM_PLAYING = function() end,

    ---@return integer
    GET_STREAM_PLAY_TIME = function() end,

    ---Example:\
    ---AUDIO::LOAD_STREAM("CAR_STEAL_1_PASSBY", "CAR_STEAL_1_SOUNDSET");\
    ---\
    ---All found occurrences in the b678d decompiled scripts: https://pastebin.com/3rma6w5w\
    ---\
    ---Stream names often ends with "_MASTER", "_SMALL" or "_STREAM". Also "_IN", "_OUT" and numbers.   \
    ---\
    ---soundSet is often set to 0 in the scripts. These are common to end the soundSets: "_SOUNDS", "_SOUNDSET" and numbers.\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param streamName string
    ---@param soundSet string
    ---@return BOOL
    LOAD_STREAM = function(streamName, soundSet) end,

    ---Example:\
    ---AUDIO::LOAD_STREAM_WITH_START_OFFSET("STASH_TOXIN_STREAM", 2400, "FBI_05_SOUNDS");\
    ---\
    ---Only called a few times in the scripts.\
    ---\
    ---Full list of audio / sound names by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/soundNames.json
    ---@param streamName string
    ---@param startOffset integer
    ---@param soundSet string
    ---@return BOOL
    LOAD_STREAM_WITH_START_OFFSET = function(streamName, startOffset, soundSet) end,

    ---@param ped Ped
    PLAY_STREAM_FROM_PED = function(ped) end,

    ---@param vehicle Vehicle
    PLAY_STREAM_FROM_VEHICLE = function(vehicle) end,

    ---Used with AUDIO::LOAD_STREAM\
    ---\
    ---Example from finale_heist2b.c4:\
    ---TASK::TASK_SYNCHRONIZED_SCENE(l_4C8[2/*14*/], l_4C8[2/*14*/]._f7, l_30A, "push_out_vault_l", 4.0, -1.5, 5, 713, 4.0, 0);\
    ---                    PED::SET_SYNCHRONIZED_SCENE_PHASE(l_4C8[2/*14*/]._f7, 0.0);\
    ---                    PED::FORCE_PED_AI_AND_ANIMATION_UPDATE(l_4C8[2/*14*/], 0, 0);\
    ---                    PED::SET_PED_COMBAT_ATTRIBUTES(l_4C8[2/*14*/], 38, 1);\
    ---                    PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(l_4C8[2/*14*/], 1);\
    ---                    if (AUDIO::LOAD_STREAM("Gold_Cart_Push_Anim_01", "BIG_SCORE_3B_SOUNDS")) {\
    ---                        AUDIO::PLAY_STREAM_FROM_OBJECT(l_36F[0/*1*/]);\
    ---                }
    ---@param object Object
    PLAY_STREAM_FROM_OBJECT = function(object) end,

    PLAY_STREAM_FRONTEND = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    PLAY_STREAM_FROM_POSITION = function(x, y, z) end,

    STOP_STREAM = function() end,

    ---@param ped Ped
    ---@param shaking BOOL
    STOP_PED_SPEAKING = function(ped, shaking) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    BLOCK_ALL_SPEECH_FROM_PED = function(ped, p1, p2) end,

    ---@param ped Ped
    ---@param p1 BOOL
    STOP_PED_SPEAKING_SYNCED = function(ped, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    DISABLE_PED_PAIN_AUDIO = function(ped, toggle) end,

    ---Common in the scripts:\
    ---AUDIO::IS_AMBIENT_SPEECH_DISABLED(PLAYER::PLAYER_PED_ID());
    ---@param ped Ped
    ---@return BOOL
    IS_AMBIENT_SPEECH_DISABLED = function(ped) end,

    ---@param p0 string
    ---@param p1 integer
    BLOCK_SPEECH_CONTEXT_GROUP = function(p0, p1) end,

    ---@param p0 string
    UNBLOCK_SPEECH_CONTEXT_GROUP = function(p0) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_SIREN_WITH_NO_DRIVER = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_SIREN_BYPASS_MP_DRIVER_CHECK = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    TRIGGER_SIREN_AUDIO = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_HORN_PERMANENTLY_ON = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_HORN_ENABLED = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 Any
    SET_AUDIO_VEHICLE_PRIORITY = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param time number
    SET_HORN_PERMANENTLY_ON_TIME = function(vehicle, time) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    USE_SIREN_AS_HORN = function(vehicle, toggle) end,

    ---This native sets the audio of the specified vehicle to the audioName (p1).\
    ---\
    ---Use the audioNameHash found in vehicles.meta\
    ---\
    ---Example:\
    ---_SET_VEHICLE_AUDIO(veh, "ADDER");\
    ---The selected vehicle will now have the audio of the Adder.
    ---@param vehicle Vehicle
    ---@param audioName string
    FORCE_USE_AUDIO_GAME_OBJECT = function(vehicle, audioName) end,

    ---@param vehicleModel Hash
    PRELOAD_VEHICLE_AUDIO_BANK = function(vehicleModel) end,

    ---@param vehicle Vehicle
    ---@param p1 string
    ---@param p2 string
    SET_VEHICLE_STARTUP_REV_SOUND = function(vehicle, p1, p2) end,

    ---@param vehicle Vehicle
    RESET_VEHICLE_STARTUP_REV_SOUND = function(vehicle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_VEHICLE_FORCE_REVERSE_WARNING = function(p0, p1) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_AUDIBLY_DAMAGED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param damageFactor number
    SET_VEHICLE_AUDIO_ENGINE_DAMAGE_FACTOR = function(vehicle, damageFactor) end,

    ---intensity: 0.0f - 1.0f, only used once with 1.0f in R* Scripts (nigel2)\
    ---Makes an engine rattling noise when you decelerate, you need to be going faster to hear lower values
    ---@param vehicle Vehicle
    ---@param intensity number
    SET_VEHICLE_AUDIO_BODY_DAMAGE_FACTOR = function(vehicle, intensity) end,

    ---Called together with SET_VEHICLE_TYRES_CAN_BURST
    ---@param vehicle Vehicle
    ---@param force BOOL
    _FORCE_VEHICLE_ENGINE_SYNTH = function(vehicle, force) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ENABLE_VEHICLE_FANBELT_DAMAGE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ENABLE_VEHICLE_EXHAUST_POPS = function(vehicle, toggle) end,

    ---SET_VEHICLE_BOOST_ACTIVE(vehicle, 1, 0);\
    ---SET_VEHICLE_BOOST_ACTIVE(vehicle, 0, 0); \
    ---\
    ---Will give a boost-soundeffect.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_BOOST_ACTIVE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_PLAYER_VEHICLE_ALARM_AUDIO_ACTIVE = function(vehicle, toggle) end,

    ---@param doorHash Hash
    ---@param toggle BOOL
    SET_SCRIPT_UPDATE_DOOR_AUDIO = function(doorHash, toggle) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    PLAY_VEHICLE_DOOR_OPEN_SOUND = function(vehicle, doorId) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    PLAY_VEHICLE_DOOR_CLOSE_SOUND = function(vehicle, doorId) end,

    ---Works for planes only.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ENABLE_STALL_WARNING_SOUNDS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param enable BOOL
    _ENABLE_DRAG_RACE_STATIONARY_WARNING_SOUNDS = function(vehicle, enable) end,

    ---Hardcoded to return 1
    ---@return BOOL
    IS_GAME_IN_CONTROL_OF_MUSIC = function() end,

    ---@param active BOOL
    SET_GPS_ACTIVE = function(active) end,

    ---Called 38 times in the scripts. There are 5 different audioNames used.\
    --- One unknown removed below.\
    ---\
    ---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("DEAD");\
    ---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("FRANKLIN_BIG_01");\
    ---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("GENERIC_FAILED");\
    ---AUDIO::PLAY_MISSION_COMPLETE_AUDIO("TREVOR_SMALL_01");
    ---@param audioName string
    PLAY_MISSION_COMPLETE_AUDIO = function(audioName) end,

    ---@return BOOL
    IS_MISSION_COMPLETE_PLAYING = function() end,

    ---@return BOOL
    IS_MISSION_COMPLETE_READY_FOR_UI = function() end,

    ---@param toggle BOOL
    BLOCK_DEATH_JINGLE = function(toggle) end,

    ---Used to prepare a scene where the surrounding sound is muted or a bit changed. This does not play any sound.\
    ---\
    ---List of all usable scene names found in b617d. Sorted alphabetically and identical names removed: https://pastebin.com/MtM9N9CC\
    ---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json
    ---@param scene string
    ---@return BOOL
    START_AUDIO_SCENE = function(scene) end,

    ---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json
    ---@param scene string
    STOP_AUDIO_SCENE = function(scene) end,

    STOP_AUDIO_SCENES = function() end,

    ---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json
    ---@param scene string
    ---@return BOOL
    IS_AUDIO_SCENE_ACTIVE = function(scene) end,

    ---Full list of audio scene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/audioSceneNames.json
    ---@param scene string
    ---@param variable string
    ---@param value number
    SET_AUDIO_SCENE_VARIABLE = function(scene, variable, value) end,

    ---@param time integer
    SET_AUDIO_SCRIPT_CLEANUP_TIME = function(time) end,

    ---All found occurrences in b678d:\
    ---https://pastebin.com/ceu67jz8
    ---@param entity Entity
    ---@param groupName string
    ---@param p2 number
    ADD_ENTITY_TO_AUDIO_MIX_GROUP = function(entity, groupName, p2) end,

    ---@param entity Entity
    ---@param p1 number
    REMOVE_ENTITY_FROM_AUDIO_MIX_GROUP = function(entity, p1) end,

    ---@return BOOL
    AUDIO_IS_MUSIC_PLAYING = function() end,

    ---This is an alias of AUDIO_IS_MUSIC_PLAYING.
    ---@return BOOL
    AUDIO_IS_SCRIPTED_MUSIC_PLAYING = function() end,

    ---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P\
    ---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json
    ---@param eventName string
    ---@return BOOL
    PREPARE_MUSIC_EVENT = function(eventName) end,

    ---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P\
    ---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json
    ---@param eventName string
    ---@return BOOL
    CANCEL_MUSIC_EVENT = function(eventName) end,

    ---List of all usable event names found in b617d used with this native. Sorted alphabetically and identical names removed: https://pastebin.com/RzDFmB1W\
    ---\
    ---All music event names found in the b617d scripts: https://pastebin.com/GnYt0R3P\
    ---Full list of music event names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/musicEventNames.json
    ---@param eventName string
    ---@return BOOL
    TRIGGER_MUSIC_EVENT = function(eventName) end,

    ---@return BOOL
    IS_MUSIC_ONESHOT_PLAYING = function() end,

    ---@return integer
    GET_MUSIC_PLAYTIME = function() end,

    ---@param p0 Any
    SET_GLOBAL_RADIO_SIGNAL_LEVEL = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    RECORD_BROKEN_GLASS = function(x, y, z, radius) end,

    CLEAR_ALL_BROKEN_GLASS = function() end,

    ---@param p0 BOOL
    ---@param p1 Any
    SCRIPT_OVERRIDES_WIND_ELEVATION = function(p0, p1) end,

    ---@param p0 number
    ---@param p1 number
    SET_PED_WALLA_DENSITY = function(p0, p1) end,

    ---@param p0 number
    ---@param p1 number
    SET_PED_INTERIOR_WALLA_DENSITY = function(p0, p1) end,

    FORCE_PED_PANIC_WALLA = function() end,

    ---Example:\
    ---\
    ---bool prepareAlarm = AUDIO::PREPARE_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");\
    ---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json
    ---@param alarmName string
    ---@return BOOL
    PREPARE_ALARM = function(alarmName) end,

    ---Example:\
    ---\
    ---This will start the alarm at Fort Zancudo.\
    ---\
    ---AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);\
    ---\
    ---First parameter (char) is the name of the alarm.\
    ---Second parameter (bool) is unknown, it does not seem to make a difference if this one is 0 or 1.\
    ---\
    -------------\
    ---\
    ---It DOES make a difference but it has to do with the duration or something I dunno yet\
    ---\
    -------------\
    ---\
    --- Found in the b617d scripts:\
    ---\
    --- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS", 0);\
    --- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER", 1);\
    --- AUDIO::START_ALARM("AGENCY_HEIST_FIB_TOWER_ALARMS_UPPER_B", 0);\
    --- AUDIO::START_ALARM("BIG_SCORE_HEIST_VAULT_ALARMS", a_0);\
    --- AUDIO::START_ALARM("FBI_01_MORGUE_ALARMS", 1);\
    --- AUDIO::START_ALARM("FIB_05_BIOTECH_LAB_ALARMS", 0);\
    --- AUDIO::START_ALARM("JEWEL_STORE_HEIST_ALARMS", 0);\
    --- AUDIO::START_ALARM("PALETO_BAY_SCORE_ALARM", 1);\
    --- AUDIO::START_ALARM("PALETO_BAY_SCORE_CHICKEN_FACTORY_ALARM", 0);\
    --- AUDIO::START_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);\
    --- AUDIO::START_ALARM("PORT_OF_LS_HEIST_SHIP_ALARMS", 0);\
    --- AUDIO::START_ALARM("PRISON_ALARMS", 0);\
    --- AUDIO::START_ALARM("PROLOGUE_VAULT_ALARMS", 0);\
    ---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json
    ---@param alarmName string
    ---@param p2 BOOL
    START_ALARM = function(alarmName, p2) end,

    ---Example:\
    ---\
    ---This will stop the alarm at Fort Zancudo.\
    ---\
    ---AUDIO::STOP_ALARM("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS", 1);\
    ---\
    ---First parameter (char) is the name of the alarm.\
    ---Second parameter (bool) has to be true (1) to have any effect.\
    ---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json
    ---@param alarmName string
    ---@param toggle BOOL
    STOP_ALARM = function(alarmName, toggle) end,

    ---@param stop BOOL
    STOP_ALL_ALARMS = function(stop) end,

    ---Example:\
    ---\
    ---bool playing = AUDIO::IS_ALARM_PLAYING("PORT_OF_LS_HEIST_FORT_ZANCUDO_ALARMS");\
    ---Full list of alarm names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/alarmSounds.json
    ---@param alarmName string
    ---@return BOOL
    IS_ALARM_PLAYING = function(alarmName) end,

    ---Returns hash of default vehicle horn\
    ---\
    ---Hash is stored in audVehicleAudioEntity
    ---@param vehicle Vehicle
    ---@return Hash
    GET_VEHICLE_DEFAULT_HORN = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return Hash
    GET_VEHICLE_DEFAULT_HORN_IGNORE_MODS = function(vehicle) end,

    ---@param ped Ped
    RESET_PED_AUDIO_FLAGS = function(ped) end,

    ---Enables/disables ped's "loud" footstep sound.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_FOOTSTEPS_EVENTS_ENABLED = function(ped, toggle) end,

    ---Enables/disables ped's "quiet" footstep sound.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CLOTH_EVENTS_ENABLED = function(ped, toggle) end,

    ---Sets audio flag "OverridePlayerGroundMaterial"
    ---@param hash Hash
    ---@param toggle BOOL
    OVERRIDE_PLAYER_GROUND_MATERIAL = function(hash, toggle) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param hash Hash
    USE_FOOTSTEP_SCRIPT_SWEETENERS = function(ped, p1, hash) end,

    ---Sets audio flag "OverrideMicrophoneSettings"
    ---@param hash Hash
    ---@param toggle BOOL
    OVERRIDE_MICROPHONE_SETTINGS = function(hash, toggle) end,

    FREEZE_MICROPHONE = function() end,

    ---If value is set to true, and ambient siren sound will be played.\
    ---Appears to enable/disable an audio flag.
    ---@param value BOOL
    DISTANT_COP_CAR_SIRENS = function(value) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_SIREN_CAN_BE_CONTROLLED_BY_AUDIO = function(vehicle, p1) end,

    ENABLE_STUNT_JUMP_AUDIO = function() end,

    ---Possible flag names:\
    ---"ActivateSwitchWheelAudio"\
    ---"AllowAmbientSpeechInSlowMo"\
    ---"AllowCutsceneOverScreenFade"\
    ---"AllowForceRadioAfterRetune"\
    ---"AllowPainAndAmbientSpeechToPlayDuringCutscene"\
    ---"AllowPlayerAIOnMission"\
    ---"AllowPoliceScannerWhenPlayerHasNoControl"\
    ---"AllowRadioDuringSwitch"\
    ---"AllowRadioOverScreenFade"\
    ---"AllowScoreAndRadio"\
    ---"AllowScriptedSpeechInSlowMo"\
    ---"AvoidMissionCompleteDelay"\
    ---"DisableAbortConversationForDeathAndInjury"\
    ---"DisableAbortConversationForRagdoll"\
    ---"DisableBarks"\
    ---"DisableFlightMusic"\
    ---"DisableReplayScriptStreamRecording"\
    ---"EnableHeadsetBeep"\
    ---"ForceConversationInterrupt"\
    ---"ForceSeamlessRadioSwitch"\
    ---"ForceSniperAudio"\
    ---"FrontendRadioDisabled"\
    ---"HoldMissionCompleteWhenPrepared"\
    ---"IsDirectorModeActive"\
    ---"IsPlayerOnMissionForSpeech"\
    ---"ListenerReverbDisabled"\
    ---"LoadMPData"\
    ---"MobileRadioInGame"\
    ---"OnlyAllowScriptTriggerPoliceScanner"\
    ---"PlayMenuMusic"\
    ---"PoliceScannerDisabled"\
    ---"ScriptedConvListenerMaySpeak"\
    ---"SpeechDucksScore"\
    ---"SuppressPlayerScubaBreathing"\
    ---"WantedMusicDisabled"\
    ---"WantedMusicOnMission"\
    ---\
    ----------------------------------\
    ---No added flag names between b393d and b573d, including b573d.\
    ---\
    ---#######################################################################\
    ---\
    ---"IsDirectorModeActive" is an audio flag which will allow you to play speech infinitely without any pauses like in Director Mode.\
    ---\
    --------------------------------------------------------------------------\
    ---\
    ---All flag IDs and hashes:\
    ---\
    ---ID: 00 | Hash: 0x0FED7A7F\
    ---ID: 01 | Hash: 0x20A7858F\
    ---ID: 02 | Hash: 0xA11C2259\
    ---ID: 03 | Hash: 0x08DE4700\
    ---ID: 04 | Hash: 0x989F652F\
    ---ID: 05 | Hash: 0x3C9E76BA\
    ---ID: 06 | Hash: 0xA805FEB0\
    ---ID: 07 | Hash: 0x4B94EA26\
    ---ID: 08 | Hash: 0x803ACD34\
    ---ID: 09 | Hash: 0x7C741226\
    ---ID: 10 | Hash: 0x31DB9EBD\
    ---ID: 11 | Hash: 0xDF386F18\
    ---ID: 12 | Hash: 0x669CED42\
    ---ID: 13 | Hash: 0x51F22743\
    ---ID: 14 | Hash: 0x2052B35C\
    ---ID: 15 | Hash: 0x071472DC\
    ---ID: 16 | Hash: 0xF9928BCC\
    ---ID: 17 | Hash: 0x7ADBDD48\
    ---ID: 18 | Hash: 0xA959BA1A\
    ---ID: 19 | Hash: 0xBBE89B60\
    ---ID: 20 | Hash: 0x87A08871\
    ---ID: 21 | Hash: 0xED1057CE\
    ---ID: 22 | Hash: 0x1584AD7A\
    ---ID: 23 | Hash: 0x8582CFCB\
    ---ID: 24 | Hash: 0x7E5E2FB0\
    ---ID: 25 | Hash: 0xAE4F72DB\
    ---ID: 26 | Hash: 0x5D16D1FA\
    ---ID: 27 | Hash: 0x06B2F4B8\
    ---ID: 28 | Hash: 0x5D4CDC96\
    ---ID: 29 | Hash: 0x8B5A48BA\
    ---ID: 30 | Hash: 0x98FBD539\
    ---ID: 31 | Hash: 0xD8CB0473\
    ---ID: 32 | Hash: 0x5CBB4874\
    ---ID: 33 | Hash: 0x2E9F93A9\
    ---ID: 34 | Hash: 0xD93BEA86\
    ---ID: 35 | Hash: 0x92109B7D\
    ---ID: 36 | Hash: 0xB7EC9E4D\
    ---ID: 37 | Hash: 0xCABDBB1D\
    ---ID: 38 | Hash: 0xB3FD4A52\
    ---ID: 39 | Hash: 0x370D94E5\
    ---ID: 40 | Hash: 0xA0F7938F\
    ---ID: 41 | Hash: 0xCBE1CE81\
    ---ID: 42 | Hash: 0xC27F1271\
    ---ID: 43 | Hash: 0x9E3258EB\
    ---ID: 44 | Hash: 0x551CDA5B\
    ---ID: 45 | Hash: 0xCB6D663C\
    ---ID: 46 | Hash: 0x7DACE87F\
    ---ID: 47 | Hash: 0xF9DE416F\
    ---ID: 48 | Hash: 0x882E6E9E\
    ---ID: 49 | Hash: 0x16B447E7\
    ---ID: 50 | Hash: 0xBD867739\
    ---ID: 51 | Hash: 0xA3A58604\
    ---ID: 52 | Hash: 0x7E046BBC\
    ---ID: 53 | Hash: 0xD95FDB98\
    ---ID: 54 | Hash: 0x5842C0ED\
    ---ID: 55 | Hash: 0x285FECC6\
    ---ID: 56 | Hash: 0x9351AC43\
    ---ID: 57 | Hash: 0x50032E75\
    ---ID: 58 | Hash: 0xAE6D0D59\
    ---ID: 59 | Hash: 0xD6351785\
    ---ID: 60 | Hash: 0xD25D71BC\
    ---ID: 61 | Hash: 0x1F7F6423\
    ---ID: 62 | Hash: 0xE24C3AA6\
    ---ID: 63 | Hash: 0xBFFDD2B7
    ---@param flagName string
    ---@param toggle BOOL
    SET_AUDIO_FLAG = function(flagName, toggle) end,

    ---p1 is always 0 in the scripts
    ---@param audioEvent string
    ---@param p1 Any
    ---@return BOOL
    PREPARE_SYNCHRONIZED_AUDIO_EVENT = function(audioEvent, p1) end,

    ---@param sceneID integer
    ---@param audioEvent string
    ---@return BOOL
    PREPARE_SYNCHRONIZED_AUDIO_EVENT_FOR_SCENE = function(sceneID, audioEvent) end,

    ---@param sceneID integer
    ---@return BOOL
    PLAY_SYNCHRONIZED_AUDIO_EVENT = function(sceneID) end,

    ---@param sceneID integer
    ---@return BOOL
    STOP_SYNCHRONIZED_AUDIO_EVENT = function(sceneID) end,

    ---@param audioEvent string
    ---@param x number
    ---@param y number
    ---@param z number
    INIT_SYNCH_SCENE_AUDIO_WITH_POSITION = function(audioEvent, x, y, z) end,

    ---@param audioEvent string
    ---@param entity Entity
    INIT_SYNCH_SCENE_AUDIO_WITH_ENTITY = function(audioEvent, entity) end,

    ---Needs to be called every frame.\
    ---Audio mode to apply this frame: https://alloc8or.re/gta5/doc/enums/audSpecialEffectMode.txt
    ---@param mode integer
    SET_AUDIO_SPECIAL_EFFECT_MODE = function(mode) end,

    ---Found in the b617d scripts, duplicates removed:  \
    ---\
    ---AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN", "V_CARSHOWROOM_PS_WINDOW_BROKEN");\
    ---\
    --- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_CIA_PS_WINDOW_UNBROKEN", "V_CIA_PS_WINDOW_BROKEN");\
    ---\
    --- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_DLC_HEIST_APARTMENT_DOOR_CLOSED", "V_DLC_HEIST_APARTMENT_DOOR_OPEN");\
    ---\
    --- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_FINALEBANK_PS_VAULT_INTACT", "V_FINALEBANK_PS_VAULT_BLOWN");\
    ---\
    --- AUDIO::SET_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW", "V_MICHAEL_PS_BATHROOM_WITHOUT_WINDOW");
    ---@param p0 string
    ---@param p1 string
    SET_PORTAL_SETTINGS_OVERRIDE = function(p0, p1) end,

    ---@param interiorNameHash Hash
    ---@param roomIndex integer
    ---@param doorIndex integer
    ---@param newPortalSettingsName string
    SET_INDIVIDUAL_PORTAL_SETTINGS_OVERRIDE = function(interiorNameHash, roomIndex, doorIndex, newPortalSettingsName) end,

    --- Found in the b617d scripts, duplicates removed: \
    ---\
    --- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_CARSHOWROOM_PS_WINDOW_UNBROKEN");\
    --- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_CIA_PS_WINDOW_UNBROKEN");\
    --- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_DLC_HEIST_APARTMENT_DOOR_CLOSED");\
    --- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_FINALEBANK_PS_VAULT_INTACT");\
    --- AUDIO::REMOVE_PORTAL_SETTINGS_OVERRIDE("V_MICHAEL_PS_BATHROOM_WITH_WINDOW");
    ---@param p0 string
    REMOVE_PORTAL_SETTINGS_OVERRIDE = function(p0) end,

    ---@param interiorNameHash Hash
    ---@param roomIndex integer
    ---@param doorIndex integer
    REMOVE_INDIVIDUAL_PORTAL_SETTINGS_OVERRIDE = function(interiorNameHash, roomIndex, doorIndex) end,

    STOP_SMOKE_GRENADE_EXPLOSION_SOUNDS = function() end,

    ---@return integer
    GET_MUSIC_VOL_SLIDER = function() end,

    ---@param ped Ped
    REQUEST_TENNIS_BANKS = function(ped) end,

    UNREQUEST_TENNIS_BANKS = function() end,

    ---@param p0 BOOL
    SET_SKIP_MINIGUN_SPIN_UP_AUDIO = function(p0) end,

    STOP_CUTSCENE_AUDIO = function() end,

    ---@return BOOL
    HAS_LOADED_MP_DATA_SET = function() end,

    ---@return BOOL
    HAS_LOADED_SP_DATA_SET = function() end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_HORN_SOUND_INDEX = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param value integer
    SET_VEHICLE_HORN_SOUND_INDEX = function(vehicle, value) end
}

BRAIN = {
    ---BRAIN::ADD_SCRIPT_TO_RANDOM_PED("pb_prostitute", ${s_f_y_hooker_01}, 100, 0);\
    ---\
    ---- Nacorpio\
    ---\
    --------\
    ---\
    ---Hardcoded to not work in Multiplayer.
    ---@param name string
    ---@param model Hash
    ---@param p2 number
    ---@param p3 number
    ADD_SCRIPT_TO_RANDOM_PED = function(name, model, p2, p3) end,

    ---Registers a script for any object with a specific model hash.\
    ---\
    ---BRAIN::REGISTER_OBJECT_SCRIPT_BRAIN("ob_telescope", ${prop_telescope_01}, 100, 4.0, -1, 9);\
    ---\
    ---- Nacorpio
    ---@param scriptName string
    ---@param modelHash Hash
    ---@param p2 integer
    ---@param activationRange number
    ---@param p4 integer
    ---@param p5 integer
    REGISTER_OBJECT_SCRIPT_BRAIN = function(scriptName, modelHash, p2, activationRange, p4, p5) end,

    ---@param object Object
    ---@return BOOL
    IS_OBJECT_WITHIN_BRAIN_ACTIVATION_RANGE = function(object) end,

    ---@param scriptName string
    ---@param activationRange number
    ---@param p2 integer
    REGISTER_WORLD_POINT_SCRIPT_BRAIN = function(scriptName, activationRange, p2) end,

    ---Gets whether the world point the calling script is registered to is within desired range of the player.
    ---@return BOOL
    IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE = function() end,

    ---@param brainSet integer
    ENABLE_SCRIPT_BRAIN_SET = function(brainSet) end,

    ---@param brainSet integer
    DISABLE_SCRIPT_BRAIN_SET = function(brainSet) end,

    REACTIVATE_ALL_WORLD_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE = function() end,

    REACTIVATE_ALL_OBJECT_BRAINS_THAT_ARE_WAITING_TILL_OUT_OF_RANGE = function() end,

    ---Possible values:\
    ---\
    ---act_cinema\
    ---am_mp_carwash_launch\
    ---am_mp_carwash_control\
    ---am_mp_property_ext\
    ---chop\
    ---fairgroundHub\
    ---launcher_BasejumpHeli\
    ---launcher_BasejumpPack\
    ---launcher_CarWash\
    ---launcher_golf\
    ---launcher_Hunting_Ambient\
    ---launcher_MrsPhilips\
    ---launcher_OffroadRacing\
    ---launcher_pilotschool\
    ---launcher_Racing\
    ---launcher_rampage\
    ---launcher_rampage\
    ---launcher_range\
    ---launcher_stunts\
    ---launcher_stunts\
    ---launcher_tennis\
    ---launcher_Tonya\
    ---launcher_Triathlon\
    ---launcher_Yoga\
    ---ob_mp_bed_low\
    ---ob_mp_bed_med
    ---@param scriptName string
    REACTIVATE_NAMED_WORLD_BRAINS_WAITING_TILL_OUT_OF_RANGE = function(scriptName) end,

    ---Looks like a cousin of above function _6D6840CEE8845831 as it was found among them. Must be similar\
    ---\
    ---Here are possible values of argument - \
    ---\
    ---"ob_tv"\
    ---"launcher_Darts"
    ---@param scriptName string
    REACTIVATE_NAMED_OBJECT_BRAINS_WAITING_TILL_OUT_OF_RANGE = function(scriptName) end
}

CAM = {
    ---ease - smooth transition between the camera's positions\
    ---easeTime - Time in milliseconds for the transition to happen\
    ---\
    ---If you have created a script (rendering) camera, and want to go back to the \
    ---character (gameplay) camera, call this native with render set to 0.\
    ---Setting ease to 1 will smooth the transition.
    ---@param render BOOL
    ---@param ease BOOL
    ---@param easeTime integer
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 Any
    RENDER_SCRIPT_CAMS = function(render, ease, easeTime, p3, p4, p5) end,

    ---This native makes the gameplay camera zoom into first person/third person with a special effect.
    ---@param render BOOL
    ---@param p1 number
    ---@param p2 integer
    ---@param p3 Any
    STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP = function(render, p1, p2, p3) end,

    ---"DEFAULT_SCRIPTED_CAMERA"\
    ---"DEFAULT_ANIMATED_CAMERA"\
    ---"DEFAULT_SPLINE_CAMERA"\
    ---"DEFAULT_SCRIPTED_FLY_CAMERA"\
    ---"TIMED_SPLINE_CAMERA"
    ---@param camName string
    ---@param p1 BOOL
    ---@return Cam
    CREATE_CAM = function(camName, p1) end,

    ---camName is always set to "DEFAULT_SCRIPTED_CAMERA" in Rockstar's scripts.\
    ---------------\
    ---Camera names found in the b617d scripts:\
    ---"DEFAULT_ANIMATED_CAMERA"\
    ---"DEFAULT_SCRIPTED_CAMERA"\
    ---"DEFAULT_SCRIPTED_FLY_CAMERA"\
    ---"DEFAULT_SPLINE_CAMERA"\
    ---------------\
    ---Side Note: It seems p8 is basically to represent what would be the bool p1 within CREATE_CAM native. As well as the p9 since it's always 2 in scripts seems to represent what would be the last param within SET_CAM_ROT native which normally would be 2.
    ---@param camName string
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param fov number
    ---@param p8 BOOL
    ---@param p9 integer
    ---@return Cam
    CREATE_CAM_WITH_PARAMS = function(camName, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9) end,

    ---@param camHash Hash
    ---@param p1 BOOL
    ---@return Cam
    CREATE_CAMERA = function(camHash, p1) end,

    ---p9 uses 2 by default
    ---@param camHash Hash
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param fov number
    ---@param p8 BOOL
    ---@param p9 Any
    ---@return Cam
    CREATE_CAMERA_WITH_PARAMS = function(camHash, posX, posY, posZ, rotX, rotY, rotZ, fov, p8, p9) end,

    ---BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.
    ---@param cam Cam
    ---@param bScriptHostCam BOOL
    DESTROY_CAM = function(cam, bScriptHostCam) end,

    ---BOOL param indicates whether the cam should be destroyed if it belongs to the calling script.
    ---@param bScriptHostCam BOOL
    DESTROY_ALL_CAMS = function(bScriptHostCam) end,

    ---Returns whether or not the passed camera handle exists.
    ---@param cam Cam
    ---@return BOOL
    DOES_CAM_EXIST = function(cam) end,

    ---Set camera as active/inactive.
    ---@param cam Cam
    ---@param active BOOL
    SET_CAM_ACTIVE = function(cam, active) end,

    ---Returns whether or not the passed camera handle is active.
    ---@param cam Cam
    ---@return BOOL
    IS_CAM_ACTIVE = function(cam) end,

    ---@param cam Cam
    ---@return BOOL
    IS_CAM_RENDERING = function(cam) end,

    ---@return Cam
    GET_RENDERING_CAM = function() end,

    ---@param cam Cam
    ---@return Vector3
    GET_CAM_COORD = function(cam) end,

    ---The last parameter, as in other "ROT" methods, is usually 2.
    ---@param cam Cam
    ---@param rotationOrder integer
    ---@return Vector3
    GET_CAM_ROT = function(cam, rotationOrder) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_FOV = function(cam) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_NEAR_CLIP = function(cam) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_FAR_CLIP = function(cam) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_NEAR_DOF = function(cam) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_FAR_DOF = function(cam) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_DOF_STRENGTH = function(cam) end,

    ---@param cam Cam
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param fieldOfView number
    ---@param p8 Any
    ---@param p9 integer
    ---@param p10 integer
    ---@param p11 integer
    SET_CAM_PARAMS = function(cam, posX, posY, posZ, rotX, rotY, rotZ, fieldOfView, p8, p9, p10, p11) end,

    ---Sets the position of the cam.
    ---@param cam Cam
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_CAM_COORD = function(cam, posX, posY, posZ) end,

    ---Sets the rotation of the cam.\
    ---Last parameter unknown.\
    ---\
    ---Last parameter seems to always be set to 2.
    ---@param cam Cam
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param rotationOrder integer
    SET_CAM_ROT = function(cam, rotX, rotY, rotZ, rotationOrder) end,

    ---Sets the field of view of the cam.\
    ------------------------------------------------\
    ---Min: 1.0f\
    ---Max: 130.0f
    ---@param cam Cam
    ---@param fieldOfView number
    SET_CAM_FOV = function(cam, fieldOfView) end,

    ---@param cam Cam
    ---@param nearClip number
    SET_CAM_NEAR_CLIP = function(cam, nearClip) end,

    ---@param cam Cam
    ---@param farClip number
    SET_CAM_FAR_CLIP = function(cam, farClip) end,

    ---@param cam Cam
    ---@param p1 number
    FORCE_CAM_FAR_CLIP = function(cam, p1) end,

    ---@param cam Cam
    ---@param strength number
    SET_CAM_MOTION_BLUR_STRENGTH = function(cam, strength) end,

    ---@param cam Cam
    ---@param nearDOF number
    SET_CAM_NEAR_DOF = function(cam, nearDOF) end,

    ---@param cam Cam
    ---@param farDOF number
    SET_CAM_FAR_DOF = function(cam, farDOF) end,

    ---@param cam Cam
    ---@param dofStrength number
    SET_CAM_DOF_STRENGTH = function(cam, dofStrength) end,

    ---@param cam Cam
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    SET_CAM_DOF_PLANES = function(cam, p1, p2, p3, p4) end,

    ---@param cam Cam
    ---@param toggle BOOL
    SET_CAM_USE_SHALLOW_DOF_MODE = function(cam, toggle) end,

    SET_USE_HI_DOF = function() end,

    ---Only used in R* Script fm_mission_controller_2020
    SET_USE_HI_DOF_ON_SYNCED_SCENE_THIS_UPDATE = function() end,

    ---@param camera Cam
    ---@param p1 number
    SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE = function(camera, p1) end,

    ---@param p0 Any
    ---@param p1 number
    SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL = function(p0, p1) end,

    ---This native has its name defined inside its codE\
    ---
    ---@param camera Cam
    ---@param p1 number
    SET_CAM_DOF_FNUMBER_OF_LENS = function(camera, p1) end,

    ---Native name labeled within its code
    ---@param camera Cam
    ---@param multiplier number
    SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER = function(camera, multiplier) end,

    ---This native has a name defined inside its code
    ---@param camera Cam
    ---@param p1 number
    SET_CAM_DOF_FOCUS_DISTANCE_BIAS = function(camera, p1) end,

    ---This native has a name defined inside its code
    ---@param camera Cam
    ---@param p1 number
    SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE = function(camera, p1) end,

    ---This native has a name defined inside its code
    ---@param camera Cam
    ---@param p1 number
    SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL = function(camera, p1) end,

    ---This native has a name defined inside its code
    ---@param camera Cam
    ---@param state BOOL
    SET_CAM_DOF_SHOULD_KEEP_LOOK_AT_TARGET_IN_FOCUS = function(camera, state) end,

    ---Last param determines if its relative to the Entity
    ---@param cam Cam
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param isRelative BOOL
    ATTACH_CAM_TO_ENTITY = function(cam, entity, xOffset, yOffset, zOffset, isRelative) end,

    ---@param cam Cam
    ---@param ped Ped
    ---@param boneIndex integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading BOOL
    ATTACH_CAM_TO_PED_BONE = function(cam, ped, boneIndex, x, y, z, heading) end,

    ---@param cam Cam
    ---@param ped Ped
    ---@param boneIndex integer
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 BOOL
    HARD_ATTACH_CAM_TO_PED_BONE = function(cam, ped, boneIndex, p3, p4, p5, p6, p7, p8, p9) end,

    ---Example from am_mp_drone script: \
    ---\
    ---CAM::HARD_ATTACH_CAM_TO_ENTITY(Local_190.f_169, NETWORK::NET_TO_OBJ(Local_190.f_159), 0f, 0f, 180f, Var0, 1);
    ---@param cam Cam
    ---@param entity Entity
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param isRelative BOOL
    HARD_ATTACH_CAM_TO_ENTITY = function(cam, entity, xRot, yRot, zRot, xOffset, yOffset, zOffset, isRelative) end,

    ---This native works with vehicles only. Bone indexes are usually given by this native GET_ENTITY_BONE_INDEX_BY_NAME.
    ---@param cam Cam
    ---@param vehicle Vehicle
    ---@param boneIndex integer
    ---@param relativeRotation BOOL
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param fixedDirection BOOL
    ATTACH_CAM_TO_VEHICLE_BONE = function(cam, vehicle, boneIndex, relativeRotation, rotX, rotY, rotZ, offsetX, offsetY, offsetZ, fixedDirection) end,

    ---@param cam Cam
    DETACH_CAM = function(cam) end,

    ---The native seems to only be called once.\
    ---\
    ---The native is used as so,\
    ---CAM::SET_CAM_INHERIT_ROLL_VEHICLE(l_544, getElem(2, &l_525, 4));\
    ---In the exile1 script.
    ---@param cam Cam
    ---@param p1 BOOL
    SET_CAM_INHERIT_ROLL_VEHICLE = function(cam, p1) end,

    ---@param cam Cam
    ---@param x number
    ---@param y number
    ---@param z number
    POINT_CAM_AT_COORD = function(cam, x, y, z) end,

    ---p5 always seems to be 1 i.e TRUE
    ---@param cam Cam
    ---@param entity Entity
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 BOOL
    POINT_CAM_AT_ENTITY = function(cam, entity, p2, p3, p4, p5) end,

    ---Parameters p0-p5 seems correct. The bool p6 is unknown, but through every X360 script it's always 1. Please correct p0-p5 if any prove to be wrong. 
    ---@param cam Cam
    ---@param ped Ped
    ---@param boneIndex integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p6 BOOL
    POINT_CAM_AT_PED_BONE = function(cam, ped, boneIndex, x, y, z, p6) end,

    ---@param cam Cam
    STOP_CAM_POINTING = function(cam) end,

    ---Allows you to aim and shoot at the direction the camera is facing.
    ---@param cam Cam
    ---@param toggle BOOL
    SET_CAM_AFFECTS_AIMING = function(cam, toggle) end,

    ---Rotates the radar to match the camera's Z rotation
    ---@param cam Cam
    ---@param toggle BOOL
    SET_CAM_CONTROLS_MINI_MAP_HEADING = function(cam, toggle) end,

    ---When set to true shadows appear more smooth but less detailed.\
    ---Set to false by default.
    ---@param cam Cam
    ---@param toggle BOOL
    SET_CAM_IS_INSIDE_VEHICLE = function(cam, toggle) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ALLOW_MOTION_BLUR_DECAY = function(p0, p1) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param camera Cam
    ---@param name string
    SET_CAM_DEBUG_NAME = function(camera, name) end,

    ---@return Cam
    GET_DEBUG_CAM = function() end,

    ---I filled p1-p6 (the floats) as they are as other natives with 6 floats in a row are similar and I see no other method. So if a test from anyone proves them wrong please correct.\
    ---\
    ---p7 (length) determines the length of the spline, affects camera path and duration of transition between previous node and this one\
    ---\
    ---p8 big values ~100 will slow down the camera movement before reaching this node\
    ---\
    ---p9 != 0 seems to override the rotation/pitch (bool?)
    ---@param camera Cam
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param length integer
    ---@param smoothingStyle integer
    ---@param rotationOrder integer
    ADD_CAM_SPLINE_NODE = function(camera, x, y, z, xRot, yRot, zRot, length, smoothingStyle, rotationOrder) end,

    ---p0 is the spline camera to which the node is being added.\
    ---p1 is the camera used to create the node.\
    ---p3 is always 3 in scripts. It might be smoothing style or rotation order.
    ---@param cam Cam
    ---@param cam2 Cam
    ---@param length integer
    ---@param p3 integer
    ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME = function(cam, cam2, length, p3) end,

    ---p0 is the spline camera to which the node is being added.\
    ---p1 is the camera used to create the node.\
    ---p3 is always 3 in scripts. It might be smoothing style or rotation order.
    ---@param cam Cam
    ---@param cam2 Cam
    ---@param length integer
    ---@param p3 integer
    ADD_CAM_SPLINE_NODE_USING_CAMERA = function(cam, cam2, length, p3) end,

    ---p2 is always 2 in scripts. It might be smoothing style or rotation order.
    ---@param cam Cam
    ---@param length integer
    ---@param p2 integer
    ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME = function(cam, length, p2) end,

    ---@param cam Cam
    ---@param p1 number
    SET_CAM_SPLINE_PHASE = function(cam, p1) end,

    ---Can use this with SET_CAM_SPLINE_PHASE to set the float it this native returns.\
    ---\
    ---(returns 1.0f when no nodes has been added, reached end of non existing spline)
    ---@param cam Cam
    ---@return number
    GET_CAM_SPLINE_PHASE = function(cam) end,

    ---I'm pretty sure the parameter is the camera as usual, but I am not certain so I'm going to leave it as is.
    ---@param cam Cam
    ---@return number
    GET_CAM_SPLINE_NODE_PHASE = function(cam) end,

    ---I named p1 as timeDuration as it is obvious. I'm assuming tho it is ran in ms(Milliseconds) as usual.
    ---@param cam Cam
    ---@param timeDuration integer
    SET_CAM_SPLINE_DURATION = function(cam, timeDuration) end,

    ---@param cam Cam
    ---@param smoothingStyle integer
    SET_CAM_SPLINE_SMOOTHING_STYLE = function(cam, smoothingStyle) end,

    ---@param cam Cam
    ---@return integer
    GET_CAM_SPLINE_NODE_INDEX = function(cam) end,

    ---@param cam Cam
    ---@param easingFunction integer
    ---@param p2 integer
    ---@param p3 number
    SET_CAM_SPLINE_NODE_EASE = function(cam, easingFunction, p2, p3) end,

    ---@param cam Cam
    ---@param p1 integer
    ---@param scale number
    SET_CAM_SPLINE_NODE_VELOCITY_SCALE = function(cam, p1, scale) end,

    ---@param cam Cam
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    OVERRIDE_CAM_SPLINE_VELOCITY = function(cam, p1, p2, p3) end,

    ---Max value for p1 is 15.
    ---@param cam Cam
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    OVERRIDE_CAM_SPLINE_MOTION_BLUR = function(cam, p1, p2, p3) end,

    ---@param cam Cam
    ---@param p1 integer
    ---@param flags integer
    SET_CAM_SPLINE_NODE_EXTRA_FLAGS = function(cam, p1, flags) end,

    ---@param cam Cam
    ---@return BOOL
    IS_CAM_SPLINE_PAUSED = function(cam) end,

    ---@param camera Cam
    ---@param camPosX number
    ---@param camPosY number
    ---@param camPosZ number
    ---@param camRotX number
    ---@param camRotY number
    ---@param camRotZ number
    ---@param fov number
    ---@param duration integer
    ---@param posCurveType integer
    ---@param rotCurveType integer
    ---@param rotOrder integer
    ---@param fovCurveType integer
    _INTERPOLATE_CAM_WITH_PARAMS = function(camera, camPosX, camPosY, camPosZ, camRotX, camRotY, camRotZ, fov, duration, posCurveType, rotCurveType, rotOrder, fovCurveType) end,

    ---@param camTo Cam
    ---@param camFrom Cam
    ---@param duration integer
    ---@param easeLocation integer
    ---@param easeRotation integer
    ---@param easeFov integer
    _ACTIVATE_CAM_WITH_INTERP_AND_FOV_CURVE = function(camTo, camFrom, duration, easeLocation, easeRotation, easeFov) end,

    ---Previous declaration void SET_CAM_ACTIVE_WITH_INTERP(Cam camTo, Cam camFrom, int duration, BOOL easeLocation, BOOL easeRotation) is completely wrong. The last two params are integers not BOOLs...\
    ---
    ---@param camTo Cam
    ---@param camFrom Cam
    ---@param duration integer
    ---@param easeLocation integer
    ---@param easeRotation integer
    SET_CAM_ACTIVE_WITH_INTERP = function(camTo, camFrom, duration, easeLocation, easeRotation) end,

    ---@param cam Cam
    ---@return BOOL
    IS_CAM_INTERPOLATING = function(cam) end,

    ---Possible shake types (updated b617d):\
    ---\
    ---DEATH_FAIL_IN_EFFECT_SHAKE\
    ---DRUNK_SHAKE\
    ---FAMILY5_DRUG_TRIP_SHAKE\
    ---HAND_SHAKE\
    ---JOLT_SHAKE\
    ---LARGE_EXPLOSION_SHAKE\
    ---MEDIUM_EXPLOSION_SHAKE\
    ---SMALL_EXPLOSION_SHAKE\
    ---ROAD_VIBRATION_SHAKE\
    ---SKY_DIVING_SHAKE\
    ---VIBRATE_SHAKE\
    ---\
    ---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json
    ---@param cam Cam
    ---@param type string
    ---@param amplitude number
    SHAKE_CAM = function(cam, type, amplitude) end,

    ---Example from michael2 script.\
    ---\
    ---CAM::ANIMATED_SHAKE_CAM(l_5069, "shake_cam_all@", "light", "", 1f);
    ---@param cam Cam
    ---@param p1 string
    ---@param p2 string
    ---@param p3 string
    ---@param amplitude number
    ANIMATED_SHAKE_CAM = function(cam, p1, p2, p3, amplitude) end,

    ---@param cam Cam
    ---@return BOOL
    IS_CAM_SHAKING = function(cam) end,

    ---@param cam Cam
    ---@param amplitude number
    SET_CAM_SHAKE_AMPLITUDE = function(cam, amplitude) end,

    ---@param cam Cam
    ---@param p1 BOOL
    STOP_CAM_SHAKING = function(cam, p1) end,

    ---CAM::SHAKE_SCRIPT_GLOBAL("HAND_SHAKE", 0.2);\
    ---\
    ---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json
    ---@param p0 string
    ---@param p1 number
    SHAKE_SCRIPT_GLOBAL = function(p0, p1) end,

    ---CAM::ANIMATED_SHAKE_SCRIPT_GLOBAL("SHAKE_CAM_medium", "medium", "", 0.5f);\
    ---\
    ---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json
    ---@param p0 string
    ---@param p1 string
    ---@param p2 string
    ---@param p3 number
    ANIMATED_SHAKE_SCRIPT_GLOBAL = function(p0, p1, p2, p3) end,

    ---In drunk_controller.c4, sub_309\
    ---if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {\
    ---    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);\
    ---}
    ---@return BOOL
    IS_SCRIPT_GLOBAL_SHAKING = function() end,

    ---In drunk_controller.c4, sub_309\
    ---if (CAM::IS_SCRIPT_GLOBAL_SHAKING()) {\
    ---    CAM::STOP_SCRIPT_GLOBAL_SHAKING(0);\
    ---}
    ---@param p0 BOOL
    STOP_SCRIPT_GLOBAL_SHAKING = function(p0) end,

    ---p1: 0..16
    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@param p2 number
    TRIGGER_VEHICLE_PART_BROKEN_CAMERA_SHAKE = function(vehicle, p1, p2) end,

    ---Atleast one time in a script for the zRot Rockstar uses GET_ENTITY_HEADING to help fill the parameter.\
    ---\
    ---p9 is unknown at this time.\
    ---p10 throughout all the X360 Scripts is always 2.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param cam Cam
    ---@param animName string
    ---@param animDictionary string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param p9 BOOL
    ---@param p10 integer
    ---@return BOOL
    PLAY_CAM_ANIM = function(cam, animName, animDictionary, x, y, z, xRot, yRot, zRot, p9, p10) end,

    ---@param cam Cam
    ---@param animName string
    ---@param animDictionary string
    ---@return BOOL
    IS_CAM_PLAYING_ANIM = function(cam, animName, animDictionary) end,

    ---@param cam Cam
    ---@param phase number
    SET_CAM_ANIM_CURRENT_PHASE = function(cam, phase) end,

    ---@param cam Cam
    ---@return number
    GET_CAM_ANIM_CURRENT_PHASE = function(cam) end,

    ---Examples:\
    ---\
    ---CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_2734, NETWORK::NETWORK_GET_LOCAL_SCENE_FROM_NETWORK_ID(l_2739), "PLAYER_EXIT_L_CAM", "mp_doorbell");\
    ---\
    ---CAM::PLAY_SYNCHRONIZED_CAM_ANIM(l_F0D[7/*1*/], l_F4D[15/*1*/], "ah3b_attackheli_cam2", "missheistfbi3b_helicrash");
    ---@param p0 Any
    ---@param p1 Any
    ---@param animName string
    ---@param animDictionary string
    ---@return BOOL
    PLAY_SYNCHRONIZED_CAM_ANIM = function(p0, p1, animName, animDictionary) end,

    ---@param cam Cam
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    SET_FLY_CAM_HORIZONTAL_RESPONSE = function(cam, p1, p2, p3) end,

    ---@param cam Cam
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    SET_FLY_CAM_VERTICAL_RESPONSE = function(cam, p1, p2, p3) end,

    ---@param cam Cam
    ---@param height number
    SET_FLY_CAM_MAX_HEIGHT = function(cam, height) end,

    ---@param cam Cam
    ---@param x number
    ---@param y number
    ---@param z number
    SET_FLY_CAM_COORD_AND_CONSTRAIN = function(cam, x, y, z) end,

    ---@param cam Cam
    SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE = function(cam) end,

    ---@param cam Cam
    ---@return BOOL
    WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE = function(cam) end,

    ---@return BOOL
    IS_SCREEN_FADED_OUT = function() end,

    ---@return BOOL
    IS_SCREEN_FADED_IN = function() end,

    ---@return BOOL
    IS_SCREEN_FADING_OUT = function() end,

    ---@return BOOL
    IS_SCREEN_FADING_IN = function() end,

    ---Fades the screen in.\
    ---\
    ---duration: The time the fade should take, in milliseconds.
    ---@param duration integer
    DO_SCREEN_FADE_IN = function(duration) end,

    ---Fades the screen out.\
    ---\
    ---duration: The time the fade should take, in milliseconds.
    ---@param duration integer
    DO_SCREEN_FADE_OUT = function(duration) end,

    ---@param p0 BOOL
    ---@param p1 integer
    SET_WIDESCREEN_BORDERS = function(p0, p1) end,

    ---@return BOOL
    ARE_WIDESCREEN_BORDERS_ACTIVE = function() end,

    ---@return Vector3
    GET_GAMEPLAY_CAM_COORD = function() end,

    ---p0 dosen't seem to change much, I tried it with 0, 1, 2:\
    ---0-Pitch(X): -70.000092\
    ---0-Roll(Y): -0.000001\
    ---0-Yaw(Z): -43.886459\
    ---1-Pitch(X): -70.000092\
    ---1-Roll(Y): -0.000001\
    ---1-Yaw(Z): -43.886463\
    ---2-Pitch(X): -70.000092\
    ---2-Roll(Y): -0.000002\
    ---2-Yaw(Z): -43.886467
    ---@param rotationOrder integer
    ---@return Vector3
    GET_GAMEPLAY_CAM_ROT = function(rotationOrder) end,

    ---@return number
    GET_GAMEPLAY_CAM_FOV = function() end,

    ---some camera effect that is used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled.
    ---@param p0 number
    SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE = function(p0) end,

    ---some camera effect that is (also) used in the drunk-cheat, and turned off (by setting it to 0.0) along with the shaking effects once the drunk cheat is disabled.
    ---@param p0 number
    SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE = function(p0) end,

    ---@return number
    GET_GAMEPLAY_CAM_RELATIVE_HEADING = function() end,

    ---Sets the camera position relative to heading in float from -360 to +360.\
    ---\
    ---Heading is alwyas 0 in aiming camera.
    ---@param heading number
    SET_GAMEPLAY_CAM_RELATIVE_HEADING = function(heading) end,

    ---@return number
    GET_GAMEPLAY_CAM_RELATIVE_PITCH = function() end,

    ---This native sets the camera's pitch (rotation on the x-axis).
    ---@param angle number
    ---@param scalingFactor number
    SET_GAMEPLAY_CAM_RELATIVE_PITCH = function(angle, scalingFactor) end,

    RESET_GAMEPLAY_CAM_FULL_ATTACH_PARENT_TRANSFORM_TIMER = function() end,

    ---@param roll number
    ---@param pitch number
    ---@param yaw number
    FORCE_CAMERA_RELATIVE_HEADING_AND_PITCH = function(roll, pitch, yaw) end,

    ---@param p0 number
    ---@param p1 number
    FORCE_BONNET_CAMERA_RELATIVE_HEADING_AND_PITCH = function(p0, p1) end,

    ---Does nothing
    ---@param yaw number
    SET_FIRST_PERSON_SHOOTER_CAMERA_HEADING = function(yaw) end,

    ---@param pitch number
    SET_FIRST_PERSON_SHOOTER_CAMERA_PITCH = function(pitch) end,

    ---@param p0 BOOL
    SET_SCRIPTED_CAMERA_IS_FIRST_PERSON_THIS_FRAME = function(p0) end,

    ---Possible shake types (updated b617d):\
    ---\
    ---DEATH_FAIL_IN_EFFECT_SHAKE\
    ---DRUNK_SHAKE\
    ---FAMILY5_DRUG_TRIP_SHAKE\
    ---HAND_SHAKE\
    ---JOLT_SHAKE\
    ---LARGE_EXPLOSION_SHAKE\
    ---MEDIUM_EXPLOSION_SHAKE\
    ---SMALL_EXPLOSION_SHAKE\
    ---ROAD_VIBRATION_SHAKE\
    ---SKY_DIVING_SHAKE\
    ---VIBRATE_SHAKE\
    ---\
    ---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json
    ---@param shakeName string
    ---@param intensity number
    SHAKE_GAMEPLAY_CAM = function(shakeName, intensity) end,

    ---@return BOOL
    IS_GAMEPLAY_CAM_SHAKING = function() end,

    ---Sets the amplitude for the gameplay (i.e. 3rd or 1st) camera to shake. Used in script "drunk_controller.ysc.c4" to simulate making the player drunk.
    ---@param amplitude number
    SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE = function(amplitude) end,

    ---@param p0 BOOL
    STOP_GAMEPLAY_CAM_SHAKING = function(p0) end,

    ---Forces gameplay cam to specified ped as if you were the ped or spectating it
    ---@param ped Ped
    SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE = function(ped) end,

    ---Examples when this function will return 0 are:\
    ---- During busted screen.\
    ---- When player is coming out from a hospital.\
    ---- When player is coming out from a police station.\
    ---- When player is buying gun from AmmuNation.
    ---@return BOOL
    IS_GAMEPLAY_CAM_RENDERING = function() end,

    ---@return BOOL
    IS_INTERPOLATING_FROM_SCRIPT_CAMS = function() end,

    ---@return BOOL
    IS_INTERPOLATING_TO_SCRIPT_CAMS = function() end,

    ---@param p0 BOOL
    SET_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_STATE = function(p0) end,

    ---Shows the crosshair even if it wouldn't show normally. Only works for one frame, so make sure to call it repeatedly.
    DISABLE_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_THIS_UPDATE = function() end,

    ---@return BOOL
    IS_GAMEPLAY_CAM_LOOKING_BEHIND = function() end,

    ---@param entity Entity
    SET_GAMEPLAY_CAM_IGNORE_ENTITY_COLLISION_THIS_UPDATE = function(entity) end,

    ---@param entity Entity
    DISABLE_CAM_COLLISION_FOR_OBJECT = function(entity) end,

    BYPASS_CAMERA_COLLISION_BUOYANCY_TEST_THIS_UPDATE = function() end,

    ---@param entity Entity
    SET_GAMEPLAY_CAM_ENTITY_TO_LIMIT_FOCUS_OVER_BOUNDING_SPHERE_THIS_UPDATE = function(entity) end,

    ---Sets some flag on cinematic camera
    DISABLE_FIRST_PERSON_CAMERA_WATER_CLIPPING_TEST_THIS_UPDATE = function() end,

    SET_FOLLOW_CAM_IGNORE_ATTACH_PARENT_MOVEMENT_THIS_UPDATE = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_SPHERE_VISIBLE = function(x, y, z, radius) end,

    ---@return BOOL
    IS_FOLLOW_PED_CAM_ACTIVE = function() end,

    ---From the scripts:\
    ---\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ATTACHED_TO_ROPE_CAMERA", 0);\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_ON_EXILE1_LADDER_CAMERA", 1500);\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 3000);\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_FAMILY5_CAMERA", 0);\
    ---CAM::SET_FOLLOW_PED_CAM_THIS_UPDATE("FOLLOW_PED_SKY_DIVING_CAMERA", 0);
    ---@param camName string
    ---@param p1 integer
    ---@return BOOL
    SET_FOLLOW_PED_CAM_THIS_UPDATE = function(camName, p1) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    USE_SCRIPT_CAM_FOR_AMBIENT_POPULATION_ORIGIN_THIS_FRAME = function(p0, p1) end,

    SET_FOLLOW_PED_CAM_LADDER_ALIGN_THIS_UPDATE = function() end,

    ---minimum: Degrees between -180f and 180f.\
    ---maximum: Degrees between -180f and 180f.\
    ---\
    ---Clamps the gameplay camera's current yaw.\
    ---\
    ---Eg. SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE(0.0f, 0.0f) will set the horizontal angle directly behind the player.
    ---@param minimum number
    ---@param maximum number
    SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE = function(minimum, maximum) end,

    ---minimum: Degrees between -90f and 90f.\
    ---maximum: Degrees between -90f and 90f.\
    ---\
    ---Clamps the gameplay camera's current pitch.\
    ---\
    ---Eg. SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE(0.0f, 0.0f) will set the vertical angle directly behind the player.
    ---@param minimum number
    ---@param maximum number
    SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE = function(minimum, maximum) end,

    ---Seems to animate the gameplay camera zoom.\
    ---\
    ---Eg. SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE(1f, 1000f);\
    ---will animate the camera zooming in from 1000 meters away.\
    ---\
    ---Game scripts use it like this:\
    ---\
    ---// Setting this to 1 prevents V key from changing zoom\
    ---PLAYER::SET_PLAYER_FORCED_ZOOM(PLAYER::PLAYER_ID(), 1);\
    ---\
    ---// These restrict how far you can move cam up/down left/right\
    ---CAM::SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE(-20f, 50f);\
    ---CAM::SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE(-60f, 0f);\
    ---\
    ---CAM::SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE(1f, 1f);
    ---@param p0 number
    ---@param distance number
    SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE = function(p0, distance) end,

    ---@return number
    _GET_THIRD_PERSON_CAM_MIN_ORBIT_DISTANCE_SPRING = function() end,

    ---@return number
    _GET_THIRD_PERSON_CAM_MAX_ORBIT_DISTANCE_SPRING = function() end,

    ---Forces gameplay cam to specified vehicle as if you were in it
    ---@param p0 Vehicle
    ---@param p1 integer
    SET_IN_VEHICLE_CAM_STATE_THIS_UPDATE = function(p0, p1) end,

    ---Disables first person camera for the current frame.\
    ---\
    ---Found in decompiled scripts:\
    ---GRAPHICS::DRAW_DEBUG_TEXT_2D("Disabling First Person Cam", 0.5, 0.8, 0.0, 0, 0, 255, 255);\
    ---CAM::DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE();
    DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE = function() end,

    DISABLE_FIRST_PERSON_FLASH_EFFECT_THIS_UPDATE = function() end,

    BLOCK_FIRST_PERSON_ORIENTATION_RESET_THIS_UPDATE = function() end,

    ---@return integer
    GET_FOLLOW_PED_CAM_ZOOM_LEVEL = function() end,

    ---See viewmode enum in CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE for return value
    ---@return integer
    GET_FOLLOW_PED_CAM_VIEW_MODE = function() end,

    ---Sets the type of Player camera:\
    ---\
    ---0 - Third Person Close\
    ---1 - Third Person Mid\
    ---2 - Third Person Far\
    ---4 - First Person
    ---@param viewMode integer
    SET_FOLLOW_PED_CAM_VIEW_MODE = function(viewMode) end,

    ---@return BOOL
    IS_FOLLOW_VEHICLE_CAM_ACTIVE = function() end,

    ---@param p0 BOOL
    SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_THIS_UPDATE = function(p0) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_EVERY_UPDATE = function(p0, p1) end,

    ---@param hash Hash
    ---@return BOOL
    SET_TABLE_GAMES_CAMERA_THIS_UPDATE = function(hash) end,

    ---@return integer
    GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL = function() end,

    ---@param zoomLevel integer
    SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL = function(zoomLevel) end,

    ---Returns the type of camera:\
    ---\
    ---enum _viewmode //0xA11D7CA8\
    ---{\
    ---	THIRD_PERSON_NEAR = 0,\
    ---	THIRD_PERSON_MEDIUM = 1,\
    ---	THIRD_PERSON_FAR = 2,\
    ---	CINEMATIC = 3,\
    ---	FIRST_PERSON = 4\
    ---};
    ---@return integer
    GET_FOLLOW_VEHICLE_CAM_VIEW_MODE = function() end,

    ---Sets the type of Player camera in vehicles:\
    ---viewmode: see CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE
    ---@param viewMode integer
    SET_FOLLOW_VEHICLE_CAM_VIEW_MODE = function(viewMode) end,

    ---context: see _GET_CAM_ACTIVE_VIEW_MODE_CONTEXT
    ---@param context integer
    ---@return integer
    GET_CAM_VIEW_MODE_FOR_CONTEXT = function(context) end,

    ---context: see _GET_CAM_ACTIVE_VIEW_MODE_CONTEXT, viewmode: see CAM.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE
    ---@param context integer
    ---@param viewMode integer
    SET_CAM_VIEW_MODE_FOR_CONTEXT = function(context, viewMode) end,

    ---enum Context\
    ---{\
    ---	ON_FOOT,\
    ---	IN_VEHICLE,\
    ---	ON_BIKE,\
    ---	IN_BOAT,\
    ---	IN_AIRCRAFT,\
    ---	IN_SUBMARINE,\
    ---	IN_HELI,\
    ---	IN_TURRET\
    ---};
    ---@return integer
    GET_CAM_ACTIVE_VIEW_MODE_CONTEXT = function() end,

    USE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE = function() end,

    ---Sets gameplay camera to hash
    ---@param camName string
    USE_DEDICATED_STUNT_CAMERA_THIS_UPDATE = function(camName) end,

    FORCE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE = function() end,

    ---@param seatIndex integer
    SET_FOLLOW_VEHICLE_CAM_SEAT_THIS_UPDATE = function(seatIndex) end,

    ---@return BOOL
    IS_AIM_CAM_ACTIVE = function() end,

    ---@return BOOL
    IS_AIM_CAM_ACTIVE_IN_ACCURATE_MODE = function() end,

    ---@return BOOL
    IS_FIRST_PERSON_AIM_CAM_ACTIVE = function() end,

    DISABLE_AIM_CAM_THIS_UPDATE = function() end,

    ---@return number
    GET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR = function() end,

    ---@param zoomFactor number
    SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR = function(zoomFactor) end,

    ---@param p0 number
    ---@param p1 number
    SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR_LIMITS_THIS_UPDATE = function(p0, p1) end,

    ---@param p0 number
    ---@param p1 number
    SET_FIRST_PERSON_AIM_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE = function(p0, p1) end,

    ---@param p0 number
    ---@param p1 number
    SET_FIRST_PERSON_AIM_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE = function(p0, p1) end,

    ---@param p0 number
    SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE = function(p0) end,

    ---@param p0 number
    SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE = function(p0) end,

    ---@param p0 BOOL
    SET_ALLOW_CUSTOM_VEHICLE_DRIVE_BY_CAM_THIS_UPDATE = function(p0) end,

    FORCE_TIGHTSPACE_CUSTOM_FRAMING_THIS_UPDATE = function() end,

    ---@return Vector3
    GET_FINAL_RENDERED_CAM_COORD = function() end,

    ---p0 seems to consistently be 2 across scripts\
    ---\
    ---Function is called faily often by CAM::CREATE_CAM_WITH_PARAMS
    ---@param rotationOrder integer
    ---@return Vector3
    GET_FINAL_RENDERED_CAM_ROT = function(rotationOrder) end,

    ---@param player Player
    ---@param rotationOrder integer
    ---@return Vector3
    GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_ROT = function(player, rotationOrder) end,

    ---Gets some camera fov
    ---@return number
    GET_FINAL_RENDERED_CAM_FOV = function() end,

    ---@param player Player
    ---@return number
    GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_FOV = function(player) end,

    ---@return number
    GET_FINAL_RENDERED_CAM_NEAR_CLIP = function() end,

    ---@return number
    GET_FINAL_RENDERED_CAM_FAR_CLIP = function() end,

    ---@return number
    GET_FINAL_RENDERED_CAM_NEAR_DOF = function() end,

    ---@return number
    GET_FINAL_RENDERED_CAM_FAR_DOF = function() end,

    ---@return number
    GET_FINAL_RENDERED_CAM_MOTION_BLUR_STRENGTH = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration integer
    ---@param blendOutDuration integer
    ---@param blendInDuration integer
    ---@param p6 integer
    SET_GAMEPLAY_COORD_HINT = function(x, y, z, duration, blendOutDuration, blendInDuration, p6) end,

    ---@param ped Ped
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param p4 BOOL
    ---@param duration integer
    ---@param blendOutDuration integer
    ---@param blendInDuration integer
    SET_GAMEPLAY_PED_HINT = function(ped, x1, y1, z1, p4, duration, blendOutDuration, blendInDuration) end,

    ---Focuses the camera on the specified vehicle.
    ---@param vehicle Vehicle
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param p4 BOOL
    ---@param time integer
    ---@param easeInTime integer
    ---@param easeOutTime integer
    SET_GAMEPLAY_VEHICLE_HINT = function(vehicle, offsetX, offsetY, offsetZ, p4, time, easeInTime, easeOutTime) end,

    ---@param object Object
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param p4 BOOL
    ---@param time integer
    ---@param easeInTime integer
    ---@param easeOutTime integer
    SET_GAMEPLAY_OBJECT_HINT = function(object, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime) end,

    ---p8 could be some sort of flag. Scripts use:\
    ----244429742\
    ---0\
    ---1726668277\
    ---1844968929
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param p4 BOOL
    ---@param time integer
    ---@param easeInTime integer
    ---@param easeOutTime integer
    ---@param p8 integer
    SET_GAMEPLAY_ENTITY_HINT = function(entity, xOffset, yOffset, zOffset, p4, time, easeInTime, easeOutTime, p8) end,

    ---@return BOOL
    IS_GAMEPLAY_HINT_ACTIVE = function() end,

    ---@param p0 BOOL
    STOP_GAMEPLAY_HINT = function(p0) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 BOOL
    STOP_GAMEPLAY_HINT_BEING_CANCELLED_THIS_UPDATE = function(p0) end,

    ---@param p0 BOOL
    STOP_CODE_GAMEPLAY_HINT = function(p0) end,

    ---@return BOOL
    IS_CODE_GAMEPLAY_HINT_ACTIVE = function() end,

    ---@param FOV number
    SET_GAMEPLAY_HINT_FOV = function(FOV) end,

    ---@param value number
    SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR = function(value) end,

    ---@param value number
    SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET = function(value) end,

    ---@param xOffset number
    SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET = function(xOffset) end,

    ---@param yOffset number
    SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET = function(yOffset) end,

    ---@param toggle BOOL
    SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE = function(toggle) end,

    ---@param p0 BOOL
    SET_CINEMATIC_BUTTON_ACTIVE = function(p0) end,

    ---@return BOOL
    IS_CINEMATIC_CAM_RENDERING = function() end,

    ---p0 argument found in the b617d scripts: "DRUNK_SHAKE"\
    ---\
    ---Full list of cam shake types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/camShakeTypesCompact.json
    ---@param shakeType string
    ---@param amount number
    SHAKE_CINEMATIC_CAM = function(shakeType, amount) end,

    ---@return BOOL
    IS_CINEMATIC_CAM_SHAKING = function() end,

    ---@param p0 number
    SET_CINEMATIC_CAM_SHAKE_AMPLITUDE = function(p0) end,

    ---@param p0 BOOL
    STOP_CINEMATIC_CAM_SHAKING = function(p0) end,

    DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE = function() end,

    DISABLE_CINEMATIC_VEHICLE_IDLE_MODE_THIS_UPDATE = function() end,

    ---Resets the vehicle idle camera timer. Calling this in a loop will disable the idle camera.
    INVALIDATE_CINEMATIC_VEHICLE_IDLE_MODE = function() end,

    ---Resets the idle camera timer. Calling that in a loop once every few seconds is enough to disable the idle cinematic camera.
    INVALIDATE_IDLE_CAM = function() end,

    ---@return BOOL
    IS_CINEMATIC_IDLE_CAM_RENDERING = function() end,

    ---@return BOOL
    IS_CINEMATIC_FIRST_PERSON_VEHICLE_INTERIOR_CAM_RENDERING = function() end,

    ---hash is always JOAAT("CAMERA_MAN_SHOT") in decompiled scripts
    ---@param p0 Hash
    ---@param time integer
    ---@param p2 BOOL
    ---@param entity Entity
    CREATE_CINEMATIC_SHOT = function(p0, time, p2, entity) end,

    ---Hash is always JOAAT("CAMERA_MAN_SHOT") in decompiled scripts
    ---@param p0 Hash
    ---@return BOOL
    IS_CINEMATIC_SHOT_ACTIVE = function(p0) end,

    ---Only used once in carsteal3 with p0 set to -1096069633 (CAMERA_MAN_SHOT)
    ---@param p0 Hash
    STOP_CINEMATIC_SHOT = function(p0) end,

    ---@param toggle BOOL
    FORCE_CINEMATIC_RENDERING_THIS_UPDATE = function(toggle) end,

    SET_CINEMATIC_NEWS_CHANNEL_ACTIVE_THIS_UPDATE = function() end,

    ---Toggles the vehicle cinematic cam; requires the player ped to be in a vehicle to work.
    ---@param toggle BOOL
    SET_CINEMATIC_MODE_ACTIVE = function(toggle) end,

    ---@return BOOL
    IS_IN_VEHICLE_MOBILE_PHONE_CAMERA_RENDERING = function() end,

    ---@return BOOL
    DISABLE_CINEMATIC_SLOW_MO_THIS_UPDATE = function() end,

    ---@return BOOL
    IS_BONNET_CINEMATIC_CAM_RENDERING = function() end,

    ---Tests some cinematic camera flags
    ---@return BOOL
    IS_CINEMATIC_CAM_INPUT_ACTIVE = function() end,

    IGNORE_MENU_PREFERENCE_FOR_BONNET_CAMERA_THIS_UPDATE = function() end,

    BYPASS_CUTSCENE_CAM_RENDERING_THIS_UPDATE = function() end,

    ---@param p0 Any
    STOP_CUTSCENE_CAM_SHAKING = function(p0) end,

    ---Hardcoded to only work in multiplayer.
    ---@param p0 number
    SET_CUTSCENE_CAM_FAR_CLIP_THIS_UPDATE = function(p0) end,

    ---@param p0 number
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 integer
    ---@param p8 integer
    ---@return Ped
    GET_FOCUS_PED_ON_SCREEN = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    DISABLE_NEAR_CLIP_SCAN_THIS_UPDATE = function() end,

    ---if p0 is 0, effect is cancelled\
    ---\
    ---if p0 is 1, effect zooms in, gradually tilts cam clockwise apx 30 degrees, wobbles slowly. Motion blur is active until cancelled.\
    ---\
    ---if p0 is 2, effect immediately tilts cam clockwise apx 30 degrees, begins to wobble slowly, then gradually tilts cam back to normal. The wobbling will continue until the effect is cancelled.
    ---@param p0 integer
    SET_CAM_DEATH_FAIL_EFFECT_STATE = function(p0) end,

    ---@param p0 Any
    SET_FIRST_PERSON_FLASH_EFFECT_TYPE = function(p0) end,

    ---From b617 scripts:\
    ---\
    ---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("DINGHY");\
    ---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("ISSI2");\
    ---CAM::SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME("SPEEDO");
    ---@param vehicleName string
    SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME = function(vehicleName) end,

    ---@param vehicleModel Hash
    SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_HASH = function(vehicleModel) end,

    ---@return BOOL
    IS_ALLOWED_INDEPENDENT_CAMERA_MODES = function() end,

    CAMERA_PREVENT_COLLISION_SETTINGS_FOR_TRIPLEHEAD_IN_INTERIORS_THIS_UPDATE = function() end,

    ---@return number
    REPLAY_GET_MAX_DISTANCE_ALLOWED_FROM_PLAYER = function() end
}

CLOCK = {
    ---SET_CLOCK_TIME(12, 34, 56);
    ---@param hour integer
    ---@param minute integer
    ---@param second integer
    SET_CLOCK_TIME = function(hour, minute, second) end,

    ---@param toggle BOOL
    PAUSE_CLOCK = function(toggle) end,

    ---@param hour integer
    ---@param minute integer
    ---@param second integer
    ADVANCE_CLOCK_TIME_TO = function(hour, minute, second) end,

    ---@param hours integer
    ---@param minutes integer
    ---@param seconds integer
    ADD_TO_CLOCK_TIME = function(hours, minutes, seconds) end,

    ---Gets the current ingame hour, expressed without zeros. (09:34 will be represented as 9)
    ---@return integer
    GET_CLOCK_HOURS = function() end,

    ---Gets the current ingame clock minute.
    ---@return integer
    GET_CLOCK_MINUTES = function() end,

    ---Gets the current ingame clock second. Note that ingame clock seconds change really fast since a day in GTA is only 48 minutes in real life.
    ---@return integer
    GET_CLOCK_SECONDS = function() end,

    ---@param day integer
    ---@param month integer
    ---@param year integer
    SET_CLOCK_DATE = function(day, month, year) end,

    ---Gets the current day of the week.\
    ---\
    ---0: Sunday\
    ---1: Monday\
    ---2: Tuesday\
    ---3: Wednesday\
    ---4: Thursday\
    ---5: Friday\
    ---6: Saturday
    ---@return integer
    GET_CLOCK_DAY_OF_WEEK = function() end,

    ---@return integer
    GET_CLOCK_DAY_OF_MONTH = function() end,

    ---@return integer
    GET_CLOCK_MONTH = function() end,

    ---@return integer
    GET_CLOCK_YEAR = function() end,

    ---@return integer
    GET_MILLISECONDS_PER_GAME_MINUTE = function() end,

    ---Gets system time as year, month, day, hour, minute and second.\
    ---\
    ---Example usage:\
    ---\
    ---    int year;\
    --- int month;\
    ---    int day;\
    ---  int hour;\
    --- int minute;\
    ---   int second;\
    ---\
    --- TIME::GET_POSIX_TIME(&year, &month, &day, &hour, &minute, &second);\
    ---
    ---@param year integer
    ---@param month integer
    ---@param day integer
    ---@param hour integer
    ---@param minute integer
    ---@param second integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_POSIX_TIME = function(year, month, day, hour, minute, second) end,

    ---Gets current UTC time
    ---@param year integer
    ---@param month integer
    ---@param day integer
    ---@param hour integer
    ---@param minute integer
    ---@param second integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_UTC_TIME = function(year, month, day, hour, minute, second) end,

    ---Gets local system time as year, month, day, hour, minute and second.\
    ---\
    ---Example usage:\
    ---\
    ---int year;\
    ---int month;\
    ---int day;\
    ---int hour;\
    ---int minute;\
    ---int second;\
    ---or use std::tm struct\
    ---\
    ---TIME::GET_LOCAL_TIME(&year, &month, &day, &hour, &minute, &second);\
    ---
    ---@param year integer
    ---@param month integer
    ---@param day integer
    ---@param hour integer
    ---@param minute integer
    ---@param second integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_LOCAL_TIME = function(year, month, day, hour, minute, second) end
}

CUTSCENE = {
    ---flags: Usually 8\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    ---@param flags integer
    REQUEST_CUTSCENE = function(cutsceneName, flags) end,

    ---flags: Usually 8\
    ---\
    ---playbackFlags: Which scenes should be played.\
    ---Example: 0x105 (bit 0, 2 and 8 set) will enable scene 1, 3 and 9.\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    ---@param playbackFlags integer
    ---@param flags integer
    REQUEST_CUTSCENE_WITH_PLAYBACK_LIST = function(cutsceneName, playbackFlags, flags) end,

    REMOVE_CUTSCENE = function() end,

    ---@return BOOL
    HAS_CUTSCENE_LOADED = function() end,

    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    ---@return BOOL
    HAS_THIS_CUTSCENE_LOADED = function(cutsceneName) end,

    ---Sets the cutscene's owning thread ID.
    ---@param threadId integer
    SET_SCRIPT_CAN_START_CUTSCENE = function(threadId) end,

    ---@return BOOL
    CAN_REQUEST_ASSETS_FOR_CUTSCENE_ENTITY = function() end,

    ---@param flag integer
    ---@return BOOL
    IS_CUTSCENE_PLAYBACK_FLAG_SET = function(flag) end,

    ---@param cutsceneEntName string
    ---@param p1 integer
    ---@param p2 integer
    SET_CUTSCENE_ENTITY_STREAMING_FLAGS = function(cutsceneEntName, p1, p2) end,

    ---Simply loads the cutscene and doesn't do extra stuff that REQUEST_CUTSCENE does.\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    REQUEST_CUT_FILE = function(cutsceneName) end,

    ---Simply checks if the cutscene has loaded and doesn't check via CutSceneManager as opposed to HAS_[THIS]_CUTSCENE_LOADED.\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    ---@return BOOL
    HAS_CUT_FILE_LOADED = function(cutsceneName) end,

    ---Simply unloads the cutscene and doesn't do extra stuff that REMOVE_CUTSCENE does.\
    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    REMOVE_CUT_FILE = function(cutsceneName) end,

    ---@param cutsceneName string
    ---@param index integer
    ---@return Vector3
    GET_CUT_FILE_OFFSET = function(cutsceneName, index) end,

    ---Full list of cutscene names by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/cutsceneNames.json
    ---@param cutsceneName string
    ---@return integer
    GET_CUT_FILE_CONCAT_COUNT = function(cutsceneName) end,

    ---flags: Usually 0.
    ---@param flags integer
    START_CUTSCENE = function(flags) end,

    ---flags: Usually 0.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param flags integer
    START_CUTSCENE_AT_COORDS = function(x, y, z, flags) end,

    ---@param p0 BOOL
    STOP_CUTSCENE = function(p0) end,

    STOP_CUTSCENE_IMMEDIATELY = function() end,

    ---p3 could be heading. Needs more research.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 integer
    SET_CUTSCENE_ORIGIN = function(x, y, z, p3, p4) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 integer
    SET_CUTSCENE_ORIGIN_AND_ORIENTATION = function(x1, y1, z1, x2, y2, z2, p6) end,

    ---@return integer
    GET_CUTSCENE_TIME = function() end,

    ---@return integer
    GET_CUTSCENE_PLAY_TIME = function() end,

    ---@return integer
    GET_CUTSCENE_TOTAL_DURATION = function() end,

    ---@return integer
    GET_CUTSCENE_END_TIME = function() end,

    ---@return integer
    GET_CUTSCENE_PLAY_DURATION = function() end,

    ---@return BOOL
    WAS_CUTSCENE_SKIPPED = function() end,

    ---@return BOOL
    HAS_CUTSCENE_FINISHED = function() end,

    ---@return BOOL
    IS_CUTSCENE_ACTIVE = function() end,

    ---@return BOOL
    IS_CUTSCENE_PLAYING = function() end,

    ---@return integer
    GET_CUTSCENE_SECTION_PLAYING = function() end,

    ---@param cutsceneEntName string
    ---@param modelHash Hash
    ---@return Entity
    GET_ENTITY_INDEX_OF_CUTSCENE_ENTITY = function(cutsceneEntName, modelHash) end,

    ---@return integer
    GET_CUTSCENE_CONCAT_SECTION_PLAYING = function() end,

    ---This function is hard-coded to always return 1.
    ---@param cutsceneName string
    ---@return BOOL
    IS_CUTSCENE_AUTHORIZED = function(cutsceneName) end,

    ---@param cutsceneHandle integer
    ---@return integer
    DOES_CUTSCENE_HANDLE_EXIST = function(cutsceneHandle) end,

    ---@param cutscenePed Ped
    ---@param cutsceneEntName string
    ---@param p2 integer
    ---@param modelHash Hash
    ---@param p4 integer
    REGISTER_ENTITY_FOR_CUTSCENE = function(cutscenePed, cutsceneEntName, p2, modelHash, p4) end,

    ---@param cutsceneEntName string
    ---@param modelHash Hash
    ---@return Entity
    GET_ENTITY_INDEX_OF_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) end,

    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    SET_VEHICLE_MODEL_PLAYER_WILL_EXIT_SCENE = function(modelHash) end,

    ---Only used twice in R* scripts
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    SET_CUTSCENE_TRIGGER_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---modelHash (p1) was always 0 in R* scripts
    ---@param cutsceneEntName string
    ---@param modelHash Hash
    ---@return BOOL
    CAN_SET_ENTER_STATE_FOR_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) end,

    ---@param cutsceneEntName string
    ---@param modelHash Hash
    ---@return BOOL
    CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY = function(cutsceneEntName, modelHash) end,

    ---@param p0 BOOL
    ---@return BOOL
    CAN_SET_EXIT_STATE_FOR_CAMERA = function(p0) end,

    ---Toggles a value (bool) for cutscenes.
    ---@param toggle BOOL
    SET_PAD_CAN_SHAKE_DURING_CUTSCENE = function(toggle) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    SET_CUTSCENE_FADE_VALUES = function(p0, p1, p2, p3) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    SET_CUTSCENE_MULTIHEAD_FADE = function(p0, p1, p2, p3) end,

    ---@param p0 BOOL
    SET_CUTSCENE_MULTIHEAD_FADE_MANUAL = function(p0) end,

    ---@return BOOL
    IS_MULTIHEAD_FADE_UP = function() end,

    ---@param toggle BOOL
    NETWORK_SET_MOCAP_CUTSCENE_CAN_BE_SKIPPED = function(toggle) end,

    ---@param p0 BOOL
    SET_CAR_GENERATORS_CAN_UPDATE_DURING_CUTSCENE = function(p0) end,

    ---@return BOOL
    CAN_USE_MOBILE_PHONE_DURING_CUTSCENE = function() end,

    ---@param p0 BOOL
    SET_CUTSCENE_CAN_BE_SKIPPED = function(p0) end,

    SET_CAN_DISPLAY_MINIMAP_DURING_CUTSCENE_THIS_UPDATE = function() end,

    ---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json
    ---@param cutsceneEntName string
    ---@param componentId integer
    ---@param drawableId integer
    ---@param textureId integer
    ---@param modelHash Hash
    SET_CUTSCENE_PED_COMPONENT_VARIATION = function(cutsceneEntName, componentId, drawableId, textureId, modelHash) end,

    ---@param cutsceneEntName string
    ---@param ped Ped
    ---@param modelHash Hash
    SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED = function(cutsceneEntName, ped, modelHash) end,

    ---@param cutsceneEntName string
    ---@param modelHash Hash
    ---@return BOOL
    DOES_CUTSCENE_ENTITY_EXIST = function(cutsceneEntName, modelHash) end,

    ---Thanks R*! ;)\
    ---\
    ---if ((l_161 == 0) || (l_161 == 2)) {\
    ---    sub_2ea27("Trying to set Jimmy prop variation");\
    ---    CUTSCENE::SET_CUTSCENE_PED_PROP_VARIATION("Jimmy_Boston", 1, 0, 0, 0);\
    ---}\
    ---\
    ---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json
    ---@param cutsceneEntName string
    ---@param componentId integer
    ---@param drawableId integer
    ---@param textureId integer
    ---@param modelHash Hash
    SET_CUTSCENE_PED_PROP_VARIATION = function(cutsceneEntName, componentId, drawableId, textureId, modelHash) end,

    ---Possibly HAS_CUTSCENE_CUT_THIS_FRAME, needs more research.
    ---@return BOOL
    HAS_CUTSCENE_CUT_THIS_FRAME = function() end
}

DATAFILE = {
    ---Adds the given requestID to the watch list.
    ---@param requestId integer
    DATAFILE_WATCH_REQUEST_ID = function(requestId) end,

    DATAFILE_CLEAR_WATCH_LIST = function() end,

    ---@param index integer
    ---@return BOOL
    DATAFILE_IS_VALID_REQUEST_ID = function(index) end,

    ---@param requestId integer
    ---@return BOOL
    DATAFILE_HAS_LOADED_FILE_DATA = function(requestId) end,

    ---@param requestId integer
    ---@return BOOL
    DATAFILE_HAS_VALID_FILE_DATA = function(requestId) end,

    ---@param requestId integer
    ---@param p1 Any
    ---@return BOOL
    DATAFILE_SELECT_ACTIVE_FILE = function(requestId, p1) end,

    ---@param requestId integer
    ---@return BOOL
    DATAFILE_DELETE_REQUESTED_FILE = function(requestId) end,

    ---@param data Any*
    ---@param dataCount integer
    ---@param contentName string
    ---@param description string
    ---@param tagsCsv string
    ---@param contentTypeName string
    ---@param publish BOOL
    ---@param p7 Any
    ---@return BOOL
    UGC_CREATE_CONTENT = function(data, dataCount, contentName, description, tagsCsv, contentTypeName, publish, p7) end,

    ---@param contentName string
    ---@param description string
    ---@param tagsCsv string
    ---@param contentTypeName string
    ---@param publish BOOL
    ---@param p5 Any
    ---@return BOOL
    UGC_CREATE_MISSION = function(contentName, description, tagsCsv, contentTypeName, publish, p5) end,

    ---@param contentId string
    ---@param data Any*
    ---@param dataCount integer
    ---@param contentName string
    ---@param description string
    ---@param tagsCsv string
    ---@param contentTypeName string
    ---@param p7 Any
    ---@return BOOL
    UGC_UPDATE_CONTENT = function(contentId, data, dataCount, contentName, description, tagsCsv, contentTypeName, p7) end,

    ---@param contentId string
    ---@param contentName string
    ---@param description string
    ---@param tagsCsv string
    ---@param contentTypeName string
    ---@param p5 Any
    ---@return BOOL
    UGC_UPDATE_MISSION = function(contentId, contentName, description, tagsCsv, contentTypeName, p5) end,

    ---@param contentId string
    ---@param rating number
    ---@param contentTypeName string
    ---@param p3 Any
    ---@return BOOL
    UGC_SET_PLAYER_DATA = function(contentId, rating, contentTypeName, p3) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@return BOOL
    DATAFILE_SELECT_UGC_DATA = function(p0, p1) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    DATAFILE_SELECT_UGC_STATS = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@return BOOL
    DATAFILE_SELECT_UGC_PLAYER_DATA = function(p0, p1) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@return BOOL
    DATAFILE_SELECT_CREATOR_STATS = function(p0, p1) end,

    ---Loads a User-Generated Content (UGC) file. These files can be found in "[GTA5]\data\ugc" and "[GTA5]\common\patch\ugc". They seem to follow a naming convention, most likely of "[name]_[part].ugc". See example below for usage.\
    ---\
    ---Returns whether or not the file was successfully loaded.\
    ---\
    ---Example:\
    ---DATAFILE::DATAFILE_LOAD_OFFLINE_UGC("RockstarPlaylists") // loads "rockstarplaylists_00.ugc"
    ---@param filename string
    ---@param p1 Any
    ---@return BOOL
    DATAFILE_LOAD_OFFLINE_UGC = function(filename, p1) end,

    ---@param p0 integer
    DATAFILE_CREATE = function(p0) end,

    ---@param p0 integer
    DATAFILE_DELETE = function(p0) end,

    ---@param p0 integer
    DATAFILE_STORE_MISSION_HEADER = function(p0) end,

    DATAFILE_FLUSH_MISSION_HEADER = function() end
}

DECORATOR = {
    ---@param entity Entity
    ---@param propertyName string
    ---@param timestamp integer
    ---@return BOOL
    DECOR_SET_TIME = function(entity, propertyName, timestamp) end,

    ---This function sets metadata of type bool to specified entity.\
    ---
    ---@param entity Entity
    ---@param propertyName string
    ---@param value BOOL
    ---@return BOOL
    DECOR_SET_BOOL = function(entity, propertyName, value) end,

    ---@param entity Entity
    ---@param propertyName string
    ---@param value number
    ---@return BOOL
    DECOR_SET_FLOAT = function(entity, propertyName, value) end,

    ---Sets property to int.
    ---@param entity Entity
    ---@param propertyName string
    ---@param value integer
    ---@return BOOL
    DECOR_SET_INT = function(entity, propertyName, value) end,

    ---@param entity Entity
    ---@param propertyName string
    ---@return BOOL
    DECOR_GET_BOOL = function(entity, propertyName) end,

    ---@param entity Entity
    ---@param propertyName string
    ---@return number
    DECOR_GET_FLOAT = function(entity, propertyName) end,

    ---@param entity Entity
    ---@param propertyName string
    ---@return integer
    DECOR_GET_INT = function(entity, propertyName) end,

    ---Returns whether or not the specified property is set for the entity.
    ---@param entity Entity
    ---@param propertyName string
    ---@return BOOL
    DECOR_EXIST_ON = function(entity, propertyName) end,

    ---@param entity Entity
    ---@param propertyName string
    ---@return BOOL
    DECOR_REMOVE = function(entity, propertyName) end,

    ---https://alloc8or.re/gta5/doc/enums/eDecorType.txt
    ---@param propertyName string
    ---@param type integer
    DECOR_REGISTER = function(propertyName, type) end,

    ---type: see DECOR_REGISTER
    ---@param propertyName string
    ---@param type integer
    ---@return BOOL
    DECOR_IS_REGISTERED_AS_TYPE = function(propertyName, type) end,

    ---Called after all decorator type initializations.
    DECOR_REGISTER_LOCK = function() end
}

DLC = {
    ---@return BOOL
    ARE_ANY_CCS_PENDING = function() end,

    ---Returns true if the given DLC pack is present.
    ---@param dlcHash Hash
    ---@return BOOL
    IS_DLC_PRESENT = function(dlcHash) end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    DLC_CHECK_CLOUD_DATA_CORRECT = function() end,

    ---This function is hard-coded to always return 0.
    ---@return integer
    GET_EXTRACONTENT_CLOUD_RESULT = function() end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    DLC_CHECK_COMPAT_PACK_CONFIGURATION = function() end,

    ---@return BOOL
    GET_EVER_HAD_BAD_PACK_ORDER = function() end,

    ---@return BOOL
    GET_IS_LOADING_SCREEN_ACTIVE = function() end,

    ---@return BOOL
    GET_IS_INITIAL_LOADING_SCREEN_ACTIVE = function() end,

    ---Sets the value of the specified variable to 0.\
    ---Always returns true.
    ---@param p0 BOOL
    ---@param unused integer
    ---@return BOOL
    ---@return BOOL
    HAS_CLOUD_REQUESTS_FINISHED = function(p0, unused) end,

    ---Unloads GROUP_MAP (GTAO/MP) DLC data and loads GROUP_MAP_SP DLC. Neither are loaded by default, ON_ENTER_MP is a cognate to this function and loads MP DLC (and unloads SP DLC by extension).\
    ---Works in singleplayer.
    ON_ENTER_SP = function() end,

    ---This loads the GTA:O dlc map parts (high end garages, apartments).\
    ---Works in singleplayer.\
    ---In order to use GTA:O heist IPL's you have to call this native with the following params: SET_INSTANCE_PRIORITY_MODE(1);
    ON_ENTER_MP = function() end
}

ENTITY = {
    ---Checks whether an entity exists in the game world.
    ---@param entity Entity
    ---@return BOOL
    DOES_ENTITY_EXIST = function(entity) end,

    ---@param entity Entity
    ---@param p1 BOOL
    ---@return BOOL
    DOES_ENTITY_BELONG_TO_THIS_SCRIPT = function(entity, p1) end,

    ---@param entity Entity
    ---@return BOOL
    DOES_ENTITY_HAVE_DRAWABLE = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    DOES_ENTITY_HAVE_PHYSICS = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    DOES_ENTITY_HAVE_SKELETON = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    DOES_ENTITY_HAVE_ANIM_DIRECTOR = function(entity) end,

    ---P3 is always 3 as far as i cant tell\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDict string
    ---@param animName string
    ---@param p3 integer
    ---@return BOOL
    HAS_ENTITY_ANIM_FINISHED = function(entity, animDict, animName, p3) end,

    ---@param entity Entity
    ---@return BOOL
    HAS_ENTITY_BEEN_DAMAGED_BY_ANY_OBJECT = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    HAS_ENTITY_BEEN_DAMAGED_BY_ANY_PED = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    HAS_ENTITY_BEEN_DAMAGED_BY_ANY_VEHICLE = function(entity) end,

    ---Entity 1 = Victim\
    ---Entity 2 = Attacker\
    ---\
    ---p2 seems to always be 1
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param p2 BOOL
    ---@return BOOL
    HAS_ENTITY_BEEN_DAMAGED_BY_ENTITY = function(entity1, entity2, p2) end,

    ---traceType is always 17 in the scripts.\
    ---\
    ---There is other codes used for traceType:\
    ---19 - in jewelry_prep1a\
    ---126 - in am_hunt_the_beast\
    ---256 & 287 - in fm_mission_controller
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param traceType integer
    ---@return BOOL
    HAS_ENTITY_CLEAR_LOS_TO_ENTITY = function(entity1, entity2, traceType) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param traceType integer
    ---@return BOOL
    HAS_ENTITY_CLEAR_LOS_TO_ENTITY_ADJUST_FOR_COVER = function(entity1, entity2, traceType) end,

    ---Has the entity1 got a clear line of sight to the other entity2 from the direction entity1 is facing.\
    ---This is one of the most CPU demanding BOOL natives in the game; avoid calling this in things like nested for-loops
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@return BOOL
    HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT = function(entity1, entity2) end,

    ---Called on tick.\
    ---Tested with vehicles, returns true whenever the vehicle is touching any entity.\
    ---\
    ---Note: for vehicles, the wheels can touch the ground and it will still return false, but if the body of the vehicle touches the ground, it will return true.
    ---@param entity Entity
    ---@return BOOL
    HAS_ENTITY_COLLIDED_WITH_ANYTHING = function(entity) end,

    ---@param entity Entity
    ---@return Entity
    _GET_LAST_ENTITY_HIT_BY_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@return Hash
    GET_LAST_MATERIAL_HIT_BY_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@return Vector3
    GET_COLLISION_NORMAL_OF_LAST_HIT_FOR_ENTITY = function(entity) end,

    ---Based on carmod_shop script decompile this takes a vehicle parameter. It is called when repair is done on initial enter.
    ---@param entity Entity
    FORCE_ENTITY_AI_AND_ANIMATION_UPDATE = function(entity) end,

    ---Returns a float value representing animation's current playtime with respect to its total playtime. This value increasing in a range from [0 to 1] and wrap back to 0 when it reach 1.\
    ---\
    ---Example:\
    ---0.000000 - mark the starting of animation.\
    ---0.500000 - mark the midpoint of the animation.\
    ---1.000000 - mark the end of animation.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDict string
    ---@param animName string
    ---@return number
    GET_ENTITY_ANIM_CURRENT_TIME = function(entity, animDict, animName) end,

    ---Returns a float value representing animation's total playtime in milliseconds.\
    ---\
    ---Example:\
    ---GET_ENTITY_ANIM_TOTAL_TIME(PLAYER_ID(),"amb@world_human_yoga@female@base","base_b") \
    ---return 20800.000000\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDict string
    ---@param animName string
    ---@return number
    GET_ENTITY_ANIM_TOTAL_TIME = function(entity, animDict, animName) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@param animName string
    ---@return number
    GET_ANIM_DURATION = function(animDict, animName) end,

    ---@param entity Entity
    ---@return Entity
    GET_ENTITY_ATTACHED_TO = function(entity) end,

    ---Gets the current coordinates for a specified entity.\
    ---`entity` = The entity to get the coordinates from.\
    ---`alive` = Unused by the game, potentially used by debug builds of GTA in order to assert whether or not an entity was alive.
    ---@param entity Entity
    ---@param alive BOOL
    ---@return Vector3
    GET_ENTITY_COORDS = function(entity, alive) end,

    ---Gets the entity's forward vector.
    ---@param entity Entity
    ---@return Vector3
    GET_ENTITY_FORWARD_VECTOR = function(entity) end,

    ---Gets the X-component of the entity's forward vector.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_FORWARD_X = function(entity) end,

    ---Gets the Y-component of the entity's forward vector.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_FORWARD_Y = function(entity) end,

    ---Returns the heading of the entity in degrees. Also know as the "Yaw" of an entity.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_HEADING = function(entity) end,

    ---Gets the heading of the entity physics in degrees, which tends to be more accurate than just "GET_ENTITY_HEADING". This can be clearly seen while, for example, ragdolling a ped/player.\
    ---\
    ---NOTE: The name and description of this native are based on independent research. If you find this native to be more suitable under a different name and/or described differently, please feel free to do so.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_HEADING_FROM_EULERS = function(entity) end,

    ---Returns an integer value of entity's current health.\
    ---\
    ---Example of range for ped:\
    ---- Player [0 to 200]\
    ---- Ped [100 to 200]\
    ---- Vehicle [0 to 1000]\
    ---- Object [0 to 1000]\
    ---\
    ---Health is actually a float value but this native casts it to int.\
    ---In order to get the actual value, do:\
    ---float health = *(float *)(entityAddress + 0x280);
    ---@param entity Entity
    ---@return integer
    GET_ENTITY_HEALTH = function(entity) end,

    ---Return an integer value of entity's maximum health.\
    ---\
    ---Example:\
    ---- Player = 200\
    ---- Ped = 150
    ---@param entity Entity
    ---@return integer
    GET_ENTITY_MAX_HEALTH = function(entity) end,

    ---For instance: ENTITY::SET_ENTITY_MAX_HEALTH(PLAYER::PLAYER_PED_ID(), 200); // director_mode.c4: 67849
    ---@param entity Entity
    ---@param value integer
    SET_ENTITY_MAX_HEALTH = function(entity, value) end,

    ---@param entity Entity
    ---@param X number
    ---@param Y number
    ---@param Z number
    ---@param atTop BOOL
    ---@param inWorldCoords BOOL
    ---@return number
    GET_ENTITY_HEIGHT = function(entity, X, Y, Z, atTop, inWorldCoords) end,

    ---Return height (z-dimension) above ground. \
    ---Example: The pilot in a titan plane is 1.844176 above ground.\
    ---\
    ---How can i convert it to meters?\
    ---Everything seems to be in meters, probably this too.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_HEIGHT_ABOVE_GROUND = function(entity) end,

    ---@param entity Entity
    ---@param forwardVector Vector3
    ---@param rightVector Vector3
    ---@param upVector Vector3
    ---@param position Vector3
    GET_ENTITY_MATRIX = function(entity, forwardVector, rightVector, upVector, position) end,

    ---Returns the model hash from the entity
    ---@param entity Entity
    ---@return Hash
    GET_ENTITY_MODEL = function(entity) end,

    ---Converts world coords (posX - Z) to coords relative to the entity\
    ---\
    ---Example:\
    ---posX is given as 50\
    ---entity's x coord is 40\
    ---the returned x coord will then be 10 or -10, not sure haven't used this in a while (think it is 10 though).
    ---@param entity Entity
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@return Vector3
    GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS = function(entity, posX, posY, posZ) end,

    ---Offset values are relative to the entity.\
    ---\
    ---x = left/right\
    ---y = forward/backward\
    ---z = up/down
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@return Vector3
    GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS = function(entity, offsetX, offsetY, offsetZ) end,

    ---@param entity Entity
    ---@return number
    GET_ENTITY_PITCH = function(entity) end,

    ---w is the correct parameter name!
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param w number
    ---@return number
    ---@return number
    ---@return number
    ---@return number
    GET_ENTITY_QUATERNION = function(entity, x, y, z, w) end,

    ---Displays the current ROLL axis of the entity [-180.0000/180.0000+]\
    ---(Sideways Roll) such as a vehicle tipped on its side
    ---@param entity Entity
    ---@return number
    GET_ENTITY_ROLL = function(entity) end,

    ---rotationOrder is the order yaw, pitch and roll is applied. Usually 2. Returns a vector where the Z coordinate is the yaw.\
    ---\
    ---rotationOrder refers to the order yaw pitch roll is applied; value ranges from 0 to 5 and is usually *2* in scripts.\
    ---What you use for rotationOrder when getting must be the same as rotationOrder when setting the rotation.\
    ---\
    ---What it returns is the yaw on the z part of the vector, which makes sense considering R* considers z as vertical. Here's a picture for those of you who don't understand pitch, yaw, and roll: www.allstar.fiu.edu/aero/images/pic5-1.gif\
    ---\
    ---Rotation Orders:\
    ---0: ZYX - Rotate around the z-axis, then the y-axis and finally the x-axis.\
    ---1: YZX - Rotate around the y-axis, then the z-axis and finally the x-axis.\
    ---2: ZXY - Rotate around the z-axis, then the x-axis and finally the y-axis.\
    ---3: XZY - Rotate around the x-axis, then the z-axis and finally the y-axis.\
    ---4: YXZ - Rotate around the y-axis, then the x-axis and finally the z-axis.\
    ---5: XYZ - Rotate around the x-axis, then the y-axis and finally the z-axis.
    ---@param entity Entity
    ---@param rotationOrder integer
    ---@return Vector3
    GET_ENTITY_ROTATION = function(entity, rotationOrder) end,

    ---@param entity Entity
    ---@return Vector3
    GET_ENTITY_ROTATION_VELOCITY = function(entity) end,

    ---Returns the name of the script that owns/created the entity or nullptr. Second parameter is unused, can just be a nullptr.
    ---@param entity Entity
    ---@param script ScrHandle
    ---@return string
    ---@return ScrHandle
    GET_ENTITY_SCRIPT = function(entity, script) end,

    ---result is in meters per second\
    ---\
    ---------------------------------------------------------------\
    ---So would the conversion to mph and km/h, be along the lines of this.\
    ---\
    ---float speed = GET_ENTITY_SPEED(veh);\
    ---float kmh = (speed * 3.6);\
    ---float mph = (speed * 2.236936);\
    ---------------------------------------------------------------
    ---@param entity Entity
    ---@return number
    GET_ENTITY_SPEED = function(entity) end,

    ---Relative can be used for getting speed relative to the frame of the vehicle, to determine for example, if you are going in reverse (-y speed) or not (+y speed). 
    ---@param entity Entity
    ---@param relative BOOL
    ---@return Vector3
    GET_ENTITY_SPEED_VECTOR = function(entity, relative) end,

    ---@param entity Entity
    ---@return number
    GET_ENTITY_UPRIGHT_VALUE = function(entity) end,

    ---@param entity Entity
    ---@return Vector3
    GET_ENTITY_VELOCITY = function(entity) end,

    ---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).
    ---@param entity Entity
    ---@return Object
    GET_OBJECT_INDEX_FROM_ENTITY_INDEX = function(entity) end,

    ---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).
    ---@param entity Entity
    ---@return Ped
    GET_PED_INDEX_FROM_ENTITY_INDEX = function(entity) end,

    ---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).
    ---@param entity Entity
    ---@return Vehicle
    GET_VEHICLE_INDEX_FROM_ENTITY_INDEX = function(entity) end,

    ---Returns the coordinates of an entity-bone.
    ---@param entity Entity
    ---@param boneIndex integer
    ---@return Vector3
    GET_WORLD_POSITION_OF_ENTITY_BONE = function(entity, boneIndex) end,

    ---@param entity Entity
    ---@return Player
    GET_NEAREST_PLAYER_TO_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@param team integer
    ---@return Player
    GET_NEAREST_PLAYER_TO_ENTITY_ON_TEAM = function(entity, team) end,

    ---@param entity Entity
    ---@return integer
    GET_NEAREST_PARTICIPANT_TO_ENTITY = function(entity) end,

    ---Returns:\
    ---0 = no entity\
    ---1 = ped\
    ---2 = vehicle\
    ---3 = object
    ---@param entity Entity
    ---@return integer
    GET_ENTITY_TYPE = function(entity) end,

    ---A population type, from the following enum: https://alloc8or.re/gta5/doc/enums/ePopulationType.txt
    ---@param entity Entity
    ---@return integer
    GET_ENTITY_POPULATION_TYPE = function(entity) end,

    ---@param handle ScrHandle
    ---@return BOOL
    IS_AN_ENTITY = function(handle) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_A_PED = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_A_MISSION_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_A_VEHICLE = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_AN_OBJECT = function(entity) end,

    ---Checks if entity is within x/y/zSize distance of x/y/z. \
    ---\
    ---Last three are unknown ints, almost always p7 = 0, p8 = 1, p9 = 0
    ---@param entity Entity
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xSize number
    ---@param ySize number
    ---@param zSize number
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 integer
    ---@return BOOL
    IS_ENTITY_AT_COORD = function(entity, xPos, yPos, zPos, xSize, ySize, zSize, p7, p8, p9) end,

    ---Checks if entity1 is within the box defined by x/y/zSize of entity2.\
    ---\
    ---Last three parameters are almost alwasy p5 = 0, p6 = 1, p7 = 0
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param xSize number
    ---@param ySize number
    ---@param zSize number
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 integer
    ---@return BOOL
    IS_ENTITY_AT_ENTITY = function(entity1, entity2, xSize, ySize, zSize, p5, p6, p7) end,

    ---Whether the entity is attached to any other entity.
    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED_TO_ANY_OBJECT = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED_TO_ANY_PED = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED_TO_ANY_VEHICLE = function(entity) end,

    ---@param from Entity
    ---@param to Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED_TO_ENTITY = function(from, to) end,

    ---@param entity Entity
    ---@param p1 BOOL
    ---@return BOOL
    IS_ENTITY_DEAD = function(entity, p1) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_IN_AIR = function(entity) end,

    ---`p8` is a debug flag invoking functions in the same path as ``DRAW_MARKER``\
    ---`p10` is some entity flag check, also used in `IS_ENTITY_AT_ENTITY`, `IS_ENTITY_IN_AREA`, and `IS_ENTITY_AT_COORD`.\
    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
    ---@param entity Entity
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param debug BOOL
    ---@param includeZ BOOL
    ---@param p10 Any
    ---@return BOOL
    IS_ENTITY_IN_ANGLED_AREA = function(entity, x1, y1, z1, x2, y2, z2, width, debug, includeZ, p10) end,

    ---@param entity Entity
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 Any
    ---@return BOOL
    IS_ENTITY_IN_AREA = function(entity, x1, y1, z1, x2, y2, z2, p7, p8, p9) end,

    ---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json
    ---@param entity Entity
    ---@param zone string
    ---@return BOOL
    IS_ENTITY_IN_ZONE = function(entity, zone) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_IN_WATER = function(entity) end,

    ---Get how much of the entity is submerged.  1.0f is whole entity.
    ---@param entity Entity
    ---@return number
    GET_ENTITY_SUBMERGED_LEVEL = function(entity) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_REQUIRES_MORE_EXPENSIVE_RIVER_CHECK = function(entity, toggle) end,

    ---Returns true if the entity is in between the minimum and maximum values for the 2d screen coords. \
    ---This means that it will return true even if the entity is behind a wall for example, as long as you're looking at their location. \
    ---Chipping
    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ON_SCREEN = function(entity) end,

    ---See also PED::IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM 0x6EC47A344923E1ED 0x3C30B447\
    ---\
    ---Taken from ENTITY::IS_ENTITY_PLAYING_ANIM(PLAYER::PLAYER_PED_ID(), "creatures@shark@move", "attack_player", 3)\
    ---\
    ---p4 is always 3 in the scripts.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDict string
    ---@param animName string
    ---@param taskFlag integer
    ---@return BOOL
    IS_ENTITY_PLAYING_ANIM = function(entity, animDict, animName, taskFlag) end,

    ---a static ped will not react to natives like "APPLY_FORCE_TO_ENTITY" or "SET_ENTITY_VELOCITY" and oftentimes will not react to task-natives like "TASK::TASK_COMBAT_PED". The only way I know of to make one of these peds react is to ragdoll them (or sometimes to use CLEAR_PED_TASKS_IMMEDIATELY(). Static peds include almost all far-away peds, beach-combers, peds in certain scenarios, peds crossing a crosswalk, peds walking to get back into their cars, and others. If anyone knows how to make a ped non-static without ragdolling them, please edit this with the solution.
    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_STATIC = function(entity) end,

    ---@param entity Entity
    ---@param targetEntity Entity
    ---@return BOOL
    IS_ENTITY_TOUCHING_ENTITY = function(entity, targetEntity) end,

    ---@param entity Entity
    ---@param modelHash Hash
    ---@return BOOL
    IS_ENTITY_TOUCHING_MODEL = function(entity, modelHash) end,

    ---@param entity Entity
    ---@param angle number
    ---@return BOOL
    IS_ENTITY_UPRIGHT = function(entity, angle) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_UPSIDEDOWN = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_VISIBLE = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_VISIBLE_TO_SCRIPT = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_OCCLUDED = function(entity) end,

    ---@param entityModelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 BOOL
    ---@return BOOL
    WOULD_ENTITY_BE_OCCLUDED = function(entityModelHash, x, y, z, p4) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_WAITING_FOR_WORLD_COLLISION = function(entity) end,

    ---Applies a force to the specified entity.\
    ---\
    ---**List of force types (p1)**:\
    ---public enum ForceType\
    ---{\
    ---    MinForce = 0,\
    ---    MaxForceRot = 1,\
    ---    MinForce2 = 2,\
    ---    MaxForceRot2 = 3,\
    ---    ForceNoRot = 4,\
    ---    ForceRotPlusForce = 5\
    ---}\
    ---Research/documentation on the gtaforums can be found here https://gtaforums.com/topic/885669-precisely-define-object-physics/) and here https://gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/.\
    ---\
    ---p6/relative - makes the xyz force not relative to world coords, but to something else\
    ---p7/highForce - setting false will make the force really low
    ---@param entity Entity
    ---@param forceType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 BOOL
    ---@param isDirectionRel BOOL
    ---@param isForceRel BOOL
    ---@param p8 BOOL
    APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS = function(entity, forceType, x, y, z, p5, isDirectionRel, isForceRel, p8) end,

    ---Documented here:\
    ---gtaforums.com/topic/885669-precisely-define-object-physics/\
    ---gtaforums.com/topic/887362-apply-forces-and-momentums-to-entityobject/\
    ---\
    ---forceFlags:\
    ---First bit (lowest): Strong force flag, factor 100\
    ---Second bit: Unkown flag\
    ---Third bit: Momentum flag=1 (vector (x,y,z) is a momentum, more research needed)\
    ---If higher bits are unequal 0 the function doesn't applay any forces at all.\
    ---(As integer possible values are 0-7)\
    ---\
    ---0: weak force\
    ---1: strong force\
    ---2: same as 0 (2nd bit?)\
    ---3: same as 1\
    ---4: weak momentum\
    ---5: strong momentum\
    ---6: same as 4\
    ---7: same as 5\
    ---\
    ---isLocal: vector defined in local (body-fixed) coordinate frame\
    ---isMassRel: if true the force gets multiplied with the objects mass (this is why it was known as highForce) and different objects will have the same acceleration.\
    ---\
    ---p8 !!! Whenever I set this !=0, my script stopped.
    ---@param entity Entity
    ---@param forceFlags integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param offX number
    ---@param offY number
    ---@param offZ number
    ---@param boneIndex integer
    ---@param isDirectionRel BOOL
    ---@param ignoreUpVec BOOL
    ---@param isForceRel BOOL
    ---@param p12 BOOL
    ---@param p13 BOOL
    APPLY_FORCE_TO_ENTITY = function(entity, forceFlags, x, y, z, offX, offY, offZ, boneIndex, isDirectionRel, ignoreUpVec, isForceRel, p12, p13) end,

    ---Attaches entity1 to bone (boneIndex) of entity2.\
    ---\
    ---boneIndex - this is different to boneID, use GET_PED_BONE_INDEX to get the index from the ID. use the index for attaching to specific bones. entity1 will be attached to entity2's centre if bone index given doesn't correspond to bone indexes for that entity type.\
    ---\
    ---useSoftPinning - if set to false attached entity will not detach when fixed\
    ---collision - controls collision between the two entities (FALSE disables collision).\
    ---isPed - pitch doesnt work when false and roll will only work on negative numbers (only peds)\
    ---vertexIndex - position of vertex\
    ---fixedRot - if false it ignores entity vector \
    ---
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param boneIndex integer
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param p9 BOOL
    ---@param useSoftPinning BOOL
    ---@param collision BOOL
    ---@param isPed BOOL
    ---@param vertexIndex integer
    ---@param fixedRot BOOL
    ---@param p15 Any
    ATTACH_ENTITY_TO_ENTITY = function(entity1, entity2, boneIndex, xPos, yPos, zPos, xRot, yRot, zRot, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot, p15) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param boneIndex1 integer
    ---@param boneIndex2 integer
    ---@param p4 BOOL
    ---@param p5 BOOL
    ATTACH_ENTITY_BONE_TO_ENTITY_BONE = function(entity1, entity2, boneIndex1, boneIndex2, p4, p5) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param boneIndex1 integer
    ---@param boneIndex2 integer
    ---@param p4 BOOL
    ---@param p5 BOOL
    ATTACH_ENTITY_BONE_TO_ENTITY_BONE_Y_FORWARD = function(entity1, entity2, boneIndex1, boneIndex2, p4, p5) end,

    ---breakForce is the amount of force required to break the bond.\
    ---p14 - is always 1 in scripts\
    ---p15 - is 1 or 0 in scripts - unknoun what it does\
    ---p16 - controls collision between the two entities (FALSE disables collision).\
    ---p17 - do not teleport entity to be attached to the position of the bone Index of the target entity (if 1, entity will not be teleported to target bone)\
    ---p18 - is always 2 in scripts.\
    ---\
    ---
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param boneIndex1 integer
    ---@param boneIndex2 integer
    ---@param xPos1 number
    ---@param yPos1 number
    ---@param zPos1 number
    ---@param xPos2 number
    ---@param yPos2 number
    ---@param zPos2 number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param breakForce number
    ---@param fixedRot BOOL
    ---@param p15 BOOL
    ---@param collision BOOL
    ---@param p17 BOOL
    ---@param p18 integer
    ATTACH_ENTITY_TO_ENTITY_PHYSICALLY = function(entity1, entity2, boneIndex1, boneIndex2, xPos1, yPos1, zPos1, xPos2, yPos2, zPos2, xRot, yRot, zRot, breakForce, fixedRot, p15, collision, p17, p18) end,

    ---@param firstEntityIndex Entity
    ---@param secondEntityIndex Entity
    ---@param firstEntityBoneIndex integer
    ---@param secondEntityBoneIndex integer
    ---@param secondEntityOffsetX number
    ---@param secondEntityOffsetY number
    ---@param secondEntityOffsetZ number
    ---@param firstEntityOffsetX number
    ---@param firstEntityOffsetY number
    ---@param firstEntityOffsetZ number
    ---@param vecRotationX number
    ---@param vecRotationY number
    ---@param vecRotationZ number
    ---@param physicalStrength number
    ---@param constrainRotation BOOL
    ---@param doInitialWarp BOOL
    ---@param collideWithEntity BOOL
    ---@param addInitialSeperation BOOL
    ---@param rotOrder integer
    ---@param invMassScaleA number
    ---@param invMassScaleB number
    ATTACH_ENTITY_TO_ENTITY_PHYSICALLY_OVERRIDE_INVERSE_MASS = function(firstEntityIndex, secondEntityIndex, firstEntityBoneIndex, secondEntityBoneIndex, secondEntityOffsetX, secondEntityOffsetY, secondEntityOffsetZ, firstEntityOffsetX, firstEntityOffsetY, firstEntityOffsetZ, vecRotationX, vecRotationY, vecRotationZ, physicalStrength, constrainRotation, doInitialWarp, collideWithEntity, addInitialSeperation, rotOrder, invMassScaleA, invMassScaleB) end,

    ---Called to update entity attachments.
    ---@param entity Entity
    PROCESS_ENTITY_ATTACHMENTS = function(entity) end,

    ---Returns the index of the bone. If the bone was not found, -1 will be returned. \
    ---\
    ---list:\
    ---https://pastebin.com/D7JMnX1g\
    ---\
    ---BoneNames:\
    ---  chassis,\
    ---  windscreen,\
    ---   seat_pside_r,\
    --- seat_dside_r,\
    --- bodyshell,\
    ---    suspension_lm,\
    ---    suspension_lr,\
    ---    platelight,\
    ---   attach_female,\
    ---    attach_male,\
    ---  bonnet,\
    ---   boot,\
    --- chassis_dummy,  //Center of the dummy\
    --- chassis_Control,    //Not found yet\
    ---   door_dside_f,   //Door left, front\
    ---    door_dside_r,   //Door left, back\
    --- door_pside_f,   //Door right, front\
    ---   door_pside_r,   //Door right, back\
    ---    Gun_GripR,\
    ---    windscreen_f,\
    --- platelight, //Position where the light above the numberplate is located\
    ---   VFX_Emitter,\
    ---  window_lf,  //Window left, front\
    ---  window_lr,  //Window left, back\
    ---   window_rf,  //Window right, front\
    --- window_rr,  //Window right, back\
    ---  engine, //Position of the engine\
    ---  gun_ammo,\
    --- ROPE_ATTATCH,   //Not misspelled. In script "finale_heist2b.c4".\
    ---    wheel_lf,   //Wheel left, front\
    ---   wheel_lr,   //Wheel left, back\
    ---    wheel_rf,   //Wheel right, front\
    ---  wheel_rr,   //Wheel right, back\
    ---   exhaust,    //Exhaust. shows only the position of the stock-exhaust\
    ---   overheat,   //A position on the engine(not exactly sure, how to name it)\
    ---  misc_e, //Not a car-bone.\
    --- seat_dside_f,   //Driver-seat\
    --- seat_pside_f,   //Seat next to driver\
    --- Gun_Nuzzle,\
    ---   seat_r\
    ---\
    ---I doubt that the function is case-sensitive, since I found a "Chassis" and a "chassis". - Just tested: Definitely not case-sensitive.\
    ---\
    ---
    ---@param entity Entity
    ---@param boneName string
    ---@return integer
    GET_ENTITY_BONE_INDEX_BY_NAME = function(entity, boneName) end,

    ---@param entity Entity
    CLEAR_ENTITY_LAST_DAMAGE_ENTITY = function(entity) end,

    ---Deletes the specified entity, then sets the handle pointed to by the pointer to NULL.
    ---@param entity Entity
    ---@return Entity
    DELETE_ENTITY = function(entity) end,

    ---If `collision` is set to true, both entities won't collide with the other until the distance between them is above 4 meters.\
    ---Set `dynamic` to true to keep velocity after dettaching
    ---@param entity Entity
    ---@param dynamic BOOL
    ---@param collision BOOL
    DETACH_ENTITY = function(entity, dynamic, collision) end,

    ---Freezes or unfreezes an entity preventing its coordinates to change by the player if set to `true`. You can still change the entity position using SET_ENTITY_COORDS.
    ---@param entity Entity
    ---@param toggle BOOL
    FREEZE_ENTITY_POSITION = function(entity, toggle) end,

    ---True means it can be deleted by the engine when switching lobbies/missions/etc, false means the script is expected to clean it up.\
    ---\
    ---"Allow Freeze If No Collision"
    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_SHOULD_FREEZE_WAITING_ON_COLLISION = function(entity, toggle) end,

    ---delta and bitset are guessed fields. They are based on the fact that most of the calls have 0 or nil field types passed in.\
    ---\
    ---The only time bitset has a value is 0x4000 and the only time delta has a value is during stealth with usually <1.0f values.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animName string
    ---@param animDict string
    ---@param p3 number
    ---@param loop BOOL
    ---@param stayInAnim BOOL
    ---@param p6 BOOL
    ---@param delta number
    ---@param bitset Any
    ---@return BOOL
    PLAY_ENTITY_ANIM = function(entity, animName, animDict, p3, loop, stayInAnim, p6, delta, bitset) end,

    ---p4 and p7 are usually 1000.0f.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param syncedScene integer
    ---@param animation string
    ---@param propName string
    ---@param p4 number
    ---@param p5 number
    ---@param p6 Any
    ---@param p7 number
    ---@return BOOL
    PLAY_SYNCHRONIZED_ENTITY_ANIM = function(entity, syncedScene, animation, propName, p4, p5, p6, p7) end,

    ---p6,p7 probably animname and animdict\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 Any
    ---@param z2 number
    ---@param p6 string
    ---@param p7 string
    ---@param p8 number
    ---@param p9 number
    ---@param p10 Any
    ---@param p11 number
    ---@return BOOL
    PLAY_SYNCHRONIZED_MAP_ENTITY_ANIM = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10, p11) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 Any
    ---@param z2 number
    ---@return BOOL
    STOP_SYNCHRONIZED_MAP_ENTITY_ANIM = function(x1, y1, z1, x2, y2, z2) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---RAGEPluginHook list: docs.ragepluginhook.net/html/62951c37-a440-478c-b389-c471230ddfc5.htm
    ---@param entity Entity
    ---@param animation string
    ---@param animGroup string
    ---@param p3 number
    ---@return BOOL
    STOP_ENTITY_ANIM = function(entity, animation, animGroup, p3) end,

    ---@param entity Entity
    ---@param p1 number
    ---@param p2 BOOL
    ---@return BOOL
    STOP_SYNCHRONIZED_ENTITY_ANIM = function(entity, p1, p2) end,

    ---if (ENTITY::HAS_ANIM_EVENT_FIRED(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("CreateObject")))
    ---@param entity Entity
    ---@param actionHash Hash
    ---@return BOOL
    HAS_ANIM_EVENT_FIRED = function(entity, actionHash) end,

    ---In the script "player_scene_t_bbfight.c4":\
    ---"if (ENTITY::FIND_ANIM_EVENT_PHASE(&l_16E, &l_19F[v_4/*16*/], v_9, &v_A, &v_B))"\
    ----- &l_16E (p0) is requested as an anim dictionary earlier in the script.\
    ----- &l_19F[v_4/*16*/] (p1) is used in other natives in the script as the "animation" param.\
    ----- v_9 (p2) is instantiated as "victim_fall"; I'm guessing that's another anim\
    -----v_A and v_B (p3 & p4) are both set as -1.0, but v_A is used immediately after this native for: \
    ---"if (v_A < ENTITY::GET_ENTITY_ANIM_CURRENT_TIME(...))"\
    ---Both v_A and v_B are seemingly used to contain both Vector3's and floats, so I can't say what either really is other than that they are both output parameters. p4 looks more like a *Vector3 though\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDictionary string
    ---@param animName string
    ---@param p2 string
    ---@param p3 Any*
    ---@param p4 Any*
    ---@return BOOL
    FIND_ANIM_EVENT_PHASE = function(animDictionary, animName, p2, p3, p4) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDictionary string
    ---@param animName string
    ---@param time number
    SET_ENTITY_ANIM_CURRENT_TIME = function(entity, animDictionary, animName, time) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDictionary string
    ---@param animName string
    ---@param speedMultiplier number
    SET_ENTITY_ANIM_SPEED = function(entity, animDictionary, animName, speedMultiplier) end,

    ---Makes the specified entity (ped, vehicle or object) persistent. Persistent entities will not automatically be removed by the engine.\
    ---\
    ---p1 has no effect when either its on or off \
    ---maybe a quick disassembly will tell us what it does\
    ---\
    ---p2 has no effect when either its on or off \
    ---maybe a quick disassembly will tell us what it does
    ---@param entity Entity
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_ENTITY_AS_MISSION_ENTITY = function(entity, p1, p2) end,

    ---Marks the specified entity (ped, vehicle or object) as no longer needed if its population type is set to the mission type.\
    ---If the entity is ped, it will also clear their tasks immediately just like when CLEAR_PED_TASKS_IMMEDIATELY is called.\
    ---Entities marked as no longer needed, will be deleted as the engine sees fit.\
    ---Use this if you just want to just let the game delete the ped:\
    ---void MarkPedAsAmbientPed(Ped ped) {\
    ---  auto addr = getScriptHandleBaseAddress(ped);\
    ---\
    ---  if (!addr) {\
    ---    return;\
    ---  }\
    ---\
    ---  //the game uses only lower 4 bits as entity population type \
    ---  BYTE origValue = *(BYTE *)(addr + 0xDA);\
    ---  *(BYTE *)(addr + 0xDA) = ((origValue & 0xF0) | ePopulationType::POPTYPE_RANDOM_AMBIENT);\
    ---}
    ---@param entity Entity
    ---@return Entity
    SET_ENTITY_AS_NO_LONGER_NEEDED = function(entity) end,

    ---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.
    ---@param ped Ped
    ---@return Ped
    SET_PED_AS_NO_LONGER_NEEDED = function(ped) end,

    ---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.
    ---@param vehicle Vehicle
    ---@return Vehicle
    SET_VEHICLE_AS_NO_LONGER_NEEDED = function(vehicle) end,

    ---This is an alias of SET_ENTITY_AS_NO_LONGER_NEEDED.
    ---@param object Object
    ---@return Object
    SET_OBJECT_AS_NO_LONGER_NEEDED = function(object) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_CAN_BE_DAMAGED = function(entity, toggle) end,

    ---@param entity Entity
    ---@return BOOL
    GET_ENTITY_CAN_BE_DAMAGED = function(entity) end,

    ---@param entity Entity
    ---@param bCanBeDamaged BOOL
    ---@param relGroup integer
    SET_ENTITY_CAN_BE_DAMAGED_BY_RELATIONSHIP_GROUP = function(entity, bCanBeDamaged, relGroup) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_CAN_ONLY_BE_DAMAGED_BY_SCRIPT_PARTICIPANTS = function(entity, toggle) end,

    ---Sets whether the entity can be targeted without being in line-of-sight.
    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_CAN_BE_TARGETED_WITHOUT_LOS = function(entity, toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    ---@param keepPhysics BOOL
    SET_ENTITY_COLLISION = function(entity, toggle, keepPhysics) end,

    ---@param entity Entity
    ---@return BOOL
    GET_ENTITY_COLLISION_DISABLED = function(entity) end,

    ---@param entity Entity
    ---@param toggle BOOL
    ---@param keepPhysics BOOL
    SET_ENTITY_COMPLETELY_DISABLE_COLLISION = function(entity, toggle, keepPhysics) end,

    ---p7 is always 1 in the scripts. Set to 1, an area around the destination coords for the moved entity is cleared from other entities. \
    --- \
    ---Often ends with 1, 0, 0, 1); in the scripts. It works. \
    ---\
    ---Axis - Invert Axis Flags
    ---@param entity Entity
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@param clearArea BOOL
    SET_ENTITY_COORDS = function(entity, xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea) end,

    ---@param entity Entity
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param alive BOOL
    ---@param deadFlag BOOL
    ---@param ragdollFlag BOOL
    ---@param clearArea BOOL
    SET_ENTITY_COORDS_WITHOUT_PLANTS_RESET = function(entity, xPos, yPos, zPos, alive, deadFlag, ragdollFlag, clearArea) end,

    ---Axis - Invert Axis Flags
    ---@param entity Entity
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    SET_ENTITY_COORDS_NO_OFFSET = function(entity, xPos, yPos, zPos, xAxis, yAxis, zAxis) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_DYNAMIC = function(entity, toggle) end,

    ---Set the heading of an entity in degrees also known as "Yaw".
    ---@param entity Entity
    ---@param heading number
    SET_ENTITY_HEADING = function(entity, heading) end,

    ---health >= 0\
    ---male ped ~= 100 - 200\
    ---female ped ~= 0 - 100
    ---@param entity Entity
    ---@param health integer
    ---@param instigator Entity
    ---@param weaponType Hash
    SET_ENTITY_HEALTH = function(entity, health, instigator, weaponType) end,

    ---Sets a ped or an object totally invincible. It doesn't take any kind of damage. Peds will not ragdoll on explosions and the tazer animation won't apply either.\
    ---\
    ---If you use this for a ped and you want Ragdoll to stay enabled, then do:\
    ---*(DWORD *)(pedAddress + 0x188) |= (1 << 9);\
    ---\
    ---Use this if you want to get the invincibility status:\
    ---  bool IsPedInvincible(Ped ped)\
    --- {\
    ---     auto addr = getScriptHandleBaseAddress(ped);    \
    ---\
    ---        if (addr)\
    ---     {\
    ---         DWORD flag = *(DWORD *)(addr + 0x188);\
    ---            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);\
    ---  }\
    ---\
    ---       return false;\
    --- }
    ---@param entity Entity
    ---@param toggle BOOL
    ---@param dontResetOnCleanup BOOL
    SET_ENTITY_INVINCIBLE = function(entity, toggle, dontResetOnCleanup) end,

    ---@param entity Entity
    ---@param p1 BOOL
    ---@param p2 number
    SET_ENTITY_IS_TARGET_PRIORITY = function(entity, p1, p2) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_LIGHTS = function(entity, toggle) end,

    ---Loads collision grid for an entity spawned outside of a player's loaded area. This allows peds to execute tasks rather than sit dormant because of a lack of a physics grid.\
    ---Certainly not the main usage of this native but when set to true for a Vehicle, it will prevent the vehicle to explode if it is spawned far away from the player.
    ---@param entity Entity
    ---@param toggle BOOL
    ---@param p2 Any
    SET_ENTITY_LOAD_COLLISION_FLAG = function(entity, toggle, p2) end,

    ---@param entity Entity
    ---@return BOOL
    HAS_COLLISION_LOADED_AROUND_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@param speed number
    SET_ENTITY_MAX_SPEED = function(entity, speed) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_ONLY_DAMAGED_BY_PLAYER = function(entity, toggle) end,

    ---@param entity Entity
    ---@param p1 BOOL
    ---@param p2 Any
    SET_ENTITY_ONLY_DAMAGED_BY_RELATIONSHIP_GROUP = function(entity, p1, p2) end,

    ---Enable / disable each type of damage.\
    ---\
    ---waterProof is damage related to water not drowning\
    -----------------\
    ---p7 is to to '1' in am_mp_property_ext/int: ENTITY::SET_ENTITY_PROOFS(uParam0->f_19, true, true, true, true, true, true, 1, true);\
    ---
    ---@param entity Entity
    ---@param bulletProof BOOL
    ---@param fireProof BOOL
    ---@param explosionProof BOOL
    ---@param collisionProof BOOL
    ---@param meleeProof BOOL
    ---@param steamProof BOOL
    ---@param dontResetOnCleanup BOOL
    ---@param waterProof BOOL
    SET_ENTITY_PROOFS = function(entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, dontResetOnCleanup, waterProof) end,

    ---@param entity Entity
    ---@param bulletProof BOOL
    ---@param fireProof BOOL
    ---@param explosionProof BOOL
    ---@param collisionProof BOOL
    ---@param meleeProof BOOL
    ---@param steamProof BOOL
    ---@param p7 BOOL
    ---@param drownProof BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    GET_ENTITY_PROOFS = function(entity, bulletProof, fireProof, explosionProof, collisionProof, meleeProof, steamProof, p7, drownProof) end,

    ---w is the correct parameter name!
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param w number
    SET_ENTITY_QUATERNION = function(entity, x, y, z, w) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_RECORDS_COLLISIONS = function(entity, toggle) end,

    ---rotationOrder refers to the order yaw pitch roll is applied\
    ---value ranges from 0 to 5. What you use for rotationOrder when setting must be the same as rotationOrder when getting the rotation. \
    ---Unsure what value corresponds to what rotation order, more testing will be needed for that.\
    ---For the most part R* uses 1 or 2 as the order.\
    ---p5 is usually set as true\
    ---
    ---@param entity Entity
    ---@param pitch number
    ---@param roll number
    ---@param yaw number
    ---@param rotationOrder integer
    ---@param p5 BOOL
    SET_ENTITY_ROTATION = function(entity, pitch, roll, yaw, rotationOrder, p5) end,

    ---p2 is always 0.
    ---@param entity Entity
    ---@param toggle BOOL
    ---@param p2 BOOL
    SET_ENTITY_VISIBLE = function(entity, toggle, p2) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_WATER_REFLECTION_FLAG = function(entity, toggle) end,

    ---@param entity Entity
    ---@param p1 BOOL
    SET_ENTITY_MIRROR_REFLECTION_FLAG = function(entity, p1) end,

    ---Note that the third parameter(denoted as z) is "up and down" with positive numbers encouraging upwards movement.
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    SET_ENTITY_VELOCITY = function(entity, x, y, z) end,

    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    SET_ENTITY_ANGULAR_VELOCITY = function(entity, x, y, z) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_HAS_GRAVITY = function(entity, toggle) end,

    ---LOD distance can be 0 to 0xFFFF (higher values will result in 0xFFFF) as it is actually stored as a 16-bit value (aka uint16_t).
    ---@param entity Entity
    ---@param value integer
    SET_ENTITY_LOD_DIST = function(entity, value) end,

    ---Returns the LOD distance of an entity.
    ---@param entity Entity
    ---@return integer
    GET_ENTITY_LOD_DIST = function(entity) end,

    ---skin - everything alpha except skin\
    ---Set entity alpha level. Ranging from 0 to 255 but chnages occur after every 20 percent (after every 51).
    ---@param entity Entity
    ---@param alphaLevel integer
    ---@param skin BOOL
    SET_ENTITY_ALPHA = function(entity, alphaLevel, skin) end,

    ---@param entity Entity
    ---@return integer
    GET_ENTITY_ALPHA = function(entity) end,

    ---@param entity Entity
    RESET_ENTITY_ALPHA = function(entity) end,

    ---Similar to RESET_ENTITY_ALPHA
    ---@param entity Entity
    RESET_PICKUP_ENTITY_GLOW = function(entity) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PICKUP_COLLIDES_WITH_PROJECTILES = function(p0, p1) end,

    ---Only called once in the scripts.\
    ---\
    ---Related to weapon objects.\
    ---
    ---@param entity Entity
    ---@param p1 number
    SET_ENTITY_SORT_BIAS = function(entity, p1) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_ALWAYS_PRERENDER = function(entity, toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_RENDER_SCORCHED = function(entity, toggle) end,

    ---Example here: www.gtaforums.com/topic/830463-help-with-turning-lights-green-and-causing-peds-to-crash-into-each-other/#entry1068211340\
    ---\
    ---0 = green\
    ---1 = red\
    ---2 = yellow\
    ---3 = reset changes\
    ---changing lights may not change the behavior of vehicles
    ---@param entity Entity
    ---@param state integer
    SET_ENTITY_TRAFFICLIGHT_OVERRIDE = function(entity, state) end,

    ---@param entity Entity
    SET_ENTITY_IS_IN_VEHICLE = function(entity) end,

    ---Only works with objects!
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param originalModel Hash
    ---@param newModel Hash
    ---@param p6 BOOL
    CREATE_MODEL_SWAP = function(x, y, z, radius, originalModel, newModel, p6) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param originalModel Hash
    ---@param newModel Hash
    ---@param p6 BOOL
    REMOVE_MODEL_SWAP = function(x, y, z, radius, originalModel, newModel, p6) end,

    ---p5 = sets as true in scripts\
    ---Same as the comment for CREATE_MODEL_SWAP unless for some reason p5 affects it this only works with objects as well.\
    ---\
    ---Network players do not see changes done with this.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param p5 BOOL
    CREATE_MODEL_HIDE = function(x, y, z, radius, modelHash, p5) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param p5 BOOL
    CREATE_MODEL_HIDE_EXCLUDING_SCRIPT_OBJECTS = function(x, y, z, radius, modelHash, p5) end,

    ---This native makes entities visible that are hidden by the native CREATE_MODEL_HIDE.\
    ---p5 should be false, true does nothing
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param p5 BOOL
    REMOVE_MODEL_HIDE = function(x, y, z, radius, modelHash, p5) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 Any
    ---@param modelHash Hash
    ---@param p5 BOOL
    CREATE_FORCED_OBJECT = function(x, y, z, p3, modelHash, p5) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param modelHash Hash
    REMOVE_FORCED_OBJECT = function(x, y, z, p3, modelHash) end,

    ---Calling this function disables collision between two entities.\
    ---The importance of the order for entity1 and entity2 is unclear.\
    ---The third parameter, `thisFrame`, decides whether the collision is to be disabled until it is turned back on, or if it's just this frame.
    ---@param entity1 Entity
    ---@param entity2 Entity
    ---@param thisFrameOnly BOOL
    SET_ENTITY_NO_COLLISION_ENTITY = function(entity1, entity2, thisFrameOnly) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    _SET_ENTITY_NO_COLLISION_WITH_NETWORKED_ENTITY = function(entity1, entity2) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_MOTION_BLUR = function(entity, toggle) end,

    ---p1 always false.
    ---@param entity Entity
    ---@param toggle BOOL
    SET_CAN_AUTO_VAULT_ON_ENTITY = function(entity, toggle) end,

    ---p1 always false.
    ---@param entity Entity
    ---@param toggle BOOL
    SET_CAN_CLIMB_ON_ENTITY = function(entity, toggle) end,

    ---Only called within 1 script for x360. 'fm_mission_controller' and it used on an object. \
    ---\
    ---Ran after these 2 natives,\
    ---set_object_targettable(uParam0, 0);\
    ---set_entity_invincible(uParam0, 1);
    ---@param entity Entity
    ---@param toggle BOOL
    SET_WAIT_FOR_COLLISIONS_BEFORE_PROBE = function(entity, toggle) end,

    ---@param entity Entity
    ---@param p1 BOOL
    SET_ENTITY_NOWEAPONDECALS = function(entity, p1) end,

    ---@param entity Entity
    ---@param p1 BOOL
    SET_ENTITY_USE_MAX_DISTANCE_FOR_WATER_REFLECTION = function(entity, p1) end,

    ---Gets the world rotation of the specified bone of the specified entity.
    ---@param entity Entity
    ---@param boneIndex integer
    ---@return Vector3
    GET_ENTITY_BONE_ROTATION = function(entity, boneIndex) end,

    ---Gets the world position of the specified bone of the specified entity.
    ---@param entity Entity
    ---@param boneIndex integer
    ---@return Vector3
    GET_ENTITY_BONE_POSTION = function(entity, boneIndex) end,

    ---Gets the local rotation of the specified bone of the specified entity.
    ---@param entity Entity
    ---@param boneIndex integer
    ---@return Vector3
    GET_ENTITY_BONE_OBJECT_ROTATION = function(entity, boneIndex) end,

    ---@param entity Entity
    ---@param boneIndex integer
    ---@return Vector3
    GET_ENTITY_BONE_OBJECT_POSTION = function(entity, boneIndex) end,

    ---@param entity Entity
    ---@return integer
    GET_ENTITY_BONE_COUNT = function(entity) end,

    ---@param entity Entity
    ENABLE_ENTITY_BULLET_COLLISION = function(entity) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    SET_ENTITY_CAN_ONLY_BE_DAMAGED_BY_ENTITY = function(entity1, entity2) end,

    ---@param entity1 Entity
    ---@param entity2 Entity
    SET_ENTITY_CANT_CAUSE_COLLISION_DAMAGED_ENTITY = function(entity1, entity2) end,

    ---p1 is always set to 1
    ---@param entity Entity
    ---@param p1 Any
    SET_ALLOW_MIGRATE_TO_SPECTATOR = function(entity, p1) end,

    ---Gets the handle of an entity with a specific model hash attached to another entity, such as an object attached to a ped.\
    --- This native does not appear to have anything to do with pickups as in scripts it is used with objects.\
    ---\
    ---Example from fm_mission_controller_2020.c:\
    ---\
    ---iVar8 = ENTITY::GET_ENTITY_OF_TYPE_ATTACHED_TO_ENTITY(bParam0->f_9, joaat("p_cs_clipboard"));
    ---@param entity Entity
    ---@param modelHash Hash
    ---@return Entity
    GET_ENTITY_OF_TYPE_ATTACHED_TO_ENTITY = function(entity, modelHash) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_PICK_UP_BY_CARGOBOB_DISABLED = function(entity, toggle) end
}

EVENT = {
    ---@param ped Ped
    ---@param name Hash
    SET_DECISION_MAKER = function(ped, name) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param name Hash
    ---@param eventType integer
    CLEAR_DECISION_MAKER_EVENT_RESPONSE = function(name, eventType) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt\
    ---\
    ---This is limited to 4 blocked events at a time.
    ---@param name Hash
    ---@param eventType integer
    BLOCK_DECISION_MAKER_EVENT = function(name, eventType) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param name Hash
    ---@param eventType integer
    UNBLOCK_DECISION_MAKER_EVENT = function(name, eventType) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param eventType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration number
    ---@return integer
    ADD_SHOCKING_EVENT_AT_POSITION = function(eventType, x, y, z, duration) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param eventType integer
    ---@param entity Entity
    ---@param duration number
    ---@return integer
    ADD_SHOCKING_EVENT_FOR_ENTITY = function(eventType, entity, duration) end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param eventType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_SHOCKING_EVENT_IN_SPHERE = function(eventType, x, y, z, radius) end,

    ---@param event ScrHandle
    ---@return BOOL
    REMOVE_SHOCKING_EVENT = function(event) end,

    ---@param p0 BOOL
    REMOVE_ALL_SHOCKING_EVENTS = function(p0) end,

    REMOVE_SHOCKING_EVENT_SPAWN_BLOCKING_AREAS = function() end,

    SUPPRESS_SHOCKING_EVENTS_NEXT_FRAME = function() end,

    ---eventType: https://alloc8or.re/gta5/doc/enums/eEventType.txt
    ---@param eventType integer
    SUPPRESS_SHOCKING_EVENT_TYPE_NEXT_FRAME = function(eventType) end,

    SUPPRESS_AGITATION_EVENTS_NEXT_FRAME = function() end
}

EXTRAMETADATA = {
    ---Character types:\
    ---0 = Michael, \
    ---1 = Franklin, \
    ---2 = Trevor, \
    ---3 = MPMale, \
    ---4 = MPFemale
    ---@param character integer
    ---@return integer
    GET_NUM_TATTOO_SHOP_DLC_ITEMS = function(character) end,

    ---Character types:\
    ---0 = Michael, \
    ---1 = Franklin, \
    ---2 = Trevor, \
    ---3 = MPMale, \
    ---4 = MPFemale\
    ---\
    ---\
    ---enum TattooZoneData\
    ---{  \
    ---    ZONE_TORSO = 0,  \
    ---    ZONE_HEAD = 1,  \
    ---    ZONE_LEFT_ARM = 2,  \
    ---    ZONE_RIGHT_ARM = 3,  \
    ---    ZONE_LEFT_LEG = 4,  \
    ---    ZONE_RIGHT_LEG = 5,  \
    ---    ZONE_UNKNOWN = 6,\
    ---    ZONE_NONE = 7,  \
    ---};\
    ---struct outComponent\
    ---{\
    ---    // these vars are suffixed with 4 bytes of padding each.\
    ---    uint unk;\
    ---    int unk2;\
    ---    uint tattooCollectionHash;\
    ---    uint tattooNameHash;\
    ---    int unk3;\
    ---    TattooZoneData zoneId;\
    ---    uint unk4;\
    ---    uint unk5;\
    ---    // maybe more, not sure exactly, decompiled scripts are very vague around this part.\
    ---}
    ---@param characterType integer
    ---@param decorationIndex integer
    ---@param outComponent Any*
    ---@return BOOL
    GET_TATTOO_SHOP_DLC_ITEM_DATA = function(characterType, decorationIndex, outComponent) end,

    ---Returns some sort of index/offset for overlays/decorations.\
    ---\
    ---Character types:\
    ---0 = Michael, \
    ---1 = Franklin, \
    ---2 = Trevor, \
    ---3 = MPMale, \
    ---4 = MPFemale
    ---@param overlayHash Hash
    ---@param p1 Any
    ---@param character integer
    ---@return integer
    GET_TATTOO_SHOP_DLC_ITEM_INDEX = function(overlayHash, p1, character) end,

    ---@param outComponent Any*
    INIT_SHOP_PED_COMPONENT = function(outComponent) end,

    ---@param outProp Any*
    INIT_SHOP_PED_PROP = function(outProp) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@return integer
    SETUP_SHOP_PED_APPAREL_QUERY = function(p0, p1, p2, p3) end,

    ---character is 0 for Michael, 1 for Franklin, 2 for Trevor, 3 for freemode male, and 4 for freemode female.\
    ---\
    ---componentId is between 0 and 11 and corresponds to the usual component slots.\
    ---\
    ---p1 could be the outfit number; unsure.\
    ---\
    ---p2 is usually -1; unknown function.\
    ---\
    ---p3 appears to be for selecting between clothes and props; false is used with components/clothes, true is used with props.\
    ---\
    ---p4 is usually -1; unknown function.\
    ---\
    ---componentId is -1 when p3 is true in decompiled scripts.
    ---@param character integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 BOOL
    ---@param p4 integer
    ---@param componentId integer
    ---@return integer
    SETUP_SHOP_PED_APPAREL_QUERY_TU = function(character, p1, p2, p3, p4, componentId) end,

    ---See https://git.io/JtcRf for example and structs.
    ---@param componentId integer
    ---@param outComponent Any*
    GET_SHOP_PED_QUERY_COMPONENT = function(componentId, outComponent) end,

    ---Returns some sort of index/offset for components.\
    ---Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = false and componentId with the drawable's component slot first, returns -1 otherwise.
    ---@param componentHash Hash
    ---@return integer
    GET_SHOP_PED_QUERY_COMPONENT_INDEX = function(componentHash) end,

    ---More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86
    ---@param componentHash Hash
    ---@param outComponent Any*
    GET_SHOP_PED_COMPONENT = function(componentHash, outComponent) end,

    ---See https://git.io/JtcRf for example and structs.
    ---@param componentId integer
    ---@param outProp Any*
    GET_SHOP_PED_QUERY_PROP = function(componentId, outProp) end,

    ---Returns some sort of index/offset for props.\
    ---Needs _GET_NUM_PROPS_FROM_OUTFIT to be called with p3 = true and componentId = -1 first, returns -1 otherwise.
    ---@param componentHash Hash
    ---@return integer
    GET_SHOP_PED_QUERY_PROP_INDEX = function(componentHash) end,

    ---More info here: https://gist.github.com/root-cause/3b80234367b0c856d60bf5cb4b826f86
    ---@param componentHash Hash
    ---@param outProp Any*
    GET_SHOP_PED_PROP = function(componentHash, outProp) end,

    ---@param entity Entity
    ---@param componentId integer
    ---@param drawableVariant integer
    ---@param textureVariant integer
    ---@return Hash
    GET_HASH_NAME_FOR_COMPONENT = function(entity, componentId, drawableVariant, textureVariant) end,

    ---@param entity Entity
    ---@param componentId integer
    ---@param propIndex integer
    ---@param propTextureIndex integer
    ---@return Hash
    GET_HASH_NAME_FOR_PROP = function(entity, componentId, propIndex, propTextureIndex) end,

    ---@param componentHash Hash
    ---@return integer
    GET_SHOP_PED_APPAREL_VARIANT_COMPONENT_COUNT = function(componentHash) end,

    ---`propHash`: Ped helmet prop hash?\
    ---This native returns 1 when the player helmet has a visor (there is another prop index for the same helmet with closed/opened visor variant) that can be toggled. 0 if there's no alternative version with a visor for this helmet prop.
    ---@param propHash Hash
    ---@return integer
    GET_SHOP_PED_APPAREL_VARIANT_PROP_COUNT = function(propHash) end,

    ---@param componentHash Hash
    ---@param variantComponentIndex integer
    ---@param nameHash Hash
    ---@param enumValue integer
    ---@param componentType integer
    ---@return Hash
    ---@return integer
    ---@return integer
    GET_VARIANT_COMPONENT = function(componentHash, variantComponentIndex, nameHash, enumValue, componentType) end,

    ---@param componentHash Hash
    ---@param variantPropIndex integer
    ---@param nameHash Hash
    ---@param enumValue integer
    ---@param anchorPoint integer
    ---@return Hash
    ---@return integer
    ---@return integer
    GET_VARIANT_PROP = function(componentHash, variantPropIndex, nameHash, enumValue, anchorPoint) end,

    ---Returns number of possible values of the forcedComponentIndex argument of GET_FORCED_COMPONENT.
    ---@param componentHash Hash
    ---@return integer
    GET_SHOP_PED_APPAREL_FORCED_COMPONENT_COUNT = function(componentHash) end,

    ---Returns number of possible values of the forcedPropIndex argument of GET_FORCED_PROP.
    ---@param componentHash Hash
    ---@return integer
    GET_SHOP_PED_APPAREL_FORCED_PROP_COUNT = function(componentHash) end,

    ---@param componentHash Hash
    ---@param forcedComponentIndex integer
    ---@param nameHash Hash
    ---@param enumValue integer
    ---@param componentType integer
    ---@return Hash
    ---@return integer
    ---@return integer
    GET_FORCED_COMPONENT = function(componentHash, forcedComponentIndex, nameHash, enumValue, componentType) end,

    ---@param componentHash Hash
    ---@param forcedPropIndex integer
    ---@param nameHash Hash
    ---@param enumValue integer
    ---@param anchorPoint integer
    ---@return Hash
    ---@return integer
    ---@return integer
    GET_FORCED_PROP = function(componentHash, forcedPropIndex, nameHash, enumValue, anchorPoint) end,

    ---Full list of restriction tags by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedApparelRestrictionTags.json\
    ---\
    ---componentId/last parameter seems to be unused.
    ---@param componentHash Hash
    ---@param restrictionTagHash Hash
    ---@param componentId integer
    ---@return BOOL
    DOES_SHOP_PED_APPAREL_HAVE_RESTRICTION_TAG = function(componentHash, restrictionTagHash, componentId) end,

    ---@param ped Ped
    ---@param componentId integer
    ---@param restrictionTagHash Hash
    ---@return BOOL
    DOES_CURRENT_PED_COMPONENT_HAVE_RESTRICTION_TAG = function(ped, componentId, restrictionTagHash) end,

    ---@param ped Ped
    ---@param componentId integer
    ---@param restrictionTagHash Hash
    ---@return BOOL
    DOES_CURRENT_PED_PROP_HAVE_RESTRICTION_TAG = function(ped, componentId, restrictionTagHash) end,

    ---characters\
    ---\
    ---0: Michael\
    ---1: Franklin\
    ---2: Trevor\
    ---3: MPMale\
    ---4: MPFemale
    ---@param character integer
    ---@param p1 BOOL
    ---@return integer
    SETUP_SHOP_PED_OUTFIT_QUERY = function(character, p1) end,

    ---outfitIndex: from 0 to SETUP_SHOP_PED_OUTFIT_QUERY(characterIndex, false) - 1.\
    ---See https://git.io/JtcB8 for example and outfit struct.
    ---@param outfitIndex integer
    ---@param outfit Any*
    GET_SHOP_PED_QUERY_OUTFIT = function(outfitIndex, outfit) end,

    ---@param p0 Any
    ---@param p1 Any*
    GET_SHOP_PED_OUTFIT = function(p0, p1) end,

    ---@param p0 Any
    ---@return integer
    GET_SHOP_PED_OUTFIT_LOCATE = function(p0) end,

    ---See https://git.io/JtcBH for example and structs.
    ---@param outfitHash Hash
    ---@param variantIndex integer
    ---@param outPropVariant Any*
    ---@return BOOL
    GET_SHOP_PED_OUTFIT_PROP_VARIANT = function(outfitHash, variantIndex, outPropVariant) end,

    ---See https://git.io/JtcBH for example and structs.
    ---@param outfitHash Hash
    ---@param variantIndex integer
    ---@param outComponentVariant Any*
    ---@return BOOL
    GET_SHOP_PED_OUTFIT_COMPONENT_VARIANT = function(outfitHash, variantIndex, outComponentVariant) end,

    ---@return integer
    GET_NUM_DLC_VEHICLES = function() end,

    ---dlcVehicleIndex is 0 to GET_NUM_DLC_VEHICLS() - 1
    ---@param dlcVehicleIndex integer
    ---@return Hash
    GET_DLC_VEHICLE_MODEL = function(dlcVehicleIndex) end,

    ---dlcVehicleIndex takes a number from 0 - GET_NUM_DLC_VEHICLES() - 1.\
    ---outData is a struct of 3 8-byte items.\
    ---The Second item in the struct *(Hash *)(outData + 1) is the vehicle hash.
    ---@param dlcVehicleIndex integer
    ---@param outData Any*
    ---@return BOOL
    GET_DLC_VEHICLE_DATA = function(dlcVehicleIndex, outData) end,

    ---@param dlcVehicleIndex integer
    ---@return integer
    GET_DLC_VEHICLE_FLAGS = function(dlcVehicleIndex) end,

    ---Returns the total number of DLC weapons.
    ---@return integer
    GET_NUM_DLC_WEAPONS = function() end,

    ---Returns the total number of DLC weapons that are available in SP (availableInSP field in shop_weapon.meta).
    ---@return integer
    GET_NUM_DLC_WEAPONS_SP = function() end,

    ---\
    ---dlcWeaponIndex takes a number from 0 - GET_NUM_DLC_WEAPONS() - 1.\
    ---struct DlcWeaponData\
    ---{\
    ---int emptyCheck; //use DLC1::IS_CONTENT_ITEM_LOCKED on this\
    ---int padding1;\
    ---int weaponHash;\
    ---int padding2;\
    ---int unk;\
    ---int padding3;\
    ---int weaponCost;\
    ---int padding4;\
    ---int ammoCost;\
    ---int padding5;\
    ---int ammoType;\
    ---int padding6;\
    ---int defaultClipSize;\
    ---int padding7;\
    ---char nameLabel[64];\
    ---char descLabel[64];\
    ---char desc2Label[64]; // usually "the" + name\
    ---char upperCaseNameLabel[64];\
    ---};
    ---@param dlcWeaponIndex integer
    ---@param outData Any*
    ---@return BOOL
    GET_DLC_WEAPON_DATA = function(dlcWeaponIndex, outData) end,

    ---Same as GET_DLC_WEAPON_DATA but only works for DLC weapons that are available in SP.
    ---@param dlcWeaponIndex integer
    ---@param outData Any*
    ---@return BOOL
    GET_DLC_WEAPON_DATA_SP = function(dlcWeaponIndex, outData) end,

    ---Returns the total number of DLC weapon components.
    ---@param dlcWeaponIndex integer
    ---@return integer
    GET_NUM_DLC_WEAPON_COMPONENTS = function(dlcWeaponIndex) end,

    ---Returns the total number of DLC weapon components that are available in SP.
    ---@param dlcWeaponIndex integer
    ---@return integer
    GET_NUM_DLC_WEAPON_COMPONENTS_SP = function(dlcWeaponIndex) end,

    ---p0 seems to be the weapon index\
    ---p1 seems to be the weapon component index\
    ---struct DlcComponentData{\
    ---int attachBone;\
    ---int padding1;\
    ---int bActiveByDefault;\
    ---int padding2;\
    ---int unk;\
    ---int padding3;\
    ---int componentHash;\
    ---int padding4;\
    ---int unk2;\
    ---int padding5;\
    ---int componentCost;\
    ---int padding6;\
    ---char nameLabel[64];\
    ---char descLabel[64];\
    ---};\
    ---
    ---@param dlcWeaponIndex integer
    ---@param dlcWeapCompIndex integer
    ---@param ComponentDataPtr Any*
    ---@return BOOL
    GET_DLC_WEAPON_COMPONENT_DATA = function(dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr) end,

    ---Same as GET_DLC_WEAPON_COMPONENT_DATA but only works for DLC components that are available in SP.
    ---@param dlcWeaponIndex integer
    ---@param dlcWeapCompIndex integer
    ---@param ComponentDataPtr Any*
    ---@return BOOL
    GET_DLC_WEAPON_COMPONENT_DATA_SP = function(dlcWeaponIndex, dlcWeapCompIndex, ComponentDataPtr) end,

    ---@param itemHash Hash
    ---@return BOOL
    IS_CONTENT_ITEM_LOCKED = function(itemHash) end,

    ---@param hash Hash
    ---@return BOOL
    IS_DLC_VEHICLE_MOD = function(hash) end,

    ---@param hash Hash
    ---@return Hash
    GET_DLC_VEHICLE_MOD_LOCK_HASH = function(hash) end,

    ---From fm_deathmatch_creator and fm_race_creator:\
    ---\
    ---FILES::REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP_SP"));\
    ---FILES::EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP"));
    ---@param hash Hash
    EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL = function(hash) end,

    ---From fm_deathmatch_creator and fm_race_creator:\
    ---\
    ---FILES::REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP_SP"));\
    ---FILES::EXECUTE_CONTENT_CHANGESET_GROUP_FOR_ALL(joaat("GROUP_MAP"));
    ---@param hash Hash
    REVERT_CONTENT_CHANGESET_GROUP_FOR_ALL = function(hash) end
}

FIRE = {
    ---Starts a fire:\
    ---\
    ---xyz: Location of fire\
    ---maxChildren: The max amount of times a fire can spread to other objects. Must be 25 or less, or the function will do nothing.\
    ---isGasFire: Whether or not the fire is powered by gasoline.
    ---@param X number
    ---@param Y number
    ---@param Z number
    ---@param maxChildren integer
    ---@param isGasFire BOOL
    ---@return FireId
    START_SCRIPT_FIRE = function(X, Y, Z, maxChildren, isGasFire) end,

    ---@param fireHandle FireId
    REMOVE_SCRIPT_FIRE = function(fireHandle) end,

    ---@param entity Entity
    ---@return FireId
    START_ENTITY_FIRE = function(entity) end,

    ---@param entity Entity
    STOP_ENTITY_FIRE = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ON_FIRE = function(entity) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return integer
    GET_NUMBER_OF_FIRES_IN_RANGE = function(x, y, z, radius) end,

    ---@param p0 number
    SET_FLAMMABILITY_MULTIPLIER = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    STOP_FIRE_IN_RANGE = function(x, y, z, radius) end,

    ---Returns TRUE if it found something. FALSE if not.
    ---@param outPosition Vector3
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return BOOL
    GET_CLOSEST_FIRE_POS = function(outPosition, x, y, z) end,

    ---BOOL isAudible = If explosion makes a sound.\
    ---BOOL isInvisible = If the explosion is invisible or not.\
    ---\
    ---explosionType: https://alloc8or.re/gta5/doc/enums/eExplosionTag.txt
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param explosionType integer
    ---@param damageScale number
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param cameraShake number
    ---@param noDamage BOOL
    ADD_EXPLOSION = function(x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake, noDamage) end,

    ---isAudible: If explosion makes a sound.\
    ---isInvisible: If the explosion is invisible or not.\
    ---explosionType: See ADD_EXPLOSION.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param explosionType integer
    ---@param damageScale number
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param cameraShake number
    ADD_OWNED_EXPLOSION = function(ped, x, y, z, explosionType, damageScale, isAudible, isInvisible, cameraShake) end,

    ---isAudible: If explosion makes a sound.\
    ---isInvisible: If the explosion is invisible or not.\
    ---explosionType: See ADD_EXPLOSION.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param explosionType integer
    ---@param explosionFx Hash
    ---@param damageScale number
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param cameraShake number
    ADD_EXPLOSION_WITH_USER_VFX = function(x, y, z, explosionType, explosionFx, damageScale, isAudible, isInvisible, cameraShake) end,

    ---explosionType: See ADD_EXPLOSION.
    ---@param explosionType integer
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    IS_EXPLOSION_IN_AREA = function(explosionType, x1, y1, z1, x2, y2, z2) end,

    ---explosionType: See ADD_EXPLOSION.
    ---@param explosionType integer
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    IS_EXPLOSION_ACTIVE_IN_AREA = function(explosionType, x1, y1, z1, x2, y2, z2) end,

    ---explosionType: See ADD_EXPLOSION.
    ---@param explosionType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_EXPLOSION_IN_SPHERE = function(explosionType, x, y, z, radius) end,

    ---explosionType: See ADD_EXPLOSION.
    ---@param explosionType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return Entity
    GET_OWNER_OF_EXPLOSION_IN_SPHERE = function(explosionType, x, y, z, radius) end,

    ---explosionType: See ADD_EXPLOSION, -1 for any explosion type\
    ---
    ---@param explosionType integer
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@return BOOL
    IS_EXPLOSION_IN_ANGLED_AREA = function(explosionType, x1, y1, z1, x2, y2, z2, width) end,

    ---Returns a handle to the first entity within the a circle spawned inside the 2 points from a radius.\
    ---\
    ---explosionType: See ADD_EXPLOSION.
    ---@param explosionType integer
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param radius number
    ---@return Entity
    GET_OWNER_OF_EXPLOSION_IN_ANGLED_AREA = function(explosionType, x1, y1, z1, x2, y2, z2, radius) end,

    ---@param expect BOOL
    ---@param player Player
    _NETWORK_EXPECT_EXPLOSION_EVENTS_FOR_PLAYER = function(expect, player) end,

    ---@return integer
    _GET_MAXIMUM_NUMBER_OF_WATER_CANNONS = function() end,

    ---@param index integer
    ---@return Vector3
    _GET_WATER_CANNON_COORDS = function(index) end
}

GRAPHICS = {
    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param enabled BOOL
    SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE = function(enabled) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param alpha integer
    DRAW_DEBUG_LINE = function(x1, y1, z1, x2, y2, z2, r, g, b, alpha) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param r1 integer
    ---@param g1 integer
    ---@param b1 integer
    ---@param r2 integer
    ---@param g2 integer
    ---@param b2 integer
    ---@param alpha1 integer
    ---@param alpha2 integer
    DRAW_DEBUG_LINE_WITH_TWO_COLOURS = function(x1, y1, z1, x2, y2, z2, r1, g1, b1, r2, g2, b2, alpha1, alpha2) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_DEBUG_SPHERE = function(x, y, z, radius, red, green, blue, alpha) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param alpha integer
    DRAW_DEBUG_BOX = function(x1, y1, z1, x2, y2, z2, r, g, b, alpha) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param size number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_DEBUG_CROSS = function(x, y, z, size, red, green, blue, alpha) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param text string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_DEBUG_TEXT = function(text, x, y, z, red, green, blue, alpha) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param text string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_DEBUG_TEXT_2D = function(text, x, y, z, red, green, blue, alpha) end,

    ---Draws a depth-tested line from one point to another.\
    -------------------\
    ---x1, y1, z1 : Coordinates for the first point\
    ---x2, y2, z2 : Coordinates for the second point\
    ---r, g, b, alpha : Color with RGBA-Values\
    ---I recommend using a predefined function to call this.\
    ---[VB.NET]\
    ---Public Sub DrawLine(from As Vector3, [to] As Vector3, col As Color)\
    ---    [Function].Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, [to].X, [to].Y, [to].Z, col.R, col.G, col.B, col.A)\
    ---End Sub\
    ---\
    ---[C#]\
    ---public void DrawLine(Vector3 from, Vector3 to, Color col)\
    ---{\
    ---    Function.Call(Hash.DRAW_LINE, from.X, from.Y, from.Z, to.X, to.Y, to.Z, col.R, col.G, col.B, col.A);\
    ---}
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_LINE = function(x1, y1, z1, x2, y2, z2, red, green, blue, alpha) end,

    ---x/y/z - Location of a vertex (in world coords), presumably.\
    -------------------\
    ---x1, y1, z1     : Coordinates for the first point\
    ---x2, y2, z2     : Coordinates for the second point\
    ---x3, y3, z3     : Coordinates for the third point\
    ---r, g, b, alpha : Color with RGBA-Values\
    ---\
    ---Keep in mind that only one side of the drawn triangle is visible: It's the side, in which the vector-product of the vectors heads to: (b-a)x(c-a) Or (b-a)x(c-b).\
    ---But be aware: The function seems to work somehow differently. I have trouble having them drawn in rotated orientation. Try it yourself and if you somehow succeed, please edit this and post your solution.\
    ---I recommend using a predefined function to call this.\
    ---[VB.NET]\
    ---Public Sub DrawPoly(a As Vector3, b As Vector3, c As Vector3, col As Color)\
    ---    [Function].Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A)\
    ---End Sub\
    ---\
    ---[C#]\
    ---public void DrawPoly(Vector3 a, Vector3 b, Vector3 c, Color col)\
    ---{\
    ---    Function.Call(Hash.DRAW_POLY, a.X, a.Y, a.Z, b.X, b.Y, b.Z, c.X, c.Y, c.Z, col.R, col.G, col.B, col.A);\
    ---}\
    ---BTW: Intersecting triangles are not supported: They overlap in the order they were called.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_POLY = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha) end,

    ---Used for drawling Deadline trailing lights, see deadline.ytd\
    ---\
    ---p15 through p23 are values that appear to be related to illiumation, scaling, and rotation; more testing required.\
    ---For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param textureDict string
    ---@param textureName string
    ---@param u1 number
    ---@param v1 number
    ---@param w1 number
    ---@param u2 number
    ---@param v2 number
    ---@param w2 number
    ---@param u3 number
    ---@param v3 number
    ---@param w3 number
    DRAW_TEXTURED_POLY = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red, green, blue, alpha, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) end,

    ---Used for drawling Deadline trailing lights, see deadline.ytd\
    ---\
    ---Each vertex has its own colour that is blended/illuminated on the texture. Additionally, the R, G, and B components are floats that are int-casted internally.\
    ---For UVW mapping (u,v,w parameters), reference your favourite internet resource for more details.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param red1 number
    ---@param green1 number
    ---@param blue1 number
    ---@param alpha1 integer
    ---@param red2 number
    ---@param green2 number
    ---@param blue2 number
    ---@param alpha2 integer
    ---@param red3 number
    ---@param green3 number
    ---@param blue3 number
    ---@param alpha3 integer
    ---@param textureDict string
    ---@param textureName string
    ---@param u1 number
    ---@param v1 number
    ---@param w1 number
    ---@param u2 number
    ---@param v2 number
    ---@param w2 number
    ---@param u3 number
    ---@param v3 number
    ---@param w3 number
    DRAW_TEXTURED_POLY_WITH_THREE_COLOURS = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, red1, green1, blue1, alpha1, red2, green2, blue2, alpha2, red3, green3, blue3, alpha3, textureDict, textureName, u1, v1, w1, u2, v2, w2, u3, v3, w3) end,

    ---x,y,z = start pos\
    ---x2,y2,z2 = end pos\
    ---\
    ---Draw's a 3D Box between the two x,y,z coords.\
    -----------------\
    ---Keep in mind that the edges of the box do only align to the worlds base-vectors. Therefore something like rotation cannot be applied. That means this function is pretty much useless, unless you want a static unicolor box somewhere.\
    ---I recommend using a predefined function to call this.\
    ---[VB.NET]\
    ---Public Sub DrawBox(a As Vector3, b As Vector3, col As Color)\
    ---    [Function].Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A)\
    ---End Sub\
    ---\
    ---[C#]\
    ---public void DrawBox(Vector3 a, Vector3 b, Color col)\
    ---{\
    ---    Function.Call(Hash.DRAW_BOX,a.X, a.Y, a.Z,b.X, b.Y, b.Z,col.R, col.G, col.B, col.A);\
    ---}
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_BOX = function(x1, y1, z1, x2, y2, z2, red, green, blue, alpha) end,

    ---@param toggle BOOL
    SET_BACKFACECULLING = function(toggle) end,

    ---@param toggle BOOL
    SET_DEPTHWRITING = function(toggle) end,

    ---@return BOOL
    BEGIN_TAKE_MISSION_CREATOR_PHOTO = function() end,

    ---@return integer
    GET_STATUS_OF_TAKE_MISSION_CREATOR_PHOTO = function() end,

    FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    LOAD_MISSION_CREATOR_PHOTO = function(p0, p1, p2, p3) end,

    ---@param p0 Any*
    ---@return integer
    GET_STATUS_OF_LOAD_MISSION_CREATOR_PHOTO = function(p0) end,

    ---@return BOOL
    BEGIN_CREATE_MISSION_CREATOR_PHOTO_PREVIEW = function() end,

    ---@return integer
    GET_STATUS_OF_CREATE_MISSION_CREATOR_PHOTO_PREVIEW = function() end,

    FREE_MEMORY_FOR_MISSION_CREATOR_PHOTO_PREVIEW = function() end,

    ---@return BOOL
    BEGIN_TAKE_HIGH_QUALITY_PHOTO = function() end,

    ---@return integer
    GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO = function() end,

    FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO = function() end,

    ---@param toggle BOOL
    SET_TAKEN_PHOTO_IS_MUGSHOT = function(toggle) end,

    ---@param p0 Any
    ---@param p1 integer
    SET_ARENA_THEME_AND_VARIATION_FOR_TAKEN_PHOTO = function(p0, p1) end,

    ---@param p0 Any
    SET_ON_ISLAND_X_FOR_TAKEN_PHOTO = function(p0) end,

    ---1 match in 1 script. cellphone_controller.\
    ---p0 is -1 in scripts.
    ---@param unused integer
    ---@return BOOL
    SAVE_HIGH_QUALITY_PHOTO = function(unused) end,

    ---@return integer
    GET_STATUS_OF_SAVE_HIGH_QUALITY_PHOTO = function() end,

    ---@param p0 Any
    ---@return BOOL
    BEGIN_CREATE_LOW_QUALITY_COPY_OF_PHOTO = function(p0) end,

    ---@param p0 integer
    ---@return integer
    GET_STATUS_OF_CREATE_LOW_QUALITY_COPY_OF_PHOTO = function(p0) end,

    FREE_MEMORY_FOR_LOW_QUALITY_PHOTO = function() end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    DRAW_LOW_QUALITY_PHOTO_TO_PHONE = function(p0, p1) end,

    ---This function is hard-coded to always return 0.
    ---@return integer
    GET_MAXIMUM_NUMBER_OF_PHOTOS = function() end,

    ---This function is hard-coded to always return 96.
    ---@return integer
    GET_MAXIMUM_NUMBER_OF_CLOUD_PHOTOS = function() end,

    ---@return integer
    GET_CURRENT_NUMBER_OF_CLOUD_PHOTOS = function() end,

    ---2 matches across 2 scripts. Only showed in appcamera & appmedia. Both were 0.
    ---@param p0 Any
    ---@return BOOL
    QUEUE_OPERATION_TO_CREATE_SORTED_LIST_OF_PHOTOS = function(p0) end,

    ---3 matches across 3 scripts. First 2 were 0, 3rd was 1. Possibly a bool.\
    ---appcamera, appmedia, and cellphone_controller.
    ---@param p0 Any
    ---@return integer
    GET_STATUS_OF_SORTED_LIST_OPERATION = function(p0) end,

    CLEAR_STATUS_OF_SORTED_LIST_OPERATION = function() end,

    ---This function is hard-coded to always return 0.
    ---@param p0 Any
    ---@return BOOL
    DOES_THIS_PHOTO_SLOT_CONTAIN_A_VALID_PHOTO = function(p0) end,

    ---This function is hard-coded to always return 0.
    ---@param p0 Any
    ---@return BOOL
    LOAD_HIGH_QUALITY_PHOTO = function(p0) end,

    ---Hardcoded to always return 2.
    ---@param p0 integer
    ---@return integer
    GET_LOAD_HIGH_QUALITY_PHOTO_STATUS = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param range number
    ---@param intensity number
    ---@param shadow number
    DRAW_LIGHT_WITH_RANGEEX = function(x, y, z, r, g, b, range, intensity, shadow) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param colorR integer
    ---@param colorG integer
    ---@param colorB integer
    ---@param range number
    ---@param intensity number
    DRAW_LIGHT_WITH_RANGE = function(posX, posY, posZ, colorR, colorG, colorB, range, intensity) end,

    ---Parameters:\
    ---* pos - coordinate where the spotlight is located\
    ---* dir - the direction vector the spotlight should aim at from its current position\
    ---* r,g,b - color of the spotlight\
    ---* distance - the maximum distance the light can reach\
    ---* brightness - the brightness of the light\
    ---* roundness - "smoothness" of the circle edge\
    ---* radius - the radius size of the spotlight\
    ---* falloff - the falloff size of the light's edge (example: www.i.imgur.com/DemAWeO.jpg)\
    ---\
    ---Example in C# (spotlight aims at the closest vehicle):\
    ---Vector3 myPos = Game.Player.Character.Position;\
    ---Vehicle nearest = World.GetClosestVehicle(myPos , 1000f);\
    ---Vector3 destinationCoords = nearest.Position;\
    ---Vector3 dirVector = destinationCoords - myPos;\
    ---dirVector.Normalize();\
    ---Function.Call(Hash.DRAW_SPOT_LIGHT, pos.X, pos.Y, pos.Z, dirVector.X, dirVector.Y, dirVector.Z, 255, 255, 255, 100.0f, 1f, 0.0f, 13.0f, 1f);
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param dirX number
    ---@param dirY number
    ---@param dirZ number
    ---@param colorR integer
    ---@param colorG integer
    ---@param colorB integer
    ---@param distance number
    ---@param brightness number
    ---@param hardness number
    ---@param radius number
    ---@param falloff number
    DRAW_SPOT_LIGHT = function(posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, hardness, radius, falloff) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param dirX number
    ---@param dirY number
    ---@param dirZ number
    ---@param colorR integer
    ---@param colorG integer
    ---@param colorB integer
    ---@param distance number
    ---@param brightness number
    ---@param roundness number
    ---@param radius number
    ---@param falloff number
    ---@param shadowId integer
    DRAW_SHADOWED_SPOT_LIGHT = function(posX, posY, posZ, dirX, dirY, dirZ, colorR, colorG, colorB, distance, brightness, roundness, radius, falloff, shadowId) end,

    ---@param p0 number
    FADE_UP_PED_LIGHT = function(p0) end,

    ---@param entity Entity
    UPDATE_LIGHTS_ON_ENTITY = function(entity) end,

    ---@param p0 Any
    SET_LIGHT_OVERRIDE_MAX_INTENSITY_SCALE = function(p0) end,

    ---@return number
    GET_LIGHT_OVERRIDE_MAX_INTENSITY_SCALE = function() end,

    ---enum MarkerTypes\
    ---{\
    ---    MarkerTypeUpsideDownCone = 0,\
    --- MarkerTypeVerticalCylinder = 1,\
    ---   MarkerTypeThickChevronUp = 2,\
    --- MarkerTypeThinChevronUp = 3,\
    ---  MarkerTypeCheckeredFlagRect = 4,\
    ---  MarkerTypeCheckeredFlagCircle = 5,\
    ---    MarkerTypeVerticleCircle = 6,\
    --- MarkerTypePlaneModel = 7,\
    --- MarkerTypeLostMCDark = 8,\
    --- MarkerTypeLostMCLight = 9,\
    ---    MarkerTypeNumber0 = 10,\
    ---   MarkerTypeNumber1 = 11,\
    ---   MarkerTypeNumber2 = 12,\
    ---   MarkerTypeNumber3 = 13,\
    ---   MarkerTypeNumber4 = 14,\
    ---   MarkerTypeNumber5 = 15,\
    ---   MarkerTypeNumber6 = 16,\
    ---   MarkerTypeNumber7 = 17,\
    ---   MarkerTypeNumber8 = 18,\
    ---   MarkerTypeNumber9 = 19,\
    ---   MarkerTypeChevronUpx1 = 20,\
    ---   MarkerTypeChevronUpx2 = 21,\
    ---   MarkerTypeChevronUpx3 = 22,\
    ---   MarkerTypeHorizontalCircleFat = 23,\
    ---   MarkerTypeReplayIcon = 24,\
    ---    MarkerTypeHorizontalCircleSkinny = 25,\
    ---    MarkerTypeHorizontalCircleSkinny_Arrow = 26,\
    ---  MarkerTypeHorizontalSplitArrowCircle = 27,\
    ---    MarkerTypeDebugSphere = 28,\
    ---   MarkerTypeDallorSign = 29,\
    ---    MarkerTypeHorizontalBars = 30,\
    ---    MarkerTypeWolfHead = 31\
    ---};\
    ---\
    ---dirX/Y/Z represent a heading on each axis in which the marker should face, alternatively you can rotate each axis independently with rotX/Y/Z (and set dirX/Y/Z all to 0).\
    ---\
    ---faceCamera - Rotates only the y-axis (the heading) towards the camera\
    ---\
    ---p19 - no effect, default value in script is 2\
    ---\
    ---rotate - Rotates only on the y-axis (the heading)\
    ---\
    ---textureDict - Name of texture dictionary to load texture from (e.g. "GolfPutting")\
    ---\
    ---textureName - Name of texture inside dictionary to load (e.g. "PuttingMarker")\
    ---\
    ---drawOnEnts - Draws the marker onto any entities that intersect it\
    ---\
    ---basically what he said, except textureDict and textureName are totally not const char*, or if so, then they are always set to 0/NULL/nullptr in every script I checked, eg:\
    ---\
    ---bj.c: graphics::draw_marker(6, vParam0, 0f, 0f, 1f, 0f, 0f, 0f, 4f, 4f, 4f, 240, 200, 80, iVar1, 0, 0, 2, 0, 0, 0, false);\
    ---\
    ---his is what I used to draw an amber downward pointing chevron "V", has to be redrawn every frame.  The 180 is for 180 degrees rotation around the Y axis, the 50 is alpha, assuming max is 100, but it will accept 255.\
    ---\
    ---GRAPHICS::DRAW_MARKER(2, v.x, v.y, v.z + 2, 0, 0, 0, 0, 180, 0, 2, 2, 2, 255, 128, 0, 50, 0, 1, 1, 0, 0, 0, 0);\
    ---\
    ---
    ---@param type integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param dirX number
    ---@param dirY number
    ---@param dirZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param scaleX number
    ---@param scaleY number
    ---@param scaleZ number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param bobUpAndDown BOOL
    ---@param faceCamera BOOL
    ---@param p19 integer
    ---@param rotate BOOL
    ---@param textureDict string
    ---@param textureName string
    ---@param drawOnEnts BOOL
    DRAW_MARKER = function(type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts) end,

    ---@param type integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param dirX number
    ---@param dirY number
    ---@param dirZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param scaleX number
    ---@param scaleY number
    ---@param scaleZ number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param bobUpAndDown BOOL
    ---@param faceCamera BOOL
    ---@param p19 Any
    ---@param rotate BOOL
    ---@param textureDict string
    ---@param textureName string
    ---@param drawOnEnts BOOL
    ---@param p24 BOOL
    ---@param p25 BOOL
    DRAW_MARKER_EX = function(type, posX, posY, posZ, dirX, dirY, dirZ, rotX, rotY, rotZ, scaleX, scaleY, scaleZ, red, green, blue, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts, p24, p25) end,

    ---Draws a 3D sphere, typically seen in the GTA:O freemode event "Penned In".\
    ---Example https://imgur.com/nCbtS4H\
    ---\
    ---alpha - The alpha for the sphere. Goes from 0.0 to 1.0.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha number
    DRAW_MARKER_SPHERE = function(x, y, z, radius, red, green, blue, alpha) end,

    ---Creates a checkpoint. Returns the handle of the checkpoint.\
    ---\
    ---20/03/17 : Attention, checkpoints are already handled by the game itself, so you must not loop it like markers.\
    ---\
    ---Parameters:\
    ---* type - The type of checkpoint to create. See below for a list of checkpoint types.\
    ---* pos1 - The position of the checkpoint.\
    ---* pos2 - The position of the next checkpoint to point to.\
    ---* radius - The radius of the checkpoint.\
    ---* color - The color of the checkpoint.\
    ---* reserved - Special parameter, see below for details. Usually set to 0 in the scripts.\
    ---\
    ---Checkpoint types:\
    ---0-4---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker\
    ---5-9---------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker\
    ---10-14-------Ring: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker\
    ---15-19-------1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker      \
    ---20-24-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker \
    ---25-29-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker    \
    ---30-34-------Cylinder: 1 arrow, 2 arrow, 3 arrows, CycleArrow, Checker \
    ---35-38-------Ring: Airplane Up, Left, Right, UpsideDown\
    ---39----------?\
    ---40----------Ring: just a ring\
    ---41----------?\
    ---42-44-------Cylinder w/ number (uses 'reserved' parameter)\
    ---45-47-------Cylinder no arrow or number\
    ---\
    ---If using type 42-44, reserved sets number / number and shape to display\
    ---\
    ---0-99------------Just numbers (0-99)\
    ---100-109-----------------Arrow (0-9)\
    ---110-119------------Two arrows (0-9)\
    ---120-129----------Three arrows (0-9)\
    ---130-139----------------Circle (0-9)\
    ---140-149------------CycleArrow (0-9)\
    ---150-159----------------Circle (0-9)\
    ---160-169----Circle  w/ pointer (0-9)\
    ---170-179-------Perforated ring (0-9)\
    ---180-189----------------Sphere (0-9)
    ---@param type integer
    ---@param posX1 number
    ---@param posY1 number
    ---@param posZ1 number
    ---@param posX2 number
    ---@param posY2 number
    ---@param posZ2 number
    ---@param diameter number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param reserved integer
    ---@return integer
    CREATE_CHECKPOINT = function(type, posX1, posY1, posZ1, posX2, posY2, posZ2, diameter, red, green, blue, alpha, reserved) end,

    ---@param checkpoint integer
    ---@param scale number
    SET_CHECKPOINT_INSIDE_CYLINDER_HEIGHT_SCALE = function(checkpoint, scale) end,

    ---@param checkpoint integer
    ---@param scale number
    SET_CHECKPOINT_INSIDE_CYLINDER_SCALE = function(checkpoint, scale) end,

    ---Sets the cylinder height of the checkpoint.\
    ---\
    ---Parameters:\
    ---* nearHeight - The height of the checkpoint when inside of the radius.\
    ---* farHeight - The height of the checkpoint when outside of the radius.\
    ---* radius - The radius of the checkpoint.
    ---@param checkpoint integer
    ---@param nearHeight number
    ---@param farHeight number
    ---@param radius number
    SET_CHECKPOINT_CYLINDER_HEIGHT = function(checkpoint, nearHeight, farHeight, radius) end,

    ---Sets the checkpoint color.
    ---@param checkpoint integer
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    SET_CHECKPOINT_RGBA = function(checkpoint, red, green, blue, alpha) end,

    ---Sets the checkpoint icon color.
    ---@param checkpoint integer
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    SET_CHECKPOINT_RGBA2 = function(checkpoint, red, green, blue, alpha) end,

    ---This does not move an existing checkpoint... so wtf.
    ---@param checkpoint integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param unkX number
    ---@param unkY number
    ---@param unkZ number
    SET_CHECKPOINT_CLIPPLANE_WITH_POS_NORM = function(checkpoint, posX, posY, posZ, unkX, unkY, unkZ) end,

    ---@param checkpoint integer
    SET_CHECKPOINT_FORCE_OLD_ARROW_POINTING = function(checkpoint) end,

    ---Unknown. Called after creating a checkpoint (type: 51) in the creators.
    ---@param checkpoint integer
    SET_CHECKPOINT_DECAL_ROT_ALIGNED_TO_CAMERA_ROT = function(checkpoint) end,

    ---@param checkpoint integer
    SET_CHECKPOINT_FORCE_DIRECTION = function(checkpoint) end,

    ---@param checkpoint integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_CHECKPOINT_DIRECTION = function(checkpoint, posX, posY, posZ) end,

    ---@param checkpoint integer
    DELETE_CHECKPOINT = function(checkpoint) end,

    ---@param p0 BOOL
    DONT_RENDER_IN_GAME_UI = function(p0) end,

    ---@param toggle BOOL
    FORCE_RENDER_IN_GAME_UI = function(toggle) end,

    ---This function can requests texture dictonaries from following RPFs:\
    ---scaleform_generic.rpf\
    ---scaleform_minigames.rpf\
    ---scaleform_minimap.rpf\
    ---scaleform_web.rpf\
    ---\
    ---last param isnt a toggle
    ---@param textureDict string
    ---@param p1 BOOL
    REQUEST_STREAMED_TEXTURE_DICT = function(textureDict, p1) end,

    ---@param textureDict string
    ---@return BOOL
    HAS_STREAMED_TEXTURE_DICT_LOADED = function(textureDict) end,

    ---@param textureDict string
    SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED = function(textureDict) end,

    ---Draws a rectangle on the screen.\
    ---\
    ----x: The relative X point of the center of the rectangle. (0.0-1.0, 0.0 is the left edge of the screen, 1.0 is the right edge of the screen)\
    ---\
    ----y: The relative Y point of the center of the rectangle. (0.0-1.0, 0.0 is the top edge of the screen, 1.0 is the bottom edge of the screen)\
    ---\
    ----width: The relative width of the rectangle. (0.0-1.0, 1.0 means the whole screen width)\
    ---\
    ----height: The relative height of the rectangle. (0.0-1.0, 1.0 means the whole screen height)\
    ---\
    ----R: Red part of the color. (0-255)\
    ---\
    ----G: Green part of the color. (0-255)\
    ---\
    ----B: Blue part of the color. (0-255)\
    ---\
    ----A: Alpha part of the color. (0-255, 0 means totally transparent, 255 means totally opaque)\
    ---\
    ---The total number of rectangles to be drawn in one frame is apparently limited to 399.\
    ---
    ---@param x number
    ---@param y number
    ---@param width number
    ---@param height number
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    ---@param p8 BOOL
    DRAW_RECT = function(x, y, width, height, r, g, b, a, p8) end,

    ---Sets a flag defining whether or not script draw commands should continue being drawn behind the pause menu. This is usually used for TV channels and other draw commands that are used with a world render target.
    ---@param toggle BOOL
    SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU = function(toggle) end,

    ---Sets the draw order for script draw commands.\
    ---\
    ---Examples from decompiled scripts:\
    ---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(7);\
    ---GRAPHICS::DRAW_RECT(0.5, 0.5, 3.0, 3.0, v_4, v_5, v_6, a_0._f172, 0);\
    ---\
    ---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(1);\
    ---GRAPHICS::DRAW_RECT(0.5, 0.5, 1.5, 1.5, 0, 0, 0, 255, 0);
    ---@param drawOrder integer
    SET_SCRIPT_GFX_DRAW_ORDER = function(drawOrder) end,

    ---horizontalAlign: The horizontal alignment. This can be 67 ('C'), 76 ('L'), or 82 ('R').\
    ---verticalAlign: The vertical alignment. This can be 67 ('C'), 66 ('B'), or 84 ('T').\
    ---\
    ---This function anchors script draws to a side of the safe zone. This needs to be called to make the interface independent of the player's safe zone configuration.\
    ---\
    ---These values are equivalent to alignX and alignY in common:/data/ui/frontend.xml, which can be used as a baseline for default alignment.\
    ---\
    ---Using any other value (including 0) will result in the safe zone not being taken into account for this draw. The canonical value for this is 'I' (73).\
    ---\
    ---For example, you can use SET_SCRIPT_GFX_ALIGN(0, 84) to only scale on the Y axis (to the top), but not change the X axis.\
    ---\
    ---To reset the value, use RESET_SCRIPT_GFX_ALIGN.
    ---@param horizontalAlign integer
    ---@param verticalAlign integer
    SET_SCRIPT_GFX_ALIGN = function(horizontalAlign, verticalAlign) end,

    ---This function resets the alignment set using SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS to the default values ('I', 'I'; 0, 0, 0, 0).\
    ---This should be used after having used the aforementioned functions in order to not affect any other scripts attempting to draw.
    RESET_SCRIPT_GFX_ALIGN = function() end,

    ---Sets the draw offset/calculated size for SET_SCRIPT_GFX_ALIGN. If using any alignment other than left/top, the game expects the width/height to be configured using this native in order to get a proper starting position for the draw command.
    ---@param x number
    ---@param y number
    ---@param w number
    ---@param h number
    SET_SCRIPT_GFX_ALIGN_PARAMS = function(x, y, w, h) end,

    ---Calculates the effective X/Y fractions when applying the values set by SET_SCRIPT_GFX_ALIGN and SET_SCRIPT_GFX_ALIGN_PARAMS
    ---@param x number
    ---@param y number
    ---@param calculatedX number
    ---@param calculatedY number
    ---@return number
    ---@return number
    GET_SCRIPT_GFX_ALIGN_POSITION = function(x, y, calculatedX, calculatedY) end,

    ---Gets the scale of safe zone. if the safe zone size scale is max, it will return 1.0.
    ---@return number
    GET_SAFE_ZONE_SIZE = function() end,

    ---Draws a 2D sprite on the screen.\
    ---\
    ---Parameters:\
    ---textureDict - Name of texture dictionary to load texture from (e.g. "CommonMenu", "MPWeaponsCommon", etc.)\
    ---\
    ---textureName - Name of texture to load from texture dictionary (e.g. "last_team_standing_icon", "tennis_icon", etc.)\
    ---\
    ---screenX/Y - Screen offset (0.5 = center)\
    ---scaleX/Y - Texture scaling. Negative values can be used to flip the texture on that axis. (0.5 = half)\
    ---\
    ---heading - Texture rotation in degrees (default = 0.0) positive is clockwise, measured in degrees\
    ---\
    ---red,green,blue - Sprite color (default = 255/255/255)\
    ---\
    ---alpha - opacity level
    ---@param textureDict string
    ---@param textureName string
    ---@param screenX number
    ---@param screenY number
    ---@param width number
    ---@param height number
    ---@param heading number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p11 BOOL
    ---@param p12 Any
    DRAW_SPRITE = function(textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11, p12) end,

    ---Used in arcade games and Beam hack minigame in Doomsday Heist. I will most certainly dive into this to try replicate arcade games.\
    ---x position must be between 0.0 and 1.0 (1.0 being the most right side of the screen)\
    ---y position must be between 0.0 and 1.0 (1.0 being the most bottom side of the screen)\
    ---width 0.0 - 1.0 is the reasonable amount generally\
    ---height 0.0 - 1.0 is the reasonable amount generally\
    ---p6 almost always 0.0\
    ---p11 seems to be unknown but almost always 0 int
    ---@param textureDict string
    ---@param textureName string
    ---@param x number
    ---@param y number
    ---@param width number
    ---@param height number
    ---@param p6 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p11 Any
    ---@param p12 Any
    DRAW_SPRITE_ARX = function(textureDict, textureName, x, y, width, height, p6, red, green, blue, alpha, p11, p12) end,

    ---Similar to _DRAW_SPRITE, but seems to be some kind of "interactive" sprite, at least used by render targets.\
    ---These seem to be the only dicts ever requested by this native:\
    ---\
    ---prop_screen_biker_laptop\
    ---Prop_Screen_GR_Disruption\
    ---Prop_Screen_TaleOfUs\
    ---prop_screen_nightclub\
    ---Prop_Screen_IE_Adhawk\
    ---prop_screen_sm_free_trade_shipping\
    ---prop_screen_hacker_truck\
    ---MPDesktop\
    ---Prop_Screen_Nightclub\
    ---And a few others\
    ---
    ---@param textureDict string
    ---@param textureName string
    ---@param screenX number
    ---@param screenY number
    ---@param width number
    ---@param height number
    ---@param heading number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p11 Any
    DRAW_SPRITE_NAMED_RENDERTARGET = function(textureDict, textureName, screenX, screenY, width, height, heading, red, green, blue, alpha, p11) end,

    ---Similar to DRAW_SPRITE, but allows to specify the texture coordinates used to draw the sprite.\
    ---\
    ---u1, v1 - texture coordinates for the top-left corner\
    ---u2, v2 - texture coordinates for the bottom-right corner
    ---@param textureDict string
    ---@param textureName string
    ---@param x number
    ---@param y number
    ---@param width number
    ---@param height number
    ---@param u1 number
    ---@param v1 number
    ---@param u2 number
    ---@param v2 number
    ---@param heading number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p15 Any
    DRAW_SPRITE_ARX_WITH_UV = function(textureDict, textureName, x, y, width, height, u1, v1, u2, v2, heading, red, green, blue, alpha, p15) end,

    ---Example:\
    ---GRAPHICS::ADD_ENTITY_ICON(a_0, "MP_Arrow");\
    ---\
    ---I tried this and nothing happened...
    ---@param entity Entity
    ---@param icon string
    ---@return integer
    ADD_ENTITY_ICON = function(entity, icon) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_ICON_VISIBILITY = function(entity, toggle) end,

    ---@param entity Entity
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    SET_ENTITY_ICON_COLOR = function(entity, red, green, blue, alpha) end,

    ---Sets the on-screen drawing origin for draw-functions (which is normally x=0,y=0 in the upper left corner of the screen) to a world coordinate.\
    ---From now on, the screen coordinate which displays the given world coordinate on the screen is seen as x=0,y=0.\
    ---\
    ---Example in C#:\
    ---Vector3 boneCoord = somePed.GetBoneCoord(Bone.SKEL_Head);\
    ---Function.Call(Hash.SET_DRAW_ORIGIN, boneCoord.X, boneCoord.Y, boneCoord.Z, 0);\
    ---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, -0.015, 0.013, 0.013, 0.0, 255, 0, 0, 200);\
    ---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, -0.015, 0.013, 0.013, 90.0, 255, 0, 0, 200);\
    ---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", -0.01, 0.015, 0.013, 0.013, 270.0, 255, 0, 0, 200);\
    ---Function.Call(Hash.DRAW_SPRITE, "helicopterhud", "hud_corner", 0.01, 0.015, 0.013, 0.013, 180.0, 255, 0, 0, 200);\
    ---Function.Call(Hash.CLEAR_DRAW_ORIGIN);\
    ---\
    ---Result: www11.pic-upload.de/19.06.15/bkqohvil2uao.jpg\
    ---If the pedestrian starts walking around now, the sprites are always around her head, no matter where the head is displayed on the screen.\
    ---\
    ---This function also effects the drawing of texts and other UI-elements.\
    ---The effect can be reset by calling GRAPHICS::CLEAR_DRAW_ORIGIN().
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 BOOL
    SET_DRAW_ORIGIN = function(x, y, z, p3) end,

    ---Resets the screen's draw-origin which was changed by the function GRAPHICS::SET_DRAW_ORIGIN(...) back to x=0,y=0.\
    ---\
    ---See GRAPHICS::SET_DRAW_ORIGIN(...) for further information.
    CLEAR_DRAW_ORIGIN = function() end,

    ---@param name string
    ---@return integer
    SET_BINK_MOVIE = function(name) end,

    ---@param binkMovie integer
    PLAY_BINK_MOVIE = function(binkMovie) end,

    ---@param binkMovie integer
    STOP_BINK_MOVIE = function(binkMovie) end,

    ---@param binkMovie integer
    RELEASE_BINK_MOVIE = function(binkMovie) end,

    ---@param binkMovie integer
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    DRAW_BINK_MOVIE = function(binkMovie, p1, p2, p3, p4, p5, r, g, b, a) end,

    ---In percentage: 0.0 - 100.0
    ---@param binkMovie integer
    ---@param progress number
    SET_BINK_MOVIE_TIME = function(binkMovie, progress) end,

    ---In percentage: 0.0 - 100.0
    ---@param binkMovie integer
    ---@return number
    GET_BINK_MOVIE_TIME = function(binkMovie) end,

    ---binkMovie: Is return value from _SET_BINK_MOVIE. Has something to do with bink volume? (audRequestedSettings::SetVolumeCurveScale)
    ---@param binkMovie integer
    ---@param value number
    SET_BINK_MOVIE_VOLUME = function(binkMovie, value) end,

    ---@param entity Entity
    ATTACH_TV_AUDIO_TO_ENTITY = function(entity) end,

    ---@param binkMovie integer
    ---@param p1 BOOL
    SET_BINK_MOVIE_AUDIO_FRONTEND = function(binkMovie, p1) end,

    ---Probably changes tvs from being a 3d audio to being "global" audio
    ---@param toggle BOOL
    SET_TV_AUDIO_FRONTEND = function(toggle) end,

    ---@param binkMovie integer
    ---@param bShouldSkip BOOL
    SET_BINK_SHOULD_SKIP = function(binkMovie, bShouldSkip) end,

    ---@param movieMeshSetName string
    ---@return integer
    LOAD_MOVIE_MESH_SET = function(movieMeshSetName) end,

    ---@param movieMeshSet integer
    RELEASE_MOVIE_MESH_SET = function(movieMeshSet) end,

    ---@param p0 Any
    ---@return integer
    QUERY_MOVIE_MESH_SET_STATE = function(p0) end,

    ---int screenresx,screenresy;\
    ---GET_SCREEN_RESOLUTION(&screenresx,&screenresy);
    ---@param x integer
    ---@param y integer
    ---@return integer
    ---@return integer
    GET_SCREEN_RESOLUTION = function(x, y) end,

    ---Returns current screen resolution.
    ---@param x integer
    ---@param y integer
    ---@return integer
    ---@return integer
    GET_ACTUAL_SCREEN_RESOLUTION = function(x, y) end,

    ---@param b BOOL
    ---@return number
    GET_ASPECT_RATIO = function(b) end,

    ---@return number
    GET_SCREEN_ASPECT_RATIO = function() end,

    ---Setting Aspect Ratio Manually in game will return:\
    ---\
    ---false - for Narrow format Aspect Ratios (3:2, 4:3, 5:4, etc. )\
    ---true - for Wide format Aspect Ratios (5:3, 16:9, 16:10, etc. )\
    ---\
    ---Setting Aspect Ratio to "Auto" in game will return "false" or "true" based on the actual set Resolution Ratio.
    ---@return BOOL
    GET_IS_WIDESCREEN = function() end,

    ---false = Any resolution < 1280x720\
    ---true = Any resolution >= 1280x720
    ---@return BOOL
    GET_IS_HIDEF = function() end,

    ADJUST_NEXT_POS_SIZE_AS_NORMALIZED_16_9 = function() end,

    ---Enables Night Vision.\
    ---\
    ---Example:\
    ---C#: Function.Call(Hash.SET_NIGHTVISION, true);\
    ---C++: GRAPHICS::SET_NIGHTVISION(true);\
    ---\
    ---BOOL toggle:\
    ---true = turns night vision on for your player.\
    ---false = turns night vision off for your player.
    ---@param toggle BOOL
    SET_NIGHTVISION = function(toggle) end,

    ---@return BOOL
    GET_REQUESTINGNIGHTVISION = function() end,

    ---@return BOOL
    GET_USINGNIGHTVISION = function() end,

    ---@param toggle BOOL
    SET_EXPOSURETWEAK = function(toggle) end,

    ---@param toggle BOOL
    FORCE_EXPOSURE_READBACK = function(toggle) end,

    ---@param p0 number
    OVERRIDE_NIGHTVISION_LIGHT_RANGE = function(p0) end,

    ---@param toggle BOOL
    SET_NOISEOVERIDE = function(toggle) end,

    ---@param value number
    SET_NOISINESSOVERIDE = function(value) end,

    ---Convert a world coordinate into its relative screen coordinate.  (WorldToScreen)\
    ---\
    ---Returns a boolean; whether or not the operation was successful. It will return false if the coordinates given are not visible to the rendering camera.\
    ---\
    ---\
    ---For .NET users...\
    ---\
    ---VB:\
    ---Public Shared Function World3DToScreen2d(pos as vector3) As Vector2\
    ---\
    ---        Dim x2dp, y2dp As New Native.OutputArgument\
    ---\
    ---        Native.Function.Call(Of Boolean)(Native.Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.x, pos.y, pos.z, x2dp, y2dp)\
    ---        Return New Vector2(x2dp.GetResult(Of Single), y2dp.GetResult(Of Single))\
    ---      \
    ---    End Function\
    ---\
    ---C#:\
    ---Vector2 World3DToScreen2d(Vector3 pos)\
    ---    {\
    ---        var x2dp = new OutputArgument();\
    ---        var y2dp = new OutputArgument();\
    ---\
    ---        Function.Call<bool>(Hash.GET_SCREEN_COORD_FROM_WORLD_COORD , pos.X, pos.Y, pos.Z, x2dp, y2dp);\
    ---        return new Vector2(x2dp.GetResult<float>(), y2dp.GetResult<float>());\
    ---}\
    ---//USE VERY SMALL VALUES FOR THE SCALE OF RECTS/TEXT because it is dramatically larger on screen than in 3D, e.g '0.05' small.\
    ---\
    ---Used to be called _WORLD3D_TO_SCREEN2D\
    ---\
    ---I thought we lost you from the scene forever. It does seem however that calling SET_DRAW_ORIGIN then your natives, then ending it. Seems to work better for certain things such as keeping boxes around people for a predator missile e.g.
    ---@param worldX number
    ---@param worldY number
    ---@param worldZ number
    ---@param screenX number
    ---@param screenY number
    ---@return BOOL
    ---@return number
    ---@return number
    GET_SCREEN_COORD_FROM_WORLD_COORD = function(worldX, worldY, worldZ, screenX, screenY) end,

    ---Returns the texture resolution of the passed texture dict+name.\
    ---\
    ---Note: Most texture resolutions are doubled compared to the console version of the game.
    ---@param textureDict string
    ---@param textureName string
    ---@return Vector3
    GET_TEXTURE_RESOLUTION = function(textureDict, textureName) end,

    ---Overriding ped badge texture to a passed texture. It's synced between players (even custom textures!), don't forget to request used dict on *all* clients to make it sync properly. Can be removed by passing empty strings.
    ---@param ped Ped
    ---@param txd string
    ---@param txn string
    ---@return BOOL
    OVERRIDE_PED_CREW_LOGO_TEXTURE = function(ped, txd, txn) end,

    ---@param p0 number
    SET_DISTANCE_BLUR_STRENGTH_OVERRIDE = function(p0) end,

    ---Purpose of p0 and p1 unknown.
    ---@param p0 number
    ---@param p1 number
    ---@param fadeIn number
    ---@param duration number
    ---@param fadeOut number
    SET_FLASH = function(p0, p1, fadeIn, duration, fadeOut) end,

    DISABLE_OCCLUSION_THIS_FRAME = function() end,

    ---Does not affect weapons, particles, fire/explosions, flashlights or the sun.\
    ---When set to true, all emissive textures (including ped components that have light effects), street lights, building lights, vehicle lights, etc will all be turned off.\
    ---\
    ---Used in Humane Labs Heist for EMP.\
    ---\
    ---state: True turns off all artificial light sources in the map: buildings, street lights, car lights, etc. False turns them back on.
    ---@param state BOOL
    SET_ARTIFICIAL_LIGHTS_STATE = function(state) end,

    ---If "blackout" is enabled, this native allows you to ignore "blackout" for vehicles.
    ---@param toggle BOOL
    SET_ARTIFICIAL_VEHICLE_LIGHTS_STATE = function(toggle) end,

    DISABLE_HDTEX_THIS_FRAME = function() end,

    ---Creates a tracked point, useful for checking the visibility of a 3D point on screen.
    ---@return integer
    CREATE_TRACKED_POINT = function() end,

    ---@param point integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    SET_TRACKED_POINT_INFO = function(point, x, y, z, radius) end,

    ---@param point integer
    ---@return BOOL
    IS_TRACKED_POINT_VISIBLE = function(point) end,

    ---@param point integer
    DESTROY_TRACKED_POINT = function(point) end,

    ---This function is hard-coded to always return 0.
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@return integer
    SET_GRASS_CULL_SPHERE = function(p0, p1, p2, p3) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param handle integer
    REMOVE_GRASS_CULL_SPHERE = function(handle) end,

    ---@param handle integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param scale number
    PROCGRASS_ENABLE_CULLSPHERE = function(handle, x, y, z, scale) end,

    ---@param handle integer
    PROCGRASS_DISABLE_CULLSPHERE = function(handle) end,

    ---@param handle integer
    ---@return BOOL
    PROCGRASS_IS_CULLSPHERE_ENABLED = function(handle) end,

    PROCGRASS_ENABLE_AMBSCALESCAN = function() end,

    PROCGRASS_DISABLE_AMBSCALESCAN = function() end,

    DISABLE_PROCOBJ_CREATION = function() end,

    ENABLE_PROCOBJ_CREATION = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 Any
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param scale number
    GRASSBATCH_ENABLE_FLATTENING_EXT_IN_SPHERE = function(x, y, z, p3, p4, p5, p6, scale) end,

    ---Wraps 0xAAE9BE70EC7C69AB with FLT_MAX as p7
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    GRASSBATCH_ENABLE_FLATTENING_IN_SPHERE = function(x, y, z, radius, p4, p5, p6) end,

    GRASSBATCH_DISABLE_FLATTENING = function() end,

    CASCADE_SHADOWS_INIT_SESSION = function() end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 BOOL
    ---@param p7 number
    CASCADE_SHADOWS_SET_CASCADE_BOUNDS = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@param p0 number
    CASCADE_SHADOWS_SET_CASCADE_BOUNDS_SCALE = function(p0) end,

    ---@param p0 number
    CASCADE_SHADOWS_SET_ENTITY_TRACKER_SCALE = function(p0) end,

    ---@param p0 number
    CASCADE_SHADOWS_SET_SPLIT_Z_EXP_WEIGHT = function(p0) end,

    ---@param p0 Any
    CASCADE_SHADOWS_SET_BOUND_POSITION = function(p0) end,

    ---When this is set to ON, shadows only draw as you get nearer.\
    ---\
    ---When OFF, they draw from a further distance.
    ---@param toggle BOOL
    CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER = function(toggle) end,

    ---@param p0 BOOL
    CASCADE_SHADOWS_SET_SCREEN_SIZE_CHECK_ENABLED = function(p0) end,

    ---Possible values:\
    ---"CSM_ST_POINT"\
    ---"CSM_ST_LINEAR"\
    ---"CSM_ST_TWOTAP"\
    ---"CSM_ST_BOX3x3"\
    ---"CSM_ST_BOX4x4"\
    ---"CSM_ST_DITHER2_LINEAR"\
    ---"CSM_ST_CUBIC"\
    ---"CSM_ST_DITHER4"\
    ---"CSM_ST_DITHER16"\
    ---"CSM_ST_SOFT16"\
    ---"CSM_ST_DITHER16_RPDB"\
    ---"CSM_ST_POISSON16_RPDB_GNORM"\
    ---"CSM_ST_HIGHRES_BOX4x4"\
    ---"CSM_ST_CLOUDS_SIMPLE"\
    ---"CSM_ST_CLOUDS_LINEAR"\
    ---"CSM_ST_CLOUDS_TWOTAP"\
    ---"CSM_ST_CLOUDS_BOX3x3"\
    ---"CSM_ST_CLOUDS_BOX4x4"\
    ---"CSM_ST_CLOUDS_DITHER2_LINEAR"\
    ---"CSM_ST_CLOUDS_SOFT16"\
    ---"CSM_ST_CLOUDS_DITHER16_RPDB"\
    ---"CSM_ST_CLOUDS_POISSON16_RPDB_GNORM"
    ---@param type string
    CASCADE_SHADOWS_SET_SHADOW_SAMPLE_TYPE = function(type) end,

    CASCADE_SHADOWS_CLEAR_SHADOW_SAMPLE_TYPE = function() end,

    ---@param p0 BOOL
    CASCADE_SHADOWS_SET_AIRCRAFT_MODE = function(p0) end,

    ---@param p0 BOOL
    CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_MODE = function(p0) end,

    ---@param p0 number
    CASCADE_SHADOWS_SET_DYNAMIC_DEPTH_VALUE = function(p0) end,

    ---@param p0 BOOL
    CASCADE_SHADOWS_ENABLE_FREEZER = function(p0) end,

    ---@param p0 Any
    WATER_REFLECTION_SET_SCRIPT_OBJECT_VISIBILITY = function(p0) end,

    ---@param toggle BOOL
    GOLF_TRAIL_SET_ENABLED = function(toggle) end,

    ---p8 seems to always be false.
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 BOOL
    GOLF_TRAIL_SET_PATH = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    GOLF_TRAIL_SET_RADIUS = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 integer
    ---@param p5 integer
    ---@param p6 integer
    ---@param p7 integer
    ---@param p8 integer
    ---@param p9 integer
    ---@param p10 integer
    ---@param p11 integer
    GOLF_TRAIL_SET_COLOUR = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) end,

    ---@param p0 integer
    ---@param p1 integer
    GOLF_TRAIL_SET_TESSELLATION = function(p0, p1) end,

    ---@param p0 BOOL
    GOLF_TRAIL_SET_FIXED_CONTROL_POINT_ENABLE = function(p0) end,

    ---12 matches across 4 scripts. All 4 scripts were job creators.\
    ---\
    ---type ranged from 0 - 2.\
    ---p4 was always 0.2f. Likely scale.\
    ---assuming p5 - p8 is RGBA, the graphic is always yellow (255, 255, 0, 255).\
    ---\
    ---Tested but noticed nothing.
    ---@param type integer
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param p4 number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    GOLF_TRAIL_SET_FIXED_CONTROL_POINT = function(type, xPos, yPos, zPos, p4, red, green, blue, alpha) end,

    ---Only appeared in Golf & Golf_mp. Parameters were all ptrs
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    GOLF_TRAIL_SET_SHADER_PARAMS = function(p0, p1, p2, p3, p4) end,

    ---@param p0 BOOL
    GOLF_TRAIL_SET_FACING = function(p0) end,

    ---@return number
    GOLF_TRAIL_GET_MAX_HEIGHT = function() end,

    ---@param p0 integer
    ---@return Vector3
    GOLF_TRAIL_GET_VISUAL_CONTROL_POINT = function(p0) end,

    ---Toggles Heatvision on/off.
    ---@param toggle BOOL
    SET_SEETHROUGH = function(toggle) end,

    ---@return BOOL
    GET_USINGSEETHROUGH = function() end,

    SEETHROUGH_RESET = function() end,

    ---@param distance number
    SEETHROUGH_SET_FADE_STARTDISTANCE = function(distance) end,

    ---@param distance number
    SEETHROUGH_SET_FADE_ENDDISTANCE = function(distance) end,

    ---@return number
    SEETHROUGH_GET_MAX_THICKNESS = function() end,

    ---0.0 = you will not be able to see people behind the walls. 50.0 and more = you will see everyone through the walls. More value is "better" view. See https://gfycat.com/FirmFlippantGourami\
    ---min: 1.0\
    ---max: 10000.0
    ---@param thickness number
    SEETHROUGH_SET_MAX_THICKNESS = function(thickness) end,

    ---@param amount number
    SEETHROUGH_SET_NOISE_MIN = function(amount) end,

    ---@param amount number
    SEETHROUGH_SET_NOISE_MAX = function(amount) end,

    ---@param intensity number
    SEETHROUGH_SET_HILIGHT_INTENSITY = function(intensity) end,

    ---@param noise number
    SEETHROUGH_SET_HIGHLIGHT_NOISE = function(noise) end,

    ---min: 0.0\
    ---max: 0.75
    ---@param index integer
    ---@param heatScale number
    SEETHROUGH_SET_HEATSCALE = function(index, heatScale) end,

    ---@param red integer
    ---@param green integer
    ---@param blue integer
    SEETHROUGH_SET_COLOR_NEAR = function(red, green, blue) end,

    ---Setter for GET_MOTIONBLUR_MAX_VEL_SCALER
    ---@param p0 number
    SET_MOTIONBLUR_MAX_VEL_SCALER = function(p0) end,

    ---Getter for SET_MOTIONBLUR_MAX_VEL_SCALER
    ---@return number
    GET_MOTIONBLUR_MAX_VEL_SCALER = function() end,

    ---@param toggle BOOL
    SET_FORCE_MOTIONBLUR = function(toggle) end,

    ---@param toggle BOOL
    TOGGLE_PLAYER_DAMAGE_OVERLAY = function(toggle) end,

    ---Sets an value related to timecycles.
    ---@param p0 integer
    RESET_ADAPTATION = function(p0) end,

    ---time in ms to transition to fully blurred screen
    ---@param transitionTime number
    ---@return BOOL
    TRIGGER_SCREENBLUR_FADE_IN = function(transitionTime) end,

    ---time in ms to transition from fully blurred to normal
    ---@param transitionTime number
    ---@return BOOL
    TRIGGER_SCREENBLUR_FADE_OUT = function(transitionTime) end,

    DISABLE_SCREENBLUR_FADE = function() end,

    ---@return number
    GET_SCREENBLUR_FADE_CURRENT_TIME = function() end,

    ---Returns whether screen transition to blur/from blur is running.
    ---@return BOOL
    IS_SCREENBLUR_FADE_RUNNING = function() end,

    ---@param toggle BOOL
    TOGGLE_PAUSED_RENDERPHASES = function(toggle) end,

    ---@return BOOL
    GET_TOGGLE_PAUSED_RENDERPHASES_STATUS = function() end,

    RESET_PAUSED_RENDERPHASES = function() end,

    GRAB_PAUSEMENU_OWNERSHIP = function() end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param nearplaneOut number
    ---@param nearplaneIn number
    ---@param farplaneOut number
    ---@param farplaneIn number
    SET_HIDOF_OVERRIDE = function(p0, p1, nearplaneOut, nearplaneIn, farplaneOut, farplaneIn) end,

    ---@param p0 BOOL
    SET_LOCK_ADAPTIVE_DOF_DISTANCE = function(p0) end,

    ---@param p0 BOOL
    ---@return BOOL
    PHONEPHOTOEDITOR_TOGGLE = function(p0) end,

    ---@return BOOL
    PHONEPHOTOEDITOR_IS_ACTIVE = function() end,

    ---@param textureDict string
    ---@param p1 BOOL
    ---@return BOOL
    PHONEPHOTOEDITOR_SET_FRAME_TXD = function(textureDict, p1) end,

    ---GRAPHICS::START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_paleto_roof_impact", -140.8576f, 6420.789f, 41.1391f, 0f, 0f, 267.3957f, 0x3F800000, 0, 0, 0);\
    ---\
    ---Axis - Invert Axis Flags\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json\
    ---\
    ---\
    ----------------------------------------------------------------------\
    ---C#\
    ---\
    ---Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, = you are calling this function.\
    ---\
    ---char *effectname = This is an in-game effect name, for e.g. "scr_fbi4_trucks_crash" is used to give the effects when truck crashes etc\
    ---\
    ---float x, y, z pos = this one is Simple, you just have to declare, where do you want this effect to take place at, so declare the ordinates\
    ---\
    ---float xrot, yrot, zrot = Again simple? just mention the value in case if you want the effect to rotate.\
    ---\
    ---float scale = is declare the scale of the effect, this may vary as per the effects for e.g 1.0f\
    ---\
    ---bool xaxis, yaxis, zaxis = To bool the axis values.\
    ---\
    ---example:\
    ---Function.Call<int>(Hash.START_PARTICLE_FX_NON_LOOPED_AT_COORD, "scr_fbi4_trucks_crash", GTA.Game.Player.Character.Position.X, GTA.Game.Player.Character.Position.Y, GTA.Game.Player.Character.Position.Z + 4f, 0, 0, 0, 5.5f, 0, 0, 0);
    ---@param effectName string
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@return BOOL
    START_PARTICLE_FX_NON_LOOPED_AT_COORD = function(effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@param p11 BOOL
    ---@return BOOL
    START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD = function(effectName, xPos, yPos, zPos, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11) end,

    ---GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE("scr_sh_bong_smoke", PLAYER::PLAYER_PED_ID(), -0.025f, 0.13f, 0f, 0f, 0f, 0f, 31086, 0x3F800000, 0, 0, 0);\
    ---\
    ---Axis - Invert Axis Flags\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param ped Ped
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param boneIndex integer
    ---@param scale number
    ---@param axisX BOOL
    ---@param axisY BOOL
    ---@param axisZ BOOL
    ---@return BOOL
    START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE = function(effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param ped Ped
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param boneIndex integer
    ---@param scale number
    ---@param axisX BOOL
    ---@param axisY BOOL
    ---@param axisZ BOOL
    ---@return BOOL
    START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_PED_BONE = function(effectName, ped, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) end,

    ---Starts a particle effect on an entity for example your player.\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json\
    ---\
    ---Example:\
    ---C#:\
    ---Function.Call(Hash.REQUEST_NAMED_PTFX_ASSET, "scr_rcbarry2");                     Function.Call(Hash.USE_PARTICLE_FX_ASSET, "scr_rcbarry2");                             Function.Call(Hash.START_PARTICLE_FX_NON_LOOPED_ON_ENTITY, "scr_clown_appears", Game.Player.Character, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false);\
    ---\
    ---Internally this calls the same function as GRAPHICS::START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE\
    ---however it uses -1 for the specified bone index, so it should be possible to start a non looped fx on an entity bone using that native\
    ---\
    ----can confirm START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE does NOT work on vehicle bones.
    ---@param effectName string
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param scale number
    ---@param axisX BOOL
    ---@param axisY BOOL
    ---@param axisZ BOOL
    ---@return BOOL
    START_PARTICLE_FX_NON_LOOPED_ON_ENTITY = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param scale number
    ---@param axisX BOOL
    ---@param axisY BOOL
    ---@param axisZ BOOL
    ---@return BOOL
    START_NETWORKED_PARTICLE_FX_NON_LOOPED_ON_ENTITY = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, scale, axisX, axisY, axisZ) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param boneIndex integer
    ---@param scale number
    ---@param axisX BOOL
    ---@param axisY BOOL
    ---@param axisZ BOOL
    ---@return BOOL
    START_PARTICLE_FX_NON_LOOPED_ON_ENTITY_BONE = function(effectName, entity, offsetX, offsetY, offsetZ, rotX, rotY, rotZ, boneIndex, scale, axisX, axisY, axisZ) end,

    ---only works on some fx's, not networked
    ---@param r number
    ---@param g number
    ---@param b number
    SET_PARTICLE_FX_NON_LOOPED_COLOUR = function(r, g, b) end,

    ---Usage example for C#:\
    ---\
    ---Function.Call(Hash.SET_PARTICLE_FX_NON_LOOPED_ALPHA, new InputArgument[] { 0.1f });\
    ---\
    ---Note: the argument alpha ranges from 0.0f-1.0f !
    ---@param alpha number
    SET_PARTICLE_FX_NON_LOOPED_ALPHA = function(alpha) end,

    ---@param scale number
    SET_PARTICLE_FX_NON_LOOPED_SCALE = function(scale) end,

    ---@param p0 number
    ---@param p1 number
    ---@param scale number
    SET_PARTICLE_FX_NON_LOOPED_EMITTER_SIZE = function(p0, p1, scale) end,

    ---Used only once in the scripts (taxi_clowncar)
    ---@param toggle BOOL
    SET_PARTICLE_FX_FORCE_VEHICLE_INTERIOR = function(toggle) end,

    ---GRAPHICS::START_PARTICLE_FX_LOOPED_AT_COORD("scr_fbi_falling_debris", 93.7743f, -749.4572f, 70.86904f, 0f, 0f, 0f, 0x3F800000, 0, 0, 0, 0)\
    ---\
    ---\
    ---p11 seems to be always 0\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@param p11 BOOL
    ---@return integer
    START_PARTICLE_FX_LOOPED_AT_COORD = function(effectName, x, y, z, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, p11) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param ped Ped
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param boneIndex integer
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@return integer
    START_PARTICLE_FX_LOOPED_ON_PED_BONE = function(effectName, ped, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@return integer
    START_PARTICLE_FX_LOOPED_ON_ENTITY = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param boneIndex integer
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@return integer
    START_PARTICLE_FX_LOOPED_ON_ENTITY_BONE = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@param r number
    ---@param g number
    ---@param b number
    ---@param a number
    ---@return integer
    START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, scale, xAxis, yAxis, zAxis, r, g, b, a) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param effectName string
    ---@param entity Entity
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param boneIndex integer
    ---@param scale number
    ---@param xAxis BOOL
    ---@param yAxis BOOL
    ---@param zAxis BOOL
    ---@param r number
    ---@param g number
    ---@param b number
    ---@param a number
    ---@return integer
    START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY_BONE = function(effectName, entity, xOffset, yOffset, zOffset, xRot, yRot, zRot, boneIndex, scale, xAxis, yAxis, zAxis, r, g, b, a) end,

    ---p1 is always 0 in the native scripts
    ---@param ptfxHandle integer
    ---@param p1 BOOL
    STOP_PARTICLE_FX_LOOPED = function(ptfxHandle, p1) end,

    ---@param ptfxHandle integer
    ---@param p1 BOOL
    REMOVE_PARTICLE_FX = function(ptfxHandle, p1) end,

    ---@param entity Entity
    REMOVE_PARTICLE_FX_FROM_ENTITY = function(entity) end,

    ---@param X number
    ---@param Y number
    ---@param Z number
    ---@param radius number
    REMOVE_PARTICLE_FX_IN_RANGE = function(X, Y, Z, radius) end,

    ---@param p0 Any
    ---@param p1 Any
    FORCE_PARTICLE_FX_IN_VEHICLE_INTERIOR = function(p0, p1) end,

    ---@param ptfxHandle integer
    ---@return BOOL
    DOES_PARTICLE_FX_LOOPED_EXIST = function(ptfxHandle) end,

    ---@param ptfxHandle integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    SET_PARTICLE_FX_LOOPED_OFFSETS = function(ptfxHandle, x, y, z, rotX, rotY, rotZ) end,

    ---@param ptfxHandle integer
    ---@param propertyName string
    ---@param amount number
    ---@param noNetwork BOOL
    SET_PARTICLE_FX_LOOPED_EVOLUTION = function(ptfxHandle, propertyName, amount, noNetwork) end,

    ---only works on some fx's\
    ---\
    ---p4 = 0
    ---@param ptfxHandle integer
    ---@param r number
    ---@param g number
    ---@param b number
    ---@param p4 BOOL
    SET_PARTICLE_FX_LOOPED_COLOUR = function(ptfxHandle, r, g, b, p4) end,

    ---@param ptfxHandle integer
    ---@param alpha number
    SET_PARTICLE_FX_LOOPED_ALPHA = function(ptfxHandle, alpha) end,

    ---@param ptfxHandle integer
    ---@param scale number
    SET_PARTICLE_FX_LOOPED_SCALE = function(ptfxHandle, scale) end,

    ---@param ptfxHandle integer
    ---@param range number
    SET_PARTICLE_FX_LOOPED_FAR_CLIP_DIST = function(ptfxHandle, range) end,

    ---@param ptfxHandle integer
    ---@param p1 number
    _SET_PARTICLE_FX_LOOPED_CAMERA_BIAS = function(ptfxHandle, p1) end,

    ---@param p0 BOOL
    SET_PARTICLE_FX_CAM_INSIDE_VEHICLE = function(p0) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_PARTICLE_FX_CAM_INSIDE_NONPLAYER_VEHICLE = function(vehicle, p1) end,

    ---@param p0 Any
    SET_PARTICLE_FX_SHOOTOUT_BOAT = function(p0) end,

    CLEAR_PARTICLE_FX_SHOOTOUT_BOAT = function() end,

    ---@param p0 Any
    SET_PARTICLE_FX_BLOOD_SCALE = function(p0) end,

    ---@param toggle BOOL
    DISABLE_IN_WATER_PTFX = function(toggle) end,

    ---@param toggle BOOL
    DISABLE_DOWNWASH_PTFX = function(toggle) end,

    ---@param scale number
    SET_PARTICLE_FX_SLIPSTREAM_LODRANGE_SCALE = function(scale) end,

    ---Creates cartoon effect when Michel smokes the weed
    ---@param toggle BOOL
    ENABLE_CLOWN_BLOOD_VFX = function(toggle) end,

    ---Creates a motion-blur sort of effect, this native does not seem to work, however by using the `START_SCREEN_EFFECT` native with `DrugsMichaelAliensFight` as the effect parameter, you should be able to get the effect.
    ---@param toggle BOOL
    ENABLE_ALIEN_BLOOD_VFX = function(toggle) end,

    ---@param scale number
    SET_PARTICLE_FX_BULLET_IMPACT_SCALE = function(scale) end,

    ---@param p0 number
    SET_PARTICLE_FX_BULLET_IMPACT_LODRANGE_SCALE = function(p0) end,

    ---@param p0 BOOL
    SET_PARTICLE_FX_BULLET_TRACE_NO_ANGLE_REJECT = function(p0) end,

    ---@param p0 number
    SET_PARTICLE_FX_BANG_SCRAPE_LODRANGE_SCALE = function(p0) end,

    ---@param p0 number
    SET_PARTICLE_FX_FOOT_LODRANGE_SCALE = function(p0) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param p0 string
    SET_PARTICLE_FX_FOOT_OVERRIDE_NAME = function(p0) end,

    ---@param scale number
    SET_SKIDMARK_RANGE_SCALE = function(scale) end,

    ---@param p0 Any
    SET_PTFX_FORCE_VEHICLE_INTERIOR_FLAG = function(p0) end,

    ---@param weaponWorldPosX number
    ---@param weaponWorldPosY number
    ---@param weaponWorldPosZ number
    ---@param intensity number
    REGISTER_POSTFX_BULLET_IMPACT = function(weaponWorldPosX, weaponWorldPosY, weaponWorldPosZ, intensity) end,

    ---@param p0 BOOL
    FORCE_POSTFX_BULLET_IMPACTS_AFTER_HUD = function(p0) end,

    ---From the b678d decompiled scripts:\
    ---\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("FM_Mission_Controler");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_apartment_mp");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_indep_fireworks");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_mp_cig_plane");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_mp_creator");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_ornate_heist");\
    --- GRAPHICS::USE_PARTICLE_FX_ASSET("scr_prison_break_heist_station");\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param name string
    USE_PARTICLE_FX_ASSET = function(name) end,

    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param oldAsset string
    ---@param newAsset string
    SET_PARTICLE_FX_OVERRIDE = function(oldAsset, newAsset) end,

    ---Resets the effect of SET_PARTICLE_FX_OVERRIDE\
    ---\
    ---Full list of particle effect dictionaries and effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/particleEffectsCompact.json
    ---@param name string
    RESET_PARTICLE_FX_OVERRIDE = function(name) end,

    ---Returns ptfxHandle\
    ---effectName: scr_sv_drag_burnout
    ---@param vehicle Vehicle
    ---@param effectName string
    ---@param frontBack BOOL
    ---@param leftRight BOOL
    ---@param localOnly BOOL
    ---@return integer
    _START_VEHICLE_PARTICLE_FX_LOOPED = function(vehicle, effectName, frontBack, leftRight, localOnly) end,

    ---@param p0 BOOL
    SET_WEATHER_PTFX_USE_OVERRIDE_SETTINGS = function(p0) end,

    ---@param p0 number
    SET_WEATHER_PTFX_OVERRIDE_CURR_LEVEL = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    ---@param p4 number
    WASH_DECALS_IN_RANGE = function(x, y, z, range, p4) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    WASH_DECALS_FROM_VEHICLE = function(vehicle, p1) end,

    ---Fades nearby decals within the range specified
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 number
    FADE_DECALS_IN_RANGE = function(x, y, z, p3, p4) end,

    ---Removes all decals in range from a position, it includes the bullet holes, blood pools, petrol...
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    REMOVE_DECALS_IN_RANGE = function(x, y, z, range) end,

    ---@param obj Object
    REMOVE_DECALS_FROM_OBJECT = function(obj) end,

    ---@param obj Object
    ---@param x number
    ---@param y number
    ---@param z number
    REMOVE_DECALS_FROM_OBJECT_FACING = function(obj, x, y, z) end,

    ---@param vehicle Vehicle
    REMOVE_DECALS_FROM_VEHICLE = function(vehicle) end,

    ---decal types:\
    ---\
    ---public enum DecalTypes\
    ---{\
    ---    splatters_blood = 1010,\
    ---    splatters_blood_dir = 1015,\
    ---    splatters_blood_mist = 1017,\
    ---    splatters_mud = 1020,\
    ---    splatters_paint = 1030,\
    ---    splatters_water = 1040,\
    ---    splatters_water_hydrant = 1050,\
    ---    splatters_blood2 = 1110,\
    ---    weapImpact_metal = 4010,\
    ---    weapImpact_concrete = 4020,\
    ---    weapImpact_mattress = 4030,\
    ---    weapImpact_mud = 4032,\
    ---    weapImpact_wood = 4050,\
    ---    weapImpact_sand = 4053,\
    ---    weapImpact_cardboard = 4040,\
    ---    weapImpact_melee_glass = 4100,\
    ---    weapImpact_glass_blood = 4102,\
    ---    weapImpact_glass_blood2 = 4104,\
    ---    weapImpact_shotgun_paper = 4200,\
    ---    weapImpact_shotgun_mattress,\
    ---    weapImpact_shotgun_metal,\
    ---    weapImpact_shotgun_wood,\
    ---    weapImpact_shotgun_dirt,\
    ---    weapImpact_shotgun_tvscreen,\
    ---    weapImpact_shotgun_tvscreen2,\
    ---    weapImpact_shotgun_tvscreen3,\
    ---    weapImpact_melee_concrete = 4310,\
    ---    weapImpact_melee_wood = 4312,\
    ---    weapImpact_melee_metal = 4314,\
    ---    burn1 = 4421,\
    ---    burn2,\
    ---    burn3,\
    ---    burn4,\
    ---    burn5,\
    ---    bang_concrete_bang = 5000,\
    ---    bang_concrete_bang2,\
    ---    bang_bullet_bang,\
    ---    bang_bullet_bang2 = 5004,\
    ---    bang_glass = 5031,\
    ---    bang_glass2,\
    ---    solidPool_water = 9000,\
    ---    solidPool_blood,\
    ---    solidPool_oil,\
    ---    solidPool_petrol,\
    ---    solidPool_mud,\
    ---    porousPool_water,\
    ---    porousPool_blood,\
    ---    porousPool_oil,\
    ---    porousPool_petrol,\
    ---    porousPool_mud,\
    ---    porousPool_water_ped_drip,\
    ---    liquidTrail_water = 9050\
    ---}
    ---@param decalType integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param width number
    ---@param height number
    ---@param rCoef number
    ---@param gCoef number
    ---@param bCoef number
    ---@param opacity number
    ---@param timeout number
    ---@param p17 BOOL
    ---@param p18 BOOL
    ---@param p19 BOOL
    ---@return integer
    ADD_DECAL = function(decalType, posX, posY, posZ, p4, p5, p6, p7, p8, p9, width, height, rCoef, gCoef, bCoef, opacity, timeout, p17, p18, p19) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param groundLvl number
    ---@param width number
    ---@param transparency number
    ---@return integer
    ADD_PETROL_DECAL = function(x, y, z, groundLvl, width, transparency) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param groundLvl number
    ---@param width number
    ---@param transparency number
    ---@return integer
    ADD_OIL_DECAL = function(x, y, z, groundLvl, width, transparency) end,

    ---@param p0 number
    START_PETROL_TRAIL_DECALS = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ADD_PETROL_TRAIL_DECAL_INFO = function(x, y, z, p3) end,

    END_PETROL_TRAIL_DECALS = function() end,

    ---@param decal integer
    REMOVE_DECAL = function(decal) end,

    ---@param decal integer
    ---@return BOOL
    IS_DECAL_ALIVE = function(decal) end,

    ---@param decal integer
    ---@return number
    GET_DECAL_WASH_LEVEL = function(decal) end,

    SET_DISABLE_PETROL_DECALS_IGNITING_THIS_FRAME = function() end,

    SET_DISABLE_PETROL_DECALS_RECYCLING_THIS_FRAME = function() end,

    SET_DISABLE_DECAL_RENDERING_THIS_FRAME = function() end,

    ---@param xCoord number
    ---@param yCoord number
    ---@param zCoord number
    ---@param radius number
    ---@return BOOL
    GET_IS_PETROL_DECAL_IN_RANGE = function(xCoord, yCoord, zCoord, radius) end,

    ---@param decalType integer
    ---@param textureDict string
    ---@param textureName string
    PATCH_DECAL_DIFFUSE_MAP = function(decalType, textureDict, textureName) end,

    ---@param decalType integer
    UNPATCH_DECAL_DIFFUSE_MAP = function(decalType) end,

    ---@param p0 Any
    ---@param p1 Any
    MOVE_VEHICLE_DECALS = function(p0, p1) end,

    ---boneIndex is always chassis_dummy in the scripts. The x/y/z params are location relative to the chassis bone.
    ---@param vehicle Vehicle
    ---@param ped Ped
    ---@param boneIndex integer
    ---@param x1 number
    ---@param x2 number
    ---@param x3 number
    ---@param y1 number
    ---@param y2 number
    ---@param y3 number
    ---@param z1 number
    ---@param z2 number
    ---@param z3 number
    ---@param scale number
    ---@param p13 Any
    ---@param alpha integer
    ---@return BOOL
    ADD_VEHICLE_CREW_EMBLEM = function(vehicle, ped, boneIndex, x1, x2, x3, y1, y2, y3, z1, z2, z3, scale, p13, alpha) end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    ABORT_VEHICLE_CREW_EMBLEM_REQUEST = function(p0) end,

    ---@param vehicle Vehicle
    ---@param p1 integer
    REMOVE_VEHICLE_CREW_EMBLEM = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@return integer
    GET_VEHICLE_CREW_EMBLEM_REQUEST_STATE = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@return BOOL
    DOES_VEHICLE_HAVE_CREW_EMBLEM = function(vehicle, p1) end,

    ---@param toggle BOOL
    DISABLE_COMPOSITE_SHOTGUN_DECALS = function(toggle) end,

    ---@param toggle BOOL
    DISABLE_SCUFF_DECALS = function(toggle) end,

    ---@param p0 number
    SET_DECAL_BULLET_IMPACT_RANGE_SCALE = function(p0) end,

    ---@param name string
    OVERRIDE_INTERIOR_SMOKE_NAME = function(name) end,

    ---@param level number
    OVERRIDE_INTERIOR_SMOKE_LEVEL = function(level) end,

    OVERRIDE_INTERIOR_SMOKE_END = function() end,

    ---Used with 'NG_filmnoir_BW{01,02}' timecycles and the "NOIR_FILTER_SOUNDS" audioref.
    REGISTER_NOIR_LENS_EFFECT = function() end,

    ---@param toggle BOOL
    DISABLE_VEHICLE_DISTANTLIGHTS = function(toggle) end,

    ---@param p0 BOOL
    RENDER_SHADOWED_LIGHTS_WITH_NO_SHADOWS = function(p0) end,

    REQUEST_EARLY_LIGHT_CHECK = function() end,

    ---Forces footstep tracks on all surfaces.
    ---@param toggle BOOL
    USE_SNOW_FOOT_VFX_WHEN_UNSHELTERED = function(toggle) end,

    ---@param toggle BOOL
    _FORCE_ALLOW_SNOW_FOOT_VFX_ON_ICE = function(toggle) end,

    ---Forces vehicle trails on all surfaces.
    ---@param toggle BOOL
    USE_SNOW_WHEEL_VFX_WHEN_UNSHELTERED = function(toggle) end,

    ---@param p0 Any
    DISABLE_REGION_VFX = function(p0) end,

    ---@param toggle BOOL
    _FORCE_GROUND_SNOW_PASS = function(toggle) end,

    ---Only one match in the scripts:\
    ---\
    ---GRAPHICS::PRESET_INTERIOR_AMBIENT_CACHE("int_carrier_hanger");
    ---@param timecycleModifierName string
    PRESET_INTERIOR_AMBIENT_CACHE = function(timecycleModifierName) end,

    ---Loads the specified timecycle modifier. Modifiers are defined separately in another file (e.g. "timecycle_mods_1.xml")\
    ---\
    ---Parameters:\
    ---modifierName - The modifier to load (e.g. "V_FIB_IT3", "scanline_cam", etc.)\
    ---\
    ---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json
    ---@param modifierName string
    SET_TIMECYCLE_MODIFIER = function(modifierName) end,

    ---@param strength number
    SET_TIMECYCLE_MODIFIER_STRENGTH = function(strength) end,

    ---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json
    ---@param modifierName string
    ---@param transition number
    SET_TRANSITION_TIMECYCLE_MODIFIER = function(modifierName, transition) end,

    ---@param strength number
    SET_TRANSITION_OUT_OF_TIMECYCLE_MODIFIER = function(strength) end,

    CLEAR_TIMECYCLE_MODIFIER = function() end,

    ---Only use for this in the PC scripts is:\
    ---\
    ---if (GRAPHICS::GET_TIMECYCLE_MODIFIER_INDEX() != -1)
    ---@return integer
    GET_TIMECYCLE_MODIFIER_INDEX = function() end,

    ---@return integer
    GET_TIMECYCLE_TRANSITION_MODIFIER_INDEX = function() end,

    ---@return BOOL
    GET_IS_TIMECYCLE_TRANSITIONING_OUT = function() end,

    PUSH_TIMECYCLE_MODIFIER = function() end,

    POP_TIMECYCLE_MODIFIER = function() end,

    ---@param modifierName string
    SET_CURRENT_PLAYER_TCMODIFIER = function(modifierName) end,

    ---@param value number
    SET_PLAYER_TCMODIFIER_TRANSITION = function(value) end,

    ---@param modifierName string
    SET_NEXT_PLAYER_TCMODIFIER = function(modifierName) end,

    ---@param modifierName1 string
    ---@param modifierName2 string
    ADD_TCMODIFIER_OVERRIDE = function(modifierName1, modifierName2) end,

    ---@param p0 string
    CLEAR_ALL_TCMODIFIER_OVERRIDES = function(p0) end,

    ---Full list of timecycle modifiers by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/timecycleModifiers.json
    ---@param modifierName string
    SET_EXTRA_TCMODIFIER = function(modifierName) end,

    ---Clears the secondary timecycle modifier usually set with _SET_EXTRA_TIMECYCLE_MODIFIER
    CLEAR_EXTRA_TCMODIFIER = function() end,

    ---See GET_TIMECYCLE_MODIFIER_INDEX for use, works the same just for the secondary timecycle modifier.\
    ---Returns an integer representing the Timecycle modifier
    ---@return integer
    GET_EXTRA_TCMODIFIER = function() end,

    ---The same as SET_TIMECYCLE_MODIFIER_STRENGTH but for the secondary timecycle modifier.
    ---@param strength number
    ENABLE_MOON_CYCLE_OVERRIDE = function(strength) end,

    ---Resets the extra timecycle modifier strength normally set with 0x2C328AF17210F009
    DISABLE_MOON_CYCLE_OVERRIDE = function() end,

    ---@param scaleformName string
    ---@return integer
    REQUEST_SCALEFORM_MOVIE = function(scaleformName) end,

    ---Another REQUEST_SCALEFORM_MOVIE equivalent.
    ---@param scaleformName string
    ---@return integer
    REQUEST_SCALEFORM_MOVIE_WITH_IGNORE_SUPER_WIDESCREEN = function(scaleformName) end,

    ---@param scaleformName string
    ---@return integer
    REQUEST_SCALEFORM_MOVIE_INSTANCE = function(scaleformName) end,

    ---Similar to REQUEST_SCALEFORM_MOVIE, but seems to be some kind of "interactive" scaleform movie?\
    ---\
    ---These seem to be the only scaleforms ever requested by this native:\
    ---"breaking_news"\
    ---"desktop_pc"\
    ---"ECG_MONITOR"\
    ---"Hacking_PC"\
    ---"TEETH_PULLING"\
    ---\
    ---Note: Unless this hash is out-of-order, this native is next-gen only.\
    ---
    ---@param scaleformName string
    ---@return integer
    REQUEST_SCALEFORM_MOVIE_SKIP_RENDER_WHILE_PAUSED = function(scaleformName) end,

    ---@param scaleformHandle integer
    ---@return BOOL
    HAS_SCALEFORM_MOVIE_LOADED = function(scaleformHandle) end,

    ---@param scaleformHandle integer
    ---@param scaleformName string
    ---@return BOOL
    ---@return integer
    _HAS_SCALEFORM_MOVIE_NAMED_LOADED = function(scaleformHandle, scaleformName) end,

    ---val is 1-20 (0 will return false)
    ---@param val integer
    ---@return BOOL
    IS_ACTIVE_SCALEFORM_MOVIE_DELETING = function(val) end,

    ---val is 1-20. Return is related to INSTRUCTIONAL_BUTTONS, COLOUR_SWITCHER_02, etc?
    ---@param val integer
    ---@return BOOL
    IS_SCALEFORM_MOVIE_DELETING = function(val) end,

    ---Only values used in the scripts are:\
    ---\
    ---"heist_mp"\
    ---"heistmap_mp"\
    ---"instructional_buttons"\
    ---"heist_pre"
    ---@param scaleformName string
    ---@return BOOL
    HAS_SCALEFORM_MOVIE_FILENAME_LOADED = function(scaleformName) end,

    ---@param scaleformHandle integer
    ---@return BOOL
    HAS_SCALEFORM_CONTAINER_MOVIE_LOADED_INTO_PARENT = function(scaleformHandle) end,

    ---@param scaleformHandle integer
    ---@return integer
    SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED = function(scaleformHandle) end,

    ---@param scaleformHandle integer
    ---@param scaleformName string
    _SET_SCALEFORM_MOVIE_NAMED_AS_NO_LONGER_NEEDED = function(scaleformHandle, scaleformName) end,

    ---@param scaleform integer
    ---@param toggle BOOL
    SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME = function(scaleform, toggle) end,

    ---@param scaleformHandle integer
    ---@param toggle BOOL
    SET_SCALEFORM_MOVIE_TO_USE_LARGE_RT = function(scaleformHandle, toggle) end,

    ---This native is used in some casino scripts to fit the scaleform in the rendertarget.
    ---@param scaleformHandle integer
    ---@param toggle BOOL
    SET_SCALEFORM_MOVIE_TO_USE_SUPER_LARGE_RT = function(scaleformHandle, toggle) end,

    ---@param scaleformHandle integer
    ---@param x number
    ---@param y number
    ---@param width number
    ---@param height number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p9 integer
    DRAW_SCALEFORM_MOVIE = function(scaleformHandle, x, y, width, height, red, green, blue, alpha, p9) end,

    ---unk is not used so no need
    ---@param scaleform integer
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    ---@param p5 integer
    DRAW_SCALEFORM_MOVIE_FULLSCREEN = function(scaleform, red, green, blue, alpha, p5) end,

    ---@param scaleform1 integer
    ---@param scaleform2 integer
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_SCALEFORM_MOVIE_FULLSCREEN_MASKED = function(scaleform1, scaleform2, red, green, blue, alpha) end,

    ---@param scaleform integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param scaleX number
    ---@param scaleY number
    ---@param scaleZ number
    ---@param rotationOrder integer
    DRAW_SCALEFORM_MOVIE_3D = function(scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) end,

    ---@param scaleform integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param scaleX number
    ---@param scaleY number
    ---@param scaleZ number
    ---@param rotationOrder integer
    DRAW_SCALEFORM_MOVIE_3D_SOLID = function(scaleform, posX, posY, posZ, rotX, rotY, rotZ, p7, p8, p9, scaleX, scaleY, scaleZ, rotationOrder) end,

    ---Calls the Scaleform function.
    ---@param scaleform integer
    ---@param method string
    CALL_SCALEFORM_MOVIE_METHOD = function(scaleform, method) end,

    ---Calls the Scaleform function and passes the parameters as floats.\
    ---\
    ---The number of parameters passed to the function varies, so the end of the parameter list is represented by -1.0.
    ---@param scaleform integer
    ---@param methodName string
    ---@param param1 number
    ---@param param2 number
    ---@param param3 number
    ---@param param4 number
    ---@param param5 number
    CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER = function(scaleform, methodName, param1, param2, param3, param4, param5) end,

    ---Calls the Scaleform function and passes the parameters as strings.\
    ---\
    ---The number of parameters passed to the function varies, so the end of the parameter list is represented by 0 (NULL).
    ---@param scaleform integer
    ---@param methodName string
    ---@param param1 string
    ---@param param2 string
    ---@param param3 string
    ---@param param4 string
    ---@param param5 string
    CALL_SCALEFORM_MOVIE_METHOD_WITH_STRING = function(scaleform, methodName, param1, param2, param3, param4, param5) end,

    ---Calls the Scaleform function and passes both float and string parameters (in their respective order).\
    ---\
    ---The number of parameters passed to the function varies, so the end of the float parameters is represented by -1.0, and the end of the string parameters is represented by 0 (NULL).\
    ---\
    ---NOTE: The order of parameters in the function prototype is important! All float parameters must come first, followed by the string parameters.\
    ---\
    ---Examples:\
    ---// function MY_FUNCTION(floatParam1, floatParam2, stringParam)\
    ---GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(scaleform, "MY_FUNCTION", 10.0, 20.0, -1.0, -1.0, -1.0, "String param", 0, 0, 0, 0);\
    ---\
    ---// function MY_FUNCTION_2(floatParam, stringParam1, stringParam2)\
    ---GRAPHICS::CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(scaleform, "MY_FUNCTION_2", 10.0, -1.0, -1.0, -1.0, -1.0, "String param #1", "String param #2", 0, 0, 0);
    ---@param scaleform integer
    ---@param methodName string
    ---@param floatParam1 number
    ---@param floatParam2 number
    ---@param floatParam3 number
    ---@param floatParam4 number
    ---@param floatParam5 number
    ---@param stringParam1 string
    ---@param stringParam2 string
    ---@param stringParam3 string
    ---@param stringParam4 string
    ---@param stringParam5 string
    CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING = function(scaleform, methodName, floatParam1, floatParam2, floatParam3, floatParam4, floatParam5, stringParam1, stringParam2, stringParam3, stringParam4, stringParam5) end,

    ---Pushes a function from the Hud component Scaleform onto the stack. Same behavior as GRAPHICS::BEGIN_SCALEFORM_MOVIE_METHOD, just a hud component id instead of a Scaleform.\
    ---\
    ---Known components:\
    ---19 - MP_RANK_BAR\
    ---20 - HUD_DIRECTOR_MODE\
    ---\
    ---This native requires more research - all information can be found inside of 'hud.gfx'. Using a decompiler, the different components are located under "scripts\__Packages\com\rockstargames\gtav\hud\hudComponents" and "scripts\__Packages\com\rockstargames\gtav\Multiplayer".
    ---@param hudComponent integer
    ---@param methodName string
    ---@return BOOL
    BEGIN_SCALEFORM_SCRIPT_HUD_MOVIE_METHOD = function(hudComponent, methodName) end,

    ---Push a function from the Scaleform onto the stack\
    ---
    ---@param scaleform integer
    ---@param methodName string
    ---@return BOOL
    BEGIN_SCALEFORM_MOVIE_METHOD = function(scaleform, methodName) end,

    ---Starts frontend (pause menu) scaleform movie methods.\
    ---This can be used when you want to make custom frontend menus, and customize things like images or text in the menus etc.\
    ---Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER` for header scaleform functions.
    ---@param methodName string
    ---@return BOOL
    BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND = function(methodName) end,

    ---Starts frontend (pause menu) scaleform movie methods for header options.\
    ---Use `BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND` to customize the content inside the frontend menus.
    ---@param methodName string
    ---@return BOOL
    BEGIN_SCALEFORM_MOVIE_METHOD_ON_FRONTEND_HEADER = function(methodName) end,

    ---Pops and calls the Scaleform function on the stack
    END_SCALEFORM_MOVIE_METHOD = function() end,

    ---@return integer
    END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE = function() end,

    ---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE\
    ---Returns true if the return value of a scaleform function is ready to be collected (using GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING or GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT).
    ---@param methodReturn integer
    ---@return BOOL
    IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY = function(methodReturn) end,

    ---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE\
    ---Used to get a return value from a scaleform function. Returns an int in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING returns a string.
    ---@param methodReturn integer
    ---@return integer
    GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT = function(methodReturn) end,

    ---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE
    ---@param methodReturn integer
    ---@return BOOL
    GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL = function(methodReturn) end,

    ---methodReturn: The return value of this native: END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE\
    ---Used to get a return value from a scaleform function. Returns a string in the same way GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT returns an int.
    ---@param methodReturn integer
    ---@return string
    GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_STRING = function(methodReturn) end,

    ---Pushes an integer for the Scaleform function onto the stack.
    ---@param value integer
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT = function(value) end,

    ---Pushes a float for the Scaleform function onto the stack.
    ---@param value number
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT = function(value) end,

    ---Pushes a boolean for the Scaleform function onto the stack.
    ---@param value BOOL
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL = function(value) end,

    ---Called prior to adding a text component to the UI. After doing so, GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING is called.\
    ---\
    ---Examples:\
    ---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("NUMBER");\
    ---HUD::ADD_TEXT_COMPONENT_INTEGER(MISC::ABSI(a_1));\
    ---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();\
    ---\
    ---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING");\
    ---HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(a_2);\
    ---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();\
    ---\
    ---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM2");\
    ---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_3);\
    ---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_4);\
    ---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();\
    ---\
    ---GRAPHICS::BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRTNM1");\
    ---HUD::ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY(v_3);\
    ---GRAPHICS::END_TEXT_COMMAND_SCALEFORM_STRING();
    ---@param componentType string
    BEGIN_TEXT_COMMAND_SCALEFORM_STRING = function(componentType) end,

    END_TEXT_COMMAND_SCALEFORM_STRING = function() end,

    ---Same as END_TEXT_COMMAND_SCALEFORM_STRING but does not perform HTML conversion for text tokens.
    END_TEXT_COMMAND_UNPARSED_SCALEFORM_STRING = function() end,

    ---Same as SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING\
    ---Both SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING / _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 works, but _SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING_2 is usually used for "name" (organisation, players..).
    ---@param string string
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_LITERAL_STRING = function(string) end,

    ---@param string string
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING = function(string) end,

    ---@param string string
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING = function(string) end,

    ---@param p0 integer
    ---@return BOOL
    DOES_LATEST_BRIEF_STRING_EXIST = function(p0) end,

    ---@param value integer
    SCALEFORM_MOVIE_METHOD_ADD_PARAM_LATEST_BRIEF_STRING = function(value) end,

    ---@param hudComponent integer
    REQUEST_SCALEFORM_SCRIPT_HUD_MOVIE = function(hudComponent) end,

    ---@param hudComponent integer
    ---@return BOOL
    HAS_SCALEFORM_SCRIPT_HUD_MOVIE_LOADED = function(hudComponent) end,

    ---@param hudComponent integer
    REMOVE_SCALEFORM_SCRIPT_HUD_MOVIE = function(hudComponent) end,

    ---@param scaleformHandle integer
    ---@return BOOL
    PASS_KEYBOARD_INPUT_TO_SCALEFORM = function(scaleformHandle) end,

    ---@param channel integer
    SET_TV_CHANNEL = function(channel) end,

    ---@return integer
    GET_TV_CHANNEL = function() end,

    ---@param volume number
    SET_TV_VOLUME = function(volume) end,

    ---@return number
    GET_TV_VOLUME = function() end,

    ---All calls to this native are preceded by calls to GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER and GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU, respectively.\
    ---\
    ---"act_cinema.ysc", line 1483:\
    ---HUD::SET_HUD_COMPONENT_POSITION(15, 0.0, -0.0375);\
    ---HUD::SET_TEXT_RENDER_ID(l_AE);\
    ---GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(4);\
    ---GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(1);\
    ---if (GRAPHICS::IS_TVSHOW_CURRENTLY_PLAYING(${movie_arthouse})) {\
    ---    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 0.7375, 1.0, 0.0, 255, 255, 255, 255);\
    ---} else { \
    ---    GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);\
    ---}\
    ---\
    ---"am_mp_property_int.ysc", line 102545:\
    ---if (ENTITY::DOES_ENTITY_EXIST(a_2._f3)) {\
    ---    if (HUD::IS_NAMED_RENDERTARGET_LINKED(ENTITY::GET_ENTITY_MODEL(a_2._f3))) {\
    ---        HUD::SET_TEXT_RENDER_ID(a_2._f1);\
    ---        GRAPHICS::SET_SCRIPT_GFX_DRAW_ORDER(4);\
    ---        GRAPHICS::SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(1);\
    ---        GRAPHICS::DRAW_TV_CHANNEL(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255);\
    ---        if (GRAPHICS::GET_TV_CHANNEL() == -1) {\
    ---            sub_a8fa5(a_2, 1);\
    ---    } else { \
    ---            sub_a8fa5(a_2, 1);\
    ---            GRAPHICS::ATTACH_TV_AUDIO_TO_ENTITY(a_2._f3);\
    ---    }\
    ---        HUD::SET_TEXT_RENDER_ID(HUD::GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID());\
    ---}\
    ---}\
    ---
    ---@param xPos number
    ---@param yPos number
    ---@param xScale number
    ---@param yScale number
    ---@param rotation number
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    DRAW_TV_CHANNEL = function(xPos, yPos, xScale, yScale, rotation, red, green, blue, alpha) end,

    ---Loads specified video sequence into the TV Channel\
    ---TV_Channel ranges from 0-2\
    ---VideoSequence can be any of the following:\
    ---"PL_STD_CNT" CNT Standard Channel\
    ---"PL_STD_WZL" Weazel Standard Channel\
    ---"PL_LO_CNT"\
    ---"PL_LO_WZL"\
    ---"PL_SP_WORKOUT"\
    ---"PL_SP_INV" - Jay Norris Assassination Mission Fail\
    ---"PL_SP_INV_EXP" - Jay Norris Assassination Mission Success\
    ---"PL_LO_RS" - Righteous Slaughter Ad\
    ---"PL_LO_RS_CUTSCENE" - Righteous Slaughter Cut-scene\
    ---"PL_SP_PLSH1_INTRO"\
    ---"PL_LES1_FAME_OR_SHAME"\
    ---"PL_STD_WZL_FOS_EP2"\
    ---"PL_MP_WEAZEL" - Weazel Logo on loop\
    ---"PL_MP_CCTV" - Generic CCTV loop\
    ---\
    ---Restart:\
    ---0=video sequence continues as normal\
    ---1=sequence restarts from beginning every time that channel is selected\
    ---\
    ---\
    ---The above playlists work as intended, and are commonly used, but there are many more playlists, as seen in `tvplaylists.xml`. A pastebin below outlines all playlists, they will be surronded by the name tag I.E. (<Name>PL_STD_CNT</Name> = PL_STD_CNT).\
    ---https://pastebin.com/zUzGB6h7
    ---@param tvChannel integer
    ---@param playlistName string
    ---@param restart BOOL
    SET_TV_CHANNEL_PLAYLIST = function(tvChannel, playlistName, restart) end,

    ---@param tvChannel integer
    ---@param playlistName string
    ---@param hour integer
    SET_TV_CHANNEL_PLAYLIST_AT_HOUR = function(tvChannel, playlistName, hour) end,

    ---Does not actually return anything.
    ---@param tvChannel integer
    ---@param p1 BOOL
    ---@return Any
    _SET_TV_CHANNEL_PLAYLIST_DIRTY = function(tvChannel, p1) end,

    ---@param tvChannel integer
    CLEAR_TV_CHANNEL_PLAYLIST = function(tvChannel) end,

    ---@param tvChannel integer
    ---@param p1 Any
    ---@return BOOL
    IS_PLAYLIST_ON_CHANNEL = function(tvChannel, p1) end,

    ---@param videoCliphash Hash
    ---@return BOOL
    IS_TVSHOW_CURRENTLY_PLAYING = function(videoCliphash) end,

    ---@param toggle BOOL
    ENABLE_MOVIE_KEYFRAME_WAIT = function(toggle) end,

    ---@param p0 Any
    SET_TV_PLAYER_WATCHING_THIS_FRAME = function(p0) end,

    ---@return Hash
    GET_CURRENT_TV_CLIP_NAMEHASH = function() end,

    ---@param toggle BOOL
    ENABLE_MOVIE_SUBTITLES = function(toggle) end,

    ---@return BOOL
    UI3DSCENE_IS_AVAILABLE = function() end,

    ---All presets can be found in common\data\ui\uiscenes.meta
    ---@param presetName string
    ---@return BOOL
    UI3DSCENE_PUSH_PRESET = function(presetName) end,

    ---It's called after UI3DSCENE_IS_AVAILABLE and UI3DSCENE_PUSH_PRESET\
    ---\
    ---presetName was always "CELEBRATION_WINNER"\
    ---All presets can be found in common\data\ui\uiscenes.meta
    ---@param presetName string
    ---@param ped Ped
    ---@param slot integer
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@return BOOL
    UI3DSCENE_ASSIGN_PED_TO_SLOT = function(presetName, ped, slot, posX, posY, posZ) end,

    UI3DSCENE_CLEAR_PATCHED_DATA = function() end,

    ---@param toggle BOOL
    UI3DSCENE_MAKE_PUSHED_PRESET_PERSISTENT = function(toggle) end,

    ---This native enables/disables the gold putting grid display (https://i.imgur.com/TC6cku6.png).\
    ---This requires these two natives to be called as well to configure the grid: `TERRAINGRID_SET_PARAMS` and `TERRAINGRID_SET_COLOURS`.
    ---@param toggle BOOL
    TERRAINGRID_ACTIVATE = function(toggle) end,

    ---This native is used along with these two natives: `TERRAINGRID_ACTIVATE` and `TERRAINGRID_SET_COLOURS`.\
    ---This native configures the location, size, rotation, normal height, and the difference ratio between min, normal and max.\
    ---\
    ---All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png\
    ---\
    ---This native renders a box at the given position, with a special shader that renders a grid on world geometry behind it. This box does not have backface culling.\
    ---The forward args here are a direction vector, something similar to what's returned by GET_ENTITY_FORWARD_VECTOR.\
    ---normalHeight and heightDiff are used for positioning the color gradient of the grid, colors specified via TERRAINGRID_SET_COLOURS.\
    ---\
    ---Example with box superimposed on the image to demonstrate: https://i.imgur.com/wdqskxd.jpg
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param forwardX number
    ---@param forwardY number
    ---@param forwardZ number
    ---@param sizeX number
    ---@param sizeY number
    ---@param sizeZ number
    ---@param gridScale number
    ---@param glowIntensity number
    ---@param normalHeight number
    ---@param heightDiff number
    TERRAINGRID_SET_PARAMS = function(x, y, z, forwardX, forwardY, forwardZ, sizeX, sizeY, sizeZ, gridScale, glowIntensity, normalHeight, heightDiff) end,

    ---This native is used along with these two natives: `TERRAINGRID_ACTIVATE` and `TERRAINGRID_SET_PARAMS`.\
    ---This native sets the colors for the golf putting grid. the 'min...' values are for the lower areas that the grid covers, the 'max...' values are for the higher areas that the grid covers, all remaining values are for the 'normal' ground height.\
    ---All those natives combined they will output something like this: https://i.imgur.com/TC6cku6.png
    ---@param lowR integer
    ---@param lowG integer
    ---@param lowB integer
    ---@param lowAlpha integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param alpha integer
    ---@param highR integer
    ---@param highG integer
    ---@param highB integer
    ---@param highAlpha integer
    TERRAINGRID_SET_COLOURS = function(lowR, lowG, lowB, lowAlpha, r, g, b, alpha, highR, highG, highB, highAlpha) end,

    ---duration - is how long to play the effect for in milliseconds. If 0, it plays the default length\
    ---if loop is true, the effect won't stop until you call ANIMPOSTFX_STOP on it. (only loopable effects)\
    ---\
    ---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json
    ---@param effectName string
    ---@param duration integer
    ---@param looped BOOL
    ANIMPOSTFX_PLAY = function(effectName, duration, looped) end,

    ---See ANIMPOSTFX_PLAY\
    ---\
    ---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json
    ---@param effectName string
    ANIMPOSTFX_STOP = function(effectName) end,

    ---See ANIMPOSTFX_PLAY\
    ---\
    ---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json
    ---@param effectName string
    ---@return number
    ANIMPOSTFX_GET_CURRENT_TIME = function(effectName) end,

    ---Returns whether the specified effect is active.\
    ---See ANIMPOSTFX_PLAY\
    ---\
    ---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json
    ---@param effectName string
    ---@return BOOL
    ANIMPOSTFX_IS_RUNNING = function(effectName) end,

    ---Stops ALL currently playing effects.
    ANIMPOSTFX_STOP_ALL = function() end,

    ---Stops the effect and sets a value (bool) in its data (+0x199) to false.\
    ---See ANIMPOSTFX_PLAY\
    ---\
    ---Full list of animpostFX / screen effects by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animPostFxNamesCompact.json
    ---@param effectName string
    ANIMPOSTFX_STOP_AND_FLUSH_REQUESTS = function(effectName) end
}

HUD = {
    ---Initializes the text entry for the the text next to a loading prompt. All natives for building UI texts can be used here\
    ---\
    ---\
    ---e.g\
    ---void StartLoadingMessage(char *text, int spinnerType = 3)\
    ---  {\
    ---     BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");\
    ---       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---       END_TEXT_COMMAND_BUSYSPINNER_ON(spinnerType);\
    ---}\
    ---/*OR*/\
    --- void ShowLoadingMessage(char *text, int spinnerType = 3, int timeMs = 10000)\
    ---  {\
    ---     BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");\
    ---       ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---       END_TEXT_COMMAND_BUSYSPINNER_ON(spinnerType);\
    ---        WAIT(timeMs);\
    ---     BUSYSPINNER_OFF();\
    --- }\
    ---\
    ---\
    ---These are some localized strings used in the loading spinner.\
    ---"PM_WAIT"                   = Please Wait\
    ---"CELEB_WPLYRS"              = Waiting For Players.\
    ---"CELL_SPINNER2"             = Scanning storage.\
    ---"ERROR_CHECKYACHTNAME" = Registering your yacht's name. Please wait.\
    ---"ERROR_CHECKPROFANITY"   = Checking your text for profanity. Please wait.\
    ---"FM_COR_AUTOD"                        = Just spinner no text\
    ---"FM_IHELP_WAT2"                        = Waiting for other players\
    ---"FM_JIP_WAITO"                            = Game options are being set\
    ---"FMMC_DOWNLOAD"                    = Downloading\
    ---"FMMC_PLYLOAD"                         = Loading\
    ---"FMMC_STARTTRAN"                    = Launching session\
    ---"HUD_QUITTING"                           =  Quiting session\
    ---"KILL_STRIP_IDM"                         = Waiting for to accept\
    ---"MP_SPINLOADING"                      = Loading
    ---@param string string
    BEGIN_TEXT_COMMAND_BUSYSPINNER_ON = function(string) end,

    ---enum eBusySpinnerType\
    ---{\
    ---	BUSY_SPINNER_LEFT,\
    ---	BUSY_SPINNER_LEFT_2,\
    ---	BUSY_SPINNER_LEFT_3,\
    ---	BUSY_SPINNER_SAVE,\
    ---	BUSY_SPINNER_RIGHT,\
    ---};
    ---@param busySpinnerType integer
    END_TEXT_COMMAND_BUSYSPINNER_ON = function(busySpinnerType) end,

    ---Removes the loading prompt at the bottom right of the screen.
    BUSYSPINNER_OFF = function() end,

    PRELOAD_BUSYSPINNER = function() end,

    ---@return BOOL
    BUSYSPINNER_IS_ON = function() end,

    ---@return BOOL
    BUSYSPINNER_IS_DISPLAYING = function() end,

    ---@param p0 BOOL
    DISABLE_PAUSEMENU_SPINNER = function(p0) end,

    ---Shows the cursor on screen for one frame.
    SET_MOUSE_CURSOR_THIS_FRAME = function() end,

    ---Changes the mouse cursor's sprite. \
    ---1 = Normal\
    ---6 = Left Arrow\
    ---7 = Right Arrow
    ---@param spriteId integer
    SET_MOUSE_CURSOR_STYLE = function(spriteId) end,

    ---Shows/hides the frontend cursor on the pause menu or similar menus.\
    ---Clicking off and then on the game window will show it again.
    ---@param toggle BOOL
    SET_MOUSE_CURSOR_VISIBLE = function(toggle) end,

    ---Returns TRUE if mouse is hovering above instructional buttons. Works with all buttons gfx, such as popup_warning, pause_menu_instructional_buttons, instructional_buttons, etc. Note: You have to call TOGGLE_MOUSE_BUTTONS on the scaleform if you want this native to work.
    ---@return BOOL
    IS_MOUSE_ROLLED_OVER_INSTRUCTIONAL_BUTTONS = function() end,

    ---@param scaleformHandle integer
    ---@param p1 Any*
    ---@param p2 Any*
    ---@param p3 Any*
    ---@return BOOL
    GET_MOUSE_EVENT = function(scaleformHandle, p1, p2, p3) end,

    ---@param toggle BOOL
    THEFEED_ONLY_SHOW_TOOLTIPS = function(toggle) end,

    ---@param pos number
    THEFEED_SET_SCRIPTED_MENU_HEIGHT = function(pos) end,

    ---Stops loading screen tips shown by invoking `THEFEED_SHOW`
    THEFEED_HIDE = function() end,

    ---Once called each frame hides all above radar notifications.
    THEFEED_HIDE_THIS_FRAME = function() end,

    ---Displays loading screen tips, requires `THEFEED_AUTO_POST_GAMETIPS_ON` to be called beforehand.
    THEFEED_SHOW = function() end,

    THEFEED_FLUSH_QUEUE = function() end,

    ---Removes a notification instantly instead of waiting for it to disappear
    ---@param notificationId integer
    THEFEED_REMOVE_ITEM = function(notificationId) end,

    THEFEED_FORCE_RENDER_ON = function() end,

    ---Enables loading screen tips to be be shown (`THEFEED_SHOW`), blocks other kinds of notifications from being displayed (at least from current script). Call `0xADED7F5748ACAFE6` to display those again.
    THEFEED_FORCE_RENDER_OFF = function() end,

    THEFEED_PAUSE = function() end,

    THEFEED_RESUME = function() end,

    ---@return BOOL
    THEFEED_IS_PAUSED = function() end,

    THEFEED_REPORT_LOGO_ON = function() end,

    THEFEED_REPORT_LOGO_OFF = function() end,

    ---Returns the handle for the notification currently displayed on the screen. Name may be a hash collision, but describes the function accurately.
    ---@return integer
    THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID = function() end,

    ---Enables loading screen tips to be be shown (`THEFEED_SHOW`), blocks other kinds of notifications from being displayed (at least from current script). Call `THEFEED_AUTO_POST_GAMETIPS_OFF` to display those again.
    THEFEED_AUTO_POST_GAMETIPS_ON = function() end,

    ---Displays "normal" notifications again after calling `THEFEED_AUTO_POST_GAMETIPS_ON` (those that were drawn before calling this native too), though those will have a weird offset and stay on screen forever (tested with notifications created from same script).
    THEFEED_AUTO_POST_GAMETIPS_OFF = function() end,

    ---From the decompiled scripts:\
    ---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(6);\
    ---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(184);\
    ---HUD::THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST(190);\
    ---\
    ---sets background color for the next notification\
    ---6 = red\
    ---184 = green\
    ---190 = yellow\
    ---\
    ---Here is a list of some colors that can be used: https://gyazo.com/68bd384455fceb0a85a8729e48216e15
    ---@param hudColorIndex integer
    THEFEED_SET_BACKGROUND_COLOR_FOR_NEXT_POST = function(hudColorIndex) end,

    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    THEFEED_SET_RGBA_PARAMETER_FOR_NEXT_MESSAGE = function(red, green, blue, alpha) end,

    ---Related to notification color flashing, setting count to 0 invalidates a `THEFEED_SET_RGBA_PARAMETER_FOR_NEXT_MESSAGE` call for the target notification.
    ---@param count integer
    THEFEED_SET_FLASH_DURATION_PARAMETER_FOR_NEXT_MESSAGE = function(count) end,

    ---@param toggle BOOL
    THEFEED_SET_VIBRATE_PARAMETER_FOR_NEXT_MESSAGE = function(toggle) end,

    THEFEED_RESET_ALL_PARAMETERS = function() end,

    ---Requires manual management of game stream handles (i.e., 0xBE4390CB40B3E627).
    THEFEED_FREEZE_NEXT_POST = function() end,

    THEFEED_CLEAR_FROZEN_POST = function() end,

    ---@param p0 BOOL
    THEFEED_SET_SNAP_FEED_ITEM_POSITIONS = function(p0) end,

    ---Used in the native scripts to reference "GET_PEDHEADSHOT_TXD_STRING" and "CHAR_DEFAULT".
    ---@param txdString1 string
    ---@param txnString1 string
    ---@param txdString2 string
    ---@param txnString2 string
    THEFEED_UPDATE_ITEM_TEXTURE = function(txdString1, txnString1, txdString2, txnString2) end,

    ---Declares the entry type of a notification, for example "STRING".\
    ---\
    ---int ShowNotification(char *text)\
    ---{\
    ---	BEGIN_TEXT_COMMAND_THEFEED_POST("STRING");\
    ---	ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---	return END_TEXT_COMMAND_THEFEED_POST_TICKER(1, 1);\
    ---}
    ---@param text string
    BEGIN_TEXT_COMMAND_THEFEED_POST = function(text) end,

    ---List of picture names: https://pastebin.com/XdpJVbHz\
    ---Example result: https://i.imgur.com/SdEZ22m.png
    ---@param statTitle string
    ---@param iconEnum integer
    ---@param stepVal BOOL
    ---@param barValue integer
    ---@param isImportant BOOL
    ---@param pictureTextureDict string
    ---@param pictureTextureName string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_STATS = function(statTitle, iconEnum, stepVal, barValue, isImportant, pictureTextureDict, pictureTextureName) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---List of picNames: https://pastebin.com/XdpJVbHz\
    ---\
    ---\
    ---flash is a bool for fading in.\
    ---iconTypes:\
    ---1 : Chat Box\
    ---2 : Email\
    ---3 : Add Friend Request\
    ---4 : Nothing\
    ---5 : Nothing\
    ---6 : Nothing\
    ---7 : Right Jumping Arrow\
    ---8 : RP Icon\
    ---9 : $ Icon\
    ---\
    ---"sender" is the very top header. This can be any old string.\
    ---"subject" is the header under the sender.
    ---@param txdName string
    ---@param textureName string
    ---@param flash BOOL
    ---@param iconType integer
    ---@param sender string
    ---@param subject string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT = function(txdName, textureName, flash, iconType, sender, subject) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---Needs more research.\
    ---\
    ---Only one type of usage in the scripts:\
    ---\
    ---HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_SUBTITLE_LABEL("CHAR_ACTING_UP", "CHAR_ACTING_UP", 0, 0, "DI_FEED_CHAR", a_0);
    ---@param txdName string
    ---@param textureName string
    ---@param flash BOOL
    ---@param iconType integer
    ---@param sender string
    ---@param subject string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_SUBTITLE_LABEL = function(txdName, textureName, flash, iconType, sender, subject) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---NOTE: 'duration' is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.\
    ---\
    ---Example, only occurrence in the scripts:\
    ---v_8 = HUD::END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 0, 0, &v_9, "", a_5);
    ---@param txdName string
    ---@param textureName string
    ---@param flash BOOL
    ---@param iconType integer
    ---@param sender string
    ---@param subject string
    ---@param duration number
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_TU = function(txdName, textureName, flash, iconType, sender, subject, duration) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---List of picNames https://pastebin.com/XdpJVbHz\
    ---\
    ---flash is a bool for fading in.\
    ---iconTypes:\
    ---1 : Chat Box\
    ---2 : Email\
    ---3 : Add Friend Request\
    ---4 : Nothing\
    ---5 : Nothing\
    ---6 : Nothing\
    ---7 : Right Jumping Arrow\
    ---8 : RP Icon\
    ---9 : $ Icon\
    ---\
    ---"sender" is the very top header. This can be any old string.\
    ---"subject" is the header under the sender.\
    ---"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.\
    ---"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)
    ---@param txdName string
    ---@param textureName string
    ---@param flash BOOL
    ---@param iconType integer
    ---@param sender string
    ---@param subject string
    ---@param duration number
    ---@param clanTag string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG = function(txdName, textureName, flash, iconType, sender, subject, duration, clanTag) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---List of picNames:  https://pastebin.com/XdpJVbHz\
    ---\
    ---flash is a bool for fading in.\
    ---iconTypes:\
    ---1 : Chat Box\
    ---2 : Email\
    ---3 : Add Friend Request\
    ---4 : Nothing\
    ---5 : Nothing\
    ---6 : Nothing\
    ---7 : Right Jumping Arrow\
    ---8 : RP Icon\
    ---9 : $ Icon\
    ---\
    ---"sender" is the very top header. This can be any old string.\
    ---"subject" is the header under the sender.\
    ---"duration" is a multiplier, so 1.0 is normal, 2.0 is twice as long (very slow), and 0.5 is half as long.\
    ---"clanTag" shows a crew tag in the "sender" header, after the text. You need to use 3 underscores as padding. Maximum length of this field seems to be 7. (e.g. "MK" becomes "___MK", "ACE" becomes "___ACE", etc.)\
    ---iconType2 is a mirror of iconType. It shows in the "subject" line, right under the original iconType.\
    ---\
    ---\
    ---int IconNotification(char *text, char *text2, char *Subject)\
    ---{\
    ---    BEGIN_TEXT_COMMAND_THEFEED_POST("STRING");\
    --- ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---   _SET_NOTIFICATION_MESSAGE_CLAN_TAG_2("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", 1, 7, text2, Subject, 1.0f, "__EXAMPLE", 7);\
    ---   return END_TEXT_COMMAND_THEFEED_POST_TICKER(1, 1);\
    ---}
    ---@param txdName string
    ---@param textureName string
    ---@param flash BOOL
    ---@param iconType1 integer
    ---@param sender string
    ---@param subject string
    ---@param duration number
    ---@param clanTag string
    ---@param iconType2 integer
    ---@param p9 integer
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT_WITH_CREW_TAG_AND_ADDITIONAL_ICON = function(txdName, textureName, flash, iconType1, sender, subject, duration, clanTag, iconType2, p9) end,

    ---@param blink BOOL
    ---@param p1 BOOL
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_TICKER = function(blink, p1) end,

    ---@param blink BOOL
    ---@param p1 BOOL
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_TICKER_FORCED = function(blink, p1) end,

    ---@param blink BOOL
    ---@param p1 BOOL
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_TICKER_WITH_TOKENS = function(blink, p1) end,

    ---Shows an "award" notification above the minimap, example: https://i.imgur.com/e2DNaKX.png\
    ---Example:\
    ---\
    ---HUD::BEGIN_TEXT_COMMAND_THEFEED_POST("HUNT");\
    ---HUD::END_TEXT_COMMAND_THEFEED_POST_AWARD("Hunting", "Hunting_Gold_128", 0, 109, "HUD_MED_UNLKED");
    ---@param textureDict string
    ---@param textureName string
    ---@param rpBonus integer
    ---@param colorOverlay integer
    ---@param titleLabel string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_AWARD = function(textureDict, textureName, rpBonus, colorOverlay, titleLabel) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 integer
    ---@param p3 integer
    ---@param isLeader BOOL
    ---@param unk0 BOOL
    ---@param clanDesc integer
    ---@param R integer
    ---@param G integer
    ---@param B integer
    ---@return integer
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_CREWTAG = function(p0, p1, p2, p3, isLeader, unk0, clanDesc, R, G, B) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    ---@param p2 integer
    ---@param p3 integer
    ---@param isLeader BOOL
    ---@param unk0 BOOL
    ---@param clanDesc integer
    ---@param playerName string
    ---@param R integer
    ---@param G integer
    ---@param B integer
    ---@return integer
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_CREWTAG_WITH_GAME_NAME = function(p0, p1, p2, p3, isLeader, unk0, clanDesc, playerName, R, G, B) end,

    ---@param gxtLabel1 string
    ---@param p1 integer
    ---@param gxtLabel2 string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_UNLOCK = function(gxtLabel1, p1, gxtLabel2) end,

    ---@param gxtLabel1 string
    ---@param p1 integer
    ---@param gxtLabel2 string
    ---@param p3 integer
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU = function(gxtLabel1, p1, gxtLabel2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_UNLOCK_TU_WITH_COLOR = function(p0, p1, p2, p3, p4, p5) end,

    ---@param blink BOOL
    ---@param p1 BOOL
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_MPTICKER = function(blink, p1) end,

    ---@param p0 string
    ---@param p1 string
    ---@param p2 string
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_CREW_RANKUP_WITH_LITERAL_FLAG = function(p0, p1, p2, p3, p4) end,

    ---This function can show pictures of every texture that can be requested by REQUEST_STREAMED_TEXTURE_DICT.\
    ---\
    ---List of picNames: https://pastebin.com/XdpJVbHz\
    ---HUD colors and their values: https://pastebin.com/d9aHPbXN\
    ---\
    ---Shows a deathmatch score above the minimap, example: https://i.imgur.com/YmoMklG.png
    ---@param txdName1 string
    ---@param textureName1 string
    ---@param count1 integer
    ---@param txdName2 string
    ---@param textureName2 string
    ---@param count2 integer
    ---@param hudColor1 integer
    ---@param hudColor2 integer
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_VERSUS_TU = function(txdName1, textureName1, count1, txdName2, textureName2, count2, hudColor1, hudColor2) end,

    ---returns a notification handle, prints out a notification like below:\
    ---type range: 0 - 2\
    ---if you set type to 1, image goes from 0 - 39 - Xbox you can add text to\
    ---\
    ---example: \
    ---HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1, 20, "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");\
    ---- https://imgur.com/lGBPCz3
    ---@param type integer
    ---@param image integer
    ---@param text string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_REPLAY = function(type, image, text) end,

    ---returns a notification handle, prints out a notification like below:\
    ---type range: 0 - 2\
    ---if you set type to 1, button accepts "~INPUT_SOMETHING~"\
    ---\
    ---example:\
    ---HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1, "~INPUT_TALK~", "Who you trynna get crazy with, ese? Don't you know I'm LOCO?!");\
    ---- https://imgur.com/UPy0Ial\
    ---\
    ---\
    ---Examples from the scripts:\
    ---l_D1[1/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");\
    ---l_D1[2/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_SAVE_REPLAY_CLIP~","");\
    ---l_D1[1/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING~","");\
    ---l_D1[2/*1*/]=HUD::END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(1,"~INPUT_REPLAY_START_STOP_RECORDING_SECONDARY~","");\
    ---
    ---@param type integer
    ---@param button string
    ---@param text string
    ---@return integer
    END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT = function(type, button, text) end,

    ---void ShowSubtitle(const char *text)\
    ---{\
    ---  BEGIN_TEXT_COMMAND_PRINT("STRING");\
    --- ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---   END_TEXT_COMMAND_PRINT(2000, true);\
    ---}
    ---@param GxtEntry string
    BEGIN_TEXT_COMMAND_PRINT = function(GxtEntry) end,

    ---Draws the subtitle at middle center of the screen.\
    ---\
    ---int duration = time in milliseconds to show text on screen before disappearing\
    ---\
    ---drawImmediately = If true, the text will be drawn immediately, if false, the text will be drawn after the previous subtitle has finished\
    ---\
    ---Used to be known as _DRAW_SUBTITLE_TIMED
    ---@param duration integer
    ---@param drawImmediately BOOL
    END_TEXT_COMMAND_PRINT = function(duration, drawImmediately) end,

    ---nothin doin. \
    ---\
    ---BOOL Message(const char* text)\
    ---   {\
    ---     BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED("STRING");\
    ---      ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---       return END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED();\
    ---   }
    ---@param text string
    BEGIN_TEXT_COMMAND_IS_MESSAGE_DISPLAYED = function(text) end,

    ---@return BOOL
    END_TEXT_COMMAND_IS_MESSAGE_DISPLAYED = function() end,

    ---The following were found in the decompiled script files:\
    ---STRING, TWOSTRINGS, NUMBER, PERCENTAGE, FO_TWO_NUM, ESMINDOLLA, ESDOLLA, MTPHPER_XPNO, AHD_DIST, CMOD_STAT_0, CMOD_STAT_1, CMOD_STAT_2, CMOD_STAT_3, DFLT_MNU_OPT, F3A_TRAFDEST, ES_HELP_SOC3\
    ---\
    ---ESDOLLA - cash\
    ---ESMINDOLLA - cash (negative)\
    ---\
    ---Used to be known as _SET_TEXT_ENTRY
    ---@param text string
    BEGIN_TEXT_COMMAND_DISPLAY_TEXT = function(text) end,

    ---After applying the properties to the text (See HUD::SET_TEXT_), this will draw the text in the applied position. Also 0.0f < x, y < 1.0f, percentage of the axis.\
    ---\
    ---Used to be known as _DRAW_TEXT
    ---@param x number
    ---@param y number
    ---@param p2 integer
    END_TEXT_COMMAND_DISPLAY_TEXT = function(x, y, p2) end,

    ---@param text string
    BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT = function(text) end,

    ---@param p0 BOOL
    ---@return number
    END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT = function(p0) end,

    ---int GetLineCount(char *text, float x, float y)\
    ---    {\
    ---     BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING("STRING");\
    ---                ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---      return BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING(x, y);\
    ---}
    ---@param entry string
    BEGIN_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING = function(entry) end,

    ---Determines how many lines the text string will use when drawn on screen. \
    ---Must use 0x521FB041D93DD0E4 for setting up
    ---@param x number
    ---@param y number
    ---@return integer
    END_TEXT_COMMAND_GET_NUMBER_OF_LINES_FOR_STRING = function(x, y) end,

    ---Used to be known as _SET_TEXT_COMPONENT_FORMAT
    ---@param inputType string
    BEGIN_TEXT_COMMAND_DISPLAY_HELP = function(inputType) end,

    ---shape goes from -1 to 50 (may be more).\
    ---p0 is always 0.\
    ---\
    ---Example:\
    ---void FloatingHelpText(const char* text)\
    ---{\
    ---    BEGIN_TEXT_COMMAND_DISPLAY_HELP("STRING");\
    ---  ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);\
    ---   END_TEXT_COMMAND_DISPLAY_HELP (0, 0, 1, -1);\
    ---}\
    ---\
    ---Image:\
    ---- imgbin.org/images/26209.jpg\
    ---\
    ---more inputs/icons:\
    ---- https://pastebin.com/nqNYWMSB\
    ---\
    ---Used to be known as _DISPLAY_HELP_TEXT_FROM_STRING_LABEL
    ---@param p0 integer
    ---@param loop BOOL
    ---@param beep BOOL
    ---@param shape integer
    END_TEXT_COMMAND_DISPLAY_HELP = function(p0, loop, beep, shape) end,

    ---BOOL IsContextActive(char *ctx)\
    ---    {\
    ---     BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(ctx);\
    ---     return END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(0);\
    ---  }
    ---@param labelName string
    BEGIN_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = function(labelName) end,

    ---@param p0 integer
    ---@return BOOL
    END_TEXT_COMMAND_IS_THIS_HELP_MESSAGE_BEING_DISPLAYED = function(p0) end,

    ---Starts a text command to change the name of a blip displayed in the pause menu.\
    ---This should be paired with `END_TEXT_COMMAND_SET_BLIP_NAME`, once adding all required text components.\
    ---Example:\
    ---\
    ---HUD::BEGIN_TEXT_COMMAND_SET_BLIP_NAME("STRING");\
    ---HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME("Name");\
    ---HUD::END_TEXT_COMMAND_SET_BLIP_NAME(blip);
    ---@param textLabel string
    BEGIN_TEXT_COMMAND_SET_BLIP_NAME = function(textLabel) end,

    ---Finalizes a text command started with BEGIN_TEXT_COMMAND_SET_BLIP_NAME, setting the name of the specified blip.
    ---@param blip Blip
    END_TEXT_COMMAND_SET_BLIP_NAME = function(blip) end,

    ---@param p0 string
    BEGIN_TEXT_COMMAND_ADD_DIRECTLY_TO_PREVIOUS_BRIEFS = function(p0) end,

    ---@param p0 BOOL
    END_TEXT_COMMAND_ADD_DIRECTLY_TO_PREVIOUS_BRIEFS = function(p0) end,

    ---clears a print text command with this text
    ---@param text string
    BEGIN_TEXT_COMMAND_CLEAR_PRINT = function(text) end,

    END_TEXT_COMMAND_CLEAR_PRINT = function() end,

    ---@param gxtEntry string
    BEGIN_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT = function(gxtEntry) end,

    ---@param p0 integer
    END_TEXT_COMMAND_OVERRIDE_BUTTON_TEXT = function(p0) end,

    ---@param value integer
    ADD_TEXT_COMPONENT_INTEGER = function(value) end,

    ---@param value number
    ---@param decimalPlaces integer
    ADD_TEXT_COMPONENT_FLOAT = function(value, decimalPlaces) end,

    ---@param labelName string
    ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL = function(labelName) end,

    ---It adds the localized text of the specified GXT entry name. Eg. if the argument is GET_HASH_KEY("ES_HELP"), adds "Continue". Just uses a text labels hash key
    ---@param gxtEntryHash Hash
    ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL_HASH_KEY = function(gxtEntryHash) end,

    ---@param blip Blip
    ADD_TEXT_COMPONENT_SUBSTRING_BLIP_NAME = function(blip) end,

    ---@param text string
    ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME = function(text) end,

    ---Adds a timer (e.g. "00:00:00:000"). The appearance of the timer depends on the flags, which needs more research.
    ---@param timestamp integer
    ---@param flags integer
    ADD_TEXT_COMPONENT_SUBSTRING_TIME = function(timestamp, flags) end,

    ---@param value integer
    ---@param commaSeparated BOOL
    ADD_TEXT_COMPONENT_FORMATTED_INTEGER = function(value, commaSeparated) end,

    ---p1 was always -1
    ---@param p0 string
    ---@param p1 integer
    ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER = function(p0, p1) end,

    ---This native (along with ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY and ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME) do not actually filter anything. They simply add the provided text (as of 944)
    ---@param website string
    ADD_TEXT_COMPONENT_SUBSTRING_WEBSITE = function(website) end,

    ---@param string string
    ADD_TEXT_COMPONENT_SUBSTRING_KEYBOARD_DISPLAY = function(string) end,

    ---@param hudColor integer
    SET_COLOUR_OF_NEXT_TEXT_COMPONENT = function(hudColor) end,

    ---Returns a substring of a specified length starting at a specified position.\
    ---\
    ---Example:\
    ---// Get "STRING" text from "MY_STRING"\
    ---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME("MY_STRING", 3, 6);
    ---@param text string
    ---@param position integer
    ---@param length integer
    ---@return string
    GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME = function(text, position, length) end,

    ---Returns a substring of a specified length starting at a specified position. The result is guaranteed not to exceed the specified max length.\
    ---\
    ---NOTE: The 'maxLength' parameter might actually be the size of the buffer that is returned. More research is needed. -CL69\
    ---\
    ---Example:\
    ---// Condensed example of how Rockstar uses this function\
    ---strLen = HUD::GET_LENGTH_OF_LITERAL_STRING(MISC::GET_ONSCREEN_KEYBOARD_RESULT());\
    ---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(MISC::GET_ONSCREEN_KEYBOARD_RESULT(), 0, strLen, 63);\
    ---\
    -----\
    ---\
    ---"fm_race_creator.ysc", line 85115:\
    ---// parameters modified for clarity\
    ---BOOL sub_8e5aa(char *text, int length) {\
    ---    for (i = 0; i <= (length - 2); i += 1) {\
    ---        if (!MISC::ARE_STRINGS_EQUAL(HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(text, i, i + 1, 1), " ")) {\
    ---            return FALSE;\
    ---    }\
    ---}\
    ---    return TRUE;\
    ---}
    ---@param text string
    ---@param position integer
    ---@param length integer
    ---@param maxLength integer
    ---@return string
    GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT = function(text, position, length, maxLength) end,

    ---Returns a substring that is between two specified positions. The length of the string will be calculated using (endPosition - startPosition).\
    ---\
    ---Example:\
    ---// Get "STRING" text from "MY_STRING"\
    ---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES("MY_STRING", 3, 9);\
    ---// Overflows are possibly replaced with underscores (needs verification)\
    ---subStr = HUD::GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES("MY_STRING", 3, 10); // "STRING_"?
    ---@param text string
    ---@param startPosition integer
    ---@param endPosition integer
    ---@return string
    GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_BYTES = function(text, startPosition, endPosition) end,

    ---Gets a localized string literal from a label name. Can be used for output of e.g. VEHICLE::GET_LIVERY_NAME. To check if a GXT label can be localized with this, HUD::DOES_TEXT_LABEL_EXIST can be used.
    ---@param labelName string
    ---@return string
    GET_FILENAME_FOR_AUDIO_CONVERSATION = function(labelName) end,

    CLEAR_PRINTS = function() end,

    CLEAR_BRIEF = function() end,

    CLEAR_ALL_HELP_MESSAGES = function() end,

    ---p0: found arguments in the b617d scripts: https://pastebin.com/X5akCN7z
    ---@param p0 string
    CLEAR_THIS_PRINT = function(p0) end,

    CLEAR_SMALL_PRINTS = function() end,

    ---@param gxt string
    ---@return BOOL
    DOES_TEXT_BLOCK_EXIST = function(gxt) end,

    ---Request a gxt into the passed slot.
    ---@param gxt string
    ---@param slot integer
    REQUEST_ADDITIONAL_TEXT = function(gxt, slot) end,

    ---@param gxt string
    ---@param slot integer
    REQUEST_ADDITIONAL_TEXT_FOR_DLC = function(gxt, slot) end,

    ---@param slot integer
    ---@return BOOL
    HAS_ADDITIONAL_TEXT_LOADED = function(slot) end,

    ---@param p0 integer
    ---@param p1 BOOL
    CLEAR_ADDITIONAL_TEXT = function(p0, p1) end,

    ---@param p0 integer
    ---@return BOOL
    IS_STREAMING_ADDITIONAL_TEXT = function(p0) end,

    ---Checks if the specified gxt has loaded into the passed slot.
    ---@param gxt string
    ---@param slot integer
    ---@return BOOL
    HAS_THIS_ADDITIONAL_TEXT_LOADED = function(gxt, slot) end,

    ---@return BOOL
    IS_MESSAGE_BEING_DISPLAYED = function() end,

    ---Checks if the passed gxt name exists in the game files.
    ---@param gxt string
    ---@return BOOL
    DOES_TEXT_LABEL_EXIST = function(gxt) end,

    ---@param string string
    ---@param length integer
    ---@return string
    GET_FIRST_N_CHARACTERS_OF_LITERAL_STRING = function(string, length) end,

    ---Returns the string length of the string from the gxt string .
    ---@param gxt string
    ---@return integer
    GET_LENGTH_OF_STRING_WITH_THIS_TEXT_LABEL = function(gxt) end,

    ---Returns the length of the string passed (much like strlen).
    ---@param string string
    ---@return integer
    GET_LENGTH_OF_LITERAL_STRING = function(string) end,

    ---@param string string
    ---@return integer
    GET_LENGTH_OF_LITERAL_STRING_IN_BYTES = function(string) end,

    ---This functions converts the hash of a street name into a readable string.\
    ---\
    ---For how to get the hashes, see PATHFIND::GET_STREET_NAME_AT_COORD.
    ---@param hash Hash
    ---@return string
    GET_STREET_NAME_FROM_HASH_KEY = function(hash) end,

    ---@return BOOL
    IS_HUD_PREFERENCE_SWITCHED_ON = function() end,

    ---@return BOOL
    IS_RADAR_PREFERENCE_SWITCHED_ON = function() end,

    ---@return BOOL
    IS_SUBTITLE_PREFERENCE_SWITCHED_ON = function() end,

    ---If Hud should be displayed
    ---@param toggle BOOL
    DISPLAY_HUD = function(toggle) end,

    ---Enables drawing some hud components, such as help labels, this frame, when the player is dead.
    DISPLAY_HUD_WHEN_NOT_IN_STATE_OF_PLAY_THIS_FRAME = function() end,

    DISPLAY_HUD_WHEN_PAUSED_THIS_FRAME = function() end,

    ---If Minimap / Radar should be displayed.
    ---@param toggle BOOL
    DISPLAY_RADAR = function(toggle) end,

    ---Setter for GET_FAKE_SPECTATOR_MODE
    ---@param toggle BOOL
    SET_FAKE_SPECTATOR_MODE = function(toggle) end,

    ---Getter for SET_FAKE_SPECTATOR_MODE
    ---@return BOOL
    GET_FAKE_SPECTATOR_MODE = function() end,

    ---@return BOOL
    IS_HUD_HIDDEN = function() end,

    ---@return BOOL
    IS_RADAR_HIDDEN = function() end,

    ---@return BOOL
    IS_MINIMAP_RENDERING = function() end,

    ---@param p0 Any
    USE_VEHICLE_TARGETING_RETICULE = function(p0) end,

    ---@param enable BOOL
    _USE_VEHICLE_TARGETING_RETICULE_ON_VEHICLES = function(enable) end,

    ---@param p0 Any
    ADD_VALID_VEHICLE_HIT_HASH = function(p0) end,

    CLEAR_VALID_VEHICLE_HIT_HASHES = function() end,

    ---Enable / disable showing route for the Blip-object.
    ---@param blip Blip
    ---@param enabled BOOL
    SET_BLIP_ROUTE = function(blip, enabled) end,

    CLEAR_ALL_BLIP_ROUTES = function() end,

    ---@param blip Blip
    ---@param colour integer
    SET_BLIP_ROUTE_COLOUR = function(blip, colour) end,

    ---@param toggle BOOL
    SET_FORCE_SHOW_GPS = function(toggle) end,

    ---@param toggle BOOL
    SET_USE_SET_DESTINATION_IN_PAUSE_MAP = function(toggle) end,

    ---@param disabled BOOL
    SET_BLOCK_WANTED_FLASH = function(disabled) end,

    ---@param p0 BOOL
    ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS = function(p0) end,

    ---@param p0 integer
    FORCE_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS_LIST = function(p0) end,

    ---zoom ranges from 0 to 90f in R* Scripts
    ---@param zoom number
    SET_RADAR_ZOOM_PRECISE = function(zoom) end,

    ---zoomLevel ranges from 0 to 1400 in R* Scripts
    ---@param zoomLevel integer
    SET_RADAR_ZOOM = function(zoomLevel) end,

    ---@param blip Blip
    ---@param zoom number
    SET_RADAR_ZOOM_TO_BLIP = function(blip, zoom) end,

    ---@param zoom number
    SET_RADAR_ZOOM_TO_DISTANCE = function(zoom) end,

    ---Does nothing (it's a nullsub).
    UPDATE_RADAR_ZOOM_TO_BLIP = function() end,

    ---@param hudColorIndex integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    ---@return integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_HUD_COLOUR = function(hudColorIndex, r, g, b, a) end,

    ---Sets the color of HUD_COLOUR_SCRIPT_VARIABLE
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    SET_SCRIPT_VARIABLE_HUD_COLOUR = function(r, g, b, a) end,

    ---Sets the color of HUD_COLOUR_SCRIPT_VARIABLE_2
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    SET_SECOND_SCRIPT_VARIABLE_HUD_COLOUR = function(r, g, b, a) end,

    ---makes hudColorIndex2 color into hudColorIndex color
    ---@param hudColorIndex integer
    ---@param hudColorIndex2 integer
    REPLACE_HUD_COLOUR = function(hudColorIndex, hudColorIndex2) end,

    ---@param hudColorIndex integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    REPLACE_HUD_COLOUR_WITH_RGBA = function(hudColorIndex, r, g, b, a) end,

    ---@param visible BOOL
    SET_ABILITY_BAR_VISIBILITY = function(visible) end,

    ---@param toggle BOOL
    SET_ALLOW_ABILITY_BAR = function(toggle) end,

    ---@param millisecondsToFlash integer
    FLASH_ABILITY_BAR = function(millisecondsToFlash) end,

    ---@param p0 number
    ---@param p1 number
    SET_ABILITY_BAR_VALUE = function(p0, p1) end,

    ---@param p0 BOOL
    FLASH_WANTED_DISPLAY = function(p0) end,

    ---@param toggle BOOL
    FORCE_OFF_WANTED_STAR_FLASH = function(toggle) end,

    ---@param hudColorId integer
    SET_CUSTOM_MP_HUD_COLOR = function(hudColorId) end,

    ---This gets the height of the FONT and not the total text. You need to get the number of lines your text uses, and get the height of a newline (I'm using a smaller value) to get the total text height.
    ---@param size number
    ---@param font integer
    ---@return number
    GET_RENDERED_CHARACTER_HEIGHT = function(size, font) end,

    ---Size range : 0F to 1.0F\
    ---p0 is unknown and doesn't seem to have an effect, yet in the game scripts it changes to 1.0F sometimes.
    ---@param scale number
    ---@param size number
    SET_TEXT_SCALE = function(scale, size) end,

    ---colors you input not same as you think?\
    ---A: for some reason its R B G A
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    ---@param alpha integer
    SET_TEXT_COLOUR = function(red, green, blue, alpha) end,

    ---@param align BOOL
    SET_TEXT_CENTRE = function(align) end,

    ---@param toggle BOOL
    SET_TEXT_RIGHT_JUSTIFY = function(toggle) end,

    ---Types -\
    ---0: Center-Justify\
    ---1: Left-Justify\
    ---2: Right-Justify\
    ---\
    ---Right-Justify requires SET_TEXT_WRAP, otherwise it will draw to the far right of the screen
    ---@param justifyType integer
    SET_TEXT_JUSTIFICATION = function(justifyType) end,

    ---@param lineHeightMult number
    SET_TEXT_LINE_HEIGHT_MULT = function(lineHeightMult) end,

    ---It sets the text in a specified box and wraps the text if it exceeds the boundries. Both values are for X axis. Useful when positioning text set to center or aligned to the right.\
    ---\
    ---start - left boundry on screen position (0.0 - 1.0)\
    ---end - right boundry on screen position (0.0 - 1.0)
    ---@param start number
    ---@param _end number
    SET_TEXT_WRAP = function(start, _end) end,

    ---@param p0 integer
    SET_TEXT_LEADING = function(p0) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 BOOL
    SET_TEXT_PROPORTIONAL = function(p0) end,

    ---fonts that mess up your text where made for number values/misc stuff
    ---@param fontType integer
    SET_TEXT_FONT = function(fontType) end,

    SET_TEXT_DROP_SHADOW = function() end,

    ---distance - shadow distance in pixels, both horizontal and vertical\
    ---r, g, b, a - color
    ---@param distance integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    SET_TEXT_DROPSHADOW = function(distance, r, g, b, a) end,

    SET_TEXT_OUTLINE = function() end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param a integer
    SET_TEXT_EDGE = function(p0, r, g, b, a) end,

    ---@param renderId integer
    SET_TEXT_RENDER_ID = function(renderId) end,

    ---This function is hard-coded to always return 1.
    ---@return integer
    GET_DEFAULT_SCRIPT_RENDERTARGET_RENDER_ID = function() end,

    ---@param name string
    ---@param p1 BOOL
    ---@return BOOL
    REGISTER_NAMED_RENDERTARGET = function(name, p1) end,

    ---@param name string
    ---@return BOOL
    IS_NAMED_RENDERTARGET_REGISTERED = function(name) end,

    ---@param name string
    ---@return BOOL
    RELEASE_NAMED_RENDERTARGET = function(name) end,

    ---@param modelHash Hash
    LINK_NAMED_RENDERTARGET = function(modelHash) end,

    ---@param name string
    ---@return integer
    GET_NAMED_RENDERTARGET_RENDER_ID = function(name) end,

    ---@param modelHash Hash
    ---@return BOOL
    IS_NAMED_RENDERTARGET_LINKED = function(modelHash) end,

    ---@param toggle BOOL
    CLEAR_HELP = function(toggle) end,

    ---@return BOOL
    IS_HELP_MESSAGE_ON_SCREEN = function() end,

    ---@return BOOL
    HAS_SCRIPT_HIDDEN_HELP_THIS_FRAME = function() end,

    ---@return BOOL
    IS_HELP_MESSAGE_BEING_DISPLAYED = function() end,

    ---@return BOOL
    IS_HELP_MESSAGE_FADING_OUT = function() end,

    ---@param style integer
    ---@param hudColor integer
    ---@param alpha integer
    ---@param p3 integer
    ---@param p4 integer
    SET_HELP_MESSAGE_STYLE = function(style, hudColor, alpha, p3, p4) end,

    ---@return integer
    GET_STANDARD_BLIP_ENUM_ID = function() end,

    ---@return integer
    GET_WAYPOINT_BLIP_ENUM_ID = function() end,

    ---@return integer
    GET_NUMBER_OF_ACTIVE_BLIPS = function() end,

    ---@param blipSprite integer
    ---@return Blip
    GET_NEXT_BLIP_INFO_ID = function(blipSprite) end,

    ---@param blipSprite integer
    ---@return Blip
    GET_FIRST_BLIP_INFO_ID = function(blipSprite) end,

    ---@param blipSprite integer
    ---@return Blip
    GET_CLOSEST_BLIP_INFO_ID = function(blipSprite) end,

    ---@param blip Blip
    ---@return Vector3
    GET_BLIP_INFO_ID_COORD = function(blip) end,

    ---@param blip Blip
    ---@return integer
    GET_BLIP_INFO_ID_DISPLAY = function(blip) end,

    ---Returns a value based on what the blip is attached to\
    ---1 - Vehicle\
    ---2 - Ped\
    ---3 - Object\
    ---4 - Coord\
    ---5 - unk\
    ---6 - Pickup\
    ---7 - Radius
    ---@param blip Blip
    ---@return integer
    GET_BLIP_INFO_ID_TYPE = function(blip) end,

    ---@param blip Blip
    ---@return Entity
    GET_BLIP_INFO_ID_ENTITY_INDEX = function(blip) end,

    ---This function is hard-coded to always return 0.
    ---@param blip Blip
    ---@return Pickup
    GET_BLIP_INFO_ID_PICKUP_INDEX = function(blip) end,

    ---Returns the Blip handle of given Entity.
    ---@param entity Entity
    ---@return Blip
    GET_BLIP_FROM_ENTITY = function(entity) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param radius number
    ---@return Blip
    ADD_BLIP_FOR_RADIUS = function(posX, posY, posZ, radius) end,

    ---Adds a rectangular blip for the specified coordinates/area.\
    ---\
    ---It is recommended to use SET_BLIP_ROTATION and SET_BLIP_COLOUR to make the blip not rotate along with the camera.\
    ---\
    ---By default, the blip will show as a _regular_ blip with the specified color/sprite if it is outside of the minimap view.\
    ---\
    ---Example image:\
    ---minimap https://w.wew.wtf/pdcjig.png\
    ---big map https://w.wew.wtf/zgcjcm.png\
    ---\
    ---(Native name is _likely_ to actually be ADD_BLIP_FOR_AREA, but due to the usual reasons this can't be confirmed)
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param width number
    ---@param height number
    ---@return Blip
    ADD_BLIP_FOR_AREA = function(x, y, z, width, height) end,

    ---Returns red ( default ) blip attached to entity.\
    ---\
    ---Example:\
    ---Blip blip; //Put this outside your case or option\
    ---blip = HUD::ADD_BLIP_FOR_ENTITY(YourPedOrBodyguardName);\
    ---HUD::SET_BLIP_AS_FRIENDLY(blip, true);
    ---@param entity Entity
    ---@return Blip
    ADD_BLIP_FOR_ENTITY = function(entity) end,

    ---@param pickup Pickup
    ---@return Blip
    ADD_BLIP_FOR_PICKUP = function(pickup) end,

    ---Creates an orange ( default ) Blip-object. Returns a Blip-object which can then be modified.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return Blip
    ADD_BLIP_FOR_COORD = function(x, y, z) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param radius number
    ---@param p4 integer
    TRIGGER_SONAR_BLIP = function(posX, posY, posZ, radius, p4) end,

    ---@param toggle BOOL
    ALLOW_SONAR_BLIPS = function(toggle) end,

    ---@param blip Blip
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_BLIP_COORDS = function(blip, posX, posY, posZ) end,

    ---@param blip Blip
    ---@return Vector3
    GET_BLIP_COORDS = function(blip) end,

    ---Sets the displayed sprite for a specific blip..\
    ---\
    ---You may have your own list, but since dev-c didn't show it I was bored and started looking through scripts and functions to get a presumable almost positive list of a majority of blip IDs\
    ---https://pastebin.com/Bpj9Sfft\
    ---\
    ---Blips Images + IDs:\
    ---https://gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html
    ---@param blip Blip
    ---@param spriteId integer
    SET_BLIP_SPRITE = function(blip, spriteId) end,

    ---Blips Images + IDs:\
    ---gtaxscripting.blogspot.com/2016/05/gta-v-blips-id-and-image.html
    ---@param blip Blip
    ---@return integer
    GET_BLIP_SPRITE = function(blip) end,

    ---@param p0 integer
    ---@param p1 number
    SET_COP_BLIP_SPRITE = function(p0, p1) end,

    SET_COP_BLIP_SPRITE_AS_STANDARD = function() end,

    ---Doesn't work if the label text of gxtEntry is >= 80.
    ---@param blip Blip
    ---@param gxtEntry string
    SET_BLIP_NAME_FROM_TEXT_FILE = function(blip, gxtEntry) end,

    ---@param blip Blip
    ---@param player Player
    SET_BLIP_NAME_TO_PLAYER_NAME = function(blip, player) end,

    ---Sets alpha-channel for blip color.\
    ---\
    ---Example:\
    ---\
    ---Blip blip = HUD::ADD_BLIP_FOR_ENTITY(entity);\
    ---HUD::SET_BLIP_COLOUR(blip , 3);\
    ---HUD::SET_BLIP_ALPHA(blip , 64);\
    ---
    ---@param blip Blip
    ---@param alpha integer
    SET_BLIP_ALPHA = function(blip, alpha) end,

    ---@param blip Blip
    ---@return integer
    GET_BLIP_ALPHA = function(blip) end,

    ---@param blip Blip
    ---@param opacity integer
    ---@param duration integer
    SET_BLIP_FADE = function(blip, opacity, duration) end,

    ---Returns -1, 0, +1, depending on if the blip is fading out, doing nothing, or fading in respectively.
    ---@param blip Blip
    ---@return integer
    GET_BLIP_FADE_DIRECTION = function(blip) end,

    ---After some testing, looks like you need to use CEIL() on the rotation (vehicle/ped heading) before using it there.
    ---@param blip Blip
    ---@param rotation integer
    SET_BLIP_ROTATION = function(blip, rotation) end,

    ---Does not require whole number/integer rotations.
    ---@param blip Blip
    ---@param heading number
    SET_BLIP_ROTATION_WITH_FLOAT = function(blip, heading) end,

    ---@param blip Blip
    ---@return integer
    GET_BLIP_ROTATION = function(blip) end,

    ---Adds up after viewing multiple R* scripts. I believe that the duration is in miliseconds.
    ---@param blip Blip
    ---@param duration integer
    SET_BLIP_FLASH_TIMER = function(blip, duration) end,

    ---@param blip Blip
    ---@param p1 Any
    SET_BLIP_FLASH_INTERVAL = function(blip, p1) end,

    ---https://gtaforums.com/topic/864881-all-blip-color-ids-pictured/
    ---@param blip Blip
    ---@param color integer
    SET_BLIP_COLOUR = function(blip, color) end,

    ---Can be used to give blips any RGB colour with SET_BLIP_COLOUR(blip, 84).
    ---@param blip Blip
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_BLIP_SECONDARY_COLOUR = function(blip, r, g, b) end,

    ---@param blip Blip
    ---@return integer
    GET_BLIP_COLOUR = function(blip) end,

    ---@param blip Blip
    ---@return integer
    GET_BLIP_HUD_COLOUR = function(blip) end,

    ---@param blip Blip
    ---@return BOOL
    IS_BLIP_SHORT_RANGE = function(blip) end,

    ---@param blip Blip
    ---@return BOOL
    IS_BLIP_ON_MINIMAP = function(blip) end,

    ---@param blip Blip
    ---@return BOOL
    DOES_BLIP_HAVE_GPS_ROUTE = function(blip) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_HIDDEN_ON_LEGEND = function(blip, toggle) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_HIGH_DETAIL = function(blip, toggle) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_AS_MISSION_CREATOR_BLIP = function(blip, toggle) end,

    ---@param blip Blip
    ---@return BOOL
    IS_MISSION_CREATOR_BLIP = function(blip) end,

    ---@return Blip
    GET_NEW_SELECTED_MISSION_CREATOR_BLIP = function() end,

    ---@return BOOL
    IS_HOVERING_OVER_MISSION_CREATOR_BLIP = function() end,

    ---@param toggle BOOL
    SHOW_START_MISSION_INSTRUCTIONAL_BUTTON = function(toggle) end,

    ---@param toggle BOOL
    SHOW_CONTACT_INSTRUCTIONAL_BUTTON = function(toggle) end,

    ---@param toggle BOOL
    _SHOW_PURCHASE_INSTRUCTIONAL_BUTTON = function(toggle) end,

    RELOAD_MAP_MENU = function() end,

    ---@param p0 Any
    ---@param p1 Any
    SET_BLIP_MARKER_LONG_DISTANCE = function(p0, p1) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_FLASHES = function(blip, toggle) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_FLASHES_ALTERNATE = function(blip, toggle) end,

    ---@param blip Blip
    ---@return BOOL
    IS_BLIP_FLASHING = function(blip) end,

    ---Sets whether or not the specified blip should only be displayed when nearby, or on the minimap.
    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_AS_SHORT_RANGE = function(blip, toggle) end,

    ---@param blip Blip
    ---@param scale number
    SET_BLIP_SCALE = function(blip, scale) end,

    ---See https://imgur.com/a/lLkEsMN
    ---@param blip Blip
    ---@param xScale number
    ---@param yScale number
    SET_BLIP_SCALE_2D = function(blip, xScale, yScale) end,

    ---See this topic for more details : gtaforums.com/topic/717612-v-scriptnative-documentation-and-research/page-35?p=1069477935
    ---@param blip Blip
    ---@param priority integer
    SET_BLIP_PRIORITY = function(blip, priority) end,

    ---Display Id behaviours:\
    ---0 = Doesn't show up, ever, anywhere.\
    ---1 = Doesn't show up, ever, anywhere.\
    ---2 = Shows on both main map and minimap. (Selectable on map)\
    ---3 = Shows on main map only. (Selectable on map)\
    ---4 = Shows on main map only. (Selectable on map)\
    ---5 = Shows on minimap only.\
    ---6 = Shows on both main map and minimap. (Selectable on map)\
    ---7 = Doesn't show up, ever, anywhere.\
    ---8 = Shows on both main map and minimap. (Not selectable on map)\
    ---9 = Shows on minimap only.\
    ---10 = Shows on both main map and minimap. (Not selectable on map)\
    ---\
    ---Anything higher than 10 seems to be exactly the same as 10.
    ---@param blip Blip
    ---@param displayId integer
    SET_BLIP_DISPLAY = function(blip, displayId) end,

    ---Example: https://i.imgur.com/skY6vAJ.png\
    ---\
    ---Index:\
    ---1 = No distance shown in legend\
    ---2 = Distance shown in legend\
    ---7 = "Other Players" category, also shows distance in legend\
    ---10 = "Property" category\
    ---11 = "Owned Property" category\
    ---\
    ---Any other value behaves like index = 1, index wraps around after 255\
    ---Blips with categories 7, 10 or 11 will all show under the specific categories listing in the map legend, regardless of sprite or name.\
    ---Legend entries:\
    ---7 = Other Players (BLIP_OTHPLYR)\
    ---10 = Property (BLIP_PROPCAT)\
    ---11 = Owned Property (BLIP_APARTCAT)\
    ---\
    ---Category needs to be `7` in order for blip names to show on the expanded minimap when using DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS.
    ---@param blip Blip
    ---@param index integer
    SET_BLIP_CATEGORY = function(blip, index) end,

    ---In the C++ SDK, this seems not to work-- the blip isn't removed immediately. I use it for saving cars.\
    ---\
    ---E.g.:\
    ---\
    ---Ped pped = PLAYER::PLAYER_PED_ID();\
    ---Vehicle v = PED::GET_VEHICLE_PED_IS_USING(pped);\
    ---Blip b = HUD::ADD_BLIP_FOR_ENTITY(v);\
    ---\
    ---works fine.\
    ---But later attempting to delete it with:\
    ---\
    ---Blip b = HUD::GET_BLIP_FROM_ENTITY(v);\
    ---if (HUD::DOES_BLIP_EXIST(b)) HUD::REMOVE_BLIP(&b);\
    ---\
    ---doesn't work. And yes, doesn't work without the DOES_BLIP_EXIST check either. Also, if you attach multiple blips to the same thing (say, a vehicle), and that thing disappears, the blips randomly attach to other things (in my case, a vehicle).\
    ---\
    ---Thus for me, HUD::REMOVE_BLIP(&b) only works if there's one blip, (in my case) the vehicle is marked as no longer needed, you drive away from it and it eventually despawns, AND there is only one blip attached to it. I never intentionally attach multiple blips but if the user saves the car, this adds a blip. Then if they delete it, it is supposed to remove the blip, but it doesn't. Then they can immediately save it again, causing another blip to re-appear.\
    ----------------\
    ---\
    ---Passing the address of the variable instead of the value works for me.\
    ---e.g.\
    ---int blip = HUD::ADD_BLIP_FOR_ENTITY(ped);\
    ---HUD::REMOVE_BLIP(&blip);\
    ---\
    ---\
    ---Remove blip will currently crash your game, just artificially remove the blip by setting the sprite to a id that is 'invisible'.
    ---@param blip Blip
    ---@return Blip
    REMOVE_BLIP = function(blip) end,

    ---false for enemy\
    ---true for friendly
    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_AS_FRIENDLY = function(blip, toggle) end,

    ---@param blip Blip
    PULSE_BLIP = function(blip) end,

    ---@param blip Blip
    ---@param number integer
    SHOW_NUMBER_ON_BLIP = function(blip, number) end,

    ---@param blip Blip
    HIDE_NUMBER_ON_BLIP = function(blip) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_HEIGHT_ON_BLIP = function(blip, toggle) end,

    ---Adds a green checkmark on top of a blip.
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_TICK_ON_BLIP = function(blip, toggle) end,

    ---Adds a orange checkmark on top of a given blip handle: https://imgur.com/a/aw5OTMF\
    ---_SHOW_FRIEND_INDICATOR_ON_BLIP* - _SHOW_HEADING_INDICATOR_ON_BLIP*
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_GOLD_TICK_ON_BLIP = function(blip, toggle) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_FOR_SALE_ICON_ON_BLIP = function(blip, toggle) end,

    ---Adds the GTA: Online player heading indicator to a blip.
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_HEADING_INDICATOR_ON_BLIP = function(blip, toggle) end,

    ---Highlights a blip by a cyan color circle.\
    ---\
    ---Color can be changed with SET_BLIP_SECONDARY_COLOUR
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_OUTLINE_INDICATOR_ON_BLIP = function(blip, toggle) end,

    ---Highlights a blip by a half cyan circle on the right side of the blip. https://i.imgur.com/FrV9M4e.png\
    ---.Indicating that that player is a friend (in GTA:O). This color can not be changed.\
    ---To toggle the left side (crew member indicator) of the half circle around the blip, use: `SHOW_CREW_INDICATOR_ON_BLIP`
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_FRIEND_INDICATOR_ON_BLIP = function(blip, toggle) end,

    ---Enables or disables the blue half circle https://i.imgur.com/iZes9Ec.png around the specified blip on the left side of the blip. This is used to indicate that the player is in your crew in GTA:O. Color is changeable by using `SET_BLIP_SECONDARY_COLOUR`.
    ---@param blip Blip
    ---@param toggle BOOL
    SHOW_CREW_INDICATOR_ON_BLIP = function(blip, toggle) end,

    ---Must be toggled before being queued for animation
    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_EXTENDED_HEIGHT_THRESHOLD = function(blip, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_BLIP_SHORT_HEIGHT_THRESHOLD = function(p0, p1) end,

    ---@param blip Blip
    ---@param p1 Any
    SET_BLIP_USE_HEIGHT_INDICATOR_ON_EDGE = function(blip, p1) end,

    ---Makes a blip go small when off the minimap.
    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_AS_MINIMAL_ON_EDGE = function(blip, toggle) end,

    ---Enabling this on a radius blip will make it outline only. See https://cdn.discordapp.com/attachments/553235301632573459/575132227935928330/unknown.png
    ---@param blip Blip
    ---@param toggle BOOL
    SET_RADIUS_BLIP_EDGE = function(blip, toggle) end,

    ---@param blip Blip
    ---@return BOOL
    DOES_BLIP_EXIST = function(blip) end,

    ---This native removes the current waypoint from the map.\
    ---\
    ---Example:\
    ---C#:\
    ---Function.Call(Hash.SET_WAYPOINT_OFF);\
    ---\
    ---C++:\
    ---HUD::SET_WAYPOINT_OFF();
    SET_WAYPOINT_OFF = function() end,

    DELETE_WAYPOINTS_FROM_THIS_PLAYER = function() end,

    REFRESH_WAYPOINT = function() end,

    ---@return BOOL
    IS_WAYPOINT_ACTIVE = function() end,

    ---@param x number
    ---@param y number
    SET_NEW_WAYPOINT = function(x, y) end,

    ---@return integer
    GET_WAYPOINT_CLEAR_ON_ARRIVAL_MODE = function() end,

    ---@param mode integer
    SET_WAYPOINT_CLEAR_ON_ARRIVAL_MODE = function(mode) end,

    ---@param blip Blip
    ---@param toggle BOOL
    SET_BLIP_BRIGHT = function(blip, toggle) end,

    ---As of b2189, the third parameter sets the color of the cone (before b2189 it was ignored). Note that it uses HUD colors, not blip colors.
    ---@param blip Blip
    ---@param toggle BOOL
    ---@param hudColorIndex integer
    SET_BLIP_SHOW_CONE = function(blip, toggle, hudColorIndex) end,

    ---Interesting fact: A hash collision for this is RESET_JETPACK_MODEL_SETTINGS
    ---@param ped Ped
    REMOVE_COP_BLIP_FROM_PED = function(ped) end,

    ---@param blip Blip
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 Any
    ---@param p8 integer
    SETUP_FAKE_CONE_DATA = function(blip, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---@param blip Blip
    REMOVE_FAKE_CONE_DATA = function(blip) end,

    CLEAR_FAKE_CONE_ARRAY = function() end,

    ---Applies to new eBlipParams _BLIP_CHANGE_46* and _BLIP_CHANGE_47*
    ---@param blip Blip
    ---@param blipChangeParam46 integer
    ---@param blipChangeParam47 BOOL
    _SET_BLIP_GPS_ROUTE_DISPLAY_DISTANCE = function(blip, blipChangeParam46, blipChangeParam47) end,

    ---This native is used to colorize certain map components like the army base at the top of the map.\
    ---p2 appears to be always -1. If p2 is -1 then native wouldn't change the color. See https://gfycat.com/SkinnyPinkChupacabra
    ---@param componentId integer
    ---@param toggle BOOL
    ---@param overrideColor integer
    ---@return BOOL
    SET_MINIMAP_COMPONENT = function(componentId, toggle, overrideColor) end,

    ---@param toggle BOOL
    SET_MINIMAP_SONAR_SWEEP = function(toggle) end,

    SHOW_ACCOUNT_PICKER = function() end,

    ---@return Blip
    GET_MAIN_PLAYER_BLIP_ID = function() end,

    ---@param p0 BOOL
    SET_PM_WARNINGSCREEN_ACTIVE = function(p0) end,

    HIDE_LOADING_ON_FADE_THIS_FRAME = function() end,

    ---List of interior hashes: https://pastebin.com/1FUyXNqY\
    ---Not for every interior zoom > 0 available.
    ---@param interior Hash
    ---@param x number
    ---@param y number
    ---@param z integer
    ---@param zoom integer
    SET_RADAR_AS_INTERIOR_THIS_FRAME = function(interior, x, y, z, zoom) end,

    ---@param toggle BOOL
    SET_INSIDE_VERY_SMALL_INTERIOR = function(toggle) end,

    ---@param toggle BOOL
    SET_INSIDE_VERY_LARGE_INTERIOR = function(toggle) end,

    SET_RADAR_AS_EXTERIOR_THIS_FRAME = function() end,

    ---Sets the position of the arrow icon representing the player on both the minimap and world map.\
    ---\
    ---Too bad this wouldn't work over the network (obviously not). Could spoof where we would be.
    ---@param x number
    ---@param y number
    SET_FAKE_PAUSEMAP_PLAYER_POSITION_THIS_FRAME = function(x, y) end,

    ---@param x number
    ---@param y number
    ---@param z number
    SET_FAKE_GPS_PLAYER_POSITION_THIS_FRAME = function(x, y, z) end,

    ---@return BOOL
    IS_PAUSEMAP_IN_INTERIOR_MODE = function() end,

    HIDE_MINIMAP_EXTERIOR_MAP_THIS_FRAME = function() end,

    HIDE_MINIMAP_INTERIOR_MAP_THIS_FRAME = function() end,

    ---Toggles the Cayo Perico map.
    ---@param toggle BOOL
    SET_USE_ISLAND_MAP = function(toggle) end,

    _SET_PAUSE_EXTERIOR_RENDERING_WHILE_IN_INTERIOR = function() end,

    ---When calling this, the current frame will have the players "arrow icon" be focused on the dead center of the radar.
    DONT_TILT_MINIMAP_THIS_FRAME = function() end,

    DONT_ZOOM_MINIMAP_WHEN_RUNNING_THIS_FRAME = function() end,

    DONT_ZOOM_MINIMAP_WHEN_SNIPING_THIS_FRAME = function() end,

    ---@param p0 Any
    SET_WIDESCREEN_FORMAT = function(p0) end,

    ---@param toggle BOOL
    DISPLAY_AREA_NAME = function(toggle) end,

    ---"DISPLAY_CASH(false);" makes the cash amount render on the screen when appropriate\
    ---"DISPLAY_CASH(true);" disables cash amount rendering
    ---@param toggle BOOL
    DISPLAY_CASH = function(toggle) end,

    ---Related to displaying cash on the HUD\
    ---Always called before HUD::CHANGE_FAKE_MP_CASH in decompiled scripts
    ---@param toggle BOOL
    USE_FAKE_MP_CASH = function(toggle) end,

    ---Displays cash change notifications on HUD.
    ---@param cash integer
    ---@param bank integer
    CHANGE_FAKE_MP_CASH = function(cash, bank) end,

    ---@param display BOOL
    DISPLAY_AMMO_THIS_FRAME = function(display) end,

    ---Displays the crosshair for this frame.
    DISPLAY_SNIPER_SCOPE_THIS_FRAME = function() end,

    ---Hides HUD and radar this frame and prohibits switching to other weapons (or accessing the weapon wheel)
    HIDE_HUD_AND_RADAR_THIS_FRAME = function() end,

    ---Controls whether to display 'Cash'/'Bank' next to the money balance HUD in Multiplayer (https://i.imgur.com/MiYUtNl.png)
    ---@param allow BOOL
    ALLOW_DISPLAY_OF_MULTIPLAYER_CASH_TEXT = function(allow) end,

    SET_MULTIPLAYER_WALLET_CASH = function() end,

    REMOVE_MULTIPLAYER_WALLET_CASH = function() end,

    SET_MULTIPLAYER_BANK_CASH = function() end,

    REMOVE_MULTIPLAYER_BANK_CASH = function() end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 integer
    ---@param p1 BOOL
    SET_MULTIPLAYER_HUD_CASH = function(p0, p1) end,

    ---Removes multiplayer cash hud each frame
    REMOVE_MULTIPLAYER_HUD_CASH = function() end,

    HIDE_HELP_TEXT_THIS_FRAME = function() end,

    ---@return BOOL
    IS_IME_IN_PROGRESS = function() end,

    ---The messages are localized strings.\
    ---Examples:\
    ---"No_bus_money"\
    ---"Enter_bus"\
    ---"Tour_help"\
    ---"LETTERS_HELP2"\
    ---"Dummy"\
    ---\
    ---**The bool appears to always be false (if it even is a bool, as it's represented by a zero)**\
    -----------\
    ---p1 doesn't seem to make a difference, regardless of the state it's in. \
    ---\
    ---\
    ---picture of where on the screen this is displayed? 
    ---@param message string
    ---@param p1 BOOL
    DISPLAY_HELP_TEXT_THIS_FRAME = function(message, p1) end,

    ---Forces the weapon wheel to show/hide.
    ---@param show BOOL
    HUD_FORCE_WEAPON_WHEEL = function(show) end,

    ---Displays "blazer_wheels_up" and "blazer_wheels_down" "weapon" icons when switching between jetski and quadbike modes. Works only on vehicles using "VEHICLE_TYPE_AMPHIBIOUS_QUADBIKE" vehicle type. Needs to be called every time prior to switching modes, otherwise the icon will only appear when switching modes once.
    HUD_FORCE_SPECIAL_VEHICLE_WEAPON_WHEEL = function() end,

    ---Calling this each frame, stops the player from receiving a weapon via the weapon wheel.
    HUD_SUPPRESS_WEAPON_WHEEL_RESULTS_THIS_FRAME = function() end,

    ---Returns the weapon hash to the selected/highlighted weapon in the wheel
    ---@return Hash
    HUD_GET_WEAPON_WHEEL_CURRENTLY_HIGHLIGHTED = function() end,

    ---Set the active slotIndex in the wheel weapon to the slot associated with the provided Weapon hash
    ---@param weaponHash Hash
    HUD_SET_WEAPON_WHEEL_TOP_SLOT = function(weaponHash) end,

    ---Returns the weapon hash active in a specific weapon wheel slotList
    ---@param weaponTypeIndex integer
    ---@return Hash
    HUD_GET_WEAPON_WHEEL_TOP_SLOT = function(weaponTypeIndex) end,

    ---Sets a global that disables many weapon input tasks (shooting, aiming, etc.). Does not work with vehicle weapons, only used in selector.ysc
    ---@param toggle BOOL
    HUD_SHOWING_CHARACTER_SWITCH_SELECTION = function(toggle) end,

    ---Only the script that originally called SET_GPS_FLAGS can set them again. Another script cannot set the flags, until the first script that called it has called CLEAR_GPS_FLAGS.\
    ---\
    ---Doesn't seem like the flags are actually read by the game at all.
    ---@param p0 integer
    ---@param p1 number
    SET_GPS_FLAGS = function(p0, p1) end,

    ---Clears the GPS flags. Only the script that originally called SET_GPS_FLAGS can clear them.\
    ---\
    ---Doesn't seem like the flags are actually read by the game at all.
    CLEAR_GPS_FLAGS = function() end,

    ---@param toggle BOOL
    SET_RACE_TRACK_RENDER = function(toggle) end,

    ---Does the same as SET_RACE_TRACK_RENDER(false);
    CLEAR_GPS_RACE_TRACK = function() end,

    ---Starts a new GPS custom-route, allowing you to plot lines on the map.\
    ---Lines are drawn directly between points.\
    ---The GPS custom route works like the GPS multi route, except it does not follow roads.\
    ---Example result: https://i.imgur.com/BDm5pzt.png\
    ---hudColor: The HUD color of the GPS path.\
    ---displayOnFoot: Draws the path regardless if the player is in a vehicle or not.\
    ---followPlayer: Draw the path partially between the previous and next point based on the players position between them. When false, the GPS appears to not disappear after the last leg is completed.
    ---@param hudColor integer
    ---@param displayOnFoot BOOL
    ---@param followPlayer BOOL
    START_GPS_CUSTOM_ROUTE = function(hudColor, displayOnFoot, followPlayer) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ADD_POINT_TO_GPS_CUSTOM_ROUTE = function(x, y, z) end,

    ---radarThickness: The width of the GPS route on the radar\
    ---mapThickness: The width of the GPS route on the map
    ---@param toggle BOOL
    ---@param radarThickness integer
    ---@param mapThickness integer
    SET_GPS_CUSTOM_ROUTE_RENDER = function(toggle, radarThickness, mapThickness) end,

    CLEAR_GPS_CUSTOM_ROUTE = function() end,

    ---Starts a new GPS multi-route, allowing you to create custom GPS paths.\
    ---GPS functions like the waypoint, except it can contain multiple points it's forced to go through.\
    ---Once the player has passed a point, the GPS will no longer force its path through it.\
    ---\
    ---Works independently from the player-placed waypoint and blip routes.\
    ---Example result: https://i.imgur.com/ZZHQatX.png\
    ---hudColor: The HUD color of the GPS path.\
    ---routeFromPlayer: Makes the GPS draw a path from the player to the next point, rather than the original path from the previous point.\
    ---displayOnFoot: Draws the GPS path regardless if the player is in a vehicle or not.
    ---@param hudColor integer
    ---@param routeFromPlayer BOOL
    ---@param displayOnFoot BOOL
    START_GPS_MULTI_ROUTE = function(hudColor, routeFromPlayer, displayOnFoot) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ADD_POINT_TO_GPS_MULTI_ROUTE = function(x, y, z) end,

    ---@param toggle BOOL
    SET_GPS_MULTI_ROUTE_RENDER = function(toggle) end,

    ---Does the same as SET_GPS_MULTI_ROUTE_RENDER(false);
    CLEAR_GPS_MULTI_ROUTE = function() end,

    CLEAR_GPS_PLAYER_WAYPOINT = function() end,

    ---@param toggle BOOL
    SET_GPS_FLASHES = function(toggle) end,

    ---@param color integer
    SET_PLAYER_ICON_COLOUR = function(color) end,

    ---adds a short flash to the Radar/Minimap\
    ---Usage: UI.FLASH_MINIMAP_DISPLAY
    FLASH_MINIMAP_DISPLAY = function() end,

    ---@param hudColorIndex integer
    FLASH_MINIMAP_DISPLAY_WITH_COLOR = function(hudColorIndex) end,

    ---@param toggle BOOL
    TOGGLE_STEALTH_RADAR = function(toggle) end,

    ---@param toggle BOOL
    ---@param ped Ped
    SET_MINIMAP_IN_SPECTATOR_MODE = function(toggle, ped) end,

    ---@param p0 BOOL
    ---@param name string
    SET_MISSION_NAME = function(p0, name) end,

    ---@param p0 BOOL
    ---@param name string
    SET_MISSION_NAME_FOR_UGC_MISSION = function(p0, name) end,

    ---@param p0 BOOL
    ---@param p1 string
    ---@param p2 string
    ---@param p3 string
    ---@param p4 string
    ---@param p5 string
    ---@param p6 string
    ---@param p7 string
    ---@param p8 string
    SET_DESCRIPTION_FOR_UGC_MISSION_EIGHT_STRINGS = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---@param toggle BOOL
    SET_MINIMAP_BLOCK_WAYPOINT = function(toggle) end,

    ---Toggles the North Yankton map
    ---@param toggle BOOL
    SET_MINIMAP_IN_PROLOGUE = function(toggle) end,

    ---This native does absolutely nothing on PC master builds, just a nullsub.
    ---@param toggle BOOL
    SET_MINIMAP_BACKGROUND_HIDDEN = function(toggle) end,

    ---If true, the entire map will be revealed.\
    ---\
    ---FOW = Fog of War
    ---@param toggle BOOL
    SET_MINIMAP_HIDE_FOW = function(toggle) end,

    ---@return number
    GET_MINIMAP_FOW_DISCOVERY_RATIO = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@return BOOL
    GET_MINIMAP_FOW_COORDINATE_IS_REVEALED = function(x, y, z) end,

    ---@param p0 BOOL
    SET_MINIMAP_FOW_DO_NOT_UPDATE = function(p0) end,

    ---Up to eight coordinates may be revealed per frame
    ---@param x number
    ---@param y number
    ---@param z number
    SET_MINIMAP_FOW_REVEAL_COORDINATE = function(x, y, z) end,

    ---Not much is known so far on what it does _exactly_.\
    ---All I know for sure is that it draws the specified hole ID on the pause menu map as well as on the mini-map/radar. This native also seems to change some other things related to the pause menu map's behaviour, for example: you can no longer set waypoints, the pause menu map starts up in a 'zoomed in' state. This native does not need to be executed every tick.\
    ---You need to center the minimap manually as well as change/lock it's zoom and angle in order for it to appear correctly on the minimap.\
    ---You'll also need to use the `GOLF` scaleform in order to get the correct minmap border to show up.\
    ---Use `0x35edd5b2e3ff01c0` to reset the map when you no longer want to display any golf holes (you still need to unlock zoom, position and angle of the radar manually after calling this).
    ---@param hole integer
    SET_MINIMAP_GOLF_COURSE = function(hole) end,

    SET_MINIMAP_GOLF_COURSE_OFF = function() end,

    ---Locks the minimap to the specified angle in integer degrees.\
    ---\
    ---angle: The angle in whole degrees. If less than 0 or greater than 360, unlocks the angle.
    ---@param angle integer
    LOCK_MINIMAP_ANGLE = function(angle) end,

    UNLOCK_MINIMAP_ANGLE = function() end,

    ---Locks the minimap to the specified world position.
    ---@param x number
    ---@param y number
    LOCK_MINIMAP_POSITION = function(x, y) end,

    UNLOCK_MINIMAP_POSITION = function() end,

    ---Argument must be 0.0f or above 38.0f, or it will be ignored.
    ---@param altitude number
    ---@param p1 BOOL
    ---@param p2 Any
    SET_FAKE_MINIMAP_MAX_ALTIMETER_HEIGHT = function(altitude, p1, p2) end,

    ---@param health integer
    ---@param capacity integer
    ---@param wasAdded BOOL
    SET_HEALTH_HUD_DISPLAY_VALUES = function(health, capacity, wasAdded) end,

    ---@param maximumValue integer
    SET_MAX_HEALTH_HUD_DISPLAY = function(maximumValue) end,

    ---@param maximumValue integer
    SET_MAX_ARMOUR_HUD_DISPLAY = function(maximumValue) end,

    ---Toggles the big minimap state like in GTA:Online.
    ---@param toggleBigMap BOOL
    ---@param showFullMap BOOL
    SET_BIGMAP_ACTIVE = function(toggleBigMap, showFullMap) end,

    ---Full list of components below\
    ---\
    ---HUD = 0;\
    ---HUD_WANTED_STARS = 1;\
    ---HUD_WEAPON_ICON = 2;\
    ---HUD_CASH = 3;\
    ---HUD_MP_CASH = 4;\
    ---HUD_MP_MESSAGE = 5;\
    ---HUD_VEHICLE_NAME = 6;\
    ---HUD_AREA_NAME = 7;\
    ---HUD_VEHICLE_CLASS = 8;\
    ---HUD_STREET_NAME = 9;\
    ---HUD_HELP_TEXT = 10;\
    ---HUD_FLOATING_HELP_TEXT_1 = 11;\
    ---HUD_FLOATING_HELP_TEXT_2 = 12;\
    ---HUD_CASH_CHANGE = 13;\
    ---HUD_RETICLE = 14;\
    ---HUD_SUBTITLE_TEXT = 15;\
    ---HUD_RADIO_STATIONS = 16;\
    ---HUD_SAVING_GAME = 17;\
    ---HUD_GAME_STREAM = 18;\
    ---HUD_WEAPON_WHEEL = 19;\
    ---HUD_WEAPON_WHEEL_STATS = 20;\
    ---MAX_HUD_COMPONENTS = 21;\
    ---MAX_HUD_WEAPONS = 22;\
    ---MAX_SCRIPTED_HUD_COMPONENTS = 141;
    ---@param id integer
    ---@return BOOL
    IS_HUD_COMPONENT_ACTIVE = function(id) end,

    ---@param id integer
    ---@return BOOL
    IS_SCRIPTED_HUD_COMPONENT_ACTIVE = function(id) end,

    ---@param id integer
    HIDE_SCRIPTED_HUD_COMPONENT_THIS_FRAME = function(id) end,

    ---@param id integer
    SHOW_SCRIPTED_HUD_COMPONENT_THIS_FRAME = function(id) end,

    ---@param id integer
    ---@return BOOL
    IS_SCRIPTED_HUD_COMPONENT_HIDDEN_THIS_FRAME = function(id) end,

    ---This function hides various HUD (Heads-up Display) components.\
    ---Listed below are the integers and the corresponding HUD component.\
    ---- 1 : WANTED_STARS\
    ---- 2 : WEAPON_ICON\
    ---- 3 : CASH\
    ---- 4 : MP_CASH\
    ---- 5 : MP_MESSAGE\
    ---- 6 : VEHICLE_NAME\
    ---- 7 : AREA_NAME\
    ---- 8 : VEHICLE_CLASS\
    ---- 9 : STREET_NAME\
    ---- 10 : HELP_TEXT\
    ---- 11 : FLOATING_HELP_TEXT_1\
    ---- 12 : FLOATING_HELP_TEXT_2\
    ---- 13 : CASH_CHANGE\
    ---- 14 : RETICLE\
    ---- 15 : SUBTITLE_TEXT\
    ---- 16 : RADIO_STATIONS\
    ---- 17 : SAVING_GAME\
    ---- 18 : GAME_STREAM\
    ---- 19 : WEAPON_WHEEL\
    ---- 20 : WEAPON_WHEEL_STATS\
    ---- 21 : HUD_COMPONENTS\
    ---- 22 : HUD_WEAPONS\
    ---\
    ---These integers also work for the `SHOW_HUD_COMPONENT_THIS_FRAME` native, but instead shows the HUD Component.
    ---@param id integer
    HIDE_HUD_COMPONENT_THIS_FRAME = function(id) end,

    ---@param id integer
    ---@return BOOL
    IS_HUD_COMPONENT_HIDDEN_THIS_FRAME = function(id) end,

    ---This function hides various HUD (Heads-up Display) components.\
    ---Listed below are the integers and the corresponding HUD component.\
    ---- 1 : WANTED_STARS\
    ---- 2 : WEAPON_ICON\
    ---- 3 : CASH\
    ---- 4 : MP_CASH\
    ---- 5 : MP_MESSAGE\
    ---- 6 : VEHICLE_NAME\
    ---- 7 : AREA_NAME\
    ---- 8 : VEHICLE_CLASS\
    ---- 9 : STREET_NAME\
    ---- 10 : HELP_TEXT\
    ---- 11 : FLOATING_HELP_TEXT_1\
    ---- 12 : FLOATING_HELP_TEXT_2\
    ---- 13 : CASH_CHANGE\
    ---- 14 : RETICLE\
    ---- 15 : SUBTITLE_TEXT\
    ---- 16 : RADIO_STATIONS\
    ---- 17 : SAVING_GAME\
    ---- 18 : GAME_STREAM\
    ---- 19 : WEAPON_WHEEL\
    ---- 20 : WEAPON_WHEEL_STATS\
    ---- 21 : HUD_COMPONENTS\
    ---- 22 : HUD_WEAPONS\
    ---\
    ---These integers also work for the `HIDE_HUD_COMPONENT_THIS_FRAME` native, but instead hides the HUD Component.
    ---@param id integer
    SHOW_HUD_COMPONENT_THIS_FRAME = function(id) end,

    ---Hides area and vehicle name HUD components for one frame.
    HIDE_STREET_AND_CAR_NAMES_THIS_FRAME = function() end,

    RESET_RETICULE_VALUES = function() end,

    ---@param id integer
    RESET_HUD_COMPONENT_VALUES = function(id) end,

    ---@param id integer
    ---@param x number
    ---@param y number
    SET_HUD_COMPONENT_POSITION = function(id, x, y) end,

    ---@param id integer
    ---@return Vector3
    GET_HUD_COMPONENT_POSITION = function(id) end,

    ---This native does absolutely nothing, just a nullsub
    CLEAR_REMINDER_MESSAGE = function() end,

    ---World to relative screen coords, this world to screen will keep the text on screen. Was named _GET_SCREEN_COORD_FROM_WORLD_COORD, but this conflicts with 0x34E82F05DF2974F5. As that hash actually matches GET_SCREEN_COORD_FROM_WORLD_COORD that one supercedes and this one was renamed to _GET_2D_COORD_FROM_3D_COORD
    ---@param worldX number
    ---@param worldY number
    ---@param worldZ number
    ---@param screenX number
    ---@param screenY number
    ---@return integer
    ---@return number
    ---@return number
    GET_HUD_SCREEN_POSITION_FROM_WORLD_POSITION = function(worldX, worldY, worldZ, screenX, screenY) end,

    ---Shows a menu for reporting UGC content.
    OPEN_REPORTUGC_MENU = function() end,

    FORCE_CLOSE_REPORTUGC_MENU = function() end,

    ---@return BOOL
    IS_REPORTUGC_MENU_OPEN = function() end,

    ---@param hudIndex integer
    ---@return BOOL
    IS_FLOATING_HELP_TEXT_ON_SCREEN = function(hudIndex) end,

    ---@param hudIndex integer
    ---@param x number
    ---@param y number
    SET_FLOATING_HELP_TEXT_SCREEN_POSITION = function(hudIndex, x, y) end,

    ---@param hudIndex integer
    ---@param x number
    ---@param y number
    ---@param z number
    SET_FLOATING_HELP_TEXT_WORLD_POSITION = function(hudIndex, x, y, z) end,

    ---@param hudIndex integer
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    SET_FLOATING_HELP_TEXT_TO_ENTITY = function(hudIndex, entity, offsetX, offsetY) end,

    ---@param hudIndex integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 integer
    ---@param p5 integer
    SET_FLOATING_HELP_TEXT_STYLE = function(hudIndex, p1, p2, p3, p4, p5) end,

    ---@param hudIndex integer
    ---@param p1 BOOL
    CLEAR_FLOATING_HELP = function(hudIndex, p1) end,

    ---clanFlag: takes a number 0-5
    ---@param player Player
    ---@param username string
    ---@param pointedClanTag BOOL
    ---@param isRockstarClan BOOL
    ---@param clanTag string
    ---@param clanFlag integer
    ---@param r integer
    ---@param g integer
    ---@param b integer
    CREATE_MP_GAMER_TAG_WITH_CREW_COLOR = function(player, username, pointedClanTag, isRockstarClan, clanTag, clanFlag, r, g, b) end,

    ---@return BOOL
    IS_MP_GAMER_TAG_MOVIE_ACTIVE = function() end,

    ---clanFlag: takes a number 0-5
    ---@param ped Ped
    ---@param username string
    ---@param pointedClanTag BOOL
    ---@param isRockstarClan BOOL
    ---@param clanTag string
    ---@param clanFlag integer
    ---@return integer
    CREATE_FAKE_MP_GAMER_TAG = function(ped, username, pointedClanTag, isRockstarClan, clanTag, clanFlag) end,

    ---@param gamerTagId integer
    REMOVE_MP_GAMER_TAG = function(gamerTagId) end,

    ---@param gamerTagId integer
    ---@return BOOL
    IS_MP_GAMER_TAG_ACTIVE = function(gamerTagId) end,

    ---@param gamerTagId integer
    ---@return BOOL
    IS_MP_GAMER_TAG_FREE = function(gamerTagId) end,

    ---enum eMpGamerTagComponent\
    ---{\
    ---	MP_TAG_GAMER_NAME,\
    ---	MP_TAG_CREW_TAG,\
    ---	MP_TAG_HEALTH_ARMOUR,\
    ---	MP_TAG_BIG_TEXT,\
    ---	MP_TAG_AUDIO_ICON,\
    ---	MP_TAG_USING_MENU,\
    ---	MP_TAG_PASSIVE_MODE,\
    ---	MP_TAG_WANTED_STARS,\
    ---	MP_TAG_DRIVER,\
    ---	MP_TAG_CO_DRIVER,\
    ---	MP_TAG_TAGGED,\
    ---	MP_TAG_GAMER_NAME_NEARBY,\
    ---	MP_TAG_ARROW,\
    ---	MP_TAG_PACKAGES,\
    ---	MP_TAG_INV_IF_PED_FOLLOWING,\
    ---	MP_TAG_RANK_TEXT,\
    ---	MP_TAG_TYPING,\
    ---	MP_TAG_BAG_LARGE,\
    ---	MP_TAG_ARROW,\
    ---	MP_TAG_GANG_CEO,\
    ---	MP_TAG_GANG_BIKER,\
    ---	MP_TAG_BIKER_ARROW,\
    ---	MP_TAG_MC_ROLE_PRESIDENT,\
    ---	MP_TAG_MC_ROLE_VICE_PRESIDENT,\
    ---	MP_TAG_MC_ROLE_ROAD_CAPTAIN,\
    ---	MP_TAG_MC_ROLE_SARGEANT,\
    ---	MP_TAG_MC_ROLE_ENFORCER,\
    ---	MP_TAG_MC_ROLE_PROSPECT,\
    ---	MP_TAG_TRANSMITTER,\
    ---	MP_TAG_BOMB\
    ---};
    ---@param gamerTagId integer
    ---@param component integer
    ---@param toggle BOOL
    ---@param p3 Any
    SET_MP_GAMER_TAG_VISIBILITY = function(gamerTagId, component, toggle, p3) end,

    ---@param gamerTagId integer
    ---@param toggle BOOL
    SET_ALL_MP_GAMER_TAGS_VISIBILITY = function(gamerTagId, toggle) end,

    ---Displays a bunch of icons above the players name, and level, and their name twice
    ---@param gamerTagId integer
    ---@param toggle BOOL
    SET_MP_GAMER_TAGS_SHOULD_USE_VEHICLE_HEALTH = function(gamerTagId, toggle) end,

    ---@param gamerTagId integer
    ---@param toggle BOOL
    SET_MP_GAMER_TAGS_SHOULD_USE_POINTS_HEALTH = function(gamerTagId, toggle) end,

    ---@param gamerTagId integer
    ---@param value integer
    ---@param maximumValue integer
    SET_MP_GAMER_TAGS_POINT_HEALTH = function(gamerTagId, value, maximumValue) end,

    ---Sets a gamer tag's component colour\
    ---\
    ---gamerTagId is obtained using for example CREATE_FAKE_MP_GAMER_TAG\
    ---Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.
    ---@param gamerTagId integer
    ---@param component integer
    ---@param hudColorIndex integer
    SET_MP_GAMER_TAG_COLOUR = function(gamerTagId, component, hudColorIndex) end,

    ---Ranges from 0 to 255. 0 is grey health bar, ~50 yellow, 200 purple.\
    ---Should be enabled as flag (2). Has 0 opacity by default.\
    ---\
    ---- This was _SET_MP_GAMER_TAG_HEALTH_BAR_COLOR,\
    ----> Rockstar use the EU spelling of 'color' so I hashed the same name with COLOUR and it came back as the correct hash, so it has been corrected above.
    ---@param gamerTagId integer
    ---@param hudColorIndex integer
    SET_MP_GAMER_TAG_HEALTH_BAR_COLOUR = function(gamerTagId, hudColorIndex) end,

    ---Sets flag's sprite transparency. 0-255.
    ---@param gamerTagId integer
    ---@param component integer
    ---@param alpha integer
    SET_MP_GAMER_TAG_ALPHA = function(gamerTagId, component, alpha) end,

    ---displays wanted star above head
    ---@param gamerTagId integer
    ---@param wantedlvl integer
    SET_MP_GAMER_TAG_WANTED_LEVEL = function(gamerTagId, wantedlvl) end,

    ---@param gamerTagId integer
    ---@param p1 integer
    SET_MP_GAMER_TAG_NUM_PACKAGES = function(gamerTagId, p1) end,

    ---@param gamerTagId integer
    ---@param string string
    SET_MP_GAMER_TAG_NAME = function(gamerTagId, string) end,

    ---@param gamerTagId integer
    ---@return BOOL
    IS_UPDATING_MP_GAMER_TAG_NAME_AND_CREW_DETAILS = function(gamerTagId) end,

    ---@param gamerTagId integer
    ---@param string string
    SET_MP_GAMER_TAG_BIG_TEXT = function(gamerTagId, string) end,

    ---@return integer
    GET_CURRENT_WEBPAGE_ID = function() end,

    ---@return integer
    GET_CURRENT_WEBSITE_ID = function() end,

    ---Returns the ActionScript flagValue.\
    ---ActionScript flags are global flags that scaleforms use\
    ---Flags found during testing\
    ---0: Returns 1 if the web_browser keyboard is open, otherwise 0\
    ---1: Returns 1 if the player has clicked back twice on the opening page, otherwise 0 (web_browser)\
    ---2: Returns how many links the player has clicked in the web_browser scaleform, returns 0 when the browser gets closed\
    ---9: Returns the current selection on the mobile phone scaleform\
    ---\
    ---There are 20 flags in total.
    ---@param flagIndex integer
    ---@return integer
    GET_GLOBAL_ACTIONSCRIPT_FLAG = function(flagIndex) end,

    ---@param flagIndex integer
    RESET_GLOBAL_ACTIONSCRIPT_FLAG = function(flagIndex) end,

    ---@return BOOL
    IS_WARNING_MESSAGE_READY_FOR_CONTROL = function() end,

    ---You can only use text entries. No custom text.\
    ---\
    ---Example: SET_WARNING_MESSAGE("t20", 3, "adder", false, -1, 0, 0, true);\
    ---errorCode: shows an error code at the bottom left if nonzero
    ---@param titleMsg string
    ---@param flags integer
    ---@param promptMsg string
    ---@param p3 BOOL
    ---@param p4 integer
    ---@param p5 string
    ---@param p6 string
    ---@param showBackground BOOL
    ---@param errorCode integer
    SET_WARNING_MESSAGE = function(titleMsg, flags, promptMsg, p3, p4, p5, p6, showBackground, errorCode) end,

    ---Shows a warning message on screen with a header.\
    ---Note: You can only use text entries. No custom text. You can recreate this easily with scaleforms.\
    ---Example: https://i.imgur.com/ITJt8bJ.png
    ---@param entryHeader string
    ---@param entryLine1 string
    ---@param instructionalKey integer
    ---@param entryLine2 string
    ---@param p4 BOOL
    ---@param p5 Any
    ---@param showBackground Any*
    ---@param p7 Any*
    ---@param p8 BOOL
    ---@param p9 Any
    SET_WARNING_MESSAGE_WITH_HEADER = function(entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, showBackground, p7, p8, p9) end,

    ---You can use this native for custom input, without having to use any scaleform-related natives.\
    ---The native must be called on tick.\
    ---The entryHeader must be a valid label.\
    ---For Single lines use JL_INVITE_N as entryLine1, JL_INVITE_ND for multiple.\
    ---Notes:\
    ---- additionalIntInfo: replaces first occurrence of ~1~ in provided label with an integer\
    ---- additionalTextInfoLine1: replaces first occurrence of ~a~ in provided label, with your custom text\
    ---- additionalTextInfoLine2: replaces second occurrence of ~a~ in provided label, with your custom text\
    ---- showBackground: shows black background of the warning screen\
    ---- errorCode: shows an error code at the bottom left if nonzero\
    ---Example of usage:\
    ---SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS("ALERT", "JL_INVITE_ND", 66, "", true, -1, -1, "Testing line 1", "Testing line 2", true, 0);\
    ---Screenshot:\
    ---https://imgur.com/a/IYA7vJ8
    ---@param entryHeader string
    ---@param entryLine1 string
    ---@param instructionalKey integer
    ---@param entryLine2 string
    ---@param p4 BOOL
    ---@param p5 Any
    ---@param additionalIntInfo Any
    ---@param additionalTextInfoLine1 string
    ---@param additionalTextInfoLine2 string
    ---@param showBackground BOOL
    ---@param errorCode integer
    SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS = function(entryHeader, entryLine1, instructionalKey, entryLine2, p4, p5, additionalIntInfo, additionalTextInfoLine1, additionalTextInfoLine2, showBackground, errorCode) end,

    ---@param entryHeader string
    ---@param entryLine1 string
    ---@param flags integer
    ---@param entryLine2 string
    ---@param p4 BOOL
    ---@param p5 Any
    ---@param p6 Any*
    ---@param p7 Any*
    ---@param showBg BOOL
    ---@param p9 Any
    ---@param p10 Any
    SET_WARNING_MESSAGE_WITH_HEADER_EXTENDED = function(entryHeader, entryLine1, flags, entryLine2, p4, p5, p6, p7, showBg, p9, p10) end,

    ---labelTitle: Label of the alert's title.\
    ---labelMsg: Label of the alert's message.\
    ---p2: This is an enum, check the description for a list.\
    ---p3: This is an enum, check the description for a list.\
    ---labelMsg2: Label of another message line\
    ---p5: usually 0\
    ---p6: usually -1\
    ---p7: usually 0\
    ---p8: unknown label\
    ---p9: unknown label\
    ---background: Set to anything other than 0 or false (even any string) and it will draw a background. Setting it to 0 or false will draw no background.\
    ---errorCode: Error code, shown at the bottom left if set to value other than 0.\
    ---\
    ---instructionalKey enum list:\
    ---Buttons = {\
    ---      Empty = 0,\
    ---      Select = 1, -- (RETURN)\
    ---      Ok = 2, -- (RETURN)\
    ---      Yes = 4, -- (RETURN)\
    ---      Back = 8, -- (ESC)\
    ---      Cancel = 16, -- (ESC)\
    ---      No = 32, -- (ESC)\
    ---      RetrySpace = 64, -- (SPACE)\
    ---      Restart = 128, -- (SPACE)\
    ---      Skip = 256, -- (SPACE)\
    ---      Quit = 512, -- (ESC)\
    ---      Adjust = 1024, -- (ARROWS)\
    ---      SpaceKey = 2048, -- (SPACE)\
    ---      Share = 4096, -- (SPACE)\
    ---      SignIn = 8192, -- (SPACE)\
    ---      Continue = 16384, -- (RETURN)\
    ---      AdjustLeftRight = 32768, -- (SCROLL L/R)\
    ---      AdjustUpDown = 65536, -- (SCROLL U/D)\
    ---      Overwrite = 131072, -- (SPACE)\
    ---      SocialClubSignup = 262144, -- (RETURN)\
    ---      Confirm = 524288, -- (RETURN)\
    ---      Queue = 1048576, -- (RETURN)\
    ---      RetryReturn = 2097152, -- (RETURN)\
    ---      BackEsc = 4194304, -- (ESC)\
    ---      SocialClub = 8388608, -- (RETURN)\
    ---      Spectate = 16777216, -- (SPACE)\
    ---      OkEsc = 33554432, -- (ESC)\
    ---      CancelTransfer = 67108864, -- (ESC)\
    ---      LoadingSpinner = 134217728,\
    ---      NoReturnToGTA = 268435456, -- (ESC)\
    ---      CancelEsc = 536870912, -- (ESC)\
    ---}\
    ---\
    ---Alt = {\
    ---      Empty = 0,\
    ---      No = 1, -- (SPACE)\
    ---      Host = 2, -- (ESC)\
    ---      SearchForJob = 4, -- (RETURN)\
    ---      ReturnKey = 8, -- (TURN)\
    ---      Freemode = 16, -- (ESC)\
    ---}\
    ---\
    ---Example: https://i.imgur.com/TvmNF4k.png
    ---@param labelTitle string
    ---@param labelMessage string
    ---@param p2 integer
    ---@param p3 integer
    ---@param labelMessage2 string
    ---@param p5 BOOL
    ---@param p6 integer
    ---@param p7 integer
    ---@param p8 string
    ---@param p9 string
    ---@param background BOOL
    ---@param errorCode integer
    SET_WARNING_MESSAGE_WITH_HEADER_AND_SUBSTRING_FLAGS_EXTENDED = function(labelTitle, labelMessage, p2, p3, labelMessage2, p5, p6, p7, p8, p9, background, errorCode) end,

    ---Has to do with the confirmation overlay (E.g. confirm exit)
    ---@return Hash
    GET_WARNING_SCREEN_MESSAGE_HASH = function() end,

    ---Some sort of list displayed in a warning message. Yet unknown how to prevent repeating.\
    ---Param names copied from the corresponding scaleform function "SET_LIST_ROW".\
    ---Example: https://i.imgur.com/arKvOYx.png
    ---@param index integer
    ---@param name string
    ---@param cash integer
    ---@param rp integer
    ---@param lvl integer
    ---@param colour integer
    ---@return BOOL
    SET_WARNING_MESSAGE_OPTION_ITEMS = function(index, name, cash, rp, lvl, colour) end,

    ---@param p0 Any
    ---@return BOOL
    SET_WARNING_MESSAGE_OPTION_HIGHLIGHT = function(p0) end,

    REMOVE_WARNING_MESSAGE_OPTION_ITEMS = function() end,

    ---@return BOOL
    IS_WARNING_MESSAGE_ACTIVE = function() end,

    CLEAR_DYNAMIC_PAUSE_MENU_ERROR_MESSAGE = function() end,

    ---If toggle is true, the map is shown in full screen\
    ---If toggle is false, the map is shown in normal mode
    ---@param toggle BOOL
    CUSTOM_MINIMAP_SET_ACTIVE = function(toggle) end,

    ---Sets the sprite of the next BLIP_GALLERY blip, values used in the native scripts: 143 (ObjectiveBlue), 144 (ObjectiveGreen), 145 (ObjectiveRed), 146 (ObjectiveYellow).
    ---@param spriteId integer
    CUSTOM_MINIMAP_SET_BLIP_OBJECT = function(spriteId) end,

    ---Add a BLIP_GALLERY at the specific coordinate. Used in fm_maintain_transition_players to display race track points.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return integer
    CUSTOM_MINIMAP_CREATE_BLIP = function(x, y, z) end,

    CUSTOM_MINIMAP_CLEAR_BLIPS = function() end,

    ---Doesn't actually return anything.
    ---@return BOOL
    FORCE_SONAR_BLIPS_THIS_FRAME = function() end,

    ---@return Blip
    GET_NORTH_BLID_INDEX = function() end,

    ---Toggles whether or not name labels are shown on the expanded minimap next to player blips, like in GTA:O.\
    ---Doesn't need to be called every frame.\
    ---Preview: https://i.imgur.com/DfqKWfJ.png\
    ---\
    ---Make sure to call SET_BLIP_CATEGORY with index 7 for this to work on the desired blip.
    ---@param toggle BOOL
    DISPLAY_PLAYER_NAME_TAGS_ON_BLIPS = function(toggle) end,

    ---This native does absolutely nothing, just a nullsub
    DRAW_FRONTEND_BACKGROUND_THIS_FRAME = function() end,

    DRAW_HUD_OVER_FADE_THIS_FRAME = function() end,

    ---Does stuff like this:\
    ---gyazo.com/7fcb78ea3520e3dbc5b2c0c0f3712617\
    ---\
    ---Example:\
    ---int GetHash = GET_HASH_KEY("fe_menu_version_corona_lobby");\
    ---ACTIVATE_FRONTEND_MENU(GetHash, 0, -1);\
    ---\
    ---BOOL p1 is a toggle to define the game in pause.\
    ---int p2 is unknown but -1 always works, not sure why though.\
    ---\
    ---[30/03/2017] ins1de :\
    ---\
    ---the int p2 is actually a component variable. When the pause menu is visible, it opens the tab related to it.\
    ---\
    ---Example : Function.Call(Hash.ACTIVATE_FRONTEND_MENU,-1171018317, 0, 42);\
    ---Result : Opens the "Online" tab without pausing the menu, with -1 it opens the map.Below is a list of all known Frontend Menu Hashes.\
    ---- FE_MENU_VERSION_SP_PAUSE\
    ---- FE_MENU_VERSION_MP_PAUSE\
    ---- FE_MENU_VERSION_CREATOR_PAUSE\
    ---- FE_MENU_VERSION_CUTSCENE_PAUSE\
    ---- FE_MENU_VERSION_SAVEGAME\
    ---- FE_MENU_VERSION_PRE_LOBBY\
    ---- FE_MENU_VERSION_LOBBY\
    ---- FE_MENU_VERSION_MP_CHARACTER_SELECT\
    ---- FE_MENU_VERSION_MP_CHARACTER_CREATION\
    ---- FE_MENU_VERSION_EMPTY\
    ---- FE_MENU_VERSION_EMPTY_NO_BACKGROUND\
    ---- FE_MENU_VERSION_TEXT_SELECTION\
    ---- FE_MENU_VERSION_CORONA\
    ---- FE_MENU_VERSION_CORONA_LOBBY\
    ---- FE_MENU_VERSION_CORONA_JOINED_PLAYERS\
    ---- FE_MENU_VERSION_CORONA_INVITE_PLAYERS\
    ---- FE_MENU_VERSION_CORONA_INVITE_FRIENDS\
    ---- FE_MENU_VERSION_CORONA_INVITE_CREWS\
    ---- FE_MENU_VERSION_CORONA_INVITE_MATCHED_PLAYERS\
    ---- FE_MENU_VERSION_CORONA_INVITE_LAST_JOB_PLAYERS\
    ---- FE_MENU_VERSION_CORONA_RACE\
    ---- FE_MENU_VERSION_CORONA_BETTING\
    ---- FE_MENU_VERSION_JOINING_SCREEN\
    ---- FE_MENU_VERSION_LANDING_MENU\
    ---- FE_MENU_VERSION_LANDING_KEYMAPPING_MENU
    ---@param menuhash Hash
    ---@param togglePause BOOL
    ---@param component integer
    ACTIVATE_FRONTEND_MENU = function(menuhash, togglePause, component) end,

    ---Before using this native click the native above and look at the decription.\
    ---\
    ---Example:\
    ---int GetHash = Function.Call<int>(Hash.GET_HASH_KEY, "fe_menu_version_corona_lobby");\
    ---Function.Call(Hash.ACTIVATE_FRONTEND_MENU, GetHash, 0, -1);\
    ---Function.Call(Hash.RESTART_FRONTEND_MENU(GetHash, -1);\
    ---\
    ---This native refreshes the frontend menu.\
    ---\
    ---p1 = Hash of Menu\
    ---p2 = Unknown but always works with -1.
    ---@param menuHash Hash
    ---@param p1 integer
    RESTART_FRONTEND_MENU = function(menuHash, p1) end,

    ---if (HUD::GET_CURRENT_FRONTEND_MENU_VERSION() == joaat("fe_menu_version_empty_no_background"))
    ---@return Hash
    GET_CURRENT_FRONTEND_MENU_VERSION = function() end,

    ---@param toggle BOOL
    SET_PAUSE_MENU_ACTIVE = function(toggle) end,

    DISABLE_FRONTEND_THIS_FRAME = function() end,

    SUPPRESS_FRONTEND_RENDERING_THIS_FRAME = function() end,

    ---Allows opening the pause menu this frame, when the player is dead.
    ALLOW_PAUSE_WHEN_NOT_IN_STATE_OF_PLAY_THIS_FRAME = function() end,

    ---@param active BOOL
    SET_FRONTEND_ACTIVE = function(active) end,

    ---@return BOOL
    IS_PAUSE_MENU_ACTIVE = function() end,

    ---@return BOOL
    IS_STORE_PENDING_NETWORK_SHUTDOWN_TO_OPEN = function() end,

    ---Returns:\
    ---\
    ---0\
    ---5\
    ---10\
    ---15\
    ---20\
    ---25\
    ---30\
    ---35\
    ---
    ---@return integer
    GET_PAUSE_MENU_STATE = function() end,

    ---@return Vector3
    GET_PAUSE_MENU_POSITION = function() end,

    ---@return BOOL
    IS_PAUSE_MENU_RESTARTING = function() end,

    ---Not present in retail version of the game, actual definiton seems to be\
    ---_LOG_DEBUG_INFO(const char* category, const char* debugText);
    ---@param p0 string
    FORCE_SCRIPTED_GFX_WHEN_FRONTEND_ACTIVE = function(p0) end,

    ---@param page integer
    PAUSE_MENUCEPTION_GO_DEEPER = function(page) end,

    PAUSE_MENUCEPTION_THE_KICK = function() end,

    ---@param p0 Any
    PAUSE_TOGGLE_FULLSCREEN_MAP = function(p0) end,

    ---Activates the specified frontend menu context.\
    ---pausemenu.xml defines some specific menu options using 'context'. Context is basically a 'condition'. \
    ---The `*ALL*` part of the context means that whatever is being defined, will be active when any or all of those conditions after `*ALL*` are met.\
    ---The `*NONE*` part of the context section means that whatever is being defined, will NOT be active if any or all of the conditions after `*NONE*` are met.\
    ---This basically allows you to hide certain menu sections, or things like instructional buttons.
    ---@param contextHash Hash
    PAUSE_MENU_ACTIVATE_CONTEXT = function(contextHash) end,

    ---@param contextHash Hash
    PAUSE_MENU_DEACTIVATE_CONTEXT = function(contextHash) end,

    ---@param contextHash Hash
    ---@return BOOL
    PAUSE_MENU_IS_CONTEXT_ACTIVE = function(contextHash) end,

    ---@return BOOL
    PAUSE_MENU_IS_CONTEXT_MENU_ACTIVE = function() end,

    ---@return integer
    PAUSE_MENU_GET_HAIR_COLOUR_INDEX = function() end,

    ---@return integer
    PAUSE_MENU_GET_MOUSE_HOVER_INDEX = function() end,

    ---@return integer
    PAUSE_MENU_GET_MOUSE_HOVER_UNIQUE_ID = function() end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@return BOOL
    PAUSE_MENU_GET_MOUSE_CLICK_EVENT = function(p0, p1, p2) end,

    ---@param p0 integer
    PAUSE_MENU_REDRAW_INSTRUCTIONAL_BUTTONS = function(p0) end,

    ---@param p0 BOOL
    ---@param position integer
    ---@param spinnerIndex integer
    PAUSE_MENU_SET_BUSY_SPINNER = function(p0, position, spinnerIndex) end,

    ---@param p0 BOOL
    PAUSE_MENU_SET_WARN_ON_TAB_CHANGE = function(p0) end,

    ---@return BOOL
    IS_FRONTEND_READY_FOR_CONTROL = function() end,

    ---Disables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard. Not sure about controller. Does not disable mouse controls. No need to call this every tick.\
    ---\
    ---To enable the keys again, use `0x14621BB1DF14E2B2`.
    TAKE_CONTROL_OF_FRONTEND = function() end,

    ---Enables frontend (works in custom frontends, not sure about regular pause menu) navigation keys on keyboard if they were disabled using the native below.\
    ---To disable the keys, use `0xEC9264727EEC0F28`
    RELEASE_CONTROL_OF_FRONTEND = function() end,

    ---@return BOOL
    CODE_WANTS_SCRIPT_TO_TAKE_CONTROL = function() end,

    ---@return integer
    GET_SCREEN_CODE_WANTS_SCRIPT_TO_CONTROL = function() end,

    ---@return BOOL
    IS_NAVIGATING_MENU_CONTENT = function() end,

    ---@return BOOL
    HAS_MENU_TRIGGER_EVENT_OCCURRED = function() end,

    ---@return BOOL
    HAS_MENU_LAYOUT_CHANGED_EVENT_OCCURRED = function() end,

    ---@param p0 Any
    SET_SAVEGAME_LIST_UNIQUE_ID = function(p0) end,

    ---@param lastItemMenuId integer
    ---@param selectedItemUniqueId integer
    ---@return integer
    ---@return integer
    GET_MENU_TRIGGER_EVENT_DETAILS = function(lastItemMenuId, selectedItemUniqueId) end,

    ---lastItemMenuId: this is the menuID of the last selected item minus 1000 (lastItem.menuID - 1000)\
    ---selectedItemMenuId: same as lastItemMenuId except for the currently selected menu item\
    ---selectedItemUniqueId: this is uniqueID of the currently selected menu item\
    ---\
    ---when the pausemenu is closed:\
    ---lastItemMenuId = -1\
    ---selectedItemMenuId = -1\
    ---selectedItemUniqueId = 0\
    ---\
    ---when the header gains focus:\
    ---lastItemMenuId updates as normal or 0 if the pausemenu was just opened\
    ---selectedItemMenuId becomes a unique id for the pausemenu page that focus was taken from (?) or 0 if the pausemenu was just opened\
    ---selectedItemUniqueId = -1\
    ---\
    ---when focus is moved from the header to a pausemenu page:\
    ---lastItemMenuId becomes a unique id for the pausemenu page that focus was moved to (?)\
    ---selectedItemMenuId = -1\
    ---selectedItemUniqueId updates as normal
    ---@param lastItemMenuId integer
    ---@param selectedItemMenuId integer
    ---@param selectedItemUniqueId integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_MENU_LAYOUT_CHANGED_EVENT_DETAILS = function(lastItemMenuId, selectedItemMenuId, selectedItemUniqueId) end,

    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return BOOL
    ---@return integer
    ---@return integer
    ---@return integer
    GET_PM_PLAYER_CREW_COLOR = function(r, g, b) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@return BOOL
    GET_MENU_PED_INT_STAT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@param p2 Any
    ---@return BOOL
    GET_CHARACTER_MENU_PED_INT_STAT = function(p0, p1, p2) end,

    ---@param statHash Hash
    ---@param outValue integer
    ---@param mask integer
    ---@param p3 BOOL
    ---@return BOOL
    ---@return integer
    GET_MENU_PED_MASKED_INT_STAT = function(statHash, outValue, mask, p3) end,

    ---@param statHash Hash
    ---@param outValue Any*
    ---@param p2 integer
    ---@param mask integer
    ---@param p4 BOOL
    ---@return BOOL
    GET_CHARACTER_MENU_PED_MASKED_INT_STAT = function(statHash, outValue, p2, mask, p4) end,

    ---@param statHash Hash
    ---@param outValue number
    ---@return BOOL
    ---@return number
    GET_MENU_PED_FLOAT_STAT = function(statHash, outValue) end,

    ---@param statHash number
    ---@param outValue number
    ---@param p2 BOOL
    ---@return BOOL
    ---@return number
    GET_CHARACTER_MENU_PED_FLOAT_STAT = function(statHash, outValue, p2) end,

    ---p0 was always 0xAE2602A3.
    ---@param statHash Hash
    ---@param outValue BOOL
    ---@return BOOL
    ---@return BOOL
    GET_MENU_PED_BOOL_STAT = function(statHash, outValue) end,

    CLEAR_PED_IN_PAUSE_MENU = function() end,

    ---p1 is either 1 or 2 in the PC scripts.
    ---@param ped Ped
    ---@param p1 integer
    GIVE_PED_TO_PAUSE_MENU = function(ped, p1) end,

    ---Toggles the light state for the pause menu ped in frontend menus.\
    ---\
    ---This is used by R* in combination with `SET_PAUSE_MENU_PED_SLEEP_STATE` to toggle the "offline" or "online" state in the "friends" tab of the pause menu in GTA Online.\
    ---\
    ---\
    ---Example:\
    ---Lights On: https://vespura.com/hi/i/2019-04-01_16-09_540ee_1015.png\
    ---Lights Off: https://vespura.com/hi/i/2019-04-01_16-10_8b5e7_1016.png
    ---@param state BOOL
    SET_PAUSE_MENU_PED_LIGHTING = function(state) end,

    ---Toggles the pause menu ped sleep state for frontend menus.\
    ---\
    ---Example: https://vespura.com/hi/i/2019-04-01_15-51_8ed38_1014.gif\
    ---\
    ---`state` 0 will make the ped slowly fall asleep, 1 will slowly wake the ped up.
    ---@param state BOOL
    SET_PAUSE_MENU_PED_SLEEP_STATE = function(state) end,

    OPEN_ONLINE_POLICIES_MENU = function() end,

    ---@return BOOL
    ARE_ONLINE_POLICIES_UP_TO_DATE = function() end,

    ---Returns the same as IS_SOCIAL_CLUB_ACTIVE
    ---@return BOOL
    IS_ONLINE_POLICIES_MENU_ACTIVE = function() end,

    ---Uses the `SOCIAL_CLUB2` scaleform.\
    ---menu: GALLERY, MISSIONS, CREWS, MIGRATE, PLAYLISTS, JOBS
    ---@param menu Hash
    OPEN_SOCIAL_CLUB_MENU = function(menu) end,

    CLOSE_SOCIAL_CLUB_MENU = function() end,

    ---HUD::SET_SOCIAL_CLUB_TOUR("Gallery");\
    ---HUD::SET_SOCIAL_CLUB_TOUR("Missions");\
    ---HUD::SET_SOCIAL_CLUB_TOUR("General");\
    ---HUD::SET_SOCIAL_CLUB_TOUR("Playlists");
    ---@param name string
    SET_SOCIAL_CLUB_TOUR = function(name) end,

    ---@return BOOL
    IS_SOCIAL_CLUB_ACTIVE = function() end,

    ---@param p0 BOOL
    SET_TEXT_INPUT_BOX_ENABLED = function(p0) end,

    FORCE_CLOSE_TEXT_INPUT_BOX = function() end,

    ---@param p0 Any
    SET_ALLOW_COMMA_ON_TEXT_INPUT = function(p0) end,

    ---@param gxtEntryHash Hash
    OVERRIDE_MP_TEXT_CHAT_TEAM_STRING = function(gxtEntryHash) end,

    ---Returns whether or not the text chat (MULTIPLAYER_CHAT Scaleform component) is active.
    ---@return BOOL
    IS_MP_TEXT_CHAT_TYPING = function() end,

    CLOSE_MP_TEXT_CHAT = function() end,

    ---@param p0 Any
    MP_TEXT_CHAT_IS_TEAM_JOB = function(p0) end,

    ---@param p0 integer
    ---@param hudColor integer
    OVERRIDE_MP_TEXT_CHAT_COLOR = function(p0, hudColor) end,

    ---Hides the chat history, closes the input box and makes it unable to be opened unless called again with FALSE.
    ---@param toggle BOOL
    MP_TEXT_CHAT_DISABLE = function(toggle) end,

    ---@param toggle BOOL
    FLAG_PLAYER_CONTEXT_IN_TOURNAMENT = function(toggle) end,

    ---This native turns on the AI blip on the specified ped. It also disappears automatically when the ped is too far or if the ped is dead. You don't need to control it with other natives.\
    ---\
    ---See gtaforums.com/topic/884370-native-research-ai-blips for further information.
    ---@param ped Ped
    ---@param hasCone BOOL
    SET_PED_HAS_AI_BLIP = function(ped, hasCone) end,

    ---color: see SET_BLIP_COLOUR
    ---@param ped Ped
    ---@param hasCone BOOL
    ---@param color integer
    SET_PED_HAS_AI_BLIP_WITH_COLOUR = function(ped, hasCone, color) end,

    ---@param ped Ped
    ---@return BOOL
    DOES_PED_HAVE_AI_BLIP = function(ped) end,

    ---@param ped Ped
    ---@param gangId integer
    SET_PED_AI_BLIP_GANG_ID = function(ped, gangId) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_AI_BLIP_HAS_CONE = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_AI_BLIP_FORCED_ON = function(ped, toggle) end,

    ---@param ped Ped
    ---@param range number
    SET_PED_AI_BLIP_NOTICE_RANGE = function(ped, range) end,

    ---@param ped Ped
    ---@param spriteId integer
    SET_PED_AI_BLIP_SPRITE = function(ped, spriteId) end,

    ---@param ped Ped
    ---@return Blip
    GET_AI_PED_PED_BLIP_INDEX = function(ped) end,

    ---Returns the current AI BLIP for the specified ped
    ---@param ped Ped
    ---@return Blip
    GET_AI_PED_VEHICLE_BLIP_INDEX = function(ped) end,

    ---@return BOOL
    HAS_DIRECTOR_MODE_BEEN_LAUNCHED_BY_CODE = function() end,

    SET_DIRECTOR_MODE_LAUNCHED_BY_SCRIPT = function() end,

    ---If toggle is true, hides special ability bar / character name in the pause menu\
    ---If toggle is false, shows special ability bar / character name in the pause menu
    ---@param toggle BOOL
    SET_PLAYER_IS_IN_DIRECTOR_MODE = function(toggle) end,

    ---@param toggle BOOL
    SET_DIRECTOR_MODE_AVAILABLE = function(toggle) end,

    HIDE_HUDMARKERS_THIS_FRAME = function() end
}

INTERIOR = {
    ---@param interior Interior
    ---@return number
    GET_INTERIOR_HEADING = function(interior) end,

    ---@param interior Interior
    ---@param position Vector3
    ---@param nameHash Hash
    ---@return Hash
    GET_INTERIOR_LOCATION_AND_NAMEHASH = function(interior, position, nameHash) end,

    ---Returns the group ID of the specified interior.\
    ---0 = default\
    ---1 = subway station, subway tracks, sewers\
    ---3 = train tunnel under mirror park\
    ---5 = tunnel near del perro\
    ---6 = train tunnel near chilliad\
    ---7 = train tunnel near josiah\
    ---8 = train tunnel in sandy shores\
    ---9 = braddock tunnel (near chilliad)\
    ---12 = tunnel under fort zancudo\
    ---14 = train tunnel under cypress flats\
    ---18 = rockford plaza parking garage\
    ---19 = arcadius parking garage\
    ---20 = union depository parking garage\
    ---21 = fib parking garage
    ---@param interior Interior
    ---@return integer
    GET_INTERIOR_GROUP_ID = function(interior) end,

    ---@param interior Interior
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return Vector3
    GET_OFFSET_FROM_INTERIOR_IN_WORLD_COORDS = function(interior, x, y, z) end,

    ---@return BOOL
    IS_INTERIOR_SCENE = function() end,

    ---@param interior Interior
    ---@return BOOL
    IS_VALID_INTERIOR = function(interior) end,

    ---@param entity Entity
    CLEAR_ROOM_FOR_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@param interior Interior
    ---@param roomHashKey Hash
    FORCE_ROOM_FOR_ENTITY = function(entity, interior, roomHashKey) end,

    ---Gets the room hash key from the room that the specified entity is in. Each room in every interior has a unique key. Returns 0 if the entity is outside.
    ---@param entity Entity
    ---@return Hash
    GET_ROOM_KEY_FROM_ENTITY = function(entity) end,

    ---Seems to do the exact same as INTERIOR::GET_ROOM_KEY_FROM_ENTITY
    ---@param entity Entity
    ---@return Hash
    GET_KEY_FOR_ENTITY_IN_ROOM = function(entity) end,

    ---Returns the handle of the interior that the entity is in. Returns 0 if outside.
    ---@param entity Entity
    ---@return Interior
    GET_INTERIOR_FROM_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@param interior Interior
    RETAIN_ENTITY_IN_INTERIOR = function(entity, interior) end,

    ---Immediately removes entity from an interior. Like sets entity to `limbo` room.
    ---@param entity Entity
    CLEAR_INTERIOR_STATE_OF_ENTITY = function(entity) end,

    ---@param p0 Any
    ---@param p1 Any
    FORCE_ACTIVATING_TRACKING_ON_ENTITY = function(p0, p1) end,

    ---@param interiorID integer
    ---@param roomHashKey Hash
    FORCE_ROOM_FOR_GAME_VIEWPORT = function(interiorID, roomHashKey) end,

    ---Example of use (carmod_shop)\
    ---INTERIOR::SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("V_CarModRoom");
    ---@param roomName string
    SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME = function(roomName) end,

    ---Usage: INTERIOR::SET_ROOM_FOR_GAME_VIEWPORT_BY_KEY(INTERIOR::GET_KEY_FOR_ENTITY_IN_ROOM(PLAYER::PLAYER_PED_ID()));
    ---@param roomHashKey Hash
    SET_ROOM_FOR_GAME_VIEWPORT_BY_KEY = function(roomHashKey) end,

    ---@return Hash
    GET_ROOM_KEY_FOR_GAME_VIEWPORT = function() end,

    CLEAR_ROOM_FOR_GAME_VIEWPORT = function() end,

    ---Returns the current interior id from gameplay camera
    ---@return Interior
    GET_INTERIOR_FROM_PRIMARY_VIEW = function() end,

    ---Returns interior ID from specified coordinates. If coordinates are outside, then it returns 0.\
    ---\
    ---Example for VB.NET\
    ---Dim interiorID As Integer = Native.Function.Call(Of Integer)(Hash.GET_INTERIOR_AT_COORDS, X, Y, Z)
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return Interior
    GET_INTERIOR_AT_COORDS = function(x, y, z) end,

    ---@param pickup Pickup
    ---@param roomName string
    ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME = function(pickup, roomName) end,

    ---@param interior Interior
    PIN_INTERIOR_IN_MEMORY = function(interior) end,

    ---Does something similar to INTERIOR::DISABLE_INTERIOR.\
    ---\
    ---You don't fall through the floor but everything is invisible inside and looks the same as when INTERIOR::DISABLE_INTERIOR is used. Peds behaves normally inside. 
    ---@param interior Interior
    UNPIN_INTERIOR = function(interior) end,

    ---@param interior Interior
    ---@return BOOL
    IS_INTERIOR_READY = function(interior) end,

    ---Only used once in the entire game scripts.\
    ---Does not actually return anything.
    ---@param interior Interior
    ---@return BOOL
    SET_INTERIOR_IN_USE = function(interior) end,

    ---Returns the interior ID representing the requested interior at that location (if found?). The supplied interior string is not the same as the one used to load the interior.\
    ---\
    ---Use: INTERIOR::UNPIN_INTERIOR(INTERIOR::GET_INTERIOR_AT_COORDS_WITH_TYPE(x, y, z, interior))\
    ---\
    ---Interior types include: "V_Michael", "V_Franklins", "V_Franklinshouse", etc.. you can find them in the scripts.\
    ---\
    ---Not a very useful native as you could just use GET_INTERIOR_AT_COORDS instead and get the same result, without even having to specify the interior type.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param interiorType string
    ---@return Interior
    GET_INTERIOR_AT_COORDS_WITH_TYPE = function(x, y, z, interiorType) end,

    ---Hashed version of GET_INTERIOR_AT_COORDS_WITH_TYPE
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param typeHash Hash
    ---@return Interior
    GET_INTERIOR_AT_COORDS_WITH_TYPEHASH = function(x, y, z, typeHash) end,

    ACTIVATE_INTERIOR_GROUPS_USING_CAMERA = function() end,

    ---Returns true if the collision at the specified coords is marked as being outside (false if there's an interior)
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return BOOL
    IS_COLLISION_MARKED_OUTSIDE = function(x, y, z) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@return Interior
    GET_INTERIOR_FROM_COLLISION = function(x, y, z) end,

    ---@param toggle BOOL
    ENABLE_STADIUM_PROBES_THIS_FRAME = function(toggle) end,

    ---More info: http://gtaforums.com/topic/836367-adding-props-to-interiors/\
    ---\
    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param interior Interior
    ---@param entitySetName string
    ACTIVATE_INTERIOR_ENTITY_SET = function(interior, entitySetName) end,

    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param interior Interior
    ---@param entitySetName string
    DEACTIVATE_INTERIOR_ENTITY_SET = function(interior, entitySetName) end,

    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param interior Interior
    ---@param entitySetName string
    ---@return BOOL
    IS_INTERIOR_ENTITY_SET_ACTIVE = function(interior, entitySetName) end,

    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param interior Interior
    ---@param entitySetName string
    ---@param color integer
    SET_INTERIOR_ENTITY_SET_TINT_INDEX = function(interior, entitySetName, color) end,

    ---@param interior Interior
    REFRESH_INTERIOR = function(interior) end,

    ---This is the native that is used to hide the exterior of GTA Online apartment buildings when you are inside an apartment.\
    ---\
    ---More info: http://gtaforums.com/topic/836301-hiding-gta-online-apartment-exteriors/
    ---@param mapObjectHash Hash
    ENABLE_EXTERIOR_CULL_MODEL_THIS_FRAME = function(mapObjectHash) end,

    ---@param mapObjectHash Hash
    ENABLE_SHADOW_CULL_MODEL_THIS_FRAME = function(mapObjectHash) end,

    ---Example: \
    ---This removes the interior from the strip club and when trying to walk inside the player just falls:\
    ---\
    ---INTERIOR::DISABLE_INTERIOR(118018, true);
    ---@param interior Interior
    ---@param toggle BOOL
    DISABLE_INTERIOR = function(interior, toggle) end,

    ---@param interior Interior
    ---@return BOOL
    IS_INTERIOR_DISABLED = function(interior) end,

    ---Does something similar to INTERIOR::DISABLE_INTERIOR
    ---@param interior Interior
    ---@param toggle BOOL
    CAP_INTERIOR = function(interior, toggle) end,

    ---@param interior Interior
    ---@return BOOL
    IS_INTERIOR_CAPPED = function(interior) end,

    ---@param toggle BOOL
    DISABLE_METRO_SYSTEM = function(toggle) end,

    ---Jenkins hash _might_ be 0xFC227584.
    ---@param entity Entity
    ---@param toggle BOOL
    SET_IS_EXTERIOR_ONLY = function(entity, toggle) end
}

ITEMSET = {
    ---@param p0 BOOL
    ---@return ScrHandle
    CREATE_ITEMSET = function(p0) end,

    ---@param itemset ScrHandle
    DESTROY_ITEMSET = function(itemset) end,

    ---@param itemset ScrHandle
    ---@return BOOL
    IS_ITEMSET_VALID = function(itemset) end,

    ---@param item ScrHandle
    ---@param itemset ScrHandle
    ---@return BOOL
    ADD_TO_ITEMSET = function(item, itemset) end,

    ---@param item ScrHandle
    ---@param itemset ScrHandle
    REMOVE_FROM_ITEMSET = function(item, itemset) end,

    ---@param itemset ScrHandle
    ---@return integer
    GET_ITEMSET_SIZE = function(itemset) end,

    ---@param index integer
    ---@param itemset ScrHandle
    ---@return ScrHandle
    GET_INDEXED_ITEM_IN_ITEMSET = function(index, itemset) end,

    ---@param item ScrHandle
    ---@param itemset ScrHandle
    ---@return BOOL
    IS_IN_ITEMSET = function(item, itemset) end,

    ---@param itemset ScrHandle
    CLEAN_ITEMSET = function(itemset) end
}

LOBBY = {
    ---This function is hard-coded to always return 0.
    ---@return BOOL
    LOBBY_AUTO_MULTIPLAYER_MENU = function() end,

    ---@return BOOL
    LOBBY_AUTO_MULTIPLAYER_FREEMODE = function() end,

    ---@param toggle BOOL
    LOBBY_SET_AUTO_MULTIPLAYER = function(toggle) end,

    ---@return BOOL
    LOBBY_AUTO_MULTIPLAYER_EVENT = function() end,

    ---@param toggle BOOL
    LOBBY_SET_AUTO_MULTIPLAYER_EVENT = function(toggle) end,

    ---@return BOOL
    LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB = function() end,

    ---@param toggle BOOL
    LOBBY_SET_AUTO_MP_RANDOM_JOB = function(toggle) end,

    ---@param toggle BOOL
    SHUTDOWN_SESSION_CLEARS_AUTO_MULTIPLAYER = function(toggle) end
}

LOCALIZATION = {
    ---Same return values as GET_CURRENT_LANGUAGE
    ---@return integer
    LOCALIZATION_GET_SYSTEM_LANGUAGE = function() end,

    ---0 = american (en-US)\
    ---1 = french (fr-FR)\
    ---2 = german (de-DE)\
    ---3 = italian (it-IT)\
    ---4 = spanish (es-ES)\
    ---5 = brazilian (pt-BR)\
    ---6 = polish (pl-PL)\
    ---7 = russian (ru-RU)\
    ---8 = korean (ko-KR)\
    ---9 = chinesetrad (zh-TW)\
    ---10 = japanese (ja-JP)\
    ---11 = mexican (es-MX)\
    ---12 = chinesesimp (zh-CN)
    ---@return integer
    GET_CURRENT_LANGUAGE = function() end,

    ---Possible return values: 0, 1, 2
    ---@return integer
    LOCALIZATION_GET_SYSTEM_DATE_TYPE = function() end
}

MISC = {
    ---@return integer
    GET_ALLOCATED_STACK_SIZE = function() end,

    ---@param stackSize integer
    ---@return integer
    GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE = function(stackSize) end,

    ---@param seed integer
    SET_RANDOM_SEED = function(seed) end,

    ---Maximum value is 1.\
    ---At a value of 0 the game will still run at a minimum time scale.\
    ---\
    ---Slow Motion 1: 0.6\
    ---Slow Motion 2: 0.4\
    ---Slow Motion 3: 0.2
    ---@param timeScale number
    SET_TIME_SCALE = function(timeScale) end,

    ---If true, the player can't save the game. \
    ---\
    ---\
    ---If the parameter is true, sets the mission flag to true, if the parameter is false, the function does nothing at all.\
    ---\
    ---^ also, if the mission flag is already set, the function does nothing at all
    ---@param toggle BOOL
    SET_MISSION_FLAG = function(toggle) end,

    ---@return BOOL
    GET_MISSION_FLAG = function() end,

    ---If the parameter is true, sets the random event flag to true, if the parameter is false, the function does nothing at all.\
    ---Does nothing if the mission flag is set.
    ---@param toggle BOOL
    SET_RANDOM_EVENT_FLAG = function(toggle) end,

    ---@return BOOL
    GET_RANDOM_EVENT_FLAG = function() end,

    ---Returns pointer to an empty string.
    ---@return string
    GET_CONTENT_TO_LOAD = function() end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ---@param p1 string
    ACTIVITY_FEED_CREATE = function(p0, p1) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ACTIVITY_FEED_ADD_SUBSTRING_TO_CAPTION = function(p0) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ACTIVITY_FEED_ADD_LITERAL_SUBSTRING_TO_CAPTION = function(p0) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 Any
    ACTIVITY_FEED_ADD_INT_TO_CAPTION = function(p0) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ACTIVITY_FEED_LARGE_IMAGE_URL = function(p0) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ---@param p1 string
    ACTIVITY_FEED_ACTION_START_WITH_COMMAND_LINE = function(p0, p1) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ---@param p0 string
    ACTIVITY_FEED_ACTION_START_WITH_COMMAND_LINE_ADD = function(p0) end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.
    ACTIVITY_FEED_POST = function() end,

    ---Does nothing (it's a nullsub). Seems to be PS4 specific.\
    ---\
    ---Used only once in the scripts (ingamehud) with p0 = "AF_GAMEMODE"
    ---@param p0 string
    ACTIVITY_FEED_ONLINE_PLAYED_WITH_POST = function(p0) end,

    ---Hardcoded to return false.
    ---@return BOOL
    HAS_RESUMED_FROM_SUSPEND = function() end,

    ---Sets GtaThread+0x14A
    ---@param toggle BOOL
    SET_SCRIPT_HIGH_PRIO = function(toggle) end,

    ---Sets bit 3 in GtaThread+0x150
    ---@param toggle BOOL
    SET_THIS_IS_A_TRIGGER_SCRIPT = function(toggle) end,

    ---@param p0 string
    INFORM_CODE_OF_CONTENT_ID_OF_CURRENT_UGC_MISSION = function(p0) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any
    ---@param p3 BOOL
    ---@return BOOL
    GET_BASE_ELEMENT_LOCATION_FROM_METADATA_BLOCK = function(p0, p1, p2, p3) end,

    ---Returns current weather name hash
    ---@return Hash
    GET_PREV_WEATHER_TYPE_HASH_NAME = function() end,

    ---Returns weather name hash
    ---@return Hash
    GET_NEXT_WEATHER_TYPE_HASH_NAME = function() end,

    ---@param weatherType string
    ---@return BOOL
    IS_PREV_WEATHER_TYPE = function(weatherType) end,

    ---@param weatherType string
    ---@return BOOL
    IS_NEXT_WEATHER_TYPE = function(weatherType) end,

    ---The following weatherTypes are used in the scripts:\
    ---"CLEAR"\
    ---"EXTRASUNNY"\
    ---"CLOUDS"\
    ---"OVERCAST"\
    ---"RAIN"\
    ---"CLEARING"\
    ---"THUNDER"\
    ---"SMOG"\
    ---"FOGGY"\
    ---"XMAS"\
    ---"SNOW"\
    ---"SNOWLIGHT"\
    ---"BLIZZARD"\
    ---"HALLOWEEN"\
    ---"NEUTRAL"
    ---@param weatherType string
    SET_WEATHER_TYPE_PERSIST = function(weatherType) end,

    ---The following weatherTypes are used in the scripts:\
    ---"CLEAR"\
    ---"EXTRASUNNY"\
    ---"CLOUDS"\
    ---"OVERCAST"\
    ---"RAIN"\
    ---"CLEARING"\
    ---"THUNDER"\
    ---"SMOG"\
    ---"FOGGY"\
    ---"XMAS"\
    ---"SNOW"\
    ---"SNOWLIGHT"\
    ---"BLIZZARD"\
    ---"HALLOWEEN"\
    ---"NEUTRAL"
    ---@param weatherType string
    SET_WEATHER_TYPE_NOW_PERSIST = function(weatherType) end,

    ---The following weatherTypes are used in the scripts:\
    ---"CLEAR"\
    ---"EXTRASUNNY"\
    ---"CLOUDS"\
    ---"OVERCAST"\
    ---"RAIN"\
    ---"CLEARING"\
    ---"THUNDER"\
    ---"SMOG"\
    ---"FOGGY"\
    ---"XMAS"\
    ---"SNOW"\
    ---"SNOWLIGHT"\
    ---"BLIZZARD"\
    ---"HALLOWEEN"\
    ---"NEUTRAL"
    ---@param weatherType string
    SET_WEATHER_TYPE_NOW = function(weatherType) end,

    ---@param weatherType string
    ---@param time number
    SET_WEATHER_TYPE_OVERTIME_PERSIST = function(weatherType, time) end,

    SET_RANDOM_WEATHER_TYPE = function() end,

    CLEAR_WEATHER_TYPE_PERSIST = function() end,

    ---@param milliseconds integer
    CLEAR_WEATHER_TYPE_NOW_PERSIST_NETWORK = function(milliseconds) end,

    ---@param weatherType1 Hash
    ---@param weatherType2 Hash
    ---@param percentWeather2 number
    ---@return Hash
    ---@return Hash
    ---@return number
    GET_CURR_WEATHER_STATE = function(weatherType1, weatherType2, percentWeather2) end,

    ---Mixes two weather types. If percentWeather2 is set to 0.0f, then the weather will be entirely of weatherType1, if it is set to 1.0f it will be entirely of weatherType2. If it's set somewhere in between, there will be a mixture of weather behaviors. To test, try this in the RPH console, and change the float to different values between 0 and 1:\
    ---\
    ---execute "NativeFunction.Natives.x578C752848ECFA0C(Game.GetHashKey(""RAIN""), Game.GetHashKey(""SMOG""), 0.50f);\
    ---\
    ---Note that unlike most of the other weather natives, this native takes the hash of the weather name, not the plain string. These are the weather names and their hashes:\
    ---\
    ---CLEAR  0x36A83D84\
    ---EXTRASUNNY  0x97AA0A79\
    ---CLOUDS  0x30FDAF5C\
    ---OVERCAST    0xBB898D2D\
    ---RAIN    0x54A69840\
    ---CLEARING    0x6DB1A50D\
    ---THUNDER 0xB677829F\
    ---SMOG    0x10DCF4B5\
    ---FOGGY   0xAE737644\
    ---XMAS    0xAAC9C895\
    ---SNOWLIGHT   0x23FB812B\
    ---BLIZZARD    0x27EA2814\
    ---\
    ---\
    ---\
    ---\
    ---\
    ---/* OLD INVALID INFO BELOW */\
    ---Not tested. Based purely on disassembly. Instantly sets the weather to sourceWeather, then transitions to targetWeather over the specified transitionTime in seconds.\
    ---\
    ---If an invalid hash is specified for sourceWeather, the current weather type will be used.\
    ---If an invalid hash is specified for targetWeather, the next weather type will be used.\
    ---If an invalid hash is specified for both sourceWeather and targetWeather, the function just changes the transition time of the current transition.
    ---@param weatherType1 Hash
    ---@param weatherType2 Hash
    ---@param percentWeather2 number
    SET_CURR_WEATHER_STATE = function(weatherType1, weatherType2, percentWeather2) end,

    ---Appears to have an optional bool parameter that is unused in the scripts.\
    ---\
    ---If you pass true, something will be set to zero.
    ---@param weatherType string
    SET_OVERRIDE_WEATHER = function(weatherType) end,

    ---Identical to SET_OVERRIDE_WEATHER but has an additional BOOL param that sets some weather var to 0 if true
    ---@param weatherType string
    ---@param p1 BOOL
    SET_OVERRIDE_WEATHEREX = function(weatherType, p1) end,

    CLEAR_OVERRIDE_WEATHER = function() end,

    ---@param amplitude number
    WATER_OVERRIDE_SET_SHOREWAVEAMPLITUDE = function(amplitude) end,

    ---@param minAmplitude number
    WATER_OVERRIDE_SET_SHOREWAVEMINAMPLITUDE = function(minAmplitude) end,

    ---@param maxAmplitude number
    WATER_OVERRIDE_SET_SHOREWAVEMAXAMPLITUDE = function(maxAmplitude) end,

    ---@param minAmplitude number
    WATER_OVERRIDE_SET_OCEANNOISEMINAMPLITUDE = function(minAmplitude) end,

    ---@param amplitude number
    WATER_OVERRIDE_SET_OCEANWAVEAMPLITUDE = function(amplitude) end,

    ---@param minAmplitude number
    WATER_OVERRIDE_SET_OCEANWAVEMINAMPLITUDE = function(minAmplitude) end,

    ---@param maxAmplitude number
    WATER_OVERRIDE_SET_OCEANWAVEMAXAMPLITUDE = function(maxAmplitude) end,

    ---@param bumpiness number
    WATER_OVERRIDE_SET_RIPPLEBUMPINESS = function(bumpiness) end,

    ---@param minBumpiness number
    WATER_OVERRIDE_SET_RIPPLEMINBUMPINESS = function(minBumpiness) end,

    ---@param maxBumpiness number
    WATER_OVERRIDE_SET_RIPPLEMAXBUMPINESS = function(maxBumpiness) end,

    ---@param disturb number
    WATER_OVERRIDE_SET_RIPPLEDISTURB = function(disturb) end,

    ---This seems to edit the water wave, intensity around your current location.\
    ---\
    ---0.0f = Normal\
    ---1.0f = So Calm and Smooth, a boat will stay still.\
    ---3.0f = Really Intense.
    ---@param strength number
    WATER_OVERRIDE_SET_STRENGTH = function(strength) end,

    ---@param p0 number
    WATER_OVERRIDE_FADE_IN = function(p0) end,

    ---@param p0 number
    WATER_OVERRIDE_FADE_OUT = function(p0) end,

    ---Sets the the normalized wind speed value. The wind speed clamps always at 12.0, SET_WIND sets the wind in a percentage, 0.0 is 0 and 1.0 is 12.0. Setting this value to a negative number resumes the random wind speed changes provided by the game.
    ---@param speed number
    SET_WIND = function(speed) end,

    ---Using this native will set the absolute wind speed value. The wind speed clamps to a range of 0.0- 12.0. Setting this value to a negative number resumes the random wind speed changes provided by the game.
    ---@param speed number
    SET_WIND_SPEED = function(speed) end,

    ---@return number
    GET_WIND_SPEED = function() end,

    ---The wind direction in radians\
    ---180 degrees (PI), wind will blow from the south. Setting this value to a negative number resumes the random wind direction changes provided by the game.
    ---@param direction number
    SET_WIND_DIRECTION = function(direction) end,

    ---@return Vector3
    GET_WIND_DIRECTION = function() end,

    ---With an `intensity` higher than `0.5f`, only the creation of puddles gets faster, rain and rain sound won't increase after that.\
    ---With an `intensity` of `0.0f` rain and rain sounds are disabled and there won't be any new puddles.\
    ---To use the rain intensity of the current weather, call this native with `-1f` as `intensity`.
    ---@param intensity number
    SET_RAIN = function(intensity) end,

    ---@return number
    GET_RAIN_LEVEL = function() end,

    ---@param level number
    SET_SNOW = function(level) end,

    ---@return number
    GET_SNOW_LEVEL = function() end,

    ---creates single lightning+thunder at random position
    FORCE_LIGHTNING_FLASH = function() end,

    ---@param p0 string
    SET_CLOUD_SETTINGS_OVERRIDE = function(p0) end,

    ---@param name string
    PRELOAD_CLOUD_HAT = function(name) end,

    ---The following cloudhats are useable:\
    ---altostratus\
    ---Cirrus\
    ---cirrocumulus\
    ---Clear 01\
    ---Cloudy 01\
    ---Contrails\
    ---Horizon\
    ---horizonband1\
    ---horizonband2\
    ---horizonband3\
    ---horsey\
    ---Nimbus\
    ---Puffs\
    ---RAIN\
    ---Snowy 01\
    ---Stormy 01\
    ---stratoscumulus\
    ---Stripey\
    ---shower\
    ---Wispy\
    ---
    ---@param name string
    ---@param transitionTime number
    LOAD_CLOUD_HAT = function(name, transitionTime) end,

    ---@param name string
    ---@param p1 number
    UNLOAD_CLOUD_HAT = function(name, p1) end,

    UNLOAD_ALL_CLOUD_HATS = function() end,

    ---@param opacity number
    SET_CLOUDS_ALPHA = function(opacity) end,

    ---@return number
    GET_CLOUDS_ALPHA = function() end,

    ---@return integer
    GET_GAME_TIMER = function() end,

    ---@return number
    GET_FRAME_TIME = function() end,

    ---@return number
    GET_SYSTEM_TIME_STEP = function() end,

    ---@return integer
    GET_FRAME_COUNT = function() end,

    ---@param startRange number
    ---@param endRange number
    ---@return number
    GET_RANDOM_FLOAT_IN_RANGE = function(startRange, endRange) end,

    ---@param startRange integer
    ---@param endRange integer
    ---@return integer
    GET_RANDOM_INT_IN_RANGE = function(startRange, endRange) end,

    ---@param startRange integer
    ---@param endRange integer
    ---@return integer
    GET_RANDOM_MWC_INT_IN_RANGE = function(startRange, endRange) end,

    ---Gets the ground elevation at the specified position. Note that if the specified position is below ground level, the function will output zero!\
    ---\
    ---x: Position on the X-axis to get ground elevation at.\
    ---y: Position on the Y-axis to get ground elevation at.\
    ---z: Position on the Z-axis to get ground elevation at.\
    ---groundZ: The ground elevation at the specified position.\
    ---ignoreWater: Nearly always 0, very rarely 1 in the scripts: https://gfycat.com/NiftyTatteredCricket\
    ---\
    ---Bear in mind this native can only calculate the elevation when the coordinates are within the client's render distance.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param groundZ number
    ---@param ignoreWater BOOL
    ---@param p5 BOOL
    ---@return BOOL
    ---@return number
    GET_GROUND_Z_FOR_3D_COORD = function(x, y, z, groundZ, ignoreWater, p5) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param groundZ number
    ---@param normal Vector3
    ---@return BOOL
    ---@return number
    GET_GROUND_Z_AND_NORMAL_FOR_3D_COORD = function(x, y, z, groundZ, normal) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param groundZ number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@return BOOL
    ---@return number
    GET_GROUND_Z_EXCLUDING_OBJECTS_FOR_3D_COORD = function(x, y, z, groundZ, p4, p5) end,

    ---@param p0 number
    ---@return number
    ASIN = function(p0) end,

    ---@param p0 number
    ---@return number
    ACOS = function(p0) end,

    ---@param p0 number
    ---@return number
    TAN = function(p0) end,

    ---@param p0 number
    ---@return number
    ATAN = function(p0) end,

    ---@param p0 number
    ---@param p1 number
    ---@return number
    ATAN2 = function(p0, p1) end,

    ---Returns the distance between two three-dimensional points, optionally ignoring the Z values.\
    ---If useZ is false, only the 2D plane (X-Y) will be considered for calculating the distance.\
    ---\
    ---Consider using this faster native instead: SYSTEM::VDIST - DVIST always takes in consideration the 3D coordinates.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param useZ BOOL
    ---@return number
    GET_DISTANCE_BETWEEN_COORDS = function(x1, y1, z1, x2, y2, z2, useZ) end,

    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return number
    GET_ANGLE_BETWEEN_2D_VECTORS = function(x1, y1, x2, y2) end,

    ---dx = x1 - x2\
    ---dy = y1 - y2
    ---@param dx number
    ---@param dy number
    ---@return number
    GET_HEADING_FROM_VECTOR_2D = function(dx, dy) end,

    ---returns a float between 0.0 and 1.0, clamp: sets whether the product should be clamped between the given coordinates
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param clamp BOOL
    ---@return number
    GET_RATIO_OF_CLOSEST_POINT_ON_LINE = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp) end,

    ---clamp: sets whether the product should be clamped between the given coordinates
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param clamp BOOL
    ---@return Vector3
    GET_CLOSEST_POINT_ON_LINE = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, clamp) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param p10 number
    ---@param p11 number
    ---@param p12 number
    ---@return BOOL
    ---@return number
    GET_LINE_PLANE_INTERSECTION = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    ---@param p10 Any
    ---@param p11 Any
    ---@param p12 Any
    ---@param p13 Any
    ---@return BOOL
    GET_POINT_AREA_OVERLAP = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) end,

    ---This sets bit [offset] of [address] to on.\
    ---\
    ---The offsets used are different bits to be toggled on and off, typically there is only one address used in a script.\
    ---\
    ---Example:\
    ---MISC::SET_BIT(&bitAddress, 1);\
    ---\
    ---To check if this bit has been enabled:\
    ---MISC::IS_BIT_SET(bitAddress, 1); // will return 1 afterwards\
    ---\
    ---Please note, this method may assign a value to [address] when used.
    ---@param address integer
    ---@param offset integer
    ---@return integer
    SET_BIT = function(address, offset) end,

    ---This sets bit [offset] of [address] to off.\
    ---\
    ---Example:\
    ---MISC::CLEAR_BIT(&bitAddress, 1);\
    ---\
    ---To check if this bit has been enabled:\
    ---MISC::IS_BIT_SET(bitAddress, 1); // will return 0 afterwards
    ---@param address integer
    ---@param offset integer
    ---@return integer
    CLEAR_BIT = function(address, offset) end,

    ---This native converts its past string to hash. It is hashed using jenkins one at a time method.
    ---@param string string
    ---@return Hash
    GET_HASH_KEY = function(string) end,

    ---This native always come right before SET_ENTITY_QUATERNION where its final 4 parameters are SLERP_NEAR_QUATERNION p9 to p12
    ---@param t number
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param w number
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param w1 number
    ---@param outX number
    ---@param outY number
    ---@param outZ number
    ---@param outW number
    ---@return number
    ---@return number
    ---@return number
    ---@return number
    SLERP_NEAR_QUATERNION = function(t, x, y, z, w, x1, y1, z1, w1, outX, outY, outZ, outW) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 BOOL
    ---@param p10 BOOL
    ---@param p11 Any
    ---@param p12 BOOL
    ---@return BOOL
    IS_AREA_OCCUPIED = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    ---@param p10 Any
    ---@param p11 Any
    ---@param p12 Any
    ---@return BOOL
    IS_AREA_OCCUPIED_SLOW = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) end,

    ---`range`: The range, seems to not be very accurate during testing.\
    ---`p4`: Unknown, when set to true it seems to always return true no matter what I try.\
    ---`checkVehicle`: Check for any vehicles in that area.\
    ---`checkPeds`: Check for any peds in that area.\
    ---`ignoreEntity`: This entity will be ignored if it's in the area. Set to 0 if you don't want to exclude any entities.\
    ---The BOOL parameters that are documented have not been confirmed. They are just documented from what I've found during testing. They may not work as expected in all cases.\
    ---\
    ---Returns true if there is anything in that location matching the provided parameters.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    ---@param p4 BOOL
    ---@param checkVehicles BOOL
    ---@param checkPeds BOOL
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param ignoreEntity Entity
    ---@param p10 BOOL
    ---@return BOOL
    IS_POSITION_OCCUPIED = function(x, y, z, range, p4, checkVehicles, checkPeds, p7, p8, ignoreEntity, p10) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 Any
    ---@return BOOL
    IS_POINT_OBSCURED_BY_A_MISSION_ENTITY = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---Example: CLEAR_AREA(0, 0, 0, 30, true, false, false, false);
    ---@param X number
    ---@param Y number
    ---@param Z number
    ---@param radius number
    ---@param p4 BOOL
    ---@param ignoreCopCars BOOL
    ---@param ignoreObjects BOOL
    ---@param p7 BOOL
    CLEAR_AREA = function(X, Y, Z, radius, p4, ignoreCopCars, ignoreObjects, p7) end,

    ---MISC::CLEAR_AREA_LEAVE_VEHICLE_HEALTH(x, y, z, radius, false, false, false, false); seem to make all objects go away, peds, vehicles etc. All booleans set to true doesn't seem to change anything. 
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 BOOL
    CLEAR_AREA_LEAVE_VEHICLE_HEALTH = function(x, y, z, radius, p4, p5, p6, p7) end,

    ---Example:\
    ---CLEAR_AREA_OF_VEHICLES(0.0f, 0.0f, 0.0f, 10000.0f, false, false, false, false, false, false);
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 BOOL
    ---@param p10 Any
    CLEAR_AREA_OF_VEHICLES = function(x, y, z, radius, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 BOOL
    ---@param p10 BOOL
    ---@param p11 BOOL
    ---@param p12 Any
    ---@param p13 Any
    CLEAR_ANGLED_AREA_OF_VEHICLES = function(x1, y1, z1, x2, y2, z2, width, p7, p8, p9, p10, p11, p12, p13) end,

    ---I looked through the PC scripts that this site provides you with a link to find. It shows the last param mainly uses, (0, 2, 6, 16, and 17) so I am going to assume it is a type of flag. 
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param flags integer
    CLEAR_AREA_OF_OBJECTS = function(x, y, z, radius, flags) end,

    ---Example:       CLEAR_AREA_OF_PEDS(0, 0, 0, 10000, 1);
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param flags integer
    CLEAR_AREA_OF_PEDS = function(x, y, z, radius, flags) end,

    ---flags appears to always be 0
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param flags integer
    CLEAR_AREA_OF_COPS = function(x, y, z, radius, flags) end,

    ---flags is usually 0 in the scripts.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param flags integer
    CLEAR_AREA_OF_PROJECTILES = function(x, y, z, radius, flags) end,

    ---Possibly used to clear scenario points.
    CLEAR_SCENARIO_SPAWN_HISTORY = function() end,

    ---ignoreVehicle - bypasses vehicle check of the local player (it will not open if you are in a vehicle and this is set to false)
    ---@param ignoreVehicle BOOL
    SET_SAVE_MENU_ACTIVE = function(ignoreVehicle) end,

    ---@return integer
    GET_STATUS_OF_MANUAL_SAVE = function() end,

    ---@param toggle BOOL
    SET_CREDITS_ACTIVE = function(toggle) end,

    ---@param toggle BOOL
    SET_CREDITS_FADE_OUT_WITH_SCREEN = function(toggle) end,

    ---@return BOOL
    HAVE_CREDITS_REACHED_END = function() end,

    ---@return BOOL
    ARE_CREDITS_RUNNING = function() end,

    ---@param scriptName string
    TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = function(scriptName) end,

    NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME = function() end,

    ---Returns the index of the newly created hospital spawn point.\
    ---\
    ---p3 might be radius?
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 Any
    ---@return integer
    ADD_HOSPITAL_RESTART = function(x, y, z, p3, p4) end,

    ---The game by default has 5 hospital respawn points. Disabling them all will cause the player to respawn at the last position they were.
    ---@param hospitalIndex integer
    ---@param toggle BOOL
    DISABLE_HOSPITAL_RESTART = function(hospitalIndex, toggle) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 Any
    ---@return integer
    ADD_POLICE_RESTART = function(p0, p1, p2, p3, p4) end,

    ---Disables the spawn point at the police house on the specified index.\
    ---\
    ---policeIndex: The police house index.\
    ---toggle: true to enable the spawn point, false to disable.\
    ---\
    ---- Nacorpio
    ---@param policeIndex integer
    ---@param toggle BOOL
    DISABLE_POLICE_RESTART = function(policeIndex, toggle) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    SET_RESTART_COORD_OVERRIDE = function(x, y, z, heading) end,

    CLEAR_RESTART_COORD_OVERRIDE = function() end,

    ---@param toggle BOOL
    PAUSE_DEATH_ARREST_RESTART = function(toggle) end,

    ---@param toggle BOOL
    IGNORE_NEXT_RESTART = function(toggle) end,

    ---Sets whether the game should fade out after the player dies.
    ---@param toggle BOOL
    SET_FADE_OUT_AFTER_DEATH = function(toggle) end,

    ---Sets whether the game should fade out after the player is arrested.
    ---@param toggle BOOL
    SET_FADE_OUT_AFTER_ARREST = function(toggle) end,

    ---Sets whether the game should fade in after the player dies or is arrested.
    ---@param toggle BOOL
    SET_FADE_IN_AFTER_DEATH_ARREST = function(toggle) end,

    ---@param toggle BOOL
    SET_FADE_IN_AFTER_LOAD = function(toggle) end,

    ---returns savehouseHandle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 string
    ---@param p5 Any
    ---@param p6 Any
    ---@return integer
    REGISTER_SAVE_HOUSE = function(x, y, z, p3, p4, p5, p6) end,

    ---@param savehouseHandle integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_SAVE_HOUSE = function(savehouseHandle, p1, p2) end,

    ---@param p0 BOOL
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 BOOL
    ---@param p6 number
    ---@param p7 number
    ---@return BOOL
    OVERRIDE_SAVE_HOUSE = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@param p0 Vector3
    ---@param p1 number
    ---@param fadeInAfterLoad BOOL
    ---@param p3 BOOL
    ---@return BOOL
    ---@return number
    ---@return BOOL
    ---@return BOOL
    GET_SAVE_HOUSE_DETAILS_AFTER_SUCCESSFUL_LOAD = function(p0, p1, fadeInAfterLoad, p3) end,

    DO_AUTO_SAVE = function() end,

    ---Returns true if profile setting 208 is equal to 0.
    ---@return BOOL
    GET_IS_AUTO_SAVE_OFF = function() end,

    ---@return BOOL
    IS_AUTO_SAVE_IN_PROGRESS = function() end,

    ---@return BOOL
    HAS_CODE_REQUESTED_AUTOSAVE = function() end,

    CLEAR_CODE_REQUESTED_AUTOSAVE = function() end,

    ---@param p0 Any
    ---@param p1 Any
    BEGIN_REPLAY_STATS = function(p0, p1) end,

    ---@param value Any
    ADD_REPLAY_STAT_VALUE = function(value) end,

    END_REPLAY_STATS = function() end,

    ---@return BOOL
    HAVE_REPLAY_STATS_BEEN_STORED = function() end,

    ---@return integer
    GET_REPLAY_STAT_MISSION_ID = function() end,

    ---@return integer
    GET_REPLAY_STAT_MISSION_TYPE = function() end,

    ---@return integer
    GET_REPLAY_STAT_COUNT = function() end,

    ---@param index integer
    ---@return integer
    GET_REPLAY_STAT_AT_INDEX = function(index) end,

    CLEAR_REPLAY_STATS = function() end,

    ---@return BOOL
    QUEUE_MISSION_REPEAT_LOAD = function() end,

    ---Shows the screen which is visible before you redo a mission? The game will make a restoration point where you will cameback when the mission is over.\
    ---Returns 1 if the message isn't currently on screen
    ---@return BOOL
    QUEUE_MISSION_REPEAT_SAVE = function() end,

    ---@return BOOL
    QUEUE_MISSION_REPEAT_SAVE_FOR_BENCHMARK_TEST = function() end,

    ---@return integer
    GET_STATUS_OF_MISSION_REPEAT_SAVE = function() end,

    ---@return BOOL
    IS_MEMORY_CARD_IN_USE = function() end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param damage integer
    ---@param p7 BOOL
    ---@param weaponHash Hash
    ---@param ownerPed Ped
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param speed number
    SHOOT_SINGLE_BULLET_BETWEEN_COORDS = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed) end,

    ---entity - entity to ignore
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param damage integer
    ---@param p7 BOOL
    ---@param weaponHash Hash
    ---@param ownerPed Ped
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param speed number
    ---@param entity Entity
    ---@param p14 Any
    SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14) end,

    ---entity - entity to ignore\
    ---targetEntity - entity to home in on, if the weapon hash provided supports homing
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param damage integer
    ---@param p7 BOOL
    ---@param weaponHash Hash
    ---@param ownerPed Ped
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param speed number
    ---@param entity Entity
    ---@param p14 BOOL
    ---@param p15 BOOL
    ---@param targetEntity Entity
    ---@param p17 BOOL
    ---@param p18 Any
    ---@param p19 Any
    ---@param p20 Any
    SHOOT_SINGLE_BULLET_BETWEEN_COORDS_IGNORE_ENTITY_NEW = function(x1, y1, z1, x2, y2, z2, damage, p7, weaponHash, ownerPed, isAudible, isInvisible, speed, entity, p14, p15, targetEntity, p17, p18, p19, p20) end,

    ---Gets the dimensions of a model.\
    ---\
    ---Calculate (maximum - minimum) to get the size, in which case, Y will be how long the model is.\
    ---\
    ---Example from the scripts: MISC::GET_MODEL_DIMENSIONS(ENTITY::GET_ENTITY_MODEL(PLAYER::PLAYER_PED_ID()), &v_1A, &v_17);
    ---@param modelHash Hash
    ---@param minimum Vector3
    ---@param maximum Vector3
    GET_MODEL_DIMENSIONS = function(modelHash, minimum, maximum) end,

    ---Sets a visually fake wanted level on the user interface. Used by Rockstar's scripts to "override" regular wanted levels and make custom ones while the real wanted level and multipliers are still in effect.\
    ---\
    ---Max is 6, anything above this makes it just 6. Also the mini-map gets the red & blue flashing effect.
    ---@param fakeWantedLevel integer
    SET_FAKE_WANTED_LEVEL = function(fakeWantedLevel) end,

    ---@return integer
    GET_FAKE_WANTED_LEVEL = function() end,

    ---@param toggle BOOL
    USING_MISSION_CREATOR = function(toggle) end,

    ---@param toggle BOOL
    ALLOW_MISSION_CREATOR_WARP = function(toggle) end,

    ---@param toggle BOOL
    SET_MINIGAME_IN_PROGRESS = function(toggle) end,

    ---@return BOOL
    IS_MINIGAME_IN_PROGRESS = function() end,

    ---@return BOOL
    IS_THIS_A_MINIGAME_SCRIPT = function() end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    IS_SNIPER_INVERTED = function() end,

    ---Returns true if the game is using the metric measurement system (profile setting 227), false if imperial is used.
    ---@return BOOL
    SHOULD_USE_METRIC_MEASUREMENTS = function() end,

    ---@param profileSetting integer
    ---@return integer
    GET_PROFILE_SETTING = function(profileSetting) end,

    ---@param string1 string
    ---@param string2 string
    ---@return BOOL
    ARE_STRINGS_EQUAL = function(string1, string2) end,

    ---Compares two strings up to a specified number of characters.\
    ---\
    ---Parameters:\
    ---str1 - String to be compared.\
    ---str2 - String to be compared.\
    ---matchCase - Comparison will be case-sensitive.\
    ---maxLength - Maximum number of characters to compare. A value of -1 indicates an infinite length.\
    ---\
    ---Returns:\
    ---A value indicating the relationship between the strings:\
    ---<0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'A' < 'B', so result = -1)\
    ---0 - The contents of both strings are equal.\
    --->0 - The first non-matching character in 'str1' is less than the one in 'str2'. (e.g. 'B' > 'A', so result = 1)\
    ---\
    ---Examples:\
    ---MISC::COMPARE_STRINGS("STRING", "string", false, -1); // 0; equal\
    ---MISC::COMPARE_STRINGS("TESTING", "test", false, 4); // 0; equal\
    ---MISC::COMPARE_STRINGS("R2D2", "R2xx", false, 2); // 0; equal\
    ---MISC::COMPARE_STRINGS("foo", "bar", false, -1); // 4; 'f' > 'b'\
    ---MISC::COMPARE_STRINGS("A", "A", true, 1); // 0; equal\
    ---\
    ---When comparing case-sensitive strings, lower-case characters are greater than upper-case characters:\
    ---MISC::COMPARE_STRINGS("A", "a", true, 1); // -1; 'A' < 'a'\
    ---MISC::COMPARE_STRINGS("a", "A", true, 1); // 1; 'a' > 'A'
    ---@param str1 string
    ---@param str2 string
    ---@param matchCase BOOL
    ---@param maxLength integer
    ---@return integer
    COMPARE_STRINGS = function(str1, str2, matchCase, maxLength) end,

    ---@param value integer
    ---@return integer
    ABSI = function(value) end,

    ---@param value number
    ---@return number
    ABSF = function(value) end,

    ---Determines whether there is a sniper bullet within the specified coordinates. The coordinates form an axis-aligned bounding box.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    IS_SNIPER_BULLET_IN_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---Determines whether there is a projectile within the specified coordinates. The coordinates form a rectangle.\
    ---\
    ---- Nacorpio\
    ---\
    ---\
    ---ownedByPlayer = only projectiles fired by the player will be detected.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_PROJECTILE_IN_AREA = function(x1, y1, z1, x2, y2, z2, ownedByPlayer) end,

    ---Determines whether there is a projectile of a specific type within the specified coordinates. The coordinates form a axis-aligned bounding box.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param type integer
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_PROJECTILE_TYPE_IN_AREA = function(x1, y1, z1, x2, y2, z2, type, ownedByPlayer) end,

    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param p7 Any
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_PROJECTILE_TYPE_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, p7, ownedByPlayer) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param projectileHash Hash
    ---@param radius number
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_PROJECTILE_TYPE_WITHIN_DISTANCE = function(x, y, z, projectileHash, radius, ownedByPlayer) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param projectileHash Hash
    ---@param projectilePos Vector3
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    GET_COORDS_OF_PROJECTILE_TYPE_IN_AREA = function(x1, y1, z1, x2, y2, z2, projectileHash, projectilePos, ownedByPlayer) end,

    ---@param vecAngledAreaPoint1X number
    ---@param vecAngledAreaPoint1Y number
    ---@param vecAngledAreaPoint1Z number
    ---@param vecAngledAreaPoint2X number
    ---@param vecAngledAreaPoint2Y number
    ---@param vecAngledAreaPoint2Z number
    ---@param distanceOfOppositeFace number
    ---@param weaponType Hash
    ---@param positionOut Vector3
    ---@param bIsPlayer BOOL
    ---@return BOOL
    GET_COORDS_OF_PROJECTILE_TYPE_IN_ANGLED_AREA = function(vecAngledAreaPoint1X, vecAngledAreaPoint1Y, vecAngledAreaPoint1Z, vecAngledAreaPoint2X, vecAngledAreaPoint2Y, vecAngledAreaPoint2Z, distanceOfOppositeFace, weaponType, positionOut, bIsPlayer) end,

    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param distance number
    ---@param outCoords Vector3
    ---@param p4 BOOL
    ---@return BOOL
    GET_COORDS_OF_PROJECTILE_TYPE_WITHIN_DISTANCE = function(ped, weaponHash, distance, outCoords, p4) end,

    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param distance number
    ---@param outCoords Vector3
    ---@param outProjectile Object
    ---@param p5 BOOL
    ---@return BOOL
    ---@return Object
    GET_PROJECTILE_OF_PROJECTILE_TYPE_WITHIN_DISTANCE = function(ped, weaponHash, distance, outCoords, outProjectile, p5) end,

    ---For projectiles, see: IS_PROJECTILE_TYPE_IN_ANGLED_AREA\
    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.\
    ---Returns True if a bullet, as maintained by a pool within CWeaponManager, has been fired into the defined angled area.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_BULLET_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, ownedByPlayer) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_BULLET_IN_AREA = function(x, y, z, radius, ownedByPlayer) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param ownedByPlayer BOOL
    ---@return BOOL
    IS_BULLET_IN_BOX = function(x1, y1, z1, x2, y2, z2, ownedByPlayer) end,

    ---p3 - possibly radius?
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@return BOOL
    HAS_BULLET_IMPACTED_IN_AREA = function(x, y, z, p3, p4, p5) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@return BOOL
    HAS_BULLET_IMPACTED_IN_BOX = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---PS4
    ---@return BOOL
    IS_ORBIS_VERSION = function() end,

    ---XBOX ONE
    ---@return BOOL
    IS_DURANGO_VERSION = function() end,

    ---@return BOOL
    IS_XBOX360_VERSION = function() end,

    ---@return BOOL
    IS_PS3_VERSION = function() end,

    ---@return BOOL
    IS_PC_VERSION = function() end,

    ---@return BOOL
    IS_STEAM_VERSION = function() end,

    ---@return BOOL
    _IS_XBOXPC_VERSION = function() end,

    ---Used to block some of the prostitute stuff due to laws in Australia.
    ---@return BOOL
    IS_AUSSIE_VERSION = function() end,

    ---@return BOOL
    IS_JAPANESE_VERSION = function() end,

    ---@return BOOL
    IS_XBOX_PLATFORM = function() end,

    ---Xbox Series (Scarlett) version...
    ---@return BOOL
    IS_SCARLETT_VERSION = function() end,

    ---@return BOOL
    IS_SCE_PLATFORM = function() end,

    ---PS5 (Prospero) version...
    ---@return BOOL
    IS_PROSPERO_VERSION = function() end,

    ---@param string string
    ---@return BOOL
    IS_STRING_NULL = function(string) end,

    ---@param string string
    ---@return BOOL
    IS_STRING_NULL_OR_EMPTY = function(string) end,

    ---Returns false if it's a null or empty string or if the string is too long. outInteger will be set to -999 in that case.\
    ---\
    ---If all checks have passed successfully, the return value will be set to whatever strtol(string, 0i64, 10); returns.
    ---@param string string
    ---@param outInteger integer
    ---@return BOOL
    ---@return integer
    STRING_TO_INT = function(string, outInteger) end,

    ---@param var integer
    ---@param rangeStart integer
    ---@param rangeEnd integer
    ---@param p3 integer
    ---@return integer
    SET_BITS_IN_RANGE = function(var, rangeStart, rangeEnd, p3) end,

    ---@param var integer
    ---@param rangeStart integer
    ---@param rangeEnd integer
    ---@return integer
    GET_BITS_IN_RANGE = function(var, rangeStart, rangeEnd) end,

    ---See description of `ADD_STUNT_JUMP_ANGLED` for detailed info. The only difference really is this one does not have the radius (or angle, not sure) floats parameters for entry and landing zones.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param x4 number
    ---@param y4 number
    ---@param z4 number
    ---@param camX number
    ---@param camY number
    ---@param camZ number
    ---@param p15 integer
    ---@param p16 integer
    ---@param p17 integer
    ---@return integer
    ADD_STUNT_JUMP = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, camX, camY, camZ, p15, p16, p17) end,

    ---Creates a new stunt jump.\
    ---\
    ---The radius1 and radius2 might actually not be a radius at all, but that's what it seems to me testing them in-game. But they may be 'angle' floats instead, considering this native is named ADD_STUNT_JUMP_**ANGLED**.\
    ---\
    ---Info about the specific 'parameter sections':\
    ---\
    ---\
    ---**x1, y1, z1, x2, y2, z2 and radius1:**\
    ---\
    ---First coordinates are for the jump entry area, and the radius that will be checked around that area. So if you're not exactly within the coordinates, but you are within the outter radius limit then it will still register as entering the stunt jump. Note as mentioned above, the radius is just a guess, I'm not really sure about it's exact purpose.\
    ---\
    ---\
    ---**x3, y3, z3, x4, y4, z4 and radius2:**\
    ---\
    ---Next part is the landing area, again starting with the left bottom (nearest to the stunt jump entry zone) coordinate, and the second one being the top right furthest away part of the landing area. Followed by another (most likely) radius float, this is usually slightly larger than the entry zone 'radius' float value, just because you have quite a lot of places where you can land (I'm guessing).\
    ---\
    ---\
    ---**camX, camY and camZ:**\
    ---\
    ---The final coordinate in this native is the Camera position. Rotation and zoom/FOV is managed by the game itself, you just need to provide the camera location.\
    ---\
    ---\
    ---**unk1, unk2 and unk3:**\
    ---\
    ---Not sure what these are for, but they're always `150, 0, 0` in decompiled scripts.\
    ---\
    ---Here is a list of almost all of the stunt jumps from GTA V (taken from decompiled scripts): https://pastebin.com/EW1jBPkY
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param radius1 number
    ---@param x3 number
    ---@param y3 number
    ---@param z3 number
    ---@param x4 number
    ---@param y4 number
    ---@param z4 number
    ---@param radius2 number
    ---@param camX number
    ---@param camY number
    ---@param camZ number
    ---@param p17 integer
    ---@param p18 integer
    ---@param p19 integer
    ---@return integer
    ADD_STUNT_JUMP_ANGLED = function(x1, y1, z1, x2, y2, z2, radius1, x3, y3, z3, x4, y4, z4, radius2, camX, camY, camZ, p17, p18, p19) end,

    ---Toggles some stunt jump stuff.
    ---@param toggle BOOL
    TOGGLE_SHOW_OPTIONAL_STUNT_JUMP_CAMERA = function(toggle) end,

    ---@param p0 integer
    DELETE_STUNT_JUMP = function(p0) end,

    ---@param p0 integer
    ENABLE_STUNT_JUMP_SET = function(p0) end,

    ---@param p0 integer
    DISABLE_STUNT_JUMP_SET = function(p0) end,

    ---@param toggle BOOL
    SET_STUNT_JUMPS_CAN_TRIGGER = function(toggle) end,

    ---@return BOOL
    IS_STUNT_JUMP_IN_PROGRESS = function() end,

    ---@return BOOL
    IS_STUNT_JUMP_MESSAGE_SHOWING = function() end,

    ---@return integer
    GET_NUM_SUCCESSFUL_STUNT_JUMPS = function() end,

    ---@return integer
    GET_TOTAL_SUCCESSFUL_STUNT_JUMPS = function() end,

    CANCEL_STUNT_JUMP = function() end,

    ---Make sure to call this from the correct thread if you're using multiple threads because all other threads except the one which is calling SET_GAME_PAUSED will be paused which means you will lose control and the game remains in paused mode until you exit GTA5.exe
    ---@param toggle BOOL
    SET_GAME_PAUSED = function(toggle) end,

    ---@param toggle BOOL
    SET_THIS_SCRIPT_CAN_BE_PAUSED = function(toggle) end,

    ---@param toggle BOOL
    SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT = function(toggle) end,

    ---This native appears on the cheat_controller script and tracks a combination of buttons, which may be used to toggle cheats in-game. Credits to ThreeSocks for the info. The hash contains the combination, while the "amount" represents the amount of buttons used in a combination. The following page can be used to make a button combination: gta5offset.com/ts/hash/\
    ---\
    ---INT_SCORES_SCORTED was a hash collision
    ---@param hash Hash
    ---@param amount integer
    ---@return BOOL
    HAS_CHEAT_WITH_HASH_BEEN_ACTIVATED = function(hash, amount) end,

    ---Get inputted "Cheat code", for example:\
    ---\
    ---while (TRUE)\
    ---{\
    ---    if (MISC::HAS_PC_CHEAT_WITH_HASH_BEEN_ACTIVATED(${fugitive}))\
    ---    {\
    ---       // Do something.\
    ---}\
    ---    SYSTEM::WAIT(0);\
    ---}\
    ---\
    ---Calling this will also set the last saved string hash to zero.\
    ---
    ---@param hash Hash
    ---@return BOOL
    HAS_PC_CHEAT_WITH_HASH_BEEN_ACTIVATED = function(hash) end,

    ---@param p0 BOOL
    OVERRIDE_FREEZE_FLAGS = function(p0) end,

    ---Formerly known as _LOWER_MAP_PROP_DENSITY and wrongly due to idiots as _ENABLE_MP_DLC_MAPS.\
    ---Sets the maximum prop density and changes a loading screen flag from 'loading story mode' to 'loading GTA Online'. Does not touch DLC map data at all.\
    ---\
    ---In fact, I doubt this changes the flag whatsoever, that's the OTHER native idiots use together with this that does so, this one only causes a loading screen to show as it reloads map data.
    ---@param p0 integer
    SET_INSTANCE_PRIORITY_MODE = function(p0) end,

    ---Sets an unknown flag used by CScene in determining which entities from CMapData scene nodes to draw, similar to SET_INSTANCE_PRIORITY_MODE.
    ---@param flag integer
    SET_INSTANCE_PRIORITY_HINT = function(flag) end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    IS_FRONTEND_FADING = function() end,

    ---spawns a few distant/out-of-sight peds, vehicles, animals etc each time it is called
    POPULATE_NOW = function() end,

    ---@return integer
    GET_INDEX_OF_CURRENT_LEVEL = function() end,

    ---level can be from 0 to 3\
    ---0: 9.8 - normal\
    ---1: 2.4 - low\
    ---2: 0.1 - very low\
    ---3: 0.0 - off
    ---@param level integer
    SET_GRAVITY_LEVEL = function(level) end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 BOOL
    START_SAVE_DATA = function(p0, p1, p2) end,

    STOP_SAVE_DATA = function() end,

    ---@param p0 BOOL
    ---@return integer
    GET_SIZE_OF_SAVE_DATA = function(p0) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_INT_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_INT64_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_ENUM_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_FLOAT_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_BOOL_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param name string
    REGISTER_TEXT_LABEL_TO_SAVE = function(p0, name) end,

    ---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f1, "tlPlateText");\
    ---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f1C, "tlPlateText_pending");\
    ---MISC::REGISTER_TEXT_LABEL_15_TO_SAVE(&a_0._f10B, "tlCarAppPlateText");
    ---@param p0 Any*
    ---@param name string
    REGISTER_TEXT_LABEL_15_TO_SAVE = function(p0, name) end,

    ---Only found 3 times in decompiled scripts.\
    ---\
    ---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(a_0, "Movie_Name_For_This_Player");\
    ---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(&a_0._fB, "Ringtone_For_This_Player");\
    ---MISC::REGISTER_TEXT_LABEL_23_TO_SAVE(&a_0._f1EC4._f12[v_A/*6*/], &v_13); // where v_13 is "MPATMLOGSCRS0" thru "MPATMLOGSCRS15"
    ---@param p0 Any*
    ---@param name string
    REGISTER_TEXT_LABEL_23_TO_SAVE = function(p0, name) end,

    ---Only found 2 times in decompiled scripts.\
    ---\
    ---MISC::REGISTER_TEXT_LABEL_31_TO_SAVE(&a_0._f1F5A._f6[0/*8*/], "TEMPSTAT_LABEL"); // gets saved in a struct called "g_SaveData_STRING_ScriptSaves"\
    ---MISC::REGISTER_TEXT_LABEL_31_TO_SAVE(&a_0._f4B4[v_1A/*8*/], &v_5); // where v_5 is "Name0" thru "Name9", gets saved in a struct called "OUTFIT_Name"
    ---@param p0 Any*
    ---@param name string
    REGISTER_TEXT_LABEL_31_TO_SAVE = function(p0, name) end,

    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(a_0, "Thumb_label");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f10, "Photo_label");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(a_0, "GXTlabel");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f21, "StringComp");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f43, "SecondStringComp");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f53, "ThirdStringComp");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f32, "SenderStringComp");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f726[v_1A/*16*/], &v_20); // where v_20 is "LastJobTL_0_1" thru "LastJobTL_2_1", gets saved in a struct called "LAST_JobGamer_TL"\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f4B, "PAID_PLAYER");\
    ---MISC::REGISTER_TEXT_LABEL_63_TO_SAVE(&a_0._f5B, "RADIO_STATION");
    ---@param p0 Any*
    ---@param name string
    REGISTER_TEXT_LABEL_63_TO_SAVE = function(p0, name) end,

    ---@param p0 Any*
    ---@param size integer
    ---@param structName string
    START_SAVE_STRUCT_WITH_SIZE = function(p0, size, structName) end,

    STOP_SAVE_STRUCT = function() end,

    ---@param p0 Any*
    ---@param size integer
    ---@param arrayName string
    START_SAVE_ARRAY_WITH_SIZE = function(p0, size, arrayName) end,

    STOP_SAVE_ARRAY = function() end,

    ---@param dst Any*
    ---@param src Any*
    ---@param size integer
    COPY_SCRIPT_STRUCT = function(dst, src, size) end,

    ---https://alloc8or.re/gta5/doc/enums/DispatchType.txt
    ---@param dispatchService integer
    ---@param toggle BOOL
    ENABLE_DISPATCH_SERVICE = function(dispatchService, toggle) end,

    ---@param dispatchService integer
    ---@param toggle BOOL
    BLOCK_DISPATCH_SERVICE_RESOURCE_CREATION = function(dispatchService, toggle) end,

    ---@param dispatchService integer
    ---@return integer
    GET_NUMBER_RESOURCES_ALLOCATED_TO_WANTED_LEVEL = function(dispatchService) end,

    ---As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f. \
    ---\
    ---Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).\
    ---\
    ---Side Note 2: I say it breaks as if you call this proper,\
    ---if(CREATE_INCIDENT) etc it will return false if you do as I said above.\
    ---=====================================================
    ---@param dispatchService integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param numUnits integer
    ---@param radius number
    ---@param outIncidentID integer
    ---@param p7 Any
    ---@param p8 Any
    ---@return BOOL
    ---@return integer
    CREATE_INCIDENT = function(dispatchService, x, y, z, numUnits, radius, outIncidentID, p7, p8) end,

    ---As for the 'police' incident, it will call police cars to you, but unlike PedsInCavalcades & Merryweather they won't start shooting at you unless you shoot first or shoot at them. The top 2 however seem to cancel theirselves if there is noone dead around you or a fire. I only figured them out as I found out the 3rd param is definately the amountOfPeople and they called incident 3 in scripts with 4 people (which the firetruck has) and incident 5 with 2 people (which the ambulence has). The 4 param I cant say is radius, but for the pedsInCavalcades and Merryweather R* uses 0.0f and for the top 3 (Emergency Services) they use 3.0f. \
    ---\
    ---Side Note: It seems calling the pedsInCavalcades or Merryweather then removing it seems to break you from calling the EmergencyEvents and I also believe pedsInCavalcades. (The V cavalcades of course not IV).\
    ---\
    ---Side Note 2: I say it breaks as if you call this proper,\
    ---if(CREATE_INCIDENT) etc it will return false if you do as I said above.\
    ---=====================================================
    ---@param dispatchService integer
    ---@param ped Ped
    ---@param numUnits integer
    ---@param radius number
    ---@param outIncidentID integer
    ---@param p5 Any
    ---@param p6 Any
    ---@return BOOL
    ---@return integer
    CREATE_INCIDENT_WITH_ENTITY = function(dispatchService, ped, numUnits, radius, outIncidentID, p5, p6) end,

    ---Delete an incident with a given id.\
    ---\
    ---=======================================================\
    ---Correction, I have change this to int, instead of int*\
    ---as it doesn't use a pointer to the createdIncident.\
    ---If you try it you will crash (or) freeze.\
    ---=======================================================
    ---@param incidentId integer
    DELETE_INCIDENT = function(incidentId) end,

    ---=======================================================\
    ---Correction, I have change this to int, instead of int*\
    ---as it doesn't use a pointer to the createdIncident.\
    ---If you try it you will crash (or) freeze.\
    ---=======================================================
    ---@param incidentId integer
    ---@return BOOL
    IS_INCIDENT_VALID = function(incidentId) end,

    ---@param incidentId integer
    ---@param dispatchService integer
    ---@param numUnits integer
    SET_INCIDENT_REQUESTED_UNITS = function(incidentId, dispatchService, numUnits) end,

    ---@param incidentId integer
    ---@param p1 number
    SET_IDEAL_SPAWN_DISTANCE_FOR_INCIDENT = function(incidentId, p1) end,

    ---Finds a position ahead of the player by predicting the players next actions.\
    ---The positions match path finding node positions.\
    ---When roads diverge, the position may rapidly change between two or more positions. This is due to the engine not being certain of which path the player will take.
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param fwdVecX number
    ---@param fwdVecY number
    ---@param fwdVecZ number
    ---@param distance number
    ---@param spawnPoint Vector3
    ---@return BOOL
    FIND_SPAWN_POINT_IN_DIRECTION = function(posX, posY, posZ, fwdVecX, fwdVecY, fwdVecZ, distance, spawnPoint) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 BOOL
    ---@param p9 BOOL
    ---@return integer
    ADD_POP_MULTIPLIER_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9) end,

    ---@param id integer
    ---@return BOOL
    DOES_POP_MULTIPLIER_AREA_EXIST = function(id) end,

    ---@param id integer
    ---@param p1 BOOL
    REMOVE_POP_MULTIPLIER_AREA = function(id, p1) end,

    ---@param id integer
    ---@return BOOL
    IS_POP_MULTIPLIER_AREA_NETWORKED = function(id) end,

    ---This native is adding a zone, where you can change density settings. For example, you can add a zone on 0.0, 0.0, 0.0 with radius 900.0 and vehicleMultiplier 0.0, and you will not see any new population vehicle spawned in a radius of 900.0 from 0.0, 0.0, 0.0. Returns the id. You can have only 15 zones at the same time. You can remove zone using REMOVE_POP_MULTIPLIER_SPHERE
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param pedMultiplier number
    ---@param vehicleMultiplier number
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@return integer
    ADD_POP_MULTIPLIER_SPHERE = function(x, y, z, radius, pedMultiplier, vehicleMultiplier, p6, p7) end,

    ---@param id integer
    ---@return BOOL
    DOES_POP_MULTIPLIER_SPHERE_EXIST = function(id) end,

    ---Removes population multiplier sphere
    ---@param id integer
    ---@param p1 BOOL
    REMOVE_POP_MULTIPLIER_SPHERE = function(id, p1) end,

    ---Makes the ped jump around like they're in a tennis match
    ---@param ped Ped
    ---@param toggle BOOL
    ---@param p2 BOOL
    ENABLE_TENNIS_MODE = function(ped, toggle, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_TENNIS_MODE = function(ped) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param animName string
    ---@param p3 number
    ---@param p4 number
    ---@param p5 BOOL
    PLAY_TENNIS_SWING_ANIM = function(ped, animDict, animName, p3, p4, p5) end,

    ---@param ped Ped
    ---@return BOOL
    GET_TENNIS_SWING_ANIM_COMPLETE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    GET_TENNIS_SWING_ANIM_CAN_BE_INTERRUPTED = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    GET_TENNIS_SWING_ANIM_SWUNG = function(ped) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 BOOL
    PLAY_TENNIS_DIVE_ANIM = function(ped, p1, p2, p3, p4, p5) end,

    ---From the scripts:\
    ---\
    ---MISC::SET_TENNIS_MOVE_NETWORK_SIGNAL_FLOAT(sub_aa49(a_0), "ForcedStopDirection", v_E);\
    ---\
    ---Related to tennis mode.
    ---@param ped Ped
    ---@param p1 string
    ---@param p2 number
    SET_TENNIS_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, p1, p2) end,

    RESET_DISPATCH_SPAWN_LOCATION = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    SET_DISPATCH_SPAWN_LOCATION = function(x, y, z) end,

    RESET_DISPATCH_IDEAL_SPAWN_DISTANCE = function() end,

    ---@param distance number
    SET_DISPATCH_IDEAL_SPAWN_DISTANCE = function(distance) end,

    ---@param p0 Any
    RESET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS = function(p0) end,

    ---@param p0 Any
    ---@param p1 number
    SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 number
    SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER = function(p0, p1) end,

    ---To remove, see: REMOVE_DISPATCH_SPAWN_BLOCKING_AREA\
    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@return integer
    ADD_DISPATCH_SPAWN_ANGLED_BLOCKING_AREA = function(x1, y1, z1, x2, y2, z2, width) end,

    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return integer
    ADD_DISPATCH_SPAWN_SPHERE_BLOCKING_AREA = function(x1, y1, x2, y2) end,

    ---@param p0 integer
    REMOVE_DISPATCH_SPAWN_BLOCKING_AREA = function(p0) end,

    RESET_DISPATCH_SPAWN_BLOCKING_AREAS = function() end,

    RESET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN = function() end,

    ---@param p0 integer
    ---@param p1 integer
    SET_WANTED_RESPONSE_NUM_PEDS_TO_SPAWN = function(p0, p1) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ADD_TACTICAL_NAV_MESH_POINT = function(x, y, z) end,

    CLEAR_TACTICAL_NAV_MESH_POINTS = function() end,

    ---Activates (usused?) riot mode. All NPCs are being hostile to each other (including player). Also the game will give weapons (pistols, smgs) to random NPCs.
    ---@param toggle BOOL
    SET_RIOT_MODE_ENABLED = function(toggle) end,

    ---@param p0 integer
    ---@param windowTitle string
    ---@param p2 Any*
    ---@param defaultText string
    ---@param defaultConcat1 string
    ---@param defaultConcat2 string
    ---@param defaultConcat3 string
    ---@param defaultConcat4 string
    ---@param defaultConcat5 string
    ---@param defaultConcat6 string
    ---@param defaultConcat7 string
    ---@param maxInputLength integer
    DISPLAY_ONSCREEN_KEYBOARD_WITH_LONGER_INITIAL_STRING = function(p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, defaultConcat4, defaultConcat5, defaultConcat6, defaultConcat7, maxInputLength) end,

    ---sfink: note, p0 is set to 6 for PC platform in at least 1 script, or to `unk::_get_ui_language_id() == 0` otherwise.\
    ---\
    ---NOTE: windowTitle uses text labels, and an invalid value will display nothing.\
    ---\
    ---www.gtaforums.com/topic/788343-vrel-script-hook-v/?p=1067380474\
    ---\
    ---windowTitle's\
    --------------------\
    ---CELL_EMAIL_BOD  =   "Enter your Eyefind message"\
    ---CELL_EMAIL_BODE =   "Message too long. Try again"\
    ---CELL_EMAIL_BODF    =   "Forbidden message. Try again"\
    ---CELL_EMAIL_SOD    =   "Enter your Eyefind subject"\
    ---CELL_EMAIL_SODE =   "Subject too long. Try again"\
    ---CELL_EMAIL_SODF    =   "Forbidden text. Try again"\
    ---CELL_EMASH_BOD   =   "Enter your Eyefind message"\
    ---CELL_EMASH_BODE =   "Message too long. Try again"\
    ---CELL_EMASH_BODF    =   "Forbidden message. Try again"\
    ---CELL_EMASH_SOD    =   "Enter your Eyefind subject"\
    ---CELL_EMASH_SODE =   "Subject too long. Try again"\
    ---CELL_EMASH_SODF    =   "Forbidden Text. Try again"\
    ---FMMC_KEY_TIP10   =   "Enter Synopsis"\
    ---FMMC_KEY_TIP12  =   "Enter Custom Team Name"\
    ---FMMC_KEY_TIP12F =   "Forbidden Text. Try again"\
    ---FMMC_KEY_TIP12N  =   "Custom Team Name"\
    ---FMMC_KEY_TIP8 =   "Enter Message"\
    ---FMMC_KEY_TIP8F   =   "Forbidden Text. Try again"\
    ---FMMC_KEY_TIP8FS  =   "Invalid Message. Try again"\
    ---FMMC_KEY_TIP8S  =   "Enter Message"\
    ---FMMC_KEY_TIP9    =   "Enter Outfit Name"\
    ---FMMC_KEY_TIP9F   =   "Invalid Outfit Name. Try again"\
    ---FMMC_KEY_TIP9N  =   "Outfit Name"\
    ---PM_NAME_CHALL  =   "Enter Challenge Name"
    ---@param p0 integer
    ---@param windowTitle string
    ---@param p2 string
    ---@param defaultText string
    ---@param defaultConcat1 string
    ---@param defaultConcat2 string
    ---@param defaultConcat3 string
    ---@param maxInputLength integer
    DISPLAY_ONSCREEN_KEYBOARD = function(p0, windowTitle, p2, defaultText, defaultConcat1, defaultConcat2, defaultConcat3, maxInputLength) end,

    ---Returns the current status of the onscreen keyboard, and updates the output.\
    ---\
    ---Status Codes:\
    ---\
    ----1: Keyboard isn't active\
    ---0: User still editing\
    ---1: User has finished editing\
    ---2: User has canceled editing
    ---@return integer
    UPDATE_ONSCREEN_KEYBOARD = function() end,

    ---Returns NULL unless UPDATE_ONSCREEN_KEYBOARD() returns 1 in the same tick.
    ---@return string
    GET_ONSCREEN_KEYBOARD_RESULT = function() end,

    ---DO NOT use this as it doesn't clean up the text input box properly and your script will get stuck in the UPDATE_ONSCREEN_KEYBOARD() loop.\
    ---Use FORCE_CLOSE_TEXT_INPUT_BOX instead.
    CANCEL_ONSCREEN_KEYBOARD = function() end,

    ---p0 was always 2 in R* scripts.\
    ---Called before calling DISPLAY_ONSCREEN_KEYBOARD if the input needs to be saved.
    ---@param p0 integer
    NEXT_ONSCREEN_KEYBOARD_RESULT_WILL_DISPLAY_USING_THESE_FONTS = function(p0) end,

    ---Appears to remove stealth kill action from memory
    ---@param hash Hash
    ---@param enable BOOL
    ACTION_MANAGER_ENABLE_ACTION = function(hash, enable) end,

    ---GET_GAME_TIMER() / 1000
    ---@return integer
    GET_REAL_WORLD_TIME = function() end,

    ---@param eventType integer
    ---@param suppress BOOL
    SUPRESS_RANDOM_EVENT_THIS_FRAME = function(eventType, suppress) end,

    ---@param player Player
    SET_EXPLOSIVE_AMMO_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_FIRE_AMMO_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_EXPLOSIVE_MELEE_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_SUPER_JUMP_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_BEAST_JUMP_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_FORCED_JUMP_THIS_FRAME = function(player) end,

    ---@return BOOL
    HAS_GAME_INSTALLED_THIS_SESSION = function() end,

    SET_TICKER_JOHNMARSTON_IS_DONE = function() end,

    ---@return BOOL
    ARE_PROFILE_SETTINGS_VALID = function() end,

    PREVENT_ARREST_STATE_THIS_FRAME = function() end,

    ---Sets the localplayer playerinfo state back to playing (State 0)\
    ---\
    ---States are:\
    ----1: "Invalid"\
    ---0: "Playing"\
    ---1: "Died"\
    ---2: "Arrested"\
    ---3: "Failed Mission"\
    ---4: "Left Game"\
    ---5: "Respawn"\
    ---6: "In MP Cutscene"
    FORCE_GAME_STATE_PLAYING = function() end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 Any
    ---@param p3 Any
    SCRIPT_RACE_INIT = function(p0, p1, p2, p3) end,

    SCRIPT_RACE_SHUTDOWN = function() end,

    ---@param player Player
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    SCRIPT_RACE_PLAYER_HIT_CHECKPOINT = function(player, p1, p2, p3) end,

    ---@param player Player
    ---@param p1 integer
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    ---@return integer
    SCRIPT_RACE_GET_PLAYER_SPLIT_TIME = function(player, p1, p2) end,

    START_END_USER_BENCHMARK = function() end,

    STOP_END_USER_BENCHMARK = function() end,

    RESET_END_USER_BENCHMARK = function() end,

    ---Saves the benchmark recording to %USERPROFILE%\Documents\Rockstar Games\GTA V\Benchmarks and submits some metrics.
    SAVE_END_USER_BENCHMARK = function() end,

    ---Returns true if the current frontend menu is FE_MENU_VERSION_SP_PAUSE
    ---@return BOOL
    UI_STARTED_END_USER_BENCHMARK = function() end,

    ---Returns true if the current frontend menu is FE_MENU_VERSION_LANDING_MENU
    ---@return BOOL
    LANDING_SCREEN_STARTED_END_USER_BENCHMARK = function() end,

    ---Returns true if command line option '-benchmark' is set.
    ---@return BOOL
    IS_COMMANDLINE_END_USER_BENCHMARK = function() end,

    ---Returns value of the '-benchmarkIterations' command line option.
    ---@return integer
    GET_BENCHMARK_ITERATIONS = function() end,

    ---Returns value of the '-benchmarkPass' command line option.
    ---@return integer
    GET_BENCHMARK_PASS = function() end,

    ---In singleplayer it does exactly what the name implies. In FiveM / GTA:Online it shows `Disconnecting from GTA Online` HUD and then quits the game.
    RESTART_GAME = function() end,

    ---Exits the game and downloads a fresh social club update on next restart.
    QUIT_GAME = function() end,

    ---Hardcoded to always return true.
    ---@return BOOL
    HAS_ASYNC_INSTALL_FINISHED = function() end,

    CLEANUP_ASYNC_INSTALL = function() end,

    ---aka "constrained"
    ---@return BOOL
    PLM_IS_IN_CONSTRAINED_MODE = function() end,

    ---Returns duration of how long the game has been in power-saving mode (aka "constrained") in milliseconds.
    ---@return integer
    PLM_GET_CONSTRAINED_DURATION_MS = function() end,

    ---If toggle is true, the ped's head is shown in the pause menu\
    ---If toggle is false, the ped's head is not shown in the pause menu
    ---@param toggle BOOL
    SET_PLAYER_IS_IN_ANIMAL_FORM = function(toggle) end,

    ---Although we don't have a jenkins hash for this one, the name is 100% confirmed.
    ---@return BOOL
    GET_IS_PLAYER_IN_ANIMAL_FORM = function() end,

    ---@param toggle BOOL
    SET_PLAYER_IS_REPEATING_A_MISSION = function(toggle) end,

    ---Does nothing (it's a nullsub).
    DISABLE_SCREEN_DIMMING_THIS_FRAME = function() end,

    ---@return number
    GET_CITY_DENSITY = function() end,

    USE_ACTIVE_CAMERA_FOR_TIMESLICING_CENTRE = function() end,

    ---@param contentId Hash
    ---@param index integer
    SET_CONTENT_ID_INDEX = function(contentId, index) end,

    ---@param contentId Hash
    ---@return integer
    GET_CONTENT_ID_INDEX = function(contentId) end,

    ---@param model Hash
    ---@param type integer
    _SET_CONTENT_PROP_TYPE = function(model, type) end,

    ---Returns prop type for given model hash
    ---@param model Hash
    ---@return integer
    _GET_CONTENT_PROP_TYPE = function(model) end
}

MOBILE = {
    ---Creates a mobile phone of the specified type.\
    ---\
    ---Possible phone types:\
    ---\
    ---0 - Default phone / Michael's phone\
    ---1 - Trevor's phone\
    ---2 - Franklin's phone\
    ---3 - Unused police phone\
    ---4 - Prologue phone\
    ---\
    ---Higher values may crash your game.
    ---@param phoneType integer
    CREATE_MOBILE_PHONE = function(phoneType) end,

    ---Destroys the currently active mobile phone.
    DESTROY_MOBILE_PHONE = function() end,

    ---The minimum/default is 500.0f. If you plan to make it bigger set it's position as well. Also this seems to need to be called in a loop as when you close the phone the scale is reset. If not in a loop you'd need to call it everytime before you re-open the phone.
    ---@param scale number
    SET_MOBILE_PHONE_SCALE = function(scale) end,

    ---Last parameter is unknown and always zero.
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param p3 Any
    SET_MOBILE_PHONE_ROTATION = function(rotX, rotY, rotZ, p3) end,

    ---@param rotation Vector3
    ---@param p1 Vehicle
    GET_MOBILE_PHONE_ROTATION = function(rotation, p1) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_MOBILE_PHONE_POSITION = function(posX, posY, posZ) end,

    ---@param position Vector3
    GET_MOBILE_PHONE_POSITION = function(position) end,

    ---If bool Toggle = true so the mobile is hide to screen.\
    ---If bool Toggle = false so the mobile is show to screen.
    ---@param toggle BOOL
    SCRIPT_IS_MOVING_MOBILE_PHONE_OFFSCREEN = function(toggle) end,

    ---This one is weird and seems to return a TRUE state regardless of whether the phone is visible on screen or tucked away.\
    ---\
    ---\
    ---I can confirm the above. This function is hard-coded to always return 1.
    ---@return BOOL
    CAN_PHONE_BE_SEEN_ON_SCREEN = function() end,

    ---@param toggle BOOL
    SET_MOBILE_PHONE_DOF_STATE = function(toggle) end,

    ---For move the finger of player, the value of int goes 1 at 5.
    ---@param direction integer
    CELL_SET_INPUT = function(direction) end,

    ---if the bool "Toggle" is "true" so the phone is lean.\
    ---if the bool "Toggle" is "false" so the phone is not lean.
    ---@param toggle BOOL
    CELL_HORIZONTAL_MODE_TOGGLE = function(toggle) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    CELL_CAM_ACTIVATE = function(p0, p1) end,

    ---@param toggle BOOL
    CELL_CAM_ACTIVATE_SELFIE_MODE = function(toggle) end,

    ---@param toggle BOOL
    CELL_CAM_ACTIVATE_SHALLOW_DOF_MODE = function(toggle) end,

    ---@param p0 number
    CELL_CAM_SET_SELFIE_MODE_SIDE_OFFSET_SCALING = function(p0) end,

    ---@param horizontalPan number
    CELL_CAM_SET_SELFIE_MODE_HORZ_PAN_OFFSET = function(horizontalPan) end,

    ---@param vertPan number
    CELL_CAM_SET_SELFIE_MODE_VERT_PAN_OFFSET = function(vertPan) end,

    ---@param roll number
    CELL_CAM_SET_SELFIE_MODE_ROLL_OFFSET = function(roll) end,

    ---@param distanceScaling number
    CELL_CAM_SET_SELFIE_MODE_DISTANCE_SCALING = function(distanceScaling) end,

    ---@param yaw number
    CELL_CAM_SET_SELFIE_MODE_HEAD_YAW_OFFSET = function(yaw) end,

    ---@param roll number
    CELL_CAM_SET_SELFIE_MODE_HEAD_ROLL_OFFSET = function(roll) end,

    ---@param pitch number
    CELL_CAM_SET_SELFIE_MODE_HEAD_PITCH_OFFSET = function(pitch) end,

    ---@param entity Entity
    ---@return BOOL
    CELL_CAM_IS_CHAR_VISIBLE_NO_FACE_CHECK = function(entity) end,

    ---@param renderId integer
    ---@return integer
    GET_MOBILE_PHONE_RENDER_ID = function(renderId) end
}

MONEY = {
    ---@param wallet integer
    ---@param bank integer
    NETWORK_INITIALIZE_CASH = function(wallet, bank) end,

    ---Note the 2nd parameters are always 1, 0. I have a feeling it deals with your money, wallet, bank. So when you delete the character it of course wipes the wallet cash at that time. So if that was the case, it would be eg, NETWORK_DELETE_CHARACTER(characterIndex, deleteWalletCash, deleteBankCash);
    ---@param characterSlot integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_DELETE_CHARACTER = function(characterSlot, p1, p2) end,

    ---@param characterSlot integer
    NETWORK_MANUAL_DELETE_CHARACTER = function(characterSlot) end,

    ---@return BOOL
    ---@deprecated
    NETWORK_GET_PLAYER_IS_HIGH_EARNER = function() end,

    ---@param characterSlot integer
    NETWORK_CLEAR_CHARACTER_WALLET = function(characterSlot) end,

    ---@param amount integer
    ---@param gamerHandle Any*
    NETWORK_GIVE_PLAYER_JOBSHARE_CASH = function(amount, gamerHandle) end,

    ---@param value integer
    ---@param gamerHandle Any*
    NETWORK_RECEIVE_PLAYER_JOBSHARE_CASH = function(value, gamerHandle) end,

    ---@return BOOL
    NETWORK_CAN_SHARE_JOB_CASH = function() end,

    ---index\
    ----------\
    ---See function sub_1005 in am_boat_taxi.ysc\
    ---\
    ---context\
    -------------\
    ---"BACKUP_VAGOS"\
    ---"BACKUP_LOST"\
    ---"BACKUP_FAMILIES"\
    ---"HIRE_MUGGER"\
    ---"HIRE_MERCENARY"\
    ---"BUY_CARDROPOFF"\
    ---"HELI_PICKUP"\
    ---"BOAT_PICKUP"\
    ---"CLEAR_WANTED"\
    ---"HEAD_2_HEAD"\
    ---"CHALLENGE"\
    ---"SHARE_LAST_JOB"\
    ---"DEFAULT"\
    ---\
    ---reason\
    ------------\
    ---"NOTREACHTARGET"\
    ---"TARGET_ESCAPE"\
    ---"DELIVERY_FAIL"\
    ---"NOT_USED"\
    ---"TEAM_QUIT"\
    ---"SERVER_ERROR"\
    ---"RECEIVE_LJ_L"\
    ---"CHALLENGE_PLAYER_LEFT"\
    ---"DEFAULT"\
    ---\
    ---unk\
    --------\
    ---Unknown bool value\
    ---\
    ---
    ---@param index integer
    ---@param context string
    ---@param reason string
    ---@param p3 BOOL
    NETWORK_REFUND_CASH = function(index, context, reason, p3) end,

    ---@param amount integer
    ---@param p1 string
    ---@param p2 string
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@deprecated
    NETWORK_DEDUCT_CASH = function(amount, p1, p2, p3, p4, p5) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@return BOOL
    NETWORK_MONEY_CAN_BET = function(amount, p1, p2) end,

    ---@param amount integer
    ---@return BOOL
    NETWORK_CAN_BET = function(amount) end,

    ---GTAO_CASINO_HOUSE\
    ---GTAO_CASINO_INSIDETRACK\
    ---GTAO_CASINO_LUCKYWHEEL\
    ---GTAO_CASINO_BLACKJACK\
    ---GTAO_CASINO_ROULETTE\
    ---GTAO_CASINO_SLOTS\
    ---GTAO_CASINO_PURCHASE_CHIPS\
    ---\
    ---NETWORK_C*
    ---@param hash Hash
    ---@return BOOL
    NETWORK_CASINO_CAN_BET = function(hash) end,

    ---@return BOOL
    NETWORK_CASINO_CAN_BET_PVC = function() end,

    ---@param p0 Any
    ---@return BOOL
    ---@deprecated
    NETWORK_CASINO_CAN_BET_AMOUNT = function(p0) end,

    ---@return BOOL
    NETWORK_CASINO_CAN_BUY_CHIPS_PVC = function() end,

    ---@param p0 integer
    ---@param p1 integer
    ---@return BOOL
    NETWORK_CASINO_BUY_CHIPS = function(p0, p1) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@return BOOL
    NETWORK_CASINO_SELL_CHIPS = function(p0, p1) end,

    ---Does nothing (it's a nullsub).
    ---@deprecated
    NETWORK_DEFER_CASH_TRANSACTIONS_UNTIL_SHOP_SAVE = function() end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param amount integer
    ---@param p3 integer
    ---@return BOOL
    ---@return integer
    ---@deprecated
    CAN_PAY_AMOUNT_TO_BOSS = function(p0, p1, amount, p3) end,

    ---@param amount integer
    NETWORK_EARN_FROM_PICKUP = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_FROM_CASHING_OUT = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_FROM_GANGATTACK_PICKUP = function(amount) end,

    ---@param amount integer
    ---@deprecated
    NETWORK_EARN_ASSASSINATE_TARGET_KILLED = function(amount) end,

    ---For the money bags that drop a max of $40,000. Often called 40k bags.\
    ---\
    ---Most likely NETWORK_EARN_FROM_ROB***
    ---@param amount integer
    NETWORK_EARN_FROM_ROB_ARMORED_CARS = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_FROM_CRATE_DROP = function(amount) end,

    ---@param amount integer
    ---@param p1 string
    NETWORK_EARN_FROM_BETTING = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 string
    NETWORK_EARN_FROM_JOB = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 string
    ---@deprecated
    NETWORK_EARN_FROM_JOBX2 = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 string
    NETWORK_EARN_FROM_PREMIUM_JOB = function(amount, p1) end,

    ---@param amount integer
    ---@param heistHash string
    NETWORK_EARN_FROM_BEND_JOB = function(amount, heistHash) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@param p2 BOOL
    NETWORK_EARN_FROM_CHALLENGE_WIN = function(p0, p1, p2) end,

    ---@param amount integer
    ---@param gamerHandle Any*
    ---@param p2 Any*
    ---@param p3 Any
    NETWORK_EARN_FROM_BOUNTY = function(amount, gamerHandle, p2, p3) end,

    ---@param amount integer
    ---@param modelHash Hash
    NETWORK_EARN_FROM_IMPORT_EXPORT = function(amount, modelHash) end,

    ---@param amount integer
    NETWORK_EARN_FROM_HOLDUPS = function(amount) end,

    ---@param amount integer
    ---@param propertyName Hash
    NETWORK_EARN_FROM_PROPERTY = function(amount, propertyName) end,

    ---DSPORT
    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FROM_AI_TARGET_KILL = function(p0, p1) end,

    ---@param amount integer
    NETWORK_EARN_FROM_NOT_BADSPORT = function(amount) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    NETWORK_EARN_FROM_VEHICLE = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    NETWORK_EARN_FROM_PERSONAL_VEHICLE = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---type either Monthly,Weekly,Daily
    ---@param amount integer
    ---@param type string
    ---@param characterSlot integer
    NETWORK_EARN_FROM_DAILY_OBJECTIVES = function(amount, type, characterSlot) end,

    ---Example for p1: "AM_DISTRACT_COPS"
    ---@param p0 integer
    ---@param p1 string
    ---@param p2 Any*
    NETWORK_EARN_FROM_AMBIENT_JOB = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@param p2 Any*
    NETWORK_EARN_FROM_JOB_BONUS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_FROM_CRIMINAL_MASTERMIND = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_HEIST_AWARD = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_FIRST_TIME_BONUS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_GOON = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_BOSS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_EARN_AGENCY = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param id integer
    ---@deprecated
    NETWORK_EARN_FROM_WAREHOUSE = function(amount, id) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_FROM_CONTRABAND = function(amount, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_FROM_DESTROYING_CONTRABAND = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    NETWORK_EARN_FROM_SMUGGLER_WORK = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FROM_HANGAR_TRADE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_PURCHASE_CLUB_HOUSE = function(p0, p1) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_EARN_FROM_BUSINESS_PRODUCT = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_FROM_VEHICLE_EXPORT = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_EARN_SMUGGLER_AGENCY = function(amount, p1, p2, p3) end,

    ---@param p0 Any
    NETWORK_EARN_BOUNTY_HUNTER_REWARD = function(p0) end,

    ---@param p0 Any
    NETWORK_EARN_FROM_BUSINESS_BATTLE = function(p0) end,

    ---@param p0 Any
    ---@param p1 integer
    NETWORK_EARN_FROM_CLUB_MANAGEMENT_PARTICIPATION = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_EARN_FROM_FMBB_PHONECALL_MISSION = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_FROM_BUSINESS_HUB_SELL = function(p0, p1, p2) end,

    ---@param p0 Any
    NETWORK_EARN_FROM_FMBB_BOSS_WORK = function(p0) end,

    ---@param p0 Any
    NETWORK_EARN_FMBB_WAGE_BONUS = function(p0) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    ---@param p5 Any
    ---@return BOOL
    NETWORK_CAN_SPEND_MONEY = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any*
    ---@param p5 Any
    ---@param p6 Any
    ---@return BOOL
    NETWORK_CAN_SPEND_MONEY2 = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param amount integer
    ---@param item Hash
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 BOOL
    ---@param item_name string
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 BOOL
    NETWORK_BUY_ITEM = function(amount, item, p2, p3, p4, item_name, p6, p7, p8, p9) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPENT_TAXI = function(amount, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_PAY_EMPLOYEE_WAGE = function(p0, p1, p2) end,

    ---@param amount integer
    ---@param matchId string
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_PAY_MATCH_ENTRY_FEE = function(amount, matchId, p2, p3) end,

    ---@param amount integer
    ---@param p1 integer
    ---@param matchId string
    ---@param p3 BOOL
    ---@param p4 BOOL
    NETWORK_SPENT_BETTING = function(amount, p1, matchId, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param amount integer
    NETWORK_SPENT_WAGER = function(p0, p1, amount) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 Any
    ---@param p3 BOOL
    NETWORK_SPENT_IN_STRIPCLUB = function(p0, p1, p2, p3) end,

    ---@param cost integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_BUY_HEALTHCARE = function(cost, p1, p2) end,

    ---p1 = 0 (always)\
    ---p2 = 1 (always)
    ---@param cost integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_BUY_AIRSTRIKE = function(cost, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param npcProvider integer
    ---@deprecated
    NETWORK_BUY_BACKUP_GANG = function(p0, p1, p2, p3, npcProvider) end,

    ---p1 = 0 (always)\
    ---p2 = 1 (always)
    ---@param cost integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_BUY_HELI_STRIKE = function(cost, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_AMMO_DROP = function(p0, p1, p2, p3) end,

    ---p1 is just an assumption. p2 was false and p3 was true.
    ---@param amount integer
    ---@param victim Player
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    NETWORK_BUY_BOUNTY = function(amount, victim, p2, p3, p4) end,

    ---@param cost integer
    ---@param propertyName Hash
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_BUY_PROPERTY = function(cost, propertyName, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_BUY_SMOKES = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_HELI_PICKUP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_BOAT_PICKUP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_BULL_SHARK = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_CASH_DROP = function(amount, p1, p2) end,

    ---Only used once in a script (am_contact_requests)\
    ---p1 = 0\
    ---p2 = 1
    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_HIRE_MUGGER = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_ROBBED_BY_MUGGER = function(amount, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_HIRE_MERCENARY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    NETWORK_SPENT_BUY_WANTEDLEVEL = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_BUY_OFFTHERADAR = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_BUY_REVEAL_PLAYERS = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 BOOL
    ---@param p4 BOOL
    NETWORK_SPENT_CARWASH = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_CINEMA = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_TELESCOPE = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_HOLDUPS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_BUY_PASSIVE_MODE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPENT_BANK_INTEREST = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_PROSTITUTES = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_ARREST_BAIL = function(p0, p1, p2) end,

    ---According to how I understood this in the freemode script alone,\
    ---The first parameter is determined by a function named, func_5749 within the freemode script which has a list of all the vehicles and a set price to return which some vehicles deals with globals as well. So the first parameter is basically the set in stone insurance cost it's gonna charge you for that specific vehicle model.\
    ---\
    ---The second parameter whoever put it was right, they call GET_ENTITY_MODEL with the vehicle as the paremeter.\
    ---\
    ---The third parameter is the network handle as they call their little struct<13> func or atleast how the script decompiled it to look which in lamens terms just returns the network handle of the previous owner based on DECOR_GET_INT(vehicle, "Previous_Owner").\
    ---\
    ---The fourth parameter is a bool that returns true/false depending on if your bank balance is greater then 0.\
    ---\
    ---The fifth and last parameter is a bool that returns true/false depending on if you have the money for the car based on the cost returned by func_5749. In the freemode script eg,\
    ---bool hasTheMoney = MONEY::_GET_BANK_BALANCE() < carCost.
    ---@param amount integer
    ---@param vehicleModel Hash
    ---@param gamerHandle Any*
    ---@param notBankrupt BOOL
    ---@param hasTheMoney BOOL
    NETWORK_SPENT_PAY_VEHICLE_INSURANCE_PREMIUM = function(amount, vehicleModel, gamerHandle, notBankrupt, hasTheMoney) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_CALL_PLAYER = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_BOUNTY = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPENT_FROM_ROCKSTAR = function(p0, p1, p2) end,

    ---Hardcoded to return 0.
    ---@param amount integer
    ---@return integer
    ---@deprecated
    NETWORK_SPEND_EARNED_FROM_BANK_AND_WALLETS = function(amount) end,

    ---This isn't a hash collision.
    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 string
    ---@return string
    ---@return integer
    ---@return integer
    PROCESS_CASH_GIFT = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPENT_MOVE_SUBMARINE = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@deprecated
    NETWORK_SPENT_PLAYER_HEALTHCARE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_NO_COPS = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    NETWORK_SPENT_CARGO_SOURCING = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_REQUEST_JOB = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    NETWORK_SPENT_REQUEST_HEIST = function(p0, p1, p2, p3) end,

    ---The first parameter is the amount spent which is store in a global when this native is called. The global returns 10. Which is the price for both rides.\
    ---\
    ---The last 3 parameters are, \
    ---2,0,1 in the am_ferriswheel.c\
    ---1,0,1 in the am_rollercoaster.c\
    ---
    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    NETWORK_BUY_FAIRGROUND_RIDE = function(amount, p1, p2, p3, p4) end,

    ---@return BOOL
    NETWORK_ECONOMY_HAS_FIXED_CRAZY_NUMBERS = function() end,

    ---@param amount integer
    ---@param matchId string
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@deprecated
    NETWORK_SPENT_JOB_SKIP = function(amount, matchId, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@return BOOL
    ---@deprecated
    NETWORK_SPENT_BOSS_GOON = function(amount, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param amount integer
    NETWORK_SPEND_GOON = function(p0, p1, amount) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPEND_BOSS = function(p0, p1, p2) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_MOVE_YACHT = function(amount, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_RENAME_ORGANIZATION = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 Hash
    ---@param p3 BOOL
    ---@param p4 BOOL
    NETWORK_BUY_CONTRABAND_MISSION = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PA_SERVICE_HELI = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PA_SERVICE_VEHICLE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PA_SERVICE_SNACK = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PA_SERVICE_DANCER = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPENT_PA_SERVICE_IMPOUND = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PA_HELI_PICKUP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPENT_PURCHASE_OFFICE_PROPERTY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPENT_UPGRADE_OFFICE_PROPERTY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param data Any*
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_PURCHASE_IMPEXP_WAREHOUSE_PROPERTY = function(amount, data, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_IMPEXP_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_TRADE_IMPEXP_WAREHOUSE_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_ORDER_WAREHOUSE_VEHICLE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_ORDER_BODYGUARD_VEHICLE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_JUKEBOX = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_CLUB_HOUSE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_CLUB_HOUSE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_TRADE_BUSINESS_PROPERTY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPENT_MC_ABILITY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PAY_BUSINESS_SUPPLIES = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPENT_CHANGE_APPEARANCE = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    NETWORK_SPENT_VEHICLE_EXPORT_MODS = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_OFFICE_GARAGE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_OFFICE_GARAGE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPENT_IMPORT_EXPORT_REPAIR = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_HANGAR = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_HANGAR = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPENT_HANGAR_UTILITY_CHARGES = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPENT_HANGAR_STAFF_CHARGES = function(amount, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_BUY_TRUCK = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_TRUCK = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_BUY_BUNKER = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPRADE_BUNKER = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param bunkerHash Hash
    NETWORK_EARN_FROM_SELL_BUNKER = function(amount, bunkerHash) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPENT_BALLISTIC_EQUIPMENT = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_RDR_BONUS = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_WAGE_PAYMENT = function(amount, p1) end,

    ---@param amount integer
    NETWORK_EARN_WAGE_PAYMENT_BONUS = function(amount) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_BUY_BASE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_BASE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_BUY_TILTROTOR = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_TILTROTOR = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_EMPLOY_ASSASSINS = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_GANGOPS_CANNON = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_GANGOPS_SKIP_MISSION = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_CASINO_HEIST_SKIP_MISSION = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param baseNameHash Hash
    NETWORK_EARN_SELL_BASE = function(amount, baseNameHash) end,

    ---@param amount integer
    ---@param p1 integer
    NETWORK_EARN_TARGET_REFUND = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 integer
    NETWORK_EARN_GANGOPS_WAGES = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 integer
    NETWORK_EARN_GANGOPS_WAGES_BONUS = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    ---@deprecated
    NETWORK_EARN_DAR_CHALLENGE = function(amount, p1) end,

    ---@param amount integer
    ---@param vehicleHash Hash
    NETWORK_EARN_DOOMSDAY_FINALE_BONUS = function(amount, vehicleHash) end,

    ---@param amount integer
    ---@param p1 string
    ---@param p2 Any
    NETWORK_EARN_GANGOPS_AWARD = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 string
    ---@param actIndex integer
    NETWORK_EARN_GANGOPS_ELITE = function(amount, p1, actIndex) end,

    ---@param earnedMoney integer
    ---@deprecated
    NETWORK_SERVICE_EARN_GANGOPS_RIVAL_DELIVERY = function(earnedMoney) end,

    ---@param type integer
    ---@param amount integer
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPEND_GANGOPS_START_STRAND = function(type, amount, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPEND_GANGOPS_TRIP_SKIP = function(amount, p1, p2) end,

    ---@param amount integer
    NETWORK_EARN_GANGOPS_PREP_PARTICIPATION = function(amount) end,

    ---@param amount integer
    ---@param p1 string
    NETWORK_EARN_GANGOPS_SETUP = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 string
    NETWORK_EARN_GANGOPS_FINALE = function(amount, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_SPEND_GANGOPS_REPAIR_COST = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_NIGHTCLUB = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_EARN_NIGHTCLUB_DANCING = function(p0) end,

    ---@param amount integer
    NETWORK_EARN_BB_EVENT_BONUS = function(amount) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_HACKER_TRUCK = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_HACKER_TRUCK = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param amount integer
    ---@param p2 Any
    ---@param p3 Any
    ---@deprecated
    NETWORK_EARN_HACKER_TRUCK = function(p0, amount, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_PURCHASE_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPENT_UPGRADE_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    NETWORK_EARN_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_NIGHTCLUB_AND_WAREHOUSE = function(p0, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPENT_RDR_HATCHET_BONUS = function(amount, p1, p2) end,

    ---@param player Player
    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_NIGHTCLUB_ENTRY_FEE = function(player, amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPEND_NIGHTCLUB_BAR_DRINK = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPEND_BOUNTY_HUNTER_MISSION = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_REHIRE_DJ = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPENT_ARENA_JOIN_SPECTATOR = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_ARENA_SKILL_LEVEL_PROGRESSION = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_ARENA_CAREER_PROGRESSION = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    NETWORK_SPEND_MAKE_IT_RAIN = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 string
    NETWORK_SPEND_BUY_ARENA = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 string
    NETWORK_SPEND_UPGRADE_ARENA = function(amount, p1, p2, p3) end,

    ---type either, 1 for cam spectate, 2 for drone
    ---@param amount integer
    ---@param type integer
    ---@param p2 BOOL
    ---@param p3 BOOL
    NETWORK_SPEND_ARENA_SPECTATOR_BOX = function(amount, type, p2, p3) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 BOOL
    NETWORK_SPEND_SPIN_THE_WHEEL_PAYMENT = function(amount, p1, p2) end,

    ---@param amount integer
    NETWORK_EARN_SPIN_THE_WHEEL_CASH = function(amount) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@deprecated
    NETWORK_SPEND_ARENA_PREMIUM = function(amount, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_EARN_ARENA_WAR = function(amount, p1, p2, p3) end,

    ---@param amount integer
    NETWORK_EARN_ARENA_WAR_ASSASSINATE_TARGET = function(amount) end,

    ---@param amount integer
    ---@deprecated
    NETWORK_EARN_ARENA_WAR_EVENT_CARGO = function(amount) end,

    ---@param amount integer
    ---@deprecated
    NETWORK_EARN_RC_TIME_TRIAL = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_DAILY_OBJECTIVE_EVENT = function(amount) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 integer
    NETWORK_SPEND_CASINO_MEMBERSHIP = function(amount, p1, p2, p3) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param data Any*
    NETWORK_SPEND_BUY_CASINO = function(amount, p1, p2, data) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param data Any*
    NETWORK_SPEND_UPGRADE_CASINO = function(amount, p1, p2, data) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_CASINO_GENERIC = function(amount, p1, p2, p3, p4) end,

    ---@param amount integer
    ---@deprecated
    NETWORK_EARN_CASINO_TIME_TRIAL_WIN = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_COLLECTABLES_ACTION_FIGURES = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_CASINO_COLLECTABLE_COMPLETED_COLLECTION = function(amount) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_SELL_PRIZE_VEHICLE = function(amount, p1, p2) end,

    ---@param amount integer
    NETWORK_EARN_CASINO_MISSION_REWARD = function(amount) end,

    ---@param amount integer
    NETWORK_EARN_CASINO_STORY_MISSION_REWARD = function(amount) end,

    ---@param amount integer
    ---@deprecated
    NETWORK_EARN_CASINO_MISSION_PARTICIPATION = function(amount) end,

    ---@param amount integer
    ---@param hash Hash
    NETWORK_EARN_CASINO_AWARD = function(amount, hash) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BUY_ARCADE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_UPGRADE_ARCADE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    ---@param p10 Any
    NETWORK_SPEND_CASINO_HEIST = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_ARCADE_MGMT = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_PLAY_ARCADE = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_ARCADE = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    NETWORK_EARN_CASINO_HEIST = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_UPGRADE_ARCADE = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    NETWORK_EARN_ARCADE = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_COLLECTABLES = function(p0, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    ---@deprecated
    NETWORK_EARN_CHALLENGE = function(amount, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_EARN_CASINO_HEIST_AWARDS = function(p0, p1, p2, p3, p4) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_COLLECTABLE_ITEM = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    NETWORK_EARN_COLLECTABLE_COMPLETED_COLLECTION = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    ---@deprecated
    NETWORK_EARN_YATCH_MISSION = function(amount, p1) end,

    ---@param amount integer
    ---@param p1 Any
    ---@deprecated
    NETWORK_EARN_DISPATCH_CALL = function(amount, p1) end,

    ---@param p0 Any
    NETWORK_SPEND_BEACH_PARTY = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    NETWORK_SPEND_SUBMARINE = function(p0, p1, p2, p3, p4, p5) end,

    ---@param amount1 integer
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param p3 Any
    ---@param p4 integer
    ---@param p5 integer
    ---@param p6 integer
    ---@param amount2 integer
    ---@param p8 Any
    NETWORK_SPEND_CASINO_CLUB = function(amount1, p1, p2, p3, p4, p5, p6, amount2, p8) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BUY_SUB = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_UPGRADE_SUB = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_ISLAND_HEIST = function(p0, p1, p2, p3) end,

    ---@param amount1 integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param amount2 integer
    ---@param p5 integer
    NETWORK_EARN_ISLAND_HEIST = function(amount1, p1, p2, p3, amount2, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@deprecated
    NETWORK_EARN_BEACH_PARTY_LOST_FOUND = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FROM_ISLAND_HEIST_DJ_MISSION = function(p0, p1) end,

    ---@param amount1 integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param amount2 integer
    ---@param p4 Any
    NETWORK_SPEND_CAR_CLUB_MEMBERSHIP = function(amount1, p1, p2, amount2, p4) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    ---@deprecated
    NETWORK_SPEND_CAR_CLUB_BAR = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_AUTOSHOP_MODIFY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_CAR_CLUB_TAKEOVER = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BUY_AUTOSHOP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_UPGRADE_AUTOSHOP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_AUTOSHOP_BUSINESS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 integer
    NETWORK_EARN_AUTOSHOP_INCOME = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_EARN_CARCLUB_MEMBERSHIP = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_DAILY_VEHICLE = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_EARN_DAILY_VEHICLE_BONUS = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_TUNER_AWARD = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_EARN_TUNER_ROBBERY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_UPGRADE_AUTOSHOP = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_INTERACTION_MENU_ABILITY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 BOOL
    NETWORK_SPEND_SET_COMMON_FIELDS = function(p0, p1, p2, p3) end,

    ---@param p0 BOOL
    NETWORK_SPEND_SET_DISCOUNT = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BUY_AGENCY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_UPGRADE_AGENCY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_AGENCY = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_HIDDEN = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_SOURCE_BIKE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_COMP_SUV = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    ---@deprecated
    NETWORK_SPEND_SUV_FST_TRVL = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_SUPPLY = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BIKE_SHOP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    NETWORK_SPEND_VEHICLE_REQUESTED = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_GUNRUNNING = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AGENCY_SAFE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AWARD_CONTRACT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AGENCY_CONTRACT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AWARD_PHONE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_EARN_AGENCY_PHONE = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AWARD_FIXER_MISSION = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FIXER_PREP = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FIXER_FINALE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FIXER_AGENCY_SHORT_TRIP = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_AWARD_SHORT_TRIP = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_FIXER_RIVAL_DELIVERY = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_UPGRADE_AGENCY = function(p0, p1) end,

    ---@param amount integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param data Any*
    NETWORK_SPEND_APARTMENT_UTILITIES = function(amount, p1, p2, data) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SPEND_BUSINESS_PROPERTY_FEES = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_EARN_SIGHTSEEING_REWARD = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_EARN_BIKER_SHOP = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_EARN_BIKER = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_YOHAN_SOURCE_GOODS = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_BUY_MFGARAGE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_UPGRADE_MFGARAGE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 integer
    ---@deprecated
    _NETWORK_SPEND_BUY_SUPPLIES = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_BUY_ACID_LAB = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_UPGRADE_ACID_LAB_EQUIPMENT = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 integer
    ---@deprecated
    _NETWORK_SPEND_UPGRADE_ACID_LAB_ARMOR = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 integer
    ---@deprecated
    _NETWORK_SPEND_UPGRADE_ACID_LAB_SCOOP = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 integer
    ---@deprecated
    _NETWORK_SPEND_UPGRADE_ACID_LAB_MINES = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_RENAME_ACID_LAB = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _NETWORK_SPEND_RENAME_ACID_PRODUCT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_JUGGALO_MISSION = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_ACID_LAB = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_DAILY_STASH = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_DEAD_DROP = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_RANDOM_EVENT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_AWARD_TAXI = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_STREET_DEALER = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_SELL_ACID = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_SETUP_PARTICIPATION_ACID_LAB = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_SOURCE_PARTICIPATION_ACID_LAB = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_SELL_PARTICIPATION_ACID_LAB = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_JUGGALO_STORY_MISSION = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@deprecated
    _NETWORK_EARN_JUGGALO_STORY_MISSION_PARTICIPATION = function(p0, p1) end,

    ---JUGGALO_PHONE_MISSION...
    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_FOOLIGAN_JOB = function(p0, p1) end,

    ---JUGGALO_PHONE_MISSION_PARTICIPATION...
    ---@param p0 Any
    ---@param p1 Any
    ---@deprecated
    _NETWORK_EARN_FOOLIGAN_JOB_PARTICIPATION = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_TAXI_JOB = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_DAILY_STASH_HOUSE_COMPLETED = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    _NETWORK_EARN_DAILY_STASH_HOUSE_PARTICIPATION = function(p0, p1) end,

    ---Used for SERVICE_EARN_AVENGER_OPERATIONS & SERVICE_EARN_AVENGER_OPS_BONUS
    ---@param amount integer
    ---@param p1 integer
    _NETWORK_EARN_AVENGER = function(amount, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    _NETWORK_EARN_SMUGGLER_OPS = function(p0, p1, p2) end,

    ---@param amount integer
    ---@param p1 Any
    ---@param p2 Any
    _NETWORK_EARN_BONUS_OBJECTIVE = function(amount, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@deprecated
    _NETWORK_EARN_PROGRESS_HUB = function(p0, p1) end,

    ---@param hangarCargoSourcingPrice integer
    ---@param fromBank BOOL
    ---@param fromBankAndWallet BOOL
    ---@param cost integer
    ---@param warehouseId integer
    ---@param warehouseSlot integer
    ---@param p6 Any
    _NETWORK_SPENT_AIR_FREIGHT = function(hangarCargoSourcingPrice, fromBank, fromBankAndWallet, cost, warehouseId, warehouseSlot, p6) end,

    ---@param amount integer
    ---@param fromBank BOOL
    ---@param fromBankAndWallet BOOL
    ---@param cost integer
    _NETWORK_SPENT_SKIP_CARGO_SOURCE_SETUP = function(amount, fromBank, fromBankAndWallet, cost) end,

    ---Hash p3 = STEALTH_MODULE
    ---@param amount integer
    ---@param fromBank BOOL
    ---@param fromBankAndWallet BOOL
    ---@param p3 Hash
    _NETWORK_SPENT_STEALTH_MODULE = function(amount, fromBank, fromBankAndWallet, p3) end,

    ---Hash p3 = MISSILE_JAMMER
    ---@param amount integer
    ---@param fromBank BOOL
    ---@param fromBankAndWallet BOOL
    ---@param p3 Hash
    _NETWORK_SPENT_MISSILE_JAMMER = function(amount, fromBank, fromBankAndWallet, p3) end,

    ---@param price integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param stat Hash
    ---@param spent Hash
    ---@param p5 string
    ---@param p6 string
    ---@param data Any*
    _NETWORK_SPENT_GENERIC = function(price, p1, p2, stat, spent, p5, p6, data) end,

    ---_NETWORK_EARN_G*
    ---@param amount integer
    ---@param earn Hash
    ---@param p2 string
    ---@param p3 string
    ---@param data Any*
    _NETWORK_EARN_GENERIC = function(amount, earn, p2, p3, data) end,

    _NETWORK_CLEAR_TRANSACTION_TELEMETRY_NONCE = function() end,

    ---@return integer
    NETWORK_GET_VC_BANK_BALANCE = function() end,

    ---@param characterSlot integer
    ---@return integer
    NETWORK_GET_VC_WALLET_BALANCE = function(characterSlot) end,

    ---@return integer
    NETWORK_GET_VC_BALANCE = function() end,

    ---@return integer
    NETWORK_GET_EVC_BALANCE = function() end,

    ---@return integer
    ---@deprecated
    NETWORK_GET_PVC_BALANCE = function() end,

    ---@param characterSlot integer
    ---@return string
    ---@deprecated
    NETWORK_GET_STRING_WALLET_BALANCE = function(characterSlot) end,

    ---@return string
    NETWORK_GET_STRING_BANK_BALANCE = function() end,

    ---@param character integer
    ---@return string
    ---@deprecated
    NETWORK_GET_STRING_BANK_WALLET_BALANCE = function(character) end,

    ---Returns true if wallet balance >= amount.
    ---@param amount integer
    ---@param characterSlot integer
    ---@return BOOL
    ---@deprecated
    NETWORK_GET_CAN_SPEND_FROM_WALLET = function(amount, characterSlot) end,

    ---Returns true if bank balance >= amount.
    ---@param amount integer
    ---@return BOOL
    ---@deprecated
    NETWORK_GET_CAN_SPEND_FROM_BANK = function(amount) end,

    ---Returns true if bank balance + wallet balance >= amount.
    ---@param amount integer
    ---@param characterSlot integer
    ---@return BOOL
    NETWORK_GET_CAN_SPEND_FROM_BANK_AND_WALLET = function(amount, characterSlot) end,

    ---Retturns the same value as NETWORK_GET_REMAINING_TRANSFER_BALANCE.
    ---@return integer
    ---@deprecated
    NETWORK_GET_PVC_TRANSFER_BALANCE = function() end,

    ---Returns false if amount > wallet balance or daily transfer limit has been hit.
    ---@param amount integer
    ---@return BOOL
    ---@deprecated
    NETWORK_GET_CAN_TRANSFER_CASH = function(amount) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    ---@deprecated
    NETWORK_CAN_RECEIVE_PLAYER_CASH = function(p0, p1, p2, p3) end,

    ---Returns the same value as NETWORK_GET_PVC_TRANSFER_BALANCE.
    ---@return integer
    ---@deprecated
    NETWORK_GET_REMAINING_TRANSFER_BALANCE = function() end,

    ---Does nothing and always returns 0.
    ---@param amount integer
    ---@return integer
    WITHDRAW_VC = function(amount) end,

    ---Does nothing and always returns false.
    ---@param amount integer
    ---@return BOOL
    DEPOSIT_VC = function(amount) end,

    ---This function is hard-coded to always return 1.
    ---@param p0 Any
    ---@return BOOL
    HAS_VC_WITHDRAWAL_COMPLETED = function(p0) end,

    ---This function is hard-coded to always return 1.
    ---@param p0 Any
    ---@return BOOL
    WAS_VC_WITHDRAWAL_SUCCESSFUL = function(p0) end
}

NETSHOPPING = {
    ---@return BOOL
    NET_GAMESERVER_USE_SERVER_TRANSACTIONS = function() end,

    ---@param name string
    ---@return BOOL
    NET_GAMESERVER_CATALOG_ITEM_IS_VALID = function(name) end,

    ---@param hash Hash
    ---@return BOOL
    NET_GAMESERVER_CATALOG_ITEM_KEY_IS_VALID = function(hash) end,

    ---bool is always true in game scripts
    ---@param itemHash Hash
    ---@param categoryHash Hash
    ---@param p2 BOOL
    ---@return integer
    NET_GAMESERVER_GET_PRICE = function(itemHash, categoryHash, p2) end,

    ---@return BOOL
    NET_GAMESERVER_CATALOG_IS_VALID = function() end,

    ---@return BOOL
    NET_GAMESERVER_IS_CATALOG_CURRENT = function() end,

    ---@return Hash
    NET_GAMESERVER_GET_CATALOG_CLOUD_CRC = function() end,

    ---@return BOOL
    NET_GAMESERVER_REFRESH_SERVER_CATALOG = function() end,

    ---@param state integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_RETRIEVE_CATALOG_REFRESH_STATUS = function(state) end,

    ---@return BOOL
    NET_GAMESERVER_INIT_SESSION = function() end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_RETRIEVE_INIT_SESSION_STATUS = function(p0) end,

    ---@param charSlot integer
    ---@return BOOL
    NET_GAMESERVER_START_SESSION = function(charSlot) end,

    ---@return BOOL
    NET_GAMESERVER_START_SESSION_PENDING = function() end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_RETRIEVE_START_SESSION_STATUS = function(p0) end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_RETRIEVE_SESSION_ERROR_CODE = function(p0) end,

    ---@param charSlot integer
    ---@return BOOL
    NET_GAMESERVER_IS_SESSION_VALID = function(charSlot) end,

    ---@param p0 integer
    ---@return BOOL
    NET_GAMESERVER_CLEAR_SESSION = function(p0) end,

    ---@param charSlot integer
    ---@return BOOL
    NET_GAMESERVER_SESSION_APPLY_RECEIVED_DATA = function(charSlot) end,

    ---@return BOOL
    NET_GAMESERVER_IS_SESSION_REFRESH_PENDING = function() end,

    ---Note: only one of the arguments can be set to true at a time
    ---@param inventory BOOL
    ---@param playerbalance BOOL
    ---@return BOOL
    NET_GAMESERVER_START_SESSION_RESTART = function(inventory, playerbalance) end,

    ---@return BOOL
    NET_GAMESERVER_TRANSACTION_IN_PROGRESS = function() end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@return BOOL
    ---@return integer
    ---@return BOOL
    NET_GAMESERVER_GET_SESSION_STATE_AND_STATUS = function(p0, p1) end,

    ---@param transactionId integer
    ---@param categoryHash Hash
    ---@param actionHash Hash
    ---@param flags integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_BASKET_START = function(transactionId, categoryHash, actionHash, flags) end,

    ---@return BOOL
    NET_GAMESERVER_BASKET_END = function() end,

    ---@return BOOL
    NET_GAMESERVER_BASKET_IS_ACTIVE = function() end,

    ---@param itemData Any*
    ---@param quantity integer
    ---@return BOOL
    NET_GAMESERVER_BASKET_ADD_ITEM = function(itemData, quantity) end,

    ---@return BOOL
    NET_GAMESERVER_BASKET_IS_FULL = function() end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@return BOOL
    NET_GAMESERVER_BASKET_APPLY_SERVER_DATA = function(p0, p1) end,

    ---@param transactionId integer
    ---@return BOOL
    NET_GAMESERVER_CHECKOUT_START = function(transactionId) end,

    ---@param transactionId integer
    ---@return BOOL
    NET_GAMESERVER_CHECKOUT_PENDING = function(transactionId) end,

    ---@param transactionId integer
    ---@param categoryHash Hash
    ---@param itemHash Hash
    ---@param actionTypeHash Hash
    ---@param value integer
    ---@param flags integer
    ---@return BOOL
    ---@return integer
    NET_GAMESERVER_BEGIN_SERVICE = function(transactionId, categoryHash, itemHash, actionTypeHash, value, flags) end,

    ---@param transactionId integer
    ---@return BOOL
    NET_GAMESERVER_END_SERVICE = function(transactionId) end,

    ---@param slot integer
    ---@param transfer BOOL
    ---@param reason Hash
    ---@return BOOL
    NET_GAMESERVER_DELETE_CHARACTER = function(slot, transfer, reason) end,

    ---@return integer
    NET_GAMESERVER_DELETE_CHARACTER_GET_STATUS = function() end,

    ---@return BOOL
    NET_GAMESERVER_DELETE_SET_TELEMETRY_NONCE_SEED = function() end,

    ---@param charSlot integer
    ---@param amount integer
    ---@return BOOL
    NET_GAMESERVER_TRANSFER_BANK_TO_WALLET = function(charSlot, amount) end,

    ---@param charSlot integer
    ---@param amount integer
    ---@return BOOL
    NET_GAMESERVER_TRANSFER_WALLET_TO_BANK = function(charSlot, amount) end,

    ---Same as 0x350AA5EBC03D3BD2
    ---@return integer
    NET_GAMESERVER_TRANSFER_BANK_TO_WALLET_GET_STATUS = function() end,

    ---Same as 0x23789E777D14CE44
    ---@return integer
    NET_GAMESERVER_TRANSFER_WALLET_TO_BANK_GET_STATUS = function() end,

    ---Used to be NETWORK_SHOP_CASH_TRANSFER_SET_TELEMETRY_NONCE_SEED
    ---@return BOOL
    NET_GAMESERVER_TRANSFER_CASH_SET_TELEMETRY_NONCE_SEED = function() end,

    ---@param p0 integer
    ---@return BOOL
    NET_GAMESERVER_SET_TELEMETRY_NONCE_SEED = function(p0) end
}

NETWORK = {
    ---Online version is defined here: update\update.rpf\common\data\version.txt\
    ---\
    ---Example:\
    ---\
    ---[ONLINE_VERSION_NUMBER]\
    ---1.33\
    ---\
    ---_GET_ONLINE_VERSION() will return "1.33"
    ---@return string
    GET_ONLINE_VERSION = function() end,

    ---Returns whether the player is signed into Social Club.
    ---@return BOOL
    NETWORK_IS_SIGNED_IN = function() end,

    ---Returns whether the game is not in offline mode.\
    ---\
    ---seemed not to work for some ppl
    ---@return BOOL
    NETWORK_IS_SIGNED_ONLINE = function() end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    NETWORK_IS_NP_AVAILABLE = function() end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    NETWORK_IS_NP_PENDING = function() end,

    ---Hardcoded to return zero.\
    ---\
    ---==== PS4 specific info ====\
    ---\
    ---Returns some sort of unavailable reason:\
    ----1 = REASON_INVALID\
    --- 0 = REASON_OTHER\
    --- 1 = REASON_SYSTEM_UPDATE\
    --- 2 = REASON_GAME_UPDATE\
    --- 3 = REASON_SIGNED_OUT\
    --- 4 = REASON_AGE\
    --- 5 = REASON_CONNECTION\
    ---\
    ---=================================
    ---@return integer
    NETWORK_GET_NP_UNAVAILABLE_REASON = function() end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    NETWORK_IS_CONNETED_TO_NP_PRESENCE = function() end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    NETWORK_IS_LOGGED_IN_TO_PSN = function() end,

    ---Returns whether the signed-in user has valid Rockstar Online Services (ROS) credentials.
    ---@return BOOL
    NETWORK_HAS_VALID_ROS_CREDENTIALS = function() end,

    ---@return BOOL
    NETWORK_IS_REFRESHING_ROS_CREDENTIALS = function() end,

    ---@return BOOL
    NETWORK_IS_CLOUD_AVAILABLE = function() end,

    ---@return BOOL
    NETWORK_HAS_SOCIAL_CLUB_ACCOUNT = function() end,

    ---@return BOOL
    NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT = function() end,

    ---If you are host, returns true else returns false.
    ---@return BOOL
    NETWORK_IS_HOST = function() end,

    ---@return Player
    NETWORK_GET_HOST_PLAYER_INDEX = function() end,

    ---@return BOOL
    NETWORK_WAS_GAME_SUSPENDED = function() end,

    ---@return BOOL
    NETWORK_HAVE_ONLINE_PRIVILEGES = function() end,

    ---For the XboxPC version this returns true if XPRIVILEGE_MULTIPLAYER_SESSIONS is granted but XPRIVILEGE_CROSS_PLAY is NOT granted.\
    ---For more information, see https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/live/features/identity/privileges/concepts/live-user-privileges-client#privilege-ids-to-check\
    ---\
    ---Always returns false for non-XboxPC versions.
    ---@return BOOL
    _NETWORK_MULTIPLAYER_CROSSPLAY_NOT_ALLOWED = function() end,

    ---@return BOOL
    NETWORK_HAS_AGE_RESTRICTIONS = function() end,

    ---@param p0 integer
    ---@return BOOL
    NETWORK_HAVE_USER_CONTENT_PRIVILEGES = function(p0) end,

    ---@param p0 integer
    ---@param player Player
    ---@return BOOL
    NETWORK_HAVE_COMMUNICATION_PRIVILEGES = function(p0, player) end,

    ---Appears to be PlayStation-specific. Always returns true on other platforms if signed in with the primary user profile
    ---@return BOOL
    _NETWORK_HAVE_PLATFORM_COMMUNICATION_PRIVILEGES = function() end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@return BOOL
    NETWORK_CHECK_ONLINE_PRIVILEGES = function(p0, p1) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 BOOL
    ---@return BOOL
    NETWORK_CHECK_USER_CONTENT_PRIVILEGES = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 BOOL
    ---@return BOOL
    NETWORK_CHECK_COMMUNICATION_PRIVILEGES = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    NETWORK_CHECK_TEXT_COMMUNICATION_PRIVILEGES = function(p0, p1, p2) end,

    ---@return BOOL
    NETWORK_IS_USING_ONLINE_PROMOTION = function() end,

    ---@return BOOL
    NETWORK_SHOULD_SHOW_PROMOTION_ALERT_SCREEN = function() end,

    ---@return BOOL
    NETWORK_HAS_SOCIAL_NETWORKING_SHARING_PRIV = function() end,

    ---@return integer
    NETWORK_GET_AGE_GROUP = function() end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    NETWORK_CHECK_PRIVILEGES = function(p0, p1, p2) end,

    ---Hardcoded to return false.
    ---@return BOOL
    NETWORK_IS_PRIVILEGE_CHECK_IN_PROGRESS = function() end,

    NETWORK_SET_PRIVILEGE_CHECK_RESULT_NOT_NEEDED = function() end,

    ---Hardcoded to return true.
    ---@return BOOL
    NETWORK_RESOLVE_PRIVILEGE_USER_CONTENT = function() end,

    ---@return BOOL
    NETWORK_HAVE_PLATFORM_SUBSCRIPTION = function() end,

    ---@return BOOL
    NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = function() end,

    NETWORK_SHOW_ACCOUNT_UPGRADE_UI = function() end,

    ---@return BOOL
    NETWORK_IS_SHOWING_SYSTEM_UI_OR_RECENTLY_REQUESTED_UPSELL = function() end,

    ---@return BOOL
    NETWORK_NEED_TO_START_NEW_GAME_BUT_BLOCKED = function() end,

    ---@return BOOL
    NETWORK_CAN_BAIL = function() end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    NETWORK_BAIL = function(p0, p1, p2) end,

    NETWORK_ON_RETURN_TO_SINGLE_PLAYER = function() end,

    ---@param p0 integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    NETWORK_TRANSITION_START = function(p0, p1, p2, p3) end,

    ---@param hash Hash
    ---@param p1 integer
    ---@param p2 integer
    ---@param state integer
    ---@param p4 integer
    ---@return BOOL
    NETWORK_TRANSITION_ADD_STAGE = function(hash, p1, p2, state, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    NETWORK_TRANSITION_FINISH = function(p0, p1, p2) end,

    ---11 - Need to download tunables.\
    ---12 - Need to download background script.\
    ---\
    ---Returns 1 if the multiplayer is loaded, otherwhise 0.
    ---@param loadingState integer
    ---@return BOOL
    ---@return integer
    NETWORK_CAN_ACCESS_MULTIPLAYER = function(loadingState) end,

    ---@return BOOL
    NETWORK_CHECK_CAN_ACCESS_AND_ALERT = function() end,

    ---@param accessCode integer
    ---@return string
    _NETWORK_GET_ACCESS_CODE_LABEL_HEADING = function(accessCode) end,

    ---@param accessCode integer
    ---@return string
    _NETWORK_GET_ACCESS_CODE_LABEL_BODY = function(accessCode) end,

    ---@return BOOL
    NETWORK_IS_MULTIPLAYER_DISABLED = function() end,

    ---@return BOOL
    NETWORK_CAN_ENTER_MULTIPLAYER = function() end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    NETWORK_SESSION_DO_FREEROAM_QUICKMATCH = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@return BOOL
    NETWORK_SESSION_DO_FRIEND_MATCHMAKING = function(p0, p1, p2) end,

    ---p4 seems to be unused in 1.60/build 2628
    ---@param crewId integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param maxPlayers integer
    ---@return BOOL
    NETWORK_SESSION_DO_CREW_MATCHMAKING = function(crewId, p1, p2, maxPlayers) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@return BOOL
    NETWORK_SESSION_DO_ACTIVITY_QUICKMATCH = function(p0, p1, p2, p3, p4) end,

    ---Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.
    ---@param p0 integer
    ---@param maxPlayers integer
    ---@param p2 BOOL
    ---@return BOOL
    NETWORK_SESSION_HOST = function(p0, maxPlayers, p2) end,

    ---@param p0 integer
    ---@param maxPlayers integer
    ---@return BOOL
    NETWORK_SESSION_HOST_CLOSED = function(p0, maxPlayers) end,

    ---Does nothing in online but in offline it will cause the screen to fade to black. Nothing happens past then, the screen will sit at black until you restart GTA. Other stuff must be needed to actually host a session.
    ---@param p0 integer
    ---@param maxPlayers integer
    ---@return BOOL
    NETWORK_SESSION_HOST_FRIENDS_ONLY = function(p0, maxPlayers) end,

    ---@return BOOL
    NETWORK_SESSION_IS_CLOSED_FRIENDS = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_CLOSED_CREW = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_SOLO = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_PRIVATE = function() end,

    ---@param leaveFlags integer
    ---@param leaveReason integer
    ---@return BOOL
    _NETWORK_SESSION_LEAVE_INCLUDING_REASON = function(leaveFlags, leaveReason) end,

    ---@param p0 Any
    ---@return BOOL
    NETWORK_SESSION_LEAVE = function(p0) end,

    ---Only works as host.
    ---@param player Player
    NETWORK_SESSION_KICK_PLAYER = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_SESSION_GET_KICK_VOTE = function(player) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    NETWORK_SESSION_RESERVE_SLOTS_TRANSITION = function(p0, p1, p2) end,

    ---@return BOOL
    NETWORK_JOIN_PREVIOUSLY_FAILED_SESSION = function() end,

    ---@return BOOL
    NETWORK_JOIN_PREVIOUSLY_FAILED_TRANSITION = function() end,

    ---@param matchmakingGroup integer
    NETWORK_SESSION_SET_MATCHMAKING_GROUP = function(matchmakingGroup) end,

    ---playerType is an unsigned int from 0 to 4\
    ---0 = regular joiner\
    ---4 = spectator
    ---@param playerType integer
    ---@param playerCount integer
    NETWORK_SESSION_SET_MATCHMAKING_GROUP_MAX = function(playerType, playerCount) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_SESSION_GET_MATCHMAKING_GROUP_FREE = function(p0) end,

    ---groupId range: [0, 4]
    ---@param groupId integer
    NETWORK_SESSION_ADD_ACTIVE_MATCHMAKING_GROUP = function(groupId) end,

    ---@param p0 Any
    NETWORK_SESSION_SET_UNIQUE_CREW_LIMIT = function(p0) end,

    ---@return integer
    NETWORK_SESSION_GET_UNIQUE_CREW_LIMIT = function() end,

    ---@param p0 Any
    NETWORK_SESSION_SET_UNIQUE_CREW_LIMIT_TRANSITION = function(p0) end,

    ---@param p0 BOOL
    NETWORK_SESSION_SET_UNIQUE_CREW_ONLY_CREWS_TRANSITION = function(p0) end,

    ---@param p0 Any
    NETWORK_SESSION_SET_CREW_LIMIT_MAX_MEMBERS_TRANSITION = function(p0) end,

    ---@param p0 BOOL
    NETWORK_SESSION_SET_MATCHMAKING_PROPERTY_ID = function(p0) end,

    ---p0 in the decompiled scripts is always the stat mesh_texblend * 0.07 to int
    ---@param p0 integer
    NETWORK_SESSION_SET_MATCHMAKING_MENTAL_STATE = function(p0) end,

    ---@param num integer
    NETWORK_SESSION_SET_NUM_BOSSES = function(num) end,

    NETWORK_SESSION_SET_SCRIPT_VALIDATE_JOIN = function() end,

    ---@param p0 BOOL
    NETWORK_SESSION_VALIDATE_JOIN = function(p0) end,

    ---..
    ---@param p0 integer
    ---@param p1 integer
    ---@return integer
    NETWORK_ADD_FOLLOWERS = function(p0, p1) end,

    NETWORK_CLEAR_FOLLOWERS = function() end,

    ---@param hours integer
    ---@param minutes integer
    ---@param seconds integer
    ---@return integer
    ---@return integer
    ---@return integer
    NETWORK_GET_GLOBAL_MULTIPLAYER_CLOCK = function(hours, minutes, seconds) end,

    ---@param p0 Any
    NETWORK_SESSION_SET_GAMEMODE = function(p0) end,

    ---@return integer
    NETWORK_SESSION_GET_HOST_AIM_PREFERENCE = function() end,

    ---@param crewId integer
    ---@return BOOL
    NETWORK_FIND_GAMERS_IN_CREW = function(crewId) end,

    ---Uses attributes to find players with similar stats. Upper/Lower limit must be above zero or the fallback limit +/-0.1 is used.\
    ---There can be up to 15 attributes, they are as follows:\
    ---\
    ---0 = Races\
    ---1 = Parachuting\
    ---2 = Horde\
    ---3 = Darts\
    ---4 = Arm Wrestling\
    ---5 = Tennis\
    ---6 = Golf\
    ---7 = Shooting Range\
    ---8 = Deathmatch\
    ---9 = MPPLY_MCMWIN/MPPLY_CRMISSION
    ---@param attribute integer
    ---@param fallbackLimit number
    ---@param lowerLimit number
    ---@param upperLimit number
    ---@return BOOL
    NETWORK_FIND_MATCHED_GAMERS = function(attribute, fallbackLimit, lowerLimit, upperLimit) end,

    ---@return BOOL
    NETWORK_IS_FINDING_GAMERS = function() end,

    ---@return BOOL
    NETWORK_DID_FIND_GAMERS_SUCCEED = function() end,

    ---@return integer
    NETWORK_GET_NUM_FOUND_GAMERS = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@return BOOL
    NETWORK_GET_FOUND_GAMER = function(p0, p1) end,

    NETWORK_CLEAR_FOUND_GAMERS = function() end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_QUEUE_GAMER_FOR_STATUS = function(p0) end,

    ---@return BOOL
    NETWORK_GET_GAMER_STATUS_FROM_QUEUE = function() end,

    ---@return BOOL
    NETWORK_IS_GETTING_GAMER_STATUS = function() end,

    ---@return BOOL
    NETWORK_DID_GET_GAMER_STATUS_SUCCEED = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@return BOOL
    NETWORK_GET_GAMER_STATUS_RESULT = function(p0, p1) end,

    NETWORK_CLEAR_GET_GAMER_STATUS = function() end,

    NETWORK_SESSION_JOIN_INVITE = function() end,

    NETWORK_SESSION_CANCEL_INVITE = function() end,

    NETWORK_SESSION_FORCE_CANCEL_INVITE = function() end,

    ---@return BOOL
    NETWORK_HAS_PENDING_INVITE = function() end,

    ---@return BOOL
    NETWORK_HAS_CONFIRMED_INVITE = function() end,

    ---Triggers a CEventNetworkInviteConfirmed event
    ---@return BOOL
    NETWORK_REQUEST_INVITE_CONFIRMED_EVENT = function() end,

    ---@return BOOL
    NETWORK_SESSION_WAS_INVITED = function() end,

    ---@param gamerHandle Any*
    NETWORK_SESSION_GET_INVITER = function(gamerHandle) end,

    ---Seems to be true while "Getting GTA Online session details" shows up.
    ---@return BOOL
    NETWORK_SESSION_IS_AWAITING_INVITE_RESPONSE = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_DISPLAYING_INVITE_CONFIRMATION = function() end,

    ---@param toggle BOOL
    NETWORK_SUPPRESS_INVITE = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_BLOCK_INVITES = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_BLOCK_JOIN_QUEUE_INVITES = function(toggle) end,

    ---@param p0 BOOL
    NETWORK_SET_CAN_RECEIVE_RS_INVITES = function(p0) end,

    NETWORK_STORE_INVITE_THROUGH_RESTART = function() end,

    ---@param p0 BOOL
    NETWORK_ALLOW_INVITE_PROCESS_IN_PLAYER_SWITCH = function(p0) end,

    ---@param toggle BOOL
    NETWORK_SET_SCRIPT_READY_FOR_EVENTS = function(toggle) end,

    ---@return BOOL
    NETWORK_IS_OFFLINE_INVITE_PENDING = function() end,

    NETWORK_CLEAR_OFFLINE_INVITE_PENDING = function() end,

    ---Retrieves the failed invite join alert reason
    ---@return string
    _NETWORK_INVITE_GET_JOIN_FAIL_REASON = function() end,

    ---Clears the failed invite join alert reason
    _NETWORK_INVITE_CLEAR_JOIN_FAIL_REASON = function() end,

    ---Loads up the map that is loaded when beeing in mission creator\
    ---Player gets placed in a mix between online/offline mode\
    ---p0 is always 2 in R* scripts.\
    ---\
    ---Appears to be patched in gtav b757 (game gets terminated) alonside with most other network natives to prevent online modding ~ghost30812
    ---@param p0 integer
    NETWORK_SESSION_HOST_SINGLE_PLAYER = function(p0) end,

    NETWORK_SESSION_LEAVE_SINGLE_PLAYER = function() end,

    ---@return BOOL
    NETWORK_IS_GAME_IN_PROGRESS = function() end,

    ---@return BOOL
    NETWORK_IS_SESSION_ACTIVE = function() end,

    ---@return BOOL
    NETWORK_IS_IN_SESSION = function() end,

    ---Hardcoded to return 0.
    ---@return BOOL
    _NETWORK_IS_AMERICAS_VERSION = function() end,

    ---This checks if player is playing on gta online or not.\
    ---Please add an if and block your mod if this is "true".
    ---@return BOOL
    NETWORK_IS_SESSION_STARTED = function() end,

    ---@return BOOL
    NETWORK_IS_SESSION_BUSY = function() end,

    ---@return BOOL
    NETWORK_CAN_SESSION_END = function() end,

    ---@return integer
    NETWORK_GET_GAME_MODE = function() end,

    ---@param toggle BOOL
    NETWORK_SESSION_MARK_VISIBLE = function(toggle) end,

    ---@return BOOL
    NETWORK_SESSION_IS_VISIBLE = function() end,

    ---@param toggle BOOL
    NETWORK_SESSION_BLOCK_JOIN_REQUESTS = function(toggle) end,

    ---num player slots allowed in session, seems to work? 32 max
    ---@param slots integer
    ---@param p1 BOOL
    NETWORK_SESSION_CHANGE_SLOTS = function(slots, p1) end,

    ---@return integer
    NETWORK_SESSION_GET_PRIVATE_SLOTS = function() end,

    ---@return BOOL
    NETWORK_SESSION_VOICE_HOST = function() end,

    ---@return BOOL
    NETWORK_SESSION_VOICE_LEAVE = function() end,

    ---@param gamerHandle Any*
    NETWORK_SESSION_VOICE_CONNECT_TO_PLAYER = function(gamerHandle) end,

    ---@param p0 BOOL
    ---@param p1 integer
    NETWORK_SESSION_VOICE_RESPOND_TO_REQUEST = function(p0, p1) end,

    ---@param timeout integer
    NETWORK_SESSION_VOICE_SET_TIMEOUT = function(timeout) end,

    ---@return BOOL
    NETWORK_SESSION_IS_IN_VOICE_SESSION = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_VOICE_SESSION_ACTIVE = function() end,

    ---@return BOOL
    NETWORK_SESSION_IS_VOICE_SESSION_BUSY = function() end,

    ---Message is limited to 64 characters.
    ---@param message string
    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_SEND_TEXT_MESSAGE = function(message, gamerHandle) end,

    ---@param toggle BOOL
    NETWORK_SET_ACTIVITY_SPECTATOR = function(toggle) end,

    ---@return BOOL
    NETWORK_IS_ACTIVITY_SPECTATOR = function() end,

    ---@param p0 Any
    NETWORK_SET_ACTIVITY_PLAYER_MAX = function(p0) end,

    ---@param maxSpectators integer
    NETWORK_SET_ACTIVITY_SPECTATOR_MAX = function(maxSpectators) end,

    ---@param p0 BOOL
    ---@return integer
    NETWORK_GET_ACTIVITY_PLAYER_NUM = function(p0) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_ACTIVITY_SPECTATOR_FROM_HANDLE = function(gamerHandle) end,

    ---p0: Unknown int\
    ---p1: Unknown int\
    ---p2: Unknown int\
    ---p3: Unknown int\
    ---p4: Unknown always 0 in decompiled scripts\
    ---p5: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.\
    ---p6: BOOL purpose unknown, both 0 and 1 are used in decompiled scripts.\
    ---p7: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.\
    ---p8: Unknown int, it's an int according to decompiled scripts, however the value is always 0 or 1.\
    ---p9: Unknown int, sometimes 0, but also 32768 or 16384 appear in decompiled scripst, maybe a flag of some sort?\
    ---\
    ---From what I can tell it looks like it does the following:\
    ---Creates/hosts a new transition to another online session, using this in FiveM will result in other players being disconencted from the server/preventing them from joining. This is most likely because I entered the wrong session parameters since they're pretty much all unknown right now.\
    ---You also need to use `NetworkJoinTransition(Player player)` and `NetworkLaunchTransition()`.
    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 Any
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 integer
    ---@param p8 Any
    ---@param p9 integer
    ---@return BOOL
    NETWORK_HOST_TRANSITION = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@return BOOL
    NETWORK_DO_TRANSITION_QUICKMATCH = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@return BOOL
    NETWORK_DO_TRANSITION_QUICKMATCH_ASYNC = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any*
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@return BOOL
    NETWORK_DO_TRANSITION_QUICKMATCH_WITH_GROUP = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@return BOOL
    NETWORK_JOIN_GROUP_ACTIVITY = function() end,

    NETWORK_CLEAR_GROUP_ACTIVITY = function() end,

    NETWORK_RETAIN_ACTIVITY_GROUP = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_CLOSED_FRIENDS = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_CLOSED_CREW = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_SOLO = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_PRIVATE = function() end,

    ---@return integer
    NETWORK_GET_NUM_TRANSITION_NON_ASYNC_GAMERS = function() end,

    ---@param p0 BOOL
    NETWORK_MARK_AS_PREFERRED_ACTIVITY = function(p0) end,

    ---@param p0 BOOL
    NETWORK_MARK_AS_WAITING_ASYNC = function(p0) end,

    ---@param p0 Any
    NETWORK_SET_IN_PROGRESS_FINISH_TIME = function(p0) end,

    ---@param p0 Any*
    NETWORK_SET_TRANSITION_CREATOR_HANDLE = function(p0) end,

    NETWORK_CLEAR_TRANSITION_CREATOR_HANDLE = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@return BOOL
    NETWORK_INVITE_GAMERS_TO_TRANSITION = function(p0, p1) end,

    ---@param gamerHandle Any*
    NETWORK_SET_GAMER_INVITED_TO_TRANSITION = function(gamerHandle) end,

    ---@return BOOL
    NETWORK_LEAVE_TRANSITION = function() end,

    ---@return BOOL
    NETWORK_LAUNCH_TRANSITION = function() end,

    ---Appears to set whether a transition should be started when the session is migrating.
    ---@param toggle BOOL
    NETWORK_SET_DO_NOT_LAUNCH_FROM_JOIN_AS_MIGRATED_HOST = function(toggle) end,

    NETWORK_CANCEL_TRANSITION_MATCHMAKING = function() end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    NETWORK_BAIL_TRANSITION = function(p0, p1, p2) end,

    ---@param p0 BOOL
    ---@param maxPlayers integer
    ---@return BOOL
    NETWORK_DO_TRANSITION_TO_GAME = function(p0, maxPlayers) end,

    ---@param p0 BOOL
    ---@param maxPlayers integer
    ---@param p2 BOOL
    ---@return BOOL
    NETWORK_DO_TRANSITION_TO_NEW_GAME = function(p0, maxPlayers, p2) end,

    ---p2 is true 3/4 of the occurrences I found.\
    ---'players' is the number of players for a session. On PS3/360 it's always 18. On PC it's 32.
    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 BOOL
    ---@param players integer
    ---@param p4 BOOL
    ---@return BOOL
    NETWORK_DO_TRANSITION_TO_FREEMODE = function(p0, p1, p2, players, p4) end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param players integer
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@return BOOL
    NETWORK_DO_TRANSITION_TO_NEW_FREEMODE = function(p0, p1, players, p3, p4, p5) end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_TO_GAME = function() end,

    ---Returns count.
    ---@param data Any*
    ---@param dataCount integer
    ---@return integer
    NETWORK_GET_TRANSITION_MEMBERS = function(data, dataCount) end,

    ---@param p0 integer
    ---@param p1 integer
    NETWORK_APPLY_TRANSITION_PARAMETER = function(p0, p1) end,

    ---@param p0 integer
    ---@param string string
    ---@param p2 BOOL
    NETWORK_APPLY_TRANSITION_PARAMETER_STRING = function(p0, string, p2) end,

    ---@param gamerHandle Any*
    ---@param p1 string
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 BOOL
    ---@return BOOL
    NETWORK_SEND_TRANSITION_GAMER_INSTRUCTION = function(gamerHandle, p1, p2, p3, p4) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_MARK_TRANSITION_GAMER_AS_FULLY_JOINED = function(p0) end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_HOST = function() end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_TRANSITION_HOST_FROM_HANDLE = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_GET_TRANSITION_HOST = function(gamerHandle) end,

    ---@return BOOL
    NETWORK_IS_IN_TRANSITION = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_STARTED = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_BUSY = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_MATCHMAKING = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_LEAVE_POSTPONED = function() end,

    ---@param p0 Any
    NETWORK_TRANSITION_SET_IN_PROGRESS = function(p0) end,

    ---@param p0 Any
    NETWORK_TRANSITION_SET_CONTENT_CREATOR = function(p0) end,

    ---@param p0 Any
    NETWORK_TRANSITION_SET_ACTIVITY_ISLAND = function(p0) end,

    NETWORK_OPEN_TRANSITION_MATCHMAKING = function() end,

    NETWORK_CLOSE_TRANSITION_MATCHMAKING = function() end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_OPEN_TO_MATCHMAKING = function() end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    NETWORK_SET_TRANSITION_VISIBILITY_LOCK = function(p0, p1) end,

    ---@return BOOL
    NETWORK_IS_TRANSITION_VISIBILITY_LOCKED = function() end,

    ---@param p0 Any
    NETWORK_SET_TRANSITION_ACTIVITY_ID = function(p0) end,

    ---@param p0 Any
    ---@param p1 BOOL
    NETWORK_CHANGE_TRANSITION_SLOTS = function(p0, p1) end,

    ---@param p0 BOOL
    NETWORK_TRANSITION_BLOCK_JOIN_REQUESTS = function(p0) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_HAS_PLAYER_STARTED_TRANSITION = function(player) end,

    ---@param p0 Any
    ---@return BOOL
    NETWORK_ARE_TRANSITION_DETAILS_VALID = function(p0) end,

    ---int handle[76];\
    ---          NETWORK_HANDLE_FROM_FRIEND(iSelectedPlayer, &handle[0], 13);\
    ---          Player uVar2 = NETWORK_GET_PLAYER_FROM_GAMER_HANDLE(&handle[0]);\
    ---          NETWORK_JOIN_TRANSITION(uVar2);\
    ---nothing doin.
    ---@param player Player
    ---@return BOOL
    NETWORK_JOIN_TRANSITION = function(player) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_HAS_INVITED_GAMER_TO_TRANSITION = function(p0) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_HAS_TRANSITION_INVITE_BEEN_ACKED = function(p0) end,

    ---@return BOOL
    NETWORK_IS_ACTIVITY_SESSION = function() end,

    NETWORK_DISABLE_REALTIME_MULTIPLAYER = function() end,

    ---Does nothing. It's just a nullsub.
    ---@param toggle BOOL
    NETWORK_SET_PRESENCE_SESSION_INVITES_BLOCKED = function(toggle) end,

    ---@param gamerHandle Any*
    ---@param p1 string
    ---@param dataCount integer
    ---@param p3 integer
    ---@return BOOL
    NETWORK_SEND_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) end,

    ---@param gamerHandle Any*
    ---@param p1 string
    ---@param dataCount integer
    ---@param p3 integer
    ---@return BOOL
    NETWORK_SEND_TRANSITION_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) end,

    ---Contains the string "NETWORK_SEND_PRESENCE_TRANSITION_INVITE" but so does 0xC116FF9B4D488291; seems to fit alphabetically here, tho.
    ---@param gamerHandle Any*
    ---@param p1 string
    ---@param dataCount integer
    ---@param p3 integer
    ---@return BOOL
    NETWORK_SEND_IMPORTANT_TRANSITION_INVITE_VIA_PRESENCE = function(gamerHandle, p1, dataCount, p3) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_GET_PRESENCE_INVITE_INDEX_BY_ID = function(p0) end,

    ---@return integer
    NETWORK_GET_NUM_PRESENCE_INVITES = function() end,

    ---@param p0 integer
    ---@return BOOL
    NETWORK_ACCEPT_PRESENCE_INVITE = function(p0) end,

    ---@param p0 integer
    ---@return BOOL
    NETWORK_REMOVE_PRESENCE_INVITE = function(p0) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_GET_PRESENCE_INVITE_ID = function(p0) end,

    ---@param p0 integer
    ---@return string
    NETWORK_GET_PRESENCE_INVITE_INVITER = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@return BOOL
    NETWORK_GET_PRESENCE_INVITE_HANDLE = function(p0, p1) end,

    ---@param p0 Any
    ---@return integer
    NETWORK_GET_PRESENCE_INVITE_SESSION_ID = function(p0) end,

    ---@param p0 integer
    ---@return string
    NETWORK_GET_PRESENCE_INVITE_CONTENT_ID = function(p0) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_GET_PRESENCE_INVITE_PLAYLIST_LENGTH = function(p0) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_GET_PRESENCE_INVITE_PLAYLIST_CURRENT = function(p0) end,

    ---@param p0 integer
    ---@return BOOL
    NETWORK_GET_PRESENCE_INVITE_FROM_ADMIN = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    NETWORK_GET_PRESENCE_INVITE_IS_TOURNAMENT = function(p0) end,

    ---@return BOOL
    NETWORK_HAS_FOLLOW_INVITE = function() end,

    ---@return BOOL
    NETWORK_ACTION_FOLLOW_INVITE = function() end,

    ---@return BOOL
    NETWORK_CLEAR_FOLLOW_INVITE = function() end,

    NETWORK_REMOVE_AND_CANCEL_ALL_INVITES = function() end,

    ---@param p0 Any*
    NETWORK_REMOVE_TRANSITION_INVITE = function(p0) end,

    NETWORK_REMOVE_ALL_TRANSITION_INVITE = function() end,

    NETWORK_REMOVE_AND_CANCEL_ALL_TRANSITION_INVITES = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 Any*
    ---@param p3 Any
    ---@return BOOL
    NETWORK_INVITE_GAMERS = function(p0, p1, p2, p3) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_HAS_INVITED_GAMER = function(p0) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_HAS_MADE_INVITE_DECISION = function(gamerHandle) end,

    ---@param p0 Any
    ---@return integer
    NETWORK_GET_INVITE_REPLY_STATUS = function(p0) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_GET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU = function(p0) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_SET_CURRENTLY_SELECTED_GAMER_HANDLE_FROM_INVITE_MENU = function(p0) end,

    ---@param p0 Any*
    NETWORK_SET_INVITE_ON_CALL_FOR_INVITE_MENU = function(p0) end,

    ---@param p0 integer
    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CHECK_DATA_MANAGER_SUCCEEDED_FOR_HANDLE = function(p0, gamerHandle) end,

    ---@param p0 Any
    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CHECK_DATA_MANAGER_FOR_HANDLE = function(p0, gamerHandle) end,

    ---@param p0 Any*
    ---@param p1 Any*
    NETWORK_SET_INVITE_FAILED_MESSAGE_FOR_INVITE_MENU = function(p0, p1) end,

    ---@param gamerHandle Any*
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    FILLOUT_PM_PLAYER_LIST = function(gamerHandle, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    FILLOUT_PM_PLAYER_LIST_WITH_NAMES = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@return BOOL
    REFRESH_PLAYER_LIST_STATS = function(p0) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_SET_CURRENT_DATA_MANAGER_HANDLE = function(p0) end,

    ---Hardcoded to return false.
    ---@return BOOL
    NETWORK_IS_IN_PLATFORM_PARTY = function() end,

    ---@return integer
    NETWORK_GET_PLATFORM_PARTY_MEMBER_COUNT = function() end,

    ---@param data Any*
    ---@param dataSize integer
    ---@return integer
    NETWORK_GET_PLATFORM_PARTY_MEMBERS = function(data, dataSize) end,

    ---Hardcoded to return false.
    ---@return BOOL
    NETWORK_IS_IN_PLATFORM_PARTY_CHAT = function() end,

    ---This would be nice to see if someone is in party chat, but 2 sad notes.\
    ---1) It only becomes true if said person is speaking in that party at the time.\
    ---2) It will never, become true unless you are in that party with said person.
    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_CHATTING_IN_PLATFORM_PARTY = function(gamerHandle) end,

    ---@return BOOL
    NETWORK_CAN_QUEUE_FOR_PREVIOUS_SESSION_JOIN = function() end,

    ---@return BOOL
    NETWORK_IS_QUEUING_FOR_SESSION_JOIN = function() end,

    NETWORK_CLEAR_QUEUED_JOIN_REQUEST = function() end,

    NETWORK_SEND_QUEUED_JOIN_REQUEST = function() end,

    NETWORK_REMOVE_ALL_QUEUED_JOIN_REQUESTS = function() end,

    ---@param seed integer
    NETWORK_SEED_RANDOM_NUMBER_GENERATOR = function(seed) end,

    ---@return integer
    NETWORK_GET_RANDOM_INT = function() end,

    ---Same as GET_RANDOM_INT_IN_RANGE
    ---@param rangeStart integer
    ---@param rangeEnd integer
    ---@return integer
    NETWORK_GET_RANDOM_INT_RANGED = function(rangeStart, rangeEnd) end,

    ---@param rangeStart number
    ---@param rangeEnd number
    ---@return number
    _NETWORK_GET_RANDOM_FLOAT_RANGED = function(rangeStart, rangeEnd) end,

    ---@return BOOL
    NETWORK_PLAYER_IS_CHEATER = function() end,

    ---@return integer
    NETWORK_PLAYER_GET_CHEATER_REASON = function() end,

    ---@return BOOL
    NETWORK_PLAYER_IS_BADSPORT = function() end,

    ---@param player Player
    ---@param a integer
    ---@param b integer
    ---@return BOOL
    ---@deprecated
    REMOTE_CHEATER_PLAYER_DETECTED = function(player, a, b) end,

    ---@param gamerHandle Any*
    ---@param event integer
    ---@param amountReceived integer
    ---@return BOOL
    BAD_SPORT_PLAYER_LEFT_DETECTED = function(gamerHandle, event, amountReceived) end,

    ---@param modelHash Hash
    ---@param p1 Any
    NETWORK_ADD_INVALID_OBJECT_MODEL = function(modelHash, p1) end,

    ---@param modelHash Hash
    ---@deprecated
    NETWORK_REMOVE_INVALID_OBJECT_MODEL = function(modelHash) end,

    NETWORK_CLEAR_INVALID_OBJECT_MODELS = function() end,

    ---@param ped Ped
    ---@param p1 integer
    NETWORK_APPLY_PED_SCAR_DATA = function(ped, p1) end,

    ---@param maxNumMissionParticipants integer
    ---@param p1 BOOL
    ---@param instanceId integer
    NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function(maxNumMissionParticipants, p1, instanceId) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return BOOL
    NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function(p0, p1, p2) end,

    ---@return BOOL
    NETWORK_GET_THIS_SCRIPT_IS_NETWORK_SCRIPT = function() end,

    ---@return integer
    NETWORK_GET_MAX_NUM_PARTICIPANTS = function() end,

    ---@return integer
    NETWORK_GET_NUM_PARTICIPANTS = function() end,

    ---@return integer
    NETWORK_GET_SCRIPT_STATUS = function() end,

    ---@param vars integer
    ---@param numVars integer
    ---@param debugName string
    ---@return integer
    NETWORK_REGISTER_HOST_BROADCAST_VARIABLES = function(vars, numVars, debugName) end,

    ---@param vars integer
    ---@param numVars integer
    ---@param debugName string
    ---@return integer
    NETWORK_REGISTER_PLAYER_BROADCAST_VARIABLES = function(vars, numVars, debugName) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_REGISTER_HIGH_FREQUENCY_HOST_BROADCAST_VARIABLES = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    NETWORK_REGISTER_HIGH_FREQUENCY_PLAYER_BROADCAST_VARIABLES = function(p0, p1, p2) end,

    NETWORK_FINISH_BROADCASTING_DATA = function() end,

    ---@param scriptNameHash Hash
    ---@param instance integer
    ---@param positionHash Hash
    ---@param handlerNum integer
    ---@return integer
    ---@deprecated
    _NETWORK_GET_HOST_BROADCAST_DATA_SIZE_UNSYNCED = function(scriptNameHash, instance, positionHash, handlerNum) end,

    ---@param scriptNameHash Hash
    ---@param instance integer
    ---@param positionHash Hash
    ---@param handlerNum integer
    ---@return integer
    ---@deprecated
    _NETWORK_GET_PLAYER_BROADCAST_DATA_SIZE_UNSYNCED = function(scriptNameHash, instance, positionHash, handlerNum) end,

    ---@param scriptNameHash Hash
    ---@param instance integer
    ---@param positionHash Hash
    ---@param handlerNum integer
    ---@return integer
    ---@deprecated
    _NETWORK_GET_BROADCAST_DATA_HOST_UPDATE_SIZE = function(scriptNameHash, instance, positionHash, handlerNum) end,

    ---@param scriptNameHash Hash
    ---@param instance integer
    ---@param positionHash Hash
    ---@param handlerNum integer
    ---@return integer
    ---@deprecated
    _NETWORK_GET_BROADCAST_DATA_PLAYER_UPDATE_SIZE = function(scriptNameHash, instance, positionHash, handlerNum) end,

    ---@return BOOL
    NETWORK_HAS_RECEIVED_HOST_BROADCAST_DATA = function() end,

    ---@param player Player
    ---@return Player
    NETWORK_GET_PLAYER_INDEX = function(player) end,

    ---@param index integer
    ---@return integer
    NETWORK_GET_PARTICIPANT_INDEX = function(index) end,

    ---Returns the Player associated to a given Ped when in an online session.
    ---@param ped Ped
    ---@return Player
    NETWORK_GET_PLAYER_INDEX_FROM_PED = function(ped) end,

    ---Returns the amount of players connected in the current session. Only works when connected to a session/server.
    ---@return integer
    NETWORK_GET_NUM_CONNECTED_PLAYERS = function() end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_CONNECTED = function(player) end,

    ---@return integer
    NETWORK_GET_TOTAL_NUM_PLAYERS = function() end,

    ---@param p0 integer
    ---@return BOOL
    NETWORK_IS_PARTICIPANT_ACTIVE = function(p0) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_ACTIVE = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_A_PARTICIPANT = function(player) end,

    ---@return BOOL
    NETWORK_IS_HOST_OF_THIS_SCRIPT = function() end,

    ---@return Player
    NETWORK_GET_HOST_OF_THIS_SCRIPT = function() end,

    ---scriptName examples:\
    ---"freemode", "AM_CR_SecurityVan", ...\
    ---\
    ---Most of the time, these values are used:\
    ---instance_id = -1\
    ---position_hash = 0
    ---@param scriptName string
    ---@param instance_id integer
    ---@param position_hash integer
    ---@return Player
    NETWORK_GET_HOST_OF_SCRIPT = function(scriptName, instance_id, position_hash) end,

    ---@param threadId integer
    ---@return Player
    NETWORK_GET_HOST_OF_THREAD = function(threadId) end,

    NETWORK_SET_MISSION_FINISHED = function() end,

    ---@param scriptName string
    ---@param instance_id integer
    ---@param p2 BOOL
    ---@param position_hash integer
    ---@return BOOL
    NETWORK_IS_SCRIPT_ACTIVE = function(scriptName, instance_id, p2, position_hash) end,

    ---@param scriptHash Hash
    ---@param p1 integer
    ---@param p2 BOOL
    ---@param p3 integer
    ---@return BOOL
    NETWORK_IS_SCRIPT_ACTIVE_BY_HASH = function(scriptHash, p1, p2, p3) end,

    ---@param threadId integer
    ---@return BOOL
    NETWORK_IS_THREAD_A_NETWORK_SCRIPT = function(threadId) end,

    ---@param scriptName string
    ---@param instance_id integer
    ---@param position_hash integer
    ---@return integer
    NETWORK_GET_NUM_SCRIPT_PARTICIPANTS = function(scriptName, instance_id, position_hash) end,

    ---@return integer
    NETWORK_GET_INSTANCE_ID_OF_THIS_SCRIPT = function() end,

    ---@return Hash
    NETWORK_GET_POSITION_HASH_OF_THIS_SCRIPT = function() end,

    ---@param player Player
    ---@param script string
    ---@param instance_id integer
    ---@return BOOL
    NETWORK_IS_PLAYER_A_PARTICIPANT_ON_SCRIPT = function(player, script, instance_id) end,

    NETWORK_PREVENT_SCRIPT_HOST_MIGRATION = function() end,

    NETWORK_REQUEST_TO_BE_HOST_OF_THIS_SCRIPT = function() end,

    ---Return the local Participant ID
    ---@return Player
    PARTICIPANT_ID = function() end,

    ---Return the local Participant ID.\
    ---\
    ---This native is exactly the same as 'PARTICIPANT_ID' native.
    ---@return integer
    PARTICIPANT_ID_TO_INT = function() end,

    ---@param player Player
    ---@param weaponHash Hash
    ---@return Player
    ---@return Hash
    NETWORK_GET_KILLER_OF_PLAYER = function(player, weaponHash) end,

    ---@param netId integer
    ---@param weaponHash Hash
    ---@return Player
    ---@return Hash
    NETWORK_GET_DESTROYER_OF_NETWORK_ID = function(netId, weaponHash) end,

    ---@param entity Entity
    ---@param weaponHash Hash
    ---@return Player
    ---@return Hash
    NETWORK_GET_DESTROYER_OF_ENTITY = function(entity, weaponHash) end,

    ---NETWORK_GET_ASSISTED_DAMAGE_OF_ENTITY that ensures the entity is dead (IS_ENTITY_DEAD)
    ---@param player Player
    ---@param entity Entity
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    NETWORK_GET_ASSISTED_KILL_OF_ENTITY = function(player, entity, p2) end,

    ---@param player Player
    ---@param entity Entity
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    NETWORK_GET_ASSISTED_DAMAGE_OF_ENTITY = function(player, entity, p2) end,

    ---@param player Player
    ---@param weaponHash Hash
    ---@return Entity
    ---@return Hash
    NETWORK_GET_ENTITY_KILLER_OF_PLAYER = function(player, weaponHash) end,

    ---@param missionId string
    NETWORK_SET_CURRENT_PUBLIC_CONTENT_ID = function(missionId) end,

    ---@param newChatOption integer
    NETWORK_SET_CURRENT_CHAT_OPTION = function(newChatOption) end,

    ---mpSettingSpawn:\
    ---\
    ---enum eMpSettingSpawn\
    ---{\
    ---	MP_SETTING_SPAWN_NULL,\
    ---	MP_SETTING_SPAWN_PROPERTY,\
    ---	MP_SETTING_SPAWN_LAST_POSITION,\
    ---	MP_SETTING_SPAWN_GARAGE,\
    ---	MP_SETTING_SPAWN_RANDOM,\
    ---	MP_SETTING_SPAWN_PRIVATE_YACHT,\
    ---	MP_SETTING_SPAWN_OFFICE,\
    ---	MP_SETTING_SPAWN_CLUBHOUSE,\
    ---	MP_SETTING_SPAWN_IE_WAREHOUSE,\
    ---	MP_SETTING_SPAWN_BUNKER,\
    ---	MP_SETTING_SPAWN_HANGAR,\
    ---	MP_SETTING_SPAWN_DEFUNCT_BASE,\
    ---	MP_SETTING_SPAWN_NIGHTCLUB,\
    ---	MP_SETTING_SPAWN_ARENA_GARAGE,\
    ---	MP_SETTING_SPAWN_CASINO_APARTMENT,\
    ---	MP_SETTING_SPAWN_ARCADE,\
    ---	MP_SETTING_SPAWN_SUBMARINE,\
    ---	MP_SETTING_SPAWN_CAR_MEET,\
    ---	MP_SETTING_SPAWN_AUTO_SHOP,\
    ---	MP_SETTING_SPAWN_FIXER_HQ,\
    ---	MP_SETTING_SPAWN_MAX,\
    ---};
    ---@param mpSettingSpawn Hash
    NETWORK_SET_CURRENT_SPAWN_LOCATION_OPTION = function(mpSettingSpawn) end,

    ---Used by MetricVEHICLE_DIST_DRIVEN
    ---@param toggle BOOL
    NETWORK_SET_VEHICLE_DRIVEN_IN_TEST_DRIVE = function(toggle) end,

    ---Sets 'loc' variable used in MetricVEHICLE_DIST_DRIVEN
    ---@param location Hash
    NETWORK_SET_VEHICLE_DRIVEN_LOCATION = function(location) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param p4 BOOL
    ---@param changetime BOOL
    ---@param p6 BOOL
    ---@param p7 integer
    ---@param p8 integer
    NETWORK_RESURRECT_LOCAL_PLAYER = function(x, y, z, heading, p4, changetime, p6, p7, p8) end,

    ---@param time integer
    NETWORK_SET_LOCAL_PLAYER_INVINCIBLE_TIME = function(time) end,

    ---@return BOOL
    NETWORK_IS_LOCAL_PLAYER_INVINCIBLE = function() end,

    ---@param player Player
    ---@param toggle BOOL
    NETWORK_DISABLE_INVINCIBLE_FLASHING = function(player, toggle) end,

    ---@param ped Ped
    NETWORK_PATCH_POST_CUTSCENE_HS4F_TUN_ENT = function(ped) end,

    ---@param toggle BOOL
    NETWORK_SET_LOCAL_PLAYER_SYNC_LOOK_AT = function(toggle) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_HAS_ENTITY_BEEN_REGISTERED_WITH_THIS_THREAD = function(entity) end,

    ---@param entity Entity
    ---@return integer
    NETWORK_GET_NETWORK_ID_FROM_ENTITY = function(entity) end,

    ---@param netId integer
    ---@return Entity
    NETWORK_GET_ENTITY_FROM_NETWORK_ID = function(netId) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_GET_ENTITY_IS_NETWORKED = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_GET_ENTITY_IS_LOCAL = function(entity) end,

    ---@param entity Entity
    NETWORK_REGISTER_ENTITY_AS_NETWORKED = function(entity) end,

    ---@param entity Entity
    NETWORK_UNREGISTER_NETWORKED_ENTITY = function(entity) end,

    ---@param netId integer
    ---@return BOOL
    NETWORK_DOES_NETWORK_ID_EXIST = function(netId) end,

    ---@param netId integer
    ---@return BOOL
    NETWORK_DOES_ENTITY_EXIST_WITH_NETWORK_ID = function(netId) end,

    ---@param netId integer
    ---@return BOOL
    NETWORK_REQUEST_CONTROL_OF_NETWORK_ID = function(netId) end,

    ---@param netId integer
    ---@return BOOL
    NETWORK_HAS_CONTROL_OF_NETWORK_ID = function(netId) end,

    ---Returns true if the specified network id is controlled by someone else.
    ---@param netId integer
    ---@return BOOL
    NETWORK_IS_NETWORK_ID_REMOTELY_CONTROLLED = function(netId) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_REQUEST_CONTROL_OF_ENTITY = function(entity) end,

    ---@param doorID integer
    ---@return BOOL
    NETWORK_REQUEST_CONTROL_OF_DOOR = function(doorID) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_HAS_CONTROL_OF_ENTITY = function(entity) end,

    ---@param pickup Pickup
    ---@return BOOL
    NETWORK_HAS_CONTROL_OF_PICKUP = function(pickup) end,

    ---@param doorHash Hash
    ---@return BOOL
    NETWORK_HAS_CONTROL_OF_DOOR = function(doorHash) end,

    ---@param doorHash Hash
    ---@return BOOL
    NETWORK_IS_DOOR_NETWORKED = function(doorHash) end,

    ---calls from vehicle to net.\
    ---
    ---@param vehicle Vehicle
    ---@return integer
    VEH_TO_NET = function(vehicle) end,

    ---gets the network id of a ped
    ---@param ped Ped
    ---@return integer
    PED_TO_NET = function(ped) end,

    ---Lets objects spawn online simply do it like this:\
    ---\
    ---int createdObject = OBJ_TO_NET(CREATE_OBJECT_NO_OFFSET(oball, pCoords.x, pCoords.y, pCoords.z, 1, 0, 0));
    ---@param object Object
    ---@return integer
    OBJ_TO_NET = function(object) end,

    ---@param netHandle integer
    ---@return Vehicle
    NET_TO_VEH = function(netHandle) end,

    ---gets the ped id of a network id
    ---@param netHandle integer
    ---@return Ped
    NET_TO_PED = function(netHandle) end,

    ---gets the object id of a network id
    ---@param netHandle integer
    ---@return Object
    NET_TO_OBJ = function(netHandle) end,

    ---gets the entity id of a network id
    ---@param netHandle integer
    ---@return Entity
    NET_TO_ENT = function(netHandle) end,

    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    NETWORK_GET_LOCAL_HANDLE = function(gamerHandle, gamerHandleSize) end,

    ---@param userId string
    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    NETWORK_HANDLE_FROM_USER_ID = function(userId, gamerHandle, gamerHandleSize) end,

    ---@param memberId string
    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    NETWORK_HANDLE_FROM_MEMBER_ID = function(memberId, gamerHandle, gamerHandleSize) end,

    ---@param player Player
    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    NETWORK_HANDLE_FROM_PLAYER = function(player, gamerHandle, gamerHandleSize) end,

    ---@param player Player
    ---@return Hash
    NETWORK_HASH_FROM_PLAYER_HANDLE = function(player) end,

    ---@param gamerHandle Any*
    ---@return Hash
    NETWORK_HASH_FROM_GAMER_HANDLE = function(gamerHandle) end,

    ---@param friendIndex integer
    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    NETWORK_HANDLE_FROM_FRIEND = function(friendIndex, gamerHandle, gamerHandleSize) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_GAMERTAG_FROM_HANDLE_START = function(gamerHandle) end,

    ---@return BOOL
    NETWORK_GAMERTAG_FROM_HANDLE_PENDING = function() end,

    ---@return BOOL
    NETWORK_GAMERTAG_FROM_HANDLE_SUCCEEDED = function() end,

    ---@param gamerHandle Any*
    ---@return string
    NETWORK_GET_GAMERTAG_FROM_HANDLE = function(gamerHandle) end,

    ---Hardcoded to return -1.
    ---@param p0 Any*
    ---@param p1 Any
    ---@return integer
    NETWORK_DISPLAYNAMES_FROM_HANDLES_START = function(p0, p1) end,

    ---This function is hard-coded to always return 0.
    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return integer
    NETWORK_GET_DISPLAYNAMES_FROM_HANDLES = function(p0, p1, p2) end,

    ---@param gamerHandle1 Any*
    ---@param gamerHandle2 Any*
    ---@return BOOL
    NETWORK_ARE_HANDLES_THE_SAME = function(gamerHandle1, gamerHandle2) end,

    ---@param gamerHandle Any*
    ---@param gamerHandleSize integer
    ---@return BOOL
    NETWORK_IS_HANDLE_VALID = function(gamerHandle, gamerHandleSize) end,

    ---@param gamerHandle Any*
    ---@return Player
    NETWORK_GET_PLAYER_FROM_GAMER_HANDLE = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return string
    NETWORK_MEMBER_ID_FROM_GAMER_HANDLE = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_GAMER_IN_MY_SESSION = function(gamerHandle) end,

    ---@param gamerHandle Any*
    NETWORK_SHOW_PROFILE_UI = function(gamerHandle) end,

    ---Returns the name of a given player. Returns "**Invalid**" if rlGamerInfo of the given player cannot be retrieved or the player doesn't exist.
    ---@param player Player
    ---@return string
    NETWORK_PLAYER_GET_NAME = function(player) end,

    ---Returns a string of the player's Rockstar Id. \
    ---Takes a 24 char buffer. Returns the buffer or "**Invalid**" if rlGamerInfo of the given player cannot be retrieved or the player doesn't exist.
    ---@param player Player
    ---@param userID integer
    ---@return string
    ---@return integer
    NETWORK_PLAYER_GET_USERID = function(player, userID) end,

    ---Checks if a specific value (BYTE) in CNetGamePlayer is nonzero.\
    ---Returns always false in Singleplayer.\
    ---\
    ---No longer used for dev checks since first mods were released on PS3 & 360.\
    ---R* now checks with the IS_DLC_PRESENT native for the dlc hash 2532323046,\
    ---if that is present it will unlock dev stuff.
    ---@param player Player
    ---@return BOOL
    NETWORK_PLAYER_IS_ROCKSTAR_DEV = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_PLAYER_INDEX_IS_CHEATER = function(player) end,

    ---@param entity Entity
    ---@return integer
    NETWORK_ENTITY_GET_OBJECT_ID = function(entity) end,

    ---I've had this return the player's ped handle sometimes, but also other random entities.\
    ---Whatever p0 is, it's at least not synced to other players.\
    ---At least not all the time, some p0 values actually output the same entity, (different handle of course, but same entity).\
    ---But another p0 value may return an entity for player x, but not for player y (it'll just return -1 even if the entity exists on both clients).\
    ---\
    ---Returns an entity handle or -1, value changes based on p0's value.
    ---@param p0 Any
    ---@return Entity
    NETWORK_GET_ENTITY_FROM_OBJECT_ID = function(p0) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_IS_INACTIVE_PROFILE = function(p0) end,

    ---Returns the name from given friend gamer handle.
    ---@param gamerHandle Any*
    ---@return string
    _NETWORK_LOAD_GAMER_DISPLAY_NAME = function(gamerHandle) end,

    ---@return integer
    NETWORK_GET_MAX_FRIENDS = function() end,

    ---@return integer
    NETWORK_GET_FRIEND_COUNT = function() end,

    ---@param friendIndex integer
    ---@return string
    NETWORK_GET_FRIEND_NAME = function(friendIndex) end,

    ---@param friendIndex integer
    ---@return string
    NETWORK_GET_FRIEND_DISPLAY_NAME = function(friendIndex) end,

    ---@param name string
    ---@return BOOL
    NETWORK_IS_FRIEND_ONLINE = function(name) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_FRIEND_HANDLE_ONLINE = function(gamerHandle) end,

    ---In scripts R* calls 'NETWORK_GET_FRIEND_NAME' in this param.
    ---@param friendName string
    ---@return BOOL
    NETWORK_IS_FRIEND_IN_SAME_TITLE = function(friendName) end,

    ---@param friendName string
    ---@return BOOL
    NETWORK_IS_FRIEND_IN_MULTIPLAYER = function(friendName) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_FRIEND = function(gamerHandle) end,

    ---This function is hard-coded to always return 0.
    ---@param p0 Any
    ---@return BOOL
    NETWORK_IS_PENDING_FRIEND = function(p0) end,

    ---@return BOOL
    NETWORK_IS_ADDING_FRIEND = function() end,

    ---@param gamerHandle Any*
    ---@param message string
    ---@return BOOL
    NETWORK_ADD_FRIEND = function(gamerHandle, message) end,

    ---@param friendIndex integer
    ---@return BOOL
    NETWORK_IS_FRIEND_INDEX_ONLINE = function(friendIndex) end,

    ---@param toggle BOOL
    NETWORK_SET_PLAYER_IS_PASSIVE = function(toggle) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_GET_PLAYER_OWNS_WAYPOINT = function(player) end,

    ---@return BOOL
    NETWORK_CAN_SET_WAYPOINT = function() end,

    NETWORK_IGNORE_REMOTE_WAYPOINTS = function() end,

    ---communicationType: 0 = VOICE; 1 = TEXT_CHAT; 2 = TEXT_MESSAGE; 3 = EMAIL; 4 = USER_CONTENT; 5 = USER_TEXT
    ---@param communicationType integer
    ---@return BOOL
    _NETWORK_DOES_COMMUNICATION_GROUP_HAVE_PERMISSION = function(communicationType) end,

    ---@param communicationType integer
    ---@return BOOL
    _NETWORK_DOES_COMMUNICATION_GROUP_HAVE_SETTINGS_ENABLED = function(communicationType) end,

    ---Returns communicationGroupFlag\
    ---communicationType: see 0xDBDF80673BBA3D65\
    ---\
    ---enum eCommunicationGroupFlag\
    ---{\
    ---	COMMUNICATION_GROUP_LOCAL_PLAYER = 1 << 0,\
    ---	COMMUNICATION_GROUP_FRIENDS = 1 << 1,\
    ---	COMMUNICATION_GROUP_SMALL_CREW = 1 << 2,\
    ---	COMMUNICATION_GROUP_LARGE_CREW = 1 << 3,\
    ---	COMMUNICATION_GROUP_RECENT_PLAYER = 1 << 4,\
    ---	COMMUNICATION_GROUP_SAME_SESSION = 1 << 5,\
    ---	COMMUNICATION_GROUP_SAME_TEAM = 1 << 6,\
    ---	COMMUNICATION_GROUP_INVALID = 1 << 7,\
    ---};
    ---@param communicationType integer
    ---@return integer
    _NETWORK_GET_COMMUNICATION_GROUP_FLAGS = function(communicationType) end,

    ---@param communicationType integer
    ---@return integer
    _NETWORK_GET_COMMUNICATION_GROUP_DEFAULT_FLAGS = function(communicationType) end,

    ---@param communicationType integer
    ---@return integer
    _NETWORK_GET_COMMUNICATION_GROUP_VALUE = function(communicationType) end,

    ---communicationType: see 0xDBDF80673BBA3D65\
    ---communicationGroupFlag: see 0x40DF02F371F40883
    ---@param communicationType integer
    ---@param communicationGroupFlag integer
    _NETWORK_SET_COMMUNICATION_GROUP_FLAGS = function(communicationType, communicationGroupFlag) end,

    ---_NETWORK_HAS_P*\
    ---checkType 3 is similar as using 0x9F633448E4C73207
    ---@param checkType integer
    ---@param gamerHandle Any*
    ---@return BOOL
    _NETWORK_HAS_PLAYER_PASSED_CHECK_TYPE = function(checkType, gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_PLAYER_ON_BLOCKLIST = function(gamerHandle) end,

    ---@param p0 Any
    ---@return BOOL
    NETWORK_SET_SCRIPT_AUTOMUTED = function(p0) end,

    ---@return BOOL
    NETWORK_HAS_AUTOMUTE_OVERRIDE = function() end,

    ---@return BOOL
    NETWORK_HAS_HEADSET = function() end,

    ---@param p0 BOOL
    NETWORK_SET_LOOK_AT_TALKERS = function(p0) end,

    ---@return BOOL
    NETWORK_IS_PUSH_TO_TALK_ACTIVE = function() end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_GAMER_HAS_HEADSET = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_GAMER_TALKING = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_PERMISSIONS_HAS_GAMER_RECORD = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_COMMUNICATE_WITH_GAMER = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_TEXT_CHAT_WITH_GAMER = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_GAMER_MUTED_BY_ME = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_AM_I_MUTED_BY_GAMER = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_IS_GAMER_BLOCKED_BY_ME = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_AM_I_BLOCKED_BY_GAMER = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_VIEW_GAMER_USER_CONTENT = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_HAS_VIEW_GAMER_USER_CONTENT_RESULT = function(gamerHandle) end,

    ---NETWORK_CAN_*
    ---@param gamerHandle Any*
    ---@return BOOL
    _NETWORK_CAN_TEXT_FROM_GAMER_BE_VIEWED = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_PLAY_MULTIPLAYER_WITH_GAMER = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_GAMER_PLAY_MULTIPLAYER_WITH_ME = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_SEND_LOCAL_INVITE = function(gamerHandle) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CAN_RECEIVE_LOCAL_INVITE = function(gamerHandle) end,

    ---returns true if someone is screaming or talking in a microphone
    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_TALKING = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_PLAYER_HAS_HEADSET = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_MUTED_BY_ME = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_AM_I_MUTED_BY_PLAYER = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_BLOCKED_BY_ME = function(player) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_AM_I_BLOCKED_BY_PLAYER = function(player) end,

    ---@param player Player
    ---@return number
    NETWORK_GET_PLAYER_LOUDNESS = function(player) end,

    ---@param value number
    NETWORK_SET_TALKER_PROXIMITY = function(value) end,

    ---@return number
    NETWORK_GET_TALKER_PROXIMITY = function() end,

    ---@param toggle BOOL
    NETWORK_SET_VOICE_ACTIVE = function(toggle) end,

    ---@param p0 BOOL
    NETWORK_REMAIN_IN_GAME_CHAT = function(p0) end,

    ---@param p0 BOOL
    NETWORK_OVERRIDE_TRANSITION_CHAT = function(p0) end,

    ---@param toggle BOOL
    NETWORK_SET_TEAM_ONLY_CHAT = function(toggle) end,

    ---@param p0 Any
    NETWORK_SET_SCRIPT_CONTROLLING_TEAMS = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    NETWORK_SET_SAME_TEAM_AS_LOCAL_PLAYER = function(p0, p1) end,

    ---@param team integer
    ---@param toggle BOOL
    NETWORK_OVERRIDE_TEAM_RESTRICTIONS = function(team, toggle) end,

    ---@param toggle BOOL
    NETWORK_SET_OVERRIDE_SPECTATOR_MODE = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_SET_OVERRIDE_TUTORIAL_SESSION_CHAT = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_SET_PROXIMITY_AFFECTS_TEAM = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_SET_NO_SPECTATOR_CHAT = function(toggle) end,

    ---@param toggle BOOL
    NETWORK_SET_IGNORE_SPECTATOR_CHAT_LIMITS_SAME_TEAM = function(toggle) end,

    ---Could possibly bypass being muted or automatically muted
    ---@param player Player
    ---@param toggle BOOL
    NETWORK_OVERRIDE_CHAT_RESTRICTIONS = function(player, toggle) end,

    ---This is used alongside the native,\
    ---'NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS'. Read its description for more info.
    ---@param player Player
    ---@param toggle BOOL
    NETWORK_OVERRIDE_SEND_RESTRICTIONS = function(player, toggle) end,

    ---@param toggle BOOL
    NETWORK_OVERRIDE_SEND_RESTRICTIONS_ALL = function(toggle) end,

    ---R* uses this to hear all player when spectating. \
    ---It allows you to hear other online players when their chat is on none, crew and or friends
    ---@param player Player
    ---@param toggle BOOL
    NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS = function(player, toggle) end,

    ---p0 is always false in scripts.
    ---@param toggle BOOL
    NETWORK_OVERRIDE_RECEIVE_RESTRICTIONS_ALL = function(toggle) end,

    ---@param channel integer
    NETWORK_SET_VOICE_CHANNEL = function(channel) end,

    NETWORK_CLEAR_VOICE_CHANNEL = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    NETWORK_APPLY_VOICE_PROXIMITY_OVERRIDE = function(x, y, z) end,

    NETWORK_CLEAR_VOICE_PROXIMITY_OVERRIDE = function() end,

    ---@param player Player
    NETWORK_ENABLE_VOICE_BANDWIDTH_RESTRICTION = function(player) end,

    ---@param player Player
    NETWORK_DISABLE_VOICE_BANDWIDTH_RESTRICTION = function(player) end,

    ---NETWORK_GET_M[A-U]
    ---@param p0 Player
    ---@param p1 number
    ---@param p2 number
    ---@return number
    ---@return number
    NETWORK_GET_MUTE_COUNT_FOR_PLAYER = function(p0, p1, p2) end,

    ---@param toggle BOOL
    NETWORK_SET_SPECTATOR_TO_NON_SPECTATOR_TEXT_CHAT = function(toggle) end,

    ---Same as _IS_TEXT_CHAT_ACTIVE, except it does not check if the text chat HUD component is initialized, and therefore may crash.
    ---@return BOOL
    NETWORK_TEXT_CHAT_IS_TYPING = function() end,

    ---Starts a new singleplayer game (at the prologue).
    SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME = function() end,

    ---In singleplayer this will re-load your game.\
    ---\
    ---In FiveM / GTA:Online this disconnects you from the session, and starts loading single player, however you still remain connected to the server (only if you're the host, if you're not then you also (most likely) get disconnected from the server) and other players will not be able to join until you exit the game.\
    ---\
    ---You might need to DoScreenFadeIn and ShutdownLoadingScreen otherwise you probably won't end up loading into SP at all.\
    ---\
    ---Somewhat related note: opening the pause menu after loading into this 'singleplayer' mode crashes the game.
    ---@return BOOL
    SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE = function() end,

    ---@param toggle BOOL
    NETWORK_SET_FRIENDLY_FIRE_OPTION = function(toggle) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 Any
    ---@param p3 Any
    NETWORK_SET_RICH_PRESENCE = function(p0, p1, p2, p3) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 integer
    ---@param textLabel string
    NETWORK_SET_RICH_PRESENCE_STRING = function(p0, textLabel) end,

    ---@return integer
    NETWORK_GET_TIMEOUT_TIME = function() end,

    ---p4 and p5 are always 0 in scripts
    ---@param player Player
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 BOOL
    ---@param p5 BOOL
    NETWORK_LEAVE_PED_BEHIND_BEFORE_WARP = function(player, x, y, z, p4, p5) end,

    ---@param player Player
    ---@param p1 BOOL
    NETWORK_LEAVE_PED_BEHIND_BEFORE_CUTSCENE = function(player, p1) end,

    ---entity must be a valid entity; ped can be NULL
    ---@param entity Entity
    ---@param ped Ped
    REMOVE_ALL_STICKY_BOMBS_FROM_ENTITY = function(entity, ped) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_KEEP_ENTITY_COLLISION_DISABLED_AFTER_ANIM_SCENE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@return BOOL
    NETWORK_IS_ANY_PLAYER_NEAR = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@return BOOL
    NETWORK_CLAN_SERVICE_IS_VALID = function() end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CLAN_PLAYER_IS_ACTIVE = function(gamerHandle) end,

    ---bufferSize is 35 in the scripts.\
    ---\
    ---bufferSize is the elementCount of p0(desc), sizeof(p0) == 280 == p1*8 == 35 * 8, p2(netHandle) is obtained from NETWORK::NETWORK_HANDLE_FROM_PLAYER.  And no, I can't explain why 35 * sizeof(int) == 280 and not 140, but I'll get back to you on that.\
    ---\
    ---the answer is: because p0 an int64_t* / int64_t[35].  and FYI p2 is an int64_t[13]\
    ---\
    ---https://pastebin.com/cSZniHak
    ---@param clanDesc Any*
    ---@param bufferSize integer
    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CLAN_PLAYER_GET_DESC = function(clanDesc, bufferSize, gamerHandle) end,

    ---bufferSize is 35 in the scripts.
    ---@param clanDesc Any*
    ---@param bufferSize integer
    ---@return BOOL
    NETWORK_CLAN_IS_ROCKSTAR_CLAN = function(clanDesc, bufferSize) end,

    ---@return integer
    NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT = function() end,

    ---@param memberDesc Any*
    ---@param p1 integer
    ---@return BOOL
    NETWORK_CLAN_GET_MEMBERSHIP_DESC = function(memberDesc, p1) end,

    ---@param gamerHandle Any*
    ---@return BOOL
    NETWORK_CLAN_DOWNLOAD_MEMBERSHIP = function(gamerHandle) end,

    ---@param p0 Any*
    ---@return BOOL
    NETWORK_CLAN_DOWNLOAD_MEMBERSHIP_PENDING = function(p0) end,

    ---@return BOOL
    NETWORK_CLAN_ANY_DOWNLOAD_MEMBERSHIP_PENDING = function() end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    NETWORK_CLAN_REMOTE_MEMBERSHIPS_ARE_IN_CACHE = function(p0) end,

    ---@param p0 integer
    ---@return integer
    ---@return integer
    NETWORK_CLAN_GET_MEMBERSHIP_COUNT = function(p0) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@return BOOL
    ---@return integer
    NETWORK_CLAN_GET_MEMBERSHIP_VALID = function(p0, p1) end,

    ---@param p0 integer
    ---@param clanMembership Any*
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    NETWORK_CLAN_GET_MEMBERSHIP = function(p0, clanMembership, p2) end,

    ---@param clanDesc integer
    ---@return BOOL
    NETWORK_CLAN_JOIN = function(clanDesc) end,

    ---Only documented...\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@param animName string
    ---@return BOOL
    NETWORK_CLAN_CREWINFO_GET_STRING_VALUE = function(animDict, animName) end,

    ---@param p0 integer
    ---@param p1 string
    ---@return BOOL
    NETWORK_CLAN_CREWINFO_GET_CREWRANKTITLE = function(p0, p1) end,

    ---@return BOOL
    NETWORK_CLAN_HAS_CREWINFO_METADATA_BEEN_RECEIVED = function() end,

    ---@param p0 Any
    ---@return BOOL
    NETWORK_CLAN_REQUEST_EMBLEM = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@return BOOL
    NETWORK_CLAN_IS_EMBLEM_READY = function(p0, p1) end,

    ---@param p0 Any
    NETWORK_CLAN_RELEASE_EMBLEM = function(p0) end,

    ---@return BOOL
    NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR = function() end,

    NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL = function() end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@return BOOL
    NETWORK_GET_PRIMARY_CLAN_DATA_START = function(p0, p1) end,

    ---@return BOOL
    NETWORK_GET_PRIMARY_CLAN_DATA_PENDING = function() end,

    ---@return BOOL
    NETWORK_GET_PRIMARY_CLAN_DATA_SUCCESS = function() end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    NETWORK_GET_PRIMARY_CLAN_DATA_NEW = function(p0, p1) end,

    ---Whether or not another player is allowed to take control of the entity
    ---@param netId integer
    ---@param toggle BOOL
    SET_NETWORK_ID_CAN_MIGRATE = function(netId, toggle) end,

    ---@param netId integer
    ---@param toggle BOOL
    SET_NETWORK_ID_EXISTS_ON_ALL_MACHINES = function(netId, toggle) end,

    ---@param netId integer
    ---@param player Player
    ---@param toggle BOOL
    SET_NETWORK_ID_ALWAYS_EXISTS_FOR_PLAYER = function(netId, player, toggle) end,

    ---"No Reassign" in CPhysicalScriptGameStateDataNode
    ---@param netId integer
    ---@param toggle BOOL
    SET_NETWORK_ID_CAN_BE_REASSIGNED = function(netId, toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_SET_ENTITY_CAN_BLEND = function(entity, toggle) end,

    ---@param object Object
    ---@param toggle BOOL
    NETWORK_SET_OBJECT_CAN_BLEND_WHEN_FIXED = function(object, toggle) end,

    ---if set to true other network players can't see it\
    ---if set to false other network player can see it\
    ---=========================================\
    ---^^ I attempted this by grabbing an object with GET_ENTITY_PLAYER_IS_FREE_AIMING_AT and setting this naive no matter the toggle he could still see it.\
    ---\
    ---pc or last gen?\
    ---\
    ---^^ last-gen
    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_SET_ENTITY_ONLY_EXISTS_FOR_PARTICIPANTS = function(entity, toggle) end,

    ---@param netId integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_NETWORK_ID_VISIBLE_IN_CUTSCENE = function(netId, p1, p2) end,

    ---@param netId integer
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_NETWORK_ID_VISIBLE_IN_CUTSCENE_HACK = function(netId, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    SET_NETWORK_ID_VISIBLE_IN_CUTSCENE_REMAIN_HACK = function(p0, p1, p2) end,

    ---@param toggle BOOL
    SET_NETWORK_CUTSCENE_ENTITIES = function(toggle) end,

    ---Getter for SET_NETWORK_CUTSCENE_ENTITIES.
    ---@return BOOL
    ARE_CUTSCENE_ENTITIES_NETWORKED = function() end,

    ---@param netId integer
    ---@param state BOOL
    SET_NETWORK_ID_PASS_CONTROL_IN_TUTORIAL = function(netId, state) end,

    ---@param toggle BOOL
    _NETWORK_SET_TUTORIAL_SPECIAL_SESSION = function(toggle) end,

    ---@return BOOL
    _NETWORK_IS_SPECIAL_TUTORIAL_SESSION = function() end,

    ---@param netId integer
    ---@return BOOL
    IS_NETWORK_ID_OWNED_BY_PARTICIPANT = function(netId) end,

    ---@param player Player
    ---@param locallyVisible BOOL
    SET_REMOTE_PLAYER_VISIBLE_IN_CUTSCENE = function(player, locallyVisible) end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    SET_LOCAL_PLAYER_VISIBLE_IN_CUTSCENE = function(p0, p1) end,

    ---@param bIncludePlayersVehicle BOOL
    SET_LOCAL_PLAYER_INVISIBLE_LOCALLY = function(bIncludePlayersVehicle) end,

    ---@param bIncludePlayersVehicle BOOL
    SET_LOCAL_PLAYER_VISIBLE_LOCALLY = function(bIncludePlayersVehicle) end,

    ---@param player Player
    ---@param bIncludePlayersVehicle BOOL
    SET_PLAYER_INVISIBLE_LOCALLY = function(player, bIncludePlayersVehicle) end,

    ---@param player Player
    ---@param bIncludePlayersVehicle BOOL
    SET_PLAYER_VISIBLE_LOCALLY = function(player, bIncludePlayersVehicle) end,

    ---Hardcoded to not work in SP.
    ---@param p0 BOOL
    FADE_OUT_LOCAL_PLAYER = function(p0) end,

    ---normal - transition like when your coming out of LSC\
    ---slow - transition like when you walk into a mission\
    --- 
    ---@param entity Entity
    ---@param normal BOOL
    ---@param slow BOOL
    NETWORK_FADE_OUT_ENTITY = function(entity, normal, slow) end,

    ---state - 0 does 5 fades\
    ---state - 1 does 6 fades\
    ---\
    ---p3: setting to 1 made vehicle fade in slower, probably "slow" as per NETWORK_FADE_OUT_ENTITY
    ---@param entity Entity
    ---@param state BOOL
    ---@param p2 Any
    NETWORK_FADE_IN_ENTITY = function(entity, state, p2) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_FADING = function(player) end,

    ---@param entity Entity
    ---@return BOOL
    NETWORK_IS_ENTITY_FADING = function(entity) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_IN_CUTSCENE = function(player) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_ENTITY_VISIBLE_IN_CUTSCENE = function(p0, p1, p2) end,

    ---Makes the provided entity visible for yourself for the current frame.
    ---@param entity Entity
    SET_ENTITY_LOCALLY_INVISIBLE = function(entity) end,

    ---@param entity Entity
    SET_ENTITY_LOCALLY_VISIBLE = function(entity) end,

    ---@param netID integer
    ---@return BOOL
    IS_DAMAGE_TRACKER_ACTIVE_ON_NETWORK_ID = function(netID) end,

    ---@param netID integer
    ---@param toggle BOOL
    ACTIVATE_DAMAGE_TRACKER_ON_NETWORK_ID = function(netID, toggle) end,

    ---@param player Player
    ---@return BOOL
    IS_DAMAGE_TRACKER_ACTIVE_ON_PLAYER = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    ACTIVATE_DAMAGE_TRACKER_ON_PLAYER = function(player, toggle) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@return BOOL
    IS_SPHERE_VISIBLE_TO_ANOTHER_MACHINE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@return BOOL
    IS_SPHERE_VISIBLE_TO_PLAYER = function(p0, p1, p2, p3, p4) end,

    ---@param amount integer
    RESERVE_NETWORK_MISSION_OBJECTS = function(amount) end,

    ---@param amount integer
    RESERVE_NETWORK_MISSION_PEDS = function(amount) end,

    ---@param amount integer
    RESERVE_NETWORK_MISSION_VEHICLES = function(amount) end,

    ---@param amount integer
    RESERVE_LOCAL_NETWORK_MISSION_OBJECTS = function(amount) end,

    ---@param amount integer
    RESERVE_LOCAL_NETWORK_MISSION_PEDS = function(amount) end,

    ---@param amount integer
    RESERVE_LOCAL_NETWORK_MISSION_VEHICLES = function(amount) end,

    ---@param amount integer
    ---@return BOOL
    CAN_REGISTER_MISSION_OBJECTS = function(amount) end,

    ---@param amount integer
    ---@return BOOL
    CAN_REGISTER_MISSION_PEDS = function(amount) end,

    ---@param amount integer
    ---@return BOOL
    CAN_REGISTER_MISSION_VEHICLES = function(amount) end,

    ---@param amount integer
    ---@return BOOL
    CAN_REGISTER_MISSION_PICKUPS = function(amount) end,

    ---@param p0 Any
    ---@return BOOL
    CAN_REGISTER_MISSION_DOORS = function(p0) end,

    ---@param ped_amt integer
    ---@param vehicle_amt integer
    ---@param object_amt integer
    ---@param pickup_amt integer
    ---@return BOOL
    CAN_REGISTER_MISSION_ENTITIES = function(ped_amt, vehicle_amt, object_amt, pickup_amt) end,

    ---p0 appears to be for MP
    ---@param p0 BOOL
    ---@param p1 Any
    ---@return integer
    GET_NUM_RESERVED_MISSION_OBJECTS = function(p0, p1) end,

    ---p0 appears to be for MP
    ---@param p0 BOOL
    ---@param p1 Any
    ---@return integer
    GET_NUM_RESERVED_MISSION_PEDS = function(p0, p1) end,

    ---p0 appears to be for MP
    ---@param p0 BOOL
    ---@param p1 Any
    ---@return integer
    GET_NUM_RESERVED_MISSION_VEHICLES = function(p0, p1) end,

    ---@param p0 BOOL
    ---@return integer
    GET_NUM_CREATED_MISSION_OBJECTS = function(p0) end,

    ---@param p0 BOOL
    ---@return integer
    GET_NUM_CREATED_MISSION_PEDS = function(p0) end,

    ---@param p0 BOOL
    ---@return integer
    GET_NUM_CREATED_MISSION_VEHICLES = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 Any
    ---@param out1 Any*
    ---@param out2 Any*
    ---@param out3 Any*
    GET_RESERVED_MISSION_ENTITIES_IN_AREA = function(x, y, z, p3, out1, out2, out3) end,

    ---@return integer
    GET_MAX_NUM_NETWORK_OBJECTS = function() end,

    ---@return integer
    GET_MAX_NUM_NETWORK_PEDS = function() end,

    ---@return integer
    GET_MAX_NUM_NETWORK_VEHICLES = function() end,

    ---@return integer
    GET_MAX_NUM_NETWORK_PICKUPS = function() end,

    ---@param object Object
    ---@param range number
    NETWORK_SET_OBJECT_SCOPE_DISTANCE = function(object, range) end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_ALLOW_CLONING_WHILE_IN_TUTORIAL = function(p0, p1) end,

    ---A value between 1.0 and 5.0
    ---@param multiplier number
    NETWORK_SET_TASK_CUTSCENE_INSCOPE_MULTIPLER = function(multiplier) end,

    ---@param netHandle integer
    ---@param hide BOOL
    _NETWORK_HIDE_ENTITY_IN_TUTORIAL_SESSION = function(netHandle, hide) end,

    ---@return integer
    GET_NETWORK_TIME = function() end,

    ---Returns the same value as GET_NETWORK_TIME in freemode, but as opposed to `GET_NETWORK_TIME` it always gets the most recent time, instead of once per tick.\
    ---Could be used for benchmarking since it can return times in ticks.
    ---@return integer
    GET_NETWORK_TIME_ACCURATE = function() end,

    ---@return BOOL
    HAS_NETWORK_TIME_STARTED = function() end,

    ---Adds the first argument to the second.
    ---@param timeA integer
    ---@param timeB integer
    ---@return integer
    GET_TIME_OFFSET = function(timeA, timeB) end,

    ---Subtracts the second argument from the first, then returns whether the result is negative.
    ---@param timeA integer
    ---@param timeB integer
    ---@return BOOL
    IS_TIME_LESS_THAN = function(timeA, timeB) end,

    ---Subtracts the first argument from the second, then returns whether the result is negative.
    ---@param timeA integer
    ---@param timeB integer
    ---@return BOOL
    IS_TIME_MORE_THAN = function(timeA, timeB) end,

    ---Returns true if the two times are equal; otherwise returns false.
    ---@param timeA integer
    ---@param timeB integer
    ---@return BOOL
    IS_TIME_EQUAL_TO = function(timeA, timeB) end,

    ---Subtracts the second argument from the first.
    ---@param timeA integer
    ---@param timeB integer
    ---@return integer
    GET_TIME_DIFFERENCE = function(timeA, timeB) end,

    ---@param time integer
    ---@return string
    GET_TIME_AS_STRING = function(time) end,

    ---Same as GET_CLOUD_TIME_AS_INT but returns the value as a hex string (%I64X).
    ---@return string
    GET_CLOUD_TIME_AS_STRING = function() end,

    ---Returns POSIX timestamp, an int representing the cloud time.
    ---@return integer
    GET_CLOUD_TIME_AS_INT = function() end,

    ---Takes the specified time and writes it to the structure specified in the second argument.\
    ---\
    ---struct date_time\
    ---{\
    ---    int year;\
    ---    int PADDING1;\
    ---    int month;\
    ---    int PADDING2;\
    ---    int day;\
    ---    int PADDING3;\
    ---    int hour;\
    ---    int PADDING4;\
    ---    int minute;\
    ---    int PADDING5;\
    ---    int second;\
    ---    int PADDING6;\
    ---};
    ---@param posixTime integer
    ---@param timeStructure Any*
    CONVERT_POSIX_TIME = function(posixTime, timeStructure) end,

    ---@param toggle BOOL
    ---@param playerPed Ped
    NETWORK_SET_IN_SPECTATOR_MODE = function(toggle, playerPed) end,

    ---@param toggle BOOL
    ---@param playerPed Ped
    ---@param p2 BOOL
    NETWORK_SET_IN_SPECTATOR_MODE_EXTENDED = function(toggle, playerPed, p2) end,

    ---@param toggle BOOL
    NETWORK_SET_IN_FREE_CAM_MODE = function(toggle) end,

    ---@param toggle BOOL
    ---@param player Player
    NETWORK_SET_ANTAGONISTIC_TO_PLAYER = function(toggle, player) end,

    ---@return BOOL
    NETWORK_IS_IN_SPECTATOR_MODE = function() end,

    ---@param p0 BOOL
    ---@param p1 BOOL
    NETWORK_SET_IN_MP_CUTSCENE = function(p0, p1) end,

    ---@return BOOL
    NETWORK_IS_IN_MP_CUTSCENE = function() end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_IN_MP_CUTSCENE = function(player) end,

    NETWORK_HIDE_PROJECTILE_IN_CUTSCENE = function() end,

    ---@param netId integer
    ---@param time integer
    ---@param p2 Any
    ---@param p3 Any
    SET_NETWORK_VEHICLE_RESPOT_TIMER = function(netId, time, p2, p3) end,

    ---@param networkID integer
    ---@return BOOL
    IS_NETWORK_VEHICLE_RUNNING_RESPOT_TIMER = function(networkID) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_NETWORK_VEHICLE_AS_GHOST = function(vehicle, toggle) end,

    ---rage::netBlenderLinInterp::GetPositionMaxForUpdateLevel
    ---@param vehicle Vehicle
    ---@param multiplier number
    SET_NETWORK_VEHICLE_MAX_POSITION_DELTA_MULTIPLIER = function(vehicle, multiplier) end,

    ---Enables a periodic ShapeTest within the NetBlender and invokes rage::netBlenderLinInterp::GoStraightToTarget (or some functional wrapper).
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_NETWORK_ENABLE_HIGH_SPEED_EDGE_FALL_DETECTION = function(vehicle, toggle) end,

    ---@param toggle BOOL
    ---@param p1 BOOL
    SET_LOCAL_PLAYER_AS_GHOST = function(toggle, p1) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_A_GHOST = function(entity) end,

    ---@param p0 BOOL
    SET_NON_PARTICIPANTS_OF_THIS_SCRIPT_AS_GHOSTS = function(p0) end,

    ---Enables ghosting between specific players
    ---@param player Player
    ---@param p1 BOOL
    SET_REMOTE_PLAYER_AS_GHOST = function(player, p1) end,

    ---Must be a value between 1 and 254
    ---@param alpha integer
    SET_GHOST_ALPHA = function(alpha) end,

    ---Resets the entity ghost alpha to the default value (128)
    RESET_GHOST_ALPHA = function() end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_GHOSTED_FOR_GHOST_PLAYERS = function(entity, toggle) end,

    ---@param p0 BOOL
    SET_INVERT_GHOSTING = function(p0) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_IN_GHOST_COLLISION = function(entity) end,

    ---reportData includes mc, ceo, yacht and licenceplate names
    ---@param gamerHandle Any*
    ---@param reportData Any*
    _SET_FREEMODE_REPORT_DATA = function(gamerHandle, reportData) end,

    ---@return BOOL
    ---@deprecated
    IS_OBJECT_REASSIGNMENT_IN_PROGRESS = function() end,

    ---@param toggle BOOL
    USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR = function(toggle) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param rotationOrder integer
    ---@param useOcclusionPortal BOOL
    ---@param looped BOOL
    ---@param p9 number
    ---@param animTime number
    ---@param p11 number
    ---@return integer
    NETWORK_CREATE_SYNCHRONISED_SCENE = function(x, y, z, xRot, yRot, zRot, rotationOrder, useOcclusionPortal, looped, p9, animTime, p11) end,

    ---@param ped Ped
    ---@param netScene integer
    ---@param animDict string
    ---@param animnName string
    ---@param speed number
    ---@param speedMultiplier number
    ---@param duration integer
    ---@param flag integer
    ---@param playbackRate number
    ---@param p9 Any
    NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE = function(ped, netScene, animDict, animnName, speed, speedMultiplier, duration, flag, playbackRate, p9) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE_WITH_IK = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param entity Entity
    ---@param netScene integer
    ---@param animDict string
    ---@param animName string
    ---@param speed number
    ---@param speedMulitiplier number
    ---@param flag integer
    NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE = function(entity, netScene, animDict, animName, speed, speedMulitiplier, flag) end,

    ---Similar structure as NETWORK_ADD_ENTITY_TO_SYNCHRONISED_SCENE but it includes this time a hash.\
    ---In casino_slots it is used one time in a synced scene involving a ped and the slot machine?
    ---@param netScene integer
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 number
    ---@param p6 string
    ---@param p7 number
    ---@param p8 number
    ---@param flags integer
    NETWORK_ADD_MAP_ENTITY_TO_SYNCHRONISED_SCENE = function(netScene, modelHash, x, y, z, p5, p6, p7, p8, flags) end,

    ---@param netScene integer
    ---@param animDict string
    ---@param animName string
    NETWORK_ADD_SYNCHRONISED_SCENE_CAMERA = function(netScene, animDict, animName) end,

    ---@param netScene integer
    ---@param entity Entity
    ---@param bone integer
    NETWORK_ATTACH_SYNCHRONISED_SCENE_TO_ENTITY = function(netScene, entity, bone) end,

    ---@param netScene integer
    NETWORK_START_SYNCHRONISED_SCENE = function(netScene) end,

    ---@param netScene integer
    NETWORK_STOP_SYNCHRONISED_SCENE = function(netScene) end,

    ---@param netId integer
    ---@return integer
    NETWORK_GET_LOCAL_SCENE_FROM_NETWORK_ID = function(netId) end,

    ---@param netScene integer
    NETWORK_FORCE_LOCAL_USE_OF_SYNCED_SCENE_CAMERA = function(netScene) end,

    ---@param p0 Any
    NETWORK_ALLOW_REMOTE_SYNCED_SCENE_LOCAL_PLAYER_REQUESTS = function(p0) end,

    ---p0 is always 0. p1 is pointing to a global.
    ---@param p0 integer
    ---@param p1 Any
    ---@return BOOL
    NETWORK_FIND_LARGEST_BUNCH_OF_PLAYERS = function(p0, p1) end,

    ---One of the first things it does is get the players ped.\
    ---Then it calls a function that is used in some tasks and ped based functions.\
    ---p5, p6, p7 is another coordinate (or zero), often related to `GET_BLIP_COORDS, in the decompiled scripts.
    ---@param player Player
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param flags integer
    ---@return BOOL
    NETWORK_START_RESPAWN_SEARCH_FOR_PLAYER = function(player, x, y, z, radius, p5, p6, p7, flags) end,

    ---p8, p9, p10 is another coordinate, or zero, often related to `GET_BLIP_COORDS in the decompiled scripts.
    ---@param player Player
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param p8 number
    ---@param p9 number
    ---@param p10 number
    ---@param flags integer
    ---@return BOOL
    NETWORK_START_RESPAWN_SEARCH_IN_ANGLED_AREA_FOR_PLAYER = function(player, x1, y1, z1, x2, y2, z2, width, p8, p9, p10, flags) end,

    ---@param p0 Any*
    ---@return integer
    NETWORK_QUERY_RESPAWN_RESULTS = function(p0) end,

    NETWORK_CANCEL_RESPAWN_SEARCH = function() end,

    ---Based on scripts such as in freemode.c how they call their vars vVar and fVar the 2nd and 3rd param it a Vector3 and Float, but the first is based on get_random_int_in_range..
    ---@param randomInt integer
    ---@param coordinates Vector3
    ---@param heading number
    ---@return number
    NETWORK_GET_RESPAWN_RESULT = function(randomInt, coordinates, heading) end,

    ---@param p0 integer
    ---@return integer
    NETWORK_GET_RESPAWN_RESULT_FLAGS = function(p0) end,

    NETWORK_START_SOLO_TUTORIAL_SESSION = function() end,

    ---teamId must be < 3, instanceId must be < 64
    ---@param teamId integer
    ---@param instanceId integer
    NETWORK_ALLOW_GANG_TO_JOIN_TUTORIAL_SESSION = function(teamId, instanceId) end,

    NETWORK_END_TUTORIAL_SESSION = function() end,

    ---@return BOOL
    NETWORK_IS_IN_TUTORIAL_SESSION = function() end,

    ---@return BOOL
    NETWORK_WAITING_POP_CLEAR_TUTORIAL_SESSION = function() end,

    ---@return BOOL
    NETWORK_IS_TUTORIAL_SESSION_CHANGE_PENDING = function() end,

    ---@param player Player
    ---@return integer
    NETWORK_GET_PLAYER_TUTORIAL_SESSION_INSTANCE = function(player) end,

    ---@param player Player
    ---@param index integer
    ---@return BOOL
    NETWORK_ARE_PLAYERS_IN_SAME_TUTORIAL_SESSION = function(player, index) end,

    ---@param p0 Any
    NETWORK_BLOCK_PROXY_MIGRATION_BETWEEN_TUTORIAL_SESSIONS = function(p0) end,

    ---@param player Player
    ---@param toggle BOOL
    ---@param p2 BOOL
    NETWORK_CONCEAL_PLAYER = function(player, toggle, p2) end,

    ---@param player Player
    ---@return BOOL
    NETWORK_IS_PLAYER_CONCEALED = function(player) end,

    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_CONCEAL_ENTITY = function(entity, toggle) end,

    ---Note: This only works for vehicles, which appears to be a bug (since the setter _does_ work for every entity type and the name is 99% correct).
    ---@param entity Entity
    ---@return BOOL
    NETWORK_IS_ENTITY_CONCEALED = function(entity) end,

    ---Works in Singleplayer too.\
    ---Passing wrong data (e.g. hours above 23) will cause the game to crash.
    ---@param hours integer
    ---@param minutes integer
    ---@param seconds integer
    NETWORK_OVERRIDE_CLOCK_TIME = function(hours, minutes, seconds) end,

    ---@param ms integer
    NETWORK_OVERRIDE_CLOCK_RATE = function(ms) end,

    NETWORK_CLEAR_CLOCK_TIME_OVERRIDE = function() end,

    ---@param startGlobalTransition BOOL
    ---@param transitionTime integer
    _NETWORK_CLEAR_CLOCK_SYNC_TIME_OVERRIDE = function(startGlobalTransition, transitionTime) end,

    ---Does nothing in final builds.
    NETWORK_SYNC_CLOCK_TIME_OVERRIDE = function() end,

    ---@return BOOL
    NETWORK_IS_CLOCK_TIME_OVERRIDDEN = function() end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return integer
    NETWORK_ADD_ENTITY_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---To remove, see: NETWORK_REMOVE_ENTITY_AREA\
    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@return integer
    NETWORK_ADD_ENTITY_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return integer
    NETWORK_ADD_CLIENT_ENTITY_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param radius number
    ---@return integer
    NETWORK_ADD_CLIENT_ENTITY_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, radius) end,

    ---@param areaHandle integer
    ---@return BOOL
    NETWORK_REMOVE_ENTITY_AREA = function(areaHandle) end,

    ---@param areaHandle integer
    ---@return BOOL
    NETWORK_ENTITY_AREA_DOES_EXIST = function(areaHandle) end,

    ---@param areaHandle integer
    ---@return BOOL
    NETWORK_ENTITY_AREA_HAVE_ALL_REPLIED = function(areaHandle) end,

    ---@param areaHandle integer
    ---@return BOOL
    NETWORK_ENTITY_AREA_IS_OCCUPIED = function(areaHandle) end,

    ---@param netID integer
    ---@param toggle BOOL
    NETWORK_USE_HIGH_PRECISION_BLENDING = function(netID, toggle) end,

    ---@param netId integer
    NETWORK_SET_CUSTOM_ARENA_BALL_PARAMS = function(netId) end,

    ---@param netId integer
    ---@param toggle BOOL
    NETWORK_ENTITY_USE_HIGH_PRECISION_ROTATION = function(netId, toggle) end,

    ---@return BOOL
    NETWORK_REQUEST_CLOUD_BACKGROUND_SCRIPTS = function() end,

    ---@return BOOL
    NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING = function() end,

    NETWORK_REQUEST_CLOUD_TUNABLES = function() end,

    ---@return BOOL
    NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING = function() end,

    ---Actually returns the version (TUNABLE_VERSION)
    ---@return integer
    NETWORK_GET_TUNABLE_CLOUD_CRC = function() end,

    ---Sets up tunable contexts for _NETWORK_GET_TUNABLES_REGISTRATION_{BOOL|INT|FLOAT}
    ---@param tunableContextData Any*
    _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS = function(tunableContextData) end,

    ---Clears tunable contexts that were set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS
    _NETWORK_CLEAR_TUNABLES_REGISTRATION_CONTEXTS = function() end,

    ---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.\
    ---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.
    ---@param tunableName Hash
    ---@param defaultValue BOOL
    ---@return BOOL
    _NETWORK_GET_TUNABLES_REGISTRATION_BOOL = function(tunableName, defaultValue) end,

    ---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.\
    ---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.
    ---@param tunableName Hash
    ---@param defaultValue integer
    ---@return integer
    _NETWORK_GET_TUNABLES_REGISTRATION_INT = function(tunableName, defaultValue) end,

    ---Checks if the given tunable exists and returns its value. Otherwise returns defaultValue.\
    ---Possible tunable contexts must first be set up using _NETWORK_SET_TUNABLES_REGISTRATION_CONTEXTS.
    ---@param tunableName Hash
    ---@param defaultValue number
    ---@return number
    _NETWORK_GET_TUNABLES_REGISTRATION_FLOAT = function(tunableName, defaultValue) end,

    ---@param tunableContext string
    ---@param tunableName string
    ---@return BOOL
    NETWORK_DOES_TUNABLE_EXIST = function(tunableContext, tunableName) end,

    ---@param tunableContext string
    ---@param tunableName string
    ---@param value integer
    ---@return BOOL
    ---@return integer
    NETWORK_ACCESS_TUNABLE_INT = function(tunableContext, tunableName, value) end,

    ---@param tunableContext string
    ---@param tunableName string
    ---@param value number
    ---@return BOOL
    ---@return number
    NETWORK_ACCESS_TUNABLE_FLOAT = function(tunableContext, tunableName, value) end,

    ---@param tunableContext string
    ---@param tunableName string
    ---@return BOOL
    NETWORK_ACCESS_TUNABLE_BOOL = function(tunableContext, tunableName) end,

    ---@param tunableContext Hash
    ---@param tunableName Hash
    ---@return BOOL
    NETWORK_DOES_TUNABLE_EXIST_HASH = function(tunableContext, tunableName) end,

    ---@return BOOL
    NETWORK_ACCESS_TUNABLE_MODIFICATION_DETECTION_CLEAR = function() end,

    ---@param tunableContext Hash
    ---@param tunableName Hash
    ---@param value integer
    ---@return BOOL
    ---@return integer
    NETWORK_ACCESS_TUNABLE_INT_HASH = function(tunableContext, tunableName, value) end,

    ---@param contextHash Hash
    ---@param nameHash Hash
    ---@param value integer
    ---@return BOOL
    ---@return integer
    NETWORK_ACCESS_TUNABLE_INT_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) end,

    ---@param tunableContext Hash
    ---@param tunableName Hash
    ---@param value number
    ---@return BOOL
    ---@return number
    NETWORK_ACCESS_TUNABLE_FLOAT_HASH = function(tunableContext, tunableName, value) end,

    ---@param contextHash Hash
    ---@param nameHash Hash
    ---@param value number
    ---@return BOOL
    ---@return number
    NETWORK_ACCESS_TUNABLE_FLOAT_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) end,

    ---@param tunableContext Hash
    ---@param tunableName Hash
    ---@return BOOL
    NETWORK_ACCESS_TUNABLE_BOOL_HASH = function(tunableContext, tunableName) end,

    ---@param contextHash Hash
    ---@param nameHash Hash
    ---@param value BOOL
    ---@return BOOL
    ---@return BOOL
    NETWORK_ACCESS_TUNABLE_BOOL_MODIFICATION_DETECTION_REGISTRATION_HASH = function(contextHash, nameHash, value) end,

    ---Returns defaultValue if the tunable doesn't exist.
    ---@param tunableContext Hash
    ---@param tunableName Hash
    ---@param defaultValue BOOL
    ---@return BOOL
    NETWORK_TRY_ACCESS_TUNABLE_BOOL_HASH = function(tunableContext, tunableName, defaultValue) end,

    ---Return the content modifier id (the tunables context if you want) of a specific content.\
    ---\
    ---It takes the content hash (which is the mission id hash), and return the content modifier id, used as the tunables context.\
    ---\
    ---The mission id can be found on the Social club, for example, 'socialclub.rockstargames.com/games/gtav/jobs/job/A8M6Bz8MLEC5xngvDCzGwA'\
    ---\
    ---'A8M6Bz8MLEC5xngvDCzGwA' is the mission id, so the game hash this and use it as the parameter for this native.\
    ---
    ---@param contentHash Hash
    ---@return integer
    NETWORK_GET_CONTENT_MODIFIER_LIST_ID = function(contentHash) end,

    ---@return integer
    NETWORK_GET_BONE_ID_OF_FATAL_HIT = function() end,

    NETWORK_RESET_BODY_TRACKER = function() end,

    ---@return integer
    NETWORK_GET_NUMBER_BODY_TRACKER_HITS = function() end,

    ---@param boneIndex integer
    ---@return BOOL
    NETWORK_HAS_BONE_BEEN_HIT_BY_KILLER = function(boneIndex) end,

    ---@param ped Ped
    ---@param player Player
    ---@return BOOL
    NETWORK_SET_ATTRIBUTE_DAMAGE_TO_PLAYER = function(ped, player) end,

    ---Allows vehicle wheels to be destructible even when the vehicle entity is invincible.
    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_DAMAGE = function(entity, toggle) end,

    ---@param entity Entity
    ---@param trigger BOOL
    _NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_PED_DAMAGE = function(entity, trigger) end,

    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_TRIGGER_DAMAGE_EVENT_FOR_ZERO_WEAPON_HASH = function(entity, toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_SET_NO_LONGER_NEEDED = function(entity, toggle) end,

    ---In the console script dumps, this is only referenced once. \
    ---NETWORK::NETWORK_EXPLODE_VEHICLE(vehicle, 1, 0, 0);\
    ---\
    ---^^^^^ That must be PC script dumps? In X360 Script Dumps it is reference a few times with 2 differences in the parameters.\
    ---Which as you see below is 1, 0, 0 + 1, 1, 0 + 1, 0, and a *param?\
    ---\
    ---am_plane_takedown.c \
    ---network_explode_vehicle(net_to_veh(Local_40.imm_2), 1, 1, 0);\
    ---\
    ---armenian2.c \
    ---network_explode_vehicle(Local_80[6 <2>], 1, 0, 0);\
    ---\
    ---fm_horde_controler.c\
    ---network_explode_vehicle(net_to_veh(*uParam0), 1, 0, *uParam0);\
    ---\
    ---fm_mission_controller.c, has 6 hits so not going to list them.\
    ---\
    ---Side note, setting the first parameter to 0 seems to mute sound or so?\
    ---\
    ---Seems it's like ADD_EXPLOSION, etc. the first 2 params. The 3rd atm no need to worry since it always seems to be 0.\
    ---
    ---@param vehicle Vehicle
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param netId integer
    ---@return BOOL
    NETWORK_EXPLODE_VEHICLE = function(vehicle, isAudible, isInvisible, netId) end,

    ---@param vehicle Vehicle
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    ---@param netId integer
    NETWORK_EXPLODE_HELI = function(vehicle, isAudible, isInvisible, netId) end,

    ---@param entity Entity
    NETWORK_USE_LOGARITHMIC_BLENDING_THIS_FRAME = function(entity) end,

    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    NETWORK_OVERRIDE_COORDS_AND_HEADING = function(entity, x, y, z, heading) end,

    ---@param netId integer
    ---@param toggle BOOL
    NETWORK_ENABLE_EXTRA_VEHICLE_ORIENTATION_BLEND_CHECKS = function(netId, toggle) end,

    ---@param netID integer
    NETWORK_DISABLE_PROXIMITY_MIGRATION = function(netID) end,

    ---p0 in the decompiled scripts is always the stat mesh_texblend * 0.07 to int
    ---@param p0 integer
    NETWORK_SET_PLAYER_MENTAL_STATE = function(p0) end,

    ---@param p0 BOOL
    NETWORK_SET_MINIMUM_RANK_FOR_MISSION = function(p0) end,

    NETWORK_CACHE_LOCAL_PLAYER_HEAD_BLEND_DATA = function() end,

    ---@param player Player
    ---@return BOOL
    NETWORK_HAS_CACHED_PLAYER_HEAD_BLEND_DATA = function(player) end,

    ---@param ped Ped
    ---@param player Player
    ---@return BOOL
    NETWORK_APPLY_CACHED_PLAYER_HEAD_BLEND_DATA = function(ped, player) end,

    ---@param toggle BOOL
    _NETWORK_SET_IGNORE_VEHICLE_RAMMED_BY_NON_VEHICLE = function(toggle) end,

    ---@return integer
    GET_NUM_COMMERCE_ITEMS = function() end,

    ---@return BOOL
    IS_COMMERCE_DATA_VALID = function() end,

    ---Does nothing (it's a nullsub).
    ---@param p0 Any
    TRIGGER_COMMERCE_DATA_FETCH = function(p0) end,

    ---@return BOOL
    IS_COMMERCE_DATA_FETCH_IN_PROGRESS = function() end,

    ---@param index integer
    ---@return string
    GET_COMMERCE_ITEM_ID = function(index) end,

    ---@param index integer
    ---@return string
    GET_COMMERCE_ITEM_NAME = function(index) end,

    ---@param index integer
    ---@return string
    GET_COMMERCE_PRODUCT_PRICE = function(index) end,

    ---@param index integer
    ---@return integer
    GET_COMMERCE_ITEM_NUM_CATS = function(index) end,

    ---index2 is unused
    ---@param index integer
    ---@param index2 integer
    ---@return string
    GET_COMMERCE_ITEM_CAT = function(index, index2) end,

    ---@param p0 string
    ---@param p1 string
    ---@param p2 integer
    OPEN_COMMERCE_STORE = function(p0, p1, p2) end,

    ---@return BOOL
    IS_COMMERCE_STORE_OPEN = function() end,

    ---Access to the store for shark cards etc...
    ---@param toggle BOOL
    SET_STORE_ENABLED = function(toggle) end,

    ---@param index integer
    ---@return BOOL
    REQUEST_COMMERCE_ITEM_IMAGE = function(index) end,

    RELEASE_ALL_COMMERCE_ITEM_IMAGES = function() end,

    ---@param index integer
    ---@return string
    GET_COMMERCE_ITEM_TEXTURENAME = function(index) end,

    ---@return BOOL
    IS_STORE_AVAILABLE_TO_USER = function() end,

    DELAY_MP_STORE_OPEN = function() end,

    RESET_STORE_NETWORK_GAME_TRACKING = function() end,

    ---@return BOOL
    IS_USER_OLD_ENOUGH_TO_ACCESS_STORE = function() end,

    ---@param p0 Hash
    ---@param p1 integer
    ---@param p2 Hash
    SET_LAST_VIEWED_SHOP_ITEM = function(p0, p1, p2) end,

    ---Checks some commerce stuff
    ---@return integer
    GET_USER_PREMIUM_ACCESS = function() end,

    ---Checks some commerce stuff
    ---@return integer
    GET_USER_STARTER_ACCESS = function() end,

    ---@param p0 string
    ---@return integer
    CLOUD_DELETE_MEMBER_FILE = function(p0) end,

    ---@param requestId integer
    ---@return BOOL
    CLOUD_HAS_REQUEST_COMPLETED = function(requestId) end,

    ---@param requestId integer
    ---@return BOOL
    CLOUD_DID_REQUEST_SUCCEED = function(requestId) end,

    ---Downloads prod.cloud.rockstargames.com/titles/gta5/[platform]/check.json
    CLOUD_CHECK_AVAILABILITY = function() end,

    ---@return BOOL
    CLOUD_IS_CHECKING_AVAILABILITY = function() end,

    ---@return BOOL
    CLOUD_GET_AVAILABILITY_CHECK_RESULT = function() end,

    ---This function is hard-coded to always return 0.
    ---@return integer
    GET_CONTENT_TO_LOAD_TYPE = function() end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    GET_IS_LAUNCH_FROM_LIVE_AREA = function() end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    GET_IS_LIVE_AREA_LAUNCH_WITH_CONTENT = function() end,

    ---This native does absolutely nothing, just a nullsub
    CLEAR_SERVICE_EVENT_ARGUMENTS = function() end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    UGC_COPY_CONTENT = function(p0, p1) end,

    ---@return BOOL
    UGC_IS_CREATING = function() end,

    ---@return BOOL
    UGC_HAS_CREATE_FINISHED = function() end,

    ---@return BOOL
    UGC_DID_CREATE_SUCCEED = function() end,

    ---@return integer
    UGC_GET_CREATE_RESULT = function() end,

    ---@return string
    UGC_GET_CREATE_CONTENT_ID = function() end,

    UGC_CLEAR_CREATE_RESULT = function() end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any*
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@return BOOL
    UGC_QUERY_MY_CONTENT = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 string
    ---@param p4 Any
    ---@param p5 BOOL
    ---@return BOOL
    UGC_QUERY_BY_CATEGORY = function(p0, p1, p2, p3, p4, p5) end,

    ---@param contentId string
    ---@param latestVersion BOOL
    ---@param contentTypeName string
    ---@return BOOL
    UGC_QUERY_BY_CONTENT_ID = function(contentId, latestVersion, contentTypeName) end,

    ---@param data Any*
    ---@param count integer
    ---@param latestVersion BOOL
    ---@param contentTypeName string
    ---@return BOOL
    UGC_QUERY_BY_CONTENT_IDS = function(data, count, latestVersion, contentTypeName) end,

    ---@param offset integer
    ---@param count integer
    ---@param contentTypeName string
    ---@param p3 integer
    ---@return BOOL
    UGC_QUERY_MOST_RECENTLY_CREATED_CONTENT = function(offset, count, contentTypeName, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 string
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_BOOKMARKED_CONTENT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 string
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_MY_CONTENT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 string
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_FRIEND_CONTENT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 string
    ---@param p4 Any*
    ---@return BOOL
    UGC_GET_CREW_CONTENT = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 string
    ---@param p4 Any*
    ---@return BOOL
    UGC_GET_GET_BY_CATEGORY = function(p0, p1, p2, p3, p4) end,

    ---@param contentId string
    ---@param contentTypeName string
    ---@return BOOL
    UGC_GET_GET_BY_CONTENT_ID = function(contentId, contentTypeName) end,

    ---@param data Any*
    ---@param dataCount integer
    ---@param contentTypeName string
    ---@return BOOL
    UGC_GET_GET_BY_CONTENT_IDS = function(data, dataCount, contentTypeName) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any*
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_MOST_RECENTLY_CREATED_CONTENT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any*
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_MOST_RECENTLY_PLAYED_CONTENT = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any*
    ---@param p3 Any*
    ---@return BOOL
    UGC_GET_TOP_RATED_CONTENT = function(p0, p1, p2, p3) end,

    UGC_CANCEL_QUERY = function() end,

    ---@return BOOL
    UGC_IS_GETTING = function() end,

    ---@return BOOL
    UGC_HAS_GET_FINISHED = function() end,

    ---@return BOOL
    UGC_DID_GET_SUCCEED = function() end,

    ---@return BOOL
    UGC_WAS_QUERY_FORCE_CANCELLED = function() end,

    ---@return integer
    UGC_GET_QUERY_RESULT = function() end,

    ---@return integer
    UGC_GET_CONTENT_NUM = function() end,

    ---@return integer
    UGC_GET_CONTENT_TOTAL = function() end,

    ---@return Hash
    UGC_GET_CONTENT_HASH = function() end,

    UGC_CLEAR_QUERY_RESULTS = function() end,

    ---@param p0 integer
    ---@return string
    UGC_GET_CONTENT_USER_ID = function(p0) end,

    ---@param p0 integer
    ---@param p1 Any*
    ---@return BOOL
    UGC_GET_CONTENT_CREATOR_GAMER_HANDLE = function(p0, p1) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_CREATED_BY_LOCAL_PLAYER = function(p0) end,

    ---@param p0 Any
    ---@return string
    UGC_GET_CONTENT_USER_NAME = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_IS_USING_SC_NICKNAME = function(p0) end,

    ---@param p0 integer
    ---@return integer
    UGC_GET_CONTENT_CATEGORY = function(p0) end,

    ---Return the mission id of a job.
    ---@param p0 integer
    ---@return string
    UGC_GET_CONTENT_ID = function(p0) end,

    ---Return the root content id of a job.
    ---@param p0 integer
    ---@return string
    UGC_GET_ROOT_CONTENT_ID = function(p0) end,

    ---@param p0 Any
    ---@return string
    UGC_GET_CONTENT_NAME = function(p0) end,

    ---@param index integer
    ---@return string
    UGC_GET_CONTENT_DESCRIPTION = function(index) end,

    ---@param p0 Any
    ---@return integer
    UGC_GET_CONTENT_DESCRIPTION_HASH = function(p0) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@return string
    UGC_GET_CONTENT_PATH = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any*
    UGC_GET_CONTENT_UPDATED_DATE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    UGC_GET_CONTENT_FILE_VERSION = function(p0, p1) end,

    ---@param p0 integer
    ---@return BOOL
    UGC_GET_CONTENT_HAS_LO_RES_PHOTO = function(p0) end,

    ---@param p0 integer
    ---@return BOOL
    UGC_GET_CONTENT_HAS_HI_RES_PHOTO = function(p0) end,

    ---@param p0 Any
    ---@return integer
    UGC_GET_CONTENT_LANGUAGE = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_IS_PUBLISHED = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_IS_VERIFIED = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return number
    UGC_GET_CONTENT_RATING = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    UGC_GET_CONTENT_RATING_COUNT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    UGC_GET_CONTENT_RATING_POSITIVE_COUNT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    UGC_GET_CONTENT_RATING_NEGATIVE_COUNT = function(p0, p1) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_HAS_PLAYER_RECORD = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_GET_CONTENT_HAS_PLAYER_BOOKMARKED = function(p0) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@return integer
    UGC_REQUEST_CONTENT_DATA_FROM_INDEX = function(p0, p1) end,

    ---@param contentTypeName string
    ---@param contentId string
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 integer
    ---@return integer
    UGC_REQUEST_CONTENT_DATA_FROM_PARAMS = function(contentTypeName, contentId, p2, p3, p4) end,

    ---@param p0 integer
    ---@return integer
    UGC_REQUEST_CACHED_DESCRIPTION = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_IS_DESCRIPTION_REQUEST_IN_PROGRESS = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_HAS_DESCRIPTION_REQUEST_FINISHED = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_DID_DESCRIPTION_REQUEST_SUCCEED = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return string
    UGC_GET_CACHED_DESCRIPTION = function(p0, p1) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_RELEASE_CACHED_DESCRIPTION = function(p0) end,

    UGC_RELEASE_ALL_CACHED_DESCRIPTIONS = function() end,

    ---@return BOOL
    UGC_HAS_PERMISSION_TO_WRITE = function() end,

    ---@param contentId string
    ---@param baseContentId string
    ---@param contentTypeName string
    ---@return BOOL
    UGC_PUBLISH = function(contentId, baseContentId, contentTypeName) end,

    ---@param contentId string
    ---@param bookmarked BOOL
    ---@param contentTypeName string
    ---@return BOOL
    UGC_SET_BOOKMARKED = function(contentId, bookmarked, contentTypeName) end,

    ---@param p0 Any*
    ---@param p1 BOOL
    ---@param p2 string
    ---@return BOOL
    UGC_SET_DELETED = function(p0, p1, p2) end,

    ---@return BOOL
    UGC_IS_MODIFYING = function() end,

    ---@return BOOL
    UGC_HAS_MODIFY_FINISHED = function() end,

    ---@return BOOL
    UGC_DID_MODIFY_SUCCEED = function() end,

    ---@return integer
    UGC_GET_MODIFY_RESULT = function() end,

    UGC_CLEAR_MODIFY_RESULT = function() end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    UGC_GET_CREATORS_BY_USER_ID = function(p0, p1) end,

    ---@return BOOL
    UGC_HAS_QUERY_CREATORS_FINISHED = function() end,

    ---@return BOOL
    UGC_DID_QUERY_CREATORS_SUCCEED = function() end,

    ---@return integer
    UGC_GET_CREATOR_NUM = function() end,

    ---@param p0 Any
    ---@return BOOL
    UGC_LOAD_OFFLINE_QUERY = function(p0) end,

    UGC_CLEAR_OFFLINE_QUERY = function() end,

    ---@param p0 BOOL
    UGC_SET_QUERY_DATA_FROM_OFFLINE = function(p0) end,

    ---@param p0 BOOL
    UGC_SET_USING_OFFLINE_CONTENT = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    UGC_IS_LANGUAGE_SUPPORTED = function(p0) end,

    ---@param heistName string
    ---@param cashEarned integer
    ---@param xpEarned integer
    ---@return BOOL
    FACEBOOK_POST_COMPLETED_HEIST = function(heistName, cashEarned, xpEarned) end,

    ---@return BOOL
    FACEBOOK_POST_CREATE_CHARACTER = function() end,

    ---@param milestoneId integer
    ---@return BOOL
    FACEBOOK_POST_COMPLETED_MILESTONE = function(milestoneId) end,

    ---@return BOOL
    FACEBOOK_HAS_POST_COMPLETED = function() end,

    ---@return BOOL
    FACEBOOK_DID_POST_SUCCEED = function() end,

    ---@return BOOL
    FACEBOOK_CAN_POST_TO_FACEBOOK = function() end,

    ---@param gamerHandle Any*
    ---@param filePath string
    ---@param name string
    ---@param p3 BOOL
    ---@return integer
    TEXTURE_DOWNLOAD_REQUEST = function(gamerHandle, filePath, name, p3) end,

    ---@param filePath string
    ---@param name string
    ---@param p2 BOOL
    ---@return integer
    TITLE_TEXTURE_DOWNLOAD_REQUEST = function(filePath, name, p2) end,

    ---@param p0 string
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 string
    ---@param p5 BOOL
    ---@return integer
    UGC_TEXTURE_DOWNLOAD_REQUEST = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 integer
    TEXTURE_DOWNLOAD_RELEASE = function(p0) end,

    ---@param p0 integer
    ---@return BOOL
    TEXTURE_DOWNLOAD_HAS_FAILED = function(p0) end,

    ---@param p0 integer
    ---@return string
    TEXTURE_DOWNLOAD_GET_NAME = function(p0) end,

    ---0 = succeeded\
    ---1 = pending\
    ---2 = failed
    ---@param p0 integer
    ---@return integer
    GET_STATUS_OF_TEXTURE_DOWNLOAD = function(p0) end,

    ---Returns true if profile setting 901 is set to true and sets it to false.
    ---@return BOOL
    NETWORK_CHECK_ROS_LINK_WENTDOWN_NOT_NET = function() end,

    ---Returns true if the NAT type is Strict (3) and a certain number of connections have failed.
    ---@return BOOL
    NETWORK_SHOULD_SHOW_STRICT_NAT_WARNING = function() end,

    ---@return BOOL
    NETWORK_IS_CABLE_CONNECTED = function() end,

    ---@return BOOL
    NETWORK_HAVE_SCS_PRIVATE_MSG_PRIV = function() end,

    ---@return BOOL
    NETWORK_HAVE_ROS_SOCIAL_CLUB_PRIV = function() end,

    ---@return BOOL
    NETWORK_HAVE_ROS_BANNED_PRIV = function() end,

    ---@return BOOL
    NETWORK_HAVE_ROS_CREATE_TICKET_PRIV = function() end,

    ---@return BOOL
    NETWORK_HAVE_ROS_MULTIPLAYER_PRIV = function() end,

    ---@return BOOL
    NETWORK_HAVE_ROS_LEADERBOARD_WRITE_PRIV = function() end,

    ---index is always 18 in scripts
    ---@param index integer
    ---@return BOOL
    NETWORK_HAS_ROS_PRIVILEGE = function(index) end,

    ---@param privilege integer
    ---@param banType integer
    ---@param timeData Any*
    ---@return BOOL
    ---@return integer
    NETWORK_HAS_ROS_PRIVILEGE_END_DATE = function(privilege, banType, timeData) end,

    ---@return BOOL
    NETWORK_HAS_ROS_PRIVILEGE_PLAYED_LAST_GEN = function() end,

    ---@return BOOL
    NETWORK_HAS_ROS_PRIVILEGE_SPECIAL_EDITION_CONTENT = function() end,

    ---Checks for privilege 29
    ---@return BOOL
    _NETWORK_HAS_ROS_PRIVILEGE_MP_TEXT_COMMUNICATION = function() end,

    ---Checks for privilege 30
    ---@return BOOL
    _NETWORK_HAS_ROS_PRIVILEGE_MP_VOICE_COMMUNICATION = function() end,

    ---Checks for privilege 31
    ---@return BOOL
    _NETWORK_HAS_ROS_PRIVILEGE_REPORTING = function() end,

    ---Always returns -1. Seems to be XB1 specific.
    ---@param netHandle Any*
    ---@return integer
    NETWORK_START_USER_CONTENT_PERMISSIONS_CHECK = function(netHandle) end,

    NETWORK_SKIP_RADIO_RESET_NEXT_CLOSE = function() end,

    NETWORK_SKIP_RADIO_RESET_NEXT_OPEN = function() end,

    ---Returns true if dinput8.dll is present in the game directory.\
    ---You will get following error message if that is true: "You are attempting to access GTA Online servers with an altered version of the game."
    ---@return BOOL
    NETWORK_SKIP_RADIO_WARNING = function() end,

    ---NETWORK_F[I-O]
    NETWORK_FORCE_LOCAL_PLAYER_SCAR_SYNC = function() end,

    ---@param toggle BOOL
    NETWORK_DISABLE_LEAVE_REMOTE_PED_BEHIND = function(toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    NETWORK_ALLOW_REMOTE_ATTACHMENT_MODIFICATION = function(entity, toggle) end,

    ---Does nothing (it's a nullsub).
    ---@param player Player
    NETWORK_SHOW_CHAT_RESTRICTION_MSC = function(player) end,

    ---This native does absolutely nothing, just a nullsub
    NETWORK_SHOW_PSN_UGC_RESTRICTION = function() end,

    ---This function is hard-coded to always return 0.
    ---@return BOOL
    NETWORK_IS_TITLE_UPDATE_REQUIRED = function() end,

    NETWORK_QUIT_MP_TO_DESKTOP = function() end,

    ---@param player Player
    ---@return BOOL
    ---@deprecated
    NETWORK_IS_CONNECTED_VIA_RELAY = function(player) end,

    ---@param player Player
    ---@return number
    ---@deprecated
    NETWORK_GET_AVERAGE_LATENCY = function(player) end,

    ---Same as NETWORK_GET_AVERAGE_LATENCY
    ---@param player Player
    ---@return number
    ---@deprecated
    NETWORK_GET_AVERAGE_PING = function(player) end,

    ---@param player Player
    ---@return number
    ---@deprecated
    NETWORK_GET_AVERAGE_PACKET_LOSS = function(player) end,

    ---@param player Player
    ---@return integer
    ---@deprecated
    NETWORK_GET_NUM_UNACKED_RELIABLES = function(player) end,

    ---@param player Player
    ---@return integer
    ---@deprecated
    NETWORK_GET_UNRELIABLE_RESEND_COUNT = function(player) end,

    ---@param player Player
    ---@return integer
    ---@deprecated
    NETWORK_GET_HIGHEST_RELIABLE_RESEND_COUNT = function(player) end,

    ---@deprecated
    NETWORK_REPORT_CODE_TAMPER = function() end,

    ---@param p0 Any*
    ---@deprecated
    _NETWORK_GET_DUMP_OF_ASSET_VERIFIER = function(p0) end,

    ---@param entity Entity
    ---@return Vector3
    NETWORK_GET_LAST_ENTITY_POS_RECEIVED_OVER_NETWORK = function(entity) end,

    ---Returns the coordinates of another player.\
    ---Does not work if you enter your own player id as p0 (will return `(0.0, 0.0, 0.0)` in that case).
    ---@param player Player
    ---@return Vector3
    NETWORK_GET_LAST_PLAYER_POS_RECEIVED_OVER_NETWORK = function(player) end,

    ---Used by NetBlender
    ---@param entity Entity
    ---@return Vector3
    NETWORK_GET_LAST_VEL_RECEIVED_OVER_NETWORK = function(entity) end,

    ---@param entity Entity
    ---@param maxSpeedToPredict number
    ---@return Vector3
    ---@deprecated
    NETWORK_GET_PREDICTED_VELOCITY = function(entity, maxSpeedToPredict) end,

    ---Does nothing (it's a nullsub).
    ---@deprecated
    NETWORK_DUMP_NET_IF_CONFIG = function() end,

    ---Does nothing (it's a nullsub).
    ---@param p0 Any*
    ---@deprecated
    NETWORK_GET_SIGNALLING_INFO = function(p0) end,

    ---Does nothing (it's a nullsub).
    ---@param p0 Any*
    ---@deprecated
    NETWORK_GET_NET_STATISTICS_INFO = function(p0) end,

    ---@param player Player
    ---@return integer
    NETWORK_GET_PLAYER_ACCOUNT_ID = function(player) end,

    ---@return BOOL
    NETWORK_HAS_SC_MEMBERSHIP = function() end,

    ---@param p0 Any
    ---@param p1 Any
    NETWORK_UGC_NAV = function(p0, p1) end,

    ---enum eNetworkGameRestartReason\
    ---{\
    ---	BE_RESTART_SERVICE_NOT_RUNNING = 1, 	// BattlEye service not running\
    ---	BE_RESTART_SERVICE_NEEDS_UPDATE, 		// BattlEye service needs an update\
    ---	BE_RESTART_UNKNOWN_REASON,				// Unknown BattlEye reason\
    ---	BE_RESTART_EF_DISABLED_WITH_BE,			// BattlEye Enforcement Flag is disabled, but BattlEye is active\
    ---	BE_RESTART_EF_ENABLED_NO_BE,			// BattlEye Enforcement Flag is enabled, but BattlEye is not active\
    ---	BE_RESTART_BE_MODULES_FAILED_TO_LOAD,	// BattlEye modules failed to load\
    ---	NUM_NETWORK_GAME_RESTART_REASONS\
    ---};
    ---@return integer
    _NETWORK_GET_GAME_RESTART_REASON = function() end,

    ---If the restart reason is 4 (BE_RESTART_EF_DISABLED_WITH_BE), will cause the game to exit with exit code 622011. Otherwise exits with code 622010. Has no effect when a restart hasn't been requested (reason == 0 or reason > 6).\
    ---\
    ---Note that this 'confirmation' itself does not restart the game, a call to QUIT_GAME or similar is required afterwards.
    _NETWORK_CONFIRM_GAME_RESTART = function() end,

    ---Returns the restart reason as a string, see _NETWORK_GET_GAME_RESTART_REASON. Returns a null pointer when a restart hasn't been requested (reason == 0 or reason > 6).
    ---@return string
    _NETWORK_GET_GAME_RESTART_REASON_MESSAGE_LABEL = function() end,

    ---0x20211000 = HUD_BE_ERROR_FAILED_UNKNOWN\
    ---0x20212000 = HUD_BE_ERROR_FAILED_CLIENT_INIT\
    ---0x20213000 = HUD_BE_ERROR_FAILED_SERVER_INIT\
    ---0x20214000 = HUD_BE_ERROR_FAILED_AUTH_ATTEMPTS\
    ---0x20215000 = HUD_BE_ERROR_UNTRUSTED_HOST\
    ---0x20216000 = HUD_BE_ERROR_KICKED\
    ---0x20217000 = HUD_BE_ERROR_BANNED\
    ---0x50140000 = HUD_BE_BLOCK_BANNED\
    ---\
    ---Note: an invalid error code returns a null pointer!
    ---@param errorCode integer
    ---@return string
    _NETWORK_GET_BATTLEYE_ERROR_MESSAGE_LABEL = function(errorCode) end
}

OBJECT = {
    ---List of object models that can be created without any additional effort like making sure ytyp is loaded etc: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ObjectList.ini
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param isNetwork BOOL
    ---@param bScriptHostObj BOOL
    ---@param dynamic BOOL
    ---@return Object
    CREATE_OBJECT = function(modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic) end,

    ---List of object models that can be created without any additional effort like making sure ytyp is loaded etc: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ObjectList.ini
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param isNetwork BOOL
    ---@param bScriptHostObj BOOL
    ---@param dynamic BOOL
    ---@param p7 Any
    ---@return Object
    CREATE_OBJECT_NO_OFFSET = function(modelHash, x, y, z, isNetwork, bScriptHostObj, dynamic, p7) end,

    ---Deletes the specified object, then sets the handle pointed to by the pointer to NULL.
    ---@param object Object
    ---@return Object
    DELETE_OBJECT = function(object) end,

    ---@param object Object
    ---@return BOOL
    PLACE_OBJECT_ON_GROUND_PROPERLY = function(object) end,

    ---@param object Object
    ---@return BOOL
    PLACE_OBJECT_ON_GROUND_OR_OBJECT_PROPERLY = function(object) end,

    ---@param object Object
    ---@param p1 number
    ---@param p2 number
    ---@param p3 BOOL
    ---@return BOOL
    ROTATE_OBJECT = function(object, p1, p2, p3) end,

    ---Returns true if the object has finished moving.\
    ---\
    ---If false, moves the object towards the specified X, Y and Z coordinates with the specified X, Y and Z speed.\
    ---\
    ---See also: https://gtagmodding.com/opcode-database/opcode/034E/\
    ---Has to be looped until it returns true.
    ---@param object Object
    ---@param toX number
    ---@param toY number
    ---@param toZ number
    ---@param speedX number
    ---@param speedY number
    ---@param speedZ number
    ---@param collision BOOL
    ---@return BOOL
    SLIDE_OBJECT = function(object, toX, toY, toZ, speedX, speedY, speedZ, collision) end,

    ---@param object Object
    ---@param targettable BOOL
    ---@param p2 Any
    SET_OBJECT_TARGETTABLE = function(object, targettable, p2) end,

    ---Sets the 34th and 35th object flags related to player peds.
    ---@param object Object
    ---@param setFlag34 BOOL
    ---@param setFlag35 BOOL
    _SET_OBJECT_TARGETTABLE_BY_PLAYER = function(object, setFlag34, setFlag35) end,

    ---Overrides a flag on the object which determines if the object should be avoided by a vehicle in task CTaskVehicleGoToPointWithAvoidanceAutomobile.
    ---@param object Object
    ---@param toggle BOOL
    SET_OBJECT_FORCE_VEHICLES_TO_AVOID = function(object, toggle) end,

    ---Has 8 params in the latest patches.\
    ---\
    ---isMission - if true doesn't return mission objects
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param isMission BOOL
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@return Object
    GET_CLOSEST_OBJECT_OF_TYPE = function(x, y, z, radius, modelHash, isMission, p6, p7) end,

    ---@param object Object
    ---@param p1 Any
    ---@return BOOL
    HAS_OBJECT_BEEN_BROKEN = function(object, p1) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param modelHash Hash
    ---@param p5 Any
    ---@return BOOL
    HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_BROKEN = function(p0, p1, p2, p3, modelHash, p5) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param p5 BOOL
    ---@return BOOL
    HAS_CLOSEST_OBJECT_OF_TYPE_BEEN_COMPLETELY_DESTROYED = function(x, y, z, radius, modelHash, p5) end,

    ---@param p0 Any
    ---@return BOOL
    GET_HAS_OBJECT_BEEN_COMPLETELY_DESTROYED = function(p0) end,

    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param heading number
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@return Vector3
    GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS = function(xPos, yPos, zPos, heading, xOffset, yOffset, zOffset) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param outPosition Vector3
    ---@param outRotation Vector3
    ---@param rotationOrder integer
    ---@return BOOL
    GET_COORDS_AND_ROTATION_OF_CLOSEST_OBJECT_OF_TYPE = function(x, y, z, radius, modelHash, outPosition, outRotation, rotationOrder) end,

    ---Hardcoded to not work in multiplayer.\
    ---\
    ---\
    ---Used to lock/unlock doors to interior areas of the game.\
    ---\
    ---(Possible) Door Types:\
    ---\
    ---https://pastebin.com/9S2m3qA4\
    ---\
    ---Heading is either 1, 0 or -1 in the scripts. Means default closed(0) or opened either into(1) or out(-1) of the interior.\
    ---Locked means that the heading is locked.  \
    ---p6 is always 0. \
    ---\
    ---225 door types, model names and coords found in stripclub.c4:\
    ---https://pastebin.com/gywnbzsH\
    ---\
    ---get door info: https://pastebin.com/i14rbekD
    ---@param type Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param locked BOOL
    ---@param heading number
    ---@param p6 BOOL
    SET_STATE_OF_CLOSEST_DOOR_OF_TYPE = function(type, x, y, z, locked, heading, p6) end,

    ---locked is 0 if no door is found\
    ---locked is 0 if door is unlocked\
    ---locked is 1 if door is found and unlocked.\
    ---\
    ----------------\
    ---the locked bool is either 0(unlocked)(false) or 1(locked)(true)
    ---@param type Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param locked BOOL
    ---@param heading number
    ---@return BOOL
    ---@return number
    GET_STATE_OF_CLOSEST_DOOR_OF_TYPE = function(type, x, y, z, locked, heading) end,

    ---Hardcoded not to work in multiplayer environments.\
    ---When you set locked to 0 the door open and to 1 the door close\
    ---OBJECT::SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 0, 0.0, 50.0, 0);  //door open\
    ---\
    ---OBJECT::SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(${prop_gate_prison_01}, 1845.0, 2605.0, 45.0, 1, 0.0, 50.0, 0);  //door close
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param locked BOOL
    ---@param xRotMult number
    ---@param yRotMult number
    ---@param zRotMult number
    SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE = function(modelHash, x, y, z, locked, xRotMult, yRotMult, zRotMult) end,

    ---@param p0 Any
    PLAY_OBJECT_AUTO_START_ANIM = function(p0) end,

    ---doorHash has to be unique. scriptDoor false; relies upon getNetworkGameScriptHandler. isLocal On true disables the creation CRequestDoorEvent's in DOOR_SYSTEM_SET_DOOR_STATE.\
    ---p5 only set to true in single player native scripts.\
    ---If scriptDoor is true, register the door on the script handler host (note: there's a hardcap on the number of script IDs that can be added to the system at a given time). If scriptDoor and isLocal are both false, the door is considered to be in a "Persists w/o netobj" state.\
    ---\
    ---door hashes normally look like PROP_[int]_DOOR_[int] for interior doors and PROP_BUILDING_[int]_DOOR_[int] exterior doors but you can just make up your own hash if you want\
    ---All doors need to be registered with ADD_DOOR_TO_SYSTEM before they can be manipulated with the door natives and the easiest way to get door models is just find the door in codewalker.\
    ---\
    ---Example: AddDoorToSystem("PROP_43_DOOR_0", "hei_v_ilev_fh_heistdoor2", -1456.818, -520.5037, 69.67043, 0, 0, 0)
    ---@param doorHash Hash
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 BOOL
    ---@param scriptDoor BOOL
    ---@param isLocal BOOL
    ---@param p8 Any
    ADD_DOOR_TO_SYSTEM = function(doorHash, modelHash, x, y, z, p5, scriptDoor, isLocal, p8) end,

    ---CDoor and CDoorSystemData still internally allocated (and their associations between doorHash, modelHash, and coordinates).\
    ---Only its NetObj removed and flag ``*(v2 + 192) |= 8u`` (1604 retail) toggled.
    ---@param doorHash Hash
    ---@param p1 Any
    REMOVE_DOOR_FROM_SYSTEM = function(doorHash, p1) end,

    ---Lockstates not applied and CNetObjDoor's not created until DOOR_SYSTEM_GET_IS_PHYSICS_LOADED returns true.\
    ---`requestDoor` on true, and when door system is configured to, i.e., "persists w/o netobj", generate a CRequestDoorEvent.\
    ---`forceUpdate` on true, forces an update on the door system (same path as netObjDoor_applyDoorStuff)\
    ---Door lock states:\
    ---0: UNLOCKED\
    ---1: LOCKED\
    ---2: DOORSTATE_FORCE_LOCKED_UNTIL_OUT_OF_AREA\
    ---3: DOORSTATE_FORCE_UNLOCKED_THIS_FRAME\
    ---4: DOORSTATE_FORCE_LOCKED_THIS_FRAME\
    ---5: DOORSTATE_FORCE_OPEN_THIS_FRAME\
    ---6: DOORSTATE_FORCE_CLOSED_THIS_FRAME
    ---@param doorHash Hash
    ---@param state integer
    ---@param requestDoor BOOL
    ---@param forceUpdate BOOL
    DOOR_SYSTEM_SET_DOOR_STATE = function(doorHash, state, requestDoor, forceUpdate) end,

    ---@param doorHash Hash
    ---@return integer
    DOOR_SYSTEM_GET_DOOR_STATE = function(doorHash) end,

    ---@param doorHash Hash
    ---@return integer
    DOOR_SYSTEM_GET_DOOR_PENDING_STATE = function(doorHash) end,

    ---Includes networking check: ownership vs. or the door itself **isn't** networked.\
    ---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.
    ---@param doorHash Hash
    ---@param rate number
    ---@param requestDoor BOOL
    ---@param forceUpdate BOOL
    DOOR_SYSTEM_SET_AUTOMATIC_RATE = function(doorHash, rate, requestDoor, forceUpdate) end,

    ---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.
    ---@param doorHash Hash
    ---@param distance number
    ---@param requestDoor BOOL
    ---@param forceUpdate BOOL
    DOOR_SYSTEM_SET_AUTOMATIC_DISTANCE = function(doorHash, distance, requestDoor, forceUpdate) end,

    ---Sets the ajar angle of a door.\
    ---Ranges from -1.0 to 1.0, and 0.0 is closed / default.\
    ---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.
    ---@param doorHash Hash
    ---@param ajar number
    ---@param requestDoor BOOL
    ---@param forceUpdate BOOL
    DOOR_SYSTEM_SET_OPEN_RATIO = function(doorHash, ajar, requestDoor, forceUpdate) end,

    ---@param doorHash Hash
    ---@return number
    DOOR_SYSTEM_GET_AUTOMATIC_DISTANCE = function(doorHash) end,

    ---@param doorHash Hash
    ---@return number
    DOOR_SYSTEM_GET_OPEN_RATIO = function(doorHash) end,

    ---@param doorHash Hash
    ---@return BOOL
    DOOR_SYSTEM_GET_IS_SPRING_REMOVED = function(doorHash) end,

    ---Includes networking check: ownership vs. or the door itself **isn't** networked.\
    ---`forceUpdate` on true invokes DOOR_SYSTEM_SET_DOOR_STATE otherwise requestDoor is unused.
    ---@param doorHash Hash
    ---@param removed BOOL
    ---@param requestDoor BOOL
    ---@param forceUpdate BOOL
    DOOR_SYSTEM_SET_SPRING_REMOVED = function(doorHash, removed, requestDoor, forceUpdate) end,

    ---Includes networking check: ownership vs. or the door itself **isn't** networked.
    ---@param doorHash Hash
    ---@param toggle BOOL
    DOOR_SYSTEM_SET_HOLD_OPEN = function(doorHash, toggle) end,

    ---Some property related to gates. Native name between ``DOOR_SYSTEM_SET_AUTOMATIC_RATE`` and ``DOOR_SYSTEM_SET_DOOR_STATE``.
    ---@param doorHash Hash
    ---@param p1 BOOL
    DOOR_SYSTEM_SET_DOOR_OPEN_FOR_RACES = function(doorHash, p1) end,

    ---if (OBJECT::IS_DOOR_REGISTERED_WITH_SYSTEM(doorHash)) \
    ---{\
    ---    OBJECT::REMOVE_DOOR_FROM_SYSTEM(doorHash);\
    ---}
    ---@param doorHash Hash
    ---@return BOOL
    IS_DOOR_REGISTERED_WITH_SYSTEM = function(doorHash) end,

    ---@param doorHash Hash
    ---@return BOOL
    IS_DOOR_CLOSED = function(doorHash) end,

    ---@param p0 BOOL
    OPEN_ALL_BARRIERS_FOR_RACE = function(p0) end,

    ---Clears the fields sets by 0xC7F29CA00F46350E (1604 retail: 0x1424A7A10, 0x1424A7A11) and iterates over the global CDoor's bucket-list.\
    ---Related to its "Pre-networked state"?
    CLOSE_ALL_BARRIERS_FOR_RACE = function() end,

    ---@param p0 Any
    ---@return BOOL
    DOOR_SYSTEM_GET_IS_PHYSICS_LOADED = function(p0) end,

    ---Search radius: 0.5
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param modelHash Hash
    ---@param outDoorHash Hash
    ---@return BOOL
    ---@return Hash
    DOOR_SYSTEM_FIND_EXISTING_DOOR = function(x, y, z, modelHash, outDoorHash) end,

    ---@param garageHash Hash
    ---@param p1 BOOL
    ---@param p2 integer
    ---@return BOOL
    IS_GARAGE_EMPTY = function(garageHash, p1, p2) end,

    ---@param garageHash Hash
    ---@param player Player
    ---@param p2 number
    ---@param p3 integer
    ---@return BOOL
    IS_PLAYER_ENTIRELY_INSIDE_GARAGE = function(garageHash, player, p2, p3) end,

    ---@param garageHash Hash
    ---@param player Player
    ---@param p2 integer
    ---@return BOOL
    IS_PLAYER_PARTIALLY_INSIDE_GARAGE = function(garageHash, player, p2) end,

    ---@param garageHash Hash
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    ---@return BOOL
    ARE_ENTITIES_ENTIRELY_INSIDE_GARAGE = function(garageHash, p1, p2, p3, p4) end,

    ---@param garageHash Hash
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 Any
    ---@return BOOL
    IS_ANY_ENTITY_ENTIRELY_INSIDE_GARAGE = function(garageHash, p1, p2, p3, p4) end,

    ---Despite the name, it does work for any entity type.
    ---@param garageHash Hash
    ---@param entity Entity
    ---@param p2 number
    ---@param p3 integer
    ---@return BOOL
    IS_OBJECT_ENTIRELY_INSIDE_GARAGE = function(garageHash, entity, p2, p3) end,

    ---Despite the name, it does work for any entity type.
    ---@param garageHash Hash
    ---@param entity Entity
    ---@param p2 integer
    ---@return BOOL
    IS_OBJECT_PARTIALLY_INSIDE_GARAGE = function(garageHash, entity, p2) end,

    ---@param garageHash Hash
    ---@param isNetwork BOOL
    CLEAR_GARAGE = function(garageHash, isNetwork) end,

    ---@param garageHash Hash
    ---@param vehicles BOOL
    ---@param peds BOOL
    ---@param objects BOOL
    ---@param isNetwork BOOL
    CLEAR_OBJECTS_INSIDE_GARAGE = function(garageHash, vehicles, peds, objects, isNetwork) end,

    ---Sets a flag. A valid id is 0x157DC10D
    ---@param id integer
    ---@param toggle BOOL
    DISABLE_TIDYING_UP_IN_GARAGE = function(id, toggle) end,

    ---@param garageHash Hash
    ---@param toggle BOOL
    ENABLE_SAVING_IN_GARAGE = function(garageHash, toggle) end,

    CLOSE_SAFEHOUSE_GARAGES = function() end,

    ---p5 is usually 0.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param hash Hash
    ---@param p5 BOOL
    ---@return BOOL
    DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS = function(x, y, z, radius, hash, p5) end,

    ---An angled area is an X-Z oriented rectangle with three parameters:\
    ---1. origin: the mid-point along a base edge of the rectangle;\
    ---2. extent: the mid-point of opposite base edge on the other Z;\
    ---3. width: the length of the base edge; (named derived from logging strings ``CNetworkRoadNodeWorldStateData``).\
    ---\
    ---The oriented rectangle can then be derived from the direction of the two points (``norm(origin - extent)``), its orthonormal, and the width, e.g:\
    ---1. golf_mp https://i.imgur.com/JhsQAK9.png\
    ---2. am_taxi https://i.imgur.com/TJWCZaT.jpg
    ---@param xPos number
    ---@param yPos number
    ---@param zPos number
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param debug BOOL
    ---@param includeZ BOOL
    ---@return BOOL
    IS_POINT_IN_ANGLED_AREA = function(xPos, yPos, zPos, x1, y1, z1, x2, y2, z2, width, debug, includeZ) end,

    ---Overrides the climbing/blocking flags of the object, used in the native scripts mostly for "prop_dock_bouy_*"
    ---@param object Object
    ---@param toggle BOOL
    SET_OBJECT_ALLOW_LOW_LOD_BUOYANCY = function(object, toggle) end,

    ---Adjust the physics parameters of a prop, or otherwise known as "object". This is useful for simulated gravity.\
    ---\
    ---Other parameters seem to be unknown.\
    ---\
    ---p2: seems to be weight and gravity related. Higher value makes the obj fall faster. Very sensitive?\
    ---p3: seems similar to p2\
    ---p4: makes obj fall slower the higher the value\
    ---p5: similar to p4
    ---@param object Object
    ---@param weight number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param gravity number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param p10 number
    ---@param buoyancy number
    SET_OBJECT_PHYSICS_PARAMS = function(object, weight, p2, p3, p4, p5, gravity, p7, p8, p9, p10, buoyancy) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@return number
    GET_OBJECT_FRAGMENT_DAMAGE_HEALTH = function(p0, p1) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_ACTIVATE_OBJECT_PHYSICS_AS_SOON_AS_IT_IS_UNFROZEN = function(object, toggle) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    ---@param p4 BOOL
    ---@return BOOL
    IS_ANY_OBJECT_NEAR_POINT = function(x, y, z, range, p4) end,

    ---@param objectHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    ---@return BOOL
    IS_OBJECT_NEAR_POINT = function(objectHash, x, y, z, range) end,

    ---@param object Object
    REMOVE_OBJECT_HIGH_DETAIL_MODEL = function(object) end,

    ---@param p0 Object
    ---@param p1 Any
    ---@param p2 BOOL
    BREAK_OBJECT_FRAGMENT_CHILD = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    DAMAGE_OBJECT_FRAGMENT_CHILD = function(p0, p1, p2) end,

    ---@param object Object
    FIX_OBJECT_FRAGMENT = function(object) end,

    ---@param object Object
    TRACK_OBJECT_VISIBILITY = function(object) end,

    ---@param object Object
    ---@return BOOL
    IS_OBJECT_VISIBLE = function(object) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_OBJECT_IS_SPECIAL_GOLFBALL = function(object, toggle) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_OBJECT_TAKES_DAMAGE_FROM_COLLIDING_WITH_BUILDINGS = function(p0, p1) end,

    ---@param value BOOL
    ALLOW_DAMAGE_EVENTS_FOR_NON_NETWORKED_OBJECTS = function(value) end,

    ---Requires a component_at_*_flsh to be attached to the weapon object
    ---@param object Object
    ---@param toggle BOOL
    SET_CUTSCENES_WEAPON_FLASHLIGHT_ON_THIS_FRAME = function(object, toggle) end,

    ---Example:\
    ---OBJECT::GET_RAYFIRE_MAP_OBJECT(-809.9619750976562, 170.919, 75.7406997680664, 3.0, "des_tvsmash");
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param name string
    ---@return Object
    GET_RAYFIRE_MAP_OBJECT = function(x, y, z, radius, name) end,

    ---Defines the state of a destructible object.\
    ---Use the GET_RAYFIRE_MAP_OBJECT native to find an object's handle with its name / coords.\
    ---State 2 == object just spawned\
    ---State 4 == Beginning of the animation\
    ---State 6 == Start animation\
    ---State 9 == End of the animation
    ---@param object Object
    ---@param state integer
    SET_STATE_OF_RAYFIRE_MAP_OBJECT = function(object, state) end,

    ---Get a destructible object's state.\
    ---Substract 1 to get the real state.\
    ---See SET_STATE_OF_RAYFIRE_MAP_OBJECT to see the different states\
    ---For example, if the object just spawned (state 2), the native will return 3.
    ---@param object Object
    ---@return integer
    GET_STATE_OF_RAYFIRE_MAP_OBJECT = function(object) end,

    ---Returns true if a destructible object with this handle exists, false otherwise.  
    ---@param object Object
    ---@return BOOL
    DOES_RAYFIRE_MAP_OBJECT_EXIST = function(object) end,

    ---`object`: The des-object handle to get the animation progress from.\
    ---Return value is a float between 0.0 and 1.0, 0.0 is the beginning of the animation, 1.0 is the end. Value resets to 0.0 instantly after reaching 1.0.
    ---@param object Object
    ---@return number
    GET_RAYFIRE_MAP_OBJECT_ANIM_PHASE = function(object) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param p4 integer
    ---@param value integer
    ---@param p6 BOOL
    ---@param modelHash Hash
    ---@return Pickup
    CREATE_PICKUP = function(pickupHash, posX, posY, posZ, p4, value, p6, modelHash) end,

    ---flags:\
    ---8 (1 << 3): place on ground\
    ---512 (1 << 9): spin around\
    ---\
    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param flag integer
    ---@param amount integer
    ---@param p9 Any
    ---@param p10 BOOL
    ---@param modelHash Hash
    ---@return Pickup
    CREATE_PICKUP_ROTATE = function(pickupHash, posX, posY, posZ, rotX, rotY, rotZ, flag, amount, p9, p10, modelHash) end,

    FORCE_PICKUP_ROTATE_FACE_UP = function() end,

    ---@param pickupHash Hash
    ---@param pickup Pickup
    SET_CUSTOM_PICKUP_WEAPON_HASH = function(pickupHash, pickup) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param flags integer
    ---@param value integer
    ---@param modelHash Hash
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@return Object
    CREATE_AMBIENT_PICKUP = function(pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8) end,

    ---@param pickupHash Hash
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param flags integer
    ---@param value integer
    ---@param modelHash Hash
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@return Object
    CREATE_NON_NETWORKED_AMBIENT_PICKUP = function(pickupHash, posX, posY, posZ, flags, value, modelHash, p7, p8) end,

    ---@param p0 Any
    ---@param p1 Any
    BLOCK_PLAYERS_FOR_AMBIENT_PICKUP = function(p0, p1) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param placeOnGround BOOL
    ---@param modelHash Hash
    ---@return Object
    CREATE_PORTABLE_PICKUP = function(pickupHash, x, y, z, placeOnGround, modelHash) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param placeOnGround BOOL
    ---@param modelHash Hash
    ---@return Object
    CREATE_NON_NETWORKED_PORTABLE_PICKUP = function(pickupHash, x, y, z, placeOnGround, modelHash) end,

    ---@param pickupObject Object
    ---@param ped Ped
    ATTACH_PORTABLE_PICKUP_TO_PED = function(pickupObject, ped) end,

    ---@param pickupObject Object
    DETACH_PORTABLE_PICKUP_FROM_PED = function(pickupObject) end,

    ---@param object Object
    FORCE_PORTABLE_PICKUP_LAST_ACCESSIBLE_POSITION_SETTING = function(object) end,

    ---@param pickupObject Object
    ---@param toggle BOOL
    HIDE_PORTABLE_PICKUP_WHEN_DETACHED = function(pickupObject, toggle) end,

    ---@param modelHash Hash
    ---@param number integer
    SET_MAX_NUM_PORTABLE_PICKUPS_CARRIED_BY_PLAYER = function(modelHash, number) end,

    ---@param toggle BOOL
    SET_LOCAL_PLAYER_CAN_COLLECT_PORTABLE_PICKUPS = function(toggle) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 number
    ---@return Vector3
    GET_SAFE_PICKUP_COORDS = function(x, y, z, p3, p4) end,

    ---Adds an area that seems to be related to pickup physics behavior.\
    ---Max amount of areas is 10. Only works in multiplayer.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ADD_EXTENDED_PICKUP_PROBE_AREA = function(x, y, z, radius) end,

    ---Clears all areas created by ADD_EXTENDED_PICKUP_PROBE_AREA
    CLEAR_EXTENDED_PICKUP_PROBE_AREAS = function() end,

    ---@param pickup Pickup
    ---@return Vector3
    GET_PICKUP_COORDS = function(pickup) end,

    ---@param p0 Any
    ---@param p1 Any
    SUPPRESS_PICKUP_SOUND_FOR_PICKUP = function(p0, p1) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    REMOVE_ALL_PICKUPS_OF_TYPE = function(pickupHash) end,

    ---@param pickup Pickup
    ---@return BOOL
    HAS_PICKUP_BEEN_COLLECTED = function(pickup) end,

    ---@param pickup Pickup
    REMOVE_PICKUP = function(pickup) end,

    ---Spawns one or more money pickups.\
    ---\
    ---x: The X-component of the world position to spawn the money pickups at.\
    ---y: The Y-component of the world position to spawn the money pickups at.\
    ---z: The Z-component of the world position to spawn the money pickups at.\
    ---value: The combined value of the pickups (in dollars).\
    ---amount: The number of pickups to spawn.\
    ---model: The model to use, or 0 for default money model.\
    ---\
    ---Example:\
    ---CREATE_MONEY_PICKUPS(x, y, z, 1000, 3, 0x684a97ae);\
    ---\
    ---Spawns 3 spray cans that'll collectively give $1000 when picked up. (Three spray cans, each giving $334, $334, $332 = $1000).\
    ---\
    ---==============================================\
    ---\
    ---Max is 2000 in MP. So if you put the amount to 20, but the value to $400,000 eg. They will only be able to pickup 20 - $2,000 bags. So, $40,000
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param value integer
    ---@param amount integer
    ---@param model Hash
    CREATE_MONEY_PICKUPS = function(x, y, z, value, amount, model) end,

    ---@param pickup Pickup
    ---@return BOOL
    DOES_PICKUP_EXIST = function(pickup) end,

    ---@param pickupObject Object
    ---@return BOOL
    DOES_PICKUP_OBJECT_EXIST = function(pickupObject) end,

    ---@param pickup Pickup
    ---@return Object
    GET_PICKUP_OBJECT = function(pickup) end,

    ---@param object Object
    ---@return BOOL
    IS_OBJECT_A_PICKUP = function(object) end,

    ---@param object Object
    ---@return BOOL
    IS_OBJECT_A_PORTABLE_PICKUP = function(object) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    DOES_PICKUP_OF_TYPE_EXIST_IN_AREA = function(pickupHash, x, y, z, radius) end,

    ---@param pickup Pickup
    ---@param duration integer
    SET_PICKUP_REGENERATION_TIME = function(pickup, duration) end,

    ---@param p0 Any
    FORCE_PICKUP_REGENERATE = function(p0) end,

    ---Disabling/enabling a player from getting pickups. From the scripts:\
    ---\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 1);\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_portable_package}, 0);\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 0);\
    ---OBJECT::SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE(PLAYER::PLAYER_ID(), ${pickup_armour_standard}, 1);\
    ---\
    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param player Player
    ---@param pickupHash Hash
    ---@param toggle BOOL
    SET_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_OF_TYPE = function(player, pickupHash, toggle) end,

    ---Maximum amount of pickup models that can be disallowed is 30.
    ---@param modelHash Hash
    ---@param toggle BOOL
    SET_LOCAL_PLAYER_PERMITTED_TO_COLLECT_PICKUPS_WITH_MODEL = function(modelHash, toggle) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ALLOW_ALL_PLAYERS_TO_COLLECT_PICKUPS_OF_TYPE = function(pickupHash) end,

    ---@param object Object
    ---@param p1 Any
    ---@param p2 BOOL
    SET_TEAM_PICKUP_OBJECT = function(object, p1, p2) end,

    ---@param object Object
    ---@param p1 BOOL
    ---@param p2 BOOL
    PREVENT_COLLECTION_OF_PORTABLE_PICKUP = function(object, p1, p2) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_OBJECT_GLOW_WHEN_UNCOLLECTABLE = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    _SET_PICKUP_GLOW_DISABLED = function(pickup, toggle) end,

    ---p1 is always 0.51. This native is called before SET_PICKUP_REGENERATION_TIME in all occurances.
    ---@param pickup Pickup
    ---@param p1 number
    SET_PICKUP_GLOW_OFFSET = function(pickup, p1) end,

    ---p1 is always -0.2 in scripts and p2 is always true in scripts.
    ---@param pickup Pickup
    ---@param p1 number
    ---@param p2 BOOL
    SET_PICKUP_OBJECT_GLOW_OFFSET = function(pickup, p1, p2) end,

    ---@param pickup Pickup
    SET_OBJECT_GLOW_IN_SAME_TEAM = function(pickup) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_OBJECT_ARROW_MARKER = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    ALLOW_PICKUP_ARROW_MARKER_WHEN_UNCOLLECTABLE = function(pickup, toggle) end,

    ---@param pickupHash Hash
    ---@return integer
    GET_DEFAULT_AMMO_FOR_WEAPON_PICKUP = function(pickupHash) end,

    ---@param multiplier number
    SET_PICKUP_GENERATION_RANGE_MULTIPLIER = function(multiplier) end,

    ---@return number
    GET_PICKUP_GENERATION_RANGE_MULTIPLIER = function() end,

    ---@param p0 BOOL
    SET_ONLY_ALLOW_AMMO_COLLECTION_WHEN_LOW = function(p0) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_UNCOLLECTABLE = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_TRANSPARENT_WHEN_UNCOLLECTABLE = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_HIDDEN_WHEN_UNCOLLECTABLE = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_OBJECT_TRANSPARENT_WHEN_UNCOLLECTABLE = function(pickup, toggle) end,

    ---p0 is either 0 or 50 in scripts.
    ---@param p0 integer
    SET_PICKUP_OBJECT_ALPHA_WHEN_TRANSPARENT = function(p0) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PORTABLE_PICKUP_PERSIST = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    ALLOW_PORTABLE_PICKUP_TO_MIGRATE_TO_NON_PARTICIPANTS = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    FORCE_ACTIVATE_PHYSICS_ON_UNFIXED_PICKUP = function(pickup, toggle) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    ALLOW_PICKUP_BY_NONE_PARTICIPANT = function(pickup, toggle) end,

    ---enum ePickupRewardType\
    ---{\
    ---    PICKUP_REWARD_TYPE_AMMO = (1 << 0),\
    ---    PICKUP_REWARD_TYPE_BULLET_MP = (1 << 1),\
    ---    PICKUP_REWARD_TYPE_MISSILE_MP = (1 << 2),\
    ---    PICKUP_REWARD_TYPE_GRENADE_LAUNCHER_MP = (1 << 3),\
    ---    PICKUP_REWARD_TYPE_ARMOUR = (1 << 4),\
    ---    PICKUP_REWARD_TYPE_HEALTH = (1 << 5),\
    ---    PICKUP_REWARD_TYPE_HEALTH_VARIABLE = PICKUP_REWARD_TYPE_HEALTH,\
    ---    PICKUP_REWARD_TYPE_MONEY_FIXED = (1 << 6),\
    ---    PICKUP_REWARD_TYPE_MONEY_VARIABLE = PICKUP_REWARD_TYPE_MONEY_FIXED,\
    ---    PICKUP_REWARD_TYPE_WEAPON = (1 << 7),\
    ---    PICKUP_REWARD_TYPE_STAT = (1 << 8),\
    ---    PICKUP_REWARD_TYPE_STAT_VARIABLE = PICKUP_REWARD_TYPE_STAT,\
    ---    PICKUP_REWARD_TYPE_VEHICLE_FIX = (1 << 9),\
    ---    PICKUP_REWARD_TYPE_FIREWORK_MP = (1 << 10),\
    ---};
    ---@param rewardType integer
    ---@param suppress BOOL
    SUPPRESS_PICKUP_REWARD_TYPE = function(rewardType, suppress) end,

    CLEAR_ALL_PICKUP_REWARD_TYPE_SUPPRESSION = function() end,

    ---@param rewardType integer
    CLEAR_PICKUP_REWARD_TYPE_SUPPRESSION = function(rewardType) end,

    ---draws circular marker at pos\
    ----1 = none\
    ---0 = red\
    ---1 = green\
    ---2 = blue\
    ---3 = green larger\
    ---4 = nothing\
    ---5 = green small
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param colorIndex integer
    RENDER_FAKE_PICKUP_GLOW = function(x, y, z, colorIndex) end,

    ---@param pickup Pickup
    SET_PICKUP_OBJECT_COLLECTABLE_IN_VEHICLE = function(pickup) end,

    ---@param pickup Pickup
    ---@param toggle BOOL
    SET_PICKUP_TRACK_DAMAGE_EVENTS = function(pickup, toggle) end,

    ---Sets entity+38 to C (when false) or 0xFF3f (when true)
    ---@param entity Entity
    ---@param toggle BOOL
    SET_ENTITY_FLAG_SUPPRESS_SHADOW = function(entity, toggle) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_ENTITY_FLAG_RENDER_SMALL_SHADOW = function(object, toggle) end,

    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@return Hash
    GET_WEAPON_TYPE_FROM_PICKUP_TYPE = function(pickupHash) end,

    ---Returns the pickup hash for the given weapon hash
    ---@param weaponHash Hash
    ---@return Hash
    GET_PICKUP_TYPE_FROM_WEAPON_HASH = function(weaponHash) end,

    ---@param object Object
    ---@return BOOL
    IS_PICKUP_WEAPON_OBJECT_VALID = function(object) end,

    ---@param object Object
    ---@return integer
    GET_OBJECT_TINT_INDEX = function(object) end,

    ---enum ObjectPaintVariants\
    ---{\
    --- Pacific = 0,\
    ---  Azure = 1,\
    ---    Nautical = 2,\
    --- Continental = 3,\
    ---  Battleship = 4,\
    ---   Intrepid = 5,\
    --- Uniform = 6,\
    ---  Classico = 7,\
    --- Mediterranean = 8,\
    ---    Command = 9,\
    ---  Mariner = 10,\
    --- Ruby = 11,\
    ---    Vintage = 12,\
    --- Pristine = 13,\
    ---    Merchant = 14,\
    ---    Voyager = 15\
    ---};
    ---@param object Object
    ---@param textureVariation integer
    SET_OBJECT_TINT_INDEX = function(object, textureVariation) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param textureVariation integer
    ---@return BOOL
    SET_TINT_INDEX_CLOSEST_BUILDING_OF_TYPE = function(x, y, z, radius, modelHash, textureVariation) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PROP_TINT_INDEX = function(p0, p1) end,

    ---@param object Object
    ---@param p1 BOOL
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return BOOL
    SET_PROP_LIGHT_COLOR = function(object, p1, r, g, b) end,

    ---@param object Object
    ---@return BOOL
    IS_PROP_LIGHT_OVERRIDEN = function(object) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_OBJECT_IS_VISIBLE_IN_MIRRORS = function(object, toggle) end,

    ---@param object Object
    ---@param p1 Any
    SET_OBJECT_SPEED_BOOST_AMOUNT = function(object, p1) end,

    ---@param object Object
    ---@param duration number
    SET_OBJECT_SPEED_BOOST_DURATION = function(object, duration) end,

    ---returns pickup hash.\
    ---\
    ---Full list of pickup types by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pickupTypes.json
    ---@param pickupHash Hash
    ---@return Hash
    CONVERT_OLD_PICKUP_TYPE_TO_NEW = function(pickupHash) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    SET_FORCE_OBJECT_THIS_FRAME = function(x, y, z, p3) end,

    ---@param object Object
    ONLY_CLEAN_UP_OBJECT_WHEN_OUT_OF_RANGE = function(object) end,

    ---@param p0 Any
    SET_DISABLE_COLLISIONS_BETWEEN_CARS_AND_CAR_PARACHUTE = function(p0) end,

    ---@param entity Entity
    ---@param p1 Any
    SET_PROJECTILES_SHOULD_EXPLODE_ON_CONTACT = function(entity, p1) end,

    ---Activate the physics to: "xs_prop_arena_{flipper,wall,bollard,turntable,pit}"
    ---@param object Object
    ---@param toggle BOOL
    ---@param p2 integer
    SET_DRIVE_ARTICULATED_JOINT = function(object, toggle, p2) end,

    ---@param object Object
    ---@param toggle BOOL
    ---@param p2 integer
    ---@param ped Ped
    SET_DRIVE_ARTICULATED_JOINT_WITH_INFLICTOR = function(object, toggle, p2, ped) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_OBJECT_IS_A_PRESSURE_PLATE = function(object, toggle) end,

    ---@param object Object
    ---@param p1 BOOL
    SET_WEAPON_IMPACTS_APPLY_GREATER_FORCE = function(object, p1) end,

    ---@param object Object
    ---@param p1 Any
    ---@return BOOL
    GET_IS_ARTICULATED_JOINT_AT_MIN_ANGLE = function(object, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    GET_IS_ARTICULATED_JOINT_AT_MAX_ANGLE = function(p0, p1) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_IS_OBJECT_ARTICULATED = function(object, toggle) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_IS_OBJECT_BALL = function(object, toggle) end
}

PAD = {
    ---control: 0: PLAYER_CONTROL, 1: CAMERA_CONTROL, 2: FRONTEND_CONTROL\
    ---For more info, see https://docs.fivem.net/docs/game-references/controls/
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_CONTROL_ENABLED = function(control, action) end,

    ---Returns whether a control is currently pressed.\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_CONTROL_PRESSED = function(control, action) end,

    ---Returns whether a control is currently _not_ pressed.\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_CONTROL_RELEASED = function(control, action) end,

    ---Returns whether a control was newly pressed since the last check.\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_CONTROL_JUST_PRESSED = function(control, action) end,

    ---Returns whether a control was newly released since the last check.\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_CONTROL_JUST_RELEASED = function(control, action) end,

    ---@param control integer
    ---@param action integer
    ---@param duration integer
    ---@return BOOL
    _IS_CONTROL_HELD_DOWN = function(control, action, duration) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return integer
    GET_CONTROL_VALUE = function(control, action) end,

    ---Returns the value of GET_CONTROL_VALUE normalized (i.e. a real number value between -1 and 1)\
    ---\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return number
    GET_CONTROL_NORMAL = function(control, action) end,

    ---@param toggle BOOL
    SET_USE_ADJUSTED_MOUSE_COORDS = function(toggle) end,

    ---Seems to return values between -1 and 1 for controls like gas and steering.\
    ---\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return number
    GET_CONTROL_UNBOUND_NORMAL = function(control, action) end,

    ---This is for simulating player input.\
    ---value is a float value from 0 - 1\
    ---\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@param value number
    ---@return BOOL
    SET_CONTROL_VALUE_NEXT_FRAME = function(control, action, value) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_DISABLED_CONTROL_PRESSED = function(control, action) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_DISABLED_CONTROL_RELEASED = function(control, action) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_DISABLED_CONTROL_JUST_PRESSED = function(control, action) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return BOOL
    IS_DISABLED_CONTROL_JUST_RELEASED = function(control, action) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return number
    GET_DISABLED_CONTROL_NORMAL = function(control, action) end,

    ---The "disabled" variant of GET_CONTROL_UNBOUND_NORMAL.\
    ---\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@return number
    GET_DISABLED_CONTROL_UNBOUND_NORMAL = function(control, action) end,

    ---Returns time in ms since last input.\
    ---\
    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@return integer
    GET_CONTROL_HOW_LONG_AGO = function(control) end,

    ---control: unused parameter
    ---@param control integer
    ---@return BOOL
    IS_USING_KEYBOARD_AND_MOUSE = function(control) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@return BOOL
    IS_USING_CURSOR = function(control) end,

    ---@param x number
    ---@param y number
    ---@return BOOL
    SET_CURSOR_POSITION = function(x, y) end,

    ---control: see IS_CONTROL_ENABLED\
    ---\
    ---Hardcoded to return false.
    ---@param control integer
    ---@return BOOL
    IS_USING_REMOTE_PLAY = function(control) end,

    ---control: unused parameter
    ---@param control integer
    ---@return BOOL
    HAVE_CONTROLS_CHANGED = function(control) end,

    ---allowXOSwap appears to always be true.\
    ---\
    ---EG:\
    ---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 201, 1) /*INPUT_FRONTEND_ACCEPT (e.g. Enter button)*/\
    ---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 202, 1) /*INPUT_FRONTEND_CANCEL (e.g. ESC button)*/\
    ---GET_CONTROL_INSTRUCTIONAL_BUTTON (2, 51, 1) /*INPUT_CONTEXT (e.g. E button)*/\
    ---\
    ---gtaforums.com/topic/819070-c-draw-instructional-buttons-scaleform-movie/#entry1068197378\
    ---\
    ---control: unused parameter
    ---@param control integer
    ---@param action integer
    ---@param allowXOSwap BOOL
    ---@return string
    GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING = function(control, action, allowXOSwap) end,

    ---control: unused parameter
    ---@param control integer
    ---@param controlGroup integer
    ---@param allowXOSwap BOOL
    ---@return string
    GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING = function(control, controlGroup, allowXOSwap) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param red integer
    ---@param green integer
    ---@param blue integer
    SET_CONTROL_LIGHT_EFFECT_COLOR = function(control, red, green, blue) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    CLEAR_CONTROL_LIGHT_EFFECT = function(control) end,

    ---control: see IS_CONTROL_ENABLED\
    ---duration in milliseconds \
    ---frequency should range from about 10 (slow vibration) to 255 (very fast)\
    ---\
    ---example:\
    ---SET_CONTROL_SHAKE(PLAYER_CONTROL, 100, 200);
    ---@param control integer
    ---@param duration integer
    ---@param frequency integer
    SET_CONTROL_SHAKE = function(control, duration, frequency) end,

    ---Does nothing (it's a nullsub).
    ---@param control integer
    ---@param leftDuration integer
    ---@param leftFrequency integer
    ---@param rightDuration integer
    ---@param rightFrequency integer
    SET_CONTROL_TRIGGER_SHAKE = function(control, leftDuration, leftFrequency, rightDuration, rightFrequency) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    STOP_CONTROL_SHAKE = function(control) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param uniqueId integer
    SET_CONTROL_SHAKE_SUPPRESSED_ID = function(control, uniqueId) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    CLEAR_CONTROL_SHAKE_SUPPRESSED_ID = function(control) end,

    ---@return BOOL
    IS_LOOK_INVERTED = function() end,

    ---Used with IS_LOOK_INVERTED() and negates its affect.\
    ---\
    -----\
    ---\
    ---Not sure how the person above got that description, but here's an actual example:\
    ---\
    ---if (PAD::IS_USING_KEYBOARD_AND_MOUSE(2)) {\
    ---    if (a_5) {\
    ---        if (PAD::IS_LOOK_INVERTED()) {\
    ---            a_3 *= -1;\
    ---    }\
    ---        if (PAD::IS_MOUSE_LOOK_INVERTED()) {\
    ---            a_3 *= -1;\
    ---    }\
    ---}\
    ---}
    ---@return BOOL
    IS_MOUSE_LOOK_INVERTED = function() end,

    ---Hard-coded to return 3 if using KBM, otherwise same behavior as GET_LOCAL_PLAYER_GAMEPAD_AIM_STATE.
    ---@return integer
    GET_LOCAL_PLAYER_AIM_STATE = function() end,

    ---Returns the local player's targeting mode. See PLAYER::SET_PLAYER_TARGETING_MODE.
    ---@return integer
    GET_LOCAL_PLAYER_GAMEPAD_AIM_STATE = function() end,

    ---@return BOOL
    GET_IS_USING_ALTERNATE_HANDBRAKE = function() end,

    ---Returns profile setting 225.
    ---@return BOOL
    GET_IS_USING_ALTERNATE_DRIVEBY = function() end,

    ---Returns profile setting 17.
    ---@return BOOL
    GET_ALLOW_MOVEMENT_WHILE_ZOOMED = function() end,

    ---@param toggle BOOL
    SET_PLAYERPAD_SHAKES_WHEN_CONTROLLER_DISABLED = function(toggle) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    SET_INPUT_EXCLUSIVE = function(control, action) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@param disableRelatedActions BOOL
    DISABLE_CONTROL_ACTION = function(control, action, disableRelatedActions) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ---@param action integer
    ---@param enableRelatedActions BOOL
    ENABLE_CONTROL_ACTION = function(control, action, enableRelatedActions) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    DISABLE_ALL_CONTROL_ACTIONS = function(control) end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ENABLE_ALL_CONTROL_ACTIONS = function(control) end,

    ---Used in carsteal3 script with schemeName = "Carsteal4_spycar".
    ---@param schemeName string
    ---@return BOOL
    INIT_PC_SCRIPTED_CONTROLS = function(schemeName) end,

    ---Same as INIT_PC_SCRIPTED_CONTROLS
    ---@param schemeName string
    ---@return BOOL
    SWITCH_PC_SCRIPTED_CONTROLS = function(schemeName) end,

    SHUTDOWN_PC_SCRIPTED_CONTROLS = function() end,

    ---control: see IS_CONTROL_ENABLED
    ---@param control integer
    ALLOW_ALTERNATIVE_SCRIPT_CONTROLS_LAYOUT = function(control) end,

    ---Always returns zero.
    ---@return integer
    _GET_GAMEPAD_TYPE = function() end
}

PATHFIND = {
    ---When nodeEnabled is set to false, all nodes in the area get disabled.\
    ---`GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns true afterwards.\
    ---If it's true, `GET_VEHICLE_NODE_IS_SWITCHED_OFF` returns false.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param nodeEnabled BOOL
    ---@param unknown2 BOOL
    SET_ROADS_IN_AREA = function(x1, y1, z1, x2, y2, z2, nodeEnabled, unknown2) end,

    ---unknown3 is related to `SEND_SCRIPT_WORLD_STATE_EVENT > CNetworkRoadNodeWorldStateData` in networked environments.\
    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param unknown1 BOOL
    ---@param unknown2 BOOL
    ---@param unknown3 BOOL
    SET_ROADS_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, unknown1, unknown2, unknown3) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 BOOL
    ---@param p7 Any
    SET_PED_PATHS_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7) end,

    ---Flags are:\
    ---1 = 1 = B02_IsFootpath\
    ---2 = 4 = !B15_InteractionUnk\
    ---4 = 0x20 = !B14_IsInterior\
    ---8 = 0x40 = !B07_IsWater\
    ---16 = 0x200 = B17_IsFlatGround\
    ---When onGround == true outPosition is a position located on the nearest pavement.\
    ---\
    ---When a safe coord could not be found the result of a function is false and outPosition == Vector3.Zero.\
    ---\
    ---In the scripts these flags are used: 0, 14, 12, 16, 20, 21, 28. 0 is most commonly used, then 16. \
    ---\
    ---16 works for me, 0 crashed the script.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param onGround BOOL
    ---@param outPosition Vector3
    ---@param flags integer
    ---@return BOOL
    GET_SAFE_COORD_FOR_PED = function(x, y, z, onGround, outPosition, flags) end,

    ---https://gtaforums.com/topic/843561-pathfind-node-types
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param outPosition Vector3
    ---@param nodeFlags integer
    ---@param p5 number
    ---@param p6 number
    ---@return BOOL
    GET_CLOSEST_VEHICLE_NODE = function(x, y, z, outPosition, nodeFlags, p5, p6) end,

    ---Get the closest vehicle node to a given position.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param outPosition Vector3
    ---@param unknown1 number
    ---@param unknown2 number
    ---@return BOOL
    GET_CLOSEST_MAJOR_VEHICLE_NODE = function(x, y, z, outPosition, unknown1, unknown2) end,

    ---p5, p6 and p7 seems to be about the same as p4, p5 and p6 for GET_CLOSEST_VEHICLE_NODE. p6 and/or p7 has something to do with finding a node on the same path/road and same direction(at least for this native, something to do with the heading maybe). Edit this when you find out more.\
    ---\
    ---nodeType: 0 = main roads, 1 = any dry path, 3 = water\
    ---p6 is always 3.0\
    ---p7 is always 0\
    ---\
    ---gtaforums.com/topic/843561-pathfind-node-types\
    ---\
    ---Example of usage, moving vehicle to closest path/road:\
    ---Vector3 coords = ENTITY::GET_ENTITY_COORDS(playerVeh, true);\
    ---Vector3 closestVehicleNodeCoords; \
    ---float roadHeading; \
    ---PATHFIND::GET_CLOSEST_VEHICLE_NODE_WITH_HEADING(coords.x, coords.y, coords.z, &closestVehicleNodeCoords, &roadHeading, 1, 3, 0); \
    ---ENTITY::SET_ENTITY_HEADING(playerVeh, roadHeading);\
    ---ENTITY::SET_ENTITY_COORDS(playerVeh, closestVehicleNodeCoords.x, closestVehicleNodeCoords.y, closestVehicleNodeCoords.z, 1, 0, 0, 1);\
    ---VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(playerVeh);\
    ---\
    ---------------------------------------------------------------------\
    ---C# Example (ins1de) : https://pastebin.com/fxtMWAHD
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param outPosition Vector3
    ---@param outHeading number
    ---@param nodeType integer
    ---@param p6 number
    ---@param p7 number
    ---@return BOOL
    ---@return number
    GET_CLOSEST_VEHICLE_NODE_WITH_HEADING = function(x, y, z, outPosition, outHeading, nodeType, p6, p7) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param nthClosest integer
    ---@param outPosition Vector3
    ---@param nodeFlags integer
    ---@param unknown1 number
    ---@param unknown2 number
    ---@return BOOL
    GET_NTH_CLOSEST_VEHICLE_NODE = function(x, y, z, nthClosest, outPosition, nodeFlags, unknown1, unknown2) end,

    ---Returns the id.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param nth integer
    ---@param nodeFlags integer
    ---@param p5 number
    ---@param p6 number
    ---@return integer
    GET_NTH_CLOSEST_VEHICLE_NODE_ID = function(x, y, z, nth, nodeFlags, p5, p6) end,

    ---Get the nth closest vehicle node and its heading.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param nthClosest integer
    ---@param outPosition Vector3
    ---@param outHeading number
    ---@param outNumLanes integer
    ---@param nodeFlags integer
    ---@param unknown3 number
    ---@param unknown4 number
    ---@return BOOL
    ---@return number
    ---@return integer
    GET_NTH_CLOSEST_VEHICLE_NODE_WITH_HEADING = function(x, y, z, nthClosest, outPosition, outHeading, outNumLanes, nodeFlags, unknown3, unknown4) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param nthClosest integer
    ---@param outPosition Vector3
    ---@param outHeading number
    ---@param nodeFlags integer
    ---@param p7 number
    ---@param p8 number
    ---@return integer
    ---@return number
    GET_NTH_CLOSEST_VEHICLE_NODE_ID_WITH_HEADING = function(x, y, z, nthClosest, outPosition, outHeading, nodeFlags, p7, p8) end,

    ---See gtaforums.com/topic/843561-pathfind-node-types for node type info. 0 = paved road only, 1 = any road, 3 = water\
    ---\
    ---p10 always equals 3.0\
    ---p11 always equals 0
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param desiredX number
    ---@param desiredY number
    ---@param desiredZ number
    ---@param nthClosest integer
    ---@param outPosition Vector3
    ---@param outHeading number
    ---@param nodeFlags integer
    ---@param p10 number
    ---@param p11 number
    ---@return BOOL
    ---@return number
    GET_NTH_CLOSEST_VEHICLE_NODE_FAVOUR_DIRECTION = function(x, y, z, desiredX, desiredY, desiredZ, nthClosest, outPosition, outHeading, nodeFlags, p10, p11) end,

    ---Gets the density and flags of the closest node to the specified position.\
    ---Density is a value between 0 and 15, indicating how busy the road is.\
    ---Flags is a bit field.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param density integer
    ---@param flags integer
    ---@return BOOL
    ---@return integer
    ---@return integer
    GET_VEHICLE_NODE_PROPERTIES = function(x, y, z, density, flags) end,

    ---Returns true if the id is non zero.
    ---@param vehicleNodeId integer
    ---@return BOOL
    IS_VEHICLE_NODE_ID_VALID = function(vehicleNodeId) end,

    ---Calling this with an invalid node id, will crash the game.\
    ---Note that IS_VEHICLE_NODE_ID_VALID simply checks if nodeId is not zero. It does not actually ensure that the id is valid.\
    ---Eg. IS_VEHICLE_NODE_ID_VALID(1) will return true, but will crash when calling GET_VEHICLE_NODE_POSITION().
    ---@param nodeId integer
    ---@param outPosition Vector3
    GET_VEHICLE_NODE_POSITION = function(nodeId, outPosition) end,

    ---Returns false for nodes that aren't used for GPS routes.\
    ---Example:\
    ---Nodes in Fort Zancudo and LSIA are false
    ---@param nodeID integer
    ---@return BOOL
    GET_VEHICLE_NODE_IS_GPS_ALLOWED = function(nodeID) end,

    ---Returns true when the node is Offroad. Alleys, some dirt roads, and carparks return true.\
    ---Normal roads where plenty of Peds spawn will return false
    ---@param nodeID integer
    ---@return BOOL
    GET_VEHICLE_NODE_IS_SWITCHED_OFF = function(nodeID) end,

    ---p1 seems to be always 1.0f in the scripts
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 number
    ---@param p4 integer
    ---@param p5 Vector3
    ---@param p6 Vector3
    ---@param p7 Any*
    ---@param p8 Any*
    ---@param p9 number
    ---@param p10 BOOL
    ---@return BOOL
    ---@return number
    GET_CLOSEST_ROAD = function(x, y, z, p3, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param set BOOL
    ---@return BOOL
    LOAD_ALL_PATH_NODES = function(set) end,

    ---@param toggle BOOL
    SET_ALLOW_STREAM_PROLOGUE_NODES = function(toggle) end,

    ---Activates Cayo Perico path nodes if passed `1`. GPS navigation will start working, maybe more stuff will change, not sure. It seems if you try to unload (pass `0`) when close to the island, your game might crash.
    ---@param type integer
    SET_ALLOW_STREAM_HEIST_ISLAND_NODES = function(type) end,

    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return BOOL
    ARE_NODES_LOADED_FOR_AREA = function(x1, y1, x2, y2) end,

    ---Used internally for long range tasks
    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return BOOL
    REQUEST_PATH_NODES_IN_AREA_THIS_FRAME = function(x1, y1, x2, y2) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 Any
    SET_ROADS_BACK_TO_ORIGINAL = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---See IS_POINT_IN_ANGLED_AREA for the definition of an angled area.\
    ---bool p7 - always 1
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param p7 Any
    SET_ROADS_BACK_TO_ORIGINAL_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, p7) end,

    ---@param multiplier number
    SET_AMBIENT_PED_RANGE_MULTIPLIER_THIS_FRAME = function(multiplier) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ADJUST_AMBIENT_PED_SPAWN_DENSITIES_THIS_FRAME = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---p6 is always 0
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 Any
    SET_PED_PATHS_BACK_TO_ORIGINAL = function(x1, y1, z1, x2, y2, z2, p6) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param outPosition Vector3
    ---@param nodeId integer
    ---@return BOOL
    ---@return integer
    GET_RANDOM_VEHICLE_NODE = function(x, y, z, radius, p4, p5, p6, outPosition, nodeId) end,

    ---@param nodeAddress integer
    ---@param towardsCoorsX number
    ---@param towardsCoorsY number
    ---@param towardsCoorsZ number
    ---@param centrePoint Vector3
    ---@param heading number
    ---@return number
    GET_SPAWN_COORDS_FOR_VEHICLE_NODE = function(nodeAddress, towardsCoorsX, towardsCoorsY, towardsCoorsZ, centrePoint, heading) end,

    ---Determines the name of the street which is the closest to the given coordinates.\
    ---\
    ---x,y,z - the coordinates of the street\
    ---streetName - returns a hash to the name of the street the coords are on\
    ---crossingRoad - if the coordinates are on an intersection, a hash to the name of the crossing road\
    ---\
    ---Note: the names are returned as hashes, the strings can be returned using the function HUD::GET_STREET_NAME_FROM_HASH_KEY.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param streetName Hash
    ---@param crossingRoad Hash
    ---@return Hash
    ---@return Hash
    GET_STREET_NAME_AT_COORD = function(x, y, z, streetName, crossingRoad) end,

    ---p3 is 0 in the only game script occurrence (trevor3) but 1 doesn't seem to make a difference\
    ---\
    ---distToNxJunction seems to be the distance in metres * 10.0f\
    ---\
    ---direction:\
    ---0 = This happens randomly during the drive for seemingly no reason but if you consider that this native is only used in trevor3, it seems to mean "Next frame, stop whatever's being said and tell the player the direction."\
    ---1 = Route is being calculated or the player is going in the wrong direction\
    ---2 = Please Proceed the Highlighted Route\
    ---3 = In (distToNxJunction) Turn Left\
    ---4 = In (distToNxJunction) Turn Right\
    ---5 = In (distToNxJunction) Keep Straight\
    ---6 = In (distToNxJunction) Turn Sharply To The Left\
    ---7 = In (distToNxJunction) Turn Sharply To The Right\
    ---8 = Route is being recalculated or the navmesh is confusing. This happens randomly during the drive but consistently at {2044.0358, 2996.6116, 44.9717} if you face towards the bar and the route needs you to turn right. In that particular case, it could be a bug with how the turn appears to be 270 deg. CCW instead of "right." Either way, this seems to be the engine saying "I don't know the route right now."\
    ---\
    ---return value set to 0 always
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 BOOL
    ---@param direction integer
    ---@param p5 number
    ---@param distToNxJunction number
    ---@return integer
    ---@return integer
    ---@return number
    ---@return number
    GENERATE_DIRECTIONS_TO_COORD = function(x, y, z, p3, direction, p5, distToNxJunction) end,

    ---@param toggle BOOL
    SET_IGNORE_NO_GPS_FLAG = function(toggle) end,

    ---See: SET_BLIP_ROUTE
    ---@param toggle BOOL
    SET_IGNORE_NO_GPS_FLAG_UNTIL_FIRST_NORMAL_NODE = function(toggle) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z3 number
    SET_GPS_DISABLED_ZONE = function(x1, y1, z1, x2, y2, z3) end,

    ---@return integer
    GET_GPS_BLIP_ROUTE_LENGTH = function() end,

    ---p3 can be 0, 1 or 2.
    ---@param result Vector3
    ---@param p1 BOOL
    ---@param p2 number
    ---@param p3 integer
    ---@return BOOL
    GET_POS_ALONG_GPS_TYPE_ROUTE = function(result, p1, p2, p3) end,

    ---@return BOOL
    GET_GPS_BLIP_ROUTE_FOUND = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param outPosition Vector3
    ---@return BOOL
    GET_ROAD_BOUNDARY_USING_HEADING = function(x, y, z, heading, outPosition) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p3 integer
    ---@param outPosition Vector3
    ---@return BOOL
    GET_POSITION_BY_SIDE_OF_ROAD = function(x, y, z, p3, outPosition) end,

    ---Gets a value indicating whether the specified position is on a road.\
    ---The vehicle parameter is not implemented (ignored).
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_POINT_ON_ROAD = function(x, y, z, vehicle) end,

    ---Gets the next zone that has been disabled using SET_GPS_DISABLED_ZONE_AT_INDEX.
    ---@return integer
    GET_NEXT_GPS_DISABLED_ZONE_INDEX = function() end,

    ---Disables the GPS route displayed on the minimap while within a certain zone (area). When in a disabled zone and creating a waypoint, the GPS route is not shown on the minimap until you are outside of the zone. When disabled, the direct distance is shown on minimap opposed to distance to travel. Seems to only work before setting a waypoint.\
    ---You can clear the disabled zone with CLEAR_GPS_DISABLED_ZONE_AT_INDEX.\
    ---\
    ---**Setting a waypoint at the same coordinate:**\
    ---Disabled Zone: https://i.imgur.com/P9VUuxM.png\
    ---Enabled Zone (normal): https://i.imgur.com/BPi24aw.png
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param index integer
    SET_GPS_DISABLED_ZONE_AT_INDEX = function(x1, y1, z1, x2, y2, z2, index) end,

    ---Clears a disabled GPS route area from a certain index previously set using `SET_GPS_DISABLED_ZONE_AT_INDEX`.
    ---@param index integer
    CLEAR_GPS_DISABLED_ZONE_AT_INDEX = function(index) end,

    ---@param x number
    ---@param y number
    ---@param radius number
    ADD_NAVMESH_REQUIRED_REGION = function(x, y, radius) end,

    REMOVE_NAVMESH_REQUIRED_REGIONS = function() end,

    ---@return BOOL
    IS_NAVMESH_REQUIRED_REGION_IN_USE = function() end,

    ---Set toggle true to disable navmesh.\
    ---Set toggle false to enable navmesh.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param toggle BOOL
    DISABLE_NAVMESH_IN_AREA = function(x1, y1, z1, x2, y2, z2, toggle) end,

    ---@return BOOL
    ARE_ALL_NAVMESH_REGIONS_LOADED = function() end,

    ---Returns whether navmesh for the region is loaded. The region is a rectangular prism defined by it's top left deepest corner to it's bottom right shallowest corner.\
    ---\
    ---If you can re-word this so it makes more sense, please do. I'm horrible with words sometimes...
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    IS_NAVMESH_LOADED_IN_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return integer
    GET_NUM_NAVMESHES_EXISTING_IN_AREA = function(x1, y1, z1, x2, y2, z2) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 BOOL
    ---@param p8 Any
    ---@return integer
    ADD_NAVMESH_BLOCKING_OBJECT = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---@param p0 Any
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 Any
    UPDATE_NAVMESH_BLOCKING_OBJECT = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---@param p0 Any
    REMOVE_NAVMESH_BLOCKING_OBJECT = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    DOES_NAVMESH_BLOCKING_OBJECT_EXIST = function(p0) end,

    ---Returns CGameWorldHeightMap's maximum Z value at specified point (grid node).
    ---@param x number
    ---@param y number
    ---@return number
    GET_APPROX_HEIGHT_FOR_POINT = function(x, y) end,

    ---Returns CGameWorldHeightMap's maximum Z among all grid nodes that intersect with the specified rectangle.
    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return number
    GET_APPROX_HEIGHT_FOR_AREA = function(x1, y1, x2, y2) end,

    ---Returns CGameWorldHeightMap's minimum Z value at specified point (grid node).
    ---@param x number
    ---@param y number
    ---@return number
    GET_APPROX_FLOOR_FOR_POINT = function(x, y) end,

    ---Returns CGameWorldHeightMap's minimum Z among all grid nodes that intersect with the specified rectangle.
    ---@param x1 number
    ---@param y1 number
    ---@param x2 number
    ---@param y2 number
    ---@return number
    GET_APPROX_FLOOR_FOR_AREA = function(x1, y1, x2, y2) end,

    ---Calculates the travel distance between a set of points.\
    ---\
    ---Doesn't seem to correlate with distance on gps sometimes.\
    ---This function returns the value 100000.0 over long distances, seems to be a failure mode result, potentially occurring when not all path nodes are loaded into pathfind.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return number
    CALCULATE_TRAVEL_DISTANCE_BETWEEN_POINTS = function(x1, y1, z1, x2, y2, z2) end
}

PED = {
    ---https://alloc8or.re/gta5/doc/enums/ePedType.txt\
    ---\
    ---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json
    ---@param pedType integer
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param isNetwork BOOL
    ---@param bScriptHostPed BOOL
    ---@return Ped
    CREATE_PED = function(pedType, modelHash, x, y, z, heading, isNetwork, bScriptHostPed) end,

    ---Deletes the specified ped, then sets the handle pointed to by the pointer to NULL.
    ---@param ped Ped
    ---@return Ped
    DELETE_PED = function(ped) end,

    ---@param ped Ped
    ---@param isNetwork BOOL
    ---@param bScriptHostPed BOOL
    ---@param copyHeadBlendFlag BOOL
    ---@return Ped
    CLONE_PED = function(ped, isNetwork, bScriptHostPed, copyHeadBlendFlag) end,

    ---@param ped Ped
    ---@param isNetwork BOOL
    ---@param bScriptHostPed BOOL
    ---@param copyHeadBlendFlag BOOL
    ---@param p4 BOOL
    ---@return Ped
    CLONE_PED_ALT = function(ped, isNetwork, bScriptHostPed, copyHeadBlendFlag, p4) end,

    ---Copies ped's components and props to targetPed.
    ---@param ped Ped
    ---@param targetPed Ped
    CLONE_PED_TO_TARGET = function(ped, targetPed) end,

    ---@param ped Ped
    ---@param targetPed Ped
    ---@param p2 BOOL
    CLONE_PED_TO_TARGET_ALT = function(ped, targetPed, p2) end,

    ---Gets a value indicating whether the specified ped is in the specified vehicle.\
    ---\
    ---If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param atGetIn BOOL
    ---@return BOOL
    IS_PED_IN_VEHICLE = function(ped, vehicle, atGetIn) end,

    ---@param ped Ped
    ---@param modelHash Hash
    ---@return BOOL
    IS_PED_IN_MODEL = function(ped, modelHash) end,

    ---Gets a value indicating whether the specified ped is in any vehicle.\
    ---\
    ---If 'atGetIn' is false, the function will not return true until the ped is sitting in the vehicle and is about to close the door. If it's true, the function returns true the moment the ped starts to get onto the seat (after opening the door). Eg. if false, and the ped is getting into a submersible, the function will not return true until the ped has descended down into the submersible and gotten into the seat, while if it's true, it'll return true the moment the hatch has been opened and the ped is about to descend into the submersible.
    ---@param ped Ped
    ---@param atGetIn BOOL
    ---@return BOOL
    IS_PED_IN_ANY_VEHICLE = function(ped, atGetIn) end,

    ---xyz - relative to the world origin.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    IS_COP_PED_IN_AREA_3D = function(x1, y1, z1, x2, y2, z2) end,

    ---Gets a value indicating whether this ped's health is below its injured threshold.\
    ---\
    ---The default threshold is 100.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_INJURED = function(ped) end,

    ---Returns whether the specified ped is hurt.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_HURT = function(ped) end,

    ---Gets a value indicating whether this ped's health is below its fatally injured threshold. The default threshold is 100.\
    ---If the handle is invalid, the function returns true.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_FATALLY_INJURED = function(ped) end,

    ---Seems to consistently return true if the ped is dead.\
    ---\
    ---p1 is always passed 1 in the scripts.\
    ---\
    ---I suggest to remove "OR_DYING" part, because it does not detect dying phase.\
    ---\
    ---That's what the devs call it, cry about it.\
    ---\
    ---lol
    ---@param ped Ped
    ---@param p1 BOOL
    ---@return BOOL
    IS_PED_DEAD_OR_DYING = function(ped, p1) end,

    ---@param ped Ped
    ---@return BOOL
    IS_CONVERSATION_PED_DEAD = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_AIMING_FROM_COVER = function(ped) end,

    ---Returns whether the specified ped is reloading.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_RELOADING = function(ped) end,

    ---Returns true if the given ped has a valid pointer to CPlayerInfo in its CPed class. That's all.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_A_PLAYER = function(ped) end,

    ---pedType: see CREATE_PED\
    ---\
    ---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json
    ---@param vehicle Vehicle
    ---@param pedType integer
    ---@param modelHash Hash
    ---@param seat integer
    ---@param isNetwork BOOL
    ---@param bScriptHostPed BOOL
    ---@return Ped
    CREATE_PED_INSIDE_VEHICLE = function(vehicle, pedType, modelHash, seat, isNetwork, bScriptHostPed) end,

    ---@param ped Ped
    ---@param heading number
    SET_PED_DESIRED_HEADING = function(ped, heading) end,

    ---@param ped Ped
    FORCE_ALL_HEADING_VALUES_TO_ALIGN = function(ped) end,

    ---angle is ped's view cone
    ---@param ped Ped
    ---@param otherPed Ped
    ---@param angle number
    ---@return BOOL
    IS_PED_FACING_PED = function(ped, otherPed, angle) end,

    ---Notes: The function only returns true while the ped is: \
    ---A.) Swinging a random melee attack (including pistol-whipping)\
    ---\
    ---B.) Reacting to being hit by a melee attack (including pistol-whipping)\
    ---\
    ---C.) Is locked-on to an enemy (arms up, strafing/skipping in the default fighting-stance, ready to dodge+counter). \
    ---\
    ---You don't have to be holding the melee-targetting button to be in this stance; you stay in it by default for a few seconds after swinging at someone. If you do a sprinting punch, it returns true for the duration of the punch animation and then returns false again, even if you've punched and made-angry many peds
    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_MELEE_COMBAT = function(ped) end,

    ---Returns true if the ped doesn't do any movement. If the ped is being pushed forwards by using APPLY_FORCE_TO_ENTITY for example, the function returns false.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_STOPPED = function(ped) end,

    ---@param ped Ped
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@return BOOL
    IS_PED_SHOOTING_IN_AREA = function(ped, x1, y1, z1, x2, y2, z2, p7, p8) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@return BOOL
    IS_ANY_PED_SHOOTING_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7) end,

    ---Returns whether the specified ped is shooting.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_SHOOTING = function(ped) end,

    ---accuracy = 0-100, 100 being perfectly accurate
    ---@param ped Ped
    ---@param accuracy integer
    SET_PED_ACCURACY = function(ped, accuracy) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_ACCURACY = function(ped) end,

    ---@param multiplier number
    SET_AMBIENT_LAW_PED_ACCURACY_MODIFIER = function(multiplier) end,

    ---@param ped Ped
    ---@param modelHash Hash
    ---@return BOOL
    IS_PED_MODEL = function(ped, modelHash) end,

    ---Forces the ped to fall back and kills it.\
    ---\
    ---It doesn't really explode the ped's head but it kills the ped
    ---@param ped Ped
    ---@param weaponHash Hash
    EXPLODE_PED_HEAD = function(ped, weaponHash) end,

    ---Judging purely from a quick disassembly, if the ped is in a vehicle, the ped will be deleted immediately. If not, it'll be marked as no longer needed. - very elegant..
    ---@param ped Ped
    ---@return Ped
    REMOVE_PED_ELEGANTLY = function(ped) end,

    ---Same as SET_PED_ARMOUR, but ADDS 'amount' to the armor the Ped already has.
    ---@param ped Ped
    ---@param amount integer
    ADD_ARMOUR_TO_PED = function(ped, amount) end,

    ---Sets the armor of the specified ped.\
    ---\
    ---ped: The Ped to set the armor of.\
    ---amount: A value between 0 and 100 indicating the value to set the Ped's armor to.
    ---@param ped Ped
    ---@param amount integer
    SET_PED_ARMOUR = function(ped, amount) end,

    ---Ped: The ped to warp.\
    ---vehicle: The vehicle to warp the ped into.\
    ---Seat_Index: [-1 is driver seat, -2 first free passenger seat]\
    ---\
    ---Moreinfo of Seat Index\
    ---DriverSeat = -1\
    ---Passenger = 0\
    ---Left Rear = 1\
    ---RightRear = 2
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param seatIndex integer
    SET_PED_INTO_VEHICLE = function(ped, vehicle, seatIndex) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_ALLOW_VEHICLES_OVERRIDE = function(ped, toggle) end,

    ---@param p0 BOOL
    ---@return BOOL
    CAN_CREATE_RANDOM_PED = function(p0) end,

    ---vb.net\
    ---Dim ped_handle As Integer\
    ---                    With Game.Player.Character\
    ---                        Dim pos As Vector3 = .Position + .ForwardVector * 3\
    ---                        ped_handle = Native.Function.Call(Of Integer)(Hash.CREATE_RANDOM_PED, pos.X, pos.Y, pos.Z)\
    ---                    End With\
    ---\
    ---Creates a Ped at the specified location, returns the Ped Handle.  \
    ---Ped will not act until SET_PED_AS_NO_LONGER_NEEDED is called.
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@return Ped
    CREATE_RANDOM_PED = function(posX, posY, posZ) end,

    ---@param vehicle Vehicle
    ---@param returnHandle BOOL
    ---@return Ped
    CREATE_RANDOM_PED_AS_DRIVER = function(vehicle, returnHandle) end,

    ---@return BOOL
    CAN_CREATE_RANDOM_DRIVER = function() end,

    ---@return BOOL
    CAN_CREATE_RANDOM_BIKE_RIDER = function() end,

    ---@param ped Ped
    SET_PED_MOVE_ANIMS_BLEND_OUT = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BE_DRAGGED_OUT = function(ped, toggle) end,

    ---ntoggle was always false except in one instance (b678).\
    ---\
    ---The one time this is set to true seems to do with when you fail the mission.
    ---@param toggle BOOL
    SET_PED_ALLOW_HURT_COMBAT_FOR_ALL_MISSION_PEDS = function(toggle) end,

    ---Returns true/false if the ped is/isn't male.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_MALE = function(ped) end,

    ---Returns true/false if the ped is/isn't humanoid.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_HUMAN = function(ped) end,

    ---Gets the vehicle the specified Ped is in. Returns 0 if the ped is/was not in a vehicle.
    ---@param ped Ped
    ---@param includeEntering BOOL
    ---@return Vehicle
    GET_VEHICLE_PED_IS_IN = function(ped, includeEntering) end,

    ---Resets the value for the last vehicle driven by the Ped.
    ---@param ped Ped
    RESET_PED_LAST_VEHICLE = function(ped) end,

    ---@param multiplier number
    SET_PED_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) end,

    ---@param p0 number
    ---@param p1 number
    SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME = function(p0, p1) end,

    SUPPRESS_AMBIENT_PED_AGGRESSIVE_CLEANUP_THIS_FRAME = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    SET_SCRIPTED_CONVERSION_COORD_THIS_FRAME = function(x, y, z) end,

    ---The distance between these points, is the diagonal of a box (remember it's 3D).
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    SET_PED_NON_CREATION_AREA = function(x1, y1, z1, x2, y2, z2) end,

    CLEAR_PED_NON_CREATION_AREA = function() end,

    INSTANTLY_FILL_PED_POPULATION = function() end,

    ---Same function call as PED::GET_MOUNT, aka just returns 0
    ---@param ped Ped
    ---@return BOOL
    IS_PED_ON_MOUNT = function(ped) end,

    ---\
    ---Function just returns 0\
    ---void __fastcall ped__get_mount(NativeContext *a1)\
    ---{\
    ---  NativeContext *v1; // rbx@1\
    ---\
    ---  v1 = a1;\
    ---  GetAddressOfPedFromScriptHandle(a1->Args->Arg1);\
    ---  v1->Returns->Item1= 0;\
    ---}
    ---@param ped Ped
    ---@return Ped
    GET_MOUNT = function(ped) end,

    ---Gets a value indicating whether the specified ped is on top of any vehicle.\
    ---\
    ---Return 1 when ped is on vehicle.\
    ---Return 0 when ped is not on a vehicle.\
    ---
    ---@param ped Ped
    ---@return BOOL
    IS_PED_ON_VEHICLE = function(ped) end,

    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_PED_ON_SPECIFIC_VEHICLE = function(ped, vehicle) end,

    ---Maximum possible amount of money on MP is 2000. ~JX\
    ---\
    --------------------------------------------------------------------------------\
    ---\
    ---Maximum amount that a ped can theoretically have is 65535 (0xFFFF) since the amount is stored as an unsigned short (uint16_t) value.
    ---@param ped Ped
    ---@param amount integer
    SET_PED_MONEY = function(ped, amount) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_MONEY = function(ped) end,

    ---Related to Peds dropping pickup_health_snack; p0 is a value between [0.0, 1.0] that corresponds to drop rate
    ---@param p0 number
    ---@param p1 Any
    SET_HEALTH_SNACKS_CARRIED_BY_ALL_NEW_PEDS = function(p0, p1) end,

    ---@param p0 BOOL
    SET_AMBIENT_PEDS_DROP_MONEY = function(p0) end,

    _SET_BLOCK_AMBIENT_PEDS_FROM_DROPPING_WEAPONS_THIS_FRAME = function() end,

    ---@param p0 BOOL
    SET_BLOCKING_OF_NON_TEMPORARY_EVENTS_FOR_AMBIENT_PEDS_THIS_FRAME = function(p0) end,

    ---Ped no longer takes critical damage modifiers if set to FALSE.\
    ---Example: Headshotting a player no longer one shots them. Instead they will take the same damage as a torso shot.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_SUFFERS_CRITICAL_HITS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_UPPER_BODY_DAMAGE_ONLY = function(ped, toggle) end,

    ---Detect if ped is sitting in the specified vehicle\
    ---[True/False]
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_PED_SITTING_IN_VEHICLE = function(ped, vehicle) end,

    ---Detect if ped is in any vehicle\
    ---[True/False]
    ---@param ped Ped
    ---@return BOOL
    IS_PED_SITTING_IN_ANY_VEHICLE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_ON_FOOT = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_ON_ANY_BIKE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_PLANTING_BOMB = function(ped) end,

    ---@param ped Ped
    ---@param p1 number
    ---@param p2 number
    ---@return Vector3
    GET_DEAD_PED_PICKUP_COORDS = function(ped, p1, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_BOAT = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_SUB = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_HELI = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_PLANE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_FLYING_VEHICLE = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DIES_IN_WATER = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    GET_PED_DIES_IN_WATER = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DIES_IN_SINKING_VEHICLE = function(ped, toggle) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_ARMOUR = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_STAY_IN_VEHICLE_WHEN_JACKED = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BE_SHOT_IN_VEHICLE = function(ped, toggle) end,

    ---@param ped Ped
    ---@param outBone integer
    ---@return BOOL
    ---@return integer
    GET_PED_LAST_DAMAGE_BONE = function(ped, outBone) end,

    ---@param ped Ped
    CLEAR_PED_LAST_DAMAGE_BONE = function(ped) end,

    ---@param value number
    SET_AI_WEAPON_DAMAGE_MODIFIER = function(value) end,

    RESET_AI_WEAPON_DAMAGE_MODIFIER = function() end,

    ---@param modifier number
    SET_AI_MELEE_WEAPON_DAMAGE_MODIFIER = function(modifier) end,

    RESET_AI_MELEE_WEAPON_DAMAGE_MODIFIER = function() end,

    ---@param ped Ped
    ---@param p1 BOOL
    SET_TREAT_AS_AMBIENT_PED_FOR_DRIVER_LOCKON = function(ped, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BE_TARGETTED = function(ped, toggle) end,

    ---@param ped Ped
    ---@param team integer
    ---@param toggle BOOL
    SET_PED_CAN_BE_TARGETTED_BY_TEAM = function(ped, team, toggle) end,

    ---@param ped Ped
    ---@param player Player
    ---@param toggle BOOL
    SET_PED_CAN_BE_TARGETTED_BY_PLAYER = function(ped, player, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_ALLOW_LOCKON_TO_PED_IF_FRIENDLY = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_USE_CAMERA_HEADING_FOR_DESIRED_DIRECTION_LOCK_ON_TEST = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_POLICE_VEHICLE = function(ped) end,

    ---@param ped Ped
    FORCE_PED_TO_OPEN_PARACHUTE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_PARACHUTE_FREE_FALL = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_FALLING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_JUMPING = function(ped) end,

    ---@param p0 Any
    ---@return BOOL
    IS_PED_LANDING = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    IS_PED_DOING_A_BEAST_JUMP = function(p0) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_CLIMBING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_VAULTING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_DIVING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_JUMPING_OUT_OF_VEHICLE = function(ped) end,

    ---Returns true if the ped is currently opening a door (CTaskOpenDoor).
    ---@param ped Ped
    ---@return BOOL
    IS_PED_OPENING_DOOR = function(ped) end,

    ---Returns:\
    ---\
    ----1: Normal\
    ---0: Wearing parachute on back\
    ---1: Parachute opening\
    ---2: Parachute open\
    ---3: Falling to doom (e.g. after exiting parachute)\
    ---\
    ---Normal means no parachute?
    ---@param ped Ped
    ---@return integer
    GET_PED_PARACHUTE_STATE = function(ped) end,

    ----1: no landing\
    ---0: landing on both feet\
    ---1: stumbling\
    ---2: rolling\
    ---3: ragdoll
    ---@param ped Ped
    ---@return integer
    GET_PED_PARACHUTE_LANDING_TYPE = function(ped) end,

    ---@param ped Ped
    ---@param tintIndex integer
    SET_PED_PARACHUTE_TINT_INDEX = function(ped, tintIndex) end,

    ---@param ped Ped
    ---@param outTintIndex integer
    ---@return integer
    GET_PED_PARACHUTE_TINT_INDEX = function(ped, outTintIndex) end,

    ---@param ped Ped
    ---@param p1 Any
    SET_PED_RESERVE_PARACHUTE_TINT_INDEX = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@return Object
    CREATE_PARACHUTE_BAG_OBJECT = function(ped, p1, p2) end,

    ---This is the SET_CHAR_DUCKING from GTA IV, that makes Peds duck. This function does nothing in GTA V. It cannot set the ped as ducking in vehicles, and IS_PED_DUCKING will always return false.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DUCKING = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_DUCKING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_TAXI = function(ped) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_ID_RANGE = function(ped, value) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_HIGHLY_PERCEPTIVE = function(ped, toggle) end,

    ---@param seeingRange number
    ---@param seeingRangePeripheral number
    ---@param hearingRange number
    ---@param visualFieldMinAzimuthAngle number
    ---@param visualFieldMaxAzimuthAngle number
    ---@param fieldOfGazeMaxAngle number
    ---@param p6 number
    SET_COP_PERCEPTION_OVERRIDES = function(seeingRange, seeingRangePeripheral, hearingRange, visualFieldMinAzimuthAngle, visualFieldMaxAzimuthAngle, fieldOfGazeMaxAngle, p6) end,

    ---@param ped Ped
    ---@param p1 number
    SET_PED_INJURED_ON_GROUND_BEHAVIOUR = function(ped, p1) end,

    ---@param ped Ped
    DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR = function(ped) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_SEEING_RANGE = function(ped, value) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_HEARING_RANGE = function(ped, value) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_VISUAL_FIELD_MIN_ANGLE = function(ped, value) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_VISUAL_FIELD_MAX_ANGLE = function(ped, value) end,

    ---This native refers to the field of vision the ped has below them, starting at 0 degrees. The angle value should be negative.\
    ----90f should let the ped see 90 degrees below them, for example.
    ---@param ped Ped
    ---@param angle number
    SET_PED_VISUAL_FIELD_MIN_ELEVATION_ANGLE = function(ped, angle) end,

    ---This native refers to the field of vision the ped has above them, starting at 0 degrees. 90f would let the ped see enemies directly above of them.
    ---@param ped Ped
    ---@param angle number
    SET_PED_VISUAL_FIELD_MAX_ELEVATION_ANGLE = function(ped, angle) end,

    ---@param ped Ped
    ---@param range number
    SET_PED_VISUAL_FIELD_PERIPHERAL_RANGE = function(ped, range) end,

    ---@param ped Ped
    ---@param angle number
    SET_PED_VISUAL_FIELD_CENTER_ANGLE = function(ped, angle) end,

    ---@param ped Ped
    ---@return number
    GET_PED_VISUAL_FIELD_CENTER_ANGLE = function(ped) end,

    ---p1 is usually 0 in the scripts. action is either 0 or a pointer to "DEFAULT_ACTION".
    ---@param ped Ped
    ---@param p1 BOOL
    ---@param action string
    SET_PED_STEALTH_MOVEMENT = function(ped, p1, action) end,

    ---Returns whether the entity is in stealth mode
    ---@param ped Ped
    ---@return BOOL
    GET_PED_STEALTH_MOVEMENT = function(ped) end,

    ---Creates a new ped group.\
    ---Groups can contain up to 8 peds.\
    ---\
    ---The parameter is unused.\
    ---\
    ---Returns a handle to the created group, or 0 if a group couldn't be created.
    ---@param unused integer
    ---@return integer
    CREATE_GROUP = function(unused) end,

    ---@param ped Ped
    ---@param groupId integer
    SET_PED_AS_GROUP_LEADER = function(ped, groupId) end,

    ---@param ped Ped
    ---@param groupId integer
    SET_PED_AS_GROUP_MEMBER = function(ped, groupId) end,

    ---This only will teleport the ped to the group leader if the group leader teleports (sets coords).\
    ---\
    ---Only works in singleplayer
    ---@param pedHandle Ped
    ---@param groupHandle integer
    ---@param toggle BOOL
    SET_PED_CAN_TELEPORT_TO_GROUP_LEADER = function(pedHandle, groupHandle, toggle) end,

    ---@param groupId integer
    REMOVE_GROUP = function(groupId) end,

    ---@param ped Ped
    REMOVE_PED_FROM_GROUP = function(ped) end,

    ---@param ped Ped
    ---@param groupId integer
    ---@return BOOL
    IS_PED_GROUP_MEMBER = function(ped, groupId) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_HANGING_ON_TO_VEHICLE = function(ped) end,

    ---Sets the range at which members will automatically leave the group.
    ---@param groupHandle integer
    ---@param separationRange number
    SET_GROUP_SEPARATION_RANGE = function(groupHandle, separationRange) end,

    ---Ped will stay on the ground after being stunned for at lest ms time. (in milliseconds)
    ---@param ped Ped
    ---@param ms integer
    SET_PED_MIN_GROUND_TIME_FOR_STUNGUN = function(ped, ms) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_PRONE = function(ped) end,

    ---Checks to see if ped and target are in combat with eachother. Only goes one-way: if target is engaged in combat with ped but ped has not yet reacted, the function will return false until ped starts fighting back.\
    ---\
    ---p1 is usually 0 in the scripts because it gets the ped id during the task sequence. For instance: PED::IS_PED_IN_COMBAT(l_42E[4/*14*/], PLAYER::PLAYER_PED_ID()) // armenian2.ct4: 43794
    ---@param ped Ped
    ---@param target Ped
    ---@return BOOL
    IS_PED_IN_COMBAT = function(ped, target) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@return Entity
    GET_PED_TARGET_FROM_COMBAT_PED = function(ped, p1) end,

    ---@param ped Ped
    ---@param target Ped
    ---@return BOOL
    CAN_PED_IN_COMBAT_SEE_TARGET = function(ped, target) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_DOING_DRIVEBY = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_JACKING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_BEING_JACKED = function(ped) end,

    ---p1 is always 0
    ---@param ped Ped
    ---@param p1 integer
    ---@return BOOL
    IS_PED_BEING_STUNNED = function(ped, p1) end,

    ---@param ped Ped
    ---@return Ped
    GET_PEDS_JACKER = function(ped) end,

    ---@param ped Ped
    ---@return Ped
    GET_JACK_TARGET = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_FLEEING = function(ped) end,

    ---p1 is nearly always 0 in the scripts. 
    ---@param ped Ped
    ---@param exceptUseWeapon BOOL
    ---@return BOOL
    IS_PED_IN_COVER = function(ped, exceptUseWeapon) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_COVER_FACING_LEFT = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_HIGH_COVER = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_GOING_INTO_COVER = function(ped) end,

    ---i could be time. Only example in the decompiled scripts uses it as -1.
    ---@param ped Ped
    ---@param pinned BOOL
    ---@param i integer
    ---@return BOOL
    SET_PED_PINNED_DOWN = function(ped, pinned, i) end,

    ---@param ped Ped
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 integer
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@return BOOL
    _HAS_PED_CLEAR_LOS_TO_ENTITY = function(ped, entity, x, y, z, p5, p6, p7) end,

    ---@param ped Ped
    ---@return integer
    GET_SEAT_PED_IS_TRYING_TO_ENTER = function(ped) end,

    ---@param ped Ped
    ---@return Vehicle
    GET_VEHICLE_PED_IS_TRYING_TO_ENTER = function(ped) end,

    ---Returns the Entity (Ped, Vehicle, or ?Object?) that killed the 'ped'\
    ---\
    ---Is best to check if the Ped is dead before asking for its killer.
    ---@param ped Ped
    ---@return Entity
    GET_PED_SOURCE_OF_DEATH = function(ped) end,

    ---Returns the hash of the weapon/model/object that killed the ped.
    ---@param ped Ped
    ---@return Hash
    GET_PED_CAUSE_OF_DEATH = function(ped) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_TIME_OF_DEATH = function(ped) end,

    ---@param ped Ped
    ---@return integer
    COUNT_PEDS_IN_COMBAT_WITH_TARGET = function(ped) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return integer
    COUNT_PEDS_IN_COMBAT_WITH_TARGET_WITHIN_RADIUS = function(ped, x, y, z, radius) end,

    ---@param ped Ped
    ---@param hash Hash
    SET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH = function(ped, hash) end,

    ---@param ped Ped
    ---@param hash Hash
    SET_PED_RELATIONSHIP_GROUP_HASH = function(ped, hash) end,

    ---Sets the relationship between two groups. This should be called twice (once for each group).\
    ---\
    ---Relationship types:\
    ---0 = Companion\
    ---1 = Respect\
    ---2 = Like\
    ---3 = Neutral\
    ---4 = Dislike\
    ---5 = Hate\
    ---255 = Pedestrians\
    ---\
    ---Example:\
    ---PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);\
    ---PED::SET_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);
    ---@param relationship integer
    ---@param group1 Hash
    ---@param group2 Hash
    SET_RELATIONSHIP_BETWEEN_GROUPS = function(relationship, group1, group2) end,

    ---Clears the relationship between two groups. This should be called twice (once for each group).\
    ---\
    ---Relationship types:\
    ---0 = Companion\
    ---1 = Respect\
    ---2 = Like\
    ---3 = Neutral\
    ---4 = Dislike\
    ---5 = Hate\
    ---255 = Pedestrians\
    ---(Credits: Inco)\
    ---\
    ---Example:\
    ---PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, l_1017, 0xA49E591C);\
    ---PED::CLEAR_RELATIONSHIP_BETWEEN_GROUPS(2, 0xA49E591C, l_1017);
    ---@param relationship integer
    ---@param group1 Hash
    ---@param group2 Hash
    CLEAR_RELATIONSHIP_BETWEEN_GROUPS = function(relationship, group1, group2) end,

    ---Can't select void. This function returns nothing. The hash of the created relationship group is output in the second parameter.
    ---@param name string
    ---@param groupHash Hash
    ---@return BOOL
    ---@return Hash
    ADD_RELATIONSHIP_GROUP = function(name, groupHash) end,

    ---@param groupHash Hash
    REMOVE_RELATIONSHIP_GROUP = function(groupHash) end,

    ---@param groupHash Hash
    ---@return BOOL
    DOES_RELATIONSHIP_GROUP_EXIST = function(groupHash) end,

    ---Gets the relationship between two peds. This should be called twice (once for each ped).\
    ---\
    ---Relationship types:\
    ---0 = Companion\
    ---1 = Respect\
    ---2 = Like\
    ---3 = Neutral\
    ---4 = Dislike\
    ---5 = Hate\
    ---255 = Pedestrians\
    ---(Credits: Inco)\
    ---\
    ---Example:\
    ---PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, l_1017, 0xA49E591C);\
    ---PED::GET_RELATIONSHIP_BETWEEN_PEDS(2, 0xA49E591C, l_1017);
    ---@param ped1 Ped
    ---@param ped2 Ped
    ---@return integer
    GET_RELATIONSHIP_BETWEEN_PEDS = function(ped1, ped2) end,

    ---@param ped Ped
    ---@return Hash
    GET_PED_RELATIONSHIP_GROUP_DEFAULT_HASH = function(ped) end,

    ---@param ped Ped
    ---@return Hash
    GET_PED_RELATIONSHIP_GROUP_HASH = function(ped) end,

    ---Gets the relationship between two groups. This should be called twice (once for each group).\
    ---\
    ---Relationship types:\
    ---0 = Companion\
    ---1 = Respect\
    ---2 = Like\
    ---3 = Neutral\
    ---4 = Dislike\
    ---5 = Hate\
    ---255 = Pedestrians\
    ---\
    ---Example:\
    ---PED::GET_RELATIONSHIP_BETWEEN_GROUPS(l_1017, 0xA49E591C);\
    ---PED::GET_RELATIONSHIP_BETWEEN_GROUPS(0xA49E591C, l_1017);
    ---@param group1 Hash
    ---@param group2 Hash
    ---@return integer
    GET_RELATIONSHIP_BETWEEN_GROUPS = function(group1, group2) end,

    ---@param group Hash
    ---@param p1 BOOL
    SET_RELATIONSHIP_GROUP_AFFECTS_WANTED_LEVEL = function(group, p1) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@param p2 number
    ---@param hash Hash
    ---@param p4 Any
    ---@param p5 Any
    TELL_GROUP_PEDS_IN_AREA_TO_ATTACK = function(ped, p1, p2, hash, p4, p5) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BE_TARGETED_WITHOUT_LOS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param radius number
    ---@param maxFriends integer
    SET_PED_TO_INFORM_RESPECTED_FRIENDS = function(ped, radius, maxFriends) end,

    ---@param ped Ped
    ---@param event Any
    ---@return BOOL
    IS_PED_RESPONDING_TO_EVENT = function(ped, event) end,

    ---@param ped Ped
    ---@param eventType integer
    ---@param outData Any*
    ---@return BOOL
    GET_POS_FROM_FIRED_EVENT = function(ped, eventType, outData) end,

    ---FIRING_PATTERN_BURST_FIRE = 0xD6FF6D61 ( 1073727030 )\
    ---FIRING_PATTERN_BURST_FIRE_IN_COVER = 0x026321F1 ( 40051185 )\
    ---FIRING_PATTERN_BURST_FIRE_DRIVEBY = 0xD31265F2 ( -753768974 )\
    ---FIRING_PATTERN_FROM_GROUND = 0x2264E5D6 ( 577037782 )\
    ---FIRING_PATTERN_DELAY_FIRE_BY_ONE_SEC = 0x7A845691 ( 2055493265 )\
    ---FIRING_PATTERN_FULL_AUTO = 0xC6EE6B4C ( -957453492 )\
    ---FIRING_PATTERN_SINGLE_SHOT = 0x5D60E4E0 ( 1566631136 )\
    ---FIRING_PATTERN_BURST_FIRE_PISTOL = 0xA018DB8A ( -1608983670 )\
    ---FIRING_PATTERN_BURST_FIRE_SMG = 0xD10DADEE ( 1863348768 )\
    ---FIRING_PATTERN_BURST_FIRE_RIFLE = 0x9C74B406 ( -1670073338 )\
    ---FIRING_PATTERN_BURST_FIRE_MG = 0xB573C5B4 ( -1250703948 )\
    ---FIRING_PATTERN_BURST_FIRE_PUMPSHOTGUN = 0x00BAC39B ( 12239771 )\
    ---FIRING_PATTERN_BURST_FIRE_HELI = 0x914E786F ( -1857128337 )\
    ---FIRING_PATTERN_BURST_FIRE_MICRO = 0x42EF03FD ( 1122960381 )\
    ---FIRING_PATTERN_SHORT_BURSTS = 0x1A92D7DF ( 445831135 )\
    ---FIRING_PATTERN_SLOW_FIRE_TANK = 0xE2CA3A71 ( -490063247 )\
    ---\
    ---Firing pattern info: https://pastebin.com/Px036isB
    ---@param ped Ped
    ---@param patternHash Hash
    SET_PED_FIRING_PATTERN = function(ped, patternHash) end,

    ---shootRate 0-1000
    ---@param ped Ped
    ---@param shootRate integer
    SET_PED_SHOOT_RATE = function(ped, shootRate) end,

    ---combatType can be between 0-14. See GET_COMBAT_FLOAT below for a list of possible parameters.
    ---@param ped Ped
    ---@param combatType integer
    ---@param p2 number
    SET_COMBAT_FLOAT = function(ped, combatType, p2) end,

    ---p0: Ped Handle\
    ---p1: int i | 0 <= i <= 27\
    ---\
    ---p1 probably refers to the attributes configured in combatbehavior.meta. There are 13. Example:\
    ---\
    ---<BlindFireChance value="0.1"/>\
    ---<WeaponShootRateModifier value="1.0"/>\
    ---<TimeBetweenBurstsInCover value="1.25"/>\
    ---<BurstDurationInCover value="2.0"/>\
    ---<TimeBetweenPeeks value="10.0"/>\
    ---<WeaponAccuracy value="0.18"/>\
    ---<FightProficiency value="0.8"/>\
    ---<StrafeWhenMovingChance value="1.0"/>\
    ---<WalkWhenStrafingChance value="0.0"/>\
    ---<AttackWindowDistanceForCover value="55.0"/>\
    ---<TimeToInvalidateInjuredTarget value="9.0"/>\
    ---<TriggerChargeTime_Near value="4.0"/>\
    ---<TriggerChargeTime_Far value="10.0"/>\
    ---\
    ----------------Confirmed by editing combatbehavior.meta:\
    ---p1:\
    ---0=BlindFireChance\
    ---1=BurstDurationInCover\
    ---3=TimeBetweenBurstsInCover\
    ---4=TimeBetweenPeeks\
    ---5=StrafeWhenMovingChance\
    ---8=WalkWhenStrafingChance\
    ---11=AttackWindowDistanceForCover\
    ---12=TimeToInvalidateInjuredTarget\
    ---16=OptimalCoverDistance\
    ---
    ---@param ped Ped
    ---@param p1 integer
    ---@return number
    GET_COMBAT_FLOAT = function(ped, p1) end,

    ---p1 may be a BOOL representing whether or not the group even exists
    ---@param groupID integer
    ---@param p1 Any*
    ---@param sizeInMembers integer
    ---@return integer
    GET_GROUP_SIZE = function(groupID, p1, sizeInMembers) end,

    ---@param groupId integer
    ---@return BOOL
    DOES_GROUP_EXIST = function(groupId) end,

    ---Returns the group id of which the specified ped is a member of.
    ---@param ped Ped
    ---@return integer
    GET_PED_GROUP_INDEX = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_GROUP = function(ped) end,

    ---@param ped Ped
    ---@return Player
    GET_PLAYER_PED_IS_FOLLOWING = function(ped) end,

    ---0: Default\
    ---1: Circle Around Leader\
    ---2: Alternative Circle Around Leader\
    ---3: Line, with Leader at center
    ---@param groupId integer
    ---@param formationType integer
    SET_GROUP_FORMATION = function(groupId, formationType) end,

    ---@param groupId integer
    ---@param x number
    ---@param y number
    ---@param z number
    SET_GROUP_FORMATION_SPACING = function(groupId, x, y, z) end,

    ---@param groupHandle integer
    RESET_GROUP_FORMATION_DEFAULT_SPACING = function(groupHandle) end,

    ---Gets ID of vehicle player using. It means it can get ID at any interaction with vehicle. Enter\exit for example. And that means it is faster than GET_VEHICLE_PED_IS_IN but less safe.
    ---@param ped Ped
    ---@return Vehicle
    GET_VEHICLE_PED_IS_USING = function(ped) end,

    ---@param ped Ped
    ---@return Vehicle
    GET_VEHICLE_PED_IS_ENTERING = function(ped) end,

    ---enable or disable the gravity of a ped\
    ---\
    ---Examples:\
    ---PED::SET_PED_GRAVITY(PLAYER::PLAYER_PED_ID(), 0x00000001);\
    ---PED::SET_PED_GRAVITY(Local_289[iVar0 /*20*/], 0x00000001);
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_GRAVITY = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    ---@return BOOL
    _SET_PED_SURVIVES_BEING_OUT_OF_WATER = function(ped, toggle) end,

    ---damages a ped with the given amount
    ---@param ped Ped
    ---@param damageAmount integer
    ---@param p2 BOOL
    ---@param p3 Any
    ---@param weaponType Hash
    APPLY_DAMAGE_TO_PED = function(ped, damageAmount, p2, p3, weaponType) end,

    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return integer
    GET_TIME_PED_DAMAGED_BY_WEAPON = function(ped, weaponHash) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_ALLOWED_TO_DUCK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_NEVER_LEAVES_GROUP = function(ped, toggle) end,

    ---https://alloc8or.re/gta5/doc/enums/ePedType.txt
    ---@param ped Ped
    ---@return integer
    GET_PED_TYPE = function(ped) end,

    ---Turns the desired ped into a cop. If you use this on the player ped, you will become almost invisible to cops dispatched for you. You will also report your own crimes, get a generic cop voice, get a cop-vision-cone on the radar, and you will be unable to shoot at other cops. SWAT and Army will still shoot at you. Toggling ped as "false" has no effect; you must change p0's ped model to disable the effect.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_AS_COP = function(ped, toggle) end,

    ---@param toggle BOOL
    SET_PED_HEALTH_PENDING_LAST_DAMAGE_EVENT_OVERRIDE_FLAG = function(toggle) end,

    ---Sets the maximum health of a ped.
    ---@param ped Ped
    ---@param value integer
    SET_PED_MAX_HEALTH = function(ped, value) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_MAX_HEALTH = function(ped) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_MAX_TIME_IN_WATER = function(ped, value) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_MAX_TIME_UNDERWATER = function(ped, value) end,

    ---@param ped Ped
    ---@param p1 number
    SET_CORPSE_RAGDOLL_FRICTION = function(ped, p1) end,

    ---seatIndex must be <= 2
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@param flags integer
    ---@param p4 Any
    SET_PED_VEHICLE_FORCED_SEAT_USAGE = function(ped, vehicle, seatIndex, flags, p4) end,

    ---@param ped Ped
    CLEAR_ALL_PED_VEHICLE_FORCED_SEAT_USAGE = function(ped) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 Any
    ---@param p1 Any
    SET_PED_CAN_BE_KNOCKED_OFF_BIKE = function(p0, p1) end,

    ---state: https://alloc8or.re/gta5/doc/enums/eKnockOffVehicle.txt
    ---@param ped Ped
    ---@param state integer
    SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE = function(ped, state) end,

    ---@param ped Ped
    ---@return BOOL
    CAN_KNOCK_PED_OFF_VEHICLE = function(ped) end,

    ---@param ped Ped
    KNOCK_PED_OFF_VEHICLE = function(ped) end,

    ---@param ped Ped
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_PED_COORDS_NO_GANG = function(ped, posX, posY, posZ) end,

    ---from fm_mission_controller.c4 (variable names changed for clarity):\
    ---\
    ---int groupID = PLAYER::GET_PLAYER_GROUP(PLAYER::PLAYER_ID());\
    ---PED::GET_GROUP_SIZE(group, &unused, &groupSize);\
    ---if (groupSize >= 1) {\
    ---. . . . for (int memberNumber = 0; memberNumber < groupSize; memberNumber++) {\
    ---. . . . . . . . Ped ped1 = PED::GET_PED_AS_GROUP_MEMBER(groupID, memberNumber);\
    ---. . . . . . . . //and so on
    ---@param groupID integer
    ---@param memberNumber integer
    ---@return Ped
    GET_PED_AS_GROUP_MEMBER = function(groupID, memberNumber) end,

    ---@param groupID integer
    ---@return Ped
    GET_PED_AS_GROUP_LEADER = function(groupID) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_KEEP_TASK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_ALLOW_MINOR_REACTIONS_AS_MISSION_PED = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_SWIMMING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_SWIMMING_UNDER_WATER = function(ped) end,

    ---teleports ped to coords along with the vehicle ped is in
    ---@param ped Ped
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    SET_PED_COORDS_KEEP_VEHICLE = function(ped, posX, posY, posZ) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DIES_IN_VEHICLE = function(ped, toggle) end,

    ---@param toggle BOOL
    SET_CREATE_RANDOM_COPS = function(toggle) end,

    ---@param toggle BOOL
    SET_CREATE_RANDOM_COPS_NOT_ON_SCENARIOS = function(toggle) end,

    ---@param toggle BOOL
    SET_CREATE_RANDOM_COPS_ON_SCENARIOS = function(toggle) end,

    ---@return BOOL
    CAN_CREATE_RANDOM_COPS = function() end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_AS_ENEMY = function(ped, toggle) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_PED_CAN_SMASH_GLASS = function(ped, p1, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_ANY_TRAIN = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_GETTING_INTO_A_VEHICLE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_TRYING_TO_ENTER_A_LOCKED_VEHICLE = function(ped) end,

    ---ped can not pull out a weapon when true
    ---@param ped Ped
    ---@param toggle BOOL
    SET_ENABLE_HANDCUFFS = function(ped, toggle) end,

    ---Used with SET_ENABLE_HANDCUFFS in decompiled scripts. From my observations, I have noticed that while being ragdolled you are not able to get up but you can still run. Your legs can also bend.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_ENABLE_BOUND_ANKLES = function(ped, toggle) end,

    ---Enables diving motion when underwater.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_ENABLE_SCUBA = function(ped, toggle) end,

    ---Setting ped to true allows the ped to shoot "friendlies".\
    ---\
    ---p2 set to true when toggle is also true seams to make peds permanently unable to aim at, even if you set p2 back to false.\
    ---\
    ---p1 = false & p2 = false for unable to aim at.\
    ---p1 = true & p2 = false for able to aim at. 
    ---@param ped Ped
    ---@param toggle BOOL
    ---@param p2 BOOL
    SET_CAN_ATTACK_FRIENDLY = function(ped, toggle, p2) end,

    ---Returns the ped's alertness (0-3).\
    ---\
    ---Values : \
    ---\
    ---0 : Neutral\
    ---1 : Heard something (gun shot, hit, etc)\
    ---2 : Knows (the origin of the event)\
    ---3 : Fully alerted (is facing the event?)\
    ---\
    ---If the Ped does not exist, returns -1.
    ---@param ped Ped
    ---@return integer
    GET_PED_ALERTNESS = function(ped) end,

    ---value ranges from 0 to 3.
    ---@param ped Ped
    ---@param value integer
    SET_PED_ALERTNESS = function(ped, value) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_GET_OUT_UPSIDE_DOWN_VEHICLE = function(ped, toggle) end,

    ---transitionSpeed is the time in seconds it takes to transition from one movement clipset to another.	ransitionSpeed is usually 1.0f\
    ---\
    ---List of movement clipsets:\
    ---Thanks to elsewhat for list.\
    ---\
    --- "ANIM_GROUP_MOVE_BALLISTIC"\
    --- "ANIM_GROUP_MOVE_LEMAR_ALLEY"\
    --- "clipset@move@trash_fast_turn"\
    --- "FEMALE_FAST_RUNNER"\
    --- "missfbi4prepp1_garbageman"\
    --- "move_characters@franklin@fire"\
    --- "move_characters@Jimmy@slow@"\
    --- "move_characters@michael@fire"\
    --- "move_f@flee@a"\
    --- "move_f@scared"\
    --- "move_f@sexy@a"\
    --- "move_heist_lester"\
    --- "move_injured_generic"\
    --- "move_lester_CaneUp"\
    --- "move_m@bag"\
    --- "MOVE_M@BAIL_BOND_NOT_TAZERED"\
    --- "MOVE_M@BAIL_BOND_TAZERED"\
    --- "move_m@brave"\
    --- "move_m@casual@d"\
    --- "move_m@drunk@moderatedrunk"\
    --- "MOVE_M@DRUNK@MODERATEDRUNK"\
    --- "MOVE_M@DRUNK@MODERATEDRUNK_HEAD_UP"\
    --- "MOVE_M@DRUNK@SLIGHTLYDRUNK"\
    --- "MOVE_M@DRUNK@VERYDRUNK"\
    --- "move_m@fire"\
    --- "move_m@gangster@var_e"\
    --- "move_m@gangster@var_f"\
    --- "move_m@gangster@var_i"\
    --- "move_m@JOG@"\
    --- "MOVE_M@PRISON_GAURD"\
    --- "MOVE_P_M_ONE"\
    --- "MOVE_P_M_ONE_BRIEFCASE"\
    --- "move_p_m_zero_janitor"\
    --- "move_p_m_zero_slow"\
    --- "move_ped_bucket"\
    --- "move_ped_crouched"\
    --- "move_ped_mop"\
    --- "MOVE_M@FEMME@"\
    --- "MOVE_F@FEMME@"\
    --- "MOVE_M@GANGSTER@NG"\
    --- "MOVE_F@GANGSTER@NG"\
    --- "MOVE_M@POSH@"\
    --- "MOVE_F@POSH@"\
    --- "MOVE_M@TOUGH_GUY@"\
    --- "MOVE_F@TOUGH_GUY@"\
    ---\
    ---~ NotCrunchyTaco\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param ped Ped
    ---@param clipSet string
    ---@param transitionSpeed number
    SET_PED_MOVEMENT_CLIPSET = function(ped, clipSet, transitionSpeed) end,

    ---If p1 is 0.0, I believe you are back to normal. \
    ---If p1 is 1.0, it looks like you can only rotate the ped, not walk.\
    ---\
    ---Using the following code to reset back to normal\
    ---PED::RESET_PED_MOVEMENT_CLIPSET(PLAYER::PLAYER_PED_ID(), 0.0);
    ---@param ped Ped
    ---@param p1 number
    RESET_PED_MOVEMENT_CLIPSET = function(ped, p1) end,

    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param ped Ped
    ---@param clipSet string
    SET_PED_STRAFE_CLIPSET = function(ped, clipSet) end,

    ---@param ped Ped
    RESET_PED_STRAFE_CLIPSET = function(ped) end,

    ---@param ped Ped
    ---@param clipSet string
    SET_PED_WEAPON_MOVEMENT_CLIPSET = function(ped, clipSet) end,

    ---@param ped Ped
    RESET_PED_WEAPON_MOVEMENT_CLIPSET = function(ped) end,

    ---@param ped Ped
    ---@param clipset string
    SET_PED_DRIVE_BY_CLIPSET_OVERRIDE = function(ped, clipset) end,

    ---@param ped Ped
    CLEAR_PED_DRIVE_BY_CLIPSET_OVERRIDE = function(ped) end,

    ---Found in the b617d scripts:\
    ---PED::SET_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE(v_7, "trevor_heist_cover_2h");
    ---@param ped Ped
    ---@param p1 string
    SET_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE = function(ped, p1) end,

    ---@param ped Ped
    CLEAR_PED_MOTION_IN_COVER_CLIPSET_OVERRIDE = function(ped) end,

    ---@param ped Ped
    CLEAR_PED_FALL_UPPER_BODY_CLIPSET_OVERRIDE = function(ped) end,

    ---PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_PASSENGER"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(l_128, MISC::GET_HASH_KEY("MINI_PROSTITUTE_LOW_RESTRICTED_PASSENGER"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(l_3212, MISC::GET_HASH_KEY("MISS_FAMILY1_JIMMY_SIT_REAR"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(l_95, MISC::GET_HASH_KEY("MISS_FAMILY2_JIMMY_BICYCLE"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(num3, MISC::GET_HASH_KEY("MISSFBI2_MICHAEL_DRIVEBY"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISS_ARMENIAN3_FRANKLIN_TENSE"));\
    ---PED::SET_PED_IN_VEHICLE_CONTEXT(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("MISSFBI5_TREVOR_DRIVING"));
    ---@param ped Ped
    ---@param context Hash
    SET_PED_IN_VEHICLE_CONTEXT = function(ped, context) end,

    ---@param ped Ped
    RESET_PED_IN_VEHICLE_CONTEXT = function(ped) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param anim string
    ---@return BOOL
    IS_SCRIPTED_SCENARIO_PED_USING_CONDITIONAL_ANIM = function(ped, animDict, anim) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param animName string
    ---@param p3 number
    ---@param p4 BOOL
    SET_PED_ALTERNATE_WALK_ANIM = function(ped, animDict, animName, p3, p4) end,

    ---@param ped Ped
    ---@param p1 number
    CLEAR_PED_ALTERNATE_WALK_ANIM = function(ped, p1) end,

    ---stance:\
    ---0 = idle\
    ---1 = walk\
    ---2 = running\
    ---\
    ---p5 = usually set to true\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param ped Ped
    ---@param stance integer
    ---@param animDictionary string
    ---@param animationName string
    ---@param p4 number
    ---@param p5 BOOL
    SET_PED_ALTERNATE_MOVEMENT_ANIM = function(ped, stance, animDictionary, animationName, p4, p5) end,

    ---@param ped Ped
    ---@param stance integer
    ---@param p2 number
    CLEAR_PED_ALTERNATE_MOVEMENT_ANIM = function(ped, stance, p2) end,

    ---From the scripts:\
    ---PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),\
    ---"ANIM_GROUP_GESTURE_MISS_FRA0");\
    ---PED::SET_PED_GESTURE_GROUP(PLAYER::PLAYER_PED_ID(),\
    ---"ANIM_GROUP_GESTURE_MISS_DocksSetup1");
    ---@param ped Ped
    ---@param animGroupGesture string
    SET_PED_GESTURE_GROUP = function(ped, animGroupGesture) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@param animName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param p8 number
    ---@param p9 integer
    ---@return Vector3
    GET_ANIM_INITIAL_OFFSET_POSITION = function(animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@param animName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param p8 number
    ---@param p9 integer
    ---@return Vector3
    GET_ANIM_INITIAL_OFFSET_ROTATION = function(animDict, animName, x, y, z, xRot, yRot, zRot, p8, p9) end,

    ---Ids\
    ---0 - Head\
    ---1 - Beard\
    ---2 - Hair\
    ---3 - Torso\
    ---4 - Legs\
    ---5 - Hands\
    ---6 - Foot\
    ---7 - ------\
    ---8 - Accessories 1\
    ---9 - Accessories 2\
    ---10- Decals\
    ---11 - Auxiliary parts for torso
    ---@param ped Ped
    ---@param componentId integer
    ---@return integer
    GET_PED_DRAWABLE_VARIATION = function(ped, componentId) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@return integer
    GET_NUMBER_OF_PED_DRAWABLE_VARIATIONS = function(ped, componentId) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@return integer
    GET_PED_TEXTURE_VARIATION = function(ped, componentId) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@param drawableId integer
    ---@return integer
    GET_NUMBER_OF_PED_TEXTURE_VARIATIONS = function(ped, componentId, drawableId) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param propId integer
    ---@return integer
    GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS = function(ped, propId) end,

    ---Need to check behavior when drawableId = -1\
    ---\
    ---- Doofy.Ass\
    ---Why this function doesn't work and return nill value?\
    ---GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(PLAYER.PLAYER_PED_ID(), 0, 5)\
    ---\
    ---tick: scripts/addins/menu_execute.lua:51: attempt to call field 'GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS' (a nil value)\
    ---\
    ---\
    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param propId integer
    ---@param drawableId integer
    ---@return integer
    GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS = function(ped, propId, drawableId) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@return integer
    GET_PED_PALETTE_VARIATION = function(ped, componentId) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    GET_MP_OUTFIT_DATA_FROM_METADATA = function(p0, p1) end,

    ---@param p0 integer
    ---@return integer
    GET_FM_MALE_SHOP_PED_APPAREL_ITEM_INDEX = function(p0) end,

    ---@param p0 integer
    ---@return integer
    GET_FM_FEMALE_SHOP_PED_APPAREL_ITEM_INDEX = function(p0) end,

    ---Checks if the component variation is valid, this works great for randomizing components using loops.\
    ---\
    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html\
    ---\
    ---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json
    ---@param ped Ped
    ---@param componentId integer
    ---@param drawableId integer
    ---@param textureId integer
    ---@return BOOL
    IS_PED_COMPONENT_VARIATION_VALID = function(ped, componentId, drawableId, textureId) end,

    ---paletteId: 0 to 3.\
    ---\
    ---componentId:\
    ---enum ePedVarComp\
    ---{\
    ---	PV_COMP_INVALID = -1,\
    ---	PV_COMP_HEAD,\
    ---	PV_COMP_BERD,\
    ---	PV_COMP_HAIR,\
    ---	PV_COMP_UPPR,\
    ---	PV_COMP_LOWR,\
    ---	PV_COMP_HAND,\
    ---	PV_COMP_FEET,\
    ---	PV_COMP_TEEF,\
    ---	PV_COMP_ACCS,\
    ---	PV_COMP_TASK,\
    ---	PV_COMP_DECL,\
    ---	PV_COMP_JBIB,\
    ---	PV_COMP_MAX\
    ---};\
    ---\
    ---Examples: https://gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html\
    ---\
    ---Full list of ped components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedComponentVariations.json
    ---@param ped Ped
    ---@param componentId integer
    ---@param drawableId integer
    ---@param textureId integer
    ---@param paletteId integer
    SET_PED_COMPONENT_VARIATION = function(ped, componentId, drawableId, textureId, paletteId) end,

    ---p1 is always 0 in R* scripts.\
    ---\
    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param p1 integer
    SET_PED_RANDOM_COMPONENT_VARIATION = function(ped, p1) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    SET_PED_RANDOM_PROPS = function(ped) end,

    ---Sets Ped Default Clothes
    ---@param ped Ped
    SET_PED_DEFAULT_COMPONENT_VARIATION = function(ped) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 number
    ---@param p4 number
    SET_PED_BLEND_FROM_PARENTS = function(ped, p1, p2, p3, p4) end,

    ---The "shape" parameters control the shape of the ped's face. The "skin" parameters control the skin tone. ShapeMix and skinMix control how much the first and second IDs contribute,(typically mother and father.) ThirdMix overrides the others in favor of the third IDs. IsParent is set for "children" of the player character's grandparents during old-gen character creation. It has unknown effect otherwise.\
    ---\
    ---The IDs start at zero and go Male Non-DLC, Female Non-DLC, Male DLC, and Female DLC.\
    ---\
    ---!!!Can someone add working example for this???\
    ---\
    ---try this:\
    ---       headBlendData headData;\
    ---       GET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), &headData);\
    ---\
    ---       SET_PED_HEAD_BLEND_DATA(PLAYER_PED_ID(), headData.shapeFirst, headData.shapeSecond, headData.shapeThird, headData.skinFirst, headData.skinSecond\
    ---          , headData.skinThird, headData.shapeMix, headData.skinMix, headData.skinThird, 0);\
    ---\
    ---\
    ---For more info please refer to this topic. \
    ---gtaforums.com/topic/858970-all-gtao-face-ids-pedset-ped-head-blend-data-explained
    ---@param ped Ped
    ---@param shapeFirstID integer
    ---@param shapeSecondID integer
    ---@param shapeThirdID integer
    ---@param skinFirstID integer
    ---@param skinSecondID integer
    ---@param skinThirdID integer
    ---@param shapeMix number
    ---@param skinMix number
    ---@param thirdMix number
    ---@param isParent BOOL
    SET_PED_HEAD_BLEND_DATA = function(ped, shapeFirstID, shapeSecondID, shapeThirdID, skinFirstID, skinSecondID, skinThirdID, shapeMix, skinMix, thirdMix, isParent) end,

    ---The pointer is to a padded struct that matches the arguments to SET_PED_HEAD_BLEND_DATA(...). There are 4 bytes of padding after each field.\
    ---pass this struct in the second parameter \
    ---struct headBlendData\
    ---{\
    ---    int shapeFirst;\
    ---    int padding1;\
    ---    int shapeSecond;\
    ---    int padding2;\
    ---    int shapeThird;\
    ---    int padding3;\
    ---    int skinFirst;\
    ---    int padding4;\
    ---    int skinSecond;\
    ---    int padding5;\
    ---    int skinThird;\
    ---    int padding6;\
    ---    float shapeMix;\
    ---    int padding7;\
    ---    float skinMix;\
    ---    int padding8;\
    ---    float thirdMix;\
    ---    int padding9;\
    ---    bool isParent;\
    ---};
    ---@param ped Ped
    ---@param headBlendData Any*
    ---@return BOOL
    GET_PED_HEAD_BLEND_DATA = function(ped, headBlendData) end,

    ---See SET_PED_HEAD_BLEND_DATA().
    ---@param ped Ped
    ---@param shapeMix number
    ---@param skinMix number
    ---@param thirdMix number
    UPDATE_PED_HEAD_BLEND_DATA = function(ped, shapeMix, skinMix, thirdMix) end,

    ---Used for freemode (online) characters.\
    ---\
    ---For some reason, the scripts use a rounded float for the index.\
    ---Indexes:\
    ---1. black\
    ---2. very light blue/green\
    ---3. dark blue\
    ---4. brown\
    ---5. darker brown\
    ---6. light brown\
    ---7. blue\
    ---8. light blue\
    ---9. pink\
    ---10. yellow\
    ---11. purple\
    ---12. black\
    ---13. dark green\
    ---14. light brown\
    ---15. yellow/black pattern\
    ---16. light colored spiral pattern\
    ---17. shiny red\
    ---18. shiny half blue/half red\
    ---19. half black/half light blue\
    ---20. white/red perimter\
    ---21. green snake\
    ---22. red snake\
    ---23. dark blue snake\
    ---24. dark yellow\
    ---25. bright yellow\
    ---26. all black\
    ---28. red small pupil\
    ---29. devil blue/black\
    ---30. white small pupil\
    ---31. glossed over
    ---@param ped Ped
    ---@param index integer
    SET_HEAD_BLEND_EYE_COLOR = function(ped, index) end,

    ---A getter for _SET_PED_EYE_COLOR. Returns -1 if fails to get.
    ---@param ped Ped
    ---@return integer
    GET_HEAD_BLEND_EYE_COLOR = function(ped) end,

    ---OverlayID ranges from 0 to 12, index from 0 to _GET_NUM_OVERLAY_VALUES(overlayID)-1, and opacity from 0.0 to 1.0. \
    ---\
    ---overlayID       Part                  Index, to disable\
    ---0               Blemishes             0 - 23, 255\
    ---1               Facial Hair           0 - 28, 255\
    ---2               Eyebrows              0 - 33, 255\
    ---3               Ageing                0 - 14, 255\
    ---4               Makeup                0 - 74, 255\
    ---5               Blush                 0 - 6, 255\
    ---6               Complexion            0 - 11, 255\
    ---7               Sun Damage            0 - 10, 255\
    ---8               Lipstick              0 - 9, 255\
    ---9               Moles/Freckles        0 - 17, 255\
    ---10              Chest Hair            0 - 16, 255\
    ---11              Body Blemishes        0 - 11, 255\
    ---12              Add Body Blemishes    0 - 1, 255
    ---@param ped Ped
    ---@param overlayID integer
    ---@param index integer
    ---@param opacity number
    SET_PED_HEAD_OVERLAY = function(ped, overlayID, index, opacity) end,

    ---Likely a char, if that overlay is not set, e.i. "None" option, returns 255;\
    ---\
    ---This might be the once removed native GET_PED_HEAD_OVERLAY.
    ---@param ped Ped
    ---@param overlayID integer
    ---@return integer
    GET_PED_HEAD_OVERLAY = function(ped, overlayID) end,

    ---@param overlayID integer
    ---@return integer
    GET_PED_HEAD_OVERLAY_NUM = function(overlayID) end,

    ---\
    ---\
    ---ColorType is 1 for eyebrows, beards, and chest hair; 2 for blush and lipstick; and 0 otherwise, though not called in those cases.\
    ---\
    ---Called after SET_PED_HEAD_OVERLAY().
    ---@param ped Ped
    ---@param overlayID integer
    ---@param colorType integer
    ---@param colorID integer
    ---@param secondColorID integer
    SET_PED_HEAD_OVERLAY_TINT = function(ped, overlayID, colorType, colorID, secondColorID) end,

    ---@param ped Ped
    ---@param colorID integer
    ---@param highlightColorID integer
    SET_PED_HAIR_TINT = function(ped, colorID, highlightColorID) end,

    ---@return integer
    GET_NUM_PED_HAIR_TINTS = function() end,

    ---@return integer
    GET_NUM_PED_MAKEUP_TINTS = function() end,

    ---Input: Haircolor index, value between 0 and 63 (inclusive).\
    ---Output: RGB values for the haircolor specified in the input.\
    ---\
    ---This is used with the hair color swatches scaleform.\
    ---Use `GET_PED_MAKEUP_TINT_COLOR` to get the makeup colors.
    ---@param hairColorIndex integer
    ---@param outR integer
    ---@param outG integer
    ---@param outB integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_PED_HAIR_TINT_COLOR = function(hairColorIndex, outR, outG, outB) end,

    ---Input: Makeup color index, value between 0 and 63 (inclusive).\
    ---Output: RGB values for the makeup color specified in the input.\
    ---\
    ---This is used with the makeup color swatches scaleform.\
    ---Use `GET_PED_HAIR_TINT_COLOR` to get the hair colors.
    ---@param makeupColorIndex integer
    ---@param outR integer
    ---@param outG integer
    ---@param outB integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_PED_MAKEUP_TINT_COLOR = function(makeupColorIndex, outR, outG, outB) end,

    ---@param colorId integer
    ---@return BOOL
    IS_PED_HAIR_TINT_FOR_CREATOR = function(colorId) end,

    ---@param colorId integer
    ---@return integer
    GET_DEFAULT_SECONDARY_TINT_FOR_CREATOR = function(colorId) end,

    ---@param colorId integer
    ---@return BOOL
    IS_PED_LIPSTICK_TINT_FOR_CREATOR = function(colorId) end,

    ---@param colorId integer
    ---@return BOOL
    IS_PED_BLUSH_TINT_FOR_CREATOR = function(colorId) end,

    ---@param colorID integer
    ---@return BOOL
    IS_PED_HAIR_TINT_FOR_BARBER = function(colorID) end,

    ---@param colorID integer
    ---@return integer
    GET_DEFAULT_SECONDARY_TINT_FOR_BARBER = function(colorID) end,

    ---@param colorID integer
    ---@return BOOL
    IS_PED_LIPSTICK_TINT_FOR_BARBER = function(colorID) end,

    ---@param colorID integer
    ---@return BOOL
    IS_PED_BLUSH_TINT_FOR_BARBER = function(colorID) end,

    ---@param colorId integer
    ---@return BOOL
    IS_PED_BLUSH_FACEPAINT_TINT_FOR_BARBER = function(colorId) end,

    ---@param modelHash Hash
    ---@param drawableId integer
    ---@param textureId integer
    ---@return integer
    GET_TINT_INDEX_FOR_LAST_GEN_HAIR_TEXTURE = function(modelHash, drawableId, textureId) end,

    ---Sets the various freemode face features, e.g. nose length, chin shape. Scale ranges from -1.0 to 1.0.\
    ---\
    ---\
    ---\
    ---0 - Nose Width (Thin/Wide)\
    ---\
    ---1 - Nose Peak (Up/Down)\
    ---\
    ---2 - Nose Length (Long/Short)\
    ---\
    ---3 - Nose Bone Curveness (Crooked/Curved)\
    ---\
    ---4 - Nose Tip (Up/Down)\
    ---\
    ---5 - Nose Bone Twist (Left/Right)\
    ---\
    ---6 - Eyebrow (Up/Down)\
    ---\
    ---7 - Eyebrow (In/Out)\
    ---\
    ---8 - Cheek Bones (Up/Down)\
    ---\
    ---9 - Cheek Sideways Bone Size (In/Out)\
    ---\
    ---10 - Cheek Bones Width (Puffed/Gaunt)\
    ---\
    ---11 - Eye Opening (Both) (Wide/Squinted)\
    ---\
    ---12 - Lip Thickness (Both) (Fat/Thin)\
    ---\
    ---13 - Jaw Bone Width (Narrow/Wide)\
    ---\
    ---14 - Jaw Bone Shape (Round/Square)\
    ---\
    ---15 - Chin Bone (Up/Down)\
    ---\
    ---16 - Chin Bone Length (In/Out or Backward/Forward)\
    ---\
    ---17 - Chin Bone Shape (Pointed/Square)\
    ---\
    ---18 - Chin Hole (Chin Bum)\
    ---\
    ---19 - Neck Thickness (Thin/Thick)
    ---@param ped Ped
    ---@param index integer
    ---@param scale number
    SET_PED_MICRO_MORPH = function(ped, index, scale) end,

    ---@param ped Ped
    ---@return BOOL
    HAS_PED_HEAD_BLEND_FINISHED = function(ped) end,

    ---@param ped Ped
    FINALIZE_HEAD_BLEND = function(ped) end,

    ---p4 seems to vary from 0 to 3.\
    ---Preview: https://gfycat.com/MaleRareAmazonparrot
    ---@param ped Ped
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@param id integer
    SET_HEAD_BLEND_PALETTE_COLOR = function(ped, r, g, b, id) end,

    ---@param ped Ped
    DISABLE_HEAD_BLEND_PALETTE_COLOR = function(ped) end,

    ---Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.\
    ---\
    ---Used when calling SET_PED_HEAD_BLEND_DATA.
    ---@param type integer
    ---@return integer
    GET_PED_HEAD_BLEND_FIRST_INDEX = function(type) end,

    ---Type equals 0 for male non-dlc, 1 for female non-dlc, 2 for male dlc, and 3 for female dlc.
    ---@param type integer
    ---@return integer
    GET_PED_HEAD_BLEND_NUM_HEADS = function(type) end,

    ---from extreme3.c4\
    ---PED::SET_PED_PRELOAD_VARIATION_DATA(PLAYER::PLAYER_PED_ID(), 8, PED::GET_PED_DRAWABLE_VARIATION(PLAYER::PLAYER_PED_ID(), 8), PED::GET_PED_TEXTURE_VARIATION(PLAYER::PLAYER_PED_ID(), 8));\
    ---\
    ---p1 is probably componentId
    ---@param ped Ped
    ---@param slot integer
    ---@param drawableId integer
    ---@param textureId integer
    ---@return integer
    SET_PED_PRELOAD_VARIATION_DATA = function(ped, slot, drawableId, textureId) end,

    ---@param ped Ped
    ---@return BOOL
    HAS_PED_PRELOAD_VARIATION_DATA_FINISHED = function(ped) end,

    ---@param ped Ped
    RELEASE_PED_PRELOAD_VARIATION_DATA = function(ped) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@param drawableId integer
    ---@param TextureId integer
    ---@return integer
    SET_PED_PRELOAD_PROP_DATA = function(ped, componentId, drawableId, TextureId) end,

    ---@param ped Ped
    ---@return BOOL
    HAS_PED_PRELOAD_PROP_DATA_FINISHED = function(ped) end,

    ---@param ped Ped
    RELEASE_PED_PRELOAD_PROP_DATA = function(ped) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@param p2 Any
    ---@return integer
    GET_PED_PROP_INDEX = function(ped, componentId, p2) end,

    ---ComponentId can be set to various things based on what category you're wanting to set\
    ---enum PedPropsData\
    ---{\
    ---    PED_PROP_HATS = 0,\
    ---    PED_PROP_GLASSES = 1,\
    --- PED_PROP_EARS = 2,\
    ---    PED_PROP_WATCHES = 3,\
    ---};\
    ---Usage: SET_PED_PROP_INDEX(playerPed, PED_PROP_HATS, GET_NUMBER_OF_PED_PROP_DRAWABLE_VARIATIONS(playerPed, PED_PROP_HATS), GET_NUMBER_OF_PED_PROP_TEXTURE_VARIATIONS(playerPed, PED_PROP_HATS, 0), TRUE);\
    ---\
    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@param drawableId integer
    ---@param TextureId integer
    ---@param attach BOOL
    ---@param p5 Any
    SET_PED_PROP_INDEX = function(ped, componentId, drawableId, TextureId, attach, p5) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 BOOL
    KNOCK_OFF_PED_PROP = function(ped, p1, p2, p3, p4) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param propId integer
    ---@param p2 Any
    CLEAR_PED_PROP = function(ped, propId, p2) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param p1 Any
    CLEAR_ALL_PED_PROPS = function(ped, p1) end,

    ---@param ped Ped
    DROP_AMBIENT_PROP = function(ped) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param componentId integer
    ---@return integer
    GET_PED_PROP_TEXTURE_INDEX = function(ped, componentId) end,

    ---@param ped Ped
    CLEAR_PED_PARACHUTE_PACK_VARIATION = function(ped) end,

    ---This native sets a scuba mask for freemode models and an oxygen bottle for player_* models. It works on freemode and player_* models.
    ---@param ped Ped
    SET_PED_SCUBA_GEAR_VARIATION = function(ped) end,

    ---Removes the scubagear (for mp male: component id: 8, drawableId: 123, textureId: any) from peds. Does not play the 'remove scuba gear' animation, but instantly removes it.
    ---@param ped Ped
    CLEAR_PED_SCUBA_GEAR_VARIATION = function(ped) end,

    ---@param p0 Any
    ---@return BOOL
    IS_USING_PED_SCUBA_GEAR_VARIATION = function(p0) end,

    ---works with TASK::TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS to make a ped completely oblivious to all events going on around him
    ---@param ped Ped
    ---@param toggle BOOL
    SET_BLOCKING_OF_NON_TEMPORARY_EVENTS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param p1 number
    ---@param p2 number
    ---@param x number
    ---@param y number
    ---@param z number
    SET_PED_BOUNDS_ORIENTATION = function(ped, p1, p2, x, y, z) end,

    ---PED::REGISTER_TARGET(l_216, PLAYER::PLAYER_PED_ID()); from re_prisonbreak.txt.\
    ---\
    ---l_216 = RECSBRobber1
    ---@param ped Ped
    ---@param target Ped
    REGISTER_TARGET = function(ped, target) end,

    ---Based on TASK_COMBAT_HATED_TARGETS_AROUND_PED, the parameters are likely similar (PedHandle, and area to attack in).
    ---@param ped Ped
    ---@param radius number
    REGISTER_HATED_TARGETS_AROUND_PED = function(ped, radius) end,

    ---Gets a random ped in the x/y/zRadius near the x/y/z coordinates passed. \
    ---\
    ---Ped Types:\
    ---Any = -1\
    ---Player = 1\
    ---Male = 4 \
    ---Female = 5 \
    ---Cop = 6\
    ---Human = 26\
    ---SWAT = 27 \
    ---Animal = 28\
    ---Army = 29
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param xRadius number
    ---@param yRadius number
    ---@param zRadius number
    ---@param pedType integer
    ---@return Ped
    GET_RANDOM_PED_AT_COORD = function(x, y, z, xRadius, yRadius, zRadius, pedType) end,

    ---Gets the closest ped in a radius.\
    ---\
    ---Ped Types:\
    ---Any ped = -1\
    ---Player = 1\
    ---Male = 4 \
    ---Female = 5 \
    ---Cop = 6\
    ---Human = 26\
    ---SWAT = 27 \
    ---Animal = 28\
    ---Army = 29\
    ---\
    ---------------------\
    ---P4 P5 P7 P8\
    ---1  0  x  x  = return nearest walking Ped\
    ---1  x  0  x  = return nearest walking Ped\
    ---x  1  1  x  = return Ped you are using\
    ---0  0  x  x  = no effect\
    ---0  x  0  x  = no effect\
    ---\
    ---x = can be 1 or 0. Does not have any obvious changes.\
    ---\
    ---This function does not return ped who is:\
    ---1. Standing still\
    ---2. Driving\
    ---3. Fleeing\
    ---4. Attacking\
    ---\
    ---This function only work if the ped is:\
    ---1. walking normally.\
    ---2. waiting to cross a road.\
    ---\
    ---Note: PED::GET_PED_NEARBY_PEDS works for more peds.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param outPed Ped
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param pedType integer
    ---@return BOOL
    ---@return Ped
    GET_CLOSEST_PED = function(x, y, z, radius, p4, p5, outPed, p7, p8, pedType) end,

    ---Sets a value indicating whether scenario peds should be returned by the next call to a command that returns peds. Eg. GET_CLOSEST_PED.
    ---@param value BOOL
    SET_SCENARIO_PEDS_TO_BE_RETURNED_BY_NEXT_COMMAND = function(value) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@param p8 Any
    ---@return BOOL
    GET_CAN_PED_BE_GRABBED_BY_SCRIPT = function(ped, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---Scripts use 0.2, 0.5 and 1.0. Value must be >= 0.0 && <= 1.0
    ---@param driver Ped
    ---@param modifier number
    SET_DRIVER_RACING_MODIFIER = function(driver, modifier) end,

    ---The function specifically verifies the value is equal to, or less than 1.0f. If it is greater than 1.0f, the function does nothing at all.
    ---@param driver Ped
    ---@param ability number
    SET_DRIVER_ABILITY = function(driver, ability) end,

    ---range 0.0f - 1.0f
    ---@param driver Ped
    ---@param aggressiveness number
    SET_DRIVER_AGGRESSIVENESS = function(driver, aggressiveness) end,

    ---Prevents the ped from going limp.\
    ---\
    ---[Example: Can prevent peds from falling when standing on moving vehicles.]
    ---@param ped Ped
    ---@return BOOL
    CAN_PED_RAGDOLL = function(ped) end,

    ---p4/p5: Unused in TU27\
    ---Ragdoll Types:\
    ---**0**: CTaskNMRelax\
    ---**1**: CTaskNMScriptControl: Hardcoded not to work in networked environments.\
    ---**Else**: CTaskNMBalance\
    ---time1- Time(ms) Ped is in ragdoll mode; only applies to ragdoll types 0 and not 1.\
    ---\
    ---time2- Unknown time, in milliseconds\
    ---\
    ---ragdollType-\
    ---0 : Normal ragdoll\
    ---1 : Falls with stiff legs/body\
    ---2 : Narrow leg stumble(may not fall)\
    ---3 : Wide leg stumble(may not fall)\
    ---\
    ---p4, p5, p6- No idea. In R*'s scripts they are usually either "true, true, false" or "false, false, false".\
    ---\
    ---\
    ---\
    ---\
    ---EDIT 3/11/16: unclear what 'mircoseconds' mean-- a microsecond is 1000x a ms, so time2 must be 1000x time1?  more testing needed.  -sob\
    ---\
    ---Edit Mar 21, 2017: removed part about time2 being the microseconds version of time1. this just isn't correct. time2 is in milliseconds, and time1 and time2 don't seem to be connected in any way.
    ---@param ped Ped
    ---@param time1 integer
    ---@param time2 integer
    ---@param ragdollType integer
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 BOOL
    ---@return BOOL
    SET_PED_TO_RAGDOLL = function(ped, time1, time2, ragdollType, p4, p5, p6) end,

    ---Return variable is never used in R*'s scripts.\
    ---\
    ---Not sure what p2 does. It seems like it would be a time judging by it's usage in R*'s scripts, but didn't seem to affect anything in my testings.\
    ---\
    ---enum eRagdollType\
    ---{\
    --- RD_MALE=0,\
    --- RD_FEMALE = 1,\
    --- RD_MALE_LARGE = 2,\
    --- RD_CUSTOM = 3,\
    ---}\
    ---\
    ---x, y, and z are coordinates, most likely to where the ped will fall.\
    ---\
    ---p8 to p13 are always 0f in R*'s scripts.\
    ---\
    ---(Simplified) Example of the usage of the function from R*'s scripts:\
    ---ped::set_ped_to_ragdoll_with_fall(ped, 1500, 2000, 1, -entity::get_entity_forward_vector(ped), 1f, 0f, 0f, 0f, 0f, 0f, 0f);\
    ---
    ---@param ped Ped
    ---@param time integer
    ---@param p2 integer
    ---@param ragdollType integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param velocity number
    ---@param p8 number
    ---@param p9 number
    ---@param p10 number
    ---@param p11 number
    ---@param p12 number
    ---@param p13 number
    ---@return BOOL
    SET_PED_TO_RAGDOLL_WITH_FALL = function(ped, time, p2, ragdollType, x, y, z, velocity, p8, p9, p10, p11, p12, p13) end,

    ---Causes Ped to ragdoll on collision with any object (e.g Running into trashcan). If applied to player you will sometimes trip on the sidewalk.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_RAGDOLL_ON_COLLISION = function(ped, toggle) end,

    ---If the ped handle passed through the parenthesis is in a ragdoll state this will return true.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_RAGDOLL = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RUNNING_RAGDOLL_TASK = function(ped) end,

    ---@param ped Ped
    SET_PED_RAGDOLL_FORCE_FALL = function(ped) end,

    ---@param ped Ped
    RESET_PED_RAGDOLL_TIMER = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_RAGDOLL = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RUNNING_MELEE_TASK = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RUNNING_MOBILE_PHONE_TASK = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOBILE_PHONE_TO_PED_EAR = function(ped) end,

    ---Works for both player and peds,\
    ---\
    ---enum eRagdollBlockingFlags\
    ---{\
    --- RBF_BULLET_IMPACT = 0,\
    --- RBF_VEHICLE_IMPACT = 1,\
    --- RBF_FIRE = 2,\
    --- RBF_ELECTROCUTION = 3,\
    --- RBF_PLAYER_IMPACT = 4,\
    --- RBF_EXPLOSION = 5,0\
    --- RBF_IMPACT_OBJECT = 6,\
    --- RBF_MELEE = 7,\
    --- RBF_RUBBER_BULLET = 8,\
    --- RBF_FALLING = 9,\
    --- RBF_WATER_JET = 10,\
    --- RBF_DROWNING = 11,\
    --- _0x9F52E2C4 = 12,\
    --- RBF_PLAYER_BUMP = 13,\
    --- RBF_PLAYER_RAGDOLL_BUMP = 14,\
    --- RBF_PED_RAGDOLL_BUMP = 15,\
    --- RBF_VEHICLE_GRAB = 16,\
    --- RBF_SMOKE_GRENADE = 17,\
    ---};\
    ---\
    ---
    ---@param ped Ped
    ---@param blockingFlag integer
    SET_RAGDOLL_BLOCKING_FLAGS = function(ped, blockingFlag) end,

    ---See SET_RAGDOLL_BLOCKING_FLAGS for flags
    ---@param ped Ped
    ---@param blockingFlag integer
    CLEAR_RAGDOLL_BLOCKING_FLAGS = function(ped, blockingFlag) end,

    ---@param ped Ped
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 BOOL
    ---@param p9 BOOL
    SET_PED_ANGLED_DEFENSIVE_AREA = function(ped, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p5 BOOL
    ---@param p6 BOOL
    SET_PED_SPHERE_DEFENSIVE_AREA = function(ped, x, y, z, radius, p5, p6) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param radius number
    ---@param p6 BOOL
    SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_PED = function(ped, target, xOffset, yOffset, zOffset, radius, p6) end,

    ---@param ped Ped
    ---@param target Vehicle
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param radius number
    ---@param p6 BOOL
    SET_PED_DEFENSIVE_SPHERE_ATTACHED_TO_VEHICLE = function(ped, target, xOffset, yOffset, zOffset, radius, p6) end,

    ---@param ped Ped
    ---@param attachPed Ped
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 BOOL
    ---@param p10 BOOL
    SET_PED_DEFENSIVE_AREA_ATTACHED_TO_PED = function(ped, attachPed, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param ped Ped
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 BOOL
    SET_PED_DEFENSIVE_AREA_DIRECTION = function(ped, p1, p2, p3, p4) end,

    ---Ped will no longer get angry when you stay near him.
    ---@param ped Ped
    ---@param toggle BOOL
    REMOVE_PED_DEFENSIVE_AREA = function(ped, toggle) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@return Vector3
    GET_PED_DEFENSIVE_AREA_POSITION = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@return BOOL
    IS_PED_DEFENSIVE_AREA_ACTIVE = function(ped, p1) end,

    ---@param ped Ped
    ---@param itemSet Any
    SET_PED_PREFERRED_COVER_SET = function(ped, itemSet) end,

    ---@param ped Ped
    REMOVE_PED_PREFERRED_COVER_SET = function(ped) end,

    ---It will revive/cure the injured ped. The condition is ped must not be dead.\
    ---\
    ---Upon setting and converting the health int, found, if health falls below 5, the ped will lay on the ground in pain(Maximum default health is 100).\
    ---\
    ---This function is well suited there.
    ---@param ped Ped
    REVIVE_INJURED_PED = function(ped) end,

    ---This function will simply bring the dead person back to life.\
    ---\
    ---Try not to use it alone, since using this function alone, will make peds fall through ground in hell(well for the most of the times).\
    ---\
    ---Instead, before calling this function, you may want to declare the position, where your Resurrected ped to be spawn at.(For instance, Around 2 floats of Player's current position.) \
    ---\
    ---Also, disabling any assigned task immediately helped in the number of scenarios, where If you want peds to perform certain decided tasks.
    ---@param ped Ped
    RESURRECT_PED = function(ped) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.\
    ---\
    ---*untested but char *name could also be a hash for a localized string
    ---@param ped Ped
    ---@param name string
    SET_PED_NAME_DEBUG = function(ped, name) end,

    ---Gets the offset the specified ped has moved since the previous tick.\
    ---\
    ---If worldSpace is false, the returned offset is relative to the ped. That is, if the ped has moved 1 meter right and 5 meters forward, it'll return 1,5,0.\
    ---\
    ---If worldSpace is true, the returned offset is relative to the world. That is, if the ped has moved 1 meter on the X axis and 5 meters on the Y axis, it'll return 1,5,0.
    ---@param ped Ped
    ---@param worldSpace BOOL
    ---@return Vector3
    GET_PED_EXTRACTED_DISPLACEMENT = function(ped, worldSpace) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DIES_WHEN_INJURED = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_ENABLE_WEAPON_BLOCKING = function(ped, toggle) end,

    ---p1 was always 1 (true).\
    ---\
    ---Kicks the ped from the current vehicle and keeps the rendering-focus on this ped (also disables its collision). If doing this for your player ped, you'll still be able to drive the vehicle.
    ---@param ped Ped
    ---@param p1 BOOL
    SPECIAL_FUNCTION_DO_NOT_USE = function(ped, p1) end,

    ---@param ped Ped
    RESET_PED_VISIBLE_DAMAGE = function(ped) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@param p2 number
    ---@param p3 number
    ---@param p4 Any
    APPLY_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1, p2, p3, p4) end,

    ---woundTypes:\
    ---- soak_splat\
    ---- wound_sheet\
    ---- BulletSmall\
    ---- BulletLarge\
    ---- ShotgunSmall\
    ---- ShotgunSmallMonolithic\
    ---- ShotgunLarge\
    ---- ShotgunLargeMonolithic\
    ---- NonFatalHeadshot\
    ---- stab\
    ---- BasicSlash\
    ---- Scripted_Ped_Splash_Back\
    ---- BackSplash
    ---@param ped Ped
    ---@param boneIndex integer
    ---@param xRot number
    ---@param yRot number
    ---@param zRot number
    ---@param woundType string
    APPLY_PED_BLOOD = function(ped, boneIndex, xRot, yRot, zRot, woundType) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    ---@param p4 string
    APPLY_PED_BLOOD_BY_ZONE = function(ped, p1, p2, p3, p4) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 integer
    ---@param p7 number
    ---@param p8 string
    APPLY_PED_BLOOD_SPECIFIC = function(ped, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---enum eDamageZone\
    ---{\
    ---	DZ_Torso = 0,\
    ---	DZ_Head,\
    ---	DZ_LeftArm,\
    ---	DZ_RightArm,\
    ---	DZ_LeftLeg,\
    ---	DZ_RightLeg,\
    ---};\
    ---\
    ---Decal Names:\
    ---scar\
    ---blushing\
    ---cs_flush_anger\
    ---cs_flush_anger_face\
    ---bruise\
    ---bruise_large\
    ---herpes\
    ---ArmorBullet\
    ---basic_dirt_cloth\
    ---basic_dirt_skin\
    ---cs_trev1_dirt\
    ---\
    ---APPLY_PED_DAMAGE_DECAL(ped, 1, 0.5f, 0.513f, 0f, 1f, unk, 0, 0, "blushing");
    ---@param ped Ped
    ---@param damageZone integer
    ---@param xOffset number
    ---@param yOffset number
    ---@param heading number
    ---@param scale number
    ---@param alpha number
    ---@param variation integer
    ---@param fadeIn BOOL
    ---@param decalName string
    APPLY_PED_DAMAGE_DECAL = function(ped, damageZone, xOffset, yOffset, heading, scale, alpha, variation, fadeIn, decalName) end,

    ---Damage Packs:\
    ---\
    ---"SCR_TrevorTreeBang"\
    ---"HOSPITAL_0"\
    ---"HOSPITAL_1"\
    ---"HOSPITAL_2"\
    ---"HOSPITAL_3"\
    ---"HOSPITAL_4"\
    ---"HOSPITAL_5"\
    ---"HOSPITAL_6"\
    ---"HOSPITAL_7"\
    ---"HOSPITAL_8"\
    ---"HOSPITAL_9"\
    ---"SCR_Dumpster"\
    ---"BigHitByVehicle"\
    ---"SCR_Finale_Michael_Face"\
    ---"SCR_Franklin_finb"\
    ---"SCR_Finale_Michael"\
    ---"SCR_Franklin_finb2"\
    ---"Explosion_Med"\
    ---"SCR_Torture"\
    ---"SCR_TracySplash"\
    ---"Skin_Melee_0"\
    ---\
    ---Additional damage packs:\
    ---\
    ---gist.github.com/alexguirre/f3f47f75ddcf617f416f3c8a55ae2227\
    ---Full list of ped damage packs by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedDamagePacks.json
    ---@param ped Ped
    ---@param damagePack string
    ---@param damage number
    ---@param mult number
    APPLY_PED_DAMAGE_PACK = function(ped, damagePack, damage, mult) end,

    ---@param ped Ped
    CLEAR_PED_BLOOD_DAMAGE = function(ped) end,

    ---Somehow related to changing ped's clothes.
    ---@param ped Ped
    ---@param p1 integer
    CLEAR_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@param p2 BOOL
    HIDE_PED_BLOOD_DAMAGE_BY_ZONE = function(ped, p1, p2) end,

    ---p1: from 0 to 5 in the b617d scripts.\
    ---p2: "blushing" and "ALL" found in the b617d scripts.
    ---@param ped Ped
    ---@param p1 integer
    ---@param p2 string
    CLEAR_PED_DAMAGE_DECAL_BY_ZONE = function(ped, p1, p2) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_DECORATIONS_STATE = function(ped) end,

    ---@param ped Ped
    ---@param p1 BOOL
    MARK_PED_DECORATIONS_AS_CLONED_FROM_LOCAL_PLAYER = function(ped, p1) end,

    ---It clears the wetness of the selected Ped/Player. Clothes have to be wet to notice the difference.
    ---@param ped Ped
    CLEAR_PED_WETNESS = function(ped) end,

    ---It adds the wetness level to the player clothing/outfit. As if player just got out from water surface.\
    ---\
    ---
    ---@param ped Ped
    ---@param height number
    SET_PED_WETNESS_HEIGHT = function(ped, height) end,

    ---combined with PED::SET_PED_WETNESS_HEIGHT(), this native makes the ped drenched in water up to the height specified in the other function
    ---@param ped Ped
    SET_PED_WETNESS_ENABLED_THIS_FRAME = function(ped) end,

    ---@param ped Ped
    ---@param wetLevel number
    SET_PED_WETNESS = function(ped, wetLevel) end,

    ---@param ped Ped
    CLEAR_PED_ENV_DIRT = function(ped) end,

    ---Sweat is set to 100.0 or 0.0 in the decompiled scripts.
    ---@param ped Ped
    ---@param sweat number
    SET_PED_SWEAT = function(ped, sweat) end,

    ---Applies an Item from a PedDecorationCollection to a ped. These include tattoos and shirt decals.\
    ---\
    ---collection - PedDecorationCollection filename hash\
    ---overlay - Item name hash\
    ---\
    ---Example:\
    ---Entry inside "mpbeach_overlays.xml" -\
    ---<Item>\
    ---  <uvPos x="0.500000" y="0.500000" />\
    ---  <scale x="0.600000" y="0.500000" />\
    ---  <rotation value="0.000000" />\
    ---  <nameHash>FM_Hair_Fuzz</nameHash>\
    ---  <txdHash>mp_hair_fuzz</txdHash>\
    ---  <txtHash>mp_hair_fuzz</txtHash>\
    ---  <zone>ZONE_HEAD</zone>\
    ---  <type>TYPE_TATTOO</type>\
    ---  <faction>FM</faction>\
    ---  <garment>All</garment>\
    ---  <gender>GENDER_DONTCARE</gender>\
    ---  <award />\
    ---  <awardLevel />\
    ---</Item>\
    ---\
    ---Code:\
    ---PED::ADD_PED_DECORATION_FROM_HASHES(PLAYER::PLAYER_PED_ID(), MISC::GET_HASH_KEY("mpbeach_overlays"), MISC::GET_HASH_KEY("fm_hair_fuzz"))\
    ---\
    ---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json
    ---@param ped Ped
    ---@param collection Hash
    ---@param overlay Hash
    ADD_PED_DECORATION_FROM_HASHES = function(ped, collection, overlay) end,

    ---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json
    ---@param ped Ped
    ---@param collection Hash
    ---@param overlay Hash
    ADD_PED_DECORATION_FROM_HASHES_IN_CORONA = function(ped, collection, overlay) end,

    ---Returns the zoneID for the overlay if it is a member of collection.\
    ---enum ePedDecorationZone\
    ---{\
    ---	ZONE_TORSO = 0,\
    ---	ZONE_HEAD = 1,\
    ---	ZONE_LEFT_ARM = 2,\
    ---	ZONE_RIGHT_ARM = 3,\
    ---	ZONE_LEFT_LEG = 4,\
    ---	ZONE_RIGHT_LEG = 5,\
    ---	ZONE_MEDALS = 6,\
    ---	ZONE_INVALID = 7\
    ---};\
    ---\
    ---Full list of ped overlays / decorations by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/pedOverlayCollections.json
    ---@param collection Hash
    ---@param overlay Hash
    ---@return integer
    GET_PED_DECORATION_ZONE_FROM_HASHES = function(collection, overlay) end,

    ---@param ped Ped
    CLEAR_PED_DECORATIONS = function(ped) end,

    ---@param ped Ped
    CLEAR_PED_DECORATIONS_LEAVE_SCARS = function(ped) end,

    ---Despite this function's name, it simply returns whether the specified handle is a Ped.
    ---@param ped Ped
    ---@return BOOL
    WAS_PED_SKELETON_UPDATED = function(ped) end,

    ---Gets the position of the specified bone of the specified ped.\
    ---\
    ---ped: The ped to get the position of a bone from.\
    ---boneId: The ID of the bone to get the position from. This is NOT the index.\
    ---offsetX: The X-component of the offset to add to the position relative to the bone's rotation.\
    ---offsetY: The Y-component of the offset to add to the position relative to the bone's rotation.\
    ---offsetZ: The Z-component of the offset to add to the position relative to the bone's rotation.
    ---@param ped Ped
    ---@param boneId integer
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@return Vector3
    GET_PED_BONE_COORDS = function(ped, boneId, offsetX, offsetY, offsetZ) end,

    ---Creates a new NaturalMotion message.\
    ---\
    ---startImmediately: If set to true, the character will perform the message the moment it receives it by GIVE_PED_NM_MESSAGE. If false, the Ped will get the message but won't perform it yet. While it's a boolean value, if negative, the message will not be initialized.\
    ---messageId: The ID of the NaturalMotion message.\
    ---\
    ---If a message already exists, this function does nothing. A message exists until the point it has been successfully dispatched by GIVE_PED_NM_MESSAGE.
    ---@param startImmediately BOOL
    ---@param messageId integer
    CREATE_NM_MESSAGE = function(startImmediately, messageId) end,

    ---Sends the message that was created by a call to CREATE_NM_MESSAGE to the specified Ped.\
    ---\
    ---If a message hasn't been created already, this function does nothing.\
    ---If the Ped is not ragdolled with Euphoria enabled, this function does nothing.\
    ---The following call can be used to ragdoll the Ped with Euphoria enabled: SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);\
    ---\
    ---Call order:\
    ---SET_PED_TO_RAGDOLL\
    ---CREATE_NM_MESSAGE\
    ---GIVE_PED_NM_MESSAGE\
    ---\
    ---Multiple messages can be chained. Eg. to make the ped stagger and swing his arms around, the following calls can be made:\
    ---SET_PED_TO_RAGDOLL(ped, 4000, 5000, 1, 1, 1, 0);\
    ---CREATE_NM_MESSAGE(true, 0); // stopAllBehaviours - Stop all other behaviours, in case the Ped is already doing some Euphoria stuff.\
    ---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.\
    ---CREATE_NM_MESSAGE(true, 1151); // staggerFall - Attempt to walk while falling.\
    ---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.\
    ---CREATE_NM_MESSAGE(true, 372); // armsWindmill - Swing arms around.\
    ---GIVE_PED_NM_MESSAGE(ped); // Dispatch message to Ped.
    ---@param ped Ped
    GIVE_PED_NM_MESSAGE = function(ped) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 BOOL
    ---@param p7 BOOL
    ---@param p8 BOOL
    ---@param p9 BOOL
    ---@param p10 Any
    ---@return integer
    ADD_SCENARIO_BLOCKING_AREA = function(x1, y1, z1, x2, y2, z2, p6, p7, p8, p9, p10) end,

    REMOVE_SCENARIO_BLOCKING_AREAS = function() end,

    ---@param p0 Any
    ---@param p1 BOOL
    REMOVE_SCENARIO_BLOCKING_AREA = function(p0, p1) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param range number
    ---@param p4 integer
    SET_SCENARIO_PEDS_SPAWN_IN_SPHERE_AREA = function(x, y, z, range, p4) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return BOOL
    DOES_SCENARIO_BLOCKING_AREA_EXISTS = function(x1, y1, z1, x2, y2, z2) end,

    ---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json
    ---@param ped Ped
    ---@param scenario string
    ---@return BOOL
    IS_PED_USING_SCENARIO = function(ped, scenario) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_USING_ANY_SCENARIO = function(ped) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    SET_PED_PANIC_EXIT_SCENARIO = function(p0, p1, p2, p3) end,

    ---@param ped Ped
    ---@param toggle BOOL
    TOGGLE_SCENARIO_PED_COWER_IN_PLACE = function(ped, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    TRIGGER_PED_SCENARIO_PANICEXITTOFLEE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    SET_PED_SHOULD_PLAY_DIRECTED_NORMAL_SCENARIO_EXIT = function(p0, p1, p2, p3) end,

    ---@param ped Ped
    SET_PED_SHOULD_PLAY_NORMAL_SCENARIO_EXIT = function(ped) end,

    ---@param ped Ped
    SET_PED_SHOULD_PLAY_IMMEDIATE_SCENARIO_EXIT = function(ped) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@return BOOL
    SET_PED_SHOULD_PLAY_FLEE_SCENARIO_EXIT = function(ped, p1, p2, p3) end,

    ---@param ped Ped
    ---@param p1 BOOL
    SET_PED_SHOULD_IGNORE_SCENARIO_EXIT_COLLISION_CHECKS = function(ped, p1) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_PED_SHOULD_IGNORE_SCENARIO_NAV_CHECKS = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_PED_SHOULD_PROBE_FOR_SCENARIO_EXITS_IN_ONE_FRAME = function(p0, p1) end,

    ---@param p0 Any
    ---@return BOOL
    IS_PED_GESTURING = function(p0) end,

    ---@param ped Ped
    RESET_FACIAL_IDLE_ANIM = function(ped) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animName string
    ---@param animDict string
    PLAY_FACIAL_ANIM = function(ped, animName, animDict) end,

    ---Clipsets:\
    ---facials@gen_female@base\
    ---facials@gen_male@base\
    ---facials@p_m_zero@base\
    ---\
    ---Typically followed with SET_FACIAL_IDLE_ANIM_OVERRIDE:\
    ---mood_drunk_1\
    ---mood_stressed_1\
    ---mood_happy_1\
    ---mood_talking_1\
    ---
    ---@param ped Ped
    ---@param animDict string
    SET_FACIAL_CLIPSET = function(ped, animDict) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animName string
    ---@param animDict string
    SET_FACIAL_IDLE_ANIM_OVERRIDE = function(ped, animName, animDict) end,

    ---@param ped Ped
    CLEAR_FACIAL_IDLE_ANIM_OVERRIDE = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_PLAY_GESTURE_ANIMS = function(ped, toggle) end,

    ---p2 usually 0
    ---@param ped Ped
    ---@param toggle BOOL
    ---@param p2 BOOL
    SET_PED_CAN_PLAY_VISEME_ANIMS = function(ped, toggle, p2) end,

    ---@param ped Ped
    ---@param p1 BOOL
    SET_PED_IS_IGNORED_BY_AUTO_OPEN_DOORS = function(ped, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_PLAY_AMBIENT_ANIMS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_PLAY_AMBIENT_BASE_ANIMS = function(ped, toggle) end,

    ---@param ped Ped
    TRIGGER_IDLE_ANIMATION_ON_PED = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_ARM_IK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BODY_RECOIL_IK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_HEAD_IK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_LEG_IK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_TORSO_IK = function(ped, toggle) end,

    ---@param ped Ped
    ---@param p1 BOOL
    SET_PED_CAN_TORSO_REACT_IK = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 BOOL
    SET_PED_CAN_TORSO_VEHICLE_IK = function(ped, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_USE_AUTO_CONVERSATION_LOOKAT = function(ped, toggle) end,

    ---@param ped1 Ped
    ---@param ped2 Ped
    ---@return BOOL
    IS_PED_HEADTRACKING_PED = function(ped1, ped2) end,

    ---@param ped Ped
    ---@param entity Entity
    ---@return BOOL
    IS_PED_HEADTRACKING_ENTITY = function(ped, entity) end,

    ---This is only called once in the scripts.\
    ---\
    ---sub_1CD9(&l_49, 0, getElem(3, &l_34, 4), "MICHAEL", 0, 1);\
    ---                    sub_1CA8("WORLD_HUMAN_SMOKING", 2);\
    ---                    PED::SET_PED_PRIMARY_LOOKAT(getElem(3, &l_34, 4), PLAYER::PLAYER_PED_ID());
    ---@param ped Ped
    ---@param lookAt Ped
    SET_PED_PRIMARY_LOOKAT = function(ped, lookAt) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PED_CLOTH_PIN_FRAMES = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PED_CLOTH_PACKAGE_INDEX = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_PED_CLOTH_PRONE = function(p0, p1) end,

    ---enum ePedConfigFlags\
    ---{\
    ---	_CPED_CONFIG_FLAG_0xC63DE95E = 1,\
    ---	CPED_CONFIG_FLAG_NoCriticalHits = 2,\
    ---	CPED_CONFIG_FLAG_DrownsInWater = 3,\
    ---	CPED_CONFIG_FLAG_DisableReticuleFixedLockon = 4,\
    ---	_CPED_CONFIG_FLAG_0x37D196F4 = 5,\
    ---	_CPED_CONFIG_FLAG_0xE2462399 = 6,\
    ---	CPED_CONFIG_FLAG_UpperBodyDamageAnimsOnly = 7,\
    ---	_CPED_CONFIG_FLAG_0xEDDEB838 = 8,\
    ---	_CPED_CONFIG_FLAG_0xB398B6FD = 9,\
    ---	_CPED_CONFIG_FLAG_0xF6664E68 = 10,\
    ---	_CPED_CONFIG_FLAG_0xA05E7CA3 = 11,\
    ---	_CPED_CONFIG_FLAG_0xCE394045 = 12,\
    ---	CPED_CONFIG_FLAG_NeverLeavesGroup = 13,\
    ---	_CPED_CONFIG_FLAG_0xCD8D1411 = 14,\
    ---	_CPED_CONFIG_FLAG_0xB031F1A9 = 15,\
    ---	_CPED_CONFIG_FLAG_0xFE65BEE3 = 16,\
    ---	CPED_CONFIG_FLAG_BlockNonTemporaryEvents = 17,\
    ---	_CPED_CONFIG_FLAG_0x380165BD = 18,\
    ---	_CPED_CONFIG_FLAG_0x07C045C7 = 19,\
    ---	_CPED_CONFIG_FLAG_0x583B5E2D = 20,\
    ---	_CPED_CONFIG_FLAG_0x475EDA58 = 21,\
    ---	_CPED_CONFIG_FLAG_0x8629D05B = 22,\
    ---	_CPED_CONFIG_FLAG_0x1522968B = 23,\
    ---	CPED_CONFIG_FLAG_IgnoreSeenMelee = 24,\
    ---	_CPED_CONFIG_FLAG_0x4CC09C4B = 25,\
    ---	_CPED_CONFIG_FLAG_0x034F3053 = 26,\
    ---	_CPED_CONFIG_FLAG_0xD91BA7CC = 27,\
    ---	_CPED_CONFIG_FLAG_0x5C8DC66E = 28,\
    ---	CPED_CONFIG_FLAG_GetOutUndriveableVehicle = 29,\
    ---	_CPED_CONFIG_FLAG_0x6580B9D2 = 30,\
    ---	_CPED_CONFIG_FLAG_0x0EF7A297 = 31,\
    ---	CPED_CONFIG_FLAG_WillFlyThruWindscreen = 32,\
    ---	CPED_CONFIG_FLAG_DieWhenRagdoll = 33,\
    ---	CPED_CONFIG_FLAG_HasHelmet = 34,\
    ---	CPED_CONFIG_FLAG_UseHelmet = 35,\
    ---	CPED_CONFIG_FLAG_DontTakeOffHelmet = 36,\
    ---	_CPED_CONFIG_FLAG_0xB130D17B = 37,\
    ---	_CPED_CONFIG_FLAG_0x5F071200 = 38,\
    ---	CPED_CONFIG_FLAG_DisableEvasiveDives = 39,\
    ---	_CPED_CONFIG_FLAG_0xC287AAFF = 40,\
    ---	_CPED_CONFIG_FLAG_0x203328CC = 41,\
    ---	CPED_CONFIG_FLAG_DontInfluenceWantedLevel = 42,\
    ---	CPED_CONFIG_FLAG_DisablePlayerLockon = 43,\
    ---	CPED_CONFIG_FLAG_DisableLockonToRandomPeds = 44,\
    ---	CPED_CONFIG_FLAG_AllowLockonToFriendlyPlayers = 45,\
    ---	_CPED_CONFIG_FLAG_0xDB115BFA = 46,\
    ---	CPED_CONFIG_FLAG_PedBeingDeleted = 47,\
    ---	CPED_CONFIG_FLAG_BlockWeaponSwitching = 48,\
    ---	_CPED_CONFIG_FLAG_0xF8E99565 = 49,\
    ---	_CPED_CONFIG_FLAG_0xDD17FEE6 = 50,\
    ---	_CPED_CONFIG_FLAG_0x7ED9B2C9 = 51,\
    ---	_CPED_CONFIG_FLAG_NoCollison = 52,\
    ---	_CPED_CONFIG_FLAG_0x5A6C1F6E = 53,\
    ---	_CPED_CONFIG_FLAG_0xD749FC41 = 54,\
    ---	_CPED_CONFIG_FLAG_0x357F63F3 = 55,\
    ---	_CPED_CONFIG_FLAG_0xC5E60961 = 56,\
    ---	_CPED_CONFIG_FLAG_0x29275C3E = 57,\
    ---	CPED_CONFIG_FLAG_IsFiring = 58,\
    ---	CPED_CONFIG_FLAG_WasFiring = 59,\
    ---	CPED_CONFIG_FLAG_IsStanding = 60,\
    ---	CPED_CONFIG_FLAG_WasStanding = 61,\
    ---	CPED_CONFIG_FLAG_InVehicle = 62,\
    ---	CPED_CONFIG_FLAG_OnMount = 63,\
    ---	CPED_CONFIG_FLAG_AttachedToVehicle = 64,\
    ---	CPED_CONFIG_FLAG_IsSwimming = 65,\
    ---	CPED_CONFIG_FLAG_WasSwimming = 66,\
    ---	CPED_CONFIG_FLAG_IsSkiing = 67,\
    ---	CPED_CONFIG_FLAG_IsSitting = 68,\
    ---	CPED_CONFIG_FLAG_KilledByStealth = 69,\
    ---	CPED_CONFIG_FLAG_KilledByTakedown = 70,\
    ---	CPED_CONFIG_FLAG_Knockedout = 71,\
    ---	_CPED_CONFIG_FLAG_0x3E3C4560 = 72,\
    ---	_CPED_CONFIG_FLAG_0x2994C7B7 = 73,\
    ---	_CPED_CONFIG_FLAG_0x6D59D275 = 74,\
    ---	CPED_CONFIG_FLAG_UsingCoverPoint = 75,\
    ---	CPED_CONFIG_FLAG_IsInTheAir = 76,\
    ---	_CPED_CONFIG_FLAG_0x2D493FB7 = 77,\
    ---	CPED_CONFIG_FLAG_IsAimingGun = 78,\
    ---	_CPED_CONFIG_FLAG_0x14D69875 = 79,\
    ---	_CPED_CONFIG_FLAG_0x40B05311 = 80,\
    ---	_CPED_CONFIG_FLAG_0x8B230BC5 = 81,\
    ---	_CPED_CONFIG_FLAG_0xC74E5842 = 82,\
    ---	_CPED_CONFIG_FLAG_0x9EA86147 = 83,\
    ---	_CPED_CONFIG_FLAG_0x674C746C = 84,\
    ---	_CPED_CONFIG_FLAG_0x3E56A8C2 = 85,\
    ---	_CPED_CONFIG_FLAG_0xC144A1EF = 86,\
    ---	_CPED_CONFIG_FLAG_0x0548512D = 87,\
    ---	_CPED_CONFIG_FLAG_0x31C93909 = 88,\
    ---	_CPED_CONFIG_FLAG_0xA0269315 = 89,\
    ---	_CPED_CONFIG_FLAG_0xD4D59D4D = 90,\
    ---	_CPED_CONFIG_FLAG_0x411D4420 = 91,\
    ---	_CPED_CONFIG_FLAG_0xDF4AEF0D = 92,\
    ---	CPED_CONFIG_FLAG_ForcePedLoadCover = 93,\
    ---	_CPED_CONFIG_FLAG_0x300E4CD3 = 94,\
    ---	_CPED_CONFIG_FLAG_0xF1C5BF04 = 95,\
    ---	_CPED_CONFIG_FLAG_0x89C2EF13 = 96,\
    ---	CPED_CONFIG_FLAG_VaultFromCover = 97,\
    ---	_CPED_CONFIG_FLAG_0x02A852C8 = 98,\
    ---	_CPED_CONFIG_FLAG_0x3D9407F1 = 99,\
    ---	_CPED_CONFIG_FLAG_IsDrunk = 100, // 0x319B4558\
    ---	CPED_CONFIG_FLAG_ForcedAim = 101,\
    ---	_CPED_CONFIG_FLAG_0xB942D71A = 102,\
    ---	_CPED_CONFIG_FLAG_0xD26C55A8 = 103,\
    ---	CPED_CONFIG_FLAG_OpenDoorArmIK = 104,\
    ---	CPED_CONFIG_FLAG_ForceReload = 105,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollFromVehicleImpact = 106,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollFromBulletImpact = 107,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollFromExplosions = 108,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollFromFire = 109,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollFromElectrocution = 110,\
    ---	_CPED_CONFIG_FLAG_0x83C0A4BF = 111,\
    ---	_CPED_CONFIG_FLAG_0x0E0FAF8C = 112,\
    ---	CPED_CONFIG_FLAG_KeepWeaponHolsteredUnlessFired = 113,\
    ---	_CPED_CONFIG_FLAG_0x43B80B79 = 114,\
    ---	_CPED_CONFIG_FLAG_0x0D2A9309 = 115,\
    ---	CPED_CONFIG_FLAG_GetOutBurningVehicle = 116,\
    ---	CPED_CONFIG_FLAG_BumpedByPlayer = 117,\
    ---	CPED_CONFIG_FLAG_RunFromFiresAndExplosions = 118,\
    ---	CPED_CONFIG_FLAG_TreatAsPlayerDuringTargeting = 119,\
    ---	CPED_CONFIG_FLAG_IsHandCuffed = 120,\
    ---	CPED_CONFIG_FLAG_IsAnkleCuffed = 121,\
    ---	CPED_CONFIG_FLAG_DisableMelee = 122,\
    ---	CPED_CONFIG_FLAG_DisableUnarmedDrivebys = 123,\
    ---	CPED_CONFIG_FLAG_JustGetsPulledOutWhenElectrocuted = 124,\
    ---	_CPED_CONFIG_FLAG_0x5FED6BFD = 125,\
    ---	CPED_CONFIG_FLAG_WillNotHotwireLawEnforcementVehicle = 126,\
    ---	CPED_CONFIG_FLAG_WillCommandeerRatherThanJack = 127,\
    ---	CPED_CONFIG_FLAG_CanBeAgitated = 128,\
    ---	CPED_CONFIG_FLAG_ForcePedToFaceLeftInCover = 129,\
    ---	CPED_CONFIG_FLAG_ForcePedToFaceRightInCover = 130,\
    ---	CPED_CONFIG_FLAG_BlockPedFromTurningInCover = 131,\
    ---	CPED_CONFIG_FLAG_KeepRelationshipGroupAfterCleanUp = 132,\
    ---	CPED_CONFIG_FLAG_ForcePedToBeDragged = 133,\
    ---	CPED_CONFIG_FLAG_PreventPedFromReactingToBeingJacked = 134,\
    ---	CPED_CONFIG_FLAG_IsScuba = 135,\
    ---	CPED_CONFIG_FLAG_WillArrestRatherThanJack = 136,\
    ---	CPED_CONFIG_FLAG_RemoveDeadExtraFarAway = 137,\
    ---	CPED_CONFIG_FLAG_RidingTrain = 138,\
    ---	CPED_CONFIG_FLAG_ArrestResult = 139,\
    ---	CPED_CONFIG_FLAG_CanAttackFriendly = 140,\
    ---	CPED_CONFIG_FLAG_WillJackAnyPlayer = 141,\
    ---	_CPED_CONFIG_FLAG_0x6901E731 = 142,\
    ---	_CPED_CONFIG_FLAG_0x9EC9BF6C = 143,\
    ---	CPED_CONFIG_FLAG_WillJackWantedPlayersRatherThanStealCar = 144,\
    ---	CPED_CONFIG_FLAG_ShootingAnimFlag = 145,\
    ---	CPED_CONFIG_FLAG_DisableLadderClimbing = 146,\
    ---	CPED_CONFIG_FLAG_StairsDetected = 147,\
    ---	CPED_CONFIG_FLAG_SlopeDetected = 148,\
    ---	_CPED_CONFIG_FLAG_0x1A15670B = 149,\
    ---	CPED_CONFIG_FLAG_CowerInsteadOfFlee = 150,\
    ---	CPED_CONFIG_FLAG_CanActivateRagdollWhenVehicleUpsideDown = 151,\
    ---	CPED_CONFIG_FLAG_AlwaysRespondToCriesForHelp = 152,\
    ---	CPED_CONFIG_FLAG_DisableBloodPoolCreation = 153,\
    ---	CPED_CONFIG_FLAG_ShouldFixIfNoCollision = 154,\
    ---	CPED_CONFIG_FLAG_CanPerformArrest = 155,\
    ---	CPED_CONFIG_FLAG_CanPerformUncuff = 156,\
    ---	CPED_CONFIG_FLAG_CanBeArrested = 157,\
    ---	_CPED_CONFIG_FLAG_0xF7960FF5 = 158,\
    ---	CPED_CONFIG_FLAG_PlayerPreferFrontSeatMP = 159,\
    ---	_CPED_CONFIG_FLAG_0x0C6C3099 = 160,\
    ---	_CPED_CONFIG_FLAG_0x645F927A = 161,\
    ---	_CPED_CONFIG_FLAG_0xA86549B9 = 162,\
    ---	_CPED_CONFIG_FLAG_0x8AAF337A = 163,\
    ---	_CPED_CONFIG_FLAG_0x13BAA6E7 = 164,\
    ---	_CPED_CONFIG_FLAG_0x5FB9D1F5 = 165,\
    ---	CPED_CONFIG_FLAG_IsInjured = 166,\
    ---	CPED_CONFIG_FLAG_DontEnterVehiclesInPlayersGroup = 167,\
    ---	_CPED_CONFIG_FLAG_0xD8072639 = 168,\
    ---	CPED_CONFIG_FLAG_PreventAllMeleeTaunts = 169,\
    ---	CPED_CONFIG_FLAG_ForceDirectEntry = 170,\
    ---	CPED_CONFIG_FLAG_AlwaysSeeApproachingVehicles = 171,\
    ---	CPED_CONFIG_FLAG_CanDiveAwayFromApproachingVehicles = 172,\
    ---	CPED_CONFIG_FLAG_AllowPlayerToInterruptVehicleEntryExit = 173,\
    ---	CPED_CONFIG_FLAG_OnlyAttackLawIfPlayerIsWanted = 174,\
    ---	_CPED_CONFIG_FLAG_0x90008BFA = 175,\
    ---	_CPED_CONFIG_FLAG_0x07C7A910 = 176,\
    ---	CPED_CONFIG_FLAG_PedsJackingMeDontGetIn = 177,\
    ---	_CPED_CONFIG_FLAG_0xCE4E8BE2 = 178,\
    ---	CPED_CONFIG_FLAG_PedIgnoresAnimInterruptEvents = 179,\
    ---	CPED_CONFIG_FLAG_IsInCustody = 180,\
    ---	CPED_CONFIG_FLAG_ForceStandardBumpReactionThresholds = 181,\
    ---	CPED_CONFIG_FLAG_LawWillOnlyAttackIfPlayerIsWanted = 182,\
    ---	CPED_CONFIG_FLAG_IsAgitated = 183,\
    ---	CPED_CONFIG_FLAG_PreventAutoShuffleToDriversSeat = 184,\
    ---	CPED_CONFIG_FLAG_UseKinematicModeWhenStationary = 185,\
    ---	CPED_CONFIG_FLAG_EnableWeaponBlocking = 186,\
    ---	CPED_CONFIG_FLAG_HasHurtStarted = 187,\
    ---	CPED_CONFIG_FLAG_DisableHurt = 188,\
    ---	CPED_CONFIG_FLAG_PlayerIsWeird = 189,\
    ---	_CPED_CONFIG_FLAG_0x32FC208B = 190,\
    ---	_CPED_CONFIG_FLAG_0x0C296E5A = 191,\
    ---	_CPED_CONFIG_FLAG_0xE63B73EC = 192,\
    ---	CPED_CONFIG_FLAG_DoNothingWhenOnFootByDefault = 193,\
    ---	CPED_CONFIG_FLAG_UsingScenario = 194,\
    ---	CPED_CONFIG_FLAG_VisibleOnScreen = 195,\
    ---	_CPED_CONFIG_FLAG_0xD88C58A1 = 196,\
    ---	_CPED_CONFIG_FLAG_0x5A3DCF43 = 197,\
    ---	_CPED_CONFIG_FLAG_0xEA02B420 = 198,\
    ---	CPED_CONFIG_FLAG_DontActivateRagdollOnVehicleCollisionWhenDead = 199,\
    ---	CPED_CONFIG_FLAG_HasBeenInArmedCombat = 200,\
    ---	_CPED_CONFIG_FLAG_0x5E6466F6 = 201,\
    ---	CPED_CONFIG_FLAG_Avoidance_Ignore_All = 202,\
    ---	CPED_CONFIG_FLAG_Avoidance_Ignored_by_All = 203,\
    ---	CPED_CONFIG_FLAG_Avoidance_Ignore_Group1 = 204,\
    ---	CPED_CONFIG_FLAG_Avoidance_Member_of_Group1 = 205,\
    ---	CPED_CONFIG_FLAG_ForcedToUseSpecificGroupSeatIndex = 206,\
    ---	_CPED_CONFIG_FLAG_0x415B26B9 = 207,\
    ---	CPED_CONFIG_FLAG_DisableExplosionReactions = 208,\
    ---	CPED_CONFIG_FLAG_DodgedPlayer = 209,\
    ---	CPED_CONFIG_FLAG_WaitingForPlayerControlInterrupt = 210,\
    ---	CPED_CONFIG_FLAG_ForcedToStayInCover = 211,\
    ---	CPED_CONFIG_FLAG_GeneratesSoundEvents = 212,\
    ---	CPED_CONFIG_FLAG_ListensToSoundEvents = 213,\
    ---	CPED_CONFIG_FLAG_AllowToBeTargetedInAVehicle = 214,\
    ---	CPED_CONFIG_FLAG_WaitForDirectEntryPointToBeFreeWhenExiting = 215,\
    ---	CPED_CONFIG_FLAG_OnlyRequireOnePressToExitVehicle = 216,\
    ---	CPED_CONFIG_FLAG_ForceExitToSkyDive = 217,\
    ---	_CPED_CONFIG_FLAG_0x3C7DF9DF = 218,\
    ---	_CPED_CONFIG_FLAG_0x848FFEF2 = 219,\
    ---	CPED_CONFIG_FLAG_DontEnterLeadersVehicle = 220,\
    ---	CPED_CONFIG_FLAG_DisableExitToSkyDive = 221,\
    ---	_CPED_CONFIG_FLAG_0x84F722FA = 222,\
    ---	_CPED_CONFIG_FLAG_Shrink = 223, // 0xD1B87B1F\
    ---	_CPED_CONFIG_FLAG_0x728AA918 = 224,\
    ---	CPED_CONFIG_FLAG_DisablePotentialToBeWalkedIntoResponse = 225,\
    ---	CPED_CONFIG_FLAG_DisablePedAvoidance = 226,\
    ---	CPED_CONFIG_FLAG_ForceRagdollUponDeath = 227,\
    ---	_CPED_CONFIG_FLAG_0x1EA7225F = 228,\
    ---	CPED_CONFIG_FLAG_DisablePanicInVehicle = 229,\
    ---	CPED_CONFIG_FLAG_AllowedToDetachTrailer = 230,\
    ---	_CPED_CONFIG_FLAG_0xFC3E572D = 231,\
    ---	_CPED_CONFIG_FLAG_0x08E9F9CF = 232,\
    ---	_CPED_CONFIG_FLAG_0x2D3BA52D = 233,\
    ---	_CPED_CONFIG_FLAG_0xFD2F53EA = 234,\
    ---	_CPED_CONFIG_FLAG_0x31A1B03B = 235,\
    ---	CPED_CONFIG_FLAG_IsHoldingProp = 236,\
    ---	CPED_CONFIG_FLAG_BlocksPathingWhenDead = 237,\
    ---	_CPED_CONFIG_FLAG_0xCE57C9A3 = 238,\
    ---	_CPED_CONFIG_FLAG_0x26149198 = 239,\
    ---	CPED_CONFIG_FLAG_ForceSkinCharacterCloth = 240,\
    ---	CPED_CONFIG_FLAG_LeaveEngineOnWhenExitingVehicles = 241,\
    ---	CPED_CONFIG_FLAG_PhoneDisableTextingAnimations = 242,\
    ---	CPED_CONFIG_FLAG_PhoneDisableTalkingAnimations = 243,\
    ---	CPED_CONFIG_FLAG_PhoneDisableCameraAnimations = 244,\
    ---	CPED_CONFIG_FLAG_DisableBlindFiringInShotReactions = 245,\
    ---	CPED_CONFIG_FLAG_AllowNearbyCoverUsage = 246,\
    ---	_CPED_CONFIG_FLAG_0x0C754ACA = 247,\
    ---	CPED_CONFIG_FLAG_CanPlayInCarIdles = 248,\
    ---	CPED_CONFIG_FLAG_CanAttackNonWantedPlayerAsLaw = 249,\
    ---	CPED_CONFIG_FLAG_WillTakeDamageWhenVehicleCrashes = 250,\
    ---	CPED_CONFIG_FLAG_AICanDrivePlayerAsRearPassenger = 251,\
    ---	CPED_CONFIG_FLAG_PlayerCanJackFriendlyPlayers = 252,\
    ---	CPED_CONFIG_FLAG_OnStairs = 253,\
    ---	_CPED_CONFIG_FLAG_0xE1A2F73F = 254,\
    ---	CPED_CONFIG_FLAG_AIDriverAllowFriendlyPassengerSeatEntry = 255,\
    ---	_CPED_CONFIG_FLAG_0xF1EB20A9 = 256,\
    ---	CPED_CONFIG_FLAG_AllowMissionPedToUseInjuredMovement = 257,\
    ---	_CPED_CONFIG_FLAG_0x329DCF1A = 258,\
    ---	_CPED_CONFIG_FLAG_0x8D90DD1B = 259,\
    ---	_CPED_CONFIG_FLAG_0xB8A292B7 = 260,\
    ---	CPED_CONFIG_FLAG_PreventUsingLowerPrioritySeats = 261,\
    ---	_CPED_CONFIG_FLAG_0x2AF558F0 = 262,\
    ---	_CPED_CONFIG_FLAG_0x82251455 = 263,\
    ---	_CPED_CONFIG_FLAG_0x30CF498B = 264,\
    ---	_CPED_CONFIG_FLAG_0xE1CD50AF = 265,\
    ---	_CPED_CONFIG_FLAG_0x72E4AE48 = 266,\
    ---	_CPED_CONFIG_FLAG_0xC2657EA1 = 267,\
    ---	CPED_CONFIG_FLAG_TeleportToLeaderVehicle = 268,\
    ---	CPED_CONFIG_FLAG_Avoidance_Ignore_WeirdPedBuffer = 269,\
    ---	CPED_CONFIG_FLAG_OnStairSlope = 270,\
    ---	_CPED_CONFIG_FLAG_0xA0897933 = 271,\
    ---	CPED_CONFIG_FLAG_DontBlipCop = 272,\
    ---	CPED_CONFIG_FLAG_ClimbedShiftedFence = 273,\
    ---	_CPED_CONFIG_FLAG_0xF7823618 = 274,\
    ---	CPED_CONFIG_FLAG_KillWhenTrapped = 275,\
    ---	CPED_CONFIG_FLAG_EdgeDetected = 276,\
    ---	_CPED_CONFIG_FLAG_0x92B67896 = 277,\
    ---	_CPED_CONFIG_FLAG_0xCAD677C9 = 278,\
    ---	CPED_CONFIG_FLAG_AvoidTearGas = 279,\
    ---	_CPED_CONFIG_FLAG_0x5276AC7B = 280,\
    ---	CPED_CONFIG_FLAG_DisableGoToWritheWhenInjured = 281,\
    ---	CPED_CONFIG_FLAG_OnlyUseForcedSeatWhenEnteringHeliInGroup = 282,\
    ---	_CPED_CONFIG_FLAG_0x9139724D = 283,\
    ---	_CPED_CONFIG_FLAG_0xA1457461 = 284,\
    ---	CPED_CONFIG_FLAG_DisableWeirdPedEvents = 285,\
    ---	CPED_CONFIG_FLAG_ShouldChargeNow = 286,\
    ---	CPED_CONFIG_FLAG_RagdollingOnBoat = 287,\
    ---	CPED_CONFIG_FLAG_HasBrandishedWeapon = 288,\
    ---	_CPED_CONFIG_FLAG_0x1B9EE8A1 = 289,\
    ---	_CPED_CONFIG_FLAG_0xF3F5758C = 290,\
    ---	_CPED_CONFIG_FLAG_0x2A9307F1 = 291,\
    ---	_CPED_CONFIG_FLAG_FreezePosition = 292, // 0x7403D216\
    ---	_CPED_CONFIG_FLAG_0xA06A3C6C = 293,\
    ---	CPED_CONFIG_FLAG_DisableShockingEvents = 294,\
    ---	_CPED_CONFIG_FLAG_0xF8DA25A5 = 295,\
    ---	CPED_CONFIG_FLAG_NeverReactToPedOnRoof = 296,\
    ---	_CPED_CONFIG_FLAG_0xB31F1187 = 297,\
    ---	_CPED_CONFIG_FLAG_0x84315402 = 298,\
    ---	CPED_CONFIG_FLAG_DisableShockingDrivingOnPavementEvents = 299,\
    ---	_CPED_CONFIG_FLAG_0xC7829B67 = 300,\
    ---	CPED_CONFIG_FLAG_DisablePedConstraints = 301,\
    ---	CPED_CONFIG_FLAG_ForceInitialPeekInCover = 302,\
    ---	_CPED_CONFIG_FLAG_0x2ADA871B = 303,\
    ---	_CPED_CONFIG_FLAG_0x47BC8A58 = 304,\
    ---	CPED_CONFIG_FLAG_DisableJumpingFromVehiclesAfterLeader = 305,\
    ---	_CPED_CONFIG_FLAG_0x4A133C50 = 306,\
    ---	_CPED_CONFIG_FLAG_0xC58099C3 = 307,\
    ---	_CPED_CONFIG_FLAG_0xF3D76D41 = 308,\
    ---	_CPED_CONFIG_FLAG_0xB0EEE9F2 = 309,\
    ---	CPED_CONFIG_FLAG_IsInCluster = 310,\
    ---	CPED_CONFIG_FLAG_ShoutToGroupOnPlayerMelee = 311,\
    ---	CPED_CONFIG_FLAG_IgnoredByAutoOpenDoors = 312,\
    ---	_CPED_CONFIG_FLAG_0xD4136C22 = 313,\
    ---	CPED_CONFIG_FLAG_ForceIgnoreMeleeActiveCombatant = 314,\
    ---	CPED_CONFIG_FLAG_CheckLoSForSoundEvents = 315,\
    ---	_CPED_CONFIG_FLAG_0xD5C98277 = 316,\
    ---	CPED_CONFIG_FLAG_CanSayFollowedByPlayerAudio = 317,\
    ---	CPED_CONFIG_FLAG_ActivateRagdollFromMinorPlayerContact = 318,\
    ---	_CPED_CONFIG_FLAG_0xD8BE1D54 = 319,\
    ---	CPED_CONFIG_FLAG_ForcePoseCharacterCloth = 320,\
    ---	CPED_CONFIG_FLAG_HasClothCollisionBounds = 321,\
    ---	CPED_CONFIG_FLAG_HasHighHeels = 322,\
    ---	_CPED_CONFIG_FLAG_0x86B01E54 = 323,\
    ---	CPED_CONFIG_FLAG_DontBehaveLikeLaw = 324,\
    ---	_CPED_CONFIG_FLAG_0xC03B736C = 325, // SpawnedAtScenario?\
    ---	CPED_CONFIG_FLAG_DisablePoliceInvestigatingBody = 326,\
    ---	CPED_CONFIG_FLAG_DisableWritheShootFromGround = 327,\
    ---	CPED_CONFIG_FLAG_LowerPriorityOfWarpSeats = 328,\
    ---	CPED_CONFIG_FLAG_DisableTalkTo = 329,\
    ---	CPED_CONFIG_FLAG_DontBlip = 330,\
    ---	CPED_CONFIG_FLAG_IsSwitchingWeapon = 331,\
    ---	CPED_CONFIG_FLAG_IgnoreLegIkRestrictions = 332,\
    ---	_CPED_CONFIG_FLAG_0x150468FD = 333,\
    ---	_CPED_CONFIG_FLAG_0x914EBD6B = 334,\
    ---	_CPED_CONFIG_FLAG_0x79AF3B6D = 335,\
    ---	_CPED_CONFIG_FLAG_0x75C7A632 = 336,\
    ---	_CPED_CONFIG_FLAG_0x52D530E2 = 337,\
    ---	_CPED_CONFIG_FLAG_0xDB2A90E0 = 338,\
    ---	CPED_CONFIG_FLAG_AllowTaskDoNothingTimeslicing = 339,\
    ---	_CPED_CONFIG_FLAG_0x12ADB567 = 340,\
    ---	_CPED_CONFIG_FLAG_0x105C8518 = 341,\
    ---	CPED_CONFIG_FLAG_NotAllowedToJackAnyPlayers = 342,\
    ---	_CPED_CONFIG_FLAG_0xED152C3E = 343,\
    ---	_CPED_CONFIG_FLAG_0xA0EFE6A8 = 344,\
    ---	CPED_CONFIG_FLAG_AlwaysLeaveTrainUponArrival = 345,\
    ---	_CPED_CONFIG_FLAG_0xCDDFE830 = 346,\
    ---	CPED_CONFIG_FLAG_OnlyWritheFromWeaponDamage = 347,\
    ---	CPED_CONFIG_FLAG_UseSloMoBloodVfx = 348,\
    ---	CPED_CONFIG_FLAG_EquipJetpack = 349,\
    ---	CPED_CONFIG_FLAG_PreventDraggedOutOfCarThreatResponse = 350,\
    ---	_CPED_CONFIG_FLAG_0xE13D1F7C = 351,\
    ---	_CPED_CONFIG_FLAG_0x40E25FB9 = 352,\
    ---	_CPED_CONFIG_FLAG_0x930629D9 = 353,\
    ---	_CPED_CONFIG_FLAG_0xECCF0C7F = 354,\
    ---	_CPED_CONFIG_FLAG_0xB6E9613B = 355,\
    ---	CPED_CONFIG_FLAG_ForceDeepSurfaceCheck = 356,\
    ---	CPED_CONFIG_FLAG_DisableDeepSurfaceAnims = 357,\
    ---	CPED_CONFIG_FLAG_DontBlipNotSynced = 358,\
    ---	CPED_CONFIG_FLAG_IsDuckingInVehicle = 359,\
    ---	CPED_CONFIG_FLAG_PreventAutoShuffleToTurretSeat = 360,\
    ---	CPED_CONFIG_FLAG_DisableEventInteriorStatusCheck = 361,\
    ---	CPED_CONFIG_FLAG_HasReserveParachute = 362,\
    ---	CPED_CONFIG_FLAG_UseReserveParachute = 363,\
    ---	CPED_CONFIG_FLAG_TreatDislikeAsHateWhenInCombat = 364,\
    ---	CPED_CONFIG_FLAG_OnlyUpdateTargetWantedIfSeen = 365,\
    ---	CPED_CONFIG_FLAG_AllowAutoShuffleToDriversSeat = 366,\
    ---	_CPED_CONFIG_FLAG_0xD7E07D37 = 367,\
    ---	_CPED_CONFIG_FLAG_0x03C4FD24 = 368,\
    ---	_CPED_CONFIG_FLAG_0x7675789A = 369,\
    ---	_CPED_CONFIG_FLAG_0xB7288A88 = 370,\
    ---	_CPED_CONFIG_FLAG_0xC06B6291 = 371,\
    ---	CPED_CONFIG_FLAG_PreventReactingToSilencedCloneBullets = 372,\
    ---	CPED_CONFIG_FLAG_DisableInjuredCryForHelpEvents = 373,\
    ---	CPED_CONFIG_FLAG_NeverLeaveTrain = 374,\
    ---	CPED_CONFIG_FLAG_DontDropJetpackOnDeath = 375,\
    ---	_CPED_CONFIG_FLAG_0x147F1FFB = 376,\
    ---	_CPED_CONFIG_FLAG_0x4376DD79 = 377,\
    ---	_CPED_CONFIG_FLAG_0xCD3DB518 = 378,\
    ---	_CPED_CONFIG_FLAG_0xFE4BA4B6 = 379,\
    ---	CPED_CONFIG_FLAG_DisableAutoEquipHelmetsInBikes = 380,\
    ---	_CPED_CONFIG_FLAG_0xBCD816CD = 381,\
    ---	_CPED_CONFIG_FLAG_0xCF02DD69 = 382,\
    ---	_CPED_CONFIG_FLAG_0xF73AFA2E = 383,\
    ---	_CPED_CONFIG_FLAG_0x80B9A9D0 = 384,\
    ---	_CPED_CONFIG_FLAG_0xF601F7EE = 385,\
    ---	_CPED_CONFIG_FLAG_0xA91350FC = 386,\
    ---	_CPED_CONFIG_FLAG_0x3AB23B96 = 387,\
    ---	CPED_CONFIG_FLAG_IsClimbingLadder = 388,\
    ---	CPED_CONFIG_FLAG_HasBareFeet = 389,\
    ---	CPED_CONFIG_FLAG_UNUSED_REPLACE_ME_2 = 390,\
    ---	CPED_CONFIG_FLAG_GoOnWithoutVehicleIfItIsUnableToGetBackToRoad = 391,\
    ---	CPED_CONFIG_FLAG_BlockDroppingHealthSnacksOnDeath = 392,\
    ---	_CPED_CONFIG_FLAG_0xC11D3E8F = 393,\
    ---	CPED_CONFIG_FLAG_ForceThreatResponseToNonFriendToFriendMeleeActions = 394,\
    ---	CPED_CONFIG_FLAG_DontRespondToRandomPedsDamage = 395,\
    ---	CPED_CONFIG_FLAG_AllowContinuousThreatResponseWantedLevelUpdates = 396,\
    ---	CPED_CONFIG_FLAG_KeepTargetLossResponseOnCleanup = 397,\
    ---	CPED_CONFIG_FLAG_PlayersDontDragMeOutOfCar = 398,\
    ---	CPED_CONFIG_FLAG_BroadcastRepondedToThreatWhenGoingToPointShooting = 399,\
    ---	CPED_CONFIG_FLAG_IgnorePedTypeForIsFriendlyWith = 400,\
    ---	CPED_CONFIG_FLAG_TreatNonFriendlyAsHateWhenInCombat = 401,\
    ---	CPED_CONFIG_FLAG_DontLeaveVehicleIfLeaderNotInVehicle = 402,\
    ---	_CPED_CONFIG_FLAG_0x5E5B9591 = 403,\
    ---	CPED_CONFIG_FLAG_AllowMeleeReactionIfMeleeProofIsOn = 404,\
    ---	_CPED_CONFIG_FLAG_0x77840177 = 405,\
    ---	_CPED_CONFIG_FLAG_0x1C7ACAC4 = 406,\
    ---	CPED_CONFIG_FLAG_UseNormalExplosionDamageWhenBlownUpInVehicle = 407,\
    ---	CPED_CONFIG_FLAG_DisableHomingMissileLockForVehiclePedInside = 408,\
    ---	CPED_CONFIG_FLAG_DisableTakeOffScubaGear = 409,\
    ---	CPED_CONFIG_FLAG_IgnoreMeleeFistWeaponDamageMult = 410,\
    ---	CPED_CONFIG_FLAG_LawPedsCanFleeFromNonWantedPlayer = 411,\
    ---	CPED_CONFIG_FLAG_ForceBlipSecurityPedsIfPlayerIsWanted = 412,\
    ---	CPED_CONFIG_FLAG_IsHolsteringWeapon = 413,\
    ---	CPED_CONFIG_FLAG_UseGoToPointForScenarioNavigation = 414,\
    ---	CPED_CONFIG_FLAG_DontClearLocalPassengersWantedLevel = 415,\
    ---	CPED_CONFIG_FLAG_BlockAutoSwapOnWeaponPickups = 416,\
    ---	CPED_CONFIG_FLAG_ThisPedIsATargetPriorityForAI = 417,\
    ---	CPED_CONFIG_FLAG_IsSwitchingHelmetVisor = 418,\
    ---	CPED_CONFIG_FLAG_ForceHelmetVisorSwitch = 419,\
    ---	_CPED_CONFIG_FLAG_0xCFF5F6DE = 420,\
    ---	CPED_CONFIG_FLAG_UseOverrideFootstepPtFx = 421,\
    ---	CPED_CONFIG_FLAG_DisableVehicleCombat = 422,\
    ---	_CPED_CONFIG_FLAG_0xFE401D26 = 423,\
    ---	CPED_CONFIG_FLAG_FallsLikeAircraft = 424,\
    ---	_CPED_CONFIG_FLAG_0x2B42AE82 = 425,\
    ---	CPED_CONFIG_FLAG_UseLockpickVehicleEntryAnimations = 426,\
    ---	CPED_CONFIG_FLAG_IgnoreInteriorCheckForSprinting = 427,\
    ---	CPED_CONFIG_FLAG_SwatHeliSpawnWithinLastSpottedLocation = 428,\
    ---	CPED_CONFIG_FLAG_DisableStartEngine = 429,\
    ---	CPED_CONFIG_FLAG_IgnoreBeingOnFire = 430,\
    ---	CPED_CONFIG_FLAG_DisableTurretOrRearSeatPreference = 431,\
    ---	CPED_CONFIG_FLAG_DisableWantedHelicopterSpawning = 432,\
    ---	CPED_CONFIG_FLAG_UseTargetPerceptionForCreatingAimedAtEvents = 433,\
    ---	CPED_CONFIG_FLAG_DisableHomingMissileLockon = 434,\
    ---	CPED_CONFIG_FLAG_ForceIgnoreMaxMeleeActiveSupportCombatants = 435,\
    ---	CPED_CONFIG_FLAG_StayInDefensiveAreaWhenInVehicle = 436,\
    ---	CPED_CONFIG_FLAG_DontShoutTargetPosition = 437,\
    ---	CPED_CONFIG_FLAG_DisableHelmetArmor = 438,\
    ---	_CPED_CONFIG_FLAG_0xCB7F3A1E = 439,\
    ---	_CPED_CONFIG_FLAG_0x50178878 = 440,\
    ---	CPED_CONFIG_FLAG_PreventVehExitDueToInvalidWeapon = 441,\
    ---	CPED_CONFIG_FLAG_IgnoreNetSessionFriendlyFireCheckForAllowDamage = 442,\
    ---	CPED_CONFIG_FLAG_DontLeaveCombatIfTargetPlayerIsAttackedByPolice = 443,\
    ---	CPED_CONFIG_FLAG_CheckLockedBeforeWarp = 444,\
    ---	CPED_CONFIG_FLAG_DontShuffleInVehicleToMakeRoom = 445,\
    ---	CPED_CONFIG_FLAG_GiveWeaponOnGetup = 446,\
    ---	CPED_CONFIG_FLAG_DontHitVehicleWithProjectiles = 447,\
    ---	CPED_CONFIG_FLAG_DisableForcedEntryForOpenVehiclesFromTryLockedDoor = 448,\
    ---	CPED_CONFIG_FLAG_FiresDummyRockets = 449,\
    ---	CPED_CONFIG_FLAG_PedIsArresting = 450,\
    ---	CPED_CONFIG_FLAG_IsDecoyPed = 451,\
    ---	CPED_CONFIG_FLAG_HasEstablishedDecoy = 452,\
    ---	CPED_CONFIG_FLAG_BlockDispatchedHelicoptersFromLanding = 453,\
    ---	CPED_CONFIG_FLAG_DontCryForHelpOnStun = 454,\
    ---	_CPED_CONFIG_FLAG_0xB68D3EAB = 455,\
    ---	CPED_CONFIG_FLAG_CanBeIncapacitated = 456,\
    ---	_CPED_CONFIG_FLAG_0x4BD5EBAD = 457,\
    ---	CPED_CONFIG_FLAG_DontChangeTargetFromMelee = 458,\
    ---};
    ---@param ped Ped
    ---@param flagId integer
    ---@param value BOOL
    SET_PED_CONFIG_FLAG = function(ped, flagId, value) end,

    ---PED::SET_PED_RESET_FLAG(PLAYER::PLAYER_PED_ID(), 240, 1);\
    ---Known values:\
    ---PRF_PreventGoingIntoStillInVehicleState = 236 *(fanatic2.c)*
    ---@param ped Ped
    ---@param flagId integer
    ---@param doReset BOOL
    SET_PED_RESET_FLAG = function(ped, flagId, doReset) end,

    ---See SET_PED_CONFIG_FLAG
    ---@param ped Ped
    ---@param flagId integer
    ---@param p2 BOOL
    ---@return BOOL
    GET_PED_CONFIG_FLAG = function(ped, flagId, p2) end,

    ---@param ped Ped
    ---@param flagId integer
    ---@return BOOL
    GET_PED_RESET_FLAG = function(ped, flagId) end,

    ---@param ped Ped
    ---@param index integer
    SET_PED_GROUP_MEMBER_PASSENGER_INDEX = function(ped, index) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_EVASIVE_DIVE = function(ped, toggle) end,

    ---Presumably returns the Entity that the Ped is currently diving out of the way of.\
    ---\
    ---var num3;\
    ---    if (PED::IS_PED_EVASIVE_DIVING(A_0, &num3) != 0)\
    ---        if (ENTITY::IS_ENTITY_A_VEHICLE(num3) != 0)
    ---@param ped Ped
    ---@param evadingEntity Entity
    ---@return BOOL
    ---@return Entity
    IS_PED_EVASIVE_DIVING = function(ped, evadingEntity) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param toggle BOOL
    SET_PED_SHOOTS_AT_COORD = function(ped, x, y, z, toggle) end,

    ---Full list of peds by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/peds.json
    ---@param modelHash Hash
    ---@param toggle BOOL
    SET_PED_MODEL_IS_SUPPRESSED = function(modelHash, toggle) end,

    STOP_ANY_PED_MODEL_BEING_SUPPRESSED = function() end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_BE_TARGETED_WHEN_INJURED = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_GENERATES_DEAD_BODY_EVENTS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    BLOCK_PED_FROM_GENERATING_DEAD_BODY_EVENTS_WHEN_DEAD = function(ped, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PED_WILL_ONLY_ATTACK_WANTED_PLAYER = function(p0, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_RAGDOLL_FROM_PLAYER_IMPACT = function(ped, toggle) end,

    ---PoliceMotorcycleHelmet   1024    \
    ---RegularMotorcycleHelmet   4096    \
    ---FiremanHelmet 16384   \
    ---PilotHeadset  32768   \
    ---PilotHelmet   65536\
    -----\
    ---p2 is generally 4096 or 16384 in the scripts. p1 varies between 1 and 0.
    ---@param ped Ped
    ---@param cannotRemove BOOL
    ---@param helmetFlag integer
    ---@param textureIndex integer
    GIVE_PED_HELMET = function(ped, cannotRemove, helmetFlag, textureIndex) end,

    ---@param ped Ped
    ---@param instantly BOOL
    REMOVE_PED_HELMET = function(ped, instantly) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_TAKING_OFF_HELMET = function(ped) end,

    ---@param ped Ped
    ---@param canWearHelmet BOOL
    SET_PED_HELMET = function(ped, canWearHelmet) end,

    ---@param ped Ped
    ---@param helmetFlag integer
    SET_PED_HELMET_FLAG = function(ped, helmetFlag) end,

    ---List of component/props ID\
    ---gtaxscripting.blogspot.com/2016/04/gta-v-peds-component-and-props.html
    ---@param ped Ped
    ---@param propIndex integer
    ---@param p2 BOOL
    SET_PED_HELMET_PROP_INDEX = function(ped, propIndex, p2) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 integer
    ---@param p3 integer
    SET_PED_HELMET_VISOR_PROP_INDICES = function(ped, p1, p2, p3) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_HELMET_VISOR_UP = function(ped) end,

    ---@param ped Ped
    ---@param textureIndex integer
    SET_PED_HELMET_TEXTURE_INDEX = function(ped, textureIndex) end,

    ---Returns true if the ped passed through the parenthesis is wearing a helmet.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_WEARING_HELMET = function(ped) end,

    ---@param ped Ped
    CLEAR_PED_STORED_HAT_PROP = function(ped) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_HELMET_STORED_HAT_PROP_INDEX = function(ped) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_HELMET_STORED_HAT_TEX_INDEX = function(ped) end,

    ---@param p0 Any
    ---@return BOOL
    IS_CURRENT_HEAD_PROP_A_HELMET = function(p0) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_TO_LOAD_COVER = function(ped, toggle) end,

    ---It simply makes the said ped to cower behind cover object(wall, desk, car)\
    ---\
    ---Peds flee attributes must be set to not to flee, first. Else, most of the peds, will just flee from gunshot sounds or any other panic situations.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_COWER_IN_COVER = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_PEEK_IN_COVER = function(ped, toggle) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_PLAYS_HEAD_ON_HORN_ANIM_WHEN_DIES_IN_VEHICLE = function(ped, toggle) end,

    ---"IK" stands for "Inverse kinematics." I assume this has something to do with how the ped uses his legs to balance. In the scripts, the second parameter is always an int with a value of 2, 0, or sometimes 1
    ---@param ped Ped
    ---@param mode integer
    SET_PED_LEG_IK_MODE = function(ped, mode) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_MOTION_BLUR = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_SWITCH_WEAPON = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DIES_INSTANTLY_IN_WATER = function(ped, toggle) end,

    ---Only appears in lamar1 script.
    ---@param ped Ped
    ---@param p1 integer
    SET_LADDER_CLIMB_INPUT_STATE = function(ped, p1) end,

    ---@param ped Ped
    STOP_PED_WEAPON_FIRING_WHEN_DROPPED = function(ped) end,

    ---@param ped Ped
    ---@param p1 number
    SET_SCRIPTED_ANIM_SEAT_OFFSET = function(ped, p1) end,

    ---enum eCombatMovement // 0x4F456B61\
    ---{\
    ---	CM_Stationary,\
    ---	CM_Defensive,\
    ---	CM_WillAdvance,\
    ---	CM_WillRetreat\
    ---};
    ---@param ped Ped
    ---@param combatMovement integer
    SET_PED_COMBAT_MOVEMENT = function(ped, combatMovement) end,

    ---See SET_PED_COMBAT_MOVEMENT
    ---@param ped Ped
    ---@return integer
    GET_PED_COMBAT_MOVEMENT = function(ped) end,

    ---enum eCombatAbility // 0xE793438C\
    ---{\
    ---	CA_Poor,\
    ---	CA_Average,\
    ---	CA_Professional,\
    ---	CA_NumTypes\
    ---};
    ---@param ped Ped
    ---@param abilityLevel integer
    SET_PED_COMBAT_ABILITY = function(ped, abilityLevel) end,

    ---enum eCombatRange // 0xB69160F5\
    ---{\
    ---	CR_Near,\
    ---	CR_Medium,\
    ---	CR_Far,\
    ---	CR_VeryFar,\
    ---	CR_NumRanges\
    ---};
    ---@param ped Ped
    ---@param combatRange integer
    SET_PED_COMBAT_RANGE = function(ped, combatRange) end,

    ---See SET_PED_COMBAT_RANGE
    ---@param ped Ped
    ---@return integer
    GET_PED_COMBAT_RANGE = function(ped) end,

    ---enum eCombatAttributes // 0x0E8E7201\
    ---{\
    ---	BF_CanUseCover = 0,\
    ---	BF_CanUseVehicles = 1,\
    ---	BF_CanDoDrivebys = 2,\
    ---	BF_CanLeaveVehicle = 3,\
    ---	BF_CanUseDynamicStrafeDecisions = 4,\
    ---	BF_AlwaysFight = 5,\
    ---	BF_0x66BB9FCC = 6,\
    ---	BF_0x6837DA41 = 7,\
    ---	BF_0xB4A13A5A = 8,\
    ---	BF_0xEE326AAD = 9,\
    ---	BF_0x7DF2CCFA = 10,\
    ---	BF_0x0036D422 = 11,\
    ---	BF_BlindFireWhenInCover = 12,\
    ---	BF_Aggressive = 13,\
    ---	BF_CanInvestigate = 14,\
    ---	BF_HasRadio = 15,\
    ---	BF_0x6BDE28D1 = 16,\
    ---	BF_AlwaysFlee = 17,\
    ---	BF_0x7852797D = 18,\
    ---	BF_0x33497B95 = 19,\
    ---	BF_CanTauntInVehicle = 20,\
    ---	BF_CanChaseTargetOnFoot = 21,\
    ---	BF_WillDragInjuredPedsToSafety = 22,\
    ---	BF_0xCD7168B8 = 23,\
    ---	BF_UseProximityFiringRate = 24,\
    ---	BF_0x48F914F8 = 25,\
    ---	BF_0x2EA543D0 = 26,\
    ---	BF_PerfectAccuracy = 27,\
    ---	BF_CanUseFrustratedAdvance = 28,\
    ---	BF_0x3D131AC1 = 29,\
    ---	BF_0x3AD95F27 = 30,\
    ---	BF_MaintainMinDistanceToTarget = 31,\
    ---	BF_0xEAD68AD2 = 32,\
    ---	BF_0xA206C2E0 = 33,\
    ---	BF_CanUsePeekingVariations = 34,\
    ---	BF_0xA5715184 = 35,\
    ---	BF_0xD5265533 = 36,\
    ---	BF_0x2B84C2BF = 37,\
    ---	BF_DisableBulletReactions = 38,\
    ---	BF_CanBust = 39,\
    ---	BF_0xAA525726 = 40,\
    ---	BF_CanCommandeerVehicles = 41,\
    ---	BF_CanFlank = 42,\
    ---	BF_SwitchToAdvanceIfCantFindCover = 43,\
    ---	BF_SwitchToDefensiveIfInCover = 44,\
    ---	BF_0xEB4786A0 = 45,\
    ---	BF_CanFightArmedPedsWhenNotArmed = 46,\
    ---	BF_0xA08E9402 = 47,\
    ---	BF_0x952EAD7D = 48,\
    ---	BF_UseEnemyAccuracyScaling = 49,\
    ---	BF_CanCharge = 50,\
    ---	BF_0xDA8C2BD3 = 51,\
    ---	BF_0x6562F017 = 52,\
    ---	BF_0xA2C3D53B = 53,\
    ---	BF_AlwaysEquipBestWeapon = 54,\
    ---	BF_CanSeeUnderwaterPeds = 55,\
    ---	BF_0xF619486B = 56,\
    ---	BF_0x61EB63A3 = 57,\
    ---	BF_DisableFleeFromCombat = 58,\
    ---	BF_0x8976D12B = 59,\
    ---	BF_CanThrowSmokeGrenade = 60,\
    ---	BF_NonMissionPedsFleeFromThisPedUnlessArmed = 61,\
    ---	BF_0x5452A10C = 62,\
    ---	BF_FleesFromInvincibleOpponents = 63,\
    ---	BF_DisableBlockFromPursueDuringVehicleChase = 64,\
    ---	BF_DisableSpinOutDuringVehicleChase = 65,\
    ---	BF_DisableCruiseInFrontDuringBlockDuringVehicleChase = 66,\
    ---	BF_0x0B404731 = 67,\
    ---	BF_DisableReactToBuddyShot = 68,\
    ---	BF_0x7FFD6AEB = 69,\
    ---	BF_0x51F4AEF8 = 70,\
    ---	BF_PermitChargeBeyondDefensiveArea = 71,\
    ---	BF_0x63E0A8E2 = 72,\
    ---	BF_0xDF974436 = 73,\
    ---	BF_0x556C080B = 74,\
    ---	BF_0xA4D50035 = 75,\
    ---	BF_SetDisableShoutTargetPositionOnCombatStart = 76,\
    ---	BF_DisableRespondedToThreatBroadcast = 77,\
    ---	BF_0xCBB01765 = 78,\
    ---	BF_0x4F862ED4 = 79,\
    ---	BF_0xEF9C7C40 = 80,\
    ---	BF_0xE51B494F = 81,\
    ---	BF_0x054D0199 = 82,\
    ---	BF_0xD36BCE94 = 83,\
    ---	BF_0xFB11F690 = 84,\
    ---	BF_0xD208A9AD = 85,\
    ---	BF_AllowDogFighting = 86,\
    ---	BF_0x07A6E531 = 87,\
    ---	BF_0x34F9317B = 88,\
    ---	BF_0x4240F5A9 = 89,\
    ---	BF_0xEE129DBD = 90,\
    ---	BF_0x053AEAD9 = 91\
    ---};
    ---@param ped Ped
    ---@param attributeId integer
    ---@param enabled BOOL
    SET_PED_COMBAT_ATTRIBUTES = function(ped, attributeId, enabled) end,

    ---enum eTargetLossResponseType\
    ---{\
    ---	TLR_ExitTask,\
    ---	TLR_NeverLoseTarget,\
    ---	TLR_SearchForTarget\
    ---};
    ---@param ped Ped
    ---@param responseType integer
    SET_PED_TARGET_LOSS_RESPONSE = function(ped, responseType) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_PERFORMING_MELEE_ACTION = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_PERFORMING_STEALTH_KILL = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_PERFORMING_A_COUNTER_ATTACK = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_BEING_STEALTH_KILLED = function(ped) end,

    ---@param ped Ped
    ---@return Ped
    GET_MELEE_TARGET_FOR_PED = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    WAS_PED_KILLED_BY_STEALTH = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    WAS_PED_KILLED_BY_TAKEDOWN = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    WAS_PED_KNOCKED_OUT = function(ped) end,

    ---bit 1 (0x2) = use vehicle\
    ---bit 15 (0x8000) = force cower
    ---@param ped Ped
    ---@param attributeFlags integer
    ---@param enable BOOL
    SET_PED_FLEE_ATTRIBUTES = function(ped, attributeFlags, enable) end,

    ---p1: Only "CODE_HUMAN_STAND_COWER" found in the b617d scripts.
    ---@param ped Ped
    ---@param p1 string
    SET_PED_COWER_HASH = function(ped, p1) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_STEERS_AROUND_DEAD_BODIES = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_STEERS_AROUND_PEDS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_STEERS_AROUND_OBJECTS = function(ped, toggle) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_STEERS_AROUND_VEHICLES = function(ped, toggle) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_PED_IS_AVOIDED_BY_OTHERS = function(p0, p1) end,

    ---@param ped Ped
    SET_PED_INCREASED_AVOIDANCE_RADIUS = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_BLOCKS_PATHING_WHEN_DEAD = function(ped, toggle) end,

    ---@param p0 Any
    SET_PED_NO_TIME_DELAY_BEFORE_SHOT = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_ANY_PED_NEAR_POINT = function(x, y, z, radius) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 BOOL
    FORCE_PED_AI_AND_ANIMATION_UPDATE = function(ped, p1, p2) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 number
    ---@return BOOL
    IS_PED_HEADING_TOWARDS_POSITION = function(ped, x, y, z, p4) end,

    ---@param ped Ped
    REQUEST_PED_VISIBILITY_TRACKING = function(ped) end,

    ---@param ped Ped
    ---@param p1 BOOL
    REQUEST_PED_VEHICLE_VISIBILITY_TRACKING = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 BOOL
    REQUEST_PED_RESTRICTED_VEHICLE_VISIBILITY_TRACKING = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 BOOL
    REQUEST_PED_USE_SMALL_BBOX_VISIBILITY_TRACKING = function(ped, p1) end,

    ---returns whether or not a ped is visible within your FOV, not this check auto's to false after a certain distance.\
    ---\
    ---\
    ---Target needs to be tracked.. won't work otherwise.
    ---@param ped Ped
    ---@return BOOL
    IS_TRACKED_PED_VISIBLE = function(ped) end,

    ---@param ped Ped
    ---@return integer
    GET_TRACKED_PED_PIXELCOUNT = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_TRACKED = function(ped) end,

    ---@param ped Ped
    ---@param eventId integer
    ---@return BOOL
    HAS_PED_RECEIVED_EVENT = function(ped, eventId) end,

    ---@param ped1 Ped
    ---@param ped2 Ped
    ---@return BOOL
    CAN_PED_SEE_HATED_PED = function(ped1, ped2) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@return BOOL
    ---@return integer
    CAN_PED_SHUFFLE_TO_OR_FROM_TURRET_SEAT = function(ped, p1) end,

    ---@param ped Ped
    ---@param p1 integer
    ---@return BOOL
    ---@return integer
    CAN_PED_SHUFFLE_TO_OR_FROM_EXTRA_SEAT = function(ped, p1) end,

    ---no bone= -1\
    ---\
    ---boneIds:\
    ---        SKEL_ROOT = 0x0,\
    ---   SKEL_Pelvis = 0x2e28,\
    --- SKEL_L_Thigh = 0xe39f,\
    ---    SKEL_L_Calf = 0xf9bb,\
    --- SKEL_L_Foot = 0x3779,\
    --- SKEL_L_Toe0 = 0x83c,\
    ---  IK_L_Foot = 0xfedd,\
    ---   PH_L_Foot = 0xe175,\
    ---   MH_L_Knee = 0xb3fe,\
    ---   SKEL_R_Thigh = 0xca72,\
    ---    SKEL_R_Calf = 0x9000,\
    --- SKEL_R_Foot = 0xcc4d,\
    --- SKEL_R_Toe0 = 0x512d,\
    --- IK_R_Foot = 0x8aae,\
    ---   PH_R_Foot = 0x60e6,\
    ---   MH_R_Knee = 0x3fcf,\
    ---   RB_L_ThighRoll = 0x5c57,\
    ---  RB_R_ThighRoll = 0x192a,\
    ---  SKEL_Spine_Root = 0xe0fd,\
    --- SKEL_Spine0 = 0x5c01,\
    --- SKEL_Spine1 = 0x60f0,\
    --- SKEL_Spine2 = 0x60f1,\
    --- SKEL_Spine3 = 0x60f2,\
    --- SKEL_L_Clavicle = 0xfcd9,\
    --- SKEL_L_UpperArm = 0xb1c5,\
    --- SKEL_L_Forearm = 0xeeeb,\
    ---  SKEL_L_Hand = 0x49d9,\
    --- SKEL_L_Finger00 = 0x67f2,\
    --- SKEL_L_Finger01 = 0xff9,\
    ---  SKEL_L_Finger02 = 0xffa,\
    ---  SKEL_L_Finger10 = 0x67f3,\
    --- SKEL_L_Finger11 = 0x1049,\
    --- SKEL_L_Finger12 = 0x104a,\
    --- SKEL_L_Finger20 = 0x67f4,\
    --- SKEL_L_Finger21 = 0x1059,\
    --- SKEL_L_Finger22 = 0x105a,\
    --- SKEL_L_Finger30 = 0x67f5,\
    --- SKEL_L_Finger31 = 0x1029,\
    --- SKEL_L_Finger32 = 0x102a,\
    --- SKEL_L_Finger40 = 0x67f6,\
    --- SKEL_L_Finger41 = 0x1039,\
    --- SKEL_L_Finger42 = 0x103a,\
    --- PH_L_Hand = 0xeb95,\
    ---   IK_L_Hand = 0x8cbd,\
    ---   RB_L_ForeArmRoll = 0xee4f,\
    ---    RB_L_ArmRoll = 0x1470,\
    ---    MH_L_Elbow = 0x58b7,\
    ---  SKEL_R_Clavicle = 0x29d2,\
    --- SKEL_R_UpperArm = 0x9d4d,\
    --- SKEL_R_Forearm = 0x6e5c,\
    ---  SKEL_R_Hand = 0xdead,\
    --- SKEL_R_Finger00 = 0xe5f2,\
    --- SKEL_R_Finger01 = 0xfa10,\
    --- SKEL_R_Finger02 = 0xfa11,\
    --- SKEL_R_Finger10 = 0xe5f3,\
    --- SKEL_R_Finger11 = 0xfa60,\
    --- SKEL_R_Finger12 = 0xfa61,\
    --- SKEL_R_Finger20 = 0xe5f4,\
    --- SKEL_R_Finger21 = 0xfa70,\
    --- SKEL_R_Finger22 = 0xfa71,\
    --- SKEL_R_Finger30 = 0xe5f5,\
    --- SKEL_R_Finger31 = 0xfa40,\
    --- SKEL_R_Finger32 = 0xfa41,\
    --- SKEL_R_Finger40 = 0xe5f6,\
    --- SKEL_R_Finger41 = 0xfa50,\
    --- SKEL_R_Finger42 = 0xfa51,\
    --- PH_R_Hand = 0x6f06,\
    ---   IK_R_Hand = 0x188e,\
    ---   RB_R_ForeArmRoll = 0xab22,\
    ---    RB_R_ArmRoll = 0x90ff,\
    ---    MH_R_Elbow = 0xbb0,\
    ---   SKEL_Neck_1 = 0x9995,\
    --- SKEL_Head = 0x796e,\
    ---   IK_Head = 0x322c,\
    --- FACIAL_facialRoot = 0xfe2c,\
    ---   FB_L_Brow_Out_000 = 0xe3db,\
    ---   FB_L_Lid_Upper_000 = 0xb2b6,\
    ---  FB_L_Eye_000 = 0x62ac,\
    ---    FB_L_CheekBone_000 = 0x542e,\
    ---  FB_L_Lip_Corner_000 = 0x74ac,\
    --- FB_R_Lid_Upper_000 = 0xaa10,\
    ---  FB_R_Eye_000 = 0x6b52,\
    ---    FB_R_CheekBone_000 = 0x4b88,\
    ---  FB_R_Brow_Out_000 = 0x54c,\
    ---    FB_R_Lip_Corner_000 = 0x2ba6,\
    --- FB_Brow_Centre_000 = 0x9149,\
    ---  FB_UpperLipRoot_000 = 0x4ed2,\
    --- FB_UpperLip_000 = 0xf18f,\
    --- FB_L_Lip_Top_000 = 0x4f37,\
    ---    FB_R_Lip_Top_000 = 0x4537,\
    ---    FB_Jaw_000 = 0xb4a0,\
    ---  FB_LowerLipRoot_000 = 0x4324,\
    --- FB_LowerLip_000 = 0x508f,\
    --- FB_L_Lip_Bot_000 = 0xb93b,\
    ---    FB_R_Lip_Bot_000 = 0xc33b,\
    ---    FB_Tongue_000 = 0xb987,\
    ---   RB_Neck_1 = 0x8b93,\
    ---   IK_Root = 0xdd1c
    ---@param ped Ped
    ---@param boneId integer
    ---@return integer
    GET_PED_BONE_INDEX = function(ped, boneId) end,

    ---@param ped Ped
    ---@param bone integer
    ---@return integer
    GET_PED_RAGDOLL_BONE_INDEX = function(ped, bone) end,

    ---Values look to be between 0.0 and 1.0\
    ---From decompiled scripts: 0.0, 0.6, 0.65, 0.8, 1.0\
    ---\
    ---You are correct, just looked in IDA it breaks from the function if it's less than 0.0f or greater than 1.0f.
    ---@param ped Ped
    ---@param value number
    SET_PED_ENVEFF_SCALE = function(ped, value) end,

    ---@param ped Ped
    ---@return number
    GET_PED_ENVEFF_SCALE = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_ENABLE_PED_ENVEFF_SCALE = function(ped, toggle) end,

    ---In agency_heist3b.c4, its like this 90% of the time:\
    ---\
    ---PED::SET_PED_ENVEFF_CPV_ADD(ped, 0.099);\
    ---PED::SET_PED_ENVEFF_SCALE(ped, 1.0);\
    ---PED::SET_PED_ENVEFF_CPV_ADD(ped, 87, 81, 68);\
    ---PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);\
    ---\
    ---and its like this 10% of the time:\
    ---\
    ---PED::SET_PED_ENVEFF_CPV_ADD(ped, 0.2);\
    ---PED::SET_PED_ENVEFF_SCALE(ped, 0.65);\
    ---PED::SET_PED_ENVEFF_COLOR_MODULATOR(ped, 74, 69, 60);\
    ---PED::SET_ENABLE_PED_ENVEFF_SCALE(ped, 1);
    ---@param ped Ped
    ---@param p1 number
    SET_PED_ENVEFF_CPV_ADD = function(ped, p1) end,

    ---Something related to the environmental effects natives.\
    ---In the "agency_heist3b" script, p1 - p3 are always under 100 - usually they are {87, 81, 68}. If SET_PED_ENVEFF_SCALE is set to 0.65 (instead of the usual 1.0), they use {74, 69, 60}
    ---@param ped Ped
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    SET_PED_ENVEFF_COLOR_MODULATOR = function(ped, p1, p2, p3) end,

    ---intensity: 0.0f - 1.0f\
    ---\
    ---This native sets the emissive intensity for the given ped. It is used for different 'glow' levels on illuminated clothing.
    ---@param ped Ped
    ---@param intensity number
    SET_PED_EMISSIVE_SCALE = function(ped, intensity) end,

    ---Use 0x4E90D746056E273D to set the illuminated clothing glow intensity for a specific ped.\
    ---Returns a float between 0.0 and 1.0 representing the current illuminated clothing glow intensity.
    ---@param ped Ped
    ---@return number
    GET_PED_EMISSIVE_SCALE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_SHADER_READY = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_ENABLE_CREW_EMBLEM = function(ped, toggle) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 Any
    ---@param p1 Any
    REQUEST_RAGDOLL_BOUNDS_UPDATE = function(p0, p1) end,

    ---Enable/disable ped shadow (ambient occlusion). https://gfycat.com/thankfulesteemedgecko
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_AO_BLOB_RENDERING = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_SHELTERED = function(ped) end,

    ---p6 always 2 (but it doesnt seem to matter...)\
    ---\
    ---roll and pitch 0\
    ---yaw to Ped.rotation
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param roll number
    ---@param pitch number
    ---@param yaw number
    ---@param p6 integer
    ---@return integer
    CREATE_SYNCHRONIZED_SCENE = function(x, y, z, roll, pitch, yaw, p6) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param object Hash
    ---@return integer
    CREATE_SYNCHRONIZED_SCENE_AT_MAP_OBJECT = function(x, y, z, radius, object) end,

    ---Returns true if a synchronized scene is running
    ---@param sceneId integer
    ---@return BOOL
    IS_SYNCHRONIZED_SCENE_RUNNING = function(sceneId) end,

    ---@param sceneID integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param roll number
    ---@param pitch number
    ---@param yaw number
    ---@param p7 BOOL
    SET_SYNCHRONIZED_SCENE_ORIGIN = function(sceneID, x, y, z, roll, pitch, yaw, p7) end,

    ---@param sceneID integer
    ---@param phase number
    SET_SYNCHRONIZED_SCENE_PHASE = function(sceneID, phase) end,

    ---@param sceneID integer
    ---@return number
    GET_SYNCHRONIZED_SCENE_PHASE = function(sceneID) end,

    ---@param sceneID integer
    ---@param rate number
    SET_SYNCHRONIZED_SCENE_RATE = function(sceneID, rate) end,

    ---@param sceneID integer
    ---@return number
    GET_SYNCHRONIZED_SCENE_RATE = function(sceneID) end,

    ---@param sceneID integer
    ---@param toggle BOOL
    SET_SYNCHRONIZED_SCENE_LOOPED = function(sceneID, toggle) end,

    ---@param sceneID integer
    ---@return BOOL
    IS_SYNCHRONIZED_SCENE_LOOPED = function(sceneID) end,

    ---@param sceneID integer
    ---@param toggle BOOL
    SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME = function(sceneID, toggle) end,

    ---@param sceneID integer
    ---@return BOOL
    IS_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME = function(sceneID) end,

    ---@param sceneID integer
    ---@param entity Entity
    ---@param boneIndex integer
    ATTACH_SYNCHRONIZED_SCENE_TO_ENTITY = function(sceneID, entity, boneIndex) end,

    ---@param sceneID integer
    DETACH_SYNCHRONIZED_SCENE = function(sceneID) end,

    ---@param scene integer
    TAKE_OWNERSHIP_OF_SYNCHRONIZED_SCENE = function(scene) end,

    ---Regarding p2, p3 and p4: Most common is 0, 0, 0); followed by 0, 1, 0); and 1, 1, 0); in R* scripts. p4 is very rarely something other than 0.\
    ---\
    ---enum eMotionState // 0x92A659FE\
    ---{\
    ---	MotionState_None = 0xEE717723,\
    ---	MotionState_Idle = 0x9072A713,\
    ---	MotionState_Walk = 0xD827C3DB,\
    ---	MotionState_Run = 0xFFF7E7A4,\
    ---	MotionState_Sprint = 0xBD8817DB,\
    ---	MotionState_Crouch_Idle = 0x43FB099E,\
    ---	MotionState_Crouch_Walk = 0x08C31A98,\
    ---	MotionState_Crouch_Run = 0x3593CF09,\
    ---	MotionState_DoNothing = 0x0EC17E58,\
    ---	MotionState_AnimatedVelocity = 0x551AAC43,\
    ---	MotionState_InVehicle = 0x94D9D58D,\
    ---	MotionState_Aiming = 0x3F67C6AF,\
    ---	MotionState_Diving_Idle = 0x4848CDED,\
    ---	MotionState_Diving_Swim = 0x916E828C,\
    ---	MotionState_Swimming_TreadWater = 0xD1BF11C7,\
    ---	MotionState_Dead = 0x0DBB071C,\
    ---	MotionState_Stealth_Idle = 0x422D7A25,\
    ---	MotionState_Stealth_Walk = 0x042AB6A2,\
    ---	MotionState_Stealth_Run = 0xFB0B79E1,\
    ---	MotionState_Parachuting = 0xBAC0F10B,\
    ---	MotionState_ActionMode_Idle = 0xDA40A0DC,\
    ---	MotionState_ActionMode_Walk = 0xD2905EA7,\
    ---	MotionState_ActionMode_Run = 0x31BADE14,\
    ---	MotionState_Jetpack = 0x535E6A5E\
    ---};
    ---@param ped Ped
    ---@param motionStateHash Hash
    ---@param p2 BOOL
    ---@param p3 integer
    ---@param p4 BOOL
    ---@return BOOL
    FORCE_PED_MOTION_STATE = function(ped, motionStateHash, p2, p3, p4) end,

    ---@param ped Ped
    ---@param speedX number
    ---@param speedY number
    ---@return BOOL
    ---@return number
    ---@return number
    GET_PED_CURRENT_MOVE_BLEND_RATIO = function(ped, speedX, speedY) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_MAX_MOVE_BLEND_RATIO = function(ped, value) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_MIN_MOVE_BLEND_RATIO = function(ped, value) end,

    ---Min: 0.00\
    ---Max: 10.00\
    ---\
    ---Can be used in combo with fast run cheat.\
    ---\
    ---When value is set to 10.00:\
    ---Sprinting without fast run cheat: 66 m/s\
    ---Sprinting with fast run cheat: 77 m/s\
    ---\
    ---Needs to be looped!\
    ---\
    ---Note: According to IDA for the Xbox360 xex, when they check bgt they seem to have the min to 0.0f, but the max set to 1.15f not 10.0f.
    ---@param ped Ped
    ---@param value number
    SET_PED_MOVE_RATE_OVERRIDE = function(ped, value) end,

    ---@param ped Ped
    ---@param p1 number
    SET_PED_MOVE_RATE_IN_WATER_OVERRIDE = function(ped, p1) end,

    ---Checks if the specified sexiness flag is set\
    ---\
    ---enum eSexinessFlags\
    ---{\
    --- SF_JEER_AT_HOT_PED = 0,\
    --- SF_HURRIEDFEMALES_SEXY = 1,\
    --- SF_HOT_PERSON = 2,\
    --- };
    ---@param ped Ped
    ---@param sexinessFlag integer
    ---@return BOOL
    PED_HAS_SEXINESS_FLAG_SET = function(ped, sexinessFlag) end,

    ---Returns size of array, passed into the second variable.\
    ---\
    ---See below for usage information.\
    ---\
    ---This function actually requires a struct, where the first value is the maximum number of elements to return.  Here is a sample of how I was able to get it to work correctly, without yet knowing the struct format.\
    ---\
    ---//Setup the array\
    --- const int numElements = 10;\
    ---   const int arrSize = numElements * 2 + 2;\
    ---  Any veh[arrSize];\
    --- //0 index is the size of the array\
    ---    veh[0] = numElements;\
    ---\
    ---   int count = PED::GET_PED_NEARBY_VEHICLES(PLAYER::PLAYER_PED_ID(), veh);\
    ---\
    --- if (veh != NULL)\
    ---  {\
    ---     //Simple loop to go through results\
    ---       for (int i = 0; i < count; i++)\
    ---        {\
    ---         int offsettedID = i * 2 + 2;\
    ---          //Make sure it exists\
    ---         if (veh[offsettedID] != NULL && ENTITY::DOES_ENTITY_EXIST(veh[offsettedID]))\
    ---          {\
    ---             //Do something\
    ---        }\
    --- }\
    --- }  
    ---@param ped Ped
    ---@param sizeAndVehs Any*
    ---@return integer
    GET_PED_NEARBY_VEHICLES = function(ped, sizeAndVehs) end,

    ---sizeAndPeds - is a pointer to an array. The array is filled with peds found nearby the ped supplied to the first argument.\
    ---ignore - ped type to ignore\
    ---\
    ---Return value is the number of peds found and added to the array passed.\
    ---\
    --------------------------------------\
    ---\
    ---To make this work in most menu bases at least in C++ do it like so,\
    ---\
    --- Formatted Example: https://pastebin.com/D8an9wwp\
    ---\
    --------------------------------------\
    ---\
    ---Example: gtaforums.com/topic/789788-function-args-to-pedget-ped-nearby-peds/?p=1067386687
    ---@param ped Ped
    ---@param sizeAndPeds Any*
    ---@param ignore integer
    ---@return integer
    GET_PED_NEARBY_PEDS = function(ped, sizeAndPeds, ignore) end,

    ---@param ped Ped
    ---@return BOOL
    HAVE_ALL_STREAMING_REQUESTS_COMPLETED = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_USING_ACTION_MODE = function(ped) end,

    ---p2 is usually -1 in the scripts. action is either 0 or "DEFAULT_ACTION".
    ---@param ped Ped
    ---@param p1 BOOL
    ---@param p2 integer
    ---@param action string
    SET_PED_USING_ACTION_MODE = function(ped, p1, p2, action) end,

    ---name: "MP_FEMALE_ACTION" found multiple times in the b617d scripts.
    ---@param ped Ped
    ---@param name string
    SET_MOVEMENT_MODE_OVERRIDE = function(ped, name) end,

    ---Overrides the ped's collision capsule radius for the current tick.\
    ---Must be called every tick to be effective.\
    ---\
    ---Setting this to 0.001 will allow warping through some objects.
    ---@param ped Ped
    ---@param value number
    SET_PED_CAPSULE = function(ped, value) end,

    ---gtaforums.com/topic/885580-ped-headshotmugshot-txd/
    ---@param ped Ped
    ---@return integer
    REGISTER_PEDHEADSHOT = function(ped) end,

    ---@param ped Ped
    ---@return integer
    REGISTER_PEDHEADSHOT_HIRES = function(ped) end,

    ---Similar to REGISTER_PEDHEADSHOT but creates a transparent background instead of black. Example: https://i.imgur.com/iHz8ztn.png
    ---@param ped Ped
    ---@return integer
    REGISTER_PEDHEADSHOT_TRANSPARENT = function(ped) end,

    ---gtaforums.com/topic/885580-ped-headshotmugshot-txd/
    ---@param id integer
    UNREGISTER_PEDHEADSHOT = function(id) end,

    ---gtaforums.com/topic/885580-ped-headshotmugshot-txd/
    ---@param id integer
    ---@return BOOL
    IS_PEDHEADSHOT_VALID = function(id) end,

    ---gtaforums.com/topic/885580-ped-headshotmugshot-txd/
    ---@param id integer
    ---@return BOOL
    IS_PEDHEADSHOT_READY = function(id) end,

    ---gtaforums.com/topic/885580-ped-headshotmugshot-txd/
    ---@param id integer
    ---@return string
    GET_PEDHEADSHOT_TXD_STRING = function(id) end,

    ---@param id integer
    ---@return BOOL
    REQUEST_PEDHEADSHOT_IMG_UPLOAD = function(id) end,

    ---@param id integer
    RELEASE_PEDHEADSHOT_IMG_UPLOAD = function(id) end,

    ---@return BOOL
    IS_PEDHEADSHOT_IMG_UPLOAD_AVAILABLE = function() end,

    ---@return BOOL
    HAS_PEDHEADSHOT_IMG_UPLOAD_FAILED = function() end,

    ---@return BOOL
    HAS_PEDHEADSHOT_IMG_UPLOAD_SUCCEEDED = function() end,

    ---@param ped Ped
    ---@param heatScale number
    SET_PED_HEATSCALE_OVERRIDE = function(ped, heatScale) end,

    ---@param ped Ped
    DISABLE_PED_HEATSCALE_OVERRIDE = function(ped) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param interiorFlags integer
    ---@param scale number
    ---@param duration integer
    SPAWNPOINTS_START_SEARCH = function(p0, p1, p2, p3, p4, interiorFlags, scale, duration) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param width number
    ---@param interiorFlags integer
    ---@param scale number
    ---@param duration integer
    SPAWNPOINTS_START_SEARCH_IN_ANGLED_AREA = function(x1, y1, z1, x2, y2, z2, width, interiorFlags, scale, duration) end,

    SPAWNPOINTS_CANCEL_SEARCH = function() end,

    ---@return BOOL
    SPAWNPOINTS_IS_SEARCH_ACTIVE = function() end,

    ---@return BOOL
    SPAWNPOINTS_IS_SEARCH_COMPLETE = function() end,

    ---@return BOOL
    SPAWNPOINTS_IS_SEARCH_FAILED = function() end,

    ---@return integer
    SPAWNPOINTS_GET_NUM_SEARCH_RESULTS = function() end,

    ---@param randomInt integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return number
    ---@return number
    ---@return number
    SPAWNPOINTS_GET_SEARCH_RESULT = function(randomInt, x, y, z) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@return integer
    SPAWNPOINTS_GET_SEARCH_RESULT_FLAGS = function(p0, p1) end,

    ---@param ped Ped
    ---@param ikIndex integer
    ---@param entityLookAt Entity
    ---@param boneLookAt integer
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param p7 Any
    ---@param blendInDuration integer
    ---@param blendOutDuration integer
    SET_IK_TARGET = function(ped, ikIndex, entityLookAt, boneLookAt, offsetX, offsetY, offsetZ, p7, blendInDuration, blendOutDuration) end,

    ---@param ped Ped
    FORCE_INSTANT_LEG_IK_SETUP = function(ped) end,

    ---@param asset string
    REQUEST_ACTION_MODE_ASSET = function(asset) end,

    ---@param asset string
    ---@return BOOL
    HAS_ACTION_MODE_ASSET_LOADED = function(asset) end,

    ---@param asset string
    REMOVE_ACTION_MODE_ASSET = function(asset) end,

    ---@param asset string
    REQUEST_STEALTH_MODE_ASSET = function(asset) end,

    ---@param asset string
    ---@return BOOL
    HAS_STEALTH_MODE_ASSET_LOADED = function(asset) end,

    ---@param asset string
    REMOVE_STEALTH_MODE_ASSET = function(asset) end,

    ---@param ped Ped
    ---@param multiplier number
    SET_PED_LOD_MULTIPLIER = function(ped, multiplier) end,

    ---@param ped Ped
    ---@param toggle BOOL
    ---@param p2 integer
    SET_PED_CAN_LOSE_PROPS_ON_DAMAGE = function(ped, toggle, p2) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_FORCE_FOOTSTEP_UPDATE = function(ped, toggle) end,

    ---@param ped Ped
    ---@param p1 BOOL
    ---@param type integer
    ---@param p3 integer
    SET_FORCE_STEP_TYPE = function(ped, p1, type, p3) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_ANY_HOSTILE_PED_NEAR_POINT = function(ped, x, y, z, radius) end,

    ---Toggles config flag CPED_CONFIG_FLAG_CanPlayInCarIdles.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_CAN_PLAY_IN_CAR_IDLES = function(ped, toggle) end,

    ---@param ped Ped
    ---@param targetPed Ped
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@return BOOL
    IS_TARGET_PED_IN_PERCEPTION_AREA = function(ped, targetPed, p2, p3, p4, p5) end,

    ---Min and max are usually 100.0 and 200.0
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param min number
    ---@param max number
    SET_POP_CONTROL_SPHERE_THIS_FRAME = function(x, y, z, min, max) end,

    ---@param ped Ped
    FORCE_ZERO_MASS_IN_COLLISIONS = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_DISABLE_HIGH_FALL_DEATH = function(ped, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PED_PHONE_PALETTE_IDX = function(p0, p1) end,

    ---@param ped Ped
    ---@param value number
    SET_PED_STEER_BIAS = function(ped, value) end,

    ---@param Ped Ped
    ---@return BOOL
    IS_PED_SWITCHING_WEAPON = function(Ped) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    SET_PED_TREATED_AS_FRIENDLY = function(p0, p1, p2) end,

    ---@param ped Ped
    SET_DISABLE_PED_MAP_COLLISION = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    ENABLE_MP_LIGHT = function(ped, toggle) end,

    ---@param ped Ped
    ---@return BOOL
    GET_MP_LIGHT_ENABLED = function(ped) end,

    ---@param ped Ped
    CLEAR_COVER_POINT_FOR_PED = function(ped) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_ALLOW_STUNT_JUMP_CAMERA = function(ped, toggle) end
}

PHYSICS = {
    ---Creates a rope at the specific position, that extends in the specified direction when not attached to any entities.\
    ---__\
    ---\
    ---Add_Rope(pos.x,pos.y,pos.z,0.0,0.0,0.0,20.0,4,20.0,1.0,0.0,false,false,false,5.0,false,NULL)\
    ---\
    ---When attached, Position<vector> does not matter\
    ---When attached, Angle<vector> does not matter\
    ---\
    ---Rope Type:\
    ---4 and bellow is a thick rope\
    ---5 and up are small metal wires\
    ---0 crashes the game\
    ---\
    ---Max_length - Rope is forced to this length, generally best to keep this the same as your rope length.\
    ---\
    ---windingSpeed - Speed the Rope is being winded, using native START_ROPE_WINDING. Set positive for winding and negative for unwinding.\
    ---\
    ---Rigid - If max length is zero, and this is set to false the rope will become rigid (it will force a specific distance, what ever length is, between the objects).\
    ---\
    ---breakable - Whether or not shooting the rope will break it.\
    ---\
    ---unkPtr - unknown ptr, always 0 in orig scripts\
    ---__\
    ---\
    ---Lengths can be calculated like so:\
    ---\
    ---float distance = abs(x1 - x2) + abs(y1 - y2) + abs(z1 - z2); // Rope length\
    ---\
    ---\
    ---NOTES:\
    ---\
    ---Rope does NOT interact with anything you attach it to, in some cases it make interact with the world AFTER it breaks (seems to occur if you set the type to -1).\
    ---\
    ---Rope will sometimes contract and fall to the ground like you'd expect it to, but since it doesn't interact with the world the effect is just jaring.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param length number
    ---@param ropeType integer
    ---@param maxLength number
    ---@param minLength number
    ---@param windingSpeed number
    ---@param p11 BOOL
    ---@param p12 BOOL
    ---@param rigid BOOL
    ---@param p14 number
    ---@param breakWhenShot BOOL
    ---@param unkPtr Any*
    ---@return integer
    ADD_ROPE = function(x, y, z, rotX, rotY, rotZ, length, ropeType, maxLength, minLength, windingSpeed, p11, p12, rigid, p14, breakWhenShot, unkPtr) end,

    ---@param ropeId integer
    ---@return integer
    DELETE_ROPE = function(ropeId) end,

    ---@param ropeId integer
    DELETE_CHILD_ROPE = function(ropeId) end,

    ---@param ropeId integer
    ---@return BOOL
    ---@return integer
    DOES_ROPE_EXIST = function(ropeId) end,

    ---@param ropeId integer
    ---@param p1 BOOL
    ---@return integer
    ROPE_DRAW_ENABLED = function(ropeId, p1) end,

    ---@param ropeId integer
    ---@param toggle BOOL
    ---@return integer
    ROPE_DRAW_SHADOW_ENABLED = function(ropeId, toggle) end,

    ---Rope presets can be found in the gamefiles. One example is "ropeFamily3", it is NOT a hash but rather a string.
    ---@param ropeId integer
    ---@param rope_preset string
    LOAD_ROPE_DATA = function(ropeId, rope_preset) end,

    ---@param ropeId integer
    ---@param vertex integer
    ---@param x number
    ---@param y number
    ---@param z number
    PIN_ROPE_VERTEX = function(ropeId, vertex, x, y, z) end,

    ---@param ropeId integer
    ---@param vertex integer
    UNPIN_ROPE_VERTEX = function(ropeId, vertex) end,

    ---@param ropeId integer
    ---@return integer
    GET_ROPE_VERTEX_COUNT = function(ropeId) end,

    ---Attaches entity 1 to entity 2.
    ---@param ropeId integer
    ---@param ent1 Entity
    ---@param ent2 Entity
    ---@param ent1_x number
    ---@param ent1_y number
    ---@param ent1_z number
    ---@param ent2_x number
    ---@param ent2_y number
    ---@param ent2_z number
    ---@param length number
    ---@param p10 BOOL
    ---@param p11 BOOL
    ---@param p12 Any*
    ---@param p13 Any*
    ATTACH_ENTITIES_TO_ROPE = function(ropeId, ent1, ent2, ent1_x, ent1_y, ent1_z, ent2_x, ent2_y, ent2_z, length, p10, p11, p12, p13) end,

    ---The position supplied can be anywhere, and the entity should anchor relative to that point from it's origin.
    ---@param ropeId integer
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 BOOL
    ATTACH_ROPE_TO_ENTITY = function(ropeId, entity, x, y, z, p5) end,

    ---@param ropeId integer
    ---@param entity Entity
    DETACH_ROPE_FROM_ENTITY = function(ropeId, entity) end,

    ---@param ropeId integer
    ROPE_SET_UPDATE_PINVERTS = function(ropeId) end,

    ---@param ropeId integer
    ---@param p1 Any
    ROPE_SET_UPDATE_ORDER = function(ropeId, p1) end,

    ---@param ropeId integer
    ---@param p1 BOOL
    ROPE_SET_SMOOTH_REELIN = function(ropeId, p1) end,

    ---@param ropeId integer
    ---@return BOOL
    ---@return integer
    IS_ROPE_ATTACHED_AT_BOTH_ENDS = function(ropeId) end,

    ---@param ropeId integer
    ---@return Vector3
    GET_ROPE_LAST_VERTEX_COORD = function(ropeId) end,

    ---@param ropeId integer
    ---@param vertex integer
    ---@return Vector3
    GET_ROPE_VERTEX_COORD = function(ropeId, vertex) end,

    ---@param ropeId integer
    START_ROPE_WINDING = function(ropeId) end,

    ---@param ropeId integer
    STOP_ROPE_WINDING = function(ropeId) end,

    ---@param ropeId integer
    START_ROPE_UNWINDING_FRONT = function(ropeId) end,

    ---@param ropeId integer
    STOP_ROPE_UNWINDING_FRONT = function(ropeId) end,

    ---@param ropeId integer
    ROPE_CONVERT_TO_SIMPLE = function(ropeId) end,

    ---Loads rope textures for all ropes in the current scene.
    ROPE_LOAD_TEXTURES = function() end,

    ---@return BOOL
    ROPE_ARE_TEXTURES_LOADED = function() end,

    ---Unloads rope textures for all ropes in the current scene.
    ROPE_UNLOAD_TEXTURES = function() end,

    ---@param ropeId integer
    ---@return BOOL
    DOES_SCRIPT_OWN_ROPE = function(ropeId) end,

    ---@param ropeId integer
    ---@param p1 integer
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 number
    ---@param p10 number
    ---@param p11 number
    ---@param p12 number
    ---@param p13 number
    ROPE_ATTACH_VIRTUAL_BOUND_GEOM = function(ropeId, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    ROPE_CHANGE_SCRIPT_OWNER = function(p0, p1, p2) end,

    ---@param ropeId integer
    ---@param p1 integer
    ROPE_SET_REFFRAMEVELOCITY_COLLIDERORDER = function(ropeId, p1) end,

    ---@param ropeId integer
    ---@return number
    ROPE_GET_DISTANCE_BETWEEN_ENDS = function(ropeId) end,

    ---Forces a rope to a certain length.
    ---@param ropeId integer
    ---@param length number
    ROPE_FORCE_LENGTH = function(ropeId, length) end,

    ---Reset a rope to a certain length.
    ---@param ropeId integer
    ---@param length number
    ROPE_RESET_LENGTH = function(ropeId, length) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param vecX number
    ---@param vecY number
    ---@param vecZ number
    ---@param impulse number
    APPLY_IMPULSE_TO_CLOTH = function(posX, posY, posZ, vecX, vecY, vecZ, impulse) end,

    ---@param entity Entity
    ---@param vertex integer
    ---@param value number
    SET_DAMPING = function(entity, vertex, value) end,

    ---@param entity Entity
    ---@param type integer
    ---@return Vector3
    GET_DAMPING = function(entity, type) end,

    ---@param entity Entity
    ACTIVATE_PHYSICS = function(entity) end,

    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    SET_CGOFFSET = function(entity, x, y, z) end,

    ---@param entity Entity
    ---@return Vector3
    GET_CGOFFSET = function(entity) end,

    ---@param entity Entity
    SET_CG_AT_BOUNDCENTER = function(entity) end,

    ---@param entity Entity
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param p9 Any
    ---@param p10 BOOL
    BREAK_ENTITY_GLASS = function(entity, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param object Object
    ---@return BOOL
    GET_IS_ENTITY_A_FRAG = function(object) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_DISABLE_BREAKING = function(object, toggle) end,

    ---@param object Object
    RESET_DISABLE_BREAKING = function(object) end,

    ---@param object Object
    ---@param toggle BOOL
    SET_DISABLE_FRAG_DAMAGE = function(object, toggle) end,

    ---@param entity Entity
    ---@param toggle BOOL
    SET_USE_KINEMATIC_PHYSICS = function(entity, toggle) end,

    ---@param p0 BOOL
    SET_IN_STUNT_MODE = function(p0) end,

    ---Related to the lower-end of a vehicles fTractionCurve, e.g., from standing starts and acceleration from low/zero speeds.
    ---@param toggle BOOL
    SET_IN_ARENA_MODE = function(toggle) end
}

PLAYER = {
    ---Gets the ped for a specified player index.
    ---@param player Player
    ---@return Ped
    GET_PLAYER_PED = function(player) end,

    ---Does the same like PLAYER::GET_PLAYER_PED
    ---@param player Player
    ---@return Ped
    GET_PLAYER_PED_SCRIPT_INDEX = function(player) end,

    ---Set the model for a specific Player. Be aware that this will destroy the current Ped for the Player and create a new one, any reference to the old ped should be reset\
    ---Make sure to request the model first and wait until it has loaded.
    ---@param player Player
    ---@param model Hash
    SET_PLAYER_MODEL = function(player, model) end,

    ---@param player Player
    ---@param ped Ped
    ---@param p2 BOOL
    ---@param resetDamage BOOL
    CHANGE_PLAYER_PED = function(player, ped, p2, resetDamage) end,

    ---@param player Player
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_PLAYER_RGB_COLOUR = function(player, r, g, b) end,

    ---Gets the number of players in the current session.\
    ---If not multiplayer, always returns 1.
    ---@return integer
    GET_NUMBER_OF_PLAYERS = function() end,

    ---Gets the player's team.\
    ---Does nothing in singleplayer.
    ---@param player Player
    ---@return integer
    GET_PLAYER_TEAM = function(player) end,

    ---Set player team on deathmatch and last team standing..
    ---@param player Player
    ---@param team integer
    SET_PLAYER_TEAM = function(player, team) end,

    ---@param team integer
    ---@return integer
    GET_NUMBER_OF_PLAYERS_IN_TEAM = function(team) end,

    ---@param player Player
    ---@return string
    GET_PLAYER_NAME = function(player) end,

    ---Remnant from GTA IV. Does nothing in GTA V.
    ---@param player Player
    ---@return number
    GET_WANTED_LEVEL_RADIUS = function(player) end,

    ---@param player Player
    ---@return Vector3
    GET_PLAYER_WANTED_CENTRE_POSITION = function(player) end,

    ---# Predominant call signatures\
    ---PLAYER::SET_PLAYER_WANTED_CENTRE_POSITION(PLAYER::PLAYER_ID(), ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1));\
    ---\
    ---# Parameter value ranges\
    ---P0: PLAYER::PLAYER_ID()\
    ---P1: ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1)\
    ---P2: Not set by any call
    ---@param player Player
    ---@param position Vector3
    ---@param p2 BOOL
    ---@param p3 BOOL
    SET_PLAYER_WANTED_CENTRE_POSITION = function(player, position, p2, p3) end,

    ---Drft
    ---@param wantedLevel integer
    ---@return integer
    GET_WANTED_LEVEL_THRESHOLD = function(wantedLevel) end,

    ---Call SET_PLAYER_WANTED_LEVEL_NOW for immediate effect\
    ---\
    ---wantedLevel is an integer value representing 0 to 5 stars even though the game supports the 6th wanted level but no police will appear since no definitions are present for it in the game files\
    ---\
    ---disableNoMission-  Disables When Off Mission- appears to always be false\
    ---
    ---@param player Player
    ---@param wantedLevel integer
    ---@param disableNoMission BOOL
    SET_PLAYER_WANTED_LEVEL = function(player, wantedLevel, disableNoMission) end,

    ---p2 is always false in R* scripts
    ---@param player Player
    ---@param wantedLevel integer
    ---@param p2 BOOL
    SET_PLAYER_WANTED_LEVEL_NO_DROP = function(player, wantedLevel, p2) end,

    ---Forces any pending wanted level to be applied to the specified player immediately.\
    ---\
    ---Call SET_PLAYER_WANTED_LEVEL with the desired wanted level, followed by SET_PLAYER_WANTED_LEVEL_NOW.\
    ---\
    ---Second parameter is unknown (always false).
    ---@param player Player
    ---@param p1 BOOL
    SET_PLAYER_WANTED_LEVEL_NOW = function(player, p1) end,

    ---@param player Player
    ---@return BOOL
    ARE_PLAYER_FLASHING_STARS_ABOUT_TO_DROP = function(player) end,

    ---@param player Player
    ---@return BOOL
    ARE_PLAYER_STARS_GREYED_OUT = function(player) end,

    ---@param player Player
    ---@return BOOL
    IS_WANTED_AND_HAS_BEEN_SEEN_BY_COPS = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_DISPATCH_COPS_FOR_PLAYER = function(player, toggle) end,

    ---@param player Player
    ---@param wantedLevel integer
    ---@return BOOL
    IS_PLAYER_WANTED_LEVEL_GREATER = function(player, wantedLevel) end,

    ---This executes at the same as speed as PLAYER::SET_PLAYER_WANTED_LEVEL(player, 0, false);\
    ---\
    ---PLAYER::GET_PLAYER_WANTED_LEVEL(player); executes in less than half the time. Which means that it's worth first checking if the wanted level needs to be cleared before clearing. However, this is mostly about good code practice and can important in other situations. The difference in time in this example is negligible. 
    ---@param player Player
    CLEAR_PLAYER_WANTED_LEVEL = function(player) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_DEAD = function(player) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_PRESSING_HORN = function(player) end,

    ---Flags:\
    ---SPC_AMBIENT_SCRIPT = (1 << 1),\
    ---SPC_CLEAR_TASKS = (1 << 2),\
    ---SPC_REMOVE_FIRES = (1 << 3),\
    ---SPC_REMOVE_EXPLOSIONS = (1 << 4),\
    ---SPC_REMOVE_PROJECTILES = (1 << 5),\
    ---SPC_DEACTIVATE_GADGETS = (1 << 6),\
    ---SPC_REENABLE_CONTROL_ON_DEATH = (1 << 7),\
    ---SPC_LEAVE_CAMERA_CONTROL_ON = (1 << 8),\
    ---SPC_ALLOW_PLAYER_DAMAGE = (1 << 9),\
    ---SPC_DONT_STOP_OTHER_CARS_AROUND_PLAYER = (1 << 10),\
    ---SPC_PREVENT_EVERYBODY_BACKOFF = (1 << 11),\
    ---SPC_ALLOW_PAD_SHAKE = (1 << 12)\
    ---\
    ---See: https://alloc8or.re/gta5/doc/enums/eSetPlayerControlFlag.txt
    ---@param player Player
    ---@param bHasControl BOOL
    ---@param flags integer
    SET_PLAYER_CONTROL = function(player, bHasControl, flags) end,

    ---@param player Player
    ---@return integer
    GET_PLAYER_WANTED_LEVEL = function(player) end,

    ---@param maxWantedLevel integer
    SET_MAX_WANTED_LEVEL = function(maxWantedLevel) end,

    ---If toggle is set to false:\
    --- The police won't be shown on the (mini)map\
    ---\
    ---If toggle is set to true:\
    --- The police will be shown on the (mini)map
    ---@param toggle BOOL
    SET_POLICE_RADAR_BLIPS = function(toggle) end,

    ---The player will be ignored by the police if toggle is set to true
    ---@param player Player
    ---@param toggle BOOL
    SET_POLICE_IGNORE_PLAYER = function(player, toggle) end,

    ---Checks whether the specified player has a Ped, the Ped is not dead, is not injured and is not arrested.
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_PLAYING = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_EVERYONE_IGNORE_PLAYER = function(player, toggle) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_ALL_RANDOM_PEDS_FLEE = function(player, toggle) end,

    ---@param player Player
    SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE = function(player, toggle) end,

    ---- This is called after SET_ALL_RANDOM_PEDS_FLEE_THIS_FRAME\
    ---
    ---@param player Player
    SET_ALL_NEUTRAL_RANDOM_PEDS_FLEE_THIS_FRAME = function(player) end,

    ---@param player Player
    SET_LAW_PEDS_CAN_ATTACK_NON_WANTED_PLAYER_THIS_FRAME = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_IGNORE_LOW_PRIORITY_SHOCKING_EVENTS = function(player, toggle) end,

    ---@param multiplier number
    SET_WANTED_LEVEL_MULTIPLIER = function(multiplier) end,

    ---Max value is 1.0
    ---@param player Player
    ---@param difficulty number
    SET_WANTED_LEVEL_DIFFICULTY = function(player, difficulty) end,

    ---@param player Player
    RESET_WANTED_LEVEL_DIFFICULTY = function(player) end,

    ---@return integer
    GET_WANTED_LEVEL_TIME_TO_ESCAPE = function() end,

    ---@param player Player
    ---@param wantedLevel integer
    ---@param lossTime integer
    SET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME = function(player, wantedLevel, lossTime) end,

    ---@param player Player
    RESET_WANTED_LEVEL_HIDDEN_ESCAPE_TIME = function(player) end,

    ---@param duration integer
    START_FIRING_AMNESTY = function(duration) end,

    ---PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(), 37, PLAYER::GET_WANTED_LEVEL_THRESHOLD(1));\
    ---\
    ---From am_armybase.ysc.c4:\
    ---\
    ---PLAYER::REPORT_CRIME(PLAYER::PLAYER_ID(4), 36, PLAYER::GET_WANTED_LEVEL_THRESHOLD(4));\
    ---\
    --------\
    ---\
    ---This was taken from the GTAV.exe v1.334. The function is called sub_140592CE8. For a full decompilation of the function, see here: https://pastebin.com/09qSMsN7 \
    ---\
    --------\
    ---crimeType:\
    ---1: Firearms possession\
    ---2: Person running a red light ("5-0-5")\
    ---3: Reckless driver\
    ---4: Speeding vehicle (a "5-10")\
    ---5: Traffic violation (a "5-0-5")\
    ---6: Motorcycle rider without a helmet\
    ---7: Vehicle theft (a "5-0-3")\
    ---8: Grand Theft Auto\
    ---9: ???\
    ---10: ???\
    ---11: Assault on a civilian (a "2-40")\
    ---12: Assault on an officer\
    ---13: Assault with a deadly weapon (a "2-45")\
    ---14: Officer shot (a "2-45")\
    ---15: Pedestrian struck by a vehicle\
    ---16: Officer struck by a vehicle\
    ---17: Helicopter down (an "AC"?)\
    ---18: Civilian on fire (a "2-40")\
    ---19: Officer set on fire (a "10-99")\
    ---20: Car on fire\
    ---21: Air unit down (an "AC"?)\
    ---22: An explosion (a "9-96")\
    ---23: A stabbing (a "2-45") (also something else I couldn't understand)\
    ---24: Officer stabbed (also something else I couldn't understand)\
    ---25: Attack on a vehicle ("MDV"?)\
    ---26: Damage to property\
    ---27: Suspect threatening officer with a firearm\
    ---28: Shots fired\
    ---29: ???\
    ---30: ???\
    ---31: ???\
    ---32: ???\
    ---33: ???\
    ---34: A "2-45"\
    ---35: ???\
    ---36: A "9-25"\
    ---37: ???\
    ---38: ???\
    ---39: ???\
    ---40: ???\
    ---41: ???\
    ---42: ???\
    ---43: Possible disturbance\
    ---44: Civilian in need of assistance\
    ---45: ???\
    ---46: ???
    ---@param player Player
    ---@param crimeType integer
    ---@param wantedLvlThresh integer
    REPORT_CRIME = function(player, crimeType, wantedLvlThresh) end,

    ---crimeType: see REPORT_CRIME
    ---@param player Player
    ---@param crimeType integer
    SUPPRESS_CRIME_THIS_FRAME = function(player, crimeType) end,

    ---This native is used in both singleplayer and multiplayer scripts.\
    ---\
    ---Always used like this in scripts\
    ---PLAYER::UPDATE_WANTED_POSITION_THIS_FRAME(PLAYER::PLAYER_ID());
    ---@param player Player
    UPDATE_WANTED_POSITION_THIS_FRAME = function(player) end,

    ---This has been found in use in the decompiled files.
    ---@param player Player
    SUPPRESS_LOSING_WANTED_LEVEL_IF_HIDDEN_THIS_FRAME = function(player) end,

    ---@param player Player
    ---@param p1 Any
    ALLOW_EVASION_HUD_IF_DISABLING_HIDDEN_EVASION_THIS_FRAME = function(player, p1) end,

    ---This has been found in use in the decompiled files.
    ---@param player Player
    FORCE_START_HIDDEN_EVASION = function(player) end,

    ---@param player Player
    SUPPRESS_WITNESSES_CALLING_POLICE_THIS_FRAME = function(player) end,

    ---@param player Player
    REPORT_POLICE_SPOTTED_PLAYER = function(player) end,

    ---PLAYER::SET_LAW_RESPONSE_DELAY_OVERRIDE(rPtr((&l_122) + 71)); // Found in decompilation\
    ---\
    ---***\
    ---\
    ---In "am_hold_up.ysc" used once:\
    ---\
    ---l_8d._f47 = MISC::GET_RANDOM_FLOAT_IN_RANGE(18.0, 28.0);\
    ---PLAYER::SET_LAW_RESPONSE_DELAY_OVERRIDE((l_8d._f47));
    ---@param p0 number
    SET_LAW_RESPONSE_DELAY_OVERRIDE = function(p0) end,

    RESET_LAW_RESPONSE_DELAY_OVERRIDE = function() end,

    ---@param player Player
    ---@return BOOL
    CAN_PLAYER_START_MISSION = function(player) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_READY_FOR_CUTSCENE = function(player) end,

    ---@param player Player
    ---@param entity Entity
    ---@return BOOL
    IS_PLAYER_TARGETTING_ENTITY = function(player, entity) end,

    ---Assigns the handle of locked-on melee target to *entity that you pass it.\
    ---Returns false if no entity found.
    ---@param player Player
    ---@param entity Entity
    ---@return BOOL
    ---@return Entity
    GET_PLAYER_TARGET_ENTITY = function(player, entity) end,

    ---Gets a value indicating whether the specified player is currently aiming freely.
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_FREE_AIMING = function(player) end,

    ---Gets a value indicating whether the specified player is currently aiming freely at the specified entity.
    ---@param player Player
    ---@param entity Entity
    ---@return BOOL
    IS_PLAYER_FREE_AIMING_AT_ENTITY = function(player, entity) end,

    ---Returns TRUE if it found an entity in your crosshair within range of your weapon. Assigns the handle of the target to the *entity that you pass it.\
    ---Returns false if no entity found.
    ---@param player Player
    ---@param entity Entity
    ---@return BOOL
    ---@return Entity
    GET_ENTITY_PLAYER_IS_FREE_AIMING_AT = function(player, entity) end,

    ---Affects the range of auto aim target.
    ---@param player Player
    ---@param range number
    SET_PLAYER_LOCKON_RANGE_OVERRIDE = function(player, range) end,

    ---Set whether this player should be able to do drive-bys.\
    ---\
    ---"A drive-by is when a ped is aiming/shooting from vehicle. This includes middle finger taunts. By setting this value to false I confirm the player is unable to do all that. Tested on tick."\
    ---
    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_CAN_DO_DRIVE_BY = function(player, toggle) end,

    ---Sets whether this player can be hassled by gangs.
    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_CAN_BE_HASSLED_BY_GANGS = function(player, toggle) end,

    ---Sets whether this player can take cover.
    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_CAN_USE_COVER = function(player, toggle) end,

    ---Gets the maximum wanted level the player can get.\
    ---Ranges from 0 to 5.
    ---@return integer
    GET_MAX_WANTED_LEVEL = function() end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_TARGETTING_ANYTHING = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_SPRINT = function(player, toggle) end,

    ---@param player Player
    RESET_PLAYER_STAMINA = function(player) end,

    ---@param player Player
    ---@param p1 number
    RESTORE_PLAYER_STAMINA = function(player, p1) end,

    ---@param player Player
    ---@return number
    GET_PLAYER_SPRINT_STAMINA_REMAINING = function(player) end,

    ---@param player Player
    ---@return number
    GET_PLAYER_SPRINT_TIME_REMAINING = function(player) end,

    ---@param player Player
    ---@return number
    GET_PLAYER_UNDERWATER_TIME_REMAINING = function(player) end,

    ---@param player Player
    ---@param time number
    ---@return number
    SET_PLAYER_UNDERWATER_BREATH_PERCENT_REMAINING = function(player, time) end,

    ---Returns the group ID the player is member of.
    ---@param player Player
    ---@return integer
    GET_PLAYER_GROUP = function(player) end,

    ---@param player Player
    ---@return integer
    GET_PLAYER_MAX_ARMOUR = function(player) end,

    ---Can the player control himself, used to disable controls for player for things like a cutscene.\
    ---\
    ------\
    ---\
    ---You can't disable controls with this, use SET_PLAYER_CONTROL(...) for this. 
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_CONTROL_ON = function(player) end,

    ---Returns true when the player is not able to control the cam i.e. when running a benchmark test, switching the player or viewing a cutscene.\
    ---\
    ---Note: I am not 100% sure if the native actually checks if the cam control is disabled but it seems promising.
    ---@return BOOL
    GET_ARE_CAMERA_CONTROLS_DISABLED = function() end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_SCRIPT_CONTROL_ON = function(player) end,

    ---Returns TRUE if the player ('s ped) is climbing at the moment.
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_CLIMBING = function(player) end,

    ---Return true while player is being arrested / busted.\
    ---\
    ---If atArresting is set to 1, this function will return 1 when player is being arrested (while player is putting his hand up, but still have control)\
    ---\
    ---If atArresting is set to 0, this function will return 1 only when the busted screen is shown.
    ---@param player Player
    ---@param atArresting BOOL
    ---@return BOOL
    IS_PLAYER_BEING_ARRESTED = function(player, atArresting) end,

    ---@param player Player
    RESET_PLAYER_ARREST_STATE = function(player) end,

    ---Alternative: GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 1);
    ---@return Vehicle
    GET_PLAYERS_LAST_VEHICLE = function() end,

    ---Returns the same as PLAYER_ID and NETWORK_PLAYER_ID_TO_INT
    ---@return Player
    GET_PLAYER_INDEX = function() end,

    ---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).
    ---@param value integer
    ---@return Player
    INT_TO_PLAYERINDEX = function(value) end,

    ---Simply returns whatever is passed to it (Regardless of whether the handle is valid or not).\
    -----------------------------------------------------------\
    ---if (NETWORK::NETWORK_IS_PARTICIPANT_ACTIVE(PLAYER::INT_TO_PARTICIPANTINDEX(i)))\
    ---
    ---@param value integer
    ---@return integer
    INT_TO_PARTICIPANTINDEX = function(value) end,

    ---@param player Player
    ---@return integer
    GET_TIME_SINCE_PLAYER_HIT_VEHICLE = function(player) end,

    ---@param player Player
    ---@return integer
    GET_TIME_SINCE_PLAYER_HIT_PED = function(player) end,

    ---@param player Player
    ---@return integer
    GET_TIME_SINCE_PLAYER_DROVE_ON_PAVEMENT = function(player) end,

    ---@param player Player
    ---@return integer
    GET_TIME_SINCE_PLAYER_DROVE_AGAINST_TRAFFIC = function(player) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_FREE_FOR_AMBIENT_TASK = function(player) end,

    ---This returns YOUR 'identity' as a Player type.\
    ---\
    ---Always returns 0 in story mode.
    ---@return Player
    PLAYER_ID = function() end,

    ---Returns current player ped
    ---@return Ped
    PLAYER_PED_ID = function() end,

    ---Does exactly the same thing as PLAYER_ID()
    ---@return integer
    NETWORK_PLAYER_ID_TO_INT = function() end,

    ---@param cleanupFlags integer
    ---@return BOOL
    HAS_FORCE_CLEANUP_OCCURRED = function(cleanupFlags) end,

    ---used with 1,2,8,64,128 in the scripts
    ---@param cleanupFlags integer
    FORCE_CLEANUP = function(cleanupFlags) end,

    ---PLAYER::FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME("pb_prostitute", 1); // Found in decompilation
    ---@param name string
    ---@param cleanupFlags integer
    FORCE_CLEANUP_FOR_ALL_THREADS_WITH_THIS_NAME = function(name, cleanupFlags) end,

    ---@param id integer
    ---@param cleanupFlags integer
    FORCE_CLEANUP_FOR_THREAD_WITH_THIS_ID = function(id, cleanupFlags) end,

    ---@return integer
    GET_CAUSE_OF_MOST_RECENT_FORCE_CLEANUP = function() end,

    ---@param player Player
    ---@param vehicle Vehicle
    SET_PLAYER_MAY_ONLY_ENTER_THIS_VEHICLE = function(player, vehicle) end,

    ---@param player Player
    SET_PLAYER_MAY_NOT_ENTER_ANY_VEHICLE = function(player) end,

    ---1 - Welcome to Los Santos\
    ---2 - A Friendship Resurrected\
    ---3 - A Fair Day's Pay\
    ---4 - The Moment of Truth\
    ---5 - To Live or Die in Los Santos\
    ---6 - Diamond Hard\
    ---7 - Subversive\
    ---8 - Blitzed\
    ---9 - Small Town, Big Job\
    ---10 - The Government Gimps\
    ---11 - The Big One!\
    ---12 - Solid Gold, Baby!\
    ---13 - Career Criminal\
    ---14 - San Andreas Sightseer\
    ---15 - All's Fare in Love and War\
    ---16 - TP Industries Arms Race\
    ---17 - Multi-Disciplined\
    ---18 - From Beyond the Stars\
    ---19 - A Mystery, Solved\
    ---20 - Waste Management\
    ---21 - Red Mist\
    ---22 - Show Off\
    ---23 - Kifflom!\
    ---24 - Three Man Army\
    ---25 - Out of Your Depth\
    ---26 - Altruist Acolyte\
    ---27 - A Lot of Cheddar\
    ---28 - Trading Pure Alpha\
    ---29 - Pimp My Sidearm\
    ---30 - Wanted: Alive Or Alive\
    ---31 - Los Santos Customs\
    ---32 - Close Shave\
    ---33 - Off the Plane\
    ---34 - Three-Bit Gangster\
    ---35 - Making Moves\
    ---36 - Above the Law\
    ---37 - Numero Uno\
    ---38 - The Midnight Club\
    ---39 - Unnatural Selection\
    ---40 - Backseat Driver\
    ---41 - Run Like The Wind\
    ---42 - Clean Sweep\
    ---43 - Decorated\
    ---44 - Stick Up Kid\
    ---45 - Enjoy Your Stay\
    ---46 - Crew Cut\
    ---47 - Full Refund\
    ---48 - Dialling Digits\
    ---49 - American Dream\
    ---50 - A New Perspective\
    ---51 - Be Prepared\
    ---52 - In the Name of Science\
    ---53 - Dead Presidents\
    ---54 - Parole Day\
    ---55 - Shot Caller\
    ---56 - Four Way\
    ---57 - Live a Little\
    ---58 - Can't Touch This\
    ---59 - Mastermind\
    ---60 - Vinewood Visionary\
    ---61 - Majestic\
    ---62 - Humans of Los Santos\
    ---63 - First Time Director\
    ---64 - Animal Lover\
    ---65 - Ensemble Piece\
    ---66 - Cult Movie\
    ---67 - Location Scout\
    ---68 - Method Actor\
    ---69 - Cryptozoologist\
    ---70 - Getting Started\
    ---71 - The Data Breaches\
    ---72 - The Bogdan Problem\
    ---73 - The Doomsday Scenario\
    ---74 - A World Worth Saving\
    ---75 - Orbital Obliteration\
    ---76 - Elitist\
    ---77 - Masterminds
    ---@param achievementId integer
    ---@return BOOL
    GIVE_ACHIEVEMENT_TO_PLAYER = function(achievementId) end,

    ---For Steam.\
    ---Does nothing and always returns false in the retail version of the game.
    ---@param achievementId integer
    ---@param progress integer
    ---@return BOOL
    SET_ACHIEVEMENT_PROGRESS = function(achievementId, progress) end,

    ---For Steam.\
    ---Always returns 0 in retail version of the game.
    ---@param achievementId integer
    ---@return integer
    GET_ACHIEVEMENT_PROGRESS = function(achievementId) end,

    ---See GIVE_ACHIEVEMENT_TO_PLAYER
    ---@param achievementId integer
    ---@return BOOL
    HAS_ACHIEVEMENT_BEEN_PASSED = function(achievementId) end,

    ---Returns TRUE if the game is in online mode and FALSE if in offline mode.\
    ---\
    ---This is an alias for NETWORK_IS_SIGNED_ONLINE.
    ---@return BOOL
    IS_PLAYER_ONLINE = function() end,

    ---this function is hard-coded to always return 0.
    ---@return BOOL
    IS_PLAYER_LOGGING_IN_NP = function() end,

    ---Purpose of the BOOL currently unknown.\
    ---Both, true and false, work
    ---@param p0 BOOL
    DISPLAY_SYSTEM_SIGNIN_UI = function(p0) end,

    ---@return BOOL
    IS_SYSTEM_UI_BEING_DISPLAYED = function() end,

    ---Simply sets you as invincible (Health will not deplete).\
    ---\
    ---Use 0x733A643B5B0C53C1 instead if you want Ragdoll enabled, which is equal to:\
    ---*(DWORD *)(playerPedAddress + 0x188) |= (1 << 9);
    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_INVINCIBLE = function(player, toggle) end,

    ---Returns the Player's Invincible status.\
    ---\
    ---This function will always return false if 0x733A643B5B0C53C1 is used to set the invincibility status. To always get the correct result, use this:\
    ---\
    --- bool IsPlayerInvincible(Player player)\
    ---    {\
    ---     auto addr = getScriptHandleBaseAddress(GET_PLAYER_PED(player)); \
    ---\
    ---        if (addr)\
    ---     {\
    ---         DWORD flag = *(DWORD *)(addr + 0x188);\
    ---            return ((flag & (1 << 8)) != 0) || ((flag & (1 << 9)) != 0);\
    ---  }\
    ---\
    ---       return false;\
    --- }\
    ---\
    ---
    ---@param player Player
    ---@return BOOL
    GET_PLAYER_INVINCIBLE = function(player) end,

    ---Always returns false.
    ---@param player Player
    ---@return BOOL
    GET_PLAYER_DEBUG_INVINCIBLE = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_INVINCIBLE_BUT_HAS_REACTIONS = function(player, toggle) end,

    ---@param player Player
    ---@param p1 BOOL
    SET_PLAYER_CAN_COLLECT_DROPPED_MONEY = function(player, p1) end,

    ---@param player Player
    ---@param p2 BOOL
    REMOVE_PLAYER_HELMET = function(player, p2) end,

    ---@param player Player
    ---@param toggle BOOL
    GIVE_PLAYER_RAGDOLL_CONTROL = function(player, toggle) end,

    ---Example from fm_mission_controler.ysc.c4:\
    ---\
    ---PLAYER::SET_PLAYER_LOCKON(PLAYER::PLAYER_ID(), 1);\
    ---\
    ---All other decompiled scripts using this seem to be using the player id as the first parameter, so I feel the need to confirm it as so.\
    ---\
    ---No need to confirm it says PLAYER_ID() so it uses PLAYER_ID() lol.
    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_LOCKON = function(player, toggle) end,

    ---Sets your targeting mode.\
    ---0 = Assisted Aim - Full\
    ---1 = Assisted Aim - Partial\
    ---2 = Free Aim - Assisted\
    ---3 = Free Aim
    ---@param targetMode integer
    SET_PLAYER_TARGETING_MODE = function(targetMode) end,

    ---@return integer
    GET_PLAYER_TARGETING_MODE = function() end,

    ---@param targetLevel integer
    SET_PLAYER_TARGET_LEVEL = function(targetLevel) end,

    ---Returns profile setting 237.
    ---@return BOOL
    GET_IS_USING_FPS_THIRD_PERSON_COVER = function() end,

    ---Returns profile setting 243.
    ---@return BOOL
    GET_IS_USING_HOOD_CAMERA = function() end,

    ---@param player Player
    CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_PED = function(player) end,

    ---@param player Player
    ---@return BOOL
    HAS_PLAYER_DAMAGED_AT_LEAST_ONE_PED = function(player) end,

    ---@param player Player
    CLEAR_PLAYER_HAS_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED = function(player) end,

    ---@param player Player
    ---@return BOOL
    HAS_PLAYER_DAMAGED_AT_LEAST_ONE_NON_ANIMAL_PED = function(player) end,

    ---This can be between 1.0f - 14.9f \
    ---\
    ---You can change the max in IDA from 15.0. I say 15.0 as the function blrs if what you input is greater than or equal to 15.0 hence why it's 14.9 max default.\
    ---\
    ---
    ---@param player Player
    ---@param multiplier number
    SET_AIR_DRAG_MULTIPLIER_FOR_PLAYERS_VEHICLE = function(player, multiplier) end,

    ---Swim speed multiplier.\
    ---Multiplier goes up to 1.49\
    ---\
    ---Just call it one time, it is not required to be called once every tick. - Note copied from below native.\
    ---\
    ---Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and RUN_SPRINT below. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.
    ---@param player Player
    ---@param multiplier number
    SET_SWIM_MULTIPLIER_FOR_PLAYER = function(player, multiplier) end,

    ---Multiplier goes up to 1.49 any value above will be completely overruled by the game and the multiplier will not take effect, this can be edited in memory however.\
    ---\
    ---Just call it one time, it is not required to be called once every tick.\
    ---\
    ---Note: At least the IDA method if you change the max float multiplier from 1.5 it will change it for both this and SWIM above. I say 1.5 as the function blrs if what you input is greater than or equal to 1.5 hence why it's 1.49 max default.
    ---@param player Player
    ---@param multiplier number
    SET_RUN_SPRINT_MULTIPLIER_FOR_PLAYER = function(player, multiplier) end,

    ---Returns the time since the character was arrested in (ms) milliseconds.\
    ---\
    ---example\
    ---\
    ---var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_ARREST();\
    ---\
    ---UI.DrawSubtitle(time.ToString());\
    ---\
    ---if player has not been arrested, the int returned will be -1.
    ---@return integer
    GET_TIME_SINCE_LAST_ARREST = function() end,

    ---Returns the time since the character died in (ms) milliseconds.\
    ---\
    ---example\
    ---\
    ---var time = Function.call<int>(Hash.GET_TIME_SINCE_LAST_DEATH();\
    ---\
    ---UI.DrawSubtitle(time.ToString());\
    ---\
    ---if player has not died, the int returned will be -1.
    ---@return integer
    GET_TIME_SINCE_LAST_DEATH = function() end,

    ASSISTED_MOVEMENT_CLOSE_ROUTE = function() end,

    ASSISTED_MOVEMENT_FLUSH_ROUTE = function() end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_FORCED_AIM = function(player, toggle) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_FORCED_ZOOM = function(player, toggle) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_FORCE_SKIP_AIM_INTRO = function(player, toggle) end,

    ---Inhibits the player from using any method of combat including melee and firearms.\
    ---\
    ---NOTE: Only disables the firing for one frame
    ---@param player Player
    ---@param toggle BOOL
    DISABLE_PLAYER_FIRING = function(player, toggle) end,

    ---Used only once in R* scripts (freemode.ysc).
    DISABLE_PLAYER_THROW_GRENADE_WHILE_USING_GUN = function() end,

    ---@param player Player
    ---@param toggle BOOL
    SET_DISABLE_AMBIENT_MELEE_MOVE = function(player, toggle) end,

    ---Default is 100. Use player id and not ped id. For instance: PLAYER::SET_PLAYER_MAX_ARMOUR(PLAYER::PLAYER_ID(), 100); // main_persistent.ct4
    ---@param player Player
    ---@param value integer
    SET_PLAYER_MAX_ARMOUR = function(player, value) end,

    ---p1 is always 0 in the scripts
    ---@param player Player
    ---@param p1 integer
    SPECIAL_ABILITY_ACTIVATE = function(player, p1) end,

    ---@param player Player
    ---@param p1 integer
    ---@param p2 Any
    SET_SPECIAL_ABILITY_MP = function(player, p1, p2) end,

    ---p1 is always 0 in the scripts
    ---@param player Player
    ---@param p1 integer
    SPECIAL_ABILITY_DEACTIVATE_MP = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    SPECIAL_ABILITY_DEACTIVATE = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    SPECIAL_ABILITY_DEACTIVATE_FAST = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    SPECIAL_ABILITY_RESET = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    SPECIAL_ABILITY_CHARGE_ON_MISSION_FAILED = function(player, p1) end,

    ---Every occurrence of p1 & p2 were both true.
    ---@param player Player
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    SPECIAL_ABILITY_CHARGE_SMALL = function(player, p1, p2, p3) end,

    ---Only 1 match. Both p1 & p2 were true.
    ---@param player Player
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    SPECIAL_ABILITY_CHARGE_MEDIUM = function(player, p1, p2, p3) end,

    ---2 matches. p1 was always true.
    ---@param player Player
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 Any
    SPECIAL_ABILITY_CHARGE_LARGE = function(player, p1, p2, p3) end,

    ---p1 appears to always be 1 (only comes up twice)
    ---@param player Player
    ---@param p1 Ped
    ---@param p2 Any
    SPECIAL_ABILITY_CHARGE_CONTINUOUS = function(player, p1, p2) end,

    ---p1 appears as 5, 10, 15, 25, or 30. p2 is always true.
    ---@param player Player
    ---@param p1 integer
    ---@param p2 BOOL
    ---@param p3 Any
    SPECIAL_ABILITY_CHARGE_ABSOLUTE = function(player, p1, p2, p3) end,

    ---\
    ---normalizedValue is from 0.0 - 1.0\
    ---p2 is always 1
    ---@param player Player
    ---@param normalizedValue number
    ---@param p2 BOOL
    ---@param p3 Any
    SPECIAL_ABILITY_CHARGE_NORMALIZED = function(player, normalizedValue, p2, p3) end,

    ---Also known as _RECHARGE_SPECIAL_ABILITY
    ---@param player Player
    ---@param p1 BOOL
    ---@param p2 Any
    SPECIAL_ABILITY_FILL_METER = function(player, p1, p2) end,

    ---p1 was always true.
    ---@param player Player
    ---@param p1 BOOL
    ---@param p2 Any
    SPECIAL_ABILITY_DEPLETE_METER = function(player, p1, p2) end,

    ---@param playerModel Hash
    ---@param p1 Any
    SPECIAL_ABILITY_LOCK = function(playerModel, p1) end,

    ---@param playerModel Hash
    ---@param p1 Any
    SPECIAL_ABILITY_UNLOCK = function(playerModel, p1) end,

    ---@param playerModel Hash
    ---@return BOOL
    IS_SPECIAL_ABILITY_UNLOCKED = function(playerModel) end,

    ---@param player Player
    ---@param p1 Any
    ---@return BOOL
    IS_SPECIAL_ABILITY_ACTIVE = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    ---@return BOOL
    IS_SPECIAL_ABILITY_METER_FULL = function(player, p1) end,

    ---@param player Player
    ---@param toggle BOOL
    ---@param p2 Any
    ENABLE_SPECIAL_ABILITY = function(player, toggle, p2) end,

    ---@param player Player
    ---@param p1 Any
    ---@return BOOL
    IS_SPECIAL_ABILITY_ENABLED = function(player, p1) end,

    ---@param multiplier number
    SET_SPECIAL_ABILITY_MULTIPLIER = function(multiplier) end,

    ---@param player Player
    ---@param p1 Any
    UPDATE_SPECIAL_ABILITY_FROM_STAT = function(player, p1) end,

    ---Appears once in "re_dealgonewrong"
    ---@param player Player
    ---@return BOOL
    GET_IS_PLAYER_DRIVING_ON_HIGHWAY = function(player) end,

    ---Only 1 occurrence. p1 was 2.
    ---@param player Player
    ---@param p1 integer
    ---@return BOOL
    GET_IS_PLAYER_DRIVING_WRECKLESS = function(player, p1) end,

    ---2 occurrences in agency_heist3a. p1 was 0.7f then 0.4f.
    ---@param player Player
    ---@param p1 number
    ---@return BOOL
    GET_IS_MOPPING_AREA_FREE_IN_FRONT_OF_PLAYER = function(player, p1) end,

    ---`findCollisionLand`: This teleports the player to land when set to true and will not consider the Z coordinate parameter provided by you. It will automatically put the Z coordinate so that you don't fall from sky.
    ---@param player Player
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param p5 BOOL
    ---@param findCollisionLand BOOL
    ---@param p7 BOOL
    START_PLAYER_TELEPORT = function(player, x, y, z, heading, p5, findCollisionLand, p7) end,

    ---@param player Player
    ---@return BOOL
    UPDATE_PLAYER_TELEPORT = function(player) end,

    ---Disables the player's teleportation
    STOP_PLAYER_TELEPORT = function() end,

    ---@return BOOL
    IS_PLAYER_TELEPORT_ACTIVE = function() end,

    ---@param player Player
    ---@return number
    GET_PLAYER_CURRENT_STEALTH_NOISE = function(player) end,

    ---`regenRate`: The recharge multiplier, a value between 0.0 and 1.0.\
    ---Use 1.0 to reset it back to normal
    ---@param player Player
    ---@param regenRate number
    SET_PLAYER_HEALTH_RECHARGE_MULTIPLIER = function(player, regenRate) end,

    ---@param player Player
    ---@return number
    GET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT = function(player) end,

    ---@param player Player
    ---@param limit number
    SET_PLAYER_HEALTH_RECHARGE_MAX_PERCENT = function(player, limit) end,

    ---Needs to be called every frame.
    ---@param player Player
    DISABLE_PLAYER_HEALTH_RECHARGE = function(player) end,

    ---@param player Player
    ---@param p1 number
    SET_PLAYER_FALL_DISTANCE_TO_TRIGGER_RAGDOLL_OVERRIDE = function(player, p1) end,

    ---This modifies the damage value of your weapon. Whether it is a multiplier or base damage is unknown. \
    ---\
    ---Based on tests, it is unlikely to be a multiplier.\
    ---\
    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_WEAPON_DAMAGE_MODIFIER = function(player, modifier) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_WEAPON_DEFENSE_MODIFIER = function(player, modifier) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_WEAPON_MINIGUN_DEFENSE_MODIFIER = function(player, modifier) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    ---@param p2 BOOL
    SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER = function(player, modifier, p2) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_MELEE_WEAPON_DEFENSE_MODIFIER = function(player, modifier) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_VEHICLE_DAMAGE_MODIFIER = function(player, modifier) end,

    ---modifier's min value is 0.1
    ---@param player Player
    ---@param modifier number
    SET_PLAYER_VEHICLE_DEFENSE_MODIFIER = function(player, modifier) end,

    ---@param player Player
    ---@param p1 number
    SET_PLAYER_MAX_EXPLOSIVE_DAMAGE = function(player, p1) end,

    ---@param player Player
    ---@param p1 Any
    SET_PLAYER_EXPLOSIVE_DAMAGE_MODIFIER = function(player, p1) end,

    ---@param player Player
    ---@param p1 number
    SET_PLAYER_WEAPON_TAKEDOWN_DEFENSE_MODIFIER = function(player, p1) end,

    ---Tints:\
    ---   None = -1,\
    ---    Rainbow = 0,\
    ---  Red = 1,\
    ---  SeasideStripes = 2,\
    ---   WidowMaker = 3,\
    ---   Patriot = 4,\
    ---  Blue = 5,\
    --- Black = 6,\
    ---    Hornet = 7,\
    ---   AirFocce = 8,\
    --- Desert = 9,\
    ---   Shadow = 10,\
    ---  HighAltitude = 11,\
    ---    Airbone = 12,\
    --- Sunrise = 13,\
    ---
    ---@param player Player
    ---@param tintIndex integer
    SET_PLAYER_PARACHUTE_TINT_INDEX = function(player, tintIndex) end,

    ---Tints:\
    ---  None = -1,\
    ---    Rainbow = 0,\
    ---  Red = 1,\
    ---  SeasideStripes = 2,\
    ---   WidowMaker = 3,\
    ---   Patriot = 4,\
    ---  Blue = 5,\
    --- Black = 6,\
    ---    Hornet = 7,\
    ---   AirFocce = 8,\
    --- Desert = 9,\
    ---   Shadow = 10,\
    ---  HighAltitude = 11,\
    ---    Airbone = 12,\
    --- Sunrise = 13,

    ---@param player Player
    ---@param tintIndex integer
    ---@return integer
    GET_PLAYER_PARACHUTE_TINT_INDEX = function(player, tintIndex) end,

    ---Tints:\
    ---   None = -1,\
    ---    Rainbow = 0,\
    ---  Red = 1,\
    ---  SeasideStripes = 2,\
    ---   WidowMaker = 3,\
    ---   Patriot = 4,\
    ---  Blue = 5,\
    --- Black = 6,\
    ---    Hornet = 7,\
    ---   AirFocce = 8,\
    --- Desert = 9,\
    ---   Shadow = 10,\
    ---  HighAltitude = 11,\
    ---    Airbone = 12,\
    --- Sunrise = 13,

    ---@param player Player
    ---@param index integer
    SET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX = function(player, index) end,

    ---Tints:\
    ---  None = -1,\
    ---    Rainbow = 0,\
    ---  Red = 1,\
    ---  SeasideStripes = 2,\
    ---   WidowMaker = 3,\
    ---   Patriot = 4,\
    ---  Blue = 5,\
    --- Black = 6,\
    ---    Hornet = 7,\
    ---   AirFocce = 8,\
    --- Desert = 9,\
    ---   Shadow = 10,\
    ---  HighAltitude = 11,\
    ---    Airbone = 12,\
    --- Sunrise = 13,

    ---@param player Player
    ---@param index integer
    ---@return integer
    GET_PLAYER_RESERVE_PARACHUTE_TINT_INDEX = function(player, index) end,

    ---tints 0- 13\
    ---0 - unkown\
    ---1 - unkown\
    ---2 - unkown\
    ---3 - unkown\
    ---4 - unkown
    ---@param player Player
    ---@param tintIndex integer
    SET_PLAYER_PARACHUTE_PACK_TINT_INDEX = function(player, tintIndex) end,

    ---@param player Player
    ---@param tintIndex integer
    ---@return integer
    GET_PLAYER_PARACHUTE_PACK_TINT_INDEX = function(player, tintIndex) end,

    ---@param player Player
    SET_PLAYER_HAS_RESERVE_PARACHUTE = function(player) end,

    ---@param player Player
    ---@return BOOL
    GET_PLAYER_HAS_RESERVE_PARACHUTE = function(player) end,

    ---@param player Player
    ---@param enabled BOOL
    SET_PLAYER_CAN_LEAVE_PARACHUTE_SMOKE_TRAIL = function(player, enabled) end,

    ---@param player Player
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR = function(player, r, g, b) end,

    ---@param player Player
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_PLAYER_PARACHUTE_SMOKE_TRAIL_COLOR = function(player, r, g, b) end,

    ---@param player Player
    ---@param idx integer
    SET_PLAYER_PHONE_PALETTE_IDX = function(player, idx) end,

    ---@param player Player
    ---@param multiplier number
    SET_PLAYER_NOISE_MULTIPLIER = function(player, multiplier) end,

    ---Values around 1.0f to 2.0f used in game scripts.
    ---@param player Player
    ---@param multiplier number
    SET_PLAYER_SNEAKING_NOISE_MULTIPLIER = function(player, multiplier) end,

    ---@param player Player
    ---@param ped Ped
    ---@return BOOL
    CAN_PED_HEAR_PLAYER = function(player, ped) end,

    ---This is to make the player walk without accepting input from INPUT.\
    ---\
    ---gaitType is in increments of 100s. 2000, 500, 300, 200, etc.\
    ---\
    ---p4 is always 1 and p5 is always 0.\
    ---\
    ---C# Example :\
    ---\
    ---Function.Call(Hash.SIMULATE_PLAYER_INPUT_GAIT, Game.Player, 1.0f, 100, 1.0f, 1, 0); //Player will go forward for 100ms
    ---@param player Player
    ---@param amount number
    ---@param gaitType integer
    ---@param speed number
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 Any
    SIMULATE_PLAYER_INPUT_GAIT = function(player, amount, gaitType, speed, p4, p5, p6) end,

    ---@param player Player
    RESET_PLAYER_INPUT_GAIT = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_AUTO_GIVE_PARACHUTE_WHEN_ENTER_PLANE = function(player, toggle) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_AUTO_GIVE_SCUBA_GEAR_WHEN_EXIT_VEHICLE = function(player, toggle) end,

    ---@param player Player
    ---@param value number
    SET_PLAYER_STEALTH_PERCEPTION_MODIFIER = function(player, value) end,

    ---@param player Player
    ---@return BOOL
    IS_REMOTE_PLAYER_IN_NON_CLONED_VEHICLE = function(player) end,

    ---@param player Player
    INCREASE_PLAYER_JUMP_SUPPRESSION_RANGE = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_SIMULATE_AIMING = function(player, toggle) end,

    ---@param player Player
    ---@param p1 integer
    SET_PLAYER_CLOTH_PIN_FRAMES = function(player, p1) end,

    ---Every occurrence was either 0 or 2.
    ---@param index integer
    SET_PLAYER_CLOTH_PACKAGE_INDEX = function(index) end,

    ---6 matches across 4 scripts. 5 occurrences were 240. The other was 255.
    ---@param value integer
    SET_PLAYER_CLOTH_LOCK_COUNTER = function(value) end,

    ---Only 1 match. ob_sofa_michael.\
    ---\
    ---PLAYER::PLAYER_ATTACH_VIRTUAL_BOUND(-804.5928f, 173.1801f, 71.68436f, 0f, 0f, 0.590625f, 1f, 0.7f);1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    PLAYER_ATTACH_VIRTUAL_BOUND = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---1.0.335.2, 1.0.350.1/2, 1.0.372.2, 1.0.393.2, 1.0.393.4, 1.0.463.1;
    PLAYER_DETACH_VIRTUAL_BOUND = function() end,

    ---@param player Player
    ---@return BOOL
    HAS_PLAYER_BEEN_SPOTTED_IN_STOLEN_VEHICLE = function(player) end,

    ---Returns true if an unk value is greater than 0.0f
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_BATTLE_AWARE = function(player) end,

    ---@param player Player
    ---@param p1 integer
    ---@param p2 BOOL
    ---@return BOOL
    GET_PLAYER_RECEIVED_BATTLE_EVENT_RECENTLY = function(player, p1, p2) end,

    ---Appears only 3 times in the scripts, more specifically in michael1.ysc\
    ---\
    ----\
    ---This can be used to prevent dying if you are "out of the world"
    ---@param x number
    ---@param y number
    ---@param z number
    EXTEND_WORLD_BOUNDARY_FOR_PLAYER = function(x, y, z) end,

    RESET_WORLD_BOUNDARY_FOR_PLAYER = function() end,

    ---Returns true if the player is riding a train.
    ---@param player Player
    ---@return BOOL
    IS_PLAYER_RIDING_TRAIN = function(player) end,

    ---@param player Player
    ---@return BOOL
    HAS_PLAYER_LEFT_THE_WORLD = function(player) end,

    ---@param player Player
    ---@param toggle BOOL
    SET_PLAYER_LEAVE_PED_BEHIND = function(player, toggle) end,

    ---p1 was always 5.\
    ---p4 was always false.
    ---@param player Player
    ---@param p1 integer
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 BOOL
    SET_PLAYER_PARACHUTE_VARIATION_OVERRIDE = function(player, p1, p2, p3, p4) end,

    ---@param player Player
    CLEAR_PLAYER_PARACHUTE_VARIATION_OVERRIDE = function(player) end,

    ---@param player Player
    ---@param model Hash
    SET_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player, model) end,

    ---@param player Player
    ---@param model Hash
    SET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player, model) end,

    ---@param player Player
    ---@return Hash
    GET_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player) end,

    ---@param player Player
    ---@return Hash
    GET_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player) end,

    ---@param player Player
    CLEAR_PLAYER_PARACHUTE_MODEL_OVERRIDE = function(player) end,

    ---@param player Player
    CLEAR_PLAYER_RESERVE_PARACHUTE_MODEL_OVERRIDE = function(player) end,

    ---@param player Player
    ---@param model Hash
    SET_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE = function(player, model) end,

    ---@param player Player
    CLEAR_PLAYER_PARACHUTE_PACK_MODEL_OVERRIDE = function(player) end,

    ---@param player Player
    DISABLE_PLAYER_VEHICLE_REWARDS = function(player) end,

    ---@param p0 BOOL
    SET_PLAYER_SPECTATED_VEHICLE_RADIO_OVERRIDE = function(p0) end,

    ---@param player Player
    ---@param state BOOL
    SET_PLAYER_BLUETOOTH_STATE = function(player, state) end,

    ---@param player Player
    ---@return BOOL
    IS_PLAYER_BLUETOOTH_ENABLE = function(player) end,

    ---@param player Player
    DISABLE_CAMERA_VIEW_MODE_CYCLE = function(player) end,

    ---@param player Player
    ---@return integer
    GET_PLAYER_FAKE_WANTED_LEVEL = function(player) end,

    ---@param player1 Player
    ---@param player2 Player
    ---@param toggle BOOL
    SET_PLAYER_CAN_DAMAGE_PLAYER = function(player1, player2, toggle) end,

    ---@param player Player
    ---@param hudColor integer
    SET_APPLY_WAYPOINT_OF_PLAYER = function(player, hudColor) end,

    ---@param p0 Any
    ---@return BOOL
    IS_PLAYER_VEHICLE_WEAPON_TOGGLED_TO_NON_HOMING = function(p0) end,

    ---Unsets playerPed+330 if the current weapon has certain flags.
    ---@param p0 Any
    SET_PLAYER_VEHICLE_WEAPON_TO_NON_HOMING = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PLAYER_HOMING_DISABLED_FOR_ALL_VEHICLE_WEAPONS = function(p0, p1) end,

    ---@param player Player
    ---@param entity Entity
    ADD_PLAYER_TARGETABLE_ENTITY = function(player, entity) end,

    ---@param player Player
    ---@param entity Entity
    REMOVE_PLAYER_TARGETABLE_ENTITY = function(player, entity) end,

    ---@param player Player
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    SET_PLAYER_PREVIOUS_VARIATION_DATA = function(player, p1, p2, p3, p4, p5) end,

    ---Resets values set by SET_SCRIPT_FIRE_POSITION
    REMOVE_SCRIPT_FIRE_POSITION = function() end,

    ---@param coordX number
    ---@param coordY number
    ---@param coordZ number
    SET_SCRIPT_FIRE_POSITION = function(coordX, coordY, coordZ) end
}

RECORDING = {
    ---@param p0 integer
    REPLAY_START_EVENT = function(p0) end,

    REPLAY_STOP_EVENT = function() end,

    REPLAY_CANCEL_EVENT = function() end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 integer
    REPLAY_RECORD_BACK_FOR_TIME = function(p0, p1, p2) end,

    ----This function appears to be deprecated/ unused. Tracing the call internally leads to a _nullsub -\
    ---\
    ---first one seems to be a string of a mission name, second one seems to be a bool/toggle\
    ---\
    ---p1 was always 0.\
    ---
    ---@param missionNameLabel string
    ---@param p1 Any
    REPLAY_CHECK_FOR_EVENT_THIS_FRAME = function(missionNameLabel, p1) end,

    ---This disable the recording feature and has to be called every frame.
    REPLAY_PREVENT_RECORDING_THIS_FRAME = function() end,

    REPLAY_RESET_EVENT_INFO = function() end,

    ---This will disable the ability to make camera changes in R* Editor.
    REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME = function() end,

    ---Does nothing (it's a nullsub).
    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    RECORD_GREATEST_MOMENT = function(p0, p1, p2) end,

    ---Starts recording a replay.\
    ---If mode is 0, turns on action replay.\
    ---If mode is 1, starts recording.\
    ---If already recording a replay, does nothing.
    ---@param mode integer
    START_REPLAY_RECORDING = function(mode) end,

    ---Stops recording and saves the recorded clip.
    STOP_REPLAY_RECORDING = function() end,

    ---Stops recording and discards the recorded clip.
    CANCEL_REPLAY_RECORDING = function() end,

    ---@return BOOL
    SAVE_REPLAY_RECORDING = function() end,

    ---Checks if you're recording, returns TRUE when you start recording (F1) or turn on action replay (F2)\
    ---\
    ---mov al, cs:g_bIsRecordingGameplay // byte_141DD0CD0 in b944\
    ---retn
    ---@return BOOL
    IS_REPLAY_RECORDING = function() end,

    ---@return BOOL
    IS_REPLAY_INITIALIZED = function() end,

    ---@return BOOL
    IS_REPLAY_AVAILABLE = function() end,

    ---@param p0 BOOL
    ---@return BOOL
    IS_REPLAY_RECORD_SPACE_AVAILABLE = function(p0) end
}

REPLAY = {
    ---Does nothing (it's a nullsub).
    ---@param p0 string
    ---@param p1 BOOL
    REGISTER_EFFECT_FOR_REPLAY_EDITOR = function(p0, p1) end,

    ---Returns a bool if interior rendering is disabled, if yes, all "normal" rendered interiors are invisible
    ---@return BOOL
    REPLAY_SYSTEM_HAS_REQUESTED_A_SCRIPT_CLEANUP = function() end,

    ---Disables some other rendering (internal)
    SET_SCRIPTS_HAVE_CLEANED_UP_FOR_REPLAY_SYSTEM = function() end,

    ---@param p0 BOOL
    SET_REPLAY_SYSTEM_PAUSED_FOR_SAVE = function(p0) end,

    ---Sets (almost, not sure) all Rockstar Editor values (bIsRecording etc) to 0.
    REPLAY_CONTROL_SHUTDOWN = function() end,

    ---Please note that you will need to call DO_SCREEN_FADE_IN after exiting the Rockstar Editor when you call this.
    ---@param p0 integer
    ACTIVATE_ROCKSTAR_EDITOR = function(p0) end
}

SAVEMIGRATION = {
    ---@return BOOL
    SAVEMIGRATION_IS_MP_ENABLED = function() end,

    ---@return BOOL
    SAVEMIGRATION_MP_REQUEST_ACCOUNTS = function() end,

    ---@return integer
    SAVEMIGRATION_MP_GET_ACCOUNTS_STATUS = function() end,

    ---@return integer
    SAVEMIGRATION_MP_NUM_ACCOUNTS = function() end,

    ---@param p0 integer
    ---@param p1 Any*
    ---@return BOOL
    SAVEMIGRATION_MP_GET_ACCOUNT = function(p0, p1) end,

    ---@return BOOL
    SAVEMIGRATION_MP_REQUEST_STATUS = function() end,

    ---@return integer
    SAVEMIGRATION_MP_GET_STATUS = function() end
}

SCRIPT = {
    ---@param scriptName string
    REQUEST_SCRIPT = function(scriptName) end,

    ---@param scriptName string
    SET_SCRIPT_AS_NO_LONGER_NEEDED = function(scriptName) end,

    ---Returns if a script has been loaded into the game. Used to see if a script was loaded after requesting.
    ---@param scriptName string
    ---@return BOOL
    HAS_SCRIPT_LOADED = function(scriptName) end,

    ---@param scriptName string
    ---@return BOOL
    DOES_SCRIPT_EXIST = function(scriptName) end,

    ---formerly _REQUEST_STREAMED_SCRIPT
    ---@param scriptHash Hash
    REQUEST_SCRIPT_WITH_NAME_HASH = function(scriptHash) end,

    ---@param scriptHash Hash
    SET_SCRIPT_WITH_NAME_HASH_AS_NO_LONGER_NEEDED = function(scriptHash) end,

    ---@param scriptHash Hash
    ---@return BOOL
    HAS_SCRIPT_WITH_NAME_HASH_LOADED = function(scriptHash) end,

    ---@param scriptHash Hash
    ---@return BOOL
    DOES_SCRIPT_WITH_NAME_HASH_EXIST = function(scriptHash) end,

    ---@param threadId integer
    TERMINATE_THREAD = function(threadId) end,

    ---@param threadId integer
    ---@return BOOL
    IS_THREAD_ACTIVE = function(threadId) end,

    ---@param threadId integer
    ---@return string
    GET_NAME_OF_SCRIPT_WITH_THIS_ID = function(threadId) end,

    ---Starts a new iteration of the current threads.\
    ---Call this first, then SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID (0x30B4FA1C82DD4B9F)
    SCRIPT_THREAD_ITERATOR_RESET = function() end,

    ---If the function returns 0, the end of the iteration has been reached.
    ---@return integer
    SCRIPT_THREAD_ITERATOR_GET_NEXT_THREAD_ID = function() end,

    ---@return integer
    GET_ID_OF_THIS_THREAD = function() end,

    TERMINATE_THIS_THREAD = function() end,

    ---Gets the number of instances of the specified script is currently running.\
    ---\
    ---Actually returns numRefs - 1.\
    ---if (program)\
    ---	v3 = rage::scrProgram::GetNumRefs(program) - 1;\
    ---return v3;
    ---@param scriptHash Hash
    ---@return integer
    GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH = function(scriptHash) end,

    ---@return string
    GET_THIS_SCRIPT_NAME = function() end,

    ---@return Hash
    GET_HASH_OF_THIS_SCRIPT_NAME = function() end,

    ---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)
    ---@param eventGroup integer
    ---@return integer
    GET_NUMBER_OF_EVENTS = function(eventGroup) end,

    ---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)
    ---@param eventGroup integer
    ---@param eventIndex integer
    ---@return BOOL
    GET_EVENT_EXISTS = function(eventGroup, eventIndex) end,

    ---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)
    ---@param eventGroup integer
    ---@param eventIndex integer
    ---@return integer
    GET_EVENT_AT_INDEX = function(eventGroup, eventIndex) end,

    ---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)\
    ---\
    ---Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).
    ---@param eventGroup integer
    ---@param eventIndex integer
    ---@param eventData Any*
    ---@param eventDataSize integer
    ---@return BOOL
    GET_EVENT_DATA = function(eventGroup, eventIndex, eventData, eventDataSize) end,

    ---eventGroup: 0 = SCRIPT_EVENT_QUEUE_AI (CEventGroupScriptAI), 1 = SCRIPT_EVENT_QUEUE_NETWORK (CEventGroupScriptNetwork)\
    ---\
    ---Note: eventDataSize is NOT the size in bytes, it is the size determined by the SIZE_OF operator (RAGE Script operator, not C/C++ sizeof). That is, the size in bytes divided by 8 (script variables are always 8-byte aligned!).\
    ---\
    ---playerBits (also known as playersToBroadcastTo) is a bitset that indicates which players this event should be sent to. In order to send the event to specific players only, use (1 << playerIndex). Set all bits if it should be broadcast to all players.
    ---@param eventGroup integer
    ---@param eventData Any*
    ---@param eventDataSize integer
    ---@param playerBits integer
    ---@deprecated
    TRIGGER_SCRIPT_EVENT = function(eventGroup, eventData, eventDataSize, playerBits) end,

    SHUTDOWN_LOADING_SCREEN = function() end,

    ---@param toggle BOOL
    SET_NO_LOADING_SCREEN = function(toggle) end,

    ---@return BOOL
    GET_NO_LOADING_SCREEN = function() end,

    COMMIT_TO_LOADINGSCREEN_SELCTION = function() end,

    ---Returns true if bit 0 in GtaThread+0x154 is set.
    ---@return BOOL
    ---@deprecated
    BG_IS_EXITFLAG_SET = function() end,

    ---Sets bit 1 in GtaThread+0x154
    ---@deprecated
    BG_SET_EXITFLAG_RESPONSE = function() end,

    ---Hashed version of BG_START_CONTEXT.
    ---@param contextHash Hash
    ---@deprecated
    BG_START_CONTEXT_HASH = function(contextHash) end,

    ---Hashed version of BG_END_CONTEXT.
    ---@param contextHash Hash
    ---@deprecated
    BG_END_CONTEXT_HASH = function(contextHash) end,

    ---Inserts the given context into the background scripts context map.
    ---@param contextName string
    ---@deprecated
    BG_START_CONTEXT = function(contextName) end,

    ---Deletes the given context from the background scripts context map.
    ---@param contextName string
    ---@deprecated
    BG_END_CONTEXT = function(contextName) end,

    ---@param scriptIndex integer
    ---@param p1 string
    ---@return BOOL
    ---@deprecated
    BG_DOES_LAUNCH_PARAM_EXIST = function(scriptIndex, p1) end,

    ---@param scriptIndex integer
    ---@param p1 string
    ---@return integer
    ---@deprecated
    BG_GET_LAUNCH_PARAM_VALUE = function(scriptIndex, p1) end,

    ---@param p0 Hash
    ---@return integer
    ---@deprecated
    BG_GET_SCRIPT_ID_FROM_NAME_HASH = function(p0) end,

    ---New variant of SEND_TU_SCRIPT_EVENT that automatically initializes the event data header.\
    ---See TRIGGER_SCRIPT_EVENT for more info.
    ---@param eventGroup integer
    ---@param eventData Any*
    ---@param eventDataSize integer
    ---@param playerBits integer
    ---@param eventType Hash
    _SEND_TU_SCRIPT_EVENT_NEW = function(eventGroup, eventData, eventDataSize, playerBits, eventType) end
}

SECURITY = {
    ---Registers a protected variable that will be checked for modifications by the anticheat
    ---@param variable Any*
    REGISTER_SCRIPT_VARIABLE = function(variable) end,

    ---@param variable Any*
    UNREGISTER_SCRIPT_VARIABLE = function(variable) end,

    FORCE_CHECK_SCRIPT_VARIABLES = function() end
}

SHAPETEST = {
    ---Asynchronously starts a line-of-sight (raycast) world probe shape test.\
    ---\
    ---Use the handle with 0x3D87450E15D98694 or 0x65287525D951F6BE until it returns 0 or 2.\
    ---\
    ---p8 is a bit mask with bits 1, 2 and/or 4, relating to collider types; 4 should usually be used.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param flags integer
    ---@param entity Entity
    ---@param p8 integer
    ---@return integer
    START_SHAPE_TEST_LOS_PROBE = function(x1, y1, z1, x2, y2, z2, flags, entity, p8) end,

    ---Does the same as 0x7EE9F5D83DD4F90E, except blocking until the shape test completes.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param flags integer
    ---@param entity Entity
    ---@param p8 integer
    ---@return integer
    START_EXPENSIVE_SYNCHRONOUS_SHAPE_TEST_LOS_PROBE = function(x1, y1, z1, x2, y2, z2, flags, entity, p8) end,

    ---@param entity Entity
    ---@param flags1 integer
    ---@param flags2 integer
    ---@return integer
    START_SHAPE_TEST_BOUNDING_BOX = function(entity, flags1, flags2) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param dimX number
    ---@param dimY number
    ---@param dimZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param p9 Any
    ---@param flags integer
    ---@param entity Entity
    ---@param p12 Any
    ---@return integer
    START_SHAPE_TEST_BOX = function(x, y, z, dimX, dimY, dimZ, rotX, rotY, rotZ, p9, flags, entity, p12) end,

    ---@param entity Entity
    ---@param flags1 integer
    ---@param flags2 integer
    ---@return integer
    START_SHAPE_TEST_BOUND = function(entity, flags1, flags2) end,

    ---Raycast from point to point, where the ray has a radius. \
    ---\
    ---flags:\
    ---vehicles=10\
    ---peds =12\
    ---\
    ---Iterating through flags yields many ped / vehicle/ object combinations\
    ---\
    ---p9 = 7, but no idea what it does\
    ---\
    ---Entity is an entity to ignore
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param radius number
    ---@param flags integer
    ---@param entity Entity
    ---@param p9 integer
    ---@return integer
    START_SHAPE_TEST_CAPSULE = function(x1, y1, z1, x2, y2, z2, radius, flags, entity, p9) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param radius number
    ---@param flags integer
    ---@param entity Entity
    ---@param p9 Any
    ---@return integer
    START_SHAPE_TEST_SWEPT_SPHERE = function(x1, y1, z1, x2, y2, z2, radius, flags, entity, p9) end,

    ---Returns a ShapeTest handle that can be used with GET_SHAPE_TEST_RESULT.\
    ---\
    ---In its only usage in game scripts its called with flag set to 511, entity to player_ped_id and flag2 set to 7
    ---@param pVec1 Vector3
    ---@param pVec2 Vector3
    ---@param flag integer
    ---@param entity Entity
    ---@param flag2 integer
    ---@return integer
    START_SHAPE_TEST_MOUSE_CURSOR_LOS_PROBE = function(pVec1, pVec2, flag, entity, flag2) end,

    ---Returns the result of a shape test: 0 if the handle is invalid, 1 if the shape test is still pending, or 2 if the shape test has completed, and the handle should be invalidated.\
    ---\
    ---When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.
    ---@param shapeTestHandle integer
    ---@param hit BOOL
    ---@param endCoords Vector3
    ---@param surfaceNormal Vector3
    ---@param entityHit Entity
    ---@return integer
    ---@return BOOL
    ---@return Entity
    GET_SHAPE_TEST_RESULT = function(shapeTestHandle, hit, endCoords, surfaceNormal, entityHit) end,

    ---Returns the result of a shape test, also returning the material of any touched surface.\
    ---\
    ---When used with an asynchronous shape test, this native should be looped until returning 0 or 2, after which the handle is invalidated.\
    ---\
    ---Unless the return value is 2, the other return values are undefined.
    ---@param shapeTestHandle integer
    ---@param hit BOOL
    ---@param endCoords Vector3
    ---@param surfaceNormal Vector3
    ---@param materialHash Hash
    ---@param entityHit Entity
    ---@return integer
    ---@return BOOL
    ---@return Hash
    ---@return Entity
    GET_SHAPE_TEST_RESULT_INCLUDING_MATERIAL = function(shapeTestHandle, hit, endCoords, surfaceNormal, materialHash, entityHit) end,

    ---Invalidates the entity handle passed by removing the fwScriptGuid from the entity. This should be used when receiving an ambient entity from shape testing natives, but can also be used for other natives returning an 'irrelevant' entity handle.
    ---@param entityHit Entity
    RELEASE_SCRIPT_GUID_FROM_ENTITY = function(entityHit) end
}

SOCIALCLUB = {
    ---@return integer
    SC_INBOX_GET_TOTAL_NUM_MESSAGES = function() end,

    ---@param msgIndex integer
    ---@return Hash
    SC_INBOX_GET_MESSAGE_TYPE_AT_INDEX = function(msgIndex) end,

    ---@param msgIndex integer
    ---@return BOOL
    SC_INBOX_GET_MESSAGE_IS_READ_AT_INDEX = function(msgIndex) end,

    ---@param msgIndex integer
    ---@return BOOL
    SC_INBOX_SET_MESSAGE_AS_READ_AT_INDEX = function(msgIndex) end,

    ---@param p0 integer
    ---@param context string
    ---@param out integer
    ---@return BOOL
    ---@return integer
    SC_INBOX_MESSAGE_GET_DATA_INT = function(p0, context, out) end,

    ---@param p0 integer
    ---@param p1 string
    ---@return BOOL
    SC_INBOX_MESSAGE_GET_DATA_BOOL = function(p0, p1) end,

    ---@param p0 integer
    ---@return BOOL
    SC_INBOX_MESSAGE_DO_APPLY = function(p0) end,

    ---@param p0 integer
    ---@return string
    SC_INBOX_MESSAGE_GET_RAW_TYPE_AT_INDEX = function(p0) end,

    ---@param gamerHandle Any*
    SC_INBOX_MESSAGE_PUSH_GAMER_T0_RECIP_LIST = function(gamerHandle) end,

    ---@param data Any*
    SC_INBOX_SEND_UGCSTATUPDATE_TO_RECIP_LIST = function(data) end,

    ---@param p0 integer
    ---@param p1 Any*
    ---@return BOOL
    SC_INBOX_MESSAGE_GET_UGCDATA = function(p0, p1) end,

    ---@param index integer
    ---@param outData Any*
    ---@return BOOL
    SC_INBOX_GET_BOUNTY_DATA_AT_INDEX = function(index, outData) end,

    ---@param offset integer
    ---@param limit integer
    SC_EMAIL_RETRIEVE_EMAILS = function(offset, limit) end,

    ---@return integer
    SC_EMAIL_GET_RETRIEVAL_STATUS = function() end,

    ---@return integer
    SC_EMAIL_GET_NUM_RETRIEVED_EMAILS = function() end,

    ---@param p0 integer
    ---@param p1 Any*
    ---@return BOOL
    SC_EMAIL_GET_EMAIL_AT_INDEX = function(p0, p1) end,

    ---@param index integer
    ---@param type Hash
    _SC_EMAIL_MARKETING_EMAIL_OPENED = function(index, type) end,

    ---@param p0 Any*
    ---@param p1 Any
    SC_EMAIL_DELETE_EMAILS = function(p0, p1) end,

    ---@param gamerHandle Any*
    SC_EMAIL_MESSAGE_PUSH_GAMER_TO_RECIP_LIST = function(gamerHandle) end,

    SC_EMAIL_MESSAGE_CLEAR_RECIP_LIST = function() end,

    ---@param p0 string
    SC_EMAIL_SEND_EMAIL = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    SC_EMAIL_SET_CURRENT_EMAIL_TAG = function(p0) end,

    ---@param toggle BOOL
    SC_CACHE_NEW_ROCKSTAR_MSGS = function(toggle) end,

    ---@return BOOL
    SC_HAS_NEW_ROCKSTAR_MSG = function() end,

    ---@return string
    SC_GET_NEW_ROCKSTAR_MSG = function() end,

    ---@param attrHash Hash
    ---@param value integer
    ---@return BOOL
    SC_PRESENCE_ATTR_SET_INT = function(attrHash, value) end,

    ---@param attrHash Hash
    ---@param value number
    ---@return BOOL
    ---@deprecated
    SC_PRESENCE_ATTR_SET_FLOAT = function(attrHash, value) end,

    ---@param attrHash Hash
    ---@param value string
    ---@return BOOL
    SC_PRESENCE_ATTR_SET_STRING = function(attrHash, value) end,

    ---@param p0 Any
    ---@param p1 number
    ---@return BOOL
    SC_PRESENCE_SET_ACTIVITY_RATING = function(p0, p1) end,

    ---@param name string
    ---@param value integer
    ---@return BOOL
    ---@return integer
    ---@deprecated
    SC_GAMERDATA_GET_INT = function(name, value) end,

    ---@param name string
    ---@param value number
    ---@return BOOL
    ---@return number
    ---@deprecated
    SC_GAMERDATA_GET_FLOAT = function(name, value) end,

    ---@param name string
    ---@return BOOL
    SC_GAMERDATA_GET_BOOL = function(name) end,

    ---@param value number
    ---@return BOOL
    ---@return number
    ---@deprecated
    SC_GAMERDATA_GET_ACTIVE_XP_BONUS = function(value) end,

    ---Starts a task to check an entered string for profanity on the ROS/Social Club services.\
    ---\
    ---See also: 1753344C770358AE, 82E4A58BABC15AE7.
    ---@param string string
    ---@param token integer
    ---@return BOOL
    ---@return integer
    SC_PROFANITY_CHECK_STRING = function(string, token) end,

    ---@param string string
    ---@param token integer
    ---@return BOOL
    ---@return integer
    SC_PROFANITY_CHECK_STRING_UGC = function(string, token) end,

    ---@param token integer
    ---@return BOOL
    SC_PROFANITY_GET_CHECK_IS_VALID = function(token) end,

    ---@param token integer
    ---@return BOOL
    SC_PROFANITY_GET_CHECK_IS_PENDING = function(token) end,

    ---@param token integer
    ---@return BOOL
    SC_PROFANITY_GET_STRING_PASSED = function(token) end,

    ---@param token integer
    ---@return integer
    SC_PROFANITY_GET_STRING_STATUS = function(token) end,

    ---@param p0 string
    ---@param p1 integer
    ---@return BOOL
    ---@return integer
    SC_LICENSEPLATE_CHECK_STRING = function(p0, p1) end,

    ---@param p0 Any
    ---@return BOOL
    SC_LICENSEPLATE_GET_CHECK_IS_VALID = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    SC_LICENSEPLATE_GET_CHECK_IS_PENDING = function(p0) end,

    ---@param token integer
    ---@return integer
    SC_LICENSEPLATE_GET_COUNT = function(token) end,

    ---@param token integer
    ---@param plateIndex integer
    ---@return string
    SC_LICENSEPLATE_GET_PLATE = function(token, plateIndex) end,

    ---@param token integer
    ---@param plateIndex integer
    ---@return string
    SC_LICENSEPLATE_GET_PLATE_DATA = function(token, plateIndex) end,

    ---@param oldPlateText string
    ---@param newPlateText string
    ---@param plateData Any*
    ---@return BOOL
    SC_LICENSEPLATE_SET_PLATE_DATA = function(oldPlateText, newPlateText, plateData) end,

    ---@param plateText string
    ---@param plateData Any*
    ---@param token integer
    ---@return BOOL
    ---@return integer
    SC_LICENSEPLATE_ADD = function(plateText, plateData, token) end,

    ---@param token integer
    ---@return BOOL
    SC_LICENSEPLATE_GET_ADD_IS_PENDING = function(token) end,

    ---@param token integer
    ---@return integer
    SC_LICENSEPLATE_GET_ADD_STATUS = function(token) end,

    ---@param plateText string
    ---@param token integer
    ---@return BOOL
    ---@return integer
    SC_LICENSEPLATE_ISVALID = function(plateText, token) end,

    ---@param token integer
    ---@return BOOL
    SC_LICENSEPLATE_GET_ISVALID_IS_PENDING = function(token) end,

    ---@param token integer
    ---@return integer
    SC_LICENSEPLATE_GET_ISVALID_STATUS = function(token) end,

    ---@return BOOL
    SC_COMMUNITY_EVENT_IS_ACTIVE = function() end,

    ---@return integer
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EVENT_ID = function() end,

    ---@param p0 string
    ---@param p1 integer
    ---@return BOOL
    ---@return integer
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT = function(p0, p1) end,

    ---@param p0 string
    ---@param p1 number
    ---@return BOOL
    ---@return number
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT = function(p0, p1) end,

    ---@param p0 string
    ---@return BOOL
    ---@deprecated
    SC_COMMUNITY_EVENT_IS_ACTIVE_FOR_TYPE = function(p0) end,

    ---@param p0 string
    ---@return integer
    SC_COMMUNITY_EVENT_GET_EVENT_ID_FOR_TYPE = function(p0) end,

    ---@param p0 string
    ---@param p1 integer
    ---@param p2 string
    ---@return BOOL
    ---@return integer
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT_FOR_TYPE = function(p0, p1, p2) end,

    ---@param p0 string
    ---@param p1 number
    ---@param p2 string
    ---@return BOOL
    ---@return number
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT_FOR_TYPE = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@return BOOL
    ---@deprecated
    SC_COMMUNITY_EVENT_IS_ACTIVE_BY_ID = function(p0) end,

    ---@param p0 integer
    ---@param p1 string
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_INT_BY_ID = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 string
    ---@param p2 number
    ---@return BOOL
    ---@return number
    ---@deprecated
    SC_COMMUNITY_EVENT_GET_EXTRA_DATA_FLOAT_BY_ID = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@return BOOL
    SC_TRANSITION_NEWS_SHOW = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    SC_TRANSITION_NEWS_SHOW_TIMED = function(p0, p1) end,

    ---@return BOOL
    SC_TRANSITION_NEWS_SHOW_NEXT_ITEM = function() end,

    ---@return BOOL
    SC_TRANSITION_NEWS_HAS_EXTRA_DATA_TU = function() end,

    ---@param p0 string
    ---@param p1 integer
    ---@return BOOL
    ---@return integer
    SC_TRANSITION_NEWS_GET_EXTRA_DATA_INT_TU = function(p0, p1) end,

    SC_TRANSITION_NEWS_END = function() end,

    ---@param p0 Any
    ---@return BOOL
    SC_PAUSE_NEWS_INIT_STARTER_PACK = function(p0) end,

    ---Fills some 0x30 sized struct
    ---@param p0 Any
    ---@return BOOL
    SC_PAUSE_NEWS_GET_PENDING_STORY = function(p0) end,

    SC_PAUSE_NEWS_SHUTDOWN = function() end,

    ---Returns the nickname of the logged-in Rockstar Social Club account.
    ---@return string
    SC_ACCOUNT_INFO_GET_NICKNAME = function() end,

    ---@param p0 integer
    ---@return BOOL
    ---@return integer
    SC_ACHIEVEMENT_INFO_STATUS = function(p0) end,

    ---Same as HAS_ACHIEVEMENT_BEEN_PASSED
    ---@param achievementId integer
    ---@return BOOL
    SC_HAS_ACHIEVEMENT_BEEN_PASSED = function(achievementId) end
}

STATS = {
    ---Example:\
    ---\
    ---for (v_2 = 0; v_2 <= 4; v_2 += 1) {\
    ---    STATS::STAT_CLEAR_SLOT_FOR_RELOAD(v_2);\
    ---}
    ---@param statSlot integer
    ---@return BOOL
    STAT_CLEAR_SLOT_FOR_RELOAD = function(statSlot) end,

    ---@param statSlot integer
    ---@return BOOL
    STAT_LOAD = function(statSlot) end,

    ---@param p0 integer
    ---@param p1 BOOL
    ---@param p2 integer
    ---@param p3 BOOL
    ---@return BOOL
    STAT_SAVE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    STAT_SET_OPEN_SAVETYPE_IN_JOB = function(p0) end,

    ---@param statSlot integer
    ---@return BOOL
    STAT_LOAD_PENDING = function(statSlot) end,

    ---@return BOOL
    STAT_SAVE_PENDING = function() end,

    ---@return BOOL
    STAT_SAVE_PENDING_OR_REQUESTED = function() end,

    ---p0 is characterSlot? seems range from 0 to 2
    ---@param p0 integer
    ---@return BOOL
    STAT_DELETE_SLOT = function(p0) end,

    ---@param statSlot integer
    ---@return BOOL
    STAT_SLOT_IS_LOADED = function(statSlot) end,

    ---@param p0 integer
    ---@return BOOL
    STAT_CLOUD_SLOT_LOAD_FAILED = function(p0) end,

    ---@param p0 Any
    ---@return integer
    STAT_CLOUD_SLOT_LOAD_FAILED_CODE = function(p0) end,

    ---@param toggle BOOL
    STAT_SET_BLOCK_SAVES = function(toggle) end,

    ---@return BOOL
    STAT_GET_BLOCK_SAVES = function() end,

    ---@param p0 Any
    ---@return BOOL
    STAT_CLOUD_SLOT_SAVE_FAILED = function(p0) end,

    ---@param p0 Any
    STAT_CLEAR_PENDING_SAVES = function(p0) end,

    ---@return BOOL
    STAT_LOAD_DIRTY_READ_DETECTED = function() end,

    STAT_CLEAR_DIRTY_READ_DETECTED = function() end,

    ---@return BOOL
    STAT_GET_LOAD_SAFE_TO_PROGRESS_TO_MP_FROM_SP = function() end,

    ---Returns stat hash based on dataType, statIndex/statId and characterSlot. Related to CStatsMpCharacterMappingData
    ---@param dataType integer
    ---@param statIndex integer
    ---@param charSlot integer
    ---@return Hash
    _GET_STAT_HASH_FOR_CHARACTER_STAT = function(dataType, statIndex, charSlot) end,

    ---Example:\
    --- STATS::STAT_SET_INT(MISC::GET_HASH_KEY("MPPLY_KILLS_PLAYERS"), 1337, true);
    ---@param statName Hash
    ---@param value integer
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_INT = function(statName, value, save) end,

    ---Example:\
    --- STATS::STAT_SET_FLOAT(MISC::GET_HASH_KEY("MP0_WEAPON_ACCURACY"), 66.6f, true);
    ---@param statName Hash
    ---@param value number
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_FLOAT = function(statName, value, save) end,

    ---Example:\
    --- STATS::STAT_SET_BOOL(MISC::GET_HASH_KEY("MPPLY_MELEECHLENGECOMPLETED"), trur, true);
    ---@param statName Hash
    ---@param value BOOL
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_BOOL = function(statName, value, save) end,

    ---The following values have been found in the decompiled scripts:\
    ---"RC_ABI1"\
    ---"RC_ABI2"\
    ---"RC_BA1"\
    ---"RC_BA2"\
    ---"RC_BA3"\
    ---"RC_BA3A"\
    ---"RC_BA3C"\
    ---"RC_BA4"\
    ---"RC_DRE1"\
    ---"RC_EPS1"\
    ---"RC_EPS2"\
    ---"RC_EPS3"\
    ---"RC_EPS4"\
    ---"RC_EPS5"\
    ---"RC_EPS6"\
    ---"RC_EPS7"\
    ---"RC_EPS8"\
    ---"RC_EXT1"\
    ---"RC_EXT2"\
    ---"RC_EXT3"\
    ---"RC_EXT4"\
    ---"RC_FAN1"\
    ---"RC_FAN2"\
    ---"RC_FAN3"\
    ---"RC_HAO1"\
    ---"RC_HUN1"\
    ---"RC_HUN2"\
    ---"RC_JOS1"\
    ---"RC_JOS2"\
    ---"RC_JOS3"\
    ---"RC_JOS4"\
    ---"RC_MAU1"\
    ---"RC_MIN1"\
    ---"RC_MIN2"\
    ---"RC_MIN3"\
    ---"RC_MRS1"\
    ---"RC_MRS2"\
    ---"RC_NI1"\
    ---"RC_NI1A"\
    ---"RC_NI1B"\
    ---"RC_NI1C"\
    ---"RC_NI1D"\
    ---"RC_NI2"\
    ---"RC_NI3"\
    ---"RC_OME1"\
    ---"RC_OME2"\
    ---"RC_PA1"\
    ---"RC_PA2"\
    ---"RC_PA3"\
    ---"RC_PA3A"\
    ---"RC_PA3B"\
    ---"RC_PA4"\
    ---"RC_RAM1"\
    ---"RC_RAM2"\
    ---"RC_RAM3"\
    ---"RC_RAM4"\
    ---"RC_RAM5"\
    ---"RC_SAS1"\
    ---"RC_TON1"\
    ---"RC_TON2"\
    ---"RC_TON3"\
    ---"RC_TON4"\
    ---"RC_TON5"
    ---@param statName Hash
    ---@param value string
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_GXT_LABEL = function(statName, value, save) end,

    ---'value' is a structure to a structure, 'numFields' is how many fields there are in said structure (usually 7).\
    ---\
    ---The structure looks like this:\
    ---\
    ---int year\
    ---int month\
    ---int day\
    ---int hour\
    ---int minute\
    ---int second\
    ---int millisecond\
    ---\
    ---The decompiled scripts use TIME::GET_POSIX_TIME to fill this structure.
    ---@param statName Hash
    ---@param value Any*
    ---@param numFields integer
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_DATE = function(statName, value, numFields, save) end,

    ---@param statName Hash
    ---@param value string
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_STRING = function(statName, value, save) end,

    ---@param statName Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_POS = function(statName, x, y, z, save) end,

    ---@param statName Hash
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_MASKED_INT = function(statName, p1, p2, p3, save) end,

    ---@param statName Hash
    ---@param value string
    ---@param save BOOL
    ---@return BOOL
    STAT_SET_USER_ID = function(statName, value, save) end,

    ---p1 always true.
    ---@param statName Hash
    ---@param p1 BOOL
    ---@return BOOL
    STAT_SET_CURRENT_POSIX_TIME = function(statName, p1) end,

    ---p2 appears to always be -1\
    ---
    ---@param statHash Hash
    ---@param outValue integer
    ---@param p2 integer
    ---@return BOOL
    ---@return integer
    STAT_GET_INT = function(statHash, outValue, p2) end,

    ---@param statHash Hash
    ---@param outValue number
    ---@param p2 Any
    ---@return BOOL
    ---@return number
    STAT_GET_FLOAT = function(statHash, outValue, p2) end,

    ---@param statHash Hash
    ---@param outValue BOOL
    ---@param p2 Any
    ---@return BOOL
    ---@return BOOL
    STAT_GET_BOOL = function(statHash, outValue, p2) end,

    ---p3 is probably characterSlot or BOOL save, always -1
    ---@param statHash Hash
    ---@param outValue Any*
    ---@param numFields integer
    ---@param p3 Any
    ---@return BOOL
    STAT_GET_DATE = function(statHash, outValue, numFields, p3) end,

    ---p1 is always -1 in the script files
    ---@param statHash Hash
    ---@param p1 integer
    ---@return string
    STAT_GET_STRING = function(statHash, p1) end,

    ---p3 is probably characterSlot or BOOL save, always -1
    ---@param statName Hash
    ---@param outX number
    ---@param outY number
    ---@param outZ number
    ---@param p4 Any
    ---@return BOOL
    ---@return number
    ---@return number
    ---@return number
    STAT_GET_POS = function(statName, outX, outY, outZ, p4) end,

    ---p4 is probably characterSlot or BOOL save
    ---@param statHash Hash
    ---@param outValue integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 Any
    ---@return BOOL
    ---@return integer
    STAT_GET_MASKED_INT = function(statHash, outValue, p2, p3, p4) end,

    ---Returns the rockstar ID (user id) value of a given stat. Returns "STAT_UNKNOWN" if the statHash is invalid or the stat has no userId
    ---@param statHash Hash
    ---@return string
    STAT_GET_USER_ID = function(statHash) end,

    ---@param statName Hash
    ---@return string
    STAT_GET_LICENSE_PLATE = function(statName) end,

    ---@param statName Hash
    ---@param str string
    ---@return BOOL
    STAT_SET_LICENSE_PLATE = function(statName, str) end,

    ---@param statName Hash
    ---@param value number
    STAT_INCREMENT = function(statName, value) end,

    ---@return BOOL
    STAT_COMMUNITY_START_SYNCH = function() end,

    ---@return BOOL
    STAT_COMMUNITY_SYNCH_IS_PENDING = function() end,

    ---@param statName Hash
    ---@param p1 integer
    ---@param outValue number
    ---@return BOOL
    ---@return number
    STAT_COMMUNITY_GET_HISTORY = function(statName, p1, outValue) end,

    ---p0 seems to range from 0 to 7
    ---@param p0 integer
    STAT_RESET_ALL_ONLINE_CHARACTER_STATS = function(p0) end,

    ---p0 seems to range from 0 to 7
    ---@param p0 integer
    STAT_LOCAL_RESET_ALL_ONLINE_CHARACTER_STATS = function(p0) end,

    ---@param statName Hash
    ---@return integer
    STAT_GET_NUMBER_OF_DAYS = function(statName) end,

    ---@param statName Hash
    ---@return integer
    STAT_GET_NUMBER_OF_HOURS = function(statName) end,

    ---@param statName Hash
    ---@return integer
    STAT_GET_NUMBER_OF_MINUTES = function(statName) end,

    ---@param statName Hash
    ---@return integer
    STAT_GET_NUMBER_OF_SECONDS = function(statName) end,

    ---Does not take effect immediately, unfortunately.\
    ---\
    ---profileSetting seems to only be 936, 937 and 938 in scripts
    ---@param profileSetting integer
    ---@param value integer
    STAT_SET_PROFILE_SETTING_VALUE = function(profileSetting, value) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 Any
    STATS_COMPLETED_CHARACTER_CREATION = function(p0) end,

    ---Needs more research. Possibly used to calculate the "mask" when calling "STAT_SET_MASKED_INT"?
    ---@param p0 integer
    ---@return integer
    PACKED_STAT_GET_INT_STAT_INDEX = function(p0) end,

    ---@param index integer
    ---@param spStat BOOL
    ---@param charStat BOOL
    ---@param character integer
    ---@return Hash
    GET_PACKED_INT_STAT_KEY = function(index, spStat, charStat, character) end,

    ---@param index integer
    ---@param spStat BOOL
    ---@param charStat BOOL
    ---@param character integer
    ---@return Hash
    GET_PACKED_TU_INT_STAT_KEY = function(index, spStat, charStat, character) end,

    ---Needs more research. Gets the stat name of a masked int?\
    ---\
    ---section - values used in the decompiled scripts:\
    ---"_NGPSTAT_INT"\
    ---"_MP_NGPSTAT_INT"\
    ---"_MP_LRPSTAT_INT"\
    ---"_MP_APAPSTAT_INT"\
    ---"_MP_LR2PSTAT_INT"\
    ---"_MP_BIKEPSTAT_INT"\
    ---"_MP_IMPEXPPSTAT_INT"\
    ---"_MP_GUNRPSTAT_INT"\
    ---"_NGDLCPSTAT_INT"\
    ---"_MP_NGDLCPSTAT_INT"\
    ---"_DLCSMUGCHARPSTAT_INT"\
    ---"_GANGOPSPSTAT_INT"\
    ---"_BUSINESSBATPSTAT_INT"\
    ---"_ARENAWARSPSTAT_INT"\
    ---"_CASINOPSTAT_INT"\
    ---"_CASINOHSTPSTAT_INT"
    ---@param index integer
    ---@param spStat BOOL
    ---@param charStat BOOL
    ---@param character integer
    ---@param section string
    ---@return Hash
    GET_PACKED_NG_INT_STAT_KEY = function(index, spStat, charStat, character, section) end,

    ---@param index integer
    ---@param characterSlot integer
    ---@return BOOL
    GET_PACKED_STAT_BOOL_CODE = function(index, characterSlot) end,

    ---@param index integer
    ---@param characterSlot integer
    ---@return integer
    GET_PACKED_STAT_INT_CODE = function(index, characterSlot) end,

    ---@param index integer
    ---@param value BOOL
    ---@param characterSlot integer
    SET_PACKED_STAT_BOOL_CODE = function(index, value, characterSlot) end,

    ---@param index integer
    ---@param value integer
    ---@param characterSlot integer
    SET_PACKED_STAT_INT_CODE = function(index, value, characterSlot) end,

    ---@param action string
    ---@param value integer
    PLAYSTATS_BACKGROUND_SCRIPT_ACTION = function(action, value) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param action string
    ---@param p4 BOOL
    ---@param p5 integer
    _PLAYSTATS_FLOW_LOW = function(posX, posY, posZ, action, p4, p5) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param action string
    ---@param p4 BOOL
    ---@param p5 integer
    _PLAYSTATS_FLOW_MEDIUM = function(posX, posY, posZ, action, p4, p5) end,

    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param action string
    ---@param p4 BOOL
    ---@param p5 integer
    _PLAYSTATS_FLOW_HIGH = function(posX, posY, posZ, action, p4, p5) end,

    ---@param p0 string
    PLAYSTATS_NPC_INVITE = function(p0) end,

    ---@param amount integer
    ---@param type Hash
    ---@param category Hash
    PLAYSTATS_AWARD_XP = function(amount, type, category) end,

    ---@param rank integer
    PLAYSTATS_RANK_UP = function(rank) end,

    PLAYSTATS_STARTED_SESSION_IN_OFFLINEMODE = function() end,

    ---@param p0 integer
    ---@param activityId integer
    ---@param p2 Any
    PLAYSTATS_ACTIVITY_DONE = function(p0, activityId, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_LEAVE_JOB_CHAIN = function(p0, p1, p2, p3, p4) end,

    ---@param p0 string
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 BOOL
    PLAYSTATS_MISSION_STARTED = function(p0, p1, p2, p3) end,

    ---@param p0 string
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 BOOL
    PLAYSTATS_MISSION_OVER = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 string
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_MISSION_CHECKPOINT = function(p0, p1, p2, p3) end,

    ---@param name string
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_RANDOM_MISSION_DONE = function(name, p1, p2, p3) end,

    ---@param amount integer
    ---@param act integer
    ---@param player Player
    ---@param cm number
    PLAYSTATS_ROS_BET = function(amount, act, player, cm) end,

    ---@param p0 Vehicle
    ---@param p1 Any
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 Any
    PLAYSTATS_RACE_CHECKPOINT = function(p0, p1, p2, p3, p4) end,

    ---@param playerAccountId integer
    ---@param posixTime integer
    ---@return BOOL
    ---@return integer
    ---@return integer
    PLAYSTATS_CREATE_MATCH_HISTORY_ID_2 = function(playerAccountId, posixTime) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    PLAYSTATS_MATCH_STARTED = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_SHOP_ITEM = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    PLAYSTATS_CRATE_DROP_MISSION_DONE = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    PLAYSTATS_CRATE_CREATED = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_HOLD_UP_MISSION_DONE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_IMPORT_EXPORT_MISSION_DONE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_RACE_TO_POINT_MISSION_DONE = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    PLAYSTATS_ACQUIRED_HIDDEN_PACKAGE = function(p0) end,

    ---@param scaleformHash Hash
    ---@param p1 integer
    PLAYSTATS_WEBSITE_VISITED = function(scaleformHash, p1) end,

    ---@param p0 integer
    ---@param p1 BOOL
    PLAYSTATS_FRIEND_ACTIVITY = function(p0, p1) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param totalTimeMs integer
    ---@param p1 integer
    ---@param p2 BOOL
    PLAYSTATS_ODDJOB_DONE = function(totalTimeMs, p1, p2) end,

    ---@param p0 Ped
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    PLAYSTATS_PROP_CHANGE = function(p0, p1, p2, p3) end,

    ---@param p0 Ped
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_CLOTH_CHANGE = function(p0, p1, p2, p3, p4) end,

    ---This is a typo made by R*. It's supposed to be called PLAYSTATS_WEAPON_MOD_CHANGE.
    ---@param weaponHash Hash
    ---@param componentHashTo Hash
    ---@param componentHashFrom Hash
    PLAYSTATS_WEAPON_MODE_CHANGE = function(weaponHash, componentHashTo, componentHashFrom) end,

    ---@param cheat string
    PLAYSTATS_CHEAT_APPLIED = function(cheat) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@param p3 Any*
    PLAYSTATS_JOB_ACTIVITY_END = function(p0, p1, p2, p3) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@param p3 Any*
    PLAYSTATS_JOB_BEND = function(p0, p1, p2, p3) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@param p3 Any*
    PLAYSTATS_JOB_LTS_END = function(p0, p1, p2, p3) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@param p3 Any*
    PLAYSTATS_JOB_LTS_ROUND_END = function(p0, p1, p2, p3) end,

    ---@param element integer
    ---@param item string
    PLAYSTATS_QUICKFIX_TOOL = function(element, item) end,

    ---@param msStoodIdle integer
    PLAYSTATS_IDLE_KICK = function(msStoodIdle) end,

    ---@param joinType integer
    PLAYSTATS_SET_JOIN_TYPE = function(joinType) end,

    ---@param hash Hash
    ---@param p1 integer
    PLAYSTATS_HEIST_SAVE_CHEAT = function(hash, p1) end,

    ---@param p0 Any*
    PLAYSTATS_APPEND_DIRECTOR_METRIC = function(p0) end,

    ---@param id integer
    PLAYSTATS_AWARD_BAD_SPORT = function(id) end,

    ---@param modelHash Hash
    PLAYSTATS_PEGASUS_AS_PERSONAL_AIRCRAFT = function(modelHash) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    _PLAYSTATS_SHOPMENU_NAV = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_CHALLENGES = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_VEHICLETARGET = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_URBANWARFARE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_CHECKPOINTCOLLECTION = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_ATOB = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_PENNEDIN = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_PASSTHEPARCEL = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_HOTPROPERTY = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_DEADDROP = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_KINGOFTHECASTLE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_CRIMINALDAMAGE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_COMPETITIVEURBANWARFARE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_FM_EVENT_HUNTBEAST = function(p0) end,

    ---@param data Any*
    PLAYSTATS_PIMENU_HIDE_OPTIONS = function(data) end,

    ---Known text types: NAME_YACHT, NAME_ORG_OFFICE
    ---@param isBoss BOOL
    ---@param bossType integer
    ---@param bossId1 integer
    ---@param bossId2 integer
    ---@param textType integer
    ---@param textString string
    ---@param textSource integer
    _PLAYSTATS_NAMED_USER_CONTENT = function(isBoss, bossType, bossId1, bossId2, textType, textString, textSource) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@return integer
    LEADERBOARDS_GET_NUMBER_OF_COLUMNS = function(p0, p1) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@return integer
    LEADERBOARDS_GET_COLUMN_ID = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 Any
    ---@param p2 Any
    ---@return integer
    LEADERBOARDS_GET_COLUMN_TYPE = function(p0, p1, p2) end,

    ---@return integer
    LEADERBOARDS_READ_CLEAR_ALL = function() end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return integer
    LEADERBOARDS_READ_CLEAR = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    LEADERBOARDS_READ_PENDING = function(p0, p1, p2) end,

    ---@return BOOL
    LEADERBOARDS_READ_ANY_PENDING = function() end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    LEADERBOARDS_READ_SUCCESSFUL = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any
    ---@param p3 BOOL
    ---@param p4 Any
    ---@param p5 Any
    ---@return BOOL
    LEADERBOARDS2_READ_FRIENDS_BY_ROW = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    LEADERBOARDS2_READ_BY_HANDLE = function(p0, p1) end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    LEADERBOARDS2_READ_BY_RANK = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 Any*
    ---@return BOOL
    LEADERBOARDS2_READ_BY_RADIUS = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 Any
    ---@param p2 Any
    ---@return BOOL
    LEADERBOARDS2_READ_BY_SCORE_INT = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 number
    ---@param p2 Any
    ---@return BOOL
    LEADERBOARDS2_READ_BY_SCORE_FLOAT = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@param p2 Any*
    ---@return BOOL
    LEADERBOARDS2_READ_RANK_PREDICTION = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@param gamerHandleCsv string
    ---@param platformName string
    ---@return BOOL
    LEADERBOARDS2_READ_BY_PLAFORM = function(p0, gamerHandleCsv, platformName) end,

    ---@param p0 Any*
    ---@return BOOL
    LEADERBOARDS2_READ_GET_ROW_DATA_START = function(p0) end,

    LEADERBOARDS2_READ_GET_ROW_DATA_END = function() end,

    ---@param p0 Any
    ---@param p1 Any*
    ---@return BOOL
    LEADERBOARDS2_READ_GET_ROW_DATA_INFO = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    LEADERBOARDS2_READ_GET_ROW_DATA_INT = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return number
    LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT = function(p0, p1) end,

    ---@param p0 Any*
    ---@return BOOL
    LEADERBOARDS2_WRITE_DATA = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 number
    LEADERBOARDS_WRITE_ADD_COLUMN = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    LEADERBOARDS_WRITE_ADD_COLUMN_LONG = function(p0, p1, p2) end,

    ---@param p0 Any*
    ---@return BOOL
    LEADERBOARDS_CACHE_DATA_ROW = function(p0) end,

    LEADERBOARDS_CLEAR_CACHE_DATA = function() end,

    ---@param p0 Any
    LEADERBOARDS_CLEAR_CACHE_DATA_ID = function(p0) end,

    ---@param p0 Any
    ---@return BOOL
    LEADERBOARDS_GET_CACHE_EXISTS = function(p0) end,

    ---@param p0 Any
    ---@return integer
    LEADERBOARDS_GET_CACHE_TIME = function(p0) end,

    ---@param p0 Any
    ---@return integer
    LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any*
    ---@return BOOL
    LEADERBOARDS_GET_CACHE_DATA_ROW = function(p0, p1, p2) end,

    ---@param statHash Hash
    ---@param value integer
    ---@param p2 integer
    PRESENCE_EVENT_UPDATESTAT_INT = function(statHash, value, p2) end,

    ---@param statHash Hash
    ---@param value number
    ---@param p2 integer
    PRESENCE_EVENT_UPDATESTAT_FLOAT = function(statHash, value, p2) end,

    ---@param statHash Hash
    ---@param value integer
    ---@param p2 integer
    ---@param string string
    PRESENCE_EVENT_UPDATESTAT_INT_WITH_STRING = function(statHash, value, p2, string) end,

    ---@return BOOL
    GET_PLAYER_HAS_DRIVEN_ALL_VEHICLES = function() end,

    SET_HAS_POSTED_ALL_VEHICLES_DRIVEN = function() end,

    SET_PROFILE_SETTING_PROLOGUE_COMPLETE = function() end,

    ---Sets profile setting 939
    SET_PROFILE_SETTING_SP_CHOP_MISSION_COMPLETE = function() end,

    ---Sets profile setting 933
    ---@param value integer
    SET_PROFILE_SETTING_CREATOR_RACES_DONE = function(value) end,

    ---Sets profile setting 934
    ---@param value integer
    SET_PROFILE_SETTING_CREATOR_DM_DONE = function(value) end,

    ---Sets profile setting 935
    ---@param value integer
    SET_PROFILE_SETTING_CREATOR_CTF_DONE = function(value) end,

    ---@param p0 Any
    ---@param characterSlot integer
    SET_JOB_ACTIVITY_ID_STARTED = function(p0, characterSlot) end,

    ---@param p0 Any
    ---@param characterSlot integer
    SET_FREEMODE_PROLOGUE_DONE = function(p0, characterSlot) end,

    ---Sets profile setting 940 and 941
    ---@param profileSetting integer
    ---@param settingValue integer
    SET_FREEMODE_STRAND_PROGRESSION_STATUS = function(profileSetting, settingValue) end,

    ---@param p0 Any
    ---@param p1 number
    STAT_NETWORK_INCREMENT_ON_SUICIDE = function(p0, p1) end,

    STAT_SET_CHEAT_IS_ACTIVE = function() end,

    ---@param p0 Any*
    ---@param p1 Any*
    ---@return BOOL
    LEADERBOARDS2_WRITE_DATA_FOR_EVENT_TYPE = function(p0, p1) end,

    FORCE_CLOUD_MP_STATS_DOWNLOAD_AND_OVERWRITE_LOCAL_SAVE = function() end,

    STAT_MIGRATE_CLEAR_FOR_RESTART = function() end,

    ---platformName must be one of the following: ps3, xbox360, ps4, xboxone
    ---@param platformName string
    ---@return BOOL
    STAT_MIGRATE_SAVEGAME_START = function(platformName) end,

    ---@return integer
    STAT_MIGRATE_SAVEGAME_GET_STATUS = function() end,

    ---@return BOOL
    STAT_MIGRATE_CHECK_ALREADY_DONE = function() end,

    ---@return BOOL
    STAT_MIGRATE_CHECK_START = function() end,

    ---@param p0 integer
    ---@return integer
    STAT_MIGRATE_CHECK_GET_IS_PLATFORM_AVAILABLE = function(p0) end,

    ---@param p0 integer
    ---@param p1 Any*
    ---@return integer
    STAT_MIGRATE_CHECK_GET_PLATFORM_STATUS = function(p0, p1) end,

    ---@param data Any*
    ---@return integer
    STAT_GET_SAVE_MIGRATION_STATUS = function(data) end,

    ---@return BOOL
    STAT_SAVE_MIGRATION_CANCEL_PENDING_OPERATION = function() end,

    ---@return integer
    STAT_GET_CANCEL_SAVE_MIGRATION_STATUS = function() end,

    ---@param contentId Hash
    ---@param srcPlatform string
    ---@param srcGamerHandle string
    ---@return BOOL
    STAT_SAVE_MIGRATION_CONSUME_CONTENT = function(contentId, srcPlatform, srcGamerHandle) end,

    ---@param p0 integer
    ---@return integer
    ---@return integer
    STAT_GET_SAVE_MIGRATION_CONSUME_CONTENT_STATUS = function(p0) end,

    STAT_ENABLE_STATS_TRACKING = function() end,

    ---Prevents updates to CStatsMgr (e.g., STAT_SET_* natives)
    STAT_DISABLE_STATS_TRACKING = function() end,

    ---@return BOOL
    STAT_IS_STATS_TRACKING_ENABLED = function() end,

    ---enum StatTrackingType\
    ---{\
    ---	LongestWheelie = 1,\
    ---	LongestStoppie = 2,\
    ---	NoCrashes = 3,\
    ---	HighestSpeed = 4,\
    ---	_MostFlips = 5,\
    ---	_LongestSpin = 6,\
    ---	_HighestJumpReached = 7,\
    ---	LongestJump = 8,\
    ---	_NearMissesNoCrash = 9,\
    ---	LongestFallSurvived = 10,\
    ---	LowestParachute = 11,\
    ---	ReverseDriving = 12,\
    ---	LongestFreefall = 13,\
    ---	VehiclesStolen = 14,\
    ---	_SomeCFireEventCount = 15,\
    ---	_Unk16 = 16,\
    ---	_LowFlyingTime = 17,\
    ---	LowFlying = 18,\
    ---	_InvertedFlyingTime = 19,\
    ---	InvertedFlying = 20,\
    ---	_PlaneSpinCount = 21,\
    ---	MeleeKills = 22, // Players\
    ---	_LongestSniperKill = 23,\
    ---	SniperSkills = 24, // Players\
    ---	DrivebyKills = 25, // Players\
    ---	HeadshotKills = 26, // Players\
    ---	LongestBail = 27,\
    ---	_TotalRammedByCar = 28,\
    ---	NearMissesPrecise = 29,\
    ---	_FreefallTime = 30,\
    ---	Unk31 = 31,\
    ---}\
    ---\
    ---enum StatTrackingValueType\
    ---{\
    ---	Total,\
    ---	Max,\
    ---	Min\
    ---}
    ---@param statType integer
    ---@param valueType integer
    ---@return BOOL
    STAT_START_RECORD_STAT = function(statType, valueType) end,

    ---@return BOOL
    STAT_STOP_RECORD_STAT = function() end,

    ---@param value number
    ---@return BOOL
    ---@return number
    STAT_GET_RECORDED_VALUE = function(value) end,

    ---@return BOOL
    STAT_IS_RECORDING_STAT = function() end,

    ---Perform the most near misses with other vehicles in a land vehicle without crashing
    ---@return integer
    STAT_GET_CURRENT_NEAR_MISS_NOCRASH_PRECISE = function() end,

    ---Perform the longest wheelie on a motorcycle
    ---@return number
    STAT_GET_CURRENT_REAR_WHEEL_DISTANCE = function() end,

    ---Perform the longest stoppie on a motorcycle
    ---@return number
    STAT_GET_CURRENT_FRONT_WHEEL_DISTANCE = function() end,

    ---Perform the longest jump in a land vehicle
    ---@return number
    STAT_GET_CURRENT_JUMP_DISTANCE = function() end,

    ---Drive the furthest distance in a land vehicle without crashing
    ---@return number
    STAT_GET_CURRENT_DRIVE_NOCRASH_DISTANCE = function() end,

    ---Achieve the highest speed in a land vehicle
    ---@return number
    STAT_GET_CURRENT_SPEED = function() end,

    ---Reverse the longest distance without crashing
    ---@return number
    STAT_GET_CURRENT_DRIVING_REVERSE_DISTANCE = function() end,

    ---Fall the longest distance with a parachute before opening it
    ---@return number
    STAT_GET_CURRENT_SKYDIVING_DISTANCE = function() end,

    ---Fly low to the ground for the longest distance
    ---@return number
    STAT_GET_CHALLENGE_FLYING_DIST = function() end,

    ---@param outValue number
    ---@return BOOL
    ---@return number
    STAT_GET_FLYING_ALTITUDE = function(outValue) end,

    ---Or non-flyable area
    ---@return BOOL
    STAT_IS_PLAYER_VEHICLE_ABOVE_OCEAN = function() end,

    ---Travel the furthest distance when bailing from a vehicle
    ---@return number
    STAT_GET_VEHICLE_BAIL_DISTANCE = function() end,

    ---This function is hard-coded to always return 1.
    ---@return BOOL
    STAT_ROLLBACK_SAVE_MIGRATION = function() end,

    ---Sets profile setting 866
    ---@param value integer
    SET_HAS_SPECIALEDITION_CONTENT = function(value) end,

    ---Sets profile setting 501
    ---@param transactionId integer
    SET_SAVE_MIGRATION_TRANSACTION_ID_WARNING = function(transactionId) end,

    ---@param characterSlot integer
    ---@param p1 Any
    ---@param p2 Any
    GET_BOSS_GOON_UUID = function(characterSlot, p1, p2) end,

    ---@param p0 Any
    PLAYSTATS_BW_BOSSONBOSSDEATHMATCH = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_YATCHATTACK = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_HUNT_THE_BOSS = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_SIGHTSEER = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_ASSAULT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_BELLY_OF_THE_BEAST = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_HEAD_HUNTER = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_FRAGILE_GOODS = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BW_AIR_FREIGHT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_CAR_JACKING = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_SMASH_AND_GRAB = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_PROTECTION_RACKET = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_MOST_WANTED = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_FINDERS_KEEPERS = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_POINT_TO_POINT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_CASHING = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BC_SALVAGE = function(p0) end,

    ---@param amount integer
    PLAYSTATS_SPENT_PI_CUSTOM_LOADOUT = function(amount) end,

    ---@param data Any*
    PLAYSTATS_BUY_CONTRABAND_MISSION = function(data) end,

    ---@param data Any*
    PLAYSTATS_SELL_CONTRABAND_MISSION = function(data) end,

    ---@param data Any*
    PLAYSTATS_DEFEND_CONTRABAND_MISSION = function(data) end,

    ---@param data Any*
    PLAYSTATS_RECOVER_CONTRABAND_MISSION = function(data) end,

    ---@param p0 Any
    PLAYSTATS_HIT_CONTRABAND_DESTROY_LIMIT = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    START_BEING_BOSS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    START_BEING_GOON = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    END_BEING_BOSS = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    END_BEING_GOON = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    HIRED_LIMO = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param vehicleHash Hash
    ORDER_BOSS_VEHICLE = function(p0, p1, vehicleHash) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    CHANGE_UNIFORM = function(p0, p1, p2) end,

    ---@param p0 Any
    CHANGE_GOON_LOOKING_FOR_WORK = function(p0) end,

    ---@param p0 Any
    SEND_METRIC_GHOSTING_TO_PLAYER = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    SEND_METRIC_VIP_POACH = function(p0, p1, p2) end,

    ---@param p0 Any
    SEND_METRIC_PUNISH_BODYGUARD = function(p0) end,

    ---Allows CEventNetworkStuntPerformed to be triggered.
    PLAYSTATS_START_TRACKING_STUNTS = function() end,

    ---Disallows CEventNetworkStuntPerformed to be triggered.
    PLAYSTATS_STOP_TRACKING_STUNTS = function() end,

    ---@param p0 Any
    PLAYSTATS_MISSION_ENDED = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_IMPEXP_MISSION_ENDED = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param role integer
    ---@param p5 integer
    ---@param p6 Any
    PLAYSTATS_CHANGE_MC_ROLE = function(p0, p1, p2, p3, role, p5, p6) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_CHANGE_MC_OUTFIT = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_SWITCH_MC_EMBLEM = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_MC_REQUEST_BIKE = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_MC_KILLED_RIVAL_MC_MEMBER = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_ABANDONED_MC = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    PLAYSTATS_EARNED_MC_POINTS = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    PLAYSTATS_MC_FORMATION_ENDS = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    PLAYSTATS_MC_CLUBHOUSE_ACTIVITY = function(p0, p1, p2, p3, p4, p5, p6, p7) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    PLAYSTATS_RIVAL_BEHAVIOR = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    PLAYSTATS_COPY_RANK_INTO_NEW_SLOT = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param data Any*
    PLAYSTATS_DUPE_DETECTED = function(data) end,

    ---@param p0 integer
    PLAYSTATS_BAN_ALERT = function(p0) end,

    ---@param data Any*
    PLAYSTATS_GUNRUNNING_MISSION_ENDED = function(data) end,

    ---@param p0 Any
    PLAYSTATS_GUNRUNNING_RND = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_BUSINESS_BATTLE_ENDED = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_WAREHOUSE_MISSION_ENDED = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_NIGHTCLUB_MISSION_ENDED = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    PLAYSTATS_DJ_USAGE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    PLAYSTATS_MINIGAME_USAGE = function(p0, p1, p2) end,

    ---@param data Any*
    PLAYSTATS_STONE_HATCHET_ENDED = function(data) end,

    ---@param data Any*
    PLAYSTATS_SMUGGLER_MISSION_ENDED = function(data) end,

    ---@param data Any*
    PLAYSTATS_FM_HEIST_PREP_ENDED = function(data) end,

    ---@param data Any*
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_INSTANCED_HEIST_ENDED = function(data, p1, p2, p3) end,

    ---@param data Any*
    PLAYSTATS_DAR_CHECKPOINT = function(data) end,

    ---@param data Any*
    PLAYSTATS_ENTER_SESSION_PACK = function(data) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    PLAYSTATS_DRONE_USAGE = function(p0, p1, p2) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    PLAYSTATS_SPIN_WHEEL = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 integer
    PLAYSTATS_ARENA_WARS_SPECTATOR = function(p0, p1, p2, p3, p4) end,

    ---@param data Any*
    PLAYSTATS_ARENA_WARS_ENDED = function(data) end,

    ---@param p0 BOOL
    ---@param p1 integer
    ---@param p2 integer
    ---@param p3 integer
    PLAYSTATS_SWITCH_PASSIVE_MODE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param objectHash Hash
    ---@param p2 Any
    ---@param p3 Any
    ---@param moneyAmount integer
    ---@param rpAmount integer
    ---@param chipsAmount integer
    ---@param p7 Any
    ---@param p8 integer
    ---@param p9 Any
    ---@param p10 Any
    PLAYSTATS_COLLECTIBLE_PICKED_UP = function(p0, objectHash, p2, p3, moneyAmount, rpAmount, chipsAmount, p7, p8, p9, p10) end,

    ---@param p0 Any
    ---@param p1 Any
    PLAYSTATS_CASINO_STORY_MISSION_ENDED = function(p0, p1) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_CHIP = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_ROULETTE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_BLACKJACK = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_THREE_CARD_POKER = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_SLOT_MACHINE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_INSIDE_TRACK = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_LUCKY_SEVEN = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_ROULETTE_LIGHT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_BLACKJACK_LIGHT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_THREE_CARD_POKER_LIGHT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_SLOT_MACHINE_LIGHT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CASINO_INSIDE_TRACK_LIGHT = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    PLAYSTATS_ARCADE_GAME = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 Any
    ---@param p1 Any
    PLAYSTATS_ARCADE_LOVE_MATCH = function(p0, p1) end,

    ---@param data Any*
    PLAYSTATS_FREEMODE_CASINO_MISSION_ENDED = function(data) end,

    ---@param p0 Any
    PLAYSTATS_HEIST3_DRONE = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    PLAYSTATS_HEIST3_HACK = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any*
    PLAYSTATS_NPC_PHONE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_ARCADE_CABINET = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_HEIST3_FINALE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_HEIST3_PREP = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_MASTER_CONTROL = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_QUIT_MODE = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    PLAYSTATS_MISSION_VOTE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_NJVS_VOTE = function(p0) end,

    ---@param victimPed Ped
    ---@param killerPed Ped
    ---@param mentalState integer
    ---@param revengeKill BOOL
    ---@param victimKvK integer
    ---@param killerKvK integer
    _PLAYSTATS_DEATH_INFO = function(victimPed, killerPed, mentalState, revengeKill, victimKvK, killerKvK) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_FM_MISSION_END = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    PLAYSTATS_HEIST4_PREP = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_HEIST4_FINALE = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    PLAYSTATS_HEIST4_HACK = function(p0, p1, p2, p3, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_SUB_WEAP = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    ---@param p10 Any
    PLAYSTATS_FAST_TRVL = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end,

    ---@param p0 Any
    PLAYSTATS_HUB_ENTRY = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_DJ_MISSION_ENDED = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_ROBBERY_PREP = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_ROBBERY_FINALE = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_EXTRA_EVENT = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_CARCLUB_POINTS = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_CARCLUB_CHALLENGE = function(p0, p1, p2, p3) end,

    ---@param p0 integer
    ---@param vehicleModel Hash
    PLAYSTATS_CARCLUB_PRIZE = function(p0, vehicleModel) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    PLAYSTATS_AWARD_NAV = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    _PLAYSTATS_INIT_MULTIPLAYER = function(p0, p1, p2) end,

    ---@param p0 Any
    PLAYSTATS_INST_MISSION_END = function(p0) end,

    ---@param p0 Any
    PLAYSTATS_HUB_EXIT = function(p0) end,

    ---@param bossId1 integer
    ---@param bossId2 integer
    ---@param bossType integer
    ---@param vehicleID integer
    ---@param reason integer
    PLAYSTATS_VEH_DEL = function(bossId1, bossId2, bossType, vehicleID, reason) end,

    ---@param p0 Any
    PLAYSTATS_INVENTORY = function(p0) end,

    ---@param p0 Any
    _PLAYSTATS_ACID_MISSION_END = function(p0) end,

    ---@param p0 Any
    _PLAYSTATS_ACID_RND = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    _PLAYSTATS_IDLE = function(p0, p1, p2) end,

    ---@param p0 Any
    _PLAYSTATS_PLAYER_STYLE = function(p0) end,

    ---@param p0 Any
    _PLAYSTATS_RANDOM_EVENT = function(p0) end,

    ---@param data Any*
    _PLAYSTATS_ALERT = function(data) end,

    ---@param p0 Any
    _PLAYSTATS_ATTRITION_STAGE_END = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param entity Hash
    _PLAYSTATS_SHOWROOM_NAV = function(p0, p1, entity) end,

    ---Data struct contains various tunables related to test drives at Simeons Showroom or Luxury Showcase.
    ---@param data Any*
    _PLAYSTATS_SHOWROOM_OVERVIEW = function(data) end,

    ---@param data Any*
    _PLAYSTATS_PIMENU_NAV = function(data) end,

    ---@param data Any*
    _PLAYSTATS_RECOVER_VEHICLE = function(data) end,

    ---@param data Any*
    _PLAYSTATS_SCRIPT_EVENT_FPOM = function(data) end,

    ---@param p0 Any*
    _PLAYSTATS_LOBBY_EXIT = function(p0) end,

    ---@param p0 Any*
    _PLAYSTATS_LOBBY_STARTED = function(p0) end,

    ---@param p0 Any*
    _PLAYSTATS_CREATOR_END = function(p0) end
}

STREAMING = {
    LOAD_ALL_OBJECTS_NOW = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    LOAD_SCENE = function(x, y, z) end,

    ---@return BOOL
    NETWORK_UPDATE_LOAD_SCENE = function() end,

    ---@return BOOL
    IS_NETWORK_LOADING_SCENE = function() end,

    ---@param interiorID integer
    ---@param toggle BOOL
    SET_INTERIOR_ACTIVE = function(interiorID, toggle) end,

    ---Request a model to be loaded into memory.\
    ---
    ---@param model Hash
    REQUEST_MODEL = function(model) end,

    ---@param model Hash
    REQUEST_MENU_PED_MODEL = function(model) end,

    ---Checks if the specified model has loaded into memory.
    ---@param model Hash
    ---@return BOOL
    HAS_MODEL_LOADED = function(model) end,

    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "V_FIB01_cur_elev");\
    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");\
    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "V_Office_gnd_lifts");\
    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BB, "limbo");\
    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "v_fib01_jan_elev");\
    ---STREAMING::REQUEST_MODELS_IN_ROOM(l_13BC, "limbo");
    ---@param interior Interior
    ---@param roomName string
    REQUEST_MODELS_IN_ROOM = function(interior, roomName) end,

    ---Unloads model from memory
    ---@param model Hash
    SET_MODEL_AS_NO_LONGER_NEEDED = function(model) end,

    ---Check if model is in cdimage(rpf)
    ---@param model Hash
    ---@return BOOL
    IS_MODEL_IN_CDIMAGE = function(model) end,

    ---Returns whether the specified model exists in the game.
    ---@param model Hash
    ---@return BOOL
    IS_MODEL_VALID = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_MODEL_A_PED = function(model) end,

    ---Returns whether the specified model represents a vehicle.
    ---@param model Hash
    ---@return BOOL
    IS_MODEL_A_VEHICLE = function(model) end,

    ---@param x number
    ---@param y number
    ---@param z number
    REQUEST_COLLISION_AT_COORD = function(x, y, z) end,

    ---@param model Hash
    REQUEST_COLLISION_FOR_MODEL = function(model) end,

    ---@param model Hash
    ---@return BOOL
    HAS_COLLISION_FOR_MODEL_LOADED = function(model) end,

    ---Alias of REQUEST_COLLISION_AT_COORD.
    ---@param x number
    ---@param y number
    ---@param z number
    REQUEST_ADDITIONAL_COLLISION_AT_COORD = function(x, y, z) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@return BOOL
    DOES_ANIM_DICT_EXIST = function(animDict) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    REQUEST_ANIM_DICT = function(animDict) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    ---@return BOOL
    HAS_ANIM_DICT_LOADED = function(animDict) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param animDict string
    REMOVE_ANIM_DICT = function(animDict) end,

    ---Starts loading the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param animSet string
    REQUEST_ANIM_SET = function(animSet) end,

    ---Gets whether the specified animation set has finished loading. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.\
    ---\
    ---Animation set and clip set are synonymous.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param animSet string
    ---@return BOOL
    HAS_ANIM_SET_LOADED = function(animSet) end,

    ---Unloads the specified animation set. An animation set provides movement animations for a ped. See SET_PED_MOVEMENT_CLIPSET.\
    ---\
    ---Animation set and clip set are synonymous.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param animSet string
    REMOVE_ANIM_SET = function(animSet) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param clipSet string
    REQUEST_CLIP_SET = function(clipSet) end,

    ---Alias for HAS_ANIM_SET_LOADED.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param clipSet string
    ---@return BOOL
    HAS_CLIP_SET_LOADED = function(clipSet) end,

    ---Alias for REMOVE_ANIM_SET.\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---Full list of movement clipsets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/movementClipsetsCompact.json
    ---@param clipSet string
    REMOVE_CLIP_SET = function(clipSet) end,

    ---Exemple: REQUEST_IPL("TrevorsTrailerTrash");\
    ---\
    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param iplName string
    REQUEST_IPL = function(iplName) end,

    ---Removes an IPL from the map.\
    ---\
    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json\
    ---\
    ---Example:\
    ---C#:\
    ---Function.Call(Hash.REMOVE_IPL, "trevorstrailertidy");\
    ---\
    ---C++:\
    ---STREAMING::REMOVE_IPL("trevorstrailertidy");\
    ---\
    ---iplName = Name of IPL you want to remove.
    ---@param iplName string
    REMOVE_IPL = function(iplName) end,

    ---Full list of IPLs and interior entity sets by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/ipls.json
    ---@param iplName string
    ---@return BOOL
    IS_IPL_ACTIVE = function(iplName) end,

    ---@param toggle BOOL
    SET_STREAMING = function(toggle) end,

    ---0 - default\
    ---1 - HeistIsland
    ---@param waterType integer
    LOAD_GLOBAL_WATER_FILE = function(waterType) end,

    ---@return integer
    GET_GLOBAL_WATER_FILE = function() end,

    ---@param toggle BOOL
    SET_GAME_PAUSES_FOR_STREAMING = function(toggle) end,

    ---@param toggle BOOL
    SET_REDUCE_PED_MODEL_BUDGET = function(toggle) end,

    ---@param toggle BOOL
    SET_REDUCE_VEHICLE_MODEL_BUDGET = function(toggle) end,

    ---This is a NOP function. It does nothing at all.
    ---@param toggle BOOL
    SET_DITCH_POLICE_MODELS = function(toggle) end,

    ---@return integer
    GET_NUMBER_OF_STREAMING_REQUESTS = function() end,

    ---maps script name (thread + 0xD0) by lookup via scriptfx.dat - does nothing when script name is empty
    REQUEST_PTFX_ASSET = function() end,

    ---@return BOOL
    HAS_PTFX_ASSET_LOADED = function() end,

    REMOVE_PTFX_ASSET = function() end,

    --- From the b678d decompiled scripts:\
    ---\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("core_snow");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("fm_mission_controler");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("proj_xmas_firework");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_apartment_mp");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_biolab_heist");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_fireworks");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_parachute");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_indep_wheelsmoke");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_cig_plane");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_creator");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_mp_tankbattle");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_ornate_heist");\
    --- STREAMING::REQUEST_NAMED_PTFX_ASSET("scr_prison_break_heist_station");
    ---@param fxName string
    REQUEST_NAMED_PTFX_ASSET = function(fxName) end,

    ---@param fxName string
    ---@return BOOL
    HAS_NAMED_PTFX_ASSET_LOADED = function(fxName) end,

    ---@param fxName string
    REMOVE_NAMED_PTFX_ASSET = function(fxName) end,

    ---@param p0 integer
    SET_VEHICLE_POPULATION_BUDGET = function(p0) end,

    ---Control how many new (ambient?) peds will spawn in the game world.\
    ---Range for p0 seems to be 0-3, where 0 is none and 3 is the normal level.
    ---@param p0 integer
    SET_PED_POPULATION_BUDGET = function(p0) end,

    CLEAR_FOCUS = function() end,

    ---Override the area where the camera will render the terrain.\
    ---p3, p4 and p5 are usually set to 0.0\
    ---
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    SET_FOCUS_POS_AND_VEL = function(x, y, z, offsetX, offsetY, offsetZ) end,

    ---It seems to make the entity's coords mark the point from which LOD-distances are measured. In my testing, setting a vehicle as the focus entity and moving that vehicle more than 300 distance units away from the player will make the level of detail around the player go down drastically (shadows disappear, textures go extremely low res, etc). The player seems to be the default focus entity.
    ---@param entity Entity
    SET_FOCUS_ENTITY = function(entity) end,

    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_FOCUS = function(entity) end,

    ---@param p0 Entity
    SET_RESTORE_FOCUS_ENTITY = function(p0) end,

    ---Possible p0 values:\
    ---\
    ---"prologue"\
    ---"Prologue_Main"
    ---@param name string
    ---@param toggle BOOL
    SET_MAPDATACULLBOX_ENABLED = function(name, toggle) end,

    ---This native does absolutely nothing, just a nullsub
    ---@param p0 Any
    SET_ALL_MAPDATA_CULLED = function(p0) end,

    ---Always returns zero.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rad number
    ---@param p4 Any
    ---@param p5 Any
    ---@return integer
    STREAMVOL_CREATE_SPHERE = function(x, y, z, rad, p4, p5) end,

    ---Always returns zero.
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 Any
    ---@param p8 Any
    ---@return integer
    STREAMVOL_CREATE_FRUSTUM = function(p0, p1, p2, p3, p4, p5, p6, p7, p8) end,

    ---Always returns zero.
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 Any
    ---@return integer
    STREAMVOL_CREATE_LINE = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param unused Any
    STREAMVOL_DELETE = function(unused) end,

    ---@param unused Any
    ---@return BOOL
    STREAMVOL_HAS_LOADED = function(unused) end,

    ---@param unused Any
    ---@return BOOL
    STREAMVOL_IS_VALID = function(unused) end,

    ---@return BOOL
    IS_STREAMVOL_ACTIVE = function() end,

    ---`radius` value is usually between `3f` and `7000f` in original 1868 scripts.\
    ---`p7` is 0, 1, 2, 3 or 4 used in decompiled scripts, 0 is by far the most common.\
    ---Returns True if success, used only 7 times in decompiled scripts of 1868
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param radius number
    ---@param p7 integer
    ---@return BOOL
    NEW_LOAD_SCENE_START = function(posX, posY, posZ, offsetX, offsetY, offsetZ, radius, p7) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 Any
    ---@return BOOL
    NEW_LOAD_SCENE_START_SPHERE = function(x, y, z, radius, p4) end,

    NEW_LOAD_SCENE_STOP = function() end,

    ---@return BOOL
    IS_NEW_LOAD_SCENE_ACTIVE = function() end,

    ---@return BOOL
    IS_NEW_LOAD_SCENE_LOADED = function() end,

    ---@return BOOL
    IS_SAFE_TO_START_PLAYER_SWITCH = function() end,

    ---// this enum comes directly from R* so don't edit this\
    ---enum ePlayerSwitchTypes\
    ---{\
    ---  SWITCH_TYPE_AUTO,\
    --- SWITCH_TYPE_LONG,\
    --- SWITCH_TYPE_MEDIUM,\
    ---   SWITCH_TYPE_SHORT\
    ---};\
    ---\
    ---Use GET_IDEAL_PLAYER_SWITCH_TYPE for the best switch type.\
    ---\
    -------------------------------------------------------\
    ---\
    ---Examples from the decompiled scripts:\
    ---\
    ---STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 0, 3);\
    ---STREAMING::START_PLAYER_SWITCH(l_832._f3, PLAYER::PLAYER_PED_ID(), 2050, 3);\
    ---STREAMING::START_PLAYER_SWITCH(PLAYER::PLAYER_PED_ID(), l_832._f3, 1024, 3);\
    ---STREAMING::START_PLAYER_SWITCH(g_141F27, PLAYER::PLAYER_PED_ID(), 513, v_14);\
    ---\
    ---Note: DO NOT, use SWITCH_TYPE_LONG with flag 513. It leaves you stuck in the clouds. You'll have to call STOP_PLAYER_SWITCH() to return to your ped.\
    ---\
    ---Flag 8 w/ SWITCH_TYPE_LONG will zoom out 3 steps, then zoom in 2/3 steps and stop on the 3rd and just hang there.\
    ---Flag 8 w/ SWITCH_TYPE_MEDIUM will zoom out 1 step, and just hang there.
    ---@param from Ped
    ---@param to Ped
    ---@param flags integer
    ---@param switchType integer
    START_PLAYER_SWITCH = function(from, to, flags, switchType) end,

    STOP_PLAYER_SWITCH = function() end,

    ---Returns true if the player is currently switching, false otherwise.\
    ---(When the camera is in the sky moving from Trevor to Franklin for example)
    ---@return BOOL
    IS_PLAYER_SWITCH_IN_PROGRESS = function() end,

    ---@return integer
    GET_PLAYER_SWITCH_TYPE = function() end,

    ---x1, y1, z1 -- Coords of your ped model\
    ---x2, y2, z2 -- Coords of the ped you want to switch to
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@return integer
    GET_IDEAL_PLAYER_SWITCH_TYPE = function(x1, y1, z1, x2, y2, z2) end,

    ---@return integer
    GET_PLAYER_SWITCH_STATE = function() end,

    ---@return integer
    GET_PLAYER_SHORT_SWITCH_STATE = function() end,

    ---@param p0 integer
    SET_PLAYER_SHORT_SWITCH_STYLE = function(p0) end,

    ---@return integer
    GET_PLAYER_SWITCH_JUMP_CUT_INDEX = function() end,

    ---@param cameraCoordX number
    ---@param cameraCoordY number
    ---@param cameraCoordZ number
    ---@param camRotationX number
    ---@param camRotationY number
    ---@param camRotationZ number
    ---@param camFov number
    ---@param camFarClip number
    ---@param rotationOrder integer
    SET_PLAYER_SWITCH_OUTRO = function(cameraCoordX, cameraCoordY, cameraCoordZ, camRotationX, camRotationY, camRotationZ, camFov, camFarClip, rotationOrder) end,

    ---All names can be found in playerswitchestablishingshots.meta
    ---@param name string
    SET_PLAYER_SWITCH_ESTABLISHING_SHOT = function(name) end,

    ALLOW_PLAYER_SWITCH_PAN = function() end,

    ALLOW_PLAYER_SWITCH_OUTRO = function() end,

    ALLOW_PLAYER_SWITCH_ASCENT = function() end,

    ALLOW_PLAYER_SWITCH_DESCENT = function() end,

    ---@return BOOL
    IS_SWITCH_READY_FOR_DESCENT = function() end,

    ENABLE_SWITCH_PAUSE_BEFORE_DESCENT = function() end,

    DISABLE_SWITCH_OUTRO_FX = function() end,

    ---doesn't act normally when used on mount chilliad\
    ---Flags is a bitflag:\
    ---2^n - Enabled Functionality:\
    ---0 - Skip camera rotate up\
    ---3 - Wait for SET_PLAYER_SWITCH_ESTABLISHING_SHOT / hang at last step. You will still need to run 0x74DE2E8739086740 to exit "properly" and then STOP_PLAYER_SWITCH\
    ---6 - Invert Switch Direction (false = out, true = in)\
    ---8 - Hang above ped\
    ---\
    ---switchType: 0 - 3\
    ---0: 1 step towards ped\
    ---1: 3 steps out from ped\
    ---2: 1 step out from ped\
    ---3: 1 step towards ped
    ---@param ped Ped
    ---@param flags integer
    ---@param switchType integer
    SWITCH_TO_MULTI_FIRSTPART = function(ped, flags, switchType) end,

    ---@param ped Ped
    SWITCH_TO_MULTI_SECONDPART = function(ped) end,

    ---@return BOOL
    IS_SWITCH_TO_MULTI_FIRSTPART_FINISHED = function() end,

    ---@return integer
    GET_PLAYER_SWITCH_INTERP_OUT_DURATION = function() end,

    ---@return integer
    GET_PLAYER_SWITCH_INTERP_OUT_CURRENT_TIME = function() end,

    ---@return BOOL
    IS_SWITCH_SKIPPING_DESCENT = function() end,

    SET_SCENE_STREAMING_TRACKS_CAM_POS_THIS_FRAME = function() end,

    ---@return number
    GET_LODSCALE = function() end,

    ---This allows you to override "extended distance scaling" setting. Needs to be called each frame.\
    ---Max scaling seems to be 200.0, normal is 1.0\
    ---See https://gfycat.com/DetailedHauntingIncatern
    ---@param scaling number
    OVERRIDE_LODSCALE_THIS_FRAME = function(scaling) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    REMAP_LODSCALE_RANGE_THIS_FRAME = function(p0, p1, p2, p3) end,

    SUPPRESS_HD_MAP_STREAMING_THIS_FRAME = function() end,

    ---@param toggle BOOL
    SET_RENDER_HD_ONLY = function(toggle) end,

    FORCE_ALLOW_TIME_BASED_FADING_THIS_FRAME = function() end,

    ---@param iplName1 string
    ---@param iplName2 string
    IPL_GROUP_SWAP_START = function(iplName1, iplName2) end,

    IPL_GROUP_SWAP_CANCEL = function() end,

    ---@return BOOL
    IPL_GROUP_SWAP_IS_READY = function() end,

    IPL_GROUP_SWAP_FINISH = function() end,

    ---@return BOOL
    IPL_GROUP_SWAP_IS_ACTIVE = function() end,

    ---This native is used to attribute the SRL that BEGIN_SRL is going to load. This is usually used for 'in-game' cinematics (not cutscenes but camera stuff) instead of SET_FOCUS_POS_AND_VEL because it loads a specific area of the map which is pretty useful when the camera moves from distant areas.\
    ---For instance, GTA:O opening cutscene.\
    ---https://pastebin.com/2EeKVeLA : a list of SRL found in srllist.meta\
    ---https://pastebin.com/zd9XYUWY here is the content of a SRL file opened with codewalker.
    ---@param srl string
    PREFETCH_SRL = function(srl) end,

    ---Returns true when the srl from BEGIN_SRL is loaded.
    ---@return BOOL
    IS_SRL_LOADED = function() end,

    BEGIN_SRL = function() end,

    ---Clear the current srl and stop rendering the area selected by PREFETCH_SRL and started with BEGIN_SRL.
    END_SRL = function() end,

    ---@param p0 number
    SET_SRL_TIME = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    SET_SRL_POST_CUTSCENE_CAMERA = function(p0, p1, p2, p3, p4, p5) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    SET_SRL_READAHEAD_TIMES = function(p0, p1, p2, p3) end,

    ---@param p0 BOOL
    SET_SRL_LONG_JUMP_MODE = function(p0) end,

    ---@param p0 Any
    SET_SRL_FORCE_PRESTREAM = function(p0) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    SET_HD_AREA = function(x, y, z, radius) end,

    CLEAR_HD_AREA = function() end,

    INIT_CREATOR_BUDGET = function() end,

    SHUTDOWN_CREATOR_BUDGET = function() end,

    ---@param modelHash Hash
    ---@return BOOL
    ADD_MODEL_TO_CREATOR_BUDGET = function(modelHash) end,

    ---@param modelHash Hash
    REMOVE_MODEL_FROM_CREATOR_BUDGET = function(modelHash) end,

    ---0.0 = no memory used\
    ---1.0 = all memory used\
    ---\
    ---Maximum model memory (as defined in common\data\missioncreatordata.meta) is 100 MiB
    ---@return number
    GET_USED_CREATOR_BUDGET = function() end,

    ---@param modelHash Hash
    ---@return number
    _GET_MODEL_ADDITIONAL_COST = function(modelHash) end,

    ---@param modelHash Hash
    ---@return number
    _GET_TOTAL_MODEL_COST = function(modelHash) end,

    ---Enables the specified island. For more information, see islandhopper.meta
    ---@param name string
    ---@param toggle BOOL
    SET_ISLAND_ENABLED = function(name, toggle) end,

    _SET_SPHERICAL_STREAM_DISTANT_HILODS_THIS_FRAME = function() end
}

TASK = {
    ---Stand still (?)
    ---@param ped Ped
    ---@param ms integer
    TASK_PAUSE = function(ped, ms) end,

    ---Makes the specified ped stand still for (time) milliseconds.
    ---@param ped Ped
    ---@param time integer
    TASK_STAND_STILL = function(ped, time) end,

    ---Definition is wrong. This has 4 parameters (Not sure when they were added. v350 has 2, v678 has 4).\
    ---\
    ---v350: Ped ped, bool unused\
    ---v678: Ped ped, bool unused, bool flag1, bool flag2\
    ---\
    ---flag1 = super jump, flag2 = do nothing if flag1 is false and doubles super jump height if flag1 is true.
    ---@param ped Ped
    ---@param usePlayerLaunchForce BOOL
    ---@param doSuperJump BOOL
    ---@param useFullSuperJumpForce BOOL
    TASK_JUMP = function(ped, usePlayerLaunchForce, doSuperJump, useFullSuperJumpForce) end,

    ---@param ped Ped
    ---@param duration integer
    TASK_COWER = function(ped, duration) end,

    ---In the scripts, p3 was always -1.\
    ---\
    ---p3 seems to be duration or timeout of turn animation.\
    ---Also facingPed can be 0 or -1 so ped will just raise hands up.
    ---@param ped Ped
    ---@param duration integer
    ---@param facingPed Ped
    ---@param timeToFacePed integer
    ---@param flags integer
    TASK_HANDS_UP = function(ped, duration, facingPed, timeToFacePed, flags) end,

    ---@param ped Ped
    ---@param duration integer
    UPDATE_TASK_HANDS_UP_DURATION = function(ped, duration) end,

    ---The given ped will try to open the nearest door to 'seat'.\
    ---Example: telling the ped to open the door for the driver seat does not necessarily mean it will open the driver door, it may choose to open the passenger door instead if that one is closer.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param timeOut integer
    ---@param seat integer
    ---@param speed number
    TASK_OPEN_VEHICLE_DOOR = function(ped, vehicle, timeOut, seat, speed) end,

    ---speed 1.0 = walk, 2.0 = run\
    ---p5 1 = normal, 3 = teleport to vehicle, 16 = teleport directly into vehicle\
    ---p6 is always 0\
    ---\
    ---Usage of seat \
    ----1 = driver\
    ---0 = passenger\
    ---1 = left back seat\
    ---2 = right back seat\
    ---3 = outside left\
    ---4 = outside right
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param timeout integer
    ---@param seat integer
    ---@param speed number
    ---@param flag integer
    ---@param overrideEntryClipsetName string
    TASK_ENTER_VEHICLE = function(ped, vehicle, timeout, seat, speed, flag, overrideEntryClipsetName) end,

    ---Flags from decompiled scripts:\
    ---0 = normal exit and closes door.\
    ---1 = normal exit and closes door.\
    ---16 = teleports outside, door kept closed.\
    ---64 = normal exit and closes door, maybe a bit slower animation than 0.\
    ---256 = normal exit but does not close the door.\
    ---4160 = ped is throwing himself out, even when the vehicle is still.\
    ---262144 = ped moves to passenger seat first, then exits normally\
    ---\
    ---Others to be tried out: 320, 512, 131072.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param flags integer
    TASK_LEAVE_VEHICLE = function(ped, vehicle, flags) end,

    ---@param ped Ped
    ---@param boat Vehicle
    TASK_GET_OFF_BOAT = function(ped, boat) end,

    ---@param ped Ped
    ---@param instant BOOL
    TASK_SKY_DIVE = function(ped, instant) end,

    ---Second parameter is unused.\
    ---\
    ---second parameter was for jetpack in the early stages of gta and the hard coded code is now removed
    ---@param ped Ped
    ---@param giveParachuteItem BOOL
    ---@param instant BOOL
    TASK_PARACHUTE = function(ped, giveParachuteItem, instant) end,

    ---makes ped parachute to coords x y z. Works well with PATHFIND::GET_SAFE_COORD_FOR_PED
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_PARACHUTE_TO_TARGET = function(ped, x, y, z) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    SET_PARACHUTE_TASK_TARGET = function(ped, x, y, z) end,

    ---@param ped Ped
    ---@param thrust number
    SET_PARACHUTE_TASK_THRUST = function(ped, thrust) end,

    ---minHeightAboveGround: the minimum height above ground the heli must be at before the ped can start rappelling\
    ---\
    ---Only appears twice in the scripts.\
    ---\
    ---TASK::TASK_RAPPEL_FROM_HELI(PLAYER::PLAYER_PED_ID(), 10.0f);\
    ---TASK::TASK_RAPPEL_FROM_HELI(a_0, 10.0f);
    ---@param ped Ped
    ---@param minHeightAboveGround number
    TASK_RAPPEL_FROM_HELI = function(ped, minHeightAboveGround) end,

    ---info about driving modes: https://gtaforums.com/topic/822314-guide-driving-styles/
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param speed number
    ---@param p6 Any
    ---@param vehicleModel Hash
    ---@param drivingMode integer
    ---@param stopRange number
    ---@param straightLineDistance number
    TASK_VEHICLE_DRIVE_TO_COORD = function(ped, vehicle, x, y, z, speed, p6, vehicleModel, drivingMode, stopRange, straightLineDistance) end,

    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param speed number
    ---@param driveMode integer
    ---@param stopRange number
    TASK_VEHICLE_DRIVE_TO_COORD_LONGRANGE = function(ped, vehicle, x, y, z, speed, driveMode, stopRange) end,

    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param speed number
    ---@param drivingStyle integer
    TASK_VEHICLE_DRIVE_WANDER = function(ped, vehicle, speed, drivingStyle) end,

    ---p6 always -1\
    ---p7 always 10.0\
    ---p8 always 1
    ---@param ped Ped
    ---@param entity Entity
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param movementSpeed number
    ---@param timeout integer
    ---@param stoppingRange number
    ---@param persistFollowing BOOL
    TASK_FOLLOW_TO_OFFSET_OF_ENTITY = function(ped, entity, offsetX, offsetY, offsetZ, movementSpeed, timeout, stoppingRange, persistFollowing) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param speed number
    ---@param timeout integer
    ---@param targetHeading number
    ---@param distanceToSlide number
    TASK_GO_STRAIGHT_TO_COORD = function(ped, x, y, z, speed, timeout, targetHeading, distanceToSlide) end,

    ---@param ped Ped
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param time integer
    TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY = function(ped, entity, x, y, z, moveBlendRatio, time) end,

    ---Makes the specified ped achieve the specified heading.\
    ---\
    ---pedHandle: The handle of the ped to assign the task to.\
    ---heading: The desired heading.\
    ---timeout: The time, in milliseconds, to allow the task to complete. If the task times out, it is cancelled, and the ped will stay at the heading it managed to reach in the time.
    ---@param ped Ped
    ---@param heading number
    ---@param timeout integer
    TASK_ACHIEVE_HEADING = function(ped, heading, timeout) end,

    ---MulleKD19: Clears the current point route. Call this before TASK_EXTEND_ROUTE and TASK_FOLLOW_POINT_ROUTE.
    TASK_FLUSH_ROUTE = function() end,

    ---MulleKD19: Adds a new point to the current point route. Call TASK_FLUSH_ROUTE before the first call to this. Call TASK_FOLLOW_POINT_ROUTE to make the Ped go the route.\
    ---\
    ---A maximum of 8 points can be added.
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_EXTEND_ROUTE = function(x, y, z) end,

    ---MulleKD19: Makes the ped go on the created point route.\
    ---\
    ---ped: The ped to give the task to.\
    ---speed: The speed to move at in m/s.\
    ---int: Unknown. Can be 0, 1, 2 or 3.\
    ---\
    ---Example:\
    ---TASK_FLUSH_ROUTE();\
    ---TASK_EXTEND_ROUTE(0f, 0f, 70f);\
    ---TASK_EXTEND_ROUTE(10f, 0f, 70f);\
    ---TASK_EXTEND_ROUTE(10f, 10f, 70f);\
    ---TASK_FOLLOW_POINT_ROUTE(GET_PLAYER_PED(), 1f, 0);
    ---@param ped Ped
    ---@param speed number
    ---@param mode integer
    TASK_FOLLOW_POINT_ROUTE = function(ped, speed, mode) end,

    ---The entity will move towards the target until time is over (duration) or get in target's range (distance). p5 and p6 are unknown, but you could leave p5 = 1073741824 or 100 or even 0 (didn't see any difference but on the decompiled scripts, they use 1073741824 mostly) and p6 = 0\
    ---\
    ---Note: I've only tested it on entity -> ped and target -> vehicle. It could work differently on other entities, didn't try it yet.\
    ---\
    ---Example: TASK::TASK_GO_TO_ENTITY(pedHandle, vehicleHandle, 5000, 4.0, 100, 1073741824, 0)\
    ---\
    ---Ped will run towards the vehicle for 5 seconds and stop when time is over or when he gets 4 meters(?) around the vehicle (with duration = -1, the task duration will be ignored).\
    ---\
    ---enum EGOTO_ENTITY_SCRIPT_FLAGS\
    ---{\
    ---	EGOTO_ENTITY_NEVER_SLOW_FOR_PATH_LENGTH = 0x01,\
    ---};
    ---@param entity Entity
    ---@param target Entity
    ---@param duration integer
    ---@param distance number
    ---@param moveBlendRatio number
    ---@param slowDownDistance number
    ---@param flags integer
    TASK_GO_TO_ENTITY = function(entity, target, duration, distance, moveBlendRatio, slowDownDistance, flags) end,

    ---Makes the specified ped flee the specified distance from the specified position.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param distance number
    ---@param time integer
    ---@param preferPavements BOOL
    ---@param quitIfOutOfRange BOOL
    TASK_SMART_FLEE_COORD = function(ped, x, y, z, distance, time, preferPavements, quitIfOutOfRange) end,

    ---Makes a ped run away from another ped (fleeTarget).\
    ---\
    ---distance = ped will flee this distance.\
    ---fleeTime = ped will flee for this amount of time, set to "-1" to flee forever
    ---@param ped Ped
    ---@param fleeTarget Ped
    ---@param safeDistance number
    ---@param fleeTime integer
    ---@param preferPavements BOOL
    ---@param updateToNearestHatedPed BOOL
    TASK_SMART_FLEE_PED = function(ped, fleeTarget, safeDistance, fleeTime, preferPavements, updateToNearestHatedPed) end,

    ---@param ped Ped
    ---@param fleeTarget Ped
    TASK_REACT_AND_FLEE_PED = function(ped, fleeTarget) end,

    ---@param ped Ped
    ---@param eventHandle integer
    TASK_SHOCKING_EVENT_REACT = function(ped, eventHandle) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param minimalLength number
    ---@param timeBetweenWalks number
    TASK_WANDER_IN_AREA = function(ped, x, y, z, radius, minimalLength, timeBetweenWalks) end,

    ---Makes ped walk around the area.\
    ---\
    ---set p1 to 10.0f and p2 to 10 if you want the ped to walk anywhere without a duration.
    ---@param ped Ped
    ---@param heading number
    ---@param flags integer
    TASK_WANDER_STANDARD = function(ped, heading, flags) end,

    ---@param ped Ped
    ---@param conditionalAnimGroupStr string
    ---@param conditionalAnimStr string
    ---@param heading number
    TASK_WANDER_SPECIFIC = function(ped, conditionalAnimGroupStr, conditionalAnimStr, heading) end,

    ---Modes:\
    ---0 - ignore heading\
    ---1 - park forward\
    ---2 - park backwards\
    ---\
    ---Depending on the angle of approach, the vehicle can park at the specified heading or at its exact opposite (-180) angle.\
    ---\
    ---Radius seems to define how close the vehicle has to be -after parking- to the position for this task considered completed. If the value is too small, the vehicle will try to park again until it's exactly where it should be. 20.0 Works well but lower values don't, like the radius is measured in centimeters or something.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param mode integer
    ---@param radius number
    ---@param keepEngineOn BOOL
    TASK_VEHICLE_PARK = function(ped, vehicle, x, y, z, heading, mode, radius, keepEngineOn) end,

    ---known "killTypes" are: "AR_stealth_kill_knife" and "AR_stealth_kill_a".
    ---@param killer Ped
    ---@param target Ped
    ---@param stealthKillActionResultHash Hash
    ---@param desiredMoveBlendRatio number
    ---@param stealthFlags integer
    TASK_STEALTH_KILL = function(killer, target, stealthKillActionResultHash, desiredMoveBlendRatio, stealthFlags) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    TASK_PLANT_BOMB = function(ped, x, y, z, heading) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param radius number
    TASK_SHARK_CIRCLE_COORD = function(ped, x, y, z, moveBlendRatio, radius) end,

    ---If no timeout, set timeout to -1.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param time integer
    ---@param targetRadius number
    ---@param flags integer
    ---@param targetHeading number
    TASK_FOLLOW_NAV_MESH_TO_COORD = function(ped, x, y, z, moveBlendRatio, time, targetRadius, flags, targetHeading) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param time integer
    ---@param targetRadius number
    ---@param flags integer
    ---@param slideToCoordHeading number
    ---@param maxSlopeNavigable number
    ---@param clampMaxSearchDistance number
    ---@param targetHeading number
    TASK_FOLLOW_NAV_MESH_TO_COORD_ADVANCED = function(ped, x, y, z, moveBlendRatio, time, targetRadius, flags, slideToCoordHeading, maxSlopeNavigable, clampMaxSearchDistance, targetHeading) end,

    ---@param ped Ped
    ---@param Toggle BOOL
    SET_PED_PATH_CAN_USE_CLIMBOVERS = function(ped, Toggle) end,

    ---@param ped Ped
    ---@param Toggle BOOL
    SET_PED_PATH_CAN_USE_LADDERS = function(ped, Toggle) end,

    ---@param ped Ped
    ---@param Toggle BOOL
    SET_PED_PATH_CAN_DROP_FROM_HEIGHT = function(ped, Toggle) end,

    ---Default modifier is 1.0, minimum is 0.0 and maximum is 10.0.
    ---@param ped Ped
    ---@param modifier number
    SET_PED_PATH_CLIMB_COST_MODIFIER = function(ped, modifier) end,

    ---@param ped Ped
    ---@param mayEnterWater BOOL
    SET_PED_PATH_MAY_ENTER_WATER = function(ped, mayEnterWater) end,

    ---@param ped Ped
    ---@param avoidWater BOOL
    SET_PED_PATH_PREFER_TO_AVOID_WATER = function(ped, avoidWater) end,

    ---@param ped Ped
    ---@param avoidFire BOOL
    SET_PED_PATH_AVOID_FIRE = function(ped, avoidFire) end,

    ---Needs to be looped! And yes, it does work and is not a hash collision.\
    ---Birds will try to reach the given height.
    ---@param height number
    SET_GLOBAL_MIN_BIRD_FLIGHT_HEIGHT = function(height) end,

    ---Looks like the last parameter returns true if the path has been calculated, while the first returns the remaining distance to the end of the path.\
    ---Return value of native is the same as GET_NAVMESH_ROUTE_RESULT\
    ---Looks like the native returns an int for the path's state:\
    ---1 - ???\
    ---2 - ???\
    ---3 - Finished Generating 
    ---@param ped Ped
    ---@param distanceRemaining number
    ---@param isPathReady BOOL
    ---@return integer
    ---@return number
    ---@return BOOL
    GET_NAVMESH_ROUTE_DISTANCE_REMAINING = function(ped, distanceRemaining, isPathReady) end,

    ---See GET_NAVMESH_ROUTE_DISTANCE_REMAINING for more details.
    ---@param ped Ped
    ---@return integer
    GET_NAVMESH_ROUTE_RESULT = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_CONTROLLED_VEHICLE_UNABLE_TO_GET_TO_ROAD = function(ped) end,

    ---example from fm_mission_controller\
    ---\
    ---TASK::TASK_GO_TO_COORD_ANY_MEANS(l_649, sub_f7e86(-1, 0), 1.0, 0, 0, 786603, 0xbf800000);\
    --- 
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param vehicle Vehicle
    ---@param useLongRangeVehiclePathing BOOL
    ---@param drivingFlags integer
    ---@param maxRangeToShootTargets number
    TASK_GO_TO_COORD_ANY_MEANS = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param vehicle Vehicle
    ---@param useLongRangeVehiclePathing BOOL
    ---@param drivingFlags integer
    ---@param maxRangeToShootTargets number
    ---@param extraVehToTargetDistToPreferVehicle number
    ---@param driveStraightLineDistance number
    ---@param extraFlags integer
    ---@param warpTimerMS number
    TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, warpTimerMS) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param moveBlendRatio number
    ---@param vehicle Vehicle
    ---@param useLongRangeVehiclePathing BOOL
    ---@param drivingFlags integer
    ---@param maxRangeToShootTargets number
    ---@param extraVehToTargetDistToPreferVehicle number
    ---@param driveStraightLineDistance number
    ---@param extraFlags integer
    ---@param cruiseSpeed number
    ---@param targetArriveDist number
    TASK_GO_TO_COORD_ANY_MEANS_EXTRA_PARAMS_WITH_CRUISE_SPEED = function(ped, x, y, z, moveBlendRatio, vehicle, useLongRangeVehiclePathing, drivingFlags, maxRangeToShootTargets, extraVehToTargetDistToPreferVehicle, driveStraightLineDistance, extraFlags, cruiseSpeed, targetArriveDist) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json\
    ---\
    ---float speed > normal speed is 8.0f\
    -------------------------\
    ---\
    ---float speedMultiplier > multiply the playback speed\
    -------------------------\
    ---\
    ---int duration: time in millisecond\
    -------------------------\
    ----1 _ _ _ _ _ _ _> Default (see flag)\
    ---0 _ _ _ _ _ _ _ > Not play at all\
    ---Small value _ _ > Slow down animation speed\
    ---Other _ _ _ _ _ > freeze player control until specific time (ms) has \
    ---_ _ _ _ _ _ _ _ _ passed. (No effect if flag is set to be \
    ---_ _ _ _ _ _ _ _ _ controllable.)\
    ---\
    ---int flag:\
    -------------------------\
    ---enum eAnimationFlags\
    ---{\
    --- ANIM_FLAG_NORMAL = 0,\
    ---   ANIM_FLAG_REPEAT = 1,\
    ---   ANIM_FLAG_STOP_LAST_FRAME = 2,\
    ---   ANIM_FLAG_UPPERBODY = 16,\
    ---   ANIM_FLAG_ENABLE_PLAYER_CONTROL = 32,\
    ---   ANIM_FLAG_CANCELABLE = 120,\
    ---};\
    ---Odd number : loop infinitely\
    ---Even number : Freeze at last frame\
    ---Multiple of 4: Freeze at last frame but controllable\
    ---\
    ---01 to 15 > Full body\
    ---10 to 31 > Upper body\
    ---32 to 47 > Full body > Controllable\
    ---48 to 63 > Upper body > Controllable\
    ---...\
    ---001 to 255 > Normal\
    ---256 to 511 > Garbled\
    ---...\
    ---\
    ---playbackRate:\
    ---\
    ---values are between 0.0 and 1.0\
    ---\
    ---\
    ---lockX:  \
    ---\
    ---0 in most cases 1 for rcmepsilonism8 and rcmpaparazzo_3\
    ---> 1 for mini@sprunk\
    --- \
    ---\
    ---lockY:\
    ---\
    ---0 in most cases \
    ---1 for missfam5_yoga, missfra1mcs_2_crew_react\
    ---\
    ---\
    ---lockZ: \
    ---\
    ---    0 for single player \
    ---    Can be 1 but only for MP 
    ---@param ped Ped
    ---@param animDictionary string
    ---@param animationName string
    ---@param blendInSpeed number
    ---@param blendOutSpeed number
    ---@param duration integer
    ---@param flag integer
    ---@param playbackRate number
    ---@param lockX BOOL
    ---@param lockY BOOL
    ---@param lockZ BOOL
    TASK_PLAY_ANIM = function(ped, animDictionary, animationName, blendInSpeed, blendOutSpeed, duration, flag, playbackRate, lockX, lockY, lockZ) end,

    ---It's similar to TASK_PLAY_ANIM, except the first 6 floats let you specify the initial position and rotation of the task. (Ped gets teleported to the position).\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param animName string
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param animEnterSpeed number
    ---@param animExitSpeed number
    ---@param duration integer
    ---@param flag Any
    ---@param animTime number
    ---@param rotOrder integer
    ---@param ikFlags integer
    TASK_PLAY_ANIM_ADVANCED = function(ped, animDict, animName, posX, posY, posZ, rotX, rotY, rotZ, animEnterSpeed, animExitSpeed, duration, flag, animTime, rotOrder, ikFlags) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param entity Entity
    ---@param animDictionary string
    ---@param animationName string
    ---@param blendDelta number
    STOP_ANIM_TASK = function(entity, animDictionary, animationName, blendDelta) end,

    ---From fm_mission_controller.c:\
    ---reserve_network_mission_objects(get_num_reserved_mission_objects(0) + 1);\
    ---           vVar28 = {0.094f, 0.02f, -0.005f};\
    ---            vVar29 = {-92.24f, 63.64f, 150.24f};\
    ---          func_253(&uVar30, joaat("prop_ld_case_01"), Global_1592429.imm_34757[iParam1 <268>], 1, 1, 0, 1);\
    ---         set_entity_lod_dist(net_to_ent(uVar30), 500);\
    ---         attach_entity_to_entity(net_to_ent(uVar30), iParam0, get_ped_bone_index(iParam0, 28422), vVar28, vVar29, 1, 0, 0, 0, 2, 1);\
    ---           Var31.imm_4 = 1065353216;\
    ---         Var31.imm_5 = 1065353216;\
    ---         Var31.imm_9 = 1065353216;\
    ---         Var31.imm_10 = 1065353216;\
    ---            Var31.imm_14 = 1065353216;\
    ---            Var31.imm_15 = 1065353216;\
    ---            Var31.imm_17 = 1040187392;\
    ---            Var31.imm_18 = 1040187392;\
    ---            Var31.imm_19 = -1;\
    ---            Var32.imm_4 = 1065353216;\
    ---         Var32.imm_5 = 1065353216;\
    ---         Var32.imm_9 = 1065353216;\
    ---         Var32.imm_10 = 1065353216;\
    ---            Var32.imm_14 = 1065353216;\
    ---            Var32.imm_15 = 1065353216;\
    ---            Var32.imm_17 = 1040187392;\
    ---            Var32.imm_18 = 1040187392;\
    ---            Var32.imm_19 = -1;\
    ---            Var31 = 1;\
    ---            Var31.imm_1 = "weapons@misc@jerrycan@mp_male";\
    ---          Var31.imm_2 = "idle";\
    ---           Var31.imm_20 = 1048633;\
    ---           Var31.imm_4 = 0.5f;\
    ---           Var31.imm_16 = get_hash_key("BONEMASK_ARMONLY_R");\
    ---          task_scripted_animation(iParam0, &Var31, &Var32, &Var32, 0f, 0.25f);\
    ---          set_model_as_no_longer_needed(joaat("prop_ld_case_01"));\
    ---            remove_anim_dict("anim@heists@biolab@");
    ---@param ped Ped
    ---@param priorityLowData integer
    ---@param priorityMidData integer
    ---@param priorityHighData integer
    ---@param blendInDelta number
    ---@param blendOutDelta number
    ---@return integer
    ---@return integer
    ---@return integer
    TASK_SCRIPTED_ANIMATION = function(ped, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) end,

    ---@param entity Entity
    ---@param priorityLowData integer
    ---@param priorityMidData integer
    ---@param priorityHighData integer
    ---@param blendInDelta number
    ---@param blendOutDelta number
    ---@return integer
    ---@return integer
    ---@return integer
    PLAY_ENTITY_SCRIPTED_ANIM = function(entity, priorityLowData, priorityMidData, priorityHighData, blendInDelta, blendOutDelta) end,

    ---Looks like p1 may be a flag, still need to do some research, though.
    ---@param entity Entity
    ---@param priority integer
    ---@param secondary BOOL
    STOP_ANIM_PLAYBACK = function(entity, priority, secondary) end,

    ---@param entity Entity
    ---@param weight number
    ---@param priority integer
    ---@param index integer
    ---@param secondary BOOL
    SET_ANIM_WEIGHT = function(entity, weight, priority, index, secondary) end,

    ---@param entity Entity
    ---@param phase number
    ---@param priority integer
    ---@param secondary BOOL
    SET_ANIM_PHASE = function(entity, phase, priority, secondary) end,

    ---@param entity Entity
    ---@param rate number
    ---@param priority integer
    ---@param secondary BOOL
    SET_ANIM_RATE = function(entity, rate, priority, secondary) end,

    ---@param entity Entity
    ---@param looped BOOL
    ---@param priority integer
    ---@param secondary BOOL
    SET_ANIM_LOOPED = function(entity, looped, priority, secondary) end,

    ---Example from the scripts:\
    ---TASK::TASK_PLAY_PHONE_GESTURE_ANIMATION(PLAYER::PLAYER_PED_ID(), v_3, v_2, v_4, 0.25, 0.25, 0, 0);\
    ---\
    ---=========================================================\
    ---^^ No offense, but Idk how that would really help anyone.\
    ---\
    ---As for the animDict & animation, they're both store in a global in all 5 scripts. So if anyone would be so kind as to read that global and comment what strings they use. Thanks.\
    ---\
    ---Known boneMaskTypes'\
    ---"BONEMASK_HEADONLY"\
    ---"BONEMASK_HEAD_NECK_AND_ARMS"\
    ---"BONEMASK_HEAD_NECK_AND_L_ARM"\
    ---"BONEMASK_HEAD_NECK_AND_R_ARM"\
    ---\
    ---p4 known args - 0.0f, 0.5f, 0.25f\
    ---p5 known args - 0.0f, 0.25f\
    ---p6 known args - 1 if a global if check is passed.\
    ---p7 known args - 1 if a global if check is passed.\
    ---\
    ---The values found above, I found within the 5 scripts this is ever called in. (fmmc_launcher, fm_deathmatch_controller, fm_impromptu_dm_controller, fm_mission_controller, and freemode).\
    ---=========================================================\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param animation string
    ---@param boneMaskType string
    ---@param blendInDuration number
    ---@param blendOutDuration number
    ---@param isLooping BOOL
    ---@param holdLastFrame BOOL
    TASK_PLAY_PHONE_GESTURE_ANIMATION = function(ped, animDict, animation, boneMaskType, blendInDuration, blendOutDuration, isLooping, holdLastFrame) end,

    ---@param ped Ped
    ---@param blendOutOverride number
    TASK_STOP_PHONE_GESTURE_ANIMATION = function(ped, blendOutOverride) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PLAYING_PHONE_GESTURE_ANIM = function(ped) end,

    ---@param ped Ped
    ---@return number
    GET_PHONE_GESTURE_ANIM_CURRENT_TIME = function(ped) end,

    ---@param ped Ped
    ---@return number
    GET_PHONE_GESTURE_ANIM_TOTAL_TIME = function(ped) end,

    ---Most probably plays a specific animation on vehicle. For example getting chop out of van etc...\
    ---\
    ---Here's how its used - \
    ---\
    ---TASK::TASK_VEHICLE_PLAY_ANIM(l_325, "rcmnigel1b", "idle_speedo");\
    ---\
    ---TASK::TASK_VEHICLE_PLAY_ANIM(l_556[0/*1*/], "missfra0_chop_drhome", "InCar_GetOutofBack_Speedo");\
    ---\
    ---FYI : Speedo is the name of van in which chop was put in the mission.
    ---@param vehicle Vehicle
    ---@param animationSet string
    ---@param animationName string
    TASK_VEHICLE_PLAY_ANIM = function(vehicle, animationSet, animationName) end,

    ---enum eScriptLookatFlags\
    ---{\
    ---	SLF_SLOW_TURN_RATE            = 1,    // turn the head toward the target slowly\
    ---	SLF_FAST_TURN_RATE            = 2,    // turn the head toward the target quickly\
    ---	SLF_EXTEND_YAW_LIMIT        = 4,    // wide yaw head limits\
    ---	SLF_EXTEND_PITCH_LIMIT        = 8,    // wide pitch head limit\
    ---	SLF_WIDEST_YAW_LIMIT        = 16,   // widest yaw head limit\
    ---	SLF_WIDEST_PITCH_LIMIT        = 32,   // widest pitch head limit\
    ---	SLF_NARROW_YAW_LIMIT        = 64,   // narrow yaw head limits\
    ---	SLF_NARROW_PITCH_LIMIT        = 128,  // narrow pitch head limit\
    ---	SLF_NARROWEST_YAW_LIMIT        = 256,  // narrowest yaw head limit\
    ---	SLF_NARROWEST_PITCH_LIMIT    = 512,  // narrowest pitch head limit\
    ---	SLF_USE_TORSO                = 1024, // use the torso aswell as the neck and head (currently disabled)\
    ---	SLF_WHILE_NOT_IN_FOV        = 2048, // keep tracking the target even if they are not in the hard coded FOV\
    ---	SLF_USE_CAMERA_FOCUS        = 4096, // use the camera as the target\
    ---	SLF_USE_EYES_ONLY            = 8192, // only track the target with the eyes  \
    ---	SLF_USE_LOOK_DIR            = 16384, // use information in look dir DOF\
    ---	SLF_FROM_SCRIPT                = 32768, // internal use only\
    ---	SLF_USE_REF_DIR_ABSOLUTE    = 65536  // use absolute reference direction mode for solver\
    ---};
    ---@param entity Entity
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration integer
    ---@param flags integer
    ---@param priority integer
    TASK_LOOK_AT_COORD = function(entity, x, y, z, duration, flags, priority) end,

    ---For flags, please refer to TASK_LOOK_AT_COORD.
    ---@param ped Ped
    ---@param lookAt Entity
    ---@param duration integer
    ---@param flags integer
    ---@param priority integer
    TASK_LOOK_AT_ENTITY = function(ped, lookAt, duration, flags, priority) end,

    ---@param ped Ped
    TASK_CLEAR_LOOK_AT = function(ped) end,

    ---@param taskSequenceId integer
    ---@return integer
    OPEN_SEQUENCE_TASK = function(taskSequenceId) end,

    ---@param taskSequenceId integer
    CLOSE_SEQUENCE_TASK = function(taskSequenceId) end,

    ---@param ped Ped
    ---@param taskSequenceId integer
    TASK_PERFORM_SEQUENCE = function(ped, taskSequenceId) end,

    ---@param ped Ped
    ---@param taskSequenceId integer
    TASK_PERFORM_SEQUENCE_LOCALLY = function(ped, taskSequenceId) end,

    ---@param taskSequenceId integer
    ---@return integer
    CLEAR_SEQUENCE_TASK = function(taskSequenceId) end,

    ---@param taskSequenceId integer
    ---@param _repeat BOOL
    SET_SEQUENCE_TO_REPEAT = function(taskSequenceId, _repeat) end,

    ---@param taskSequenceId integer
    SET_SEQUENCE_PREVENT_MIGRATION = function(taskSequenceId) end,

    ---returned values:\
    ---0 to 7 = task that's currently in progress, 0 meaning the first one.\
    ----1 no task sequence in progress.
    ---@param ped Ped
    ---@return integer
    GET_SEQUENCE_PROGRESS = function(ped) end,

    ---Task index enum: https://alloc8or.re/gta5/doc/enums/eTaskTypeIndex.txt
    ---@param ped Ped
    ---@param taskIndex integer
    ---@return BOOL
    GET_IS_TASK_ACTIVE = function(ped, taskIndex) end,

    ---Gets the status of a script-assigned task.\
    ---taskHash: https://alloc8or.re/gta5/doc/enums/eScriptTaskHash.txt
    ---@param ped Ped
    ---@param taskHash Hash
    ---@return integer
    GET_SCRIPT_TASK_STATUS = function(ped, taskHash) end,

    ---https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt
    ---@param vehicle Vehicle
    ---@return integer
    GET_ACTIVE_VEHICLE_MISSION_TYPE = function(vehicle) end,

    ---Flags are the same flags used in TASK_LEAVE_VEHICLE
    ---@param ped Ped
    ---@param delayTime integer
    ---@param flags integer
    TASK_LEAVE_ANY_VEHICLE = function(ped, delayTime, flags) end,

    ---@param ped Ped
    ---@param scriptTask Hash
    ---@param disableBlockingClip BOOL
    ---@param instantBlendToAim BOOL
    TASK_AIM_GUN_SCRIPTED = function(ped, scriptTask, disableBlockingClip, instantBlendToAim) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param gunTaskType integer
    ---@param disableBlockingClip BOOL
    ---@param forceAim BOOL
    TASK_AIM_GUN_SCRIPTED_WITH_TARGET = function(ped, target, x, y, z, gunTaskType, disableBlockingClip, forceAim) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param disableBlockingClip BOOL
    UPDATE_TASK_AIM_GUN_SCRIPTED_TARGET = function(ped, target, x, y, z, disableBlockingClip) end,

    ---@param gunTaskType integer
    ---@return string
    GET_CLIP_SET_FOR_SCRIPTED_GUN_TASK = function(gunTaskType) end,

    ---duration: the amount of time in milliseconds to do the task.  -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped
    ---@param ped Ped
    ---@param entity Entity
    ---@param duration integer
    ---@param instantBlendToAim BOOL
    TASK_AIM_GUN_AT_ENTITY = function(ped, entity, duration, instantBlendToAim) end,

    ---duration: the amount of time in milliseconds to do the task. -1 will keep the task going until either another task is applied, or CLEAR_ALL_TASKS() is called with the ped
    ---@param ped Ped
    ---@param entity Entity
    ---@param duration integer
    TASK_TURN_PED_TO_FACE_ENTITY = function(ped, entity, duration) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param time integer
    ---@param instantBlendToAim BOOL
    ---@param playAnimIntro BOOL
    TASK_AIM_GUN_AT_COORD = function(ped, x, y, z, time, instantBlendToAim, playAnimIntro) end,

    ---Firing Pattern Hash Information: https://pastebin.com/Px036isB
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration integer
    ---@param firingPattern Hash
    TASK_SHOOT_AT_COORD = function(ped, x, y, z, duration, firingPattern) end,

    ---Makes the specified ped shuffle to the next vehicle seat.\
    ---The ped MUST be in a vehicle and the vehicle parameter MUST be the ped's current vehicle.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param useAlternateShuffle BOOL
    TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT = function(ped, vehicle, useAlternateShuffle) end,

    ---@param ped Ped
    CLEAR_PED_TASKS = function(ped) end,

    ---@param ped Ped
    CLEAR_PED_SCRIPT_TASK_IF_RUNNING_THREAT_RESPONSE_NON_TEMP_TASK = function(ped) end,

    ---@param ped Ped
    CLEAR_PED_SECONDARY_TASK = function(ped) end,

    ---@param vehicle Vehicle
    TASK_EVERYONE_LEAVE_VEHICLE = function(vehicle) end,

    ---enum ESEEK_ENTITY_OFFSET_FLAGS\
    ---{\
    ---	ESEEK_OFFSET_ORIENTATES_WITH_ENTITY = 0x01,\
    ---	ESEEK_KEEP_TO_PAVEMENTS = 0x02\
    ---};
    ---@param ped Ped
    ---@param entity Entity
    ---@param time integer
    ---@param seekRadius number
    ---@param seekAngleDeg number
    ---@param moveBlendRatio number
    ---@param gotoEntityOffsetFlags integer
    TASK_GOTO_ENTITY_OFFSET = function(ped, entity, time, seekRadius, seekAngleDeg, moveBlendRatio, gotoEntityOffsetFlags) end,

    ---@param ped Ped
    ---@param entity Entity
    ---@param duration integer
    ---@param targetRadius number
    ---@param offsetX number
    ---@param offsetY number
    ---@param moveBlendRatio number
    ---@param gotoEntityOffsetFlags integer
    TASK_GOTO_ENTITY_OFFSET_XY = function(ped, entity, duration, targetRadius, offsetX, offsetY, moveBlendRatio, gotoEntityOffsetFlags) end,

    ---duration in milliseconds
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration integer
    TASK_TURN_PED_TO_FACE_COORD = function(ped, x, y, z, duration) end,

    ---'1 - brake\
    ---'3 - brake + reverse\
    ---'4 - turn left 90 + braking\
    ---'5 - turn right 90 + braking\
    ---'6 - brake strong (handbrake?) until time ends\
    ---'7 - turn left + accelerate\
    ---'8 - turn right + accelerate\
    ---'9 - weak acceleration\
    ---'10 - turn left + restore wheel pos to center in the end\
    ---'11 - turn right + restore wheel pos to center in the end\
    ---'13 - turn left + go reverse\
    ---'14 - turn left + go reverse\
    ---'16 - crash the game after like 2 seconds :)\
    ---'17 - keep actual state, game crashed after few tries\
    ---'18 - game crash\
    ---'19 - strong brake + turn left/right\
    ---'20 - weak brake + turn left then turn right\
    ---'21 - weak brake + turn right then turn left\
    ---'22 - brake + reverse\
    ---'23 - accelerate fast\
    ---'24 - brake\
    ---'25 - brake turning left then when almost stopping it turns left more\
    ---'26 - brake turning right then when almost stopping it turns right more\
    ---'27 - brake until car stop or until time ends\
    ---'28 - brake + strong reverse acceleration\
    ---'30 - performs a burnout (brake until stop + brake and accelerate)\
    ---'31 - accelerate + handbrake\
    ---'32 - accelerate very strong\
    ---\
    ---Seems to be this:\
    ---Works on NPCs, but overrides their current task. If inside a task sequence (and not being the last task), "time" will work, otherwise the task will be performed forever until tasked with something else
    ---@param driver Ped
    ---@param vehicle Vehicle
    ---@param action integer
    ---@param time integer
    TASK_VEHICLE_TEMP_ACTION = function(driver, vehicle, action, time) end,

    ---missionType: https://alloc8or.re/gta5/doc/enums/eVehicleMissionType.txt
    ---@param driver Ped
    ---@param vehicle Vehicle
    ---@param vehicleTarget Vehicle
    ---@param missionType integer
    ---@param cruiseSpeed number
    ---@param drivingStyle integer
    ---@param targetReached number
    ---@param straightLineDistance number
    ---@param DriveAgainstTraffic BOOL
    TASK_VEHICLE_MISSION = function(driver, vehicle, vehicleTarget, missionType, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) end,

    ---See TASK_VEHICLE_MISSION
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param pedTarget Ped
    ---@param missionType integer
    ---@param maxSpeed number
    ---@param drivingStyle integer
    ---@param minDistance number
    ---@param straightLineDistance number
    ---@param DriveAgainstTraffic BOOL
    TASK_VEHICLE_MISSION_PED_TARGET = function(ped, vehicle, pedTarget, missionType, maxSpeed, drivingStyle, minDistance, straightLineDistance, DriveAgainstTraffic) end,

    ---See TASK_VEHICLE_MISSION
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param mission integer
    ---@param cruiseSpeed number
    ---@param drivingStyle integer
    ---@param targetReached number
    ---@param straightLineDistance number
    ---@param DriveAgainstTraffic BOOL
    TASK_VEHICLE_MISSION_COORS_TARGET = function(ped, vehicle, x, y, z, mission, cruiseSpeed, drivingStyle, targetReached, straightLineDistance, DriveAgainstTraffic) end,

    ---Makes a ped follow the targetVehicle with <minDistance> in between.\
    ---\
    ---note: minDistance is ignored if drivingstyle is avoiding traffic, but Rushed is fine.\
    ---\
    ---Mode: The mode defines the relative position to the targetVehicle. The ped will try to position its vehicle there.\
    ----1 = behind\
    ---0 = ahead\
    ---1 = left\
    ---2 = right\
    ---3 = back left\
    ---4 = back right\
    ---\
    ---if the target is closer than noRoadsDistance, the driver will ignore pathing/roads and follow you directly.\
    ---\
    ---Driving Styles guide: gtaforums.com/topic/822314-guide-driving-styles/
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param targetVehicle Vehicle
    ---@param mode integer
    ---@param speed number
    ---@param drivingStyle integer
    ---@param minDistance number
    ---@param minHeightAboveTerrain integer
    ---@param noRoadsDistance number
    TASK_VEHICLE_ESCORT = function(ped, vehicle, targetVehicle, mode, speed, drivingStyle, minDistance, minHeightAboveTerrain, noRoadsDistance) end,

    ---Makes a ped in a vehicle follow an entity (ped, vehicle, etc.)\
    ---\
    ---drivingStyle: http://gtaforums.com/topic/822314-guide-driving-styles/
    ---@param driver Ped
    ---@param vehicle Vehicle
    ---@param targetEntity Entity
    ---@param speed number
    ---@param drivingStyle integer
    ---@param minDistance integer
    TASK_VEHICLE_FOLLOW = function(driver, vehicle, targetEntity, speed, drivingStyle, minDistance) end,

    ---chases targetEnt fast and aggressively\
    -----\
    ---Makes ped (needs to be in vehicle) chase targetEnt.
    ---@param driver Ped
    ---@param targetEnt Entity
    TASK_VEHICLE_CHASE = function(driver, targetEnt) end,

    ---pilot, vehicle and altitude are rather self-explanatory.\
    ---\
    ---p4: is unused variable in the function.\
    ---\
    ---entityToFollow: you can provide a Vehicle entity or a Ped entity, the heli will protect them.\
    ---\
    ---'targetSpeed':  The pilot will dip the nose AS MUCH AS POSSIBLE so as to reach this value AS FAST AS POSSIBLE.  As such, you'll want to modulate it as opposed to calling it via a hard-wired, constant #.\
    ---\
    ---'radius' isn't just "stop within radius of X of target" like with ground vehicles.  In this case, the pilot will fly an entire circle around 'radius' and continue to do so.\
    ---\
    ---NOT CONFIRMED:  p7 appears to be a FlyingStyle enum.  Still investigating it as of this writing, but playing around with values here appears to result in different -behavior- as opposed to offsetting coordinates, altitude, target speed, etc.\
    ---\
    ---NOTE: If the pilot finds enemies, it will engage them until it kills them, but will return to protect the ped/vehicle given shortly thereafter.
    ---@param pilot Ped
    ---@param vehicle Vehicle
    ---@param entityToFollow Entity
    ---@param targetSpeed number
    ---@param drivingFlags integer
    ---@param radius number
    ---@param altitude integer
    ---@param heliFlags integer
    TASK_VEHICLE_HELI_PROTECT = function(pilot, vehicle, entityToFollow, targetSpeed, drivingFlags, radius, altitude, heliFlags) end,

    ---Flag 8: Medium-aggressive boxing tactic with a bit of PIT\
    ---Flag 1: Aggressive ramming of suspect\
    ---Flag 2: Ram attempts\
    ---Flag 32: Stay back from suspect, no tactical contact. Convoy-like.\
    ---Flag 16: Ramming, seems to be slightly less aggressive than 1-2.
    ---@param ped Ped
    ---@param flag integer
    ---@param set BOOL
    SET_TASK_VEHICLE_CHASE_BEHAVIOR_FLAG = function(ped, flag, set) end,

    ---@param ped Ped
    ---@param distance number
    SET_TASK_VEHICLE_CHASE_IDEAL_PURSUIT_DISTANCE = function(ped, distance) end,

    ---Ped pilot should be in a heli.\
    ---EntityToFollow can be a vehicle or Ped.\
    ---\
    ---x,y,z appear to be how close to the EntityToFollow the heli should be. Scripts use 0.0, 0.0, 80.0. Then the heli tries to position itself 80 units above the EntityToFollow. If you reduce it to -5.0, it tries to go below (if the EntityToFollow is a heli or plane)\
    ---\
    ---\
    ---NOTE: If the pilot finds enemies, it will engage them, then remain there idle, not continuing to chase the Entity given.
    ---@param pilot Ped
    ---@param entityToFollow Entity
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_HELI_CHASE = function(pilot, entityToFollow, x, y, z) end,

    ---@param pilot Ped
    ---@param entityToFollow Entity
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_PLANE_CHASE = function(pilot, entityToFollow, x, y, z) end,

    ---@param pilot Ped
    ---@param plane Vehicle
    ---@param runwayStartX number
    ---@param runwayStartY number
    ---@param runwayStartZ number
    ---@param runwayEndX number
    ---@param runwayEndY number
    ---@param runwayEndZ number
    TASK_PLANE_LAND = function(pilot, plane, runwayStartX, runwayStartY, runwayStartZ, runwayEndX, runwayEndY, runwayEndZ) end,

    ---@param ped Ped
    CLEAR_DEFAULT_PRIMARY_TASK = function(ped) end,

    ---This native is very useful when switching the player to a ped inside a vehicle that has a task assigned prior to the player switch.\
    ---It is necessary to clear the ped's tasks AND call this native with the vehicle the player is switching into in order to allow the player to control the vehicle after the player switches.
    ---@param vehicle Vehicle
    CLEAR_PRIMARY_VEHICLE_TASK = function(vehicle) end,

    ---@param vehicle Vehicle
    CLEAR_VEHICLE_CRASH_TASK = function(vehicle) end,

    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param flightHeight integer
    ---@param minHeightAboveTerrain integer
    ---@param useDesiredOrientation BOOL
    ---@param desiredOrientation number
    ---@param autopilot BOOL
    TASK_PLANE_GOTO_PRECISE_VTOL = function(ped, vehicle, x, y, z, flightHeight, minHeightAboveTerrain, useDesiredOrientation, desiredOrientation, autopilot) end,

    ---Used in am_vehicle_spawn.ysc and am_mp_submarine.ysc.\
    ---\
    ---p0 is always 0, p5 is always 1\
    ---\
    ---p1 is the vehicle handle of the submarine. Submarine must have a driver, but the ped handle is not passed to the native.\
    ---\
    ---Speed can be set by calling SET_DRIVE_TASK_CRUISE_SPEED after
    ---@param ped Ped
    ---@param submarine Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param autopilot BOOL
    TASK_SUBMARINE_GOTO_AND_STOP = function(ped, submarine, x, y, z, autopilot) end,

    ---Must have targetVehicle, targetPed, OR destination X/Y/Z set\
    ---Will follow targeted vehicle/ped, or fly to destination\
    ---Set whichever is not being used to 0\
    ---\
    ---\
    ---Mission mode type:\
    --- - 4, 7: Forces heli to snap to the heading if set, flies to destination or tracks specified entity (mode 4 only works for coordinates, 7 works for coordinates OR ped/vehicle)\
    --- - 6: Attacks the target ped/vehicle with mounted weapons. If radius is set, will maintain that distance from target.\
    --- - 8: Makes the heli flee from the ped/vehicle/coordinate\
    --- - 9: Circles around target ped/vehicle, snaps to angle if set. Behavior flag (last parameter) of 2048 switches from counter-clockwise to clockwise circling. Does not work with coordinate destination.\
    --- - 10, 11: Follows ped/vehicle target and imitates target heading. Only works with ped/vehicle target, not coord target\
    --- - 19: Heli lands at specified coordinate, ignores heading (lands facing whatever direction it is facing when the task is started)\
    --- - 20: Makes the heli land when near target ped. It won't resume chasing.\
    --- - 21: Emulates a helicopter crash\
    --- - 23: makes the heli circle erratically around ped\
    ---\
    ---\
    ---Heli will fly at maxSpeed (up to actual maximum speed defined by the model's handling config)\
    ---You can use SET_DRIVE_TASK_CRUISE_SPEED to modulate the speed based on distance to the target without having to re-invoke the task native. Setting to 8.0 when close to the destination results in a much smoother approach.\
    ---\
    ---If minHeight and maxHeight are set, heli will fly between those specified elevations, relative to ground level and any obstructions/buildings below. You can specify -1 for either if you only want to specify one. Usually it is easiest to leave maxHeight at -1, and specify a reasonable minHeight to ensure clearance over any obstacles. Note this MUST be passed as an INT, not a FLOAT. \
    ---\
    ---Radius affects how closely the heli will follow tracked ped/vehicle, and when circling (mission type 9) sets the radius (in meters) that it will circle the target from\
    ---\
    ---Heading is -1.0 for default behavior, which will point the nose of the helicopter towards the destination. Set a heading and the heli will lock to that direction when near its destination/target, but may still turn towards the destination when flying at higher speed from a further distance.\
    ---\
    ---Behavior Flags is a bitwise value that modifies the AI behavior. Not clear what all flags do, but here are some guesses/notes:\
    ---   1: Forces heading to face E\
    ---   2: Unknown\
    ---   4: Tight circles around coordinate destination\
    ---   8: Unknown\
    ---  16: Circles around coordinate destination facing towards destination\
    ---  32: Flys to normally, then lands at coordinate destination and stays on the ground (using mission type 4)\
    ---  64: Ignores obstacles when flying, will follow at specified minHeight above ground level but will not avoid buildings, vehicles, etc.\
    --- 128: Unknown\
    --- 256: Unknown\
    --- 512: Unknown\
    ---1024: Unknown \
    ---2048: Reverses direction of circling (mission type 9) to clockwise\
    ---4096: Hugs closer to the ground, maintains minHeight from ground generally, but barely clears buildings and dips down more between buildings instead of taking a more efficient/safe route\
    ---8192: Unknown\
    ---\
    ---Unk3 is a float value, you may see -1082130432 for this value in decompiled native scripts, this is the equivalent to -1.0f. Seems to affect acceleration/aggressiveness, but not sure exactly how it works. Higher value seems to result in lower acceleration/less aggressive flying. Almost always -1.0 in native scripts, occasionally 20.0 or 50.0. Setting to 400.0 seems to work well for making the pilot not overshoot the destination when using coordinate destination.\
    ---\
    ---Notes updated by PNWParksFan, May 2021\
    ---
    ---@param pilot Ped
    ---@param aircraft Vehicle
    ---@param targetVehicle Vehicle
    ---@param targetPed Ped
    ---@param destinationX number
    ---@param destinationY number
    ---@param destinationZ number
    ---@param missionFlag integer
    ---@param maxSpeed number
    ---@param radius number
    ---@param targetHeading number
    ---@param maxHeight integer
    ---@param minHeight integer
    ---@param slowDownDistance number
    ---@param behaviorFlags integer
    TASK_HELI_MISSION = function(pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, maxSpeed, radius, targetHeading, maxHeight, minHeight, slowDownDistance, behaviorFlags) end,

    ---@param pilot Ped
    ---@param heli1 Vehicle
    ---@param heli2 Vehicle
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    TASK_HELI_ESCORT_HELI = function(pilot, heli1, heli2, offsetX, offsetY, offsetZ) end,

    ---EXAMPLE USAGE:\
    ---\
    ---Fly around target (Precautiously, keeps high altitude):\
    ---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, 200f);\
    ---\
    ---Fly around target (Dangerously, keeps VERY low altitude):\
    ---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -500f);\
    ---\
    ---Fly directly into target:\
    ---Function.Call(Hash.TASK_PLANE_MISSION, pilot, selectedAirplane, 0, 0, Target.X, Target.Y, Target.Z, 4, 100f, 0f, 90f, 0, -5000f);\
    ---\
    ---EXPANDED INFORMATION FOR ADVANCED USAGE (custom pilot)\
    ---\
    ---'physicsSpeed': (THIS IS NOT YOUR ORDINARY SPEED PARAMETER: READ!!)\
    ---Think of this -first- as a radius value, not a true speed value.  The ACTUAL effective speed of the plane will be that of the maximum speed permissible to successfully fly in a -circle- with a radius of 'physicsSpeed'.  This also means that the plane must complete a circle before it can begin its "bombing run", its straight line pass towards the target.  p9 appears to influence the angle at which a "bombing run" begins, although I can't confirm yet.\
    ---\
    ---VERY IMPORTANT: A "bombing run" will only occur if a plane can successfully determine a possible navigable route (the slower the value of 'physicsSpeed', the more precise the pilot can be due to less influence of physics on flightpath).  Otherwise, the pilot will continue to patrol around Destination (be it a dynamic Entity position vector or a fixed world coordinate vector.)\
    ---\
    ---0 = Plane's physics are almost entirely frozen, plane appears to "orbit" around precise destination point\
    ---1-299 = Blend of "frozen, small radius" vs. normal vs. "accelerated, hyperfast, large radius"\
    ---300+ =  Vehicle behaves entirely like a normal gameplay plane.\
    ---\
    ---'patrolBlend' (The lower the value, the more the Destination is treated as a "fly AT" rather than a "fly AROUND point".)\
    ---\
    ---Scenario: Destination is an Entity on ground level, wide open field\
    ----5000 = Pilot kamikazes directly into Entity\
    ----1000 = Pilot flies extremely low -around- Entity, very prone to crashing\
    ----200 = Pilot flies lower than average around Entity.\
    ---0 = Pilot flies around Entity, normal altitude\
    ---200 = Pilot flies an extra eighty units or so higher than 0 while flying around Destination (this doesn't seem to correlate directly into distance units.)\
    ---\
    ----- Valid mission types found in the exe: --\
    ---\
    ---0 = None\
    ---1 = Unk\
    ---2 = CTaskVehicleRam\
    ---3 = CTaskVehicleBlock\
    ---4 = CTaskVehicleGoToPlane\
    ---5 = CTaskVehicleStop\
    ---6 = CTaskVehicleAttack\
    ---7 = CTaskVehicleFollow\
    ---8 = CTaskVehicleFleeAirborne\
    ---9= CTaskVehicleCircle\
    ---10 = CTaskVehicleEscort\
    ---15 = CTaskVehicleFollowRecording\
    ---16 = CTaskVehiclePoliceBehaviour\
    ---17 = CTaskVehicleCrash
    ---@param pilot Ped
    ---@param aircraft Vehicle
    ---@param targetVehicle Vehicle
    ---@param targetPed Ped
    ---@param destinationX number
    ---@param destinationY number
    ---@param destinationZ number
    ---@param missionFlag integer
    ---@param angularDrag number
    ---@param targetReached number
    ---@param targetHeading number
    ---@param maxZ number
    ---@param minZ number
    ---@param precise BOOL
    TASK_PLANE_MISSION = function(pilot, aircraft, targetVehicle, targetPed, destinationX, destinationY, destinationZ, missionFlag, angularDrag, targetReached, targetHeading, maxZ, minZ, precise) end,

    ---@param pilot Ped
    ---@param aircraft Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param cruiseSpeed number
    ---@param targetReached number
    TASK_PLANE_TAXI = function(pilot, aircraft, x, y, z, cruiseSpeed, targetReached) end,

    ---You need to call PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS after TASK_BOAT_MISSION in order for the task to execute.\
    ---\
    ---Working example\
    ---float vehicleMaxSpeed = VEHICLE::GET_VEHICLE_ESTIMATED_MAX_SPEED(ENTITY::GET_ENTITY_MODEL(pedVehicle));\
    ---TASK::TASK_BOAT_MISSION(pedDriver, pedVehicle, 0, 0, waypointCoord.x, waypointCoord.y, waypointCoord.z, 4, vehicleMaxSpeed, 786469, -1.0, 7);\
    ---PED::SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(pedDriver, 1);\
    ---\
    ---P8 appears to be driving style flag - see gtaforums.com/topic/822314-guide-driving-styles/ for documentation
    ---@param pedDriver Ped
    ---@param vehicle Vehicle
    ---@param targetVehicle Vehicle
    ---@param targetPed Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param mission integer
    ---@param maxSpeed number
    ---@param drivingStyle integer
    ---@param targetReached number
    ---@param boatFlags Any
    TASK_BOAT_MISSION = function(pedDriver, vehicle, targetVehicle, targetPed, x, y, z, mission, maxSpeed, drivingStyle, targetReached, boatFlags) end,

    ---Example:\
    ---\
    ---TASK::TASK_DRIVE_BY(l_467[1/*22*/], PLAYER::PLAYER_PED_ID(), 0, 0.0, 0.0, 2.0, 300.0, 100, 0, ${firing_pattern_burst_fire_driveby});\
    ---\
    ---\
    ---\
    ---\
    ---Needs working example. Doesn't seem to do anything.\
    ---\
    ---I marked p2 as targetVehicle as all these shooting related tasks seem to have that in common.\
    ---I marked p6 as distanceToShoot as if you think of GTA's Logic with the native SET_VEHICLE_SHOOT natives, it won't shoot till it gets within a certain distance of the target.\
    ---I marked p7 as pedAccuracy as it seems it's mostly 100 (Completely Accurate), 75, 90, etc. Although this could be the ammo count within the gun, but I highly doubt it. I will change this comment once I find out if it's ammo count or not.
    ---@param driverPed Ped
    ---@param targetPed Ped
    ---@param targetVehicle Vehicle
    ---@param targetX number
    ---@param targetY number
    ---@param targetZ number
    ---@param distanceToShoot number
    ---@param pedAccuracy integer
    ---@param pushUnderneathDrivingTaskIfDriving BOOL
    ---@param firingPattern Hash
    TASK_DRIVE_BY = function(driverPed, targetPed, targetVehicle, targetX, targetY, targetZ, distanceToShoot, pedAccuracy, pushUnderneathDrivingTaskIfDriving, firingPattern) end,

    ---For p1 & p2 (Ped, Vehicle). I could be wrong, as the only time this native is called in scripts is once and both are 0, but I assume this native will work like SET_MOUNTED_WEAPON_TARGET in which has the same exact amount of parameters and the 1st and last 3 parameters are right and the same for both natives.
    ---@param shootingPed Ped
    ---@param targetPed Ped
    ---@param targetVehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    SET_DRIVEBY_TASK_TARGET = function(shootingPed, targetPed, targetVehicle, x, y, z) end,

    ---@param ped Ped
    CLEAR_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_DRIVEBY_TASK_UNDERNEATH_DRIVING_TASK = function(ped) end,

    ---Forces the ped to use the mounted weapon.\
    ---Returns false if task is not possible.
    ---@param ped Ped
    ---@return BOOL
    CONTROL_MOUNTED_WEAPON = function(ped) end,

    ---Note: Look in decompiled scripts and the times that p1 and p2 aren't 0. They are filled with vars. If you look through out that script what other natives those vars are used in, you can tell p1 is a ped and p2 is a vehicle. Which most likely means if you want the mounted weapon to target a ped set targetVehicle to 0 or vice-versa.
    ---@param shootingPed Ped
    ---@param targetPed Ped
    ---@param targetVehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param taskMode integer
    ---@param ignoreTargetVehDeadCheck BOOL
    SET_MOUNTED_WEAPON_TARGET = function(shootingPed, targetPed, targetVehicle, x, y, z, taskMode, ignoreTargetVehDeadCheck) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOUNTED_WEAPON_TASK_UNDERNEATH_DRIVING_TASK = function(ped) end,

    ---Actually has 3 params, not 2.\
    ---\
    ---p0: Ped\
    ---p1: int (or bool?)\
    ---p2: int
    ---@param ped Ped
    ---@param usePhone BOOL
    ---@param desiredPhoneMode integer
    TASK_USE_MOBILE_PHONE = function(ped, usePhone, desiredPhoneMode) end,

    ---@param ped Ped
    ---@param duration integer
    TASK_USE_MOBILE_PHONE_TIMED = function(ped, duration) end,

    ---p2 tend to be 16, 17 or 1\
    ---p3 to p7 tend to be 0.0
    ---@param ped Ped
    ---@param target Ped
    ---@param flags integer
    ---@param goToLocationX number
    ---@param goToLocationY number
    ---@param goToLocationZ number
    ---@param headingDegs number
    ---@param idleTime number
    TASK_CHAT_TO_PED = function(ped, target, flags, goToLocationX, goToLocationY, goToLocationZ, headingDegs, idleTime) end,

    ---Seat Numbers\
    ----------------------------------\
    ---Driver = -1\
    ---Any = -2\
    ---Left-Rear = 1\
    ---Right-Front = 0\
    ---Right-Rear = 2\
    ---Extra seats = 3-14(This may differ from vehicle type e.g. Firetruck Rear Stand, Ambulance Rear)
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param seat integer
    TASK_WARP_PED_INTO_VEHICLE = function(ped, vehicle, seat) end,

    ---//this part of the code is to determine at which entity the player is aiming, for example if you want to create a mod where you give orders to peds\
    ---Entity aimedentity;\
    ---Player player = PLAYER::PLAYER_ID();\
    ---PLAYER::_GET_AIMED_ENTITY(player, &aimedentity);\
    ---\
    ---//bg is an array of peds\
    ---TASK::TASK_SHOOT_AT_ENTITY(bg[i], aimedentity, 5000, MISC::GET_HASH_KEY("FIRING_PATTERN_FULL_AUTO"));\
    ---\
    ---in practical usage, getting the entity the player is aiming at and then task the peds to shoot at the entity, at a button press event would be better.\
    ---\
    ---Firing Pattern Hash Information: https://pastebin.com/Px036isB
    ---@param entity Entity
    ---@param target Entity
    ---@param duration integer
    ---@param firingPattern Hash
    TASK_SHOOT_AT_ENTITY = function(entity, target, duration, firingPattern) end,

    ---Climbs or vaults the nearest thing.\
    ---usePlayerLaunchForce is unused.
    ---@param ped Ped
    ---@param usePlayerLaunchForce BOOL
    TASK_CLIMB = function(ped, usePlayerLaunchForce) end,

    ---@param ped Ped
    ---@param fast BOOL
    TASK_CLIMB_LADDER = function(ped, fast) end,

    ---Attaches a ped to a rope and allows player control to rappel down a wall. Disables all collisions while on the rope.\
    ---p10: Usually 1 in the scripts, clipSet: Clipset to use for the task, minZ: Minimum Z that the player can descend to, ropeHandle: Rope to attach this task to created with ADD_ROPE
    ---@param ped Ped
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param minZ number
    ---@param ropeHandle integer
    ---@param clipSet string
    ---@param p10 Any
    ---@param p11 Any
    TASK_RAPPEL_DOWN_WALL_USING_CLIPSET_OVERRIDE = function(ped, x1, y1, z1, x2, y2, z2, minZ, ropeHandle, clipSet, p10, p11) end,

    ---@param ped Ped
    ---@return integer
    GET_TASK_RAPPEL_DOWN_WALL_STATE = function(ped) end,

    ---Immediately stops the pedestrian from whatever it's doing. They stop fighting, animations, etc. they forget what they were doing.
    ---@param ped Ped
    CLEAR_PED_TASKS_IMMEDIATELY = function(ped) end,

    ---@param ped Ped
    ---@param taskIndex integer
    ---@param progress1 integer
    ---@param progress2 integer
    TASK_PERFORM_SEQUENCE_FROM_PROGRESS = function(ped, taskIndex, progress1, progress2) end,

    ---This native does absolutely nothing, just a nullsub\
    ---\
    ---R* Comment:\
    ---SET_NEXT_DESIRED_MOVE_STATE - Function is deprecated - do not use anymore
    ---@param nextMoveState number
    SET_NEXT_DESIRED_MOVE_STATE = function(nextMoveState) end,

    ---@param ped Ped
    ---@param newMoveBlendRatio number
    SET_PED_DESIRED_MOVE_BLEND_RATIO = function(ped, newMoveBlendRatio) end,

    ---@param ped Ped
    ---@return number
    GET_PED_DESIRED_MOVE_BLEND_RATIO = function(ped) end,

    ---eg\
    ---\
    --- TASK::TASK_GOTO_ENTITY_AIMING(v_2, PLAYER::PLAYER_PED_ID(), 5.0, 25.0);\
    ---\
    ---ped = Ped you want to perform this task.\
    ---target = the Entity they should aim at.\
    ---distanceToStopAt = distance from the target, where the ped should stop to aim.\
    ---StartAimingDist = distance where the ped should start to aim.
    ---@param ped Ped
    ---@param target Entity
    ---@param distanceToStopAt number
    ---@param StartAimingDist number
    TASK_GOTO_ENTITY_AIMING = function(ped, target, distanceToStopAt, StartAimingDist) end,

    ---p1 is always GET_HASH_KEY("empty") in scripts, for the rare times this is used
    ---@param ped Ped
    ---@param decisionMakerId Hash
    TASK_SET_DECISION_MAKER = function(ped, decisionMakerId) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    TASK_SET_SPHERE_DEFENSIVE_AREA = function(ped, x, y, z, radius) end,

    ---@param ped Ped
    TASK_CLEAR_DEFENSIVE_AREA = function(ped) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param speed number
    TASK_PED_SLIDE_TO_COORD = function(ped, x, y, z, heading, speed) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param speed number
    ---@param headingChangeRate number
    TASK_PED_SLIDE_TO_COORD_HDG_RATE = function(ped, x, y, z, heading, speed, headingChangeRate) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param direction number
    ---@param usage integer
    ---@param height integer
    ---@param arc integer
    ---@param isPriority BOOL
    ---@return ScrHandle
    ADD_COVER_POINT = function(x, y, z, direction, usage, height, arc, isPriority) end,

    ---@param coverpoint ScrHandle
    REMOVE_COVER_POINT = function(coverpoint) end,

    ---Checks if there is a cover point at position
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return BOOL
    DOES_SCRIPTED_COVER_POINT_EXIST_AT_COORDS = function(x, y, z) end,

    ---@param coverpoint ScrHandle
    ---@return Vector3
    GET_SCRIPTED_COVER_POINT_COORDS = function(coverpoint) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ADD_SCRIPTED_COVER_AREA = function(x, y, z, radius) end,

    ---Makes the specified ped attack the target ped.\
    ---p2 should be 0\
    ---p3 should be 16
    ---@param ped Ped
    ---@param targetPed Ped
    ---@param combatFlags integer
    ---@param threatResponseFlags integer
    TASK_COMBAT_PED = function(ped, targetPed, combatFlags, threatResponseFlags) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param time integer
    ---@param flags integer
    TASK_COMBAT_PED_TIMED = function(ped, target, time, flags) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param duration integer
    ---@param allowPeekingAndFiring BOOL
    TASK_SEEK_COVER_FROM_POS = function(ped, x, y, z, duration, allowPeekingAndFiring) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param duration integer
    ---@param allowPeekingAndFiring BOOL
    TASK_SEEK_COVER_FROM_PED = function(ped, target, duration, allowPeekingAndFiring) end,

    ---p5 is always -1
    ---@param ped Ped
    ---@param coverpoint ScrHandle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param time integer
    ---@param allowPeekingAndFiring BOOL
    TASK_SEEK_COVER_TO_COVER_POINT = function(ped, coverpoint, x, y, z, time, allowPeekingAndFiring) end,

    ---p8 causes the ped to take the shortest route to the cover position. It may have something to do with navmesh or pathfinding mechanics.\
    ---\
    ---from michael2:\
    ---TASK::TASK_SEEK_COVER_TO_COORDS(ped, 967.5164794921875, -2121.603515625, 30.479299545288086, 978.94677734375, -2125.84130859375, 29.4752, -1, 1);\
    ---\
    ---\
    ---appears to be shorter variation\
    ---from michael3:\
    ---TASK::TASK_SEEK_COVER_TO_COORDS(ped, -2231.011474609375, 263.6326599121094, 173.60195922851562, -1, 0);
    ---@param ped Ped
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param timeout integer
    ---@param shortRoute BOOL
    TASK_SEEK_COVER_TO_COORDS = function(ped, x1, y1, z1, x2, y2, z2, timeout, shortRoute) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param time integer
    ---@param allowPeekingAndFiring BOOL
    ---@param blendInDuration number
    ---@param forceInitialFacingDirection BOOL
    ---@param forceFaceLeft BOOL
    ---@param identifier integer
    ---@param doEntry BOOL
    TASK_PUT_PED_DIRECTLY_INTO_COVER = function(ped, x, y, z, time, allowPeekingAndFiring, blendInDuration, forceInitialFacingDirection, forceFaceLeft, identifier, doEntry) end,

    ---@param ped Ped
    ---@param time integer
    ---@param allowPeekingAndFiring BOOL
    ---@param forceInitialFacingDirection BOOL
    ---@param forceFaceLeft BOOL
    ---@param identifier integer
    TASK_WARP_PED_DIRECTLY_INTO_COVER = function(ped, time, allowPeekingAndFiring, forceInitialFacingDirection, forceFaceLeft, identifier) end,

    ---p1 is 1, 2, or 3 in scripts
    ---@param ped Ped
    ---@param exitType integer
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_EXIT_COVER = function(ped, exitType, x, y, z) end,

    ---from armenian3.c4\
    ---\
    ---TASK::TASK_PUT_PED_DIRECTLY_INTO_MELEE(PlayerPed, armenianPed, 0.0, -1.0, 0.0, 0);\
    ---
    ---@param ped Ped
    ---@param meleeTarget Ped
    ---@param blendInDuration number
    ---@param timeInMelee number
    ---@param strafePhaseSync number
    ---@param aiCombatFlags integer
    TASK_PUT_PED_DIRECTLY_INTO_MELEE = function(ped, meleeTarget, blendInDuration, timeInMelee, strafePhaseSync, aiCombatFlags) end,

    ---used in sequence task\
    ---\
    ---both parameters seems to be always 0
    ---@param ped Ped
    ---@param toggleType integer
    TASK_TOGGLE_DUCK = function(ped, toggleType) end,

    ---From re_prisonvanbreak:\
    ---\
    ---TASK::TASK_GUARD_CURRENT_POSITION(l_DD, 35.0, 35.0, 1);
    ---@param ped Ped
    ---@param maxPatrolProximity number
    ---@param defensiveAreaRadius number
    ---@param setDefensiveArea BOOL
    TASK_GUARD_CURRENT_POSITION = function(ped, maxPatrolProximity, defensiveAreaRadius, setDefensiveArea) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param maxPatrolProximity number
    ---@param timer integer
    TASK_GUARD_ASSIGNED_DEFENSIVE_AREA = function(ped, x, y, z, heading, maxPatrolProximity, timer) end,

    ---@param ped Ped
    ---@param defendPositionX number
    ---@param defendPositionY number
    ---@param defendPositionZ number
    ---@param heading number
    ---@param maxPatrolProximity number
    ---@param time integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param defensiveAreaRadius number
    TASK_GUARD_SPHERE_DEFENSIVE_AREA = function(ped, defendPositionX, defendPositionY, defendPositionZ, heading, maxPatrolProximity, time, x, y, z, defensiveAreaRadius) end,

    ---scenarioName example: "WORLD_HUMAN_GUARD_STAND"
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param scenarioName string
    TASK_STAND_GUARD = function(ped, x, y, z, heading, scenarioName) end,

    ---@param driver Ped
    ---@param cruiseSpeed number
    SET_DRIVE_TASK_CRUISE_SPEED = function(driver, cruiseSpeed) end,

    ---@param ped Ped
    ---@param speed number
    ---@param updateBaseTask BOOL
    SET_DRIVE_TASK_MAX_CRUISE_SPEED = function(ped, speed, updateBaseTask) end,

    ---This native is used to set the driving style for specific ped.\
    ---\
    ---Driving styles id seems to be:\
    ---786468\
    ---262144\
    ---786469\
    ---\
    ---http://gtaforums.com/topic/822314-guide-driving-styles/
    ---@param ped Ped
    ---@param drivingStyle integer
    SET_DRIVE_TASK_DRIVING_STYLE = function(ped, drivingStyle) end,

    ---@param startX number
    ---@param startY number
    ---@param startZ number
    ---@param endX number
    ---@param endY number
    ---@param endZ number
    ---@param blockObjects BOOL
    ---@param blockVehicles BOOL
    ---@param blockMap BOOL
    ---@param blockPlayer BOOL
    ADD_COVER_BLOCKING_AREA = function(startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) end,

    REMOVE_ALL_COVER_BLOCKING_AREAS = function() end,

    ---@param x number
    ---@param y number
    ---@param z number
    REMOVE_COVER_BLOCKING_AREAS_AT_POSITION = function(x, y, z) end,

    ---@param startX number
    ---@param startY number
    ---@param startZ number
    ---@param endX number
    ---@param endY number
    ---@param endZ number
    ---@param blockObjects BOOL
    ---@param blockVehicles BOOL
    ---@param blockMap BOOL
    ---@param blockPlayer BOOL
    REMOVE_SPECIFIC_COVER_BLOCKING_AREAS = function(startX, startY, startZ, endX, endY, endZ, blockObjects, blockVehicles, blockMap, blockPlayer) end,

    ---Plays a scenario on a Ped at their current location.\
    ---\
    ---unkDelay - Usually 0 or -1, doesn't seem to have any effect. Might be a delay between sequences.\
    ---playEnterAnim - Plays the "Enter" anim if true, otherwise plays the "Exit" anim. Scenarios that don't have any "Enter" anims won't play if this is set to true.\
    ---\
    -------\
    ---\
    ---From "am_hold_up.ysc.c4" at line 339:\
    ---\
    ---TASK::TASK_START_SCENARIO_IN_PLACE(NETWORK::NET_TO_PED(l_8D._f4), sub_adf(), 0, 1);\
    ---\
    ---I'm unsure of what the last two parameters are, however sub_adf() randomly returns 1 of 3 scenarios, those being:\
    ---WORLD_HUMAN_SMOKING\
    ---WORLD_HUMAN_HANG_OUT_STREET\
    ---WORLD_HUMAN_STAND_MOBILE\
    ---\
    ---This makes sense, as these are what I commonly see when going by a liquor store.\
    ----------------------------\
    ---List of scenarioNames: https://pastebin.com/6mrYTdQv\
    ---(^ Thank you so fucking much for this)\
    ---\
    ---Also these:\
    ---WORLD_FISH_FLEE\
    ---DRIVE\
    ---WORLD_HUMAN_HIKER\
    ---WORLD_VEHICLE_ATTRACTOR\
    ---WORLD_VEHICLE_BICYCLE_MOUNTAIN\
    ---WORLD_VEHICLE_BIKE_OFF_ROAD_RACE\
    ---WORLD_VEHICLE_BIKER\
    ---WORLD_VEHICLE_CONSTRUCTION_PASSENGERS\
    ---WORLD_VEHICLE_CONSTRUCTION_SOLO\
    ---WORLD_VEHICLE_DRIVE_PASSENGERS\
    ---WORLD_VEHICLE_DRIVE_SOLO\
    ---WORLD_VEHICLE_EMPTY\
    ---WORLD_VEHICLE_PARK_PARALLEL\
    ---WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN\
    ---WORLD_VEHICLE_POLICE_BIKE\
    ---WORLD_VEHICLE_POLICE_CAR\
    ---WORLD_VEHICLE_POLICE_NEXT_TO_CAR\
    ---WORLD_VEHICLE_SALTON_DIRT_BIKE\
    ---WORLD_VEHICLE_TRUCK_LOGS\
    ---\
    ---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json
    ---@param ped Ped
    ---@param scenarioName string
    ---@param unkDelay integer
    ---@param playEnterAnim BOOL
    TASK_START_SCENARIO_IN_PLACE = function(ped, scenarioName, unkDelay, playEnterAnim) end,

    ---Full list of ped scenarios by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json\
    ---\
    ---Also a few more listed at TASK::TASK_START_SCENARIO_IN_PLACE just above.\
    ------------------\
    ---The first parameter in every scenario has always been a Ped of some sort. The second like TASK_START_SCENARIO_IN_PLACE is the name of the scenario. \
    ---\
    ---The next 4 parameters were harder to decipher. After viewing "hairdo_shop_mp.ysc.c4", and being confused from seeing the case in other scripts, they passed the first three of the arguments as one array from a function, and it looked like it was obviously x, y, and z.\
    ---\
    ---I haven't seen the sixth parameter go to or over 360, making me believe that it is rotation, but I really can't confirm anything.\
    ---\
    ---I have no idea what the last 3 parameters are, but I'll try to find out.\
    ---\
    ----going on the last 3 parameters, they appear to always be "0, 0, 1"\
    ---\
    ---p6 -1 also used in scrips\
    ---\
    ---p7 used for sitting scenarios\
    ---\
    ---p8 teleports ped to position
    ---@param ped Ped
    ---@param scenarioName string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param duration integer
    ---@param sittingScenario BOOL
    ---@param teleport BOOL
    TASK_START_SCENARIO_AT_POSITION = function(ped, scenarioName, x, y, z, heading, duration, sittingScenario, teleport) end,

    ---Updated variables\
    ---\
    ---An alternative to TASK::TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP. Makes the ped walk to the scenario instead.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param distance number
    ---@param duration integer
    TASK_USE_NEAREST_SCENARIO_TO_COORD = function(ped, x, y, z, distance, duration) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param timeToLeave integer
    TASK_USE_NEAREST_SCENARIO_TO_COORD_WARP = function(ped, x, y, z, radius, timeToLeave) end,

    ---p5 is always 0 in scripts
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param maxRange number
    ---@param timeToLeave integer
    TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD = function(ped, x, y, z, maxRange, timeToLeave) end,

    ---p5 is always -1 or 0 in scripts
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param timeToLeave integer
    TASK_USE_NEAREST_SCENARIO_CHAIN_TO_COORD_WARP = function(ped, x, y, z, radius, timeToLeave) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param mustBeFree BOOL
    ---@return BOOL
    DOES_SCENARIO_EXIST_IN_AREA = function(x, y, z, radius, mustBeFree) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param scenarioName string
    ---@param radius number
    ---@param mustBeFree BOOL
    ---@return BOOL
    DOES_SCENARIO_OF_TYPE_EXIST_IN_AREA = function(x, y, z, scenarioName, radius, mustBeFree) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param maxRange number
    ---@param onlyUsersActuallyAtScenario BOOL
    ---@return BOOL
    IS_SCENARIO_OCCUPIED = function(x, y, z, maxRange, onlyUsersActuallyAtScenario) end,

    ---@param ped Ped
    ---@return BOOL
    PED_HAS_USE_SCENARIO_TASK = function(ped) end,

    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param animDict string
    ---@param animName string
    PLAY_ANIM_ON_RUNNING_SCENARIO = function(ped, animDict, animName) end,

    ---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json\
    ---Occurrences in the b617d scripts:\
    ---\
    ---"ARMY_GUARD",\
    ---"ARMY_HELI",\
    ---"Cinema_Downtown",\
    ---"Cinema_Morningwood",\
    ---"Cinema_Textile",\
    ---"City_Banks",\
    ---"Countryside_Banks",\
    ---"DEALERSHIP",\
    ---"GRAPESEED_PLANES",\
    ---"KORTZ_SECURITY",\
    ---"LOST_BIKERS",\
    ---"LSA_Planes",\
    ---"LSA_Planes",\
    ---"MP_POLICE",\
    ---"Observatory_Bikers", \
    ---"POLICE_POUND1",\
    ---"POLICE_POUND2",\
    ---"POLICE_POUND3",\
    ---"POLICE_POUND4",\
    ---"POLICE_POUND5"\
    ---"QUARRY",\
    ---"SANDY_PLANES",\
    ---"SCRAP_SECURITY",\
    ---"SEW_MACHINE",\
    ---"SOLOMON_GATE",\
    ---"Triathlon_1_Start", \
    ---"Triathlon_2_Start", \
    ---"Triathlon_3_Start"\
    ---\
    ---Sometimes used with IS_SCENARIO_GROUP_ENABLED:\
    ---if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") && (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {\
    ---else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {\
    ---
    ---@param scenarioGroup string
    ---@return BOOL
    DOES_SCENARIO_GROUP_EXIST = function(scenarioGroup) end,

    ---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json\
    ---Occurrences in the b617d scripts: \
    ---\
    --- "ARMY_GUARD",\
    --- "ARMY_HELI",\
    --- "BLIMP",\
    --- "Cinema_Downtown",\
    --- "Cinema_Morningwood",\
    --- "Cinema_Textile",\
    --- "City_Banks",\
    --- "Countryside_Banks",\
    --- "DEALERSHIP",\
    --- "KORTZ_SECURITY",\
    --- "LSA_Planes",\
    --- "MP_POLICE",\
    --- "Observatory_Bikers",\
    --- "POLICE_POUND1",\
    --- "POLICE_POUND2",\
    --- "POLICE_POUND3",\
    --- "POLICE_POUND4",\
    --- "POLICE_POUND5",\
    --- "Rampage1",\
    --- "SANDY_PLANES",\
    --- "SCRAP_SECURITY",\
    --- "SEW_MACHINE",\
    --- "SOLOMON_GATE"\
    ---\
    ---Sometimes used with DOES_SCENARIO_GROUP_EXIST:\
    ---if (TASK::DOES_SCENARIO_GROUP_EXIST("Observatory_Bikers") &&   (!TASK::IS_SCENARIO_GROUP_ENABLED("Observatory_Bikers"))) {\
    ---else if (TASK::IS_SCENARIO_GROUP_ENABLED("BLIMP")) {
    ---@param scenarioGroup string
    ---@return BOOL
    IS_SCENARIO_GROUP_ENABLED = function(scenarioGroup) end,

    ---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json\
    ---Occurrences in the b617d scripts: https://pastebin.com/Tvg2PRHU
    ---@param scenarioGroup string
    ---@param enabled BOOL
    SET_SCENARIO_GROUP_ENABLED = function(scenarioGroup, enabled) end,

    RESET_SCENARIO_GROUPS_ENABLED = function() end,

    ---Full list of scenario groups used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenarioGroupNames.json\
    ---Groups found in the scripts used with this native:\
    ---\
    ---"AMMUNATION",\
    ---"QUARRY",\
    ---"Triathlon_1",\
    ---"Triathlon_2",\
    ---"Triathlon_3"
    ---@param scenarioGroup string
    SET_EXCLUSIVE_SCENARIO_GROUP = function(scenarioGroup) end,

    RESET_EXCLUSIVE_SCENARIO_GROUP = function() end,

    ---Full list of scenario types used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json\
    ---Occurrences in the b617d scripts:\
    ---"PROP_HUMAN_SEAT_CHAIR",\
    ---"WORLD_HUMAN_DRINKING",\
    ---"WORLD_HUMAN_HANG_OUT_STREET",\
    ---"WORLD_HUMAN_SMOKING",\
    ---"WORLD_MOUNTAIN_LION_WANDER",\
    ---"WORLD_HUMAN_DRINKING"\
    ---\
    ---Sometimes used together with MISC::IS_STRING_NULL_OR_EMPTY in the scripts.\
    ---\
    ---scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.\
    ---
    ---@param scenarioType string
    ---@return BOOL
    IS_SCENARIO_TYPE_ENABLED = function(scenarioType) end,

    ---Full list of scenario types used in scripts by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/scenariosCompact.json\
    ---seems to enable/disable specific scenario-types from happening in the game world.\
    ---\
    ---Here are some scenario types from the scripts:\
    ---"WORLD_MOUNTAIN_LION_REST"                                             \
    ---"WORLD_MOUNTAIN_LION_WANDER"                                            \
    ---"DRIVE"                                                                  \
    ---"WORLD_VEHICLE_POLICE_BIKE"                                             \
    ---"WORLD_VEHICLE_POLICE_CAR"                                             \
    ---"WORLD_VEHICLE_POLICE_NEXT_TO_CAR"                                        \
    ---"WORLD_VEHICLE_DRIVE_SOLO"                                                 \
    ---"WORLD_VEHICLE_BIKER"                                                      \
    ---"WORLD_VEHICLE_DRIVE_PASSENGERS"                                           \
    ---"WORLD_VEHICLE_SALTON_DIRT_BIKE"                                           \
    ---"WORLD_VEHICLE_BICYCLE_MOUNTAIN"                                           \
    ---"PROP_HUMAN_SEAT_CHAIR"                                             \
    ---"WORLD_VEHICLE_ATTRACTOR"                                             \
    ---"WORLD_HUMAN_LEANING"                                                 \
    ---"WORLD_HUMAN_HANG_OUT_STREET"                                        \
    ---"WORLD_HUMAN_DRINKING"                                                \
    ---"WORLD_HUMAN_SMOKING"                                                \
    ---"WORLD_HUMAN_GUARD_STAND"                                            \
    ---"WORLD_HUMAN_CLIPBOARD"                                              \
    ---"WORLD_HUMAN_HIKER"                                                  \
    ---"WORLD_VEHICLE_EMPTY"                                                      \
    ---"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE"                                      \
    ---"WORLD_HUMAN_PAPARAZZI"                                               \
    ---"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN"                            \
    ---"WORLD_VEHICLE_PARK_PARALLEL"                                              \
    ---"WORLD_VEHICLE_CONSTRUCTION_SOLO"                               \
    ---"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS"                                                                    \
    ---"WORLD_VEHICLE_TRUCK_LOGS"\
    ---\
    ---scenarioType could be the same as scenarioName, used in for example TASK::TASK_START_SCENARIO_AT_POSITION.
    ---@param scenarioType string
    ---@param toggle BOOL
    SET_SCENARIO_TYPE_ENABLED = function(scenarioType, toggle) end,

    RESET_SCENARIO_TYPES_ENABLED = function() end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_ACTIVE_IN_SCENARIO = function(ped) end,

    ---Used only once (am_mp_property_int)\
    ---\
    ---ped was PLAYER_PED_ID()\
    ---\
    ---Related to CTaskAmbientClips.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_PLAYING_BASE_CLIP_IN_SCENARIO = function(ped) end,

    ---Appears only in fm_mission_controller and used only 3 times.\
    ---\
    ---ped was always PLAYER_PED_ID()\
    ---p1 was always true\
    ---p2 was always true
    ---@param ped Ped
    ---@param blockIdleClips BOOL
    ---@param removeIdleClipIfPlaying BOOL
    SET_PED_CAN_PLAY_AMBIENT_IDLES = function(ped, blockIdleClips, removeIdleClipIfPlaying) end,

    ---Despite its name, it only attacks ONE hated target. The one closest to the specified position.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param combatFlags integer
    TASK_COMBAT_HATED_TARGETS_IN_AREA = function(ped, x, y, z, radius, combatFlags) end,

    ---Despite its name, it only attacks ONE hated target. The one closest hated target.\
    ---\
    ---p2 seems to be always 0
    ---@param ped Ped
    ---@param radius number
    ---@param combatFlags integer
    TASK_COMBAT_HATED_TARGETS_AROUND_PED = function(ped, radius, combatFlags) end,

    ---@param ped Ped
    ---@param radius number
    ---@param time integer
    ---@param combatFlags integer
    TASK_COMBAT_HATED_TARGETS_AROUND_PED_TIMED = function(ped, radius, time, combatFlags) end,

    ---In every case of this native, I've only seen the first parameter passed as 0, although I believe it's a Ped after seeing tasks around it using 0. That's because it's used in a Sequence Task.\
    ---\
    ---The last 3 parameters are definitely coordinates after seeing them passed in other scripts, and even being used straight from the player's coordinates.\
    ------\
    ---It seems that - in the decompiled scripts - this native was used on a ped who was in a vehicle to throw a projectile out the window at the player. This is something any ped will naturally do if they have a throwable and they are doing driveby-combat (although not very accurately).\
    ---It is possible, however, that this is how SWAT throws smoke grenades at the player when in cover.\
    -------------------------------------------------------\
    ---The first comment is right it definately is the ped as if you look in script finale_heist2b.c line 59628 in Xbox Scripts atleast you will see task_throw_projectile and the first param is Local_559[2 <14>] if you look above it a little bit line 59622 give_weapon_to_ped uses the same exact param Local_559[2 <14>] and we all know the first param of that native is ped. So it guaranteed has to be ped. 0 just may mean to use your ped by default for some reason.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param ignoreCollisionEntityIndex integer
    ---@param createInvincibleProjectile BOOL
    TASK_THROW_PROJECTILE = function(ped, x, y, z, ignoreCollisionEntityIndex, createInvincibleProjectile) end,

    ---@param ped Ped
    ---@param drawWeapon BOOL
    TASK_SWAP_WEAPON = function(ped, drawWeapon) end,

    ---The 2nd param (drawWeapon) is not implemented.\
    ---\
    --------------------------------------------------------------------------\
    ---\
    ---The only occurrence I found in a R* script ("assassin_construction.ysc.c4"):\
    ---\
    ---            if (((v_3 < v_4) && (TASK::GET_SCRIPT_TASK_STATUS(PLAYER::PLAYER_PED_ID(), 0x6a67a5cc) != 1)) && (v_5 > v_3)) {\
    ---                TASK::TASK_RELOAD_WEAPON(PLAYER::PLAYER_PED_ID(), 1);\
    ---        }
    ---@param ped Ped
    ---@param drawWeapon BOOL
    TASK_RELOAD_WEAPON = function(ped, drawWeapon) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_GETTING_UP = function(ped) end,

    ---EX: Function.Call(Ped1, Ped2, Time, 0);\
    ---\
    ---The last parameter is always 0 for some reason I do not know. The first parameter is the pedestrian who will writhe to the pedestrian in the other parameter. The third paremeter is how long until the Writhe task ends. When the task ends, the ped will die. If set to -1, he will not die automatically, and the task will continue until something causes it to end. This can be being touched by an entity, being shot, explosion, going into ragdoll, having task cleared. Anything that ends the current task will kill the ped at this point.\
    ---\
    ---\
    ---\
    ---Third parameter does not appear to be time. The last parameter is not implemented (It's not used, regardless of value).
    ---@param ped Ped
    ---@param target Ped
    ---@param minFireLoops integer
    ---@param startState integer
    ---@param forceShootOnGround BOOL
    ---@param shootFromGroundTimer integer
    TASK_WRITHE = function(ped, target, minFireLoops, startState, forceShootOnGround, shootFromGroundTimer) end,

    ---This native checks if a ped is on the ground, in pain from a (gunshot) wound.\
    ---Returns `true` if the ped is in writhe, `false` otherwise.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_IN_WRITHE = function(ped) end,

    --- patrolRoutes found in the b617d scripts:\
    --- "miss_Ass0",\
    --- "miss_Ass1",\
    --- "miss_Ass2",\
    --- "miss_Ass3",\
    --- "miss_Ass4",\
    --- "miss_Ass5",\
    --- "miss_Ass6",\
    --- "MISS_PATROL_6",\
    --- "MISS_PATROL_7",\
    --- "MISS_PATROL_8",\
    --- "MISS_PATROL_9",\
    --- "miss_Tower_01",\
    --- "miss_Tower_02",\
    --- "miss_Tower_03",\
    --- "miss_Tower_04",\
    --- "miss_Tower_05",\
    --- "miss_Tower_06",\
    --- "miss_Tower_07",\
    --- "miss_Tower_08",\
    --- "miss_Tower_10"
    ---@param patrolRoute string
    OPEN_PATROL_ROUTE = function(patrolRoute) end,

    CLOSE_PATROL_ROUTE = function() end,

    ---Example: \
    ---TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", -193.4915, -2378.864990234375, 10.9719, -193.4915, -2378.864990234375, 10.9719, 3000);\
    ---\
    ---p0 is between 0 and 4 in the scripts.\
    ---\
    ---p1 is "WORLD_HUMAN_GUARD_STAND" or "StandGuard".\
    ---\
    ---p2, p3 and p4 is only one parameter sometimes in the scripts. Most likely a Vector3 hence p2, p3 and p4 are coordinates. \
    ---Examples: \
    ---TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_739[7/*3*/], 0.0, 0.0, 0.0, 0);\
    ---\
    ---TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_B0[17/*44*/]._f3, l_B0[17/*44*/]._f3, 2000);\
    ---\
    ---p5, p6 and p7 are for example set to: 1599.0406494140625, 2713.392578125, 44.4309.\
    ---\
    ---p8 is an int, often random set to for example: MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000).
    ---@param nodeId integer
    ---@param nodeType string
    ---@param posX number
    ---@param posY number
    ---@param posZ number
    ---@param headingX number
    ---@param headingY number
    ---@param headingZ number
    ---@param duration integer
    ADD_PATROL_ROUTE_NODE = function(nodeId, nodeType, posX, posY, posZ, headingX, headingY, headingZ, duration) end,

    ---@param nodeId1 integer
    ---@param nodeId2 integer
    ADD_PATROL_ROUTE_LINK = function(nodeId1, nodeId2) end,

    CREATE_PATROL_ROUTE = function() end,

    ---From the b617d scripts:\
    ---\
    ---TASK::DELETE_PATROL_ROUTE("miss_merc0");\
    ---TASK::DELETE_PATROL_ROUTE("miss_merc1");\
    ---TASK::DELETE_PATROL_ROUTE("miss_merc2");\
    ---TASK::DELETE_PATROL_ROUTE("miss_dock");
    ---@param patrolRoute string
    DELETE_PATROL_ROUTE = function(patrolRoute) end,

    ---@param ped Ped
    ---@param timeLeftAtNode integer
    ---@param nodeId integer
    ---@return BOOL
    ---@return integer
    ---@return integer
    GET_PATROL_TASK_INFO = function(ped, timeLeftAtNode, nodeId) end,

    ---After looking at some scripts the second parameter seems to be an id of some kind. Here are some I found from some R* scripts:\
    ---\
    ---"miss_Tower_01" (this went from 01 - 10)\
    ---"miss_Ass0" (0, 4, 6, 3)\
    ---"MISS_PATROL_8"\
    ---\
    ---I think they're patrol routes, but I'm not sure. And I believe the 3rd parameter is a BOOL, but I can't confirm other than only seeing 0 and 1 being passed.\
    ---\
    ---\
    ---As far as I can see the patrol routes names such as "miss_Ass0" have been defined earlier in the scripts. This leads me to believe we can defined our own new patrol routes by following the same approach. \
    ---From the scripts\
    ---\
    ---    TASK::OPEN_PATROL_ROUTE("miss_Ass0");\
    ---    TASK::ADD_PATROL_ROUTE_NODE(0, "WORLD_HUMAN_GUARD_STAND", l_738[0/*3*/], -139.4076690673828, -993.4732055664062, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));\
    ---    TASK::ADD_PATROL_ROUTE_NODE(1, "WORLD_HUMAN_GUARD_STAND", l_738[1/*3*/], -116.1391830444336, -987.4984130859375, 26.38541030883789, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));\
    ---    TASK::ADD_PATROL_ROUTE_NODE(2, "WORLD_HUMAN_GUARD_STAND", l_738[2/*3*/], -128.46847534179688, -979.0340576171875, 26.2754, MISC::GET_RANDOM_INT_IN_RANGE(5000, 10000));\
    ---    TASK::ADD_PATROL_ROUTE_LINK(0, 1);\
    ---    TASK::ADD_PATROL_ROUTE_LINK(1, 2);\
    ---    TASK::ADD_PATROL_ROUTE_LINK(2, 0);\
    ---    TASK::CLOSE_PATROL_ROUTE();\
    ---    TASK::CREATE_PATROL_ROUTE();\
    ---\
    ---
    ---@param ped Ped
    ---@param patrolRouteName string
    ---@param alertState integer
    ---@param canChatToPeds BOOL
    ---@param useHeadLookAt BOOL
    TASK_PATROL = function(ped, patrolRouteName, alertState, canChatToPeds, useHeadLookAt) end,

    ---Makes the ped run to take cover
    ---@param ped Ped
    TASK_STAY_IN_COVER = function(ped) end,

    ---x, y, z: offset in world coords from some entity.
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ADD_VEHICLE_SUBTASK_ATTACK_COORD = function(ped, x, y, z) end,

    ---@param ped Ped
    ---@param target Ped
    ADD_VEHICLE_SUBTASK_ATTACK_PED = function(ped, target) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param fireTolerance number
    TASK_VEHICLE_SHOOT_AT_PED = function(ped, target, fireTolerance) end,

    ---@param ped Ped
    ---@param target Ped
    TASK_VEHICLE_AIM_AT_PED = function(ped, target) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param fireTolerance number
    TASK_VEHICLE_SHOOT_AT_COORD = function(ped, x, y, z, fireTolerance) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    TASK_VEHICLE_AIM_AT_COORD = function(ped, x, y, z) end,

    ---Differs from TASK_VEHICLE_DRIVE_TO_COORDS in that it will pick the shortest possible road route without taking one-way streets and other "road laws" into consideration.\
    ---\
    ---WARNING:\
    ---A behaviorFlag value of 0 will result in a clunky, stupid driver!\
    ---\
    ---Recommended settings:\
    ---speed = 30.0f,\
    ---behaviorFlag = 156, \
    ---stoppingRange = 5.0f;\
    ---\
    ---If you simply want to have your driver move to a fixed location, call it only once, or, when necessary in the event of interruption. \
    ---\
    ---If using this to continually follow a Ped who is on foot:  You will need to run this in a tick loop.  Call it in with the Ped's updated coordinates every 20 ticks or so and you will have one hell of a smart, fast-reacting NPC driver -- provided he doesn't get stuck.  If your update frequency is too fast, the Ped may not have enough time to figure his way out of being stuck, and thus, remain stuck.  One way around this would be to implement an "anti-stuck" mechanism, which allows the driver to realize he's stuck, temporarily pause the tick, unstuck, then resume the tick.\
    ---\
    ---EDIT:  This is being discussed in more detail at http://gtaforums.com/topic/818504-any-idea-on-how-to-make-peds-clever-and-insanely-fast-c/  
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param speed number
    ---@param behaviorFlag integer
    ---@param stoppingRange number
    TASK_VEHICLE_GOTO_NAVMESH = function(ped, vehicle, x, y, z, speed, behaviorFlag, stoppingRange) end,

    ---movement_speed: mostly 2f, but also 1/1.2f, etc.\
    ---p8: always false\
    ---p9: 2f\
    ---p10: 0.5f\
    ---p11: true\
    ---p12: 0 / 512 / 513, etc.\
    ---p13: 0\
    ---firing_pattern: ${firing_pattern_full_auto}, 0xC6EE6B4C
    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param aimAtX number
    ---@param aimAtY number
    ---@param aimAtZ number
    ---@param moveBlendRatio number
    ---@param shoot BOOL
    ---@param targetRadius number
    ---@param slowDistance number
    ---@param useNavMesh BOOL
    ---@param navFlags integer
    ---@param instantBlendToAim BOOL
    ---@param firingPattern Hash
    TASK_GO_TO_COORD_WHILE_AIMING_AT_COORD = function(ped, x, y, z, aimAtX, aimAtY, aimAtZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param aimAtID Entity
    ---@param moveBlendRatio number
    ---@param shoot BOOL
    ---@param targetRadius number
    ---@param slowDistance number
    ---@param useNavMesh BOOL
    ---@param navFlags integer
    ---@param instantBlendToAim BOOL
    ---@param firingPattern Hash
    ---@param time integer
    TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY = function(ped, x, y, z, aimAtID, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, navFlags, instantBlendToAim, firingPattern, time) end,

    ---The ped will walk or run towards goToLocation, aiming towards goToLocation or focusLocation (depending on the aimingFlag) and shooting if shootAtEnemies = true to any enemy in his path.\
    ---\
    ---If the ped is closer than noRoadsDistance, the ped will ignore pathing/navmesh and go towards goToLocation directly. This could cause the ped to get stuck behind tall walls if the goToLocation is on the other side. To avoid this, use 0.0f and the ped will always use pathing/navmesh to reach his destination.\
    ---\
    ---If the speed is set to 0.0f, the ped will just stand there while aiming, if set to 1.0f he will walk while aiming, 2.0f will run while aiming.\
    ---\
    ---The ped will stop aiming when he is closer than distanceToStopAt to goToLocation.\
    ---\
    ---I still can't figure out what unkTrue is used for. I don't notice any difference if I set it to false but in the decompiled scripts is always true.\
    ---\
    ---I think that unkFlag, like the driving styles, could be a flag that "work as a list of 32 bits converted to a decimal integer. Each bit acts as a flag, and enables or disables a function". What leads me to this conclusion is the fact that in the decompiled scripts, unkFlag takes values like: 0, 1, 5 (101 in binary) and 4097 (4096 + 1 or 1000000000001 in binary). For now, I don't know what behavior enable or disable this possible flag so I leave it at 0.\
    ---\
    ---Note: After some testing, using unkFlag = 16 (0x10) enables the use of sidewalks while moving towards goToLocation.\
    ---\
    ---The aimingFlag takes 2 values: 0 to aim at the focusLocation, 1 to aim at where the ped is heading (goToLocation).\
    ---\
    ---Example:\
    ---\
    ---enum AimFlag\
    ---{\
    ---   AimAtFocusLocation,\
    ---   AimAtGoToLocation\
    ---};\
    ---\
    ---Vector3 goToLocation1 = { 996.2867f, 0, -2143.044f, 0, 28.4763f, 0 }; // remember the padding.\
    ---\
    ---Vector3 goToLocation2 = { 990.2867f, 0, -2140.044f, 0, 28.4763f, 0 }; // remember the padding.\
    ---\
    ---Vector3 focusLocation = { 994.3478f, 0, -2136.118f, 0, 29.2463f, 0 }; // the coord z should be a little higher, around +1.0f to avoid aiming at the ground\
    ---\
    ---// 1st example\
    ---TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation1.x, goToLocation1.y, goToLocation1.z, focusLocation.x, focusLocation.y, focusLocation.z, 2.0f /*run*/, true /*shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtGoToLocation, -957453492 /*FullAuto pattern*/);\
    ---\
    ---// 2nd example\
    ---TASK::TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD(pedHandle, goToLocation2.x, goToLocation2.y, goToLocation2.z, focusLocation.x, focusLocation.y, focusLocation.z, 1.0f /*walk*/, false /*don't shoot*/, 3.0f /*stop at*/, 0.0f /*noRoadsDistance*/, true /*always true*/, 0 /*possible flag*/, AimFlag::AimAtFocusLocation, -957453492 /*FullAuto pattern*/);\
    ---\
    ---\
    ---1st example: The ped (pedhandle) will run towards goToLocation1. While running and aiming towards goToLocation1, the ped will shoot on sight to any enemy in his path, using "FullAuto" firing pattern. The ped will stop once he is closer than distanceToStopAt to goToLocation1.\
    ---\
    ---2nd example: The ped will walk towards goToLocation2. This time, while walking towards goToLocation2 and aiming at focusLocation, the ped will point his weapon on sight to any enemy in his path without shooting. The ped will stop once he is closer than distanceToStopAt to goToLocation2.
    ---@param pedHandle Ped
    ---@param goToLocationX number
    ---@param goToLocationY number
    ---@param goToLocationZ number
    ---@param focusLocationX number
    ---@param focusLocationY number
    ---@param focusLocationZ number
    ---@param speed number
    ---@param shootAtEnemies BOOL
    ---@param distanceToStopAt number
    ---@param noRoadsDistance number
    ---@param useNavMesh BOOL
    ---@param navFlags integer
    ---@param taskFlags integer
    ---@param firingPattern Hash
    TASK_GO_TO_COORD_AND_AIM_AT_HATED_ENTITIES_NEAR_COORD = function(pedHandle, goToLocationX, goToLocationY, goToLocationZ, focusLocationX, focusLocationY, focusLocationZ, speed, shootAtEnemies, distanceToStopAt, noRoadsDistance, useNavMesh, navFlags, taskFlags, firingPattern) end,

    ---@param ped Ped
    ---@param entity Entity
    ---@param aimX number
    ---@param aimY number
    ---@param aimZ number
    ---@param moveBlendRatio number
    ---@param shoot BOOL
    ---@param targetRadius number
    ---@param slowDistance number
    ---@param useNavMesh BOOL
    ---@param instantBlendToAim BOOL
    ---@param firingPattern Hash
    TASK_GO_TO_ENTITY_WHILE_AIMING_AT_COORD = function(ped, entity, aimX, aimY, aimZ, moveBlendRatio, shoot, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) end,

    ---shootatEntity:\
    ---If true, peds will shoot at Entity till it is dead.\
    ---If false, peds will just walk till they reach the entity and will cease shooting.
    ---@param ped Ped
    ---@param entityToWalkTo Entity
    ---@param entityToAimAt Entity
    ---@param speed number
    ---@param shootatEntity BOOL
    ---@param targetRadius number
    ---@param slowDistance number
    ---@param useNavMesh BOOL
    ---@param instantBlendToAim BOOL
    ---@param firingPattern Hash
    TASK_GO_TO_ENTITY_WHILE_AIMING_AT_ENTITY = function(ped, entityToWalkTo, entityToAimAt, speed, shootatEntity, targetRadius, slowDistance, useNavMesh, instantBlendToAim, firingPattern) end,

    ---Makes the ped ragdoll like when falling from a great height
    ---@param ped Ped
    ---@param minTime integer
    ---@param maxTime integer
    ---@param entryType integer
    SET_HIGH_FALL_TASK = function(ped, minTime, maxTime, entryType) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json\
    ---For a full list of the points, see here: goo.gl/wIH0vn\
    ---\
    ---Max number of loaded recordings is 32.
    ---@param name string
    REQUEST_WAYPOINT_RECORDING = function(name) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
    ---@param name string
    ---@return BOOL
    GET_IS_WAYPOINT_RECORDING_LOADED = function(name) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
    ---@param name string
    REMOVE_WAYPOINT_RECORDING = function(name) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json\
    ---For a full list of the points, see here: goo.gl/wIH0vn
    ---@param name string
    ---@param points integer
    ---@return BOOL
    ---@return integer
    WAYPOINT_RECORDING_GET_NUM_POINTS = function(name, points) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json\
    ---For a full list of the points, see here: goo.gl/wIH0vn
    ---@param name string
    ---@param point integer
    ---@param coord Vector3
    ---@return BOOL
    WAYPOINT_RECORDING_GET_COORD = function(name, point, coord) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
    ---@param name string
    ---@param point integer
    ---@return number
    WAYPOINT_RECORDING_GET_SPEED_AT_POINT = function(name, point) end,

    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json\
    ---For a full list of the points, see here: goo.gl/wIH0vn
    ---@param name string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param point integer
    ---@return BOOL
    ---@return integer
    WAYPOINT_RECORDING_GET_CLOSEST_WAYPOINT = function(name, x, y, z, point) end,

    ---@param ped Ped
    ---@param name string
    ---@param p2 integer
    ---@param p3 integer
    ---@param p4 integer
    TASK_FOLLOW_WAYPOINT_RECORDING = function(ped, name, p2, p3, p4) end,

    ---@param ped Ped
    ---@return BOOL
    IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED = function(ped) end,

    ---@param ped Ped
    ---@return integer
    GET_PED_WAYPOINT_PROGRESS = function(ped) end,

    ---@param ped Ped
    ---@param progress integer
    SET_PED_WAYPOINT_PROGRESS = function(ped, progress) end,

    ---@param p0 Any
    ---@return number
    GET_PED_WAYPOINT_DISTANCE = function(p0) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return BOOL
    SET_PED_WAYPOINT_ROUTE_OFFSET = function(ped, x, y, z) end,

    ---@param name string
    ---@param point integer
    ---@return number
    GET_WAYPOINT_DISTANCE_ALONG_ROUTE = function(name, point) end,

    ---@param p0 Any
    ---@return BOOL
    WAYPOINT_PLAYBACK_GET_IS_PAUSED = function(p0) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 BOOL
    WAYPOINT_PLAYBACK_PAUSE = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 BOOL
    ---@param p2 Any
    ---@param p3 Any
    WAYPOINT_PLAYBACK_RESUME = function(p0, p1, p2, p3) end,

    ---@param p0 Any
    ---@param p1 number
    ---@param p2 BOOL
    WAYPOINT_PLAYBACK_OVERRIDE_SPEED = function(p0, p1, p2) end,

    ---@param p0 Any
    WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED = function(p0) end,

    ---@param name string
    ---@param p1 BOOL
    ---@param p2 number
    ---@param p3 number
    USE_WAYPOINT_RECORDING_AS_ASSISTED_MOVEMENT_ROUTE = function(name, p1, p2, p3) end,

    ---@param ped Ped
    ---@param target Ped
    ---@param p2 BOOL
    WAYPOINT_PLAYBACK_START_AIMING_AT_PED = function(ped, target, p2) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 BOOL
    WAYPOINT_PLAYBACK_START_AIMING_AT_COORD = function(ped, x, y, z, p4) end,

    ---@param ped Ped
    ---@param ped2 Ped
    ---@param p2 BOOL
    ---@param p3 BOOL
    WAYPOINT_PLAYBACK_START_SHOOTING_AT_PED = function(ped, ped2, p2, p3) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 BOOL
    ---@param firingPattern Hash
    WAYPOINT_PLAYBACK_START_SHOOTING_AT_COORD = function(ped, x, y, z, p4, firingPattern) end,

    ---@param ped Ped
    WAYPOINT_PLAYBACK_STOP_AIMING_OR_SHOOTING = function(ped) end,

    ---Routes: "1_FIBStairs", "2_FIBStairs", "3_FIBStairs", "4_FIBStairs", "5_FIBStairs", "5_TowardsFire", "6a_FIBStairs", "7_FIBStairs", "8_FIBStairs", "Aprtmnt_1", "AssAfterLift", "ATM_1", "coroner2", "coroner_stairs", "f5_jimmy1", "fame1", "family5b", "family5c", "Family5d", "family5d", "FIB_Glass1", "FIB_Glass2", "FIB_Glass3", "finaBroute1A", "finalb1st", "finalB1sta", "finalbround", "finalbroute2", "Hairdresser1", "jan_foyet_ft_door", "Jo_3", "Lemar1", "Lemar2", "mansion_1", "Mansion_1", "pols_1", "pols_2", "pols_3", "pols_4", "pols_5", "pols_6", "pols_7", "pols_8", "Pro_S1", "Pro_S1a", "Pro_S2", "Towards_case", "trev_steps", "tunrs1", "tunrs2", "tunrs3", "Wave01457s"
    ---@param route string
    ASSISTED_MOVEMENT_REQUEST_ROUTE = function(route) end,

    ---@param route string
    ASSISTED_MOVEMENT_REMOVE_ROUTE = function(route) end,

    ---@param route string
    ---@return BOOL
    ASSISTED_MOVEMENT_IS_ROUTE_LOADED = function(route) end,

    ---@param route string
    ---@param props integer
    ASSISTED_MOVEMENT_SET_ROUTE_PROPERTIES = function(route, props) end,

    ---@param dist number
    ASSISTED_MOVEMENT_OVERRIDE_LOAD_DISTANCE_THIS_FRAME = function(dist) end,

    ---\
    ---\
    ---p2 = Waypoint recording string (found in update\update.rpf\x64\levels\gta5\waypointrec.rpf\
    ---p3 = 786468\
    ---p4 = 0\
    ---p5 = 16\
    ---p6 = -1 (angle?)\
    ---p7/8/9 = usually v3.zero\
    ---p10 = bool (repeat?)\
    ---p11 = 1073741824\
    ---\
    ---Full list of waypoint recordings by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/waypointRecordings.json
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param WPRecording string
    ---@param p3 integer
    ---@param p4 integer
    ---@param p5 integer
    ---@param p6 integer
    ---@param p7 number
    ---@param p8 BOOL
    ---@param p9 number
    TASK_VEHICLE_FOLLOW_WAYPOINT_RECORDING = function(ped, vehicle, WPRecording, p3, p4, p5, p6, p7, p8, p9) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_WAYPOINT_PROGRESS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_WAYPOINT_TARGET_POINT = function(vehicle) end,

    ---@param vehicle Vehicle
    VEHICLE_WAYPOINT_PLAYBACK_PAUSE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    VEHICLE_WAYPOINT_PLAYBACK_GET_IS_PAUSED = function(vehicle) end,

    ---@param vehicle Vehicle
    VEHICLE_WAYPOINT_PLAYBACK_RESUME = function(vehicle) end,

    ---@param vehicle Vehicle
    VEHICLE_WAYPOINT_PLAYBACK_USE_DEFAULT_SPEED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param speed number
    VEHICLE_WAYPOINT_PLAYBACK_OVERRIDE_SPEED = function(vehicle, speed) end,

    ---I cant believe I have to define this, this is one of the best natives.\
    ---\
    ---It makes the ped ignore basically all shocking events around it. Occasionally the ped may comment or gesture, but other than that they just continue their daily activities. This includes shooting and wounding the ped. And - most importantly - they do not flee.\
    ---\
    ---Since it is a task, every time the native is called the ped will stop for a moment. 
    ---@param ped Ped
    ---@param toggle BOOL
    TASK_SET_BLOCKING_OF_NON_TEMPORARY_EVENTS = function(ped, toggle) end,

    ---p2 always false\
    ---\
    ---[30/03/2017] ins1de :\
    ---\
    ---See FORCE_PED_MOTION_STATE
    ---@param ped Ped
    ---@param state Hash
    ---@param forceRestart BOOL
    TASK_FORCE_MOTION_STATE = function(ped, state, forceRestart) end,

    ---Example:\
    ---TASK::TASK_MOVE_NETWORK_BY_NAME(PLAYER::PLAYER_PED_ID(), "arm_wrestling_sweep_paired_a_rev3", 0.0f, true, "mini@arm_wrestling", 0);
    ---@param ped Ped
    ---@param task string
    ---@param multiplier number
    ---@param allowOverrideCloneUpdate BOOL
    ---@param animDict string
    ---@param flags integer
    TASK_MOVE_NETWORK_BY_NAME = function(ped, task, multiplier, allowOverrideCloneUpdate, animDict, flags) end,

    ---Example:\
    ---TASK::TASK_MOVE_NETWORK_ADVANCED_BY_NAME(PLAYER::PLAYER_PED_ID(), "minigame_tattoo_michael_parts", 324.13f, 181.29f, 102.6f, 0.0f, 0.0f, 22.32f, 2, 0, false, 0, 0);
    ---@param ped Ped
    ---@param network string
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param rotOrder integer
    ---@param blendDuration number
    ---@param allowOverrideCloneUpdate BOOL
    ---@param animDict string
    ---@param flags integer
    TASK_MOVE_NETWORK_ADVANCED_BY_NAME = function(ped, network, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, animDict, flags) end,

    ---Used only once in the scripts (am_mp_nightclub)
    ---@param ped Ped
    ---@param network string
    ---@param initialParameters integer
    ---@param blendDuration number
    ---@param allowOverrideCloneUpdate BOOL
    ---@param animDict string
    ---@param flags integer
    ---@return integer
    TASK_MOVE_NETWORK_BY_NAME_WITH_INIT_PARAMS = function(ped, network, initialParameters, blendDuration, allowOverrideCloneUpdate, animDict, flags) end,

    ---@param ped Ped
    ---@param network string
    ---@param initialParameters integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param rotOrder integer
    ---@param blendDuration number
    ---@param allowOverrideCloneUpdate BOOL
    ---@param dictionary string
    ---@param flags integer
    ---@return integer
    TASK_MOVE_NETWORK_ADVANCED_BY_NAME_WITH_INIT_PARAMS = function(ped, network, initialParameters, x, y, z, rotX, rotY, rotZ, rotOrder, blendDuration, allowOverrideCloneUpdate, dictionary, flags) end,

    ---@param ped Ped
    ---@return BOOL
    IS_TASK_MOVE_NETWORK_ACTIVE = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_TASK_MOVE_NETWORK_READY_FOR_TRANSITION = function(ped) end,

    ---@param ped Ped
    ---@param name string
    ---@return BOOL
    REQUEST_TASK_MOVE_NETWORK_STATE_TRANSITION = function(ped, name) end,

    ---Used only once in the scripts (fm_mission_controller) like so:\
    ---\
    ---TASK::SET_EXPECTED_CLONE_NEXT_TASK_MOVE_NETWORK_STATE(iLocal_3160, "Cutting");
    ---@param ped Ped
    ---@param state string
    ---@return BOOL
    SET_EXPECTED_CLONE_NEXT_TASK_MOVE_NETWORK_STATE = function(ped, state) end,

    ---@param ped Ped
    ---@return string
    GET_TASK_MOVE_NETWORK_STATE = function(ped) end,

    ---@param ped Ped
    ---@param clipSet Hash
    ---@param variableClipSet Hash
    SET_TASK_MOVE_NETWORK_ANIM_SET = function(ped, clipSet, variableClipSet) end,

    ---signalName - "Phase", "Wobble", "x_axis","y_axis","introphase","speed".\
    ---p2 - From what i can see it goes up to 1f (maybe).\
    ---\
    ---Example: TASK::SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT(PLAYER::PLAYER_PED_ID(), "Phase", 0.5);
    ---@param ped Ped
    ---@param signalName string
    ---@param value number
    SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, signalName, value) end,

    ---@param ped Ped
    ---@param signalName string
    ---@param value number
    SET_TASK_MOVE_NETWORK_SIGNAL_LOCAL_FLOAT = function(ped, signalName, value) end,

    ---@param ped Ped
    ---@param signalName string
    ---@param value number
    SET_TASK_MOVE_NETWORK_SIGNAL_FLOAT_LERP_RATE = function(ped, signalName, value) end,

    ---@param ped Ped
    ---@param signalName string
    ---@param value BOOL
    SET_TASK_MOVE_NETWORK_SIGNAL_BOOL = function(ped, signalName, value) end,

    ---@param ped Ped
    ---@param signalName string
    ---@return number
    GET_TASK_MOVE_NETWORK_SIGNAL_FLOAT = function(ped, signalName) end,

    ---@param ped Ped
    ---@param signalName string
    ---@return BOOL
    GET_TASK_MOVE_NETWORK_SIGNAL_BOOL = function(ped, signalName) end,

    ---@param ped Ped
    ---@param eventName string
    ---@return BOOL
    GET_TASK_MOVE_NETWORK_EVENT = function(ped, eventName) end,

    ---Doesn't actually return anything.
    ---@param ped Ped
    ---@param enable BOOL
    ---@return BOOL
    SET_TASK_MOVE_NETWORK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) end,

    ---@param ped Ped
    ---@param enable BOOL
    _SET_SCRIPT_TASK_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) end,

    ---@param ped Ped
    ---@param enable BOOL
    _SET_AMBIENT_PED_ENABLE_COLLISION_ON_NETWORK_CLONE_WHEN_FIXED = function(ped, enable) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOVE_BLEND_RATIO_STILL = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOVE_BLEND_RATIO_WALKING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOVE_BLEND_RATIO_RUNNING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_MOVE_BLEND_RATIO_SPRINTING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_STILL = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_WALKING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RUNNING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_SPRINTING = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_STRAFING = function(ped) end,

    --- TASK::TASK_SYNCHRONIZED_SCENE(ped, scene, "creatures@rottweiler@in_vehicle@std_car", "get_in", 1000.0, -8.0, 4, 0, 0x447a0000, 0);\
    ---\
    ---Full list of animation dictionaries and anims by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/animDictsCompact.json
    ---@param ped Ped
    ---@param scene integer
    ---@param animDictionary string
    ---@param animationName string
    ---@param blendIn number
    ---@param blendOut number
    ---@param flags integer
    ---@param ragdollBlockingFlags integer
    ---@param moverBlendDelta number
    ---@param ikFlags integer
    TASK_SYNCHRONIZED_SCENE = function(ped, scene, animDictionary, animationName, blendIn, blendOut, flags, ragdollBlockingFlags, moverBlendDelta, ikFlags) end,

    ---@param ped Ped
    ---@param ped2 Ped
    TASK_AGITATED_ACTION_CONFRONT_RESPONSE = function(ped, ped2) end,

    ---This function is called on peds in vehicles.\
    ---\
    ---anim: animation name\
    ---p2, p3, p4: "sweep_low", "sweep_med" or "sweep_high"\
    ---p5: no idea what it does but is usually -1
    ---@param ped Ped
    ---@param animDict string
    ---@param lowAnimName string
    ---@param medAnimName string
    ---@param hiAnimName string
    ---@param runtime integer
    ---@param targetEntity Entity
    ---@param turnRate number
    ---@param blendInDuration number
    TASK_SWEEP_AIM_ENTITY = function(ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, targetEntity, turnRate, blendInDuration) end,

    ---@param ped Ped
    ---@param entity Entity
    UPDATE_TASK_SWEEP_AIM_ENTITY = function(ped, entity) end,

    ---@param ped Ped
    ---@param animDict string
    ---@param lowAnimName string
    ---@param medAnimName string
    ---@param hiAnimName string
    ---@param runtime integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param turnRate number
    ---@param blendInDuration number
    TASK_SWEEP_AIM_POSITION = function(ped, animDict, lowAnimName, medAnimName, hiAnimName, runtime, x, y, z, turnRate, blendInDuration) end,

    ---@param ped Ped
    ---@param x number
    ---@param y number
    ---@param z number
    UPDATE_TASK_SWEEP_AIM_POSITION = function(ped, x, y, z) end,

    ---Example from "me_amanda1.ysc.c4":\
    ---TASK::TASK_ARREST_PED(l_19F /* This is a Ped */ , PLAYER::PLAYER_PED_ID());\
    ---\
    ---Example from "armenian1.ysc.c4":\
    ---if (!PED::IS_PED_INJURED(l_B18[0/*1*/])) {\
    ---    TASK::TASK_ARREST_PED(l_B18[0/*1*/], PLAYER::PLAYER_PED_ID());\
    ---}\
    ---\
    ---I would love to have time to experiment to see if a player Ped can arrest another Ped. Might make for a good cop mod.\
    ---\
    ---\
    ---Looks like only the player can be arrested this way. Peds react and try to arrest you if you task them, but the player charater doesn't do anything if tasked to arrest another ped.
    ---@param ped Ped
    ---@param target Ped
    TASK_ARREST_PED = function(ped, target) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_RUNNING_ARREST_TASK = function(ped) end,

    ---This function is hard-coded to always return 0.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_BEING_ARRESTED = function(ped) end,

    ---@param ped Ped
    UNCUFF_PED = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_CUFFED = function(ped) end
}

VEHICLE = {
    ---p7 when set to true allows you to spawn vehicles under -100 z.\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param isNetwork BOOL
    ---@param bScriptHostVeh BOOL
    ---@param p7 BOOL
    ---@return Vehicle
    CREATE_VEHICLE = function(modelHash, x, y, z, heading, isNetwork, bScriptHostVeh, p7) end,

    ---Deletes a vehicle.\
    ---The vehicle must be a mission entity to delete, so call this before deleting: SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);\
    ---\
    ---eg how to use:\
    ---SET_ENTITY_AS_MISSION_ENTITY(vehicle, true, true);\
    ---DELETE_VEHICLE(&vehicle);\
    ---\
    ---Deletes the specified vehicle, then sets the handle pointed to by the pointer to NULL.
    ---@param vehicle Vehicle
    ---@return Vehicle
    DELETE_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ---@param p2 BOOL
    SET_VEHICLE_ALLOW_HOMING_MISSLE_LOCKON = function(vehicle, toggle, p2) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    _GET_VEHICLE_ALLOW_HOMING_MISSLE_LOCKON_SYNCED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param canBeLockedOn BOOL
    ---@param p2 BOOL
    SET_VEHICLE_ALLOW_HOMING_MISSLE_LOCKON_SYNCED = function(vehicle, canBeLockedOn, p2) end,

    ---Makes the vehicle accept no passengers.
    ---@param veh Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_ALLOW_NO_PASSENGERS_LOCKON = function(veh, toggle) end,

    ---Returns a value depending on the lock-on state of vehicle weapons.\
    ---0: not locked on\
    ---1: locking on\
    ---2: locked on
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_HOMING_LOCKON_STATE = function(vehicle) end,

    ---@param p0 Any
    ---@return integer
    GET_VEHICLE_HOMING_LOCKEDONTO_STATE = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_VEHICLE_HOMING_LOCKEDONTO_STATE = function(p0, p1) end,

    ---@param vehicle Vehicle
    ---@param model Hash
    ---@return BOOL
    IS_VEHICLE_MODEL = function(vehicle, model) end,

    ---@param vehicleGenerator integer
    ---@return BOOL
    DOES_SCRIPT_VEHICLE_GENERATOR_EXIST = function(vehicleGenerator) end,

    ---Creates a script vehicle generator at the given coordinates. Most parameters after the model hash are unknown.\
    ---\
    ---Parameters:\
    ---x/y/z - Generator position\
    ---heading - Generator heading\
    ---p4 - Unknown (always 5.0)\
    ---p5 - Unknown (always 3.0)\
    ---modelHash - Vehicle model hash\
    ---p7/8/9/10 - Unknown (always -1)\
    ---p11 - Unknown (usually TRUE, only one instance of FALSE)\
    ---p12/13 - Unknown (always FALSE)\
    ---p14 - Unknown (usally FALSE, only two instances of TRUE)\
    ---p15 - Unknown (always TRUE)\
    ---p16 - Unknown (always -1)\
    ---\
    ---Vector3 coords = GET_ENTITY_COORDS(PLAYER_PED_ID(), 0);    CREATE_SCRIPT_VEHICLE_GENERATOR(coords.x, coords.y, coords.z, 1.0f, 5.0f, 3.0f, GET_HASH_KEY("adder"), -1. -1, -1, -1, -1, true, false, false, false, true, -1);
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param heading number
    ---@param p4 number
    ---@param p5 number
    ---@param modelHash Hash
    ---@param p7 integer
    ---@param p8 integer
    ---@param p9 integer
    ---@param p10 integer
    ---@param p11 BOOL
    ---@param p12 BOOL
    ---@param p13 BOOL
    ---@param p14 BOOL
    ---@param p15 BOOL
    ---@param p16 integer
    ---@return integer
    CREATE_SCRIPT_VEHICLE_GENERATOR = function(x, y, z, heading, p4, p5, modelHash, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) end,

    ---@param vehicleGenerator integer
    DELETE_SCRIPT_VEHICLE_GENERATOR = function(vehicleGenerator) end,

    ---Only called once in the decompiled scripts. Presumably activates the specified generator.
    ---@param vehicleGenerator integer
    ---@param enabled BOOL
    SET_SCRIPT_VEHICLE_GENERATOR = function(vehicleGenerator, enabled) end,

    ---When p6 is true, vehicle generators are active.\
    ---p7 seems to always be true in story mode scripts, but it's sometimes false in online scripts.
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param toggle BOOL
    ---@param p7 BOOL
    SET_ALL_VEHICLE_GENERATORS_ACTIVE_IN_AREA = function(x1, y1, z1, x2, y2, z2, toggle, p7) end,

    SET_ALL_VEHICLE_GENERATORS_ACTIVE = function() end,

    ---@param active BOOL
    SET_ALL_LOW_PRIORITY_VEHICLE_GENERATORS_ACTIVE = function(active) end,

    ---Related to car generators & CPlayerSwitchMgrLong
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    SET_VEHICLE_GENERATOR_AREA_OF_INTEREST = function(x, y, z, radius) end,

    CLEAR_VEHICLE_GENERATOR_AREA_OF_INTEREST = function() end,

    ---Sets a vehicle on the ground on all wheels.  Returns whether or not the operation was successful.\
    ---\
    ---sfink: This has an additional param(Vehicle vehicle, float p1) which is always set to 5.0f in the b944 scripts.
    ---@param vehicle Vehicle
    ---@param p1 number
    ---@return BOOL
    SET_VEHICLE_ON_GROUND_PROPERLY = function(vehicle, p1) end,

    ---@param p0 Vehicle
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@return BOOL
    SET_VEHICLE_USE_CUTSCENE_WHEEL_COMPRESSION = function(p0, p1, p2, p3) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_STUCK_ON_ROOF = function(vehicle) end,

    ---@param vehicle Vehicle
    ADD_VEHICLE_UPSIDEDOWN_CHECK = function(vehicle) end,

    ---@param vehicle Vehicle
    REMOVE_VEHICLE_UPSIDEDOWN_CHECK = function(vehicle) end,

    ---Returns true if the vehicle's current speed is less than, or equal to 0.0025f.\
    ---\
    ---For some vehicles it returns true if the current speed is <= 0.00039999999.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_STOPPED = function(vehicle) end,

    ---Gets the number of passengers.\
    ---\
    ---This native was modified in b2545 to take two additional parameters, allowing you to include the driver or exclude dead passengers.\
    ---\
    ---To keep it working like before b2545, set includeDriver to false and includeDeadOccupants to true.
    ---@param vehicle Vehicle
    ---@param includeDriver BOOL
    ---@param includeDeadOccupants BOOL
    ---@return integer
    GET_VEHICLE_NUMBER_OF_PASSENGERS = function(vehicle, includeDriver, includeDeadOccupants) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS = function(vehicle) end,

    ---Returns max number of passengers (including the driver) for the specified vehicle model.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return integer
    GET_VEHICLE_MODEL_NUMBER_OF_SEATS = function(modelHash) end,

    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@return BOOL
    IS_SEAT_WARP_ONLY = function(vehicle, seatIndex) end,

    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@return BOOL
    IS_TURRET_SEAT = function(vehicle, seatIndex) end,

    ---Returns true if the vehicle has the FLAG_ALLOWS_RAPPEL flag set.
    ---@param vehicle Vehicle
    ---@return BOOL
    DOES_VEHICLE_ALLOW_RAPPEL = function(vehicle) end,

    ---Use this native inside a looped function.\
    ---Values:\
    ---- `0.0` = no vehicles on streets\
    ---- `1.0` = normal vehicles on streets
    ---@param multiplier number
    SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) end,

    ---@param multiplier number
    SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) end,

    ---@param multiplier number
    SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME = function(multiplier) end,

    ---@param toggle BOOL
    SET_DISABLE_RANDOM_TRAINS_THIS_FRAME = function(toggle) end,

    ---@param value number
    SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME = function(value) end,

    ---@param toggle BOOL
    SET_FAR_DRAW_VEHICLES = function(toggle) end,

    ---@param value integer
    SET_NUMBER_OF_PARKED_VEHICLES = function(value) end,

    ---enum eVehicleLockState\
    ---{\
    ---	VEHICLELOCK_NONE,\
    ---	VEHICLELOCK_UNLOCKED,\
    ---	VEHICLELOCK_LOCKED,\
    ---	VEHICLELOCK_LOCKOUT_PLAYER_ONLY,\
    ---	VEHICLELOCK_LOCKED_PLAYER_INSIDE,\
    ---	VEHICLELOCK_LOCKED_INITIALLY,\
    ---	VEHICLELOCK_FORCE_SHUT_DOORS,\
    ---	VEHICLELOCK_LOCKED_BUT_CAN_BE_DAMAGED,\
    ---	VEHICLELOCK_LOCKED_BUT_BOOT_UNLOCKED,\
    ---	VEHICLELOCK_LOCKED_NO_PASSENGERS,\
    ---	VEHICLELOCK_CANNOT_ENTER	\
    ---};
    ---@param vehicle Vehicle
    ---@param doorLockStatus integer
    SET_VEHICLE_DOORS_LOCKED = function(vehicle, doorLockStatus) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param doorLockStatus integer
    SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED = function(vehicle, doorId, doorLockStatus) end,

    ---If set to true, prevents vehicle sirens from having sound, leaving only the lights.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_HAS_MUTED_SIRENS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param player Player
    ---@param toggle BOOL
    SET_VEHICLE_DOORS_LOCKED_FOR_PLAYER = function(vehicle, player, toggle) end,

    ---@param vehicle Vehicle
    ---@param player Player
    ---@return BOOL
    GET_VEHICLE_DOORS_LOCKED_FOR_PLAYER = function(vehicle, player) end,

    ---After some analysis, I've decided that these are what the parameters are.\
    ---\
    ---We can see this being used in R* scripts such as "am_mp_property_int.ysc.c4":\
    ---l_11A1 = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), 1);\
    ---...\
    ---VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(l_11A1, 1);
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_DOORS_LOCKED_FOR_NON_SCRIPT_PLAYERS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param team integer
    ---@param toggle BOOL
    SET_VEHICLE_DOORS_LOCKED_FOR_TEAM = function(vehicle, team, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_DOORS_LOCKED_FOR_ALL_TEAMS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    SET_VEHICLE_DONT_TERMINATE_TASK_WHEN_ACHIEVED = function(vehicle) end,

    ---0.0f = engine rev minimum\
    ---1.0f = engine rev limit
    ---@param vehicle Vehicle
    ---@param modifier number
    _SET_VEHICLE_MAX_LAUNCH_ENGINE_REVS = function(vehicle, modifier) end,

    ---@param vehicle Vehicle
    ---@return number
    _GET_VEHICLE_THROTTLE = function(vehicle) end,

    ---Explodes a selected vehicle.\
    ---\
    ---Vehicle vehicle = Vehicle you want to explode.\
    ---BOOL isAudible = If explosion makes a sound.\
    ---BOOL isInvisible = If the explosion is invisible or not.\
    ---\
    ---First BOOL does not give any visual explosion, the vehicle just falls apart completely but slowly and starts to burn.
    ---@param vehicle Vehicle
    ---@param isAudible BOOL
    ---@param isInvisible BOOL
    EXPLODE_VEHICLE = function(vehicle, isAudible, isInvisible) end,

    ---Tested on the player's current vehicle. Unless you kill the driver, the vehicle doesn't loose control, however, if enabled, explodeOnImpact is still active. The moment you crash, boom.
    ---@param vehicle Vehicle
    ---@param killDriver BOOL
    ---@param explodeOnImpact BOOL
    SET_VEHICLE_OUT_OF_CONTROL = function(vehicle, killDriver, explodeOnImpact) end,

    ---@param vehicle Vehicle
    ---@param ped Ped
    ---@param toggle BOOL
    SET_VEHICLE_TIMED_EXPLOSION = function(vehicle, ped, toggle) end,

    ---@param vehicle Vehicle
    ADD_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function(vehicle) end,

    CLEAR_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() end,

    ---@return BOOL
    HAS_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() end,

    DETONATE_VEHICLE_PHONE_EXPLOSIVE_DEVICE = function() end,

    ---@param vehicle Vehicle
    ---@return BOOL
    HAVE_VEHICLE_REAR_DOORS_BEEN_BLOWN_OPEN_BY_STICKYBOMB = function(vehicle) end,

    ---This is not tested - it's just an assumption.\
    ---- Nac\
    ---\
    ---Doesn't seem to work.  I'll try with an int instead. --JT\
    ---\
    ---Read the scripts, im dumpass. \
    ---\
    ---                            if (!VEHICLE::IS_TAXI_LIGHT_ON(l_115)) {\
    ---                                VEHICLE::SET_TAXI_LIGHTS(l_115, 1);\
    ---                        }
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_TAXI_LIGHTS = function(vehicle, state) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_TAXI_LIGHT_ON = function(vehicle) end,

    ---garageName example "Michael - Beverly Hills"\
    ---\
    ---Full list of garages by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/garages.json
    ---@param garageName string
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_IN_GARAGE_AREA = function(garageName, vehicle) end,

    ---colorPrimary & colorSecondary are the paint index for the vehicle.\
    ---For a list of valid paint indexes, view: https://pastebin.com/pwHci0xK\
    ----------------------------------------------------------------------------\
    ---Note: minimum color index is 0, maximum color index is (numColorIndices - 1)\
    ---\
    ---Full list of vehicle colors by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json
    ---@param vehicle Vehicle
    ---@param colorPrimary integer
    ---@param colorSecondary integer
    SET_VEHICLE_COLOURS = function(vehicle, colorPrimary, colorSecondary) end,

    ---It switch to highbeam when p1 is set to true.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_FULLBEAM = function(vehicle, toggle) end,

    ---p1 (toggle) was always 1 (true) except in one case in the b678 scripts.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_IS_RACING = function(vehicle, toggle) end,

    ---p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle, r, g, b) end,

    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle, r, g, b) end,

    ---@param vehicle Vehicle
    CLEAR_VEHICLE_CUSTOM_PRIMARY_COLOUR = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_VEHICLE_PRIMARY_COLOUR_CUSTOM = function(vehicle) end,

    ---p1, p2, p3 are RGB values for color (255,0,0 for Red, ect)
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle, r, g, b) end,

    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle, r, g, b) end,

    ---@param vehicle Vehicle
    CLEAR_VEHICLE_CUSTOM_SECONDARY_COLOUR = function(vehicle) end,

    ---Check if Vehicle Secondary is avaliable for customize
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_VEHICLE_SECONDARY_COLOUR_CUSTOM = function(vehicle) end,

    ---The parameter fade is a value from 0-1, where 0 is fresh paint.
    ---@param vehicle Vehicle
    ---@param fade number
    SET_VEHICLE_ENVEFF_SCALE = function(vehicle, fade) end,

    ---The result is a value from 0-1, where 0 is fresh paint.
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_ENVEFF_SCALE = function(vehicle) end,

    ---Hardcoded to not work in multiplayer.
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_CAN_RESPRAY_VEHICLE = function(vehicle, state) end,

    ---Used for GTAO CEO/Associate spawned vehicles.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_GOON_BOSS_VEHICLE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_OPEN_REAR_DOORS_ON_EXPLOSION = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    FORCE_SUBMARINE_SURFACE_MODE = function(vehicle, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    FORCE_SUBMARINE_NEURTAL_BUOYANCY = function(p0, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param depth1 number
    ---@param depth2 number
    ---@param depth3 number
    SET_SUBMARINE_CRUSH_DEPTHS = function(vehicle, p1, depth1, depth2, depth3) end,

    ---@param submarine Vehicle
    ---@return BOOL
    GET_SUBMARINE_IS_UNDER_DESIGN_DEPTH = function(submarine) end,

    ---@param submarine Vehicle
    ---@return integer
    GET_SUBMARINE_NUMBER_OF_AIR_LEAKS = function(submarine) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_BOAT_IGNORE_LAND_PROBES = function(p0, p1) end,

    ---Use the vehicle bounds (instead of viewport) when deciding if a vehicle is sufficiently above the water (waterheight.dat), bypassing wave simulation checks
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    _SET_BOUNDS_AFFECT_WATER_PROBES = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_BOAT_ANCHOR = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    CAN_ANCHOR_BOAT_HERE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    CAN_ANCHOR_BOAT_HERE_IGNORE_PLAYERS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_BOAT_REMAINS_ANCHORED_WHILE_PLAYER_IS_DRIVER = function(vehicle, toggle) end,

    ---No observed effect.
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_FORCE_LOW_LOD_ANCHOR_MODE = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param value number
    SET_BOAT_LOW_LOD_ANCHOR_DISTANCE = function(vehicle, value) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_BOAT_ANCHORED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_BOAT_SINKS_WHEN_WRECKED = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    SET_BOAT_WRECKED = function(vehicle) end,

    ---Activate siren on vehicle (Only works if the vehicle has a siren).
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_SIREN = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_SIREN_ON = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_SIREN_AUDIO_ON = function(vehicle) end,

    ---If set to true, vehicle will not take crash damage, but is still susceptible to damage from bullets and explosives
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_STRONG = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    REMOVE_VEHICLE_STUCK_CHECK = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param colorPrimary integer
    ---@param colorSecondary integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_COLOURS = function(vehicle, colorPrimary, colorSecondary) end,

    ---Check if a vehicle seat is free.\
    ---\
    ---seatIndex  = -1 being the driver seat.\
    ---Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.\
    ---isTaskRunning = on true the function returns already false while a task on the target seat is running (TASK_ENTER_VEHICLE/TASK_SHUFFLE_TO_NEXT_VEHICLE_SEAT) - on false only when a ped is finally sitting in the seat.
    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@param isTaskRunning BOOL
    ---@return BOOL
    IS_VEHICLE_SEAT_FREE = function(vehicle, seatIndex, isTaskRunning) end,

    ---If there is no ped in the seat, and the game considers the vehicle as ambient population, this will create a random occupant ped in the seat, which may be cleaned up by the game fairly soon if not marked as script-owned mission entity.\
    ---\
    ---Seat indexes:\
    ----1 = Driver\
    ---0 = Front Right Passenger\
    ---1 = Back Left Passenger\
    ---2 = Back Right Passenger\
    ---3 = Further Back Left Passenger (vehicles > 4 seats)\
    ---4 = Further Back Right Passenger (vehicles > 4 seats)\
    ---etc.\
    ---\
    ---If p2 is true it uses a different GetOccupant function.
    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@param p2 BOOL
    ---@return Ped
    GET_PED_IN_VEHICLE_SEAT = function(vehicle, seatIndex, p2) end,

    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@return Ped
    GET_LAST_PED_IN_VEHICLE_SEAT = function(vehicle, seatIndex) end,

    ---@param vehicle Vehicle
    ---@param lightsOn BOOL
    ---@param highbeamsOn BOOL
    ---@return BOOL
    ---@return BOOL
    ---@return BOOL
    GET_VEHICLE_LIGHTS_STATE = function(vehicle, lightsOn, highbeamsOn) end,

    ---wheelID used for 4 wheelers seem to be (0, 1, 4, 5)\
    ---completely - is to check if tire completely gone from rim.\
    ---\
    ---'0 = wheel_lf / bike, plane or jet front\
    ---'1 = wheel_rf\
    ---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left\
    ---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right\
    ---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left\
    ---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right\
    ---'45 = 6 wheels trailer mid wheel left\
    ---'47 = 6 wheels trailer mid wheel right
    ---@param vehicle Vehicle
    ---@param wheelID integer
    ---@param completely BOOL
    ---@return BOOL
    IS_VEHICLE_TYRE_BURST = function(vehicle, wheelID, completely) end,

    ---SCALE: Setting the speed to 30 would result in a speed of roughly 60mph, according to speedometer.\
    ---\
    ---Speed is in meters per second\
    ---You can convert meters/s to mph here:\
    ---http://www.calculateme.com/Speed/MetersperSecond/ToMilesperHour.htm
    ---@param vehicle Vehicle
    ---@param speed number
    SET_VEHICLE_FORWARD_SPEED = function(vehicle, speed) end,

    ---Seems to be identical to SET_VEHICLE_FORWARD_SPEED
    ---@param vehicle Vehicle
    ---@param speed number
    SET_VEHICLE_FORWARD_SPEED_XY = function(vehicle, speed) end,

    ---This native makes the vehicle stop immediately, as happens when we enter a MP garage.\
    ---\
    ---. distance defines how far it will travel until stopping. Garage doors use 3.0.\
    ---\
    ---. If killEngine is set to 1, you cannot resume driving the vehicle once it stops. This looks like is a bitmapped integer.
    ---@param vehicle Vehicle
    ---@param distance number
    ---@param duration integer
    ---@param p3 BOOL
    BRING_VEHICLE_TO_HALT = function(vehicle, distance, duration, p3) end,

    ---@param vehicle Vehicle
    ---@param p1 Any
    SET_VEHICLE_STEER_FOR_BUILDINGS = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAUSES_SWERVING = function(vehicle, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_IGNORE_PLANES_SMALL_PITCH_CHANGE = function(p0, p1) end,

    ---Stops CTaskBringVehicleToHalt
    ---@param vehicle Vehicle
    STOP_BRINGING_VEHICLE_TO_HALT = function(vehicle) end,

    ---Returns true if vehicle is halted by BRING_VEHICLE_TO_HALT
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_BEING_BROUGHT_TO_HALT = function(vehicle) end,

    ---@param forklift Vehicle
    LOWER_FORKLIFT_FORKS = function(forklift) end,

    ---0.0 = Lowest 1.0 = Highest. This is best to be used if you wanna pick-up a car since un-realistically on GTA V forklifts can't pick up much of anything due to vehicle mass. If you put this under a car then set it above 0.0 to a 'lifted-value' it will raise the car with no issue lol
    ---@param vehicle Vehicle
    ---@param height number
    SET_FORKLIFT_FORK_HEIGHT = function(vehicle, height) end,

    ---@param vehicle Vehicle
    ---@param entity Entity
    ---@return BOOL
    IS_ENTITY_ATTACHED_TO_HANDLER_FRAME = function(vehicle, entity) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_ANY_ENTITY_ATTACHED_TO_HANDLER_FRAME = function(vehicle) end,

    ---Finds the vehicle that is carrying this entity with a handler frame.\
    ---The model of the entity must be prop_contr_03b_ld or the function will return 0.
    ---@param entity Entity
    ---@return Vehicle
    FIND_HANDLER_VEHICLE_CONTAINER_IS_ATTACHED_TO = function(entity) end,

    ---@param vehicle Vehicle
    ---@param entity Entity
    ---@return BOOL
    IS_HANDLER_FRAME_LINED_UP_WITH_CONTAINER = function(vehicle, entity) end,

    ---@param vehicle Vehicle
    ---@param entity Entity
    ATTACH_CONTAINER_TO_HANDLER_FRAME_WHEN_LINED_UP = function(vehicle, entity) end,

    ---@param vehicle Vehicle
    DETACH_CONTAINER_FROM_HANDLER_FRAME = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_DISABLE_HEIGHT_MAP_AVOIDANCE = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    _SET_PLANE_AVOIDS_OTHERS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_BOAT_DISABLE_AVOIDANCE = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_HELI_LANDING_AREA_BLOCKED = function(vehicle) end,

    ---Used on helicopters and blimps during the CTaskVehicleLand task. Sets a value on the task to 10f
    ---@param vehicle Vehicle
    SET_SHORT_SLOWDOWN_FOR_LANDING = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_HELI_TURBULENCE_SCALAR = function(vehicle, p1) end,

    ---Initially used in Max Payne 3, that's why we know the name.
    ---@param vehicle Vehicle
    SET_CAR_BOOT_OPEN = function(vehicle) end,

    ---"To burst tyres VEHICLE::SET_VEHICLE_TYRE_BURST(vehicle, 0, true, 1000.0)\
    ---to burst all tyres type it 8 times where p1 = 0 to 7.\
    ---\
    ---p3 seems to be how much damage it has taken. 0 doesn't deflate them, 1000 completely deflates them.\
    ---\
    ---'0 = wheel_lf / bike, plane or jet front\
    ---'1 = wheel_rf\
    ---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left\
    ---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right\
    ---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left\
    ---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right\
    ---'45 = 6 wheels trailer mid wheel left\
    ---'47 = 6 wheels trailer mid wheel right
    ---@param vehicle Vehicle
    ---@param index integer
    ---@param onRim BOOL
    ---@param p3 number
    SET_VEHICLE_TYRE_BURST = function(vehicle, index, onRim, p3) end,

    ---Closes all doors of a vehicle:
    ---@param vehicle Vehicle
    ---@param closeInstantly BOOL
    SET_VEHICLE_DOORS_SHUT = function(vehicle, closeInstantly) end,

    ---Allows you to toggle bulletproof tires.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_TYRES_CAN_BURST = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_TYRES_CAN_BURST = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param enabled BOOL
    SET_VEHICLE_WHEELS_CAN_BREAK = function(vehicle, enabled) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param loose BOOL
    ---@param openInstantly BOOL
    SET_VEHICLE_DOOR_OPEN = function(vehicle, doorId, loose, openInstantly) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT\
    ---\
    ---Usually used alongside other vehicle door natives.
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param toggle BOOL
    SET_VEHICLE_DOOR_AUTO_LOCK = function(vehicle, doorId, toggle) end,

    ---@param p0 Any
    SET_FLEEING_VEHICLES_USE_SWITCHED_OFF_NODES = function(p0) end,

    ---windowIndex:\
    ---0 = Front Right Window\
    ---1 = Front Left Window\
    ---2 = Back Right Window\
    ---3 = Back Left Window\
    ---4 = Unknown\
    ---5 = Unknown\
    ---6 = Windscreen\
    ---7 = Rear Windscreen
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    REMOVE_VEHICLE_WINDOW = function(vehicle, windowIndex) end,

    ---Roll down all the windows of the vehicle passed through the first parameter.
    ---@param vehicle Vehicle
    ROLL_DOWN_WINDOWS = function(vehicle) end,

    ---windowIndex:\
    ---0 = Front Left Window\
    ---1 = Front Right Window\
    ---2 = Rear Left Window\
    ---3 = Rear Right Window\
    ---4 = Front Windscreen\
    ---5 = Rear Windscreen\
    ---6 = Mid Left\
    ---7 = Mid Right\
    ---8 = Invalid
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    ROLL_DOWN_WINDOW = function(vehicle, windowIndex) end,

    ---windowIndex:\
    ---0 = Front Left Window\
    ---1 = Front Right Window\
    ---2 = Rear Left Window\
    ---3 = Rear Right Window\
    ---4 = Front Windscreen\
    ---5 = Rear Windscreen\
    ---6 = Mid Left\
    ---7 = Mid Right\
    ---8 = Invalid
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    ROLL_UP_WINDOW = function(vehicle, windowIndex) end,

    ---windowIndex:\
    ---0 = Front Left Window\
    ---1 = Front Right Window\
    ---2 = Rear Left Window\
    ---3 = Rear Right Window\
    ---4 = Front Windscreen\
    ---5 = Rear Windscreen\
    ---6 = Mid Left\
    ---7 = Mid Right\
    ---8 = Invalid
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    SMASH_VEHICLE_WINDOW = function(vehicle, windowIndex) end,

    ---windowIndex:\
    ---0 = Front Left Window\
    ---1 = Front Right Window\
    ---2 = Rear Left Window\
    ---3 = Rear Right Window\
    ---4 = Front Windscreen\
    ---5 = Rear Windscreen\
    ---6 = Mid Left\
    ---7 = Mid Right\
    ---8 = Invalid\
    ---\
    ---Additional information: FIX_VEHICLE_WINDOW (0x140D0BB88) references an array of bone vehicle indices (0x141D4B3E0) { 2Ah, 2Bh, 2Ch, 2Dh, 2Eh, 2Fh, 28h, 29h } that correspond to: window_lf, window_rf, window_lr, window_rr, window_lm, window_rm, windscreen, windscreen_r. This array is used by most vehwindow natives.\
    ---\
    ---Also, this function is coded to not work on vehicles of type: CBike, Bmx, CBoat, CTrain, and CSubmarine.
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    FIX_VEHICLE_WINDOW = function(vehicle, windowIndex) end,

    ---Detaches the vehicle's windscreen.\
    ---For further information, see : gtaforums.com/topic/859570-glass/#entry1068894566
    ---@param vehicle Vehicle
    POP_OUT_VEHICLE_WINDSCREEN = function(vehicle) end,

    ---Pops off the "roof" bone in the direction of the specified offset from the vehicle.
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    POP_OFF_VEHICLE_ROOF_WITH_IMPULSE = function(vehicle, x, y, z) end,

    ---set's if the vehicle has lights or not.\
    ---not an on off toggle.\
    ---p1 = 0 ;vehicle normal lights, off then lowbeams, then highbeams\
    ---p1 = 1 ;vehicle doesn't have lights, always off\
    ---p1 = 2 ;vehicle has always on lights\
    ---p1 = 3 ;or even larger like 4,5,... normal lights like =1\
    ---note1: when using =2 on day it's lowbeam,highbeam\
    ---but at night it's lowbeam,lowbeam,highbeam\
    ---note2: when using =0 it's affected by day or night for highbeams don't exist in daytime.
    ---@param vehicle Vehicle
    ---@param state integer
    SET_VEHICLE_LIGHTS = function(vehicle, state) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_USE_PLAYER_LIGHT_SETTINGS = function(vehicle, toggle) end,

    ---p1 can be either 0, 1 or 2.\
    ---\
    ---Determines how vehicle lights behave when toggled.\
    ---\
    ---0 = Default (Lights can be toggled between off, normal and high beams)\
    ---1 = Lights Disabled (Lights are fully disabled, cannot be toggled)\
    ---2 = Always On (Lights can be toggled between normal and high beams)
    ---@param vehicle Vehicle
    ---@param p1 integer
    SET_VEHICLE_HEADLIGHT_SHADOWS = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_VEHICLE_ALARM = function(vehicle, state) end,

    ---@param vehicle Vehicle
    START_VEHICLE_ALARM = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_ALARM_ACTIVATED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_INTERIORLIGHT = function(vehicle, toggle) end,

    ---Sets some bit of vehicle
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_FORCE_INTERIORLIGHT = function(vehicle, toggle) end,

    ---multiplier = brightness of head lights.\
    ---this value isn't capped afaik.\
    ---\
    ---multiplier = 0.0 no lights\
    ---multiplier = 1.0 default game value\
    ---
    ---@param vehicle Vehicle
    ---@param multiplier number
    SET_VEHICLE_LIGHT_MULTIPLIER = function(vehicle, multiplier) end,

    ---@param vehicle Vehicle
    ---@param trailer Vehicle
    ---@param radius number
    ATTACH_VEHICLE_TO_TRAILER = function(vehicle, trailer, radius) end,

    ---This is the proper way of attaching vehicles to the car carrier, it's what Rockstar uses. Video Demo: https://www.youtube.com/watch?v=2lVEIzf7bgo
    ---@param vehicle Vehicle
    ---@param trailer Vehicle
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@param coordsX number
    ---@param coordsY number
    ---@param coordsZ number
    ---@param rotationX number
    ---@param rotationY number
    ---@param rotationZ number
    ---@param disableCollisions number
    ATTACH_VEHICLE_ON_TO_TRAILER = function(vehicle, trailer, offsetX, offsetY, offsetZ, coordsX, coordsY, coordsZ, rotationX, rotationY, rotationZ, disableCollisions) end,

    ---@param vehicle Vehicle
    ---@param entity Entity
    ---@param p2 number
    STABILISE_ENTITY_ATTACHED_TO_HELI = function(vehicle, entity, p2) end,

    ---@param vehicle Vehicle
    DETACH_VEHICLE_FROM_TRAILER = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_ATTACHED_TO_TRAILER = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_TRAILER_INVERSE_MASS_SCALE = function(vehicle, p1) end,

    ---in the decompiled scripts, seems to be always called on the vehicle right after being attached to a trailer.
    ---@param vehicle Vehicle
    SET_TRAILER_LEGS_RAISED = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_TRAILER_LEGS_LOWERED = function(vehicle) end,

    ---tyreIndex = 0 to 4 on normal vehicles\
    ---\
    ---'0 = wheel_lf / bike, plane or jet front\
    ---'1 = wheel_rf\
    ---'2 = wheel_lm / in 6 wheels trailer, plane or jet is first one on left\
    ---'3 = wheel_rm / in 6 wheels trailer, plane or jet is first one on right\
    ---'4 = wheel_lr / bike rear / in 6 wheels trailer, plane or jet is last one on left\
    ---'5 = wheel_rr / in 6 wheels trailer, plane or jet is last one on right\
    ---'45 = 6 wheels trailer mid wheel left\
    ---'47 = 6 wheels trailer mid wheel right
    ---@param vehicle Vehicle
    ---@param tyreIndex integer
    SET_VEHICLE_TYRE_FIXED = function(vehicle, tyreIndex) end,

    ---Sets a vehicle's license plate text.  8 chars maximum.\
    ---\
    ---Example:\
    ---Ped playerPed = PLAYER::PLAYER_PED_ID();\
    ---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);\
    ---char *plateText = "KING";\
    ---VEHICLE::SET_VEHICLE_NUMBER_PLATE_TEXT(veh, plateText);
    ---@param vehicle Vehicle
    ---@param plateText string
    SET_VEHICLE_NUMBER_PLATE_TEXT = function(vehicle, plateText) end,

    ---Returns the license plate text from a vehicle. 8 chars maximum.
    ---@param vehicle Vehicle
    ---@return string
    GET_VEHICLE_NUMBER_PLATE_TEXT = function(vehicle) end,

    ---Returns the number of *types* of licence plates, enumerated below in SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX.
    ---@return integer
    GET_NUMBER_OF_VEHICLE_NUMBER_PLATES = function() end,

    ---Plates:\
    ---Blue/White - 0\
    ---Yellow/black - 1\
    ---Yellow/Blue - 2\
    ---Blue/White2 - 3\
    ---Blue/White3 - 4\
    ---Yankton - 5
    ---@param vehicle Vehicle
    ---@param plateIndex integer
    SET_VEHICLE_NUMBER_PLATE_TEXT_INDEX = function(vehicle, plateIndex) end,

    ---Returns the PlateType of a vehicle\
    ---      Blue_on_White_1 = 3,\
    ---      Blue_on_White_2 = 0,\
    ---      Blue_on_White_3 = 4,\
    ---      Yellow_on_Blue = 2,\
    ---       Yellow_on_Black = 1,\
    ---      North_Yankton = 5,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_NUMBER_PLATE_TEXT_INDEX = function(vehicle) end,

    ---@param toggle BOOL
    SET_RANDOM_TRAINS = function(toggle) end,

    ---Train models HAVE TO be loaded (requested) before you use this.\
    ---For variation 15 - request:\
    ---\
    ---freight\
    ---freightcar\
    ---freightgrain\
    ---freightcont1\
    ---freightcont2\
    ---freighttrailer\
    ---\
    ---
    ---@param variation integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param direction BOOL
    ---@param p5 Any
    ---@param p6 Any
    ---@return Vehicle
    CREATE_MISSION_TRAIN = function(variation, x, y, z, direction, p5, p6) end,

    ---Toggles whether ambient trains can spawn on the specified track or not\
    ---\
    ---`trackId` is the internal id of the train track to switch.\
    ---`state` is whether ambient trains can spawn or not\
    ---\
    ---trackIds\
    ---0 (`trains1.dat`) Main track around SA\
    ---1 (`trains2.dat`) Davis Quartz Quarry branch\
    ---2 (`trains3.dat`) Second track alongside live track along Roy Lewenstein Blv.\
    ---3 (`trains4.dat`) Metro track circuit\
    ---4 (`trains5.dat`) Branch in Mirror Park Railyard\
    ---5 (`trains6.dat`) Branch in Mirror Park Railyard\
    ---6 (`trains7.dat`) LS branch to Mirror Park Railyard\
    ---7 (`trains8.dat`) Overground part of metro track along Forum Dr.\
    ---8 (`trains9.dat`) Branch to Mirror Park Railyard\
    ---9 (`trains10.dat`) Yankton train\
    ---10 (`trains11.dat`) Part of metro track near mission row\
    ---11 (`trains12.dat`) Yankton prologue mission train\
    ---Full list of all train tracks + track nodes by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/traintracks.json
    ---@param trackId integer
    ---@param state BOOL
    SWITCH_TRAIN_TRACK = function(trackId, state) end,

    ---Only called once inside main_persitant with the parameters p0 = 0, p1 = 120000\
    ---\
    ---trackIndex: 0 - 26\
    ---Full list of all train tracks + track nodes by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/traintracks.json
    ---@param trackIndex integer
    ---@param frequency integer
    SET_TRAIN_TRACK_SPAWN_FREQUENCY = function(trackIndex, frequency) end,

    ---@param p0 Any
    ALLOW_TRAIN_TO_BE_REMOVED_BY_POPULATION = function(p0) end,

    DELETE_ALL_TRAINS = function() end,

    ---@param train Vehicle
    ---@param speed number
    SET_TRAIN_SPEED = function(train, speed) end,

    ---@param train Vehicle
    ---@param speed number
    SET_TRAIN_CRUISE_SPEED = function(train, speed) end,

    ---@param toggle BOOL
    SET_RANDOM_BOATS = function(toggle) end,

    ---@param toggle BOOL
    SET_RANDOM_BOATS_MP = function(toggle) end,

    ---@param toggle BOOL
    SET_GARBAGE_TRUCKS = function(toggle) end,

    ---Maximum amount of vehicles with vehicle stuck check appears to be 16.
    ---@param vehicle Vehicle
    ---@return BOOL
    DOES_VEHICLE_HAVE_STUCK_VEHICLE_CHECK = function(vehicle) end,

    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param script string
    ---@return integer
    GET_VEHICLE_RECORDING_ID = function(recording, script) end,

    ---Request the vehicle recording defined by the lowercase format string "%s%03d.yvr". For example, REQUEST_VEHICLE_RECORDING(1, "FBIs1UBER") corresponds to fbis1uber001.yvr.\
    ---For all vehicle recording/playback natives, "script" is a common prefix that usually corresponds to the script/mission the recording is used in, "recording" is its int suffix, and "id" (e.g., in native GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID) corresponds to a unique identifier within the recording streaming module.\
    ---Note that only 24 recordings (hardcoded in multiple places) can ever active at a given time before clobbering begins.
    ---@param recording integer
    ---@param script string
    REQUEST_VEHICLE_RECORDING = function(recording, script) end,

    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param script string
    ---@return BOOL
    HAS_VEHICLE_RECORDING_BEEN_LOADED = function(recording, script) end,

    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param script string
    REMOVE_VEHICLE_RECORDING = function(recording, script) end,

    ---@param id integer
    ---@param time number
    ---@return Vector3
    GET_POSITION_OF_VEHICLE_RECORDING_ID_AT_TIME = function(id, time) end,

    ---This native does no interpolation between pathpoints. The same position will be returned for all times up to the next pathpoint in the recording.\
    ---\
    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param time number
    ---@param script string
    ---@return Vector3
    GET_POSITION_OF_VEHICLE_RECORDING_AT_TIME = function(recording, time, script) end,

    ---@param id integer
    ---@param time number
    ---@return Vector3
    GET_ROTATION_OF_VEHICLE_RECORDING_ID_AT_TIME = function(id, time) end,

    ---This native does no interpolation between pathpoints. The same rotation will be returned for all times up to the next pathpoint in the recording.\
    ---\
    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param time number
    ---@param script string
    ---@return Vector3
    GET_ROTATION_OF_VEHICLE_RECORDING_AT_TIME = function(recording, time, script) end,

    ---@param id integer
    ---@return number
    GET_TOTAL_DURATION_OF_VEHICLE_RECORDING_ID = function(id) end,

    ---See REQUEST_VEHICLE_RECORDING
    ---@param recording integer
    ---@param script string
    ---@return number
    GET_TOTAL_DURATION_OF_VEHICLE_RECORDING = function(recording, script) end,

    ---Distance traveled in the vehicles current recording.
    ---@param vehicle Vehicle
    ---@return number
    GET_POSITION_IN_RECORDING = function(vehicle) end,

    ---Can be used with GET_TOTAL_DURATION_OF_VEHICLE_RECORDING{_ID} to compute a percentage.
    ---@param vehicle Vehicle
    ---@return number
    GET_TIME_POSITION_IN_RECORDING = function(vehicle) end,

    ---p3 is some flag related to 'trailers' (invokes CVehicle::GetTrailer).\
    ---\
    ---See REQUEST_VEHICLE_RECORDING
    ---@param vehicle Vehicle
    ---@param recording integer
    ---@param script string
    ---@param p3 BOOL
    START_PLAYBACK_RECORDED_VEHICLE = function(vehicle, recording, script, p3) end,

    ---flags requires further research, e.g., 0x4/0x8 are related to the AI driving task and 0x20 is internally set and interacts with dynamic entity components.\
    ---\
    ---time, often zero and capped at 500, is related to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER
    ---@param vehicle Vehicle
    ---@param recording integer
    ---@param script string
    ---@param flags integer
    ---@param time integer
    ---@param drivingStyle integer
    START_PLAYBACK_RECORDED_VEHICLE_WITH_FLAGS = function(vehicle, recording, script, flags, time, drivingStyle) end,

    ---Often called after START_PLAYBACK_RECORDED_VEHICLE and SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE; similar in use to FORCE_ENTITY_AI_AND_ANIMATION_UPDATE.
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    STOP_PLAYBACK_RECORDED_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    PAUSE_PLAYBACK_RECORDED_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    UNPAUSE_PLAYBACK_RECORDED_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_PLAYBACK_GOING_ON_FOR_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_PLAYBACK_USING_AI_GOING_ON_FOR_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_CURRENT_PLAYBACK_FOR_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    SKIP_TO_END_AND_STOP_PLAYBACK_RECORDED_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param speed number
    SET_PLAYBACK_SPEED = function(vehicle, speed) end,

    ---AI abides by the provided driving style (e.g., stopping at red lights or waiting behind traffic) while executing the specificed vehicle recording.\
    ---\
    ---FORCE_PLAYBACK_RECORDED_VEHICLE_UPDATE is a related native that deals with the AI physics for such recordings.
    ---@param vehicle Vehicle
    ---@param recording integer
    ---@param script string
    ---@param speed number
    ---@param drivingStyle integer
    START_PLAYBACK_RECORDED_VEHICLE_USING_AI = function(vehicle, recording, script, speed, drivingStyle) end,

    ---SET_TIME_POSITION_IN_RECORDING can be emulated by: desired_time - GET_TIME_POSITION_IN_RECORDING(vehicle)
    ---@param vehicle Vehicle
    ---@param time number
    SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE = function(vehicle, time) end,

    ---Identical to SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER with 0 as arguments for p1 and p3.
    ---@param vehicle Vehicle
    ---@param drivingStyle integer
    SET_PLAYBACK_TO_USE_AI = function(vehicle, drivingStyle) end,

    ---Time is number of milliseconds before reverting, zero for indefinitely.
    ---@param vehicle Vehicle
    ---@param time integer
    ---@param drivingStyle integer
    ---@param p3 BOOL
    SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER = function(vehicle, time, drivingStyle, p3) end,

    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 Any
    SET_ADDITIONAL_ROTATION_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z, p4) end,

    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    SET_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z) end,

    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    SET_GLOBAL_POSITION_OFFSET_FOR_RECORDED_VEHICLE_PLAYBACK = function(vehicle, x, y, z) end,

    ---A vehicle recording playback flag only used in jewelry_heist
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_SHOULD_LERP_FROM_AI_TO_FULL_RECORDING = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    EXPLODE_VEHICLE_IN_CUTSCENE = function(vehicle, p1) end,

    ---@param p0 Any
    ---@param p1 number
    ---@param p2 Any
    ---@param p3 BOOL
    ---@param p4 BOOL
    ---@param p5 BOOL
    ---@param p6 Any
    ADD_VEHICLE_STUCK_CHECK_WITH_WARP = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---Makes the vehicle stop spawning naturally in traffic. Here's an essential example:\
    ---\
    ---VEHICLE::SET_VEHICLE_MODEL_IS_SUPPRESSED(MISC::GET_HASH_KEY("taco"), true);\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param model Hash
    ---@param suppressed BOOL
    SET_VEHICLE_MODEL_IS_SUPPRESSED = function(model, suppressed) end,

    ---Gets a random vehicle in a sphere at the specified position, of the specified radius.\
    ---\
    ---x: The X-component of the position of the sphere.\
    ---y: The Y-component of the position of the sphere.\
    ---z: The Z-component of the position of the sphere.\
    ---radius: The radius of the sphere. Max is 9999.9004.\
    ---modelHash: The vehicle model to limit the selection to. Pass 0 for any model.\
    ---flags: The bitwise flags that modifies the behaviour of this function.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param flags integer
    ---@return Vehicle
    GET_RANDOM_VEHICLE_IN_SPHERE = function(x, y, z, radius, modelHash, flags) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 integer
    ---@param p5 integer
    ---@param p6 integer
    ---@return Vehicle
    GET_RANDOM_VEHICLE_FRONT_BUMPER_IN_SPHERE = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 integer
    ---@param p5 integer
    ---@param p6 integer
    ---@return Vehicle
    GET_RANDOM_VEHICLE_BACK_BUMPER_IN_SPHERE = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---Example usage\
    ---VEHICLE::GET_CLOSEST_VEHICLE(x, y, z, radius, hash, unknown leave at 70) \
    ---\
    ---x, y, z: Position to get closest vehicle to.\
    ---radius: Max radius to get a vehicle.\
    ---modelHash: Limit to vehicles with this model. 0 for any.\
    ---flags: The bitwise flags altering the function's behaviour.\
    ---\
    ---Does not return police cars or helicopters.\
    ---\
    ---It seems to return police cars for me, does not seem to return helicopters, planes or boats for some reason\
    ---\
    ---Only returns non police cars and motorbikes with the flag set to 70 and modelHash to 0. ModelHash seems to always be 0 when not a modelHash in the scripts, as stated above. \
    ---\
    ---These flags were found in the b617d scripts: 0,2,4,6,7,23,127,260,2146,2175,12294,16384,16386,20503,32768,67590,67711,98309,100359.\
    ---Converted to binary, each bit probably represents a flag as explained regarding another native here: gtaforums.com/topic/822314-guide-driving-styles\
    ---\
    ---Conversion of found flags to binary: https://pastebin.com/kghNFkRi\
    ---\
    ---At exactly 16384 which is 0100000000000000 in binary and 4000 in hexadecimal only planes are returned. \
    ---\
    ---It's probably more convenient to use worldGetAllVehicles(int *arr, int arrSize) and check the shortest distance yourself and sort if you want by checking the vehicle type with for example VEHICLE::IS_THIS_MODEL_A_BOAT\
    ---\
    ----------------------------------------------------------------------------\
    ---\
    ---Conclusion: This native is not worth trying to use. Use something like this instead: https://pastebin.com/xiFdXa7h\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param modelHash Hash
    ---@param flags integer
    ---@return Vehicle
    GET_CLOSEST_VEHICLE = function(x, y, z, radius, modelHash, flags) end,

    ---Corrected p1. it's basically the 'carriage/trailer number'. So if the train has 3 trailers you'd call the native once with a var or 3 times with 1, 2, 3.
    ---@param train Vehicle
    ---@param trailerNumber integer
    ---@return Vehicle
    GET_TRAIN_CARRIAGE = function(train, trailerNumber) end,

    ---@param train Vehicle
    ---@param toggle BOOL
    _SET_MAKE_TRAIN_SCAN_FOR_BLOCKING_ENTITIES = function(train, toggle) end,

    ---@param name string
    ---@return integer
    _GET_MISSION_TRAIN_CONFIG_INDEX_BY_NAME = function(name) end,

    ---@param train Vehicle
    ---@return BOOL
    IS_MISSION_TRAIN = function(train) end,

    ---@param train Vehicle
    ---@return Vehicle
    DELETE_MISSION_TRAIN = function(train) end,

    ---p1 is always 0
    ---@param train Vehicle
    ---@param p1 BOOL
    ---@return Vehicle
    SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED = function(train, p1) end,

    ---@param train Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    SET_MISSION_TRAIN_COORDS = function(train, x, y, z) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_BOAT = function(model) end,

    ---Checks if model is a boat, then checks for FLAG_IS_JETSKI.
    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_JETSKI = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_PLANE = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_HELI = function(model) end,

    ---To check if the model is an amphibious car, use IS_THIS_MODEL_AN_AMPHIBIOUS_CAR.
    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_CAR = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_TRAIN = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_BIKE = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_BICYCLE = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_A_QUADBIKE = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_AN_AMPHIBIOUS_CAR = function(model) end,

    ---@param model Hash
    ---@return BOOL
    IS_THIS_MODEL_AN_AMPHIBIOUS_QUADBIKE = function(model) end,

    ---Equivalent of SET_HELI_BLADES_SPEED(vehicleHandle, 1.0f);
    ---@param vehicle Vehicle
    SET_HELI_BLADES_FULL_SPEED = function(vehicle) end,

    ---Sets the speed of the helicopter blades in percentage of the full speed.\
    ---\
    ---vehicleHandle: The helicopter.\
    ---speed: The speed in percentage, 0.0f being 0% and 1.0f being 100%.
    ---@param vehicle Vehicle
    ---@param speed number
    SET_HELI_BLADES_SPEED = function(vehicle, speed) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    ---@param p2 number
    FORCE_SUB_THROTTLE_FOR_TIME = function(vehicle, p1, p2) end,

    ---This has not yet been tested - it's just an assumption of what the types could be.
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_VEHICLE_CAN_BE_TARGETTED = function(vehicle, state) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_DONT_ALLOW_PLAYER_TO_ENTER_VEHICLE_IF_LOCKED_FOR_PLAYER = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED = function(vehicle, state) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_HAS_UNBREAKABLE_LIGHTS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_RESPECTS_LOCKS_WHEN_HAS_DRIVER = function(vehicle, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_VEHICLE_CAN_EJECT_PASSENGERS_IF_LOCKED = function(p0, p1) end,

    ---Dirt level does not become greater than 15.0
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_DIRT_LEVEL = function(vehicle) end,

    ---You can't use values greater than 15.0\
    ---Also, R* does (float)(rand() % 15) to get a random dirt level when generating a vehicle.
    ---@param vehicle Vehicle
    ---@param dirtLevel number
    SET_VEHICLE_DIRT_LEVEL = function(vehicle, dirtLevel) end,

    ---Appears to return true if the vehicle has any damage, including cosmetically.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_DOES_VEHICLE_HAVE_DAMAGE_DECALS = function(vehicle) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@return BOOL
    IS_VEHICLE_DOOR_FULLY_OPEN = function(vehicle, doorId) end,

    ---Starts or stops the engine on the specified vehicle.\
    ---\
    ---vehicle: The vehicle to start or stop the engine on.\
    ---value: true to turn the vehicle on; false to turn it off.\
    ---instantly: if true, the vehicle will be set to the state immediately; otherwise, the current driver will physically turn on or off the engine.\
    ---disableAutoStart: If true, the system will prevent the engine from starting when the player got into it.
    ---@param vehicle Vehicle
    ---@param value BOOL
    ---@param instantly BOOL
    ---@param disableAutoStart BOOL
    SET_VEHICLE_ENGINE_ON = function(vehicle, value, instantly, disableAutoStart) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_UNDRIVEABLE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_PROVIDES_COVER = function(vehicle, toggle) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param speed integer
    ---@param angle number
    SET_VEHICLE_DOOR_CONTROL = function(vehicle, doorId, speed, angle) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@param p4 BOOL
    SET_VEHICLE_DOOR_LATCHED = function(vehicle, doorId, p2, p3, p4) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@return number
    GET_VEHICLE_DOOR_ANGLE_RATIO = function(vehicle, doorId) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doord integer
    ---@return Ped
    GET_PED_USING_VEHICLE_DOOR = function(vehicle, doord) end,

    ---enum eDoorId\
    ---{\
    ---	VEH_EXT_DOOR_INVALID_ID = -1,\
    ---	VEH_EXT_DOOR_DSIDE_F,\
    ---	VEH_EXT_DOOR_DSIDE_R,\
    ---	VEH_EXT_DOOR_PSIDE_F,\
    ---	VEH_EXT_DOOR_PSIDE_R,\
    ---	VEH_EXT_BONNET,\
    ---	VEH_EXT_BOOT\
    ---};
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param closeInstantly BOOL
    SET_VEHICLE_DOOR_SHUT = function(vehicle, doorId, closeInstantly) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param deleteDoor BOOL
    SET_VEHICLE_DOOR_BROKEN = function(vehicle, doorId, deleteDoor) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_BREAK = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    DOES_VEHICLE_HAVE_ROOF = function(vehicle) end,

    ---@param p0 Any
    SET_VEHICLE_REMOVE_AGGRESSIVE_CARJACK_MISSION = function(p0) end,

    ---@param p0 Any
    SET_VEHICLE_AVOID_PLAYER_VEHICLE_RIOT_VAN_MISSION = function(p0) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_CARJACK_MISSION_REMOVAL_PARAMETERS = function(p0, p1) end,

    ---Returns true if MF_IS_BIG (strModelFlags 0x8) handling model flag is set.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_BIG_VEHICLE = function(vehicle) end,

    ---Returns the total amount of color combinations found in the vehicle's carvariations.meta entry.
    ---@param vehicle Vehicle
    ---@return integer
    GET_NUMBER_OF_VEHICLE_COLOURS = function(vehicle) end,

    ---Sets the selected vehicle's colors to the specified index of the color combination found in the vehicle's carvariations.meta entry.
    ---@param vehicle Vehicle
    ---@param colorCombination integer
    SET_VEHICLE_COLOUR_COMBINATION = function(vehicle, colorCombination) end,

    ---Returns the index of the color combination found in the vehicle's carvariations.meta entry.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_COLOUR_COMBINATION = function(vehicle) end,

    ---`color`: is the paint index for the vehicle.\
    ---Paint index goes from 0 to 12.\
    ---Be aware that it only works on xenon lights. Example: https://i.imgur.com/yV3cpG9.png\
    ---Full list of all vehicle xenon lights by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json
    ---@param vehicle Vehicle
    ---@param colorIndex integer
    SET_VEHICLE_XENON_LIGHT_COLOR_INDEX = function(vehicle, colorIndex) end,

    ---Returns the headlight color index from the vehicle. Value between 0, 12.\
    ---Use SET_VEHICLE_XENON_LIGHT_COLOR_INDEX to set the headlights color for the vehicle.\
    ---Must enable xenon headlights before it'll take affect.\
    ---\
    ---Returns an int, value between 0-12 or 255 if no color is set.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_XENON_LIGHT_COLOR_INDEX = function(vehicle) end,

    ---Setting this to false, makes the specified vehicle to where if you press Y your character doesn't even attempt the animation to enter the vehicle. Hence it's not considered aka ignored.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_IS_CONSIDERED_BY_PLAYER = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_WILL_FORCE_OTHER_VEHICLES_TO_STOP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_ACT_AS_IF_HAS_SIREN_ON = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_USE_MORE_RESTRICTIVE_SPAWN_CHECKS = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_MAY_BE_USED_BY_GOTO_POINT_ANY_MEANS = function(vehicle, p1) end,

    ---Not present in the retail version! It's just a nullsub.\
    ---\
    ---p0 always true (except in one case)\
    ---successIndicator: 0 if success, -1 if failed
    ---@param p0 BOOL
    ---@param modelHash Hash
    ---@param successIndicator integer
    ---@return Hash
    ---@return integer
    GET_RANDOM_VEHICLE_MODEL_IN_MEMORY = function(p0, modelHash, successIndicator) end,

    ---enum VehicleLockStatus = {\
    ---    None = 0,\
    ---    Unlocked = 1,\
    ---    Locked = 2,\
    ---    LockedForPlayer = 3,\
    ---    StickPlayerInside = 4, -- Doesn't allow players to exit the vehicle with the exit vehicle key.\
    ---    CanBeBrokenInto = 7, -- Can be broken into the car. If the glass is broken, the value will be set to 1\
    ---    CanBeBrokenIntoPersist = 8, -- Can be broken into persist\
    ---    CannotBeTriedToEnter = 10, -- Cannot be tried to enter (Nothing happens when you press the vehicle enter key).\
    ---}
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_DOOR_LOCK_STATUS = function(vehicle) end,

    ---Returns vehicle door lock state previously set with SET_VEHICLE_INDIVIDUAL_DOORS_LOCKED
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@return integer
    GET_VEHICLE_INDIVIDUAL_DOOR_LOCK_STATUS = function(vehicle, doorId) end,

    ---doorID starts at 0, not seeming to skip any numbers. Four door vehicles intuitively range from 0 to 3.
    ---@param veh Vehicle
    ---@param doorID integer
    ---@return BOOL
    IS_VEHICLE_DOOR_DAMAGED = function(veh, doorID) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@param isBreakable BOOL
    SET_DOOR_ALLOWED_TO_BE_BROKEN_OFF = function(vehicle, doorId, isBreakable) end,

    ---@param vehicle Vehicle
    ---@param frontBumper BOOL
    ---@return BOOL
    IS_VEHICLE_BUMPER_BOUNCING = function(vehicle, frontBumper) end,

    ---@param vehicle Vehicle
    ---@param frontBumper BOOL
    ---@return BOOL
    IS_VEHICLE_BUMPER_BROKEN_OFF = function(vehicle, frontBumper) end,

    ---Usage:\
    ---\
    ---public bool isCopInRange(Vector3 Location, float Range)\
    ---        {\
    ---            return Function.Call<bool>(Hash.IS_COP_PED_IN_AREA_3D, Location.X - Range, Location.Y - Range, Location.Z - Range, Location.X + Range, Location.Y + Range, Location.Z + Range);\
    ---    }
    ---@param x1 number
    ---@param x2 number
    ---@param y1 number
    ---@param y2 number
    ---@param z1 number
    ---@param z2 number
    ---@return BOOL
    IS_COP_VEHICLE_IN_AREA_3D = function(x1, x2, y1, y2, z1, z2) end,

    --- Public Function isVehicleOnAllWheels(vh As Vehicle) As Boolean\
    ---        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_ON_ALL_WHEELS, vh)\
    ---    End Function\
    ---
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_ON_ALL_WHEELS = function(vehicle) end,

    ---Returns `nMonetaryValue` from handling.meta for specific model.
    ---@param vehicleModel Hash
    ---@return integer
    GET_VEHICLE_MODEL_VALUE = function(vehicleModel) end,

    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param vehicle Vehicle
    ---@return Hash
    GET_VEHICLE_LAYOUT_HASH = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@return Hash
    GET_IN_VEHICLE_CLIPSET_HASH_FOR_SEAT = function(vehicle, p1) end,

    ---Makes the train all jumbled up and derailed as it moves on the tracks (though that wont stop it from its normal operations)
    ---@param train Vehicle
    ---@param toggle BOOL
    SET_RENDER_TRAIN_AS_DERAILED = function(train, toggle) end,

    ---They use the same color indexs as SET_VEHICLE_COLOURS.
    ---@param vehicle Vehicle
    ---@param pearlescentColor integer
    ---@param wheelColor integer
    SET_VEHICLE_EXTRA_COLOURS = function(vehicle, pearlescentColor, wheelColor) end,

    ---@param vehicle Vehicle
    ---@param pearlescentColor integer
    ---@param wheelColor integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_EXTRA_COLOURS = function(vehicle, pearlescentColor, wheelColor) end,

    ---@param vehicle Vehicle
    ---@param color integer
    SET_VEHICLE_EXTRA_COLOUR_5 = function(vehicle, color) end,

    ---@param vehicle Vehicle
    ---@param color integer
    ---@return integer
    GET_VEHICLE_EXTRA_COLOUR_5 = function(vehicle, color) end,

    ---@param vehicle Vehicle
    ---@param color integer
    SET_VEHICLE_EXTRA_COLOUR_6 = function(vehicle, color) end,

    ---@param vehicle Vehicle
    ---@param color integer
    ---@return integer
    GET_VEHICLE_EXTRA_COLOUR_6 = function(vehicle, color) end,

    STOP_ALL_GARAGE_ACTIVITY = function() end,

    ---This fixes a vehicle.\
    ---If the vehicle's engine's broken then you cannot fix it with this native.
    ---@param vehicle Vehicle
    SET_VEHICLE_FIXED = function(vehicle) end,

    ---This fixes the deformation of a vehicle but the vehicle health doesn't improve
    ---@param vehicle Vehicle
    SET_VEHICLE_DEFORMATION_FIXED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_ENGINE_MISSFIRE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_LEAK_OIL = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_LEAK_PETROL = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_VEHICLE_PETROL_TANK_FIRES = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_VEHICLE_PETROL_TANK_DAMAGE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_VEHICLE_ENGINE_FIRES = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_LIMIT_SPEED_WHEN_PLAYER_INACTIVE = function(vehicle, toggle) end,

    ---sfink: sets bit in vehicle's structure, used by maintransition, fm_mission_controller, mission_race and a couple of other scripts. see dissassembly: \
    ---CVehicle *__fastcall sub_140CDAA10(signed int a1, char a2)\
    ---{\
    ---    CVehicle *result; // rax@1\
    ---\
    ---    result = EntityAsCVehicle(a1);\
    ---    if ( result )\
    ---    {\
    ---        result->field_886 &= 0xEFu;\
    ---        result->field_886 |= 16 * (a2 & 1);\
    ---}\
    ---    return result;\
    ---}
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_STOP_INSTANTLY_WHEN_PLAYER_INACTIVE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_PRETEND_OCCUPANTS = function(vehicle, toggle) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param p6 Any
    REMOVE_VEHICLES_FROM_GENERATORS_IN_AREA = function(x1, y1, z1, x2, y2, z2, p6) end,

    ---Locks the vehicle's steering to the desired angle, explained below.\
    ---\
    ---Requires to be called onTick. Steering is unlocked the moment the function stops being called on the vehicle.\
    ---\
    ---Steer bias:\
    ----1.0 = full right\
    ---0.0 = centered steering\
    ---1.0 = full left
    ---@param vehicle Vehicle
    ---@param value number
    SET_VEHICLE_STEER_BIAS = function(vehicle, value) end,

    ---@param vehicle Vehicle
    ---@param extraId integer
    ---@return BOOL
    IS_VEHICLE_EXTRA_TURNED_ON = function(vehicle, extraId) end,

    ---Available extraIds are 1-14, however none of the vehicles have extras above 12.
    ---@param vehicle Vehicle
    ---@param extraId integer
    ---@param disable BOOL
    SET_VEHICLE_EXTRA = function(vehicle, extraId, disable) end,

    ---Checks via CVehicleModelInfo
    ---@param vehicle Vehicle
    ---@param extraId integer
    ---@return BOOL
    DOES_EXTRA_EXIST = function(vehicle, extraId) end,

    ---Returns true if specified extra part is broken off. It only works for extras that can break off during collisions, non-breakable extras always return false. Also returns true if the breakable extra is toggled off through script.
    ---@param vehicle Vehicle
    ---@param extraId integer
    ---@return BOOL
    IS_EXTRA_BROKEN_OFF = function(vehicle, extraId) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_CONVERTIBLE_ROOF = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param instantlyLower BOOL
    LOWER_CONVERTIBLE_ROOF = function(vehicle, instantlyLower) end,

    ---@param vehicle Vehicle
    ---@param instantlyRaise BOOL
    RAISE_CONVERTIBLE_ROOF = function(vehicle, instantlyRaise) end,

    ---0 -> up\
    ---1 -> lowering down\
    ---2 -> down\
    ---3 -> raising up
    ---@param vehicle Vehicle
    ---@return integer
    GET_CONVERTIBLE_ROOF_STATE = function(vehicle) end,

    ---Returns true if the vehicle has a convertible roof.\
    ---\
    ---p1 is false almost always. However, in launcher_carwash/carwash1/carwash2 scripts, p1 is true and is accompanied by DOES_VEHICLE_HAVE_ROOF. If p1 is true, it seems that every single vehicle will return true irrespective of being a convertible.
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@return BOOL
    IS_VEHICLE_A_CONVERTIBLE = function(vehicle, p1) end,

    ---Transforms the `stormberg`/`toreador` to its "submarine" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.
    ---@param vehicle Vehicle
    ---@param noAnimation BOOL
    ---@return BOOL
    TRANSFORM_TO_SUBMARINE = function(vehicle, noAnimation) end,

    ---Transforms the `stormberg`/`toreador` to its "road vehicle" variant. If the vehicle is already in that state then the vehicle transformation audio will still play, but the vehicle won't change at all.
    ---@param vehicle Vehicle
    ---@param noAnimation BOOL
    TRANSFORM_TO_CAR = function(vehicle, noAnimation) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_IN_SUBMARINE_MODE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_STOPPED_AT_TRAFFIC_LIGHTS = function(vehicle) end,

    ---Apply damage to vehicle at a location. Location is relative to vehicle model (not world).\
    ---\
    ---Radius of effect damage applied in a sphere at impact location\
    ---When `focusOnModel` set to `true`, the damage sphere will travel towards the vehicle from the given point, thus guaranteeing an impact
    ---@param vehicle Vehicle
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param damage number
    ---@param radius number
    ---@param focusOnModel BOOL
    SET_VEHICLE_DAMAGE = function(vehicle, xOffset, yOffset, zOffset, damage, radius, focusOnModel) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_OCCUPANTS_TAKE_EXPLOSIVE_DAMAGE = function(vehicle, toggle) end,

    ---Returns 1000.0 if the function is unable to get the address of the specified vehicle or if it's not a vehicle.\
    ---\
    ---Minimum: -4000\
    ---Maximum: 1000\
    ---\
    ----4000: Engine is destroyed\
    ---0 and below: Engine catches fire and health rapidly declines\
    ---300: Engine is smoking and losing functionality\
    ---1000: Engine is perfect
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_ENGINE_HEALTH = function(vehicle) end,

    ---1000 is max health\
    ---Begins leaking gas at around 650 health\
    ---Minimum: -4000\
    ---Maximum: 1000\
    ---\
    ----4000: Engine is destroyed\
    ---0 and below: Engine catches fire and health rapidly declines\
    ---300: Engine is smoking and losing functionality\
    ---1000: Engine is perfect
    ---@param vehicle Vehicle
    ---@param health number
    SET_VEHICLE_ENGINE_HEALTH = function(vehicle, health) end,

    ---Works just like SET_VEHICLE_ENGINE_HEALTH, but only for planes.
    ---@param vehicle Vehicle
    ---@param health number
    SET_PLANE_ENGINE_HEALTH = function(vehicle, health) end,

    ---1000 is max health\
    ---Begins leaking gas at around 650 health\
    ----999.90002441406 appears to be minimum health, although nothing special occurs
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_PETROL_TANK_HEALTH = function(vehicle) end,

    ---1000 is max health\
    ---Begins leaking gas at around 650 health\
    ----999.90002441406 appears to be minimum health, although nothing special occurs
    ---@param vehicle Vehicle
    ---@param health number
    SET_VEHICLE_PETROL_TANK_HEALTH = function(vehicle, health) end,

    ---p1 can be anywhere from 0 to 3 in the scripts.\
    ---p2 being how long in milliseconds the vehicle has been stuck
    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@param ms integer
    ---@return BOOL
    IS_VEHICLE_STUCK_TIMER_UP = function(vehicle, p1, ms) end,

    ---The inner function has a switch on the second parameter. It's the stuck timer index.\
    ---\
    ---Here's some pseudo code I wrote for the inner function:\
    ---void __fastcall NATIVE_RESET_VEHICLE_STUCK_TIMER_INNER(CUnknown* unknownClassInVehicle, int timerIndex)\
    ---{\
    --- switch (timerIndex)\
    ---   {\
    --- case 0:\
    ---       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;\
    --- case 1:\
    ---       unknownClassInVehicle->SecondStuckTimer = (WORD)0u;\
    ---    case 2:\
    ---       unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;\
    --- case 3:\
    ---       unknownClassInVehicle->FourthStuckTimer = (WORD)0u;\
    ---    case 4:\
    ---       unknownClassInVehicle->FirstStuckTimer = (WORD)0u;\
    ---     unknownClassInVehicle->SecondStuckTimer = (WORD)0u;\
    ---        unknownClassInVehicle->ThirdStuckTimer = (WORD)0u;\
    ---     unknownClassInVehicle->FourthStuckTimer = (WORD)0u;\
    ---        break;\
    ---};\
    ---}
    ---@param vehicle Vehicle
    ---@param nullAttributes integer
    RESET_VEHICLE_STUCK_TIMER = function(vehicle, nullAttributes) end,

    ---p1 is always 0 in the scripts.\
    ---\
    ---p1 = check if vehicle is on fire
    ---@param vehicle Vehicle
    ---@param isOnFireCheck BOOL
    ---@return BOOL
    IS_VEHICLE_DRIVEABLE = function(vehicle, isOnFireCheck) end,

    ---@param vehicle Vehicle
    ---@param owned BOOL
    SET_VEHICLE_HAS_BEEN_OWNED_BY_PLAYER = function(vehicle, owned) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_NEEDS_TO_BE_HOTWIRED = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_BLIP_THROTTLE_RANDOMLY = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_POLICE_FOCUS_WILL_TRACK_VEHICLE = function(vehicle, toggle) end,

    ---Sounds the horn for the specified vehicle.\
    ---\
    ---vehicle: The vehicle to activate the horn for.\
    ---mode: The hash of "NORMAL" or "HELDDOWN". Can be 0.\
    ---duration: The duration to sound the horn, in milliseconds.\
    ---\
    ---Note: If a player is in the vehicle, it will only sound briefly.
    ---@param vehicle Vehicle
    ---@param duration integer
    ---@param mode Hash
    ---@param forever BOOL
    START_VEHICLE_HORN = function(vehicle, duration, mode, forever) end,

    ---If set to TRUE, it seems to suppress door noises and doesn't allow the horn to be continuous.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_IN_CAR_MOD_SHOP = function(vehicle, toggle) end,

    ---if true, axles won't bend.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_HAS_STRONG_AXLES = function(vehicle, toggle) end,

    ---Returns model name of vehicle in all caps. Needs to be displayed through localizing text natives to get proper display name.\
    --------------------------------------------------------------------------------------------------------------------------------------------\
    ---While often the case, this does not simply return the model name of the vehicle (which could be hashed to return the model hash). Variations of the same vehicle may also use the same display name.\
    --------------------------------------------------------------------------------------------------------------------------------------------\
    ---\
    ---Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.\
    ---\
    ---Using HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION, you can get the localized name.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return string
    GET_DISPLAY_NAME_FROM_VEHICLE_MODEL = function(modelHash) end,

    ---Will return a vehicle's manufacturer display label.\
    ---Returns "CARNOTFOUND" if the hash doesn't match a vehicle hash.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return string
    GET_MAKE_NAME_FROM_VEHICLE_MODEL = function(modelHash) end,

    ---The only example I can find of this function in the scripts, is this:\
    ---\
    ---struct _s = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(rPtr((A_0) + 4), 1.21f, 6.15f, 0.3f);\
    ---\
    --------------------------------------------------------------------------------------------------------------------------------------------\
    ---PC scripts:\
    ---\
    ---v_5/*{3}*/ = VEHICLE::GET_VEHICLE_DEFORMATION_AT_POS(a_0._f1, 1.21, 6.15, 0.3);
    ---@param vehicle Vehicle
    ---@param offsetX number
    ---@param offsetY number
    ---@param offsetZ number
    ---@return Vector3
    GET_VEHICLE_DEFORMATION_AT_POS = function(vehicle, offsetX, offsetY, offsetZ) end,

    ---@param vehicle Vehicle
    ---@param livery integer
    SET_VEHICLE_LIVERY = function(vehicle, livery) end,

    ----1 = no livery
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_LIVERY = function(vehicle) end,

    ---Returns -1 if the vehicle has no livery
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_LIVERY_COUNT = function(vehicle) end,

    ---Used to set the secondary livery (the roof on Tornado Custom being one such example.)\
    ---\
    ---Livery value is dependent on the amount of liveries present in the vehicle's texture dictionary, for Tornado Custom this would be 0-6.
    ---@param vehicle Vehicle
    ---@param livery integer
    SET_VEHICLE_LIVERY2 = function(vehicle, livery) end,

    ---Returns index of the current vehicle's secondary livery. A getter for SET_VEHICLE_LIVERY2.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_LIVERY2 = function(vehicle) end,

    ---Returns a number of available secondary liveries, or -1 if vehicle has no secondary liveries available.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_LIVERY2_COUNT = function(vehicle) end,

    ---This will return false if the window is broken, or rolled down.\
    ---Window indexes:\
    ---0 = Front Right Window\
    ---1 = Front Left Window\
    ---2 = Back Right Window\
    ---3 = Back Left Window\
    ---\
    ---\
    ---Those numbers go on for vehicles that have more than 4 doors with windows.
    ---@param vehicle Vehicle
    ---@param windowIndex integer
    ---@return BOOL
    IS_VEHICLE_WINDOW_INTACT = function(vehicle, windowIndex) end,

    ---Appears to return false if any window is broken.
    ---@param vehicle Vehicle
    ---@return BOOL
    ARE_ALL_VEHICLE_WINDOWS_INTACT = function(vehicle) end,

    ---Returns false if every seat is occupied.
    ---@param vehicle Vehicle
    ---@return BOOL
    ARE_ANY_VEHICLE_SEATS_FREE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    RESET_VEHICLE_WHEELS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param p2 BOOL
    ---@param p3 BOOL
    ---@return BOOL
    IS_HELI_PART_BROKEN = function(vehicle, p1, p2, p3) end,

    ---Max 1000.\
    ---At 0 the main rotor will stall.
    ---@param vehicle Vehicle
    ---@return number
    GET_HELI_MAIN_ROTOR_HEALTH = function(vehicle) end,

    ---Max 1000.\
    ---At 0 the tail rotor will stall.
    ---@param vehicle Vehicle
    ---@return number
    GET_HELI_TAIL_ROTOR_HEALTH = function(vehicle) end,

    ---Max 1000.\
    ---At -100 both helicopter rotors will stall.
    ---@param vehicle Vehicle
    ---@return number
    GET_HELI_TAIL_BOOM_HEALTH = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param health number
    SET_HELI_MAIN_ROTOR_HEALTH = function(vehicle, health) end,

    ---@param vehicle Vehicle
    ---@param health number
    SET_HELI_TAIL_ROTOR_HEALTH = function(vehicle, health) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ---@return BOOL
    SET_HELI_TAIL_BOOM_CAN_BREAK_OFF = function(vehicle, toggle) end,

    ---NOTE: Debugging functions are not present in the retail version of the game.
    ---@param vehicle Vehicle
    ---@param name string
    SET_VEHICLE_NAME_DEBUG = function(vehicle, name) end,

    ---Sets a vehicle to be strongly resistant to explosions. p0 is the vehicle; set p1 to false to toggle the effect on/off.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_EXPLODES_ON_HIGH_EXPLOSION_DAMAGE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_EXPLODES_ON_EXPLOSION_DAMAGE_AT_ZERO_BODY_HEALTH = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_ALLOW_VEHICLE_EXPLODES_ON_CONTACT = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_DISABLE_TOWING = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_HAS_LANDING_GEAR = function(vehicle) end,

    ---Works for vehicles with a retractable landing gear\
    ---\
    ---Landing gear states:\
    ---\
    ---0: Deployed\
    ---1: Closing\
    ---2: Opening\
    ---3: Retracted
    ---@param vehicle Vehicle
    ---@param state integer
    CONTROL_LANDING_GEAR = function(vehicle, state) end,

    ---Landing gear states:\
    ---\
    ---0: Deployed\
    ---1: Closing (Retracting)\
    ---2: (Landing gear state 2 is never used.)\
    ---3: Opening (Deploying)\
    ---4: Retracted\
    ---\
    ---Returns the current state of the vehicles landing gear.
    ---@param vehicle Vehicle
    ---@return integer
    GET_LANDING_GEAR_STATE = function(vehicle) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@return BOOL
    IS_ANY_VEHICLE_NEAR_POINT = function(x, y, z, radius) end,

    ---@param vehicle Vehicle
    REQUEST_VEHICLE_HIGH_DETAIL_MODEL = function(vehicle) end,

    ---@param vehicleModel Hash
    ---@return integer
    _GET_VEHICLE_MODEL_NUM_DRIVE_GEARS = function(vehicleModel) end,

    ---@param vehicle Vehicle
    ---@return integer
    _GET_VEHICLE_MAX_DRIVE_GEAR_COUNT = function(vehicle) end,

    ---@param vehicleModel Hash
    ---@return BOOL
    _GET_IS_VEHICLE_ELECTRIC = function(vehicleModel) end,

    ---Returns the vehicle's drivetrain type.\
    ---\
    ---enum eVehicleDrivetrainType\
    ---{\
    ---	VehicleDrivetrainType_INVALID,\
    ---	VehicleDrivetrainType_FWD,\
    ---	VehicleDrivetrainType_RWD,\
    ---	VehicleDrivetrainType_AWD\
    ---};\
    ---\
    ---_GET_VEHICLE_DE* - _GET_VEHICLE_DI*
    ---@param vehicleModel Hash
    ---@return integer
    _GET_VEHICLE_DRIVETRAIN_TYPE = function(vehicleModel) end,

    ---@param vehicle Vehicle
    ---@return integer
    _GET_VEHICLE_CURRENT_DRIVE_GEAR = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return number
    _GET_VEHICLE_CURRENT_REV_RATIO = function(vehicle) end,

    ---@param vehicle Vehicle
    REMOVE_VEHICLE_HIGH_DETAIL_MODEL = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_HIGH_DETAIL = function(vehicle) end,

    ---REQUEST_VEHICLE_ASSET(GET_HASH_KEY(cargobob3), 3);\
    ---\
    ---vehicle found that have asset's:\
    ---cargobob3\
    ---submersible\
    ---blazer
    ---@param vehicleHash Hash
    ---@param vehicleAsset integer
    REQUEST_VEHICLE_ASSET = function(vehicleHash, vehicleAsset) end,

    ---@param vehicleAsset integer
    ---@return BOOL
    HAS_VEHICLE_ASSET_LOADED = function(vehicleAsset) end,

    ---@param vehicleAsset integer
    REMOVE_VEHICLE_ASSET = function(vehicleAsset) end,

    ---Sets how much the crane on the tow truck is raised, where 0.0 is fully lowered and 1.0 is fully raised.
    ---@param vehicle Vehicle
    ---@param position number
    SET_VEHICLE_TOW_TRUCK_ARM_POSITION = function(vehicle, position) end,

    ---@param towTruck Vehicle
    ---@param vehicle Vehicle
    _SET_ATTACHED_VEHICLE_TO_TOW_TRUCK_ARM = function(towTruck, vehicle) end,

    ---HookOffset defines where the hook is attached. leave at 0 for default attachment.
    ---@param towTruck Vehicle
    ---@param vehicle Vehicle
    ---@param rear BOOL
    ---@param hookOffsetX number
    ---@param hookOffsetY number
    ---@param hookOffsetZ number
    ATTACH_VEHICLE_TO_TOW_TRUCK = function(towTruck, vehicle, rear, hookOffsetX, hookOffsetY, hookOffsetZ) end,

    ---First two parameters swapped. Scripts verify that towTruck is the first parameter, not the second.
    ---@param towTruck Vehicle
    ---@param vehicle Vehicle
    DETACH_VEHICLE_FROM_TOW_TRUCK = function(towTruck, vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    DETACH_VEHICLE_FROM_ANY_TOW_TRUCK = function(vehicle) end,

    ---Scripts verify that towTruck is the first parameter, not the second.
    ---@param towTruck Vehicle
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_ATTACHED_TO_TOW_TRUCK = function(towTruck, vehicle) end,

    ---@param towTruck Vehicle
    ---@return Entity
    GET_ENTITY_ATTACHED_TO_TOW_TRUCK = function(towTruck) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param p2 Any
    ---@return Entity
    SET_VEHICLE_AUTOMATICALLY_ATTACHES = function(vehicle, p1, p2) end,

    ---Sets the arm position of a bulldozer. Position must be a value between 0.0 and 1.0. Ignored when `p2` is set to false, instead incrementing arm position by 0.1 (or 10%).
    ---@param vehicle Vehicle
    ---@param position number
    ---@param p2 BOOL
    SET_VEHICLE_BULLDOZER_ARM_POSITION = function(vehicle, position, p2) end,

    ---@param vehicle Vehicle
    ---@param position number
    ---@param p2 BOOL
    SET_VEHICLE_TANK_TURRET_POSITION = function(vehicle, position, p2) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p5 BOOL
    SET_VEHICLE_TURRET_TARGET = function(vehicle, p1, x, y, z, p5) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_TANK_STATIONARY = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param speed number
    SET_VEHICLE_TURRET_SPEED_THIS_FRAME = function(vehicle, speed) end,

    ---@param vehicle Vehicle
    DISABLE_VEHICLE_TURRET_MOVEMENT_THIS_FRAME = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param angleRatio number
    SET_VEHICLE_FLIGHT_NOZZLE_POSITION = function(vehicle, angleRatio) end,

    ---@param vehicle Vehicle
    ---@param angle number
    SET_VEHICLE_FLIGHT_NOZZLE_POSITION_IMMEDIATE = function(vehicle, angle) end,

    ---@param plane Vehicle
    ---@return number
    GET_VEHICLE_FLIGHT_NOZZLE_POSITION = function(plane) end,

    ---True stops vtols from switching modes. Doesn't stop the sound though.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_VERTICAL_FLIGHT_MODE_TRANSITION = function(vehicle, toggle) end,

    ---@param outVec Vector3
    ---@param p1 Any
    ---@param outVec1 Vector3
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ---@param p6 Any
    ---@param p7 Any
    ---@param p8 Any
    ---@return BOOL
    GENERATE_VEHICLE_CREATION_POS_FROM_PATHS = function(outVec, p1, outVec1, p3, p4, p5, p6, p7, p8) end,

    ---On accelerating, spins the driven wheels with the others braked, so you don't go anywhere.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_BURNOUT = function(vehicle, toggle) end,

    ---Returns whether the specified vehicle is currently in a burnout.\
    ---\
    ---\
    ---vb.net\
    ---Public Function isVehicleInBurnout(vh As Vehicle) As Boolean\
    ---        Return Native.Function.Call(Of Boolean)(Hash.IS_VEHICLE_IN_BURNOUT, vh)\
    ---    End Function
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_IN_BURNOUT = function(vehicle) end,

    ---Reduces grip significantly so it's hard to go anywhere.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_REDUCE_GRIP = function(vehicle, toggle) end,

    ---val is 0-3\
    ---Often used in conjunction with: SET_VEHICLE_REDUCE_GRIP
    ---@param vehicle Vehicle
    ---@param val integer
    SET_VEHICLE_REDUCE_GRIP_LEVEL = function(vehicle, val) end,

    ---Sets the turn signal enabled for a vehicle.\
    ---Set turnSignal to 1 for left light, 0 for right light.
    ---@param vehicle Vehicle
    ---@param turnSignal integer
    ---@param toggle BOOL
    SET_VEHICLE_INDICATOR_LIGHTS = function(vehicle, turnSignal, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_BRAKE_LIGHTS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_TAIL_LIGHTS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_HANDBRAKE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_BRAKE = function(vehicle, toggle) end,

    INSTANTLY_FILL_VEHICLE_POPULATION = function() end,

    ---@return BOOL
    HAS_INSTANT_FILL_VEHICLE_POPULATION_FINISHED = function() end,

    ---@param toggle BOOL
    NETWORK_ENABLE_EMPTY_CROWDING_VEHICLES_REMOVAL = function(toggle) end,

    ---Default:1000||This sets a value which is used when NETWORK_ENABLE_EMPTY_CROWDING_VEHICLES_REMOVAL(true) is called each frame.
    ---@param p0 integer
    NETWORK_CAP_EMPTY_CROWDING_VEHICLES_REMOVAL = function(p0) end,

    ---Gets the trailer of a vehicle and puts it into the trailer parameter.
    ---@param vehicle Vehicle
    ---@param trailer Vehicle
    ---@return BOOL
    ---@return Vehicle
    GET_VEHICLE_TRAILER_VEHICLE = function(vehicle, trailer) end,

    ---@param trailer Vehicle
    ---@return Vehicle
    _GET_VEHICLE_TRAILER_PARENT_VEHICLE = function(trailer) end,

    ---vehicle must be a plane
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_USES_LARGE_REAR_RAMP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_RUDDER_BROKEN = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_TAIL_BROKEN = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_CONVERTIBLE_ROOF_LATCH_STATE = function(vehicle, state) end,

    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_ESTIMATED_MAX_SPEED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_MAX_BRAKING = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_MAX_TRACTION = function(vehicle) end,

    ---static - max acceleration
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_ACCELERATION = function(vehicle) end,

    ---Returns max speed (without mods) of the specified vehicle model in m/s.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_ESTIMATED_MAX_SPEED = function(modelHash) end,

    ---Returns max braking of the specified vehicle model.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_MAX_BRAKING = function(modelHash) end,

    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_MAX_BRAKING_MAX_MODS = function(modelHash) end,

    ---Returns max traction of the specified vehicle model.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_MAX_TRACTION = function(modelHash) end,

    ---Returns the acceleration of the specified model.\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_ACCELERATION = function(modelHash) end,

    ---9.8 * thrust if air vehicle, else 0.38 + drive force?\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_VEHICLE_MODEL_ACCELERATION_MAX_MODS = function(modelHash) end,

    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_FLYING_VEHICLE_MODEL_AGILITY = function(modelHash) end,

    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return number
    GET_BOAT_VEHICLE_MODEL_AGILITY = function(modelHash) end,

    ---@param vehicleClass integer
    ---@return number
    GET_VEHICLE_CLASS_ESTIMATED_MAX_SPEED = function(vehicleClass) end,

    ---@param vehicleClass integer
    ---@return number
    GET_VEHICLE_CLASS_MAX_TRACTION = function(vehicleClass) end,

    ---@param vehicleClass integer
    ---@return number
    GET_VEHICLE_CLASS_MAX_AGILITY = function(vehicleClass) end,

    ---@param vehicleClass integer
    ---@return number
    GET_VEHICLE_CLASS_MAX_ACCELERATION = function(vehicleClass) end,

    ---@param vehicleClass integer
    ---@return number
    GET_VEHICLE_CLASS_MAX_BRAKING = function(vehicleClass) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param speed number
    ---@param p5 BOOL
    ---@return integer
    ADD_ROAD_NODE_SPEED_ZONE = function(x, y, z, radius, speed, p5) end,

    ---@param speedzone integer
    ---@return BOOL
    REMOVE_ROAD_NODE_SPEED_ZONE = function(speedzone) end,

    ---@param vehicle Vehicle
    OPEN_BOMB_BAY_DOORS = function(vehicle) end,

    ---@param vehicle Vehicle
    CLOSE_BOMB_BAY_DOORS = function(vehicle) end,

    ---Returns true when the bomb bay doors of this plane are open. False if they're closed.
    ---@param aircraft Vehicle
    ---@return BOOL
    GET_ARE_BOMB_BAY_DOORS_OPEN = function(aircraft) end,

    ---Possibly: Returns whether the searchlight (found on police vehicles) is toggled on.\
    ---\
    ---@Author Nac
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_SEARCHLIGHT_ON = function(vehicle) end,

    ---Only works during nighttime.
    ---@param heli Vehicle
    ---@param toggle BOOL
    ---@param canBeUsedByAI BOOL
    SET_VEHICLE_SEARCHLIGHT = function(heli, toggle, canBeUsedByAI) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    DOES_VEHICLE_HAVE_SEARCHLIGHT = function(vehicle) end,

    ---Check if a vehicle seat is accessible. If you park your vehicle near a wall and the ped cannot enter/exit this side, the return value toggles from true (not blocked) to false (blocked).\
    ---\
    ---seatIndex  = -1 being the driver seat.\
    ---Use GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 1 for last seat index.\
    ---side = only relevant for bikes/motorcycles to check if the left (false)/right (true) side is blocked.\
    ---onEnter = check if you can enter (true) or exit (false) a vehicle.
    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@param side BOOL
    ---@param onEnter BOOL
    ---@return BOOL
    IS_ENTRY_POINT_FOR_SEAT_CLEAR = function(ped, vehicle, seatIndex, side, onEnter) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@return Vector3
    GET_ENTRY_POINT_POSITION = function(vehicle, doorId) end,

    ---@param vehicle Vehicle
    ---@param seatIndex integer
    ---@return BOOL
    CAN_SHUFFLE_SEAT = function(vehicle, seatIndex) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_NUM_MOD_KITS = function(vehicle) end,

    ---Set modKit to 0 if you plan to call SET_VEHICLE_MOD. That's what the game does. Most body modifications through SET_VEHICLE_MOD will not take effect until this is set to 0.\
    ---\
    ---Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json
    ---@param vehicle Vehicle
    ---@param modKit integer
    SET_VEHICLE_MOD_KIT = function(vehicle, modKit) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_MOD_KIT = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_MOD_KIT_TYPE = function(vehicle) end,

    ---Returns an int\
    ---\
    ---Wheel Types:\
    ---0: Sport\
    ---1: Muscle\
    ---2: Lowrider\
    ---3: SUV\
    ---4: Offroad\
    ---5: Tuner\
    ---6: Bike Wheels\
    ---7: High End\
    ---8: Benny's Originals\
    ---9: Benny's Bespoke\
    ---10: Racing\
    ---11: Street\
    ---12: Track\
    ---\
    ---Tested in Los Santos Customs
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_WHEEL_TYPE = function(vehicle) end,

    ---0: Sport\
    ---1: Muscle\
    ---2: Lowrider\
    ---3: SUV\
    ---4: Offroad\
    ---5: Tuner\
    ---6: Bike Wheels\
    ---7: High End\
    ---8: Benny's Originals\
    ---9: Benny's Bespoke\
    ---10: Racing\
    ---11: Street\
    ---12: Track
    ---@param vehicle Vehicle
    ---@param WheelType integer
    SET_VEHICLE_WHEEL_TYPE = function(vehicle, WheelType) end,

    ---paintType:\
    ---0: Normal\
    ---1: Metallic\
    ---2: Pearl\
    ---3: Matte\
    ---4: Metal\
    ---5: Chrome\
    ---6: Chameleon
    ---@param paintType integer
    ---@param p1 BOOL
    ---@return integer
    GET_NUM_MOD_COLORS = function(paintType, p1) end,

    ---paintType:\
    ---0: Normal\
    ---1: Metallic\
    ---2: Pearl\
    ---3: Matte\
    ---4: Metal\
    ---5: Chrome\
    ---6: Chameleon\
    ---\
    ---color: number of the color.\
    ---\
    ---p3 seems to always be 0.\
    ---\
    ---Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json
    ---@param vehicle Vehicle
    ---@param paintType integer
    ---@param color integer
    ---@param pearlescentColor integer
    SET_VEHICLE_MOD_COLOR_1 = function(vehicle, paintType, color, pearlescentColor) end,

    ---Changes the secondary paint type and color\
    ---paintType:\
    ---0: Normal\
    ---1: Metallic\
    ---2: Pearl\
    ---3: Matte\
    ---4: Metal\
    ---5: Chrome\
    ---6: Chameleon\
    ---\
    ---color: number of the color\
    ---\
    ---Full list of vehicle colors and vehicle plates by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json
    ---@param vehicle Vehicle
    ---@param paintType integer
    ---@param color integer
    SET_VEHICLE_MOD_COLOR_2 = function(vehicle, paintType, color) end,

    ---@param vehicle Vehicle
    ---@param paintType integer
    ---@param color integer
    ---@param pearlescentColor integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_MOD_COLOR_1 = function(vehicle, paintType, color, pearlescentColor) end,

    ---@param vehicle Vehicle
    ---@param paintType integer
    ---@param color integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_MOD_COLOR_2 = function(vehicle, paintType, color) end,

    ---Returns a string which is the codename of the vehicle's currently selected primary color\
    ---\
    ---p1 is always 0
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@return string
    GET_VEHICLE_MOD_COLOR_1_NAME = function(vehicle, p1) end,

    ---Returns a string which is the codename of the vehicle's currently selected secondary color
    ---@param vehicle Vehicle
    ---@return string
    GET_VEHICLE_MOD_COLOR_2_NAME = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    HAVE_VEHICLE_MODS_STREAMED_IN = function(vehicle) end,

    ---Returns true for any mod part listed in GEN9_EXCLUSIVE_ASSETS_VEHICLES_FILE.
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modIndex integer
    ---@return BOOL
    IS_VEHICLE_MOD_GEN9_EXCLUSIVE = function(vehicle, modType, modIndex) end,

    ---In b944, there are 50 (0 - 49) mod types.\
    ---\
    ---Sets the vehicle mod.\
    ---The vehicle must have a mod kit first.\
    ---\
    ---Any out of range ModIndex is stock.\
    ---\
    ---#Mod Type\
    ---Spoilers - 0\
    ---Front Bumper - 1\
    ---Rear Bumper - 2\
    ---Side Skirt - 3\
    ---Exhaust - 4\
    ---Frame - 5\
    ---Grille - 6\
    ---Hood - 7\
    ---Fender - 8\
    ---Right Fender - 9\
    ---Roof - 10\
    ---Engine - 11\
    ---Brakes - 12\
    ---Transmission - 13\
    ---Horns - 14 (modIndex from 0 to 51)\
    ---Suspension - 15\
    ---Armor - 16\
    ---Front Wheels - 23\
    ---Back Wheels - 24 //only for motocycles\
    ---Plate holders - 25\
    ---Trim Design - 27\
    ---Ornaments - 28\
    ---Dial Design - 30\
    ---Steering Wheel - 33\
    ---Shifter Leavers - 34\
    ---Plaques - 35\
    ---Hydraulics - 38\
    ---Livery - 48\
    ---\
    ---ENUMS: https://pastebin.com/QzEAn02v
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modIndex integer
    ---@param customTires BOOL
    SET_VEHICLE_MOD = function(vehicle, modType, modIndex, customTires) end,

    ---In b944, there are 50 (0 - 49) mod types. See SET_VEHICLE_MOD for the list.\
    ---\
    ---Returns -1 if the vehicle mod is stock
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@return integer
    GET_VEHICLE_MOD = function(vehicle, modType) end,

    ---Only used for wheels(ModType = 23/24) Returns true if the wheels are custom wheels
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@return integer
    GET_VEHICLE_MOD_VARIATION = function(vehicle, modType) end,

    ---Returns how many possible mods a vehicle has for a given mod type
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@return integer
    GET_NUM_VEHICLE_MODS = function(vehicle, modType) end,

    ---@param vehicle Vehicle
    ---@param modType integer
    REMOVE_VEHICLE_MOD = function(vehicle, modType) end,

    ---Toggles:\
    ---UNK17 - 17\
    ---Turbo - 18\
    ---UNK19 - 19\
    ---Tire Smoke - 20\
    ---UNK21 - 21\
    ---Xenon Headlights - 22
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param toggle BOOL
    TOGGLE_VEHICLE_MOD = function(vehicle, modType, toggle) end,

    ---@param vehicle Vehicle
    ---@param modType integer
    ---@return BOOL
    IS_TOGGLE_MOD_ON = function(vehicle, modType) end,

    ---Returns the text label of a mod type for a given vehicle\
    ---\
    ---Use GET_FILENAME_FOR_AUDIO_CONVERSATION to get the part name in the game's language
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modValue integer
    ---@return string
    GET_MOD_TEXT_LABEL = function(vehicle, modType, modValue) end,

    ---Returns the name for the type of vehicle mod(Armour, engine etc)\
    ---
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@return string
    GET_MOD_SLOT_NAME = function(vehicle, modType) end,

    ---Returns the text label of the vehicle's liveryIndex, as specified by the liveryNames section of the vehicle's modkit data in the carcols file.\
    ---\
    ---example \
    ---\
    ---int count = VEHICLE::GET_VEHICLE_LIVERY_COUNT(veh);\
    ---for (int i = 0; i < count; i++)  \
    ---  {\
    ---     const char* LiveryName = VEHICLE::GET_LIVERY_NAME(veh, i);\
    ---  }\
    ---\
    ---\
    ---this example will work fine to fetch all names \
    ---for example for Sanchez we get \
    ---\
    ---SANC_LV1\
    ---SANC_LV2\
    ---SANC_LV3\
    ---SANC_LV4\
    ---SANC_LV5\
    ---\
    ---\
    ---Use GET_FILENAME_FOR_AUDIO_CONVERSATION, to get the localized livery name.\
    ---\
    ---Full list of vehicle mod kits and mods by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleModKits.json
    ---@param vehicle Vehicle
    ---@param liveryIndex integer
    ---@return string
    GET_LIVERY_NAME = function(vehicle, liveryIndex) end,

    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modIndex integer
    ---@return integer
    GET_VEHICLE_MOD_MODIFIER_VALUE = function(vehicle, modType, modIndex) end,

    ---Can be used for IS_DLC_VEHICLE_MOD and GET_DLC_VEHICLE_MOD_LOCK_HASH
    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modIndex integer
    ---@return Hash
    GET_VEHICLE_MOD_IDENTIFIER_HASH = function(vehicle, modType, modIndex) end,

    ---@param vehicle Vehicle
    ---@param modType integer
    ---@param modIndex integer
    PRELOAD_VEHICLE_MOD = function(vehicle, modType, modIndex) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    HAS_PRELOAD_MODS_FINISHED = function(vehicle) end,

    ---@param vehicle Vehicle
    RELEASE_PRELOAD_MODS = function(vehicle) end,

    ---Sets the tire smoke's color of this vehicle.\
    ---\
    ---vehicle: The vehicle that is the target of this method.\
    ---r: The red level in the RGB color code.\
    ---g: The green level in the RGB color code.\
    ---b: The blue level in the RGB color code.\
    ---\
    ---Note: setting r,g,b to 0 will give the car the "Patriot" tire smoke.
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_VEHICLE_TYRE_SMOKE_COLOR = function(vehicle, r, g, b) end,

    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_TYRE_SMOKE_COLOR = function(vehicle, r, g, b) end,

    ---enum WindowTints\
    ---{\
    --- WINDOWTINT_NONE,\
    ---  WINDOWTINT_PURE_BLACK,\
    ---    WINDOWTINT_DARKSMOKE,\
    --- WINDOWTINT_LIGHTSMOKE,\
    ---    WINDOWTINT_STOCK,\
    --- WINDOWTINT_LIMO,\
    ---  WINDOWTINT_GREEN\
    ---};\
    ---Full list of all vehicle window tints by DurtyFree https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicleColors.json
    ---@param vehicle Vehicle
    ---@param tint integer
    SET_VEHICLE_WINDOW_TINT = function(vehicle, tint) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_WINDOW_TINT = function(vehicle) end,

    ---@return integer
    GET_NUM_VEHICLE_WINDOW_TINTS = function() end,

    ---What's this for? Primary and Secondary RGB have their own natives and this one doesn't seem specific.
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_COLOR = function(vehicle, r, g, b) end,

    ---Some kind of flags.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_COLOURS_WHICH_CAN_BE_SET = function(vehicle) end,

    ---iVar3 = get_vehicle_cause_of_destruction(uLocal_248[iVar2]);\
    ---if (iVar3 == joaat("weapon_stickybomb"))\
    ---{\
    ---	func_171(726);\
    ---	iLocal_260 = 1;\
    ---}
    ---@param vehicle Vehicle
    ---@return Hash
    GET_VEHICLE_CAUSE_OF_DESTRUCTION = function(vehicle) end,

    ---Used for helis.
    ---@param vehicle Vehicle
    ---@param health number
    OVERRIDE_PLANE_DAMAGE_THREHSOLD = function(vehicle, health) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    _SET_TRANSMISSION_REDUCED_GEAR_RATIO = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return integer
    _GET_VEHICLE_DESIRED_DRIVE_GEAR = function(vehicle) end,

    ---From the driver's perspective, is the left headlight broken.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_LEFT_VEHICLE_HEADLIGHT_DAMAGED = function(vehicle) end,

    ---From the driver's perspective, is the right headlight broken.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_RIGHT_VEHICLE_HEADLIGHT_DAMAGED = function(vehicle) end,

    ---Returns true when both headlights are broken. This does not include extralights.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_BOTH_VEHICLE_HEADLIGHTS_DAMAGED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param value number
    MODIFY_VEHICLE_TOP_SPEED = function(vehicle, value) end,

    ---To reset the max speed, set the `speed` value to `0.0` or lower.
    ---@param vehicle Vehicle
    ---@param speed number
    SET_VEHICLE_MAX_SPEED = function(vehicle, speed) end,

    ---Has something to do with trains. Always precedes SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED.\
    ---May be true that it can be used with trains not sure, but not specifically for trains. Go find Xbox360 decompiled scripts and search for 'func_1333' in freemode.c it isn't used just for trains. Thanks for the info tho.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_STAYS_FROZEN_WHEN_CLEANED_UP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_ACT_AS_IF_HIGH_SPEED_FOR_FRAG_SMASHING = function(vehicle, p1) end,

    ---Sets some bit and float of vehicle. float is >= 0
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ---@param p2 number
    SET_PEDS_CAN_FALL_OFF_THIS_VEHICLE_FROM_LARGE_FALL_DAMAGE = function(vehicle, toggle, p2) end,

    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@return integer
    ADD_VEHICLE_COMBAT_ANGLED_AVOIDANCE_AREA = function(p0, p1, p2, p3, p4, p5, p6) end,

    ---@param p0 integer
    REMOVE_VEHICLE_COMBAT_AVOIDANCE_AREA = function(p0) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_ANY_PED_RAPPELLING_FROM_HELI = function(vehicle) end,

    ---<1.0 - Decreased torque\
    ---=1.0 - Default torque\
    --->1.0 - Increased torque\
    ---\
    ---Negative values will cause the vehicle to go backwards instead of forwards while accelerating.\
    ---\
    ---value - is between 0.2 and 1.8 in the decompiled scripts. \
    ---\
    ---This needs to be called every frame to take effect.
    ---@param vehicle Vehicle
    ---@param value number
    SET_VEHICLE_CHEAT_POWER_INCREASE = function(vehicle, value) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_VEHICLE_INFLUENCES_WANTED_LEVEL = function(p0, p1) end,

    ---Sets the wanted state of this vehicle.
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_VEHICLE_IS_WANTED = function(vehicle, state) end,

    ---Sets the boat boom position for the `TR3` trailer.\
    ---Ratio value is between `0.0` and `1.0`, where `0.0` is 90 degrees to the left of the boat, and `1.0` is just slightly to the right/back of the boat.\
    ---To get the current boom position ratio, use GET_BOAT_BOOM_POSITION_RATIO
    ---@param vehicle Vehicle
    ---@param ratio number
    SWING_BOAT_BOOM_TO_RATIO = function(vehicle, ratio) end,

    ---Same call as ALLOW_BOAT_BOOM_TO_ANIMATE
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SWING_BOAT_BOOM_FREELY = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ALLOW_BOAT_BOOM_TO_ANIMATE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return number
    GET_BOAT_BOOM_POSITION_RATIO = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param p2 BOOL
    DISABLE_PLANE_AILERON = function(vehicle, p1, p2) end,

    ---Returns true when in a vehicle, false whilst entering/exiting.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_VEHICLE_ENGINE_RUNNING = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_USE_ALTERNATE_HANDLING = function(vehicle, toggle) end,

    ---Only works on bikes, both X and Y work in the -1 - 1 range.\
    ---\
    ---X forces the bike to turn left or right (-1, 1)\
    ---Y forces the bike to lean to the left or to the right (-1, 1)\
    ---\
    ---Example with X -1/Y 1\
    ---http://i.imgur.com/TgIuAPJ.jpg
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    SET_BIKE_ON_STAND = function(vehicle, x, y) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_NOT_STEALABLE_AMBIENTLY = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    LOCK_DOORS_WHEN_NO_LONGER_NEEDED = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_LAST_DRIVEN_VEHICLE = function(vehicle) end,

    ---@return Vehicle
    GET_LAST_DRIVEN_VEHICLE = function() end,

    CLEAR_LAST_DRIVEN_VEHICLE = function() end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_HAS_BEEN_DRIVEN_FLAG = function(vehicle, toggle) end,

    ---@param plane Vehicle
    ---@param height integer
    SET_TASK_VEHICLE_GOTO_PLANE_MIN_HEIGHT_ABOVE_TERRAIN = function(plane, height) end,

    ---@param vehicle Vehicle
    ---@param multiplier number
    SET_VEHICLE_LOD_MULTIPLIER = function(vehicle, multiplier) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_SAVE_IN_GARAGE = function(vehicle, toggle) end,

    ---Also includes some "turnOffBones" when vehicle mods are installed.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_NUM_OF_BROKEN_OFF_PARTS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_NUM_OF_BROKEN_LOOSEN_PARTS = function(vehicle) end,

    ---@param p0 Any
    ---@param p1 BOOL
    SET_FORCE_VEHICLE_ENGINE_DAMAGE_BY_BULLET = function(p0, p1) end,

    ---Allows creation of CEventShockingPlaneFlyby, CEventShockingHelicopterOverhead, and other(?) Shocking events
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_GENERATES_ENGINE_SHOCKING_EVENTS = function(vehicle, toggle) end,

    ---Copies sourceVehicle's damage (broken bumpers, broken lights, etc.) to targetVehicle.
    ---@param sourceVehicle Vehicle
    ---@param targetVehicle Vehicle
    COPY_VEHICLE_DAMAGES = function(sourceVehicle, targetVehicle) end,

    DISABLE_VEHICLE_EXPLOSION_BREAK_OFF_PARTS = function() end,

    ---@param distance number
    SET_LIGHTS_CUTOFF_DISTANCE_TWEAK = function(distance) end,

    ---Commands the driver of an armed vehicle (p0) to shoot its weapon at a target (p1). p3, p4 and p5 are the coordinates of the target. Example:\
    ---\
    ---WEAPON::SET_CURRENT_PED_VEHICLE_WEAPON(pilot,MISC::GET_HASH_KEY("VEHICLE_WEAPON_PLANE_ROCKET"));                        VEHICLE::SET_VEHICLE_SHOOT_AT_TARGET(pilot, target, targPos.x, targPos.y, targPos.z);
    ---@param driver Ped
    ---@param entity Entity
    ---@param xTarget number
    ---@param yTarget number
    ---@param zTarget number
    SET_VEHICLE_SHOOT_AT_TARGET = function(driver, entity, xTarget, yTarget, zTarget) end,

    ---@param vehicle Vehicle
    ---@param entity Entity
    ---@return BOOL
    ---@return Entity
    GET_VEHICLE_LOCK_ON_TARGET = function(vehicle, entity) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_FORCE_HD_VEHICLE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_VEHICLE_CUSTOM_PATH_NODE_STREAMING_RADIUS = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_PLATE_TYPE = function(vehicle) end,

    ---in script hook .net \
    ---\
    ---Vehicle v = ...;\
    ---Function.Call(Hash.TRACK_VEHICLE_VISIBILITY, v.Handle);
    ---@param vehicle Vehicle
    TRACK_VEHICLE_VISIBILITY = function(vehicle) end,

    ---must be called after TRACK_VEHICLE_VISIBILITY \
    ---\
    ---it's not instant so probabilly must pass an 'update' to see correct result.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_VISIBLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_GRAVITY = function(vehicle, toggle) end,

    ---Enable/Disables global slipstream physics
    ---@param toggle BOOL
    SET_ENABLE_VEHICLE_SLIPSTREAMING = function(toggle) end,

    ---@param toggle BOOL
    SET_VEHICLE_SLIPSTREAMING_SHOULD_TIME_OUT = function(toggle) end,

    ---Returns a float value between 0.0 and 3.0 related to its slipstream draft (boost/speedup).
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_CURRENT_TIME_IN_SLIP_STREAM = function(vehicle) end,

    ---Returns true if the vehicle is being slipstreamed by another vehicle
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_PRODUCING_SLIP_STREAM = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_INACTIVE_DURING_PLAYBACK = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_ACTIVE_DURING_PLAYBACK = function(vehicle, toggle) end,

    ---Returns false if the vehicle has the FLAG_NO_RESPRAY flag set.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_SPRAYABLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_ENGINE_CAN_DEGRADE = function(vehicle, toggle) end,

    ---Adds some kind of shadow to the vehicle.\
    ---\
    ---p1 and p2 use values from 0-255 and both make the shadow darker the lower the value is. -1 disables the effect.
    ---@param vehicle Vehicle
    ---@param p1 integer
    ---@param p2 integer
    DISABLE_VEHCILE_DYNAMIC_AMBIENT_SCALES = function(vehicle, p1, p2) end,

    ---Remove the weird shadow applied by DISABLE_VEHCILE_DYNAMIC_AMBIENT_SCALES.
    ---@param vehicle Vehicle
    ENABLE_VEHICLE_DYNAMIC_AMBIENT_SCALES = function(vehicle) end,

    ---@param plane Vehicle
    ---@return BOOL
    IS_PLANE_LANDING_GEAR_INTACT = function(plane) end,

    ---@param plane Vehicle
    ---@return BOOL
    ARE_PLANE_PROPELLERS_INTACT = function(plane) end,

    ---@param plane Vehicle
    ---@param health number
    ---@return BOOL
    SET_PLANE_PROPELLER_HEALTH = function(plane, health) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_DEFORM_WHEELS = function(vehicle, toggle) end,

    ---Only returns true if the vehicle was marked as stolen with SET_VEHICLE_IS_STOLEN.
    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_STOLEN = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param isStolen BOOL
    SET_VEHICLE_IS_STOLEN = function(vehicle, isStolen) end,

    ---This native sets the turbulence multiplier. It only works for planes.\
    ---0.0 = no turbulence at all.\
    ---1.0 = heavy turbulence.\
    ---Works by just calling it once, does not need to be called every tick.
    ---@param vehicle Vehicle
    ---@param multiplier number
    SET_PLANE_TURBULENCE_MULTIPLIER = function(vehicle, multiplier) end,

    ---@param plane Vehicle
    ---@return BOOL
    ARE_WINGS_OF_PLANE_INTACT = function(plane) end,

    ---This native doesn't seem to do anything, might be a debug-only native.\
    ---\
    ---Confirmed, it is a debug native.
    ---@param vehicle Vehicle
    ALLOW_AMBIENT_VEHICLES_TO_AVOID_ADVERSE_CONDITIONS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param cargobob Vehicle
    DETACH_VEHICLE_FROM_CARGOBOB = function(vehicle, cargobob) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    DETACH_VEHICLE_FROM_ANY_CARGOBOB = function(vehicle) end,

    ---@param cargobob Vehicle
    ---@param entity Entity
    ---@return BOOL
    DETACH_ENTITY_FROM_CARGOBOB = function(cargobob, entity) end,

    ---@param cargobob Vehicle
    ---@param vehicleAttached Vehicle
    ---@return BOOL
    IS_VEHICLE_ATTACHED_TO_CARGOBOB = function(cargobob, vehicleAttached) end,

    ---Returns attached vehicle (Vehicle in parameter must be cargobob)
    ---@param cargobob Vehicle
    ---@return Vehicle
    GET_VEHICLE_ATTACHED_TO_CARGOBOB = function(cargobob) end,

    ---@param p0 Any
    ---@return Entity
    GET_ENTITY_ATTACHED_TO_CARGOBOB = function(p0) end,

    ---@param cargobob Vehicle
    ---@param vehicle Vehicle
    ---@param p2 integer
    ---@param x number
    ---@param y number
    ---@param z number
    ATTACH_VEHICLE_TO_CARGOBOB = function(cargobob, vehicle, p2, x, y, z) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    ---@param p5 Any
    ATTACH_ENTITY_TO_CARGOBOB = function(p0, p1, p2, p3, p4, p5) end,

    ---Stops cargobob from being able to detach the attached vehicle.
    ---@param cargobob Vehicle
    ---@param toggle BOOL
    SET_CARGOBOB_FORCE_DONT_DETACH_VEHICLE = function(cargobob, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_CARGOBOB_EXCLUDE_FROM_PICKUP_ENTITY = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    CAN_CARGOBOB_PICK_UP_ENTITY = function(p0, p1) end,

    ---Gets the position of the cargobob hook, in world coords.
    ---@param cargobob Vehicle
    ---@return Vector3
    GET_ATTACHED_PICK_UP_HOOK_POSITION = function(cargobob) end,

    ---Returns true only when the hook is active, will return false if the magnet is active
    ---@param cargobob Vehicle
    ---@return BOOL
    DOES_CARGOBOB_HAVE_PICK_UP_ROPE = function(cargobob) end,

    ---Drops the Hook/Magnet on a cargobob\
    ---\
    ---state\
    ---enum eCargobobHook\
    ---{\
    ---  CARGOBOB_HOOK = 0,\
    ---    CARGOBOB_MAGNET = 1,\
    ---};
    ---@param cargobob Vehicle
    ---@param state integer
    CREATE_PICK_UP_ROPE_FOR_CARGOBOB = function(cargobob, state) end,

    ---Retracts the hook on the cargobob.\
    ---\
    ---Note: after you retract it the natives for dropping the hook no longer work
    ---@param cargobob Vehicle
    REMOVE_PICK_UP_ROPE_FOR_CARGOBOB = function(cargobob) end,

    ---min: 1.9f, max: 100.0f
    ---@param cargobob Vehicle
    ---@param length1 number
    ---@param length2 number
    ---@param p3 BOOL
    SET_PICKUP_ROPE_LENGTH_FOR_CARGOBOB = function(cargobob, length1, length2, p3) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    SET_PICKUP_ROPE_LENGTH_WITHOUT_CREATING_ROPE_FOR_CARGOBOB = function(p0, p1, p2) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_CARGOBOB_PICKUP_ROPE_DAMPING_MULTIPLIER = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_CARGOBOB_PICKUP_ROPE_TYPE = function(p0, p1) end,

    ---Returns true only when the magnet is active, will return false if the hook is active
    ---@param cargobob Vehicle
    ---@return BOOL
    DOES_CARGOBOB_HAVE_PICKUP_MAGNET = function(cargobob) end,

    ---Won't attract or magnetize to any helicopters or planes of course, but that's common sense.
    ---@param cargobob Vehicle
    ---@param isActive BOOL
    SET_CARGOBOB_PICKUP_MAGNET_ACTIVE = function(cargobob, isActive) end,

    ---@param cargobob Vehicle
    ---@param strength number
    SET_CARGOBOB_PICKUP_MAGNET_STRENGTH = function(cargobob, strength) end,

    ---@param cargobob Vehicle
    ---@param p1 number
    SET_CARGOBOB_PICKUP_MAGNET_FALLOFF = function(cargobob, p1) end,

    ---@param cargobob Vehicle
    ---@param p1 number
    SET_CARGOBOB_PICKUP_MAGNET_REDUCED_STRENGTH = function(cargobob, p1) end,

    ---@param cargobob Vehicle
    ---@param p1 number
    SET_CARGOBOB_PICKUP_MAGNET_REDUCED_FALLOFF = function(cargobob, p1) end,

    ---@param cargobob Vehicle
    ---@param p1 number
    SET_CARGOBOB_PICKUP_MAGNET_PULL_STRENGTH = function(cargobob, p1) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_CARGOBOB_PICKUP_MAGNET_PULL_ROPE_LENGTH = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param cargobob Vehicle
    SET_CARGOBOB_PICKUP_MAGNET_SET_TARGETED_MODE = function(vehicle, cargobob) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@param p2 BOOL
    SET_CARGOBOB_PICKUP_MAGNET_SET_AMBIENT_MODE = function(vehicle, p1, p2) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_CARGOBOB_PICKUP_MAGNET_ENSURE_PICKUP_ENTITY_UPRIGHT = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    DOES_VEHICLE_HAVE_WEAPONS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_WILL_TELL_OTHERS_TO_HURRY = function(vehicle, p1) end,

    ---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param disabled BOOL
    ---@param weaponHash Hash
    ---@param vehicle Vehicle
    ---@param owner Ped
    DISABLE_VEHICLE_WEAPON = function(disabled, weaponHash, vehicle, owner) end,

    ---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@param vehicle Vehicle
    ---@param owner Ped
    ---@return BOOL
    IS_VEHICLE_WEAPON_DISABLED = function(weaponHash, vehicle, owner) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_USED_FOR_PILOT_SCHOOL = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_ACTIVE_FOR_PED_NAVIGATION = function(vehicle, toggle) end,

    ---Returns an int\
    ---\
    ---Vehicle Classes:\
    ---0: Compacts\
    ---1: Sedans\
    ---2: SUVs\
    ---3: Coupes\
    ---4: Muscle\
    ---5: Sports Classics\
    ---6: Sports\
    ---7: Super\
    ---8: Motorcycles\
    ---9: Off-road\
    ---10: Industrial\
    ---11: Utility\
    ---12: Vans\
    ---13: Cycles\
    ---14: Boats\
    ---15: Helicopters\
    ---16: Planes\
    ---17: Service\
    ---18: Emergency\
    ---19: Military\
    ---20: Commercial\
    ---21: Trains\
    ---\
    ---char buffer[128];\
    ---std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS(vehicle));\
    ---\
    ---const char* className = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(buffer);
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_CLASS = function(vehicle) end,

    ---char buffer[128];\
    ---std::sprintf(buffer, "VEH_CLASS_%i", VEHICLE::GET_VEHICLE_CLASS_FROM_NAME (hash));\
    ---\
    ---const char* className = HUD::GET_FILENAME_FOR_AUDIO_CONVERSATION(buffer);\
    ---\
    ---Full list of vehicles by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/vehicles.json
    ---@param modelHash Hash
    ---@return integer
    GET_VEHICLE_CLASS_FROM_NAME = function(modelHash) end,

    ---@param vehicle Vehicle
    SET_PLAYERS_LAST_VEHICLE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_CAN_BE_USED_BY_FLEEING_PEDS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_AIRCRAFT_PILOT_SKILL_NOISE_SCALAR = function(vehicle, p1) end,

    ---Money pickups are created around cars when they explode. Only works when the vehicle model is a car. A single pickup is between 1 and 18 dollars in size. All car models seem to give the same amount of money.\
    ---\
    ---youtu.be/3arlUxzHl5Y \
    ---i.imgur.com/WrNpYFs.jpg
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_DROPS_MONEY_WHEN_BLOWN_UP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_KEEP_ENGINE_ON_WHEN_ABANDONED = function(vehicle, toggle) end,

    ---Seems to copy some values in vehicle
    ---@param vehicle Vehicle
    ---@param p1 Any
    SET_VEHICLE_IMPATIENCE_TIMER = function(vehicle, p1) end,

    ---Use the "AIHandling" string found in handling.meta
    ---@param vehicle Vehicle
    ---@param hash Hash
    SET_VEHICLE_HANDLING_OVERRIDE = function(vehicle, hash) end,

    ---Max value is 32767
    ---@param vehicle Vehicle
    ---@param range integer
    SET_VEHICLE_EXTENDED_REMOVAL_RANGE = function(vehicle, range) end,

    ---@param p0 Any
    ---@param p1 number
    SET_VEHICLE_STEERING_BIAS_SCALAR = function(p0, p1) end,

    ---value between 0.0 and 1.0
    ---@param helicopter Vehicle
    ---@param multiplier number
    SET_HELI_CONTROL_LAGGING_RATE_SCALAR = function(helicopter, multiplier) end,

    ---Seems to be related to the metal parts, not tyres (like i was expecting lol)
    ---@param vehicle Vehicle
    ---@param friction number
    SET_VEHICLE_FRICTION_OVERRIDE = function(vehicle, friction) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_WHEELS_CAN_BREAK_OFF_WHEN_BLOW_UP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    ---@return BOOL
    ARE_PLANE_CONTROL_PANELS_INTACT = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param height number
    SET_VEHICLE_CEILING_HEIGHT = function(vehicle, height) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_NO_EXPLOSION_DAMAGE_FROM_DRIVER = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    CLEAR_VEHICLE_ROUTE_HISTORY = function(vehicle) end,

    ---@param decorator string
    ---@return Vehicle
    DOES_VEHICLE_EXIST_WITH_DECORATOR = function(decorator) end,

    ---Used to be incorrectly named SET_VEHICLE_EXCLUSIVE_DRIVER\
    ---Toggles a flag related to SET_VEHICLE_EXCLUSIVE_DRIVER, however, doesn't enable that feature (or trigger script events related to it).
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_AI_CAN_USE_EXCLUSIVE_SEATS = function(vehicle, toggle) end,

    ---index: 0 - 1\
    ---\
    ---Used to be incorrectly named _SET_VEHICLE_EXCLUSIVE_DRIVER_2
    ---@param vehicle Vehicle
    ---@param ped Ped
    ---@param index integer
    SET_VEHICLE_EXCLUSIVE_DRIVER = function(vehicle, ped, index) end,

    ---@param ped Ped
    ---@param vehicle Vehicle
    ---@param outIndex integer
    ---@return BOOL
    ---@return integer
    IS_PED_EXCLUSIVE_DRIVER_OF_VEHICLE = function(ped, vehicle, outIndex) end,

    ---@param vehicle Vehicle
    ---@param propeller integer
    DISABLE_INDIVIDUAL_PLANE_PROPELLER = function(vehicle, propeller) end,

    ---@param vehicle Vehicle
    ---@param propeller integer
    _ENABLE_INDIVIDUAL_PLANE_PROPELLER = function(vehicle, propeller) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_FORCE_AFTERBURNER = function(vehicle, toggle) end,

    ---R* used it to "remove" vehicle windows when "nightshark" had some mod, which adding some kind of armored windows. When enabled, you can't break vehicles glass. All your bullets wiil shoot through glass. You also will not able to break the glass with any other way (hitting and etc)
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DONT_PROCESS_VEHICLE_GLASS = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_WANTED_CONES_RESPONSE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_USE_DESIRED_Z_CRUISE_SPEED_FOR_LANDING = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    SET_ARRIVE_DISTANCE_OVERRIDE_FOR_VEHICLE_PERSUIT_ATTACK = function(vehicle, p1) end,

    ---@param p0 Any
    SET_VEHICLE_READY_FOR_CLEANUP = function(p0) end,

    ---Toggles to render distant vehicles. They may not be vehicles but images to look like vehicles.
    ---@param toggle BOOL
    SET_DISTANT_CARS_ENABLED = function(toggle) end,

    ---Sets the color of the neon lights of the specified vehicle.
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    SET_VEHICLE_NEON_COLOUR = function(vehicle, r, g, b) end,

    ---Index references CVehicleModelColor
    ---@param vehicle Vehicle
    ---@param index integer
    SET_VEHICLE_NEON_INDEX_COLOUR = function(vehicle, index) end,

    ---Gets the color of the neon lights of the specified vehicle.\
    ---\
    ---See SET_VEHICLE_NEON_COLOUR (0x8E0A582209A62695) for more information
    ---@param vehicle Vehicle
    ---@param r integer
    ---@param g integer
    ---@param b integer
    ---@return integer
    ---@return integer
    ---@return integer
    GET_VEHICLE_NEON_COLOUR = function(vehicle, r, g, b) end,

    ---Sets the neon lights of the specified vehicle on/off.\
    ---\
    ---Indices:\
    ---0 = Left\
    ---1 = Right\
    ---2 = Front\
    ---3 = Back
    ---@param vehicle Vehicle
    ---@param index integer
    ---@param toggle BOOL
    SET_VEHICLE_NEON_ENABLED = function(vehicle, index, toggle) end,

    ---indices:\
    ---0 = Left\
    ---1 = Right\
    ---2 = Front\
    ---3 = Back
    ---@param vehicle Vehicle
    ---@param index integer
    ---@return BOOL
    GET_VEHICLE_NEON_ENABLED = function(vehicle, index) end,

    ---@param p0 BOOL
    SET_AMBIENT_VEHICLE_NEON_ENABLED = function(p0) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SUPPRESS_NEONS_ON_VEHICLE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_DISABLE_SUPERDUMMY = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    REQUEST_VEHICLE_DIAL = function(vehicle) end,

    ---Seems related to vehicle health, like the one in IV.\
    ---Max 1000, min 0.\
    ---Vehicle does not necessarily explode or become undrivable at 0.
    ---@param vehicle Vehicle
    ---@return number
    GET_VEHICLE_BODY_HEALTH = function(vehicle) end,

    ---p2 often set to 1000.0 in the decompiled scripts.
    ---@param vehicle Vehicle
    ---@param value number
    SET_VEHICLE_BODY_HEALTH = function(vehicle, value) end,

    ---Outputs 2 Vector3's.\
    ---Scripts check if out2.x - out1.x > someshit.x\
    ---Could be suspension related, as in max suspension height and min suspension height, considering the natives location.
    ---@param vehicle Vehicle
    ---@param out1 Vector3
    ---@param out2 Vector3
    GET_VEHICLE_SIZE = function(vehicle, out1, out2) end,

    ---Gets the height of the vehicle's suspension.\
    ---The higher the value the lower the suspension. Each 0.002 corresponds with one more level lowered.\
    ---0.000 is the stock suspension.\
    ---0.008 is Ultra Suspension.
    ---@param vehicle Vehicle
    ---@return number
    GET_FAKE_SUSPENSION_LOWERING_AMOUNT = function(vehicle) end,

    ---@param multiplier number
    SET_CAR_HIGH_SPEED_BUMP_SEVERITY_MULTIPLIER = function(multiplier) end,

    ---@param vehicle Vehicle
    ---@return integer
    GET_NUMBER_OF_VEHICLE_DOORS = function(vehicle) end,

    ---If false, lowers hydraulics (if raised) and disables hydraulics controls. If true, raises hydraulics and enables hydraulics controls.\
    ---\
    ---Only used once in each carmod script, on a car that does not have hydraulics to begin with.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_HYDRAULICS_CONTROL = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_CAN_ADJUST_GROUND_CLEARANCE = function(vehicle, p1) end,

    ---0 min 100 max\
    ---starts at 100\
    ---Seams to have health zones\
    ---Front of vehicle when damaged goes from 100-50 and stops at 50.\
    ---Rear can be damaged from 100-0\
    ---Only tested with two cars.\
    ---\
    ---any idea how this differs from the first one?\
    ---\
    -----\
    ---May return the vehicle health on a scale of 0.0 - 100.0 (needs to be confirmed)\
    ---\
    ---example:\
    ---\
    ---v_F = ENTITY::GET_ENTITY_MODEL(v_3);\
    ---if (((v_F == ${tanker}) || (v_F == ${armytanker})) || (v_F == ${tanker2})) {\
    ---    if (VEHICLE::GET_VEHICLE_HEALTH_PERCENTAGE(v_3) <= 1.0) {\
    ---        NETWORK::NETWORK_EXPLODE_VEHICLE(v_3, 1, 1, -1);\
    ---}\
    ---}
    ---@param vehicle Vehicle
    ---@param maxEngineHealth number
    ---@param maxPetrolTankHealth number
    ---@param maxBodyHealth number
    ---@param maxMainRotorHealth number
    ---@param maxTailRotorHealth number
    ---@param maxUnkHealth number
    ---@return number
    GET_VEHICLE_HEALTH_PERCENTAGE = function(vehicle, maxEngineHealth, maxPetrolTankHealth, maxBodyHealth, maxMainRotorHealth, maxTailRotorHealth, maxUnkHealth) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_IS_MERCENARY = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_VEHICLE_BROKEN_PARTS_DONT_AFFECT_AI_HANDLING = function(vehicle, p1) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_KERS_ALLOWED = function(vehicle, toggle) end,

    ---Returns true if the vehicle has a HF_HAS_KERS (strHandlingFlags 0x4) handing flag set, for instance the lectro/vindicator bikes or the open wheelers.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_HAS_KERS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_PLANE_RESIST_TO_EXPLOSION = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_HELI_RESIST_TO_EXPLOSION = function(vehicle, toggle) end,

    ---@param p0 Any
    SET_DISABLE_BMX_EXTRA_TRICK_FORCES = function(p0) end,

    ---Works only on vehicles that support hydraulics.
    ---@param vehicle Vehicle
    ---@param wheelId integer
    ---@param value number
    SET_HYDRAULIC_SUSPENSION_RAISE_FACTOR = function(vehicle, wheelId, value) end,

    ---@param vehicle Vehicle
    ---@param wheelId integer
    ---@return number
    GET_HYDRAULIC_SUSPENSION_RAISE_FACTOR = function(vehicle, wheelId) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_CAN_USE_HYDRAULICS = function(vehicle, toggle) end,

    ---States:\
    ---4 = raise\
    ---5 = lower\
    ---6 = jump
    ---@param vehicle Vehicle
    ---@param state integer
    SET_HYDRAULIC_VEHICLE_STATE = function(vehicle, state) end,

    ---Sets vehicle wheel hydraulic states transition. Known states:\
    ---0 - reset\
    ---1 - raise wheel (uses value arg, works just like _SET_VEHICLE_HYDRAULIC_WHEEL_VALUE)\
    ---2 - jump using wheel
    ---@param vehicle Vehicle
    ---@param wheelId integer
    ---@param state integer
    ---@param value number
    ---@param p4 Any
    SET_HYDRAULIC_WHEEL_STATE = function(vehicle, wheelId, state, value, p4) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    HAS_VEHICLE_PETROLTANK_SET_ON_FIRE_BY_ENTITY = function(p0, p1) end,

    ---@param vehicle Vehicle
    CLEAR_VEHICLE_PETROLTANK_FIRE_CULPRIT = function(vehicle) end,

    ---Controls how fast bobbleheads and tsurikawas move on each axis.\
    ---\
    ---p2 is probably z, but changing that value didn't seem to have a noticeable effect.
    ---@param x number
    ---@param y number
    ---@param p2 number
    SET_VEHICLE_BOBBLEHEAD_VELOCITY = function(x, y, p2) end,

    ---@param p0 Any
    ---@return BOOL
    GET_VEHICLE_IS_DUMMY = function(p0) end,

    ---@param vehicle Vehicle
    ---@param p1 number
    ---@return BOOL
    SET_VEHICLE_DAMAGE_SCALE = function(vehicle, p1) end,

    ---Does not actually return anything.
    ---@param vehicle Vehicle
    ---@param scale number
    ---@return Any
    _SET_VEHICLE_EXPLOSIVE_DAMAGE_SCALE = function(vehicle, scale) end,

    ---@param vehicle Vehicle
    ---@param multiplier number
    ---@return BOOL
    SET_VEHICLE_WEAPON_DAMAGE_SCALE = function(vehicle, multiplier) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return BOOL
    SET_DISABLE_DAMAGE_WITH_PICKED_UP_ENTITY = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_VEHICLE_USES_MP_PLAYER_DAMAGE_MULTIPLIER = function(p0, p1) end,

    ---When enabled, the player won't fall off the bike when landing from large heights.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_BIKE_EASY_TO_LAND = function(vehicle, toggle) end,

    ---Inverts vehicle's controls. So INPUT_VEH_ACCELERATE will be INPUT_VEH_BRAKE and vise versa (same for A/D controls)\
    ---Doesn't work for planes/helis.
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_INVERT_VEHICLE_CONTROLS = function(vehicle, state) end,

    ---Disables the screen effects and sound effects when driving over a speed boost pad.
    ---@param disabled BOOL
    SET_SPEED_BOOST_EFFECT_DISABLED = function(disabled) end,

    ---Disables the screen effects and sound effects when driving over a slowdown pad.
    ---@param disabled BOOL
    SET_SLOW_DOWN_EFFECT_DISABLED = function(disabled) end,

    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param p4 number
    SET_FORMATION_LEADER = function(vehicle, x, y, z, p4) end,

    ---Resets the effect of SET_FORMATION_LEADER
    RESET_FORMATION_LEADER = function() end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_BOAT_CAPSIZED = function(vehicle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_ALLOW_RAMMING_SOOP_OR_RAMP = function(p0, p1) end,

    ---@param vehicle Vehicle
    ---@param impulseScale number
    SET_SCRIPT_RAMP_IMPULSE_SCALE = function(vehicle, impulseScale) end,

    ---doorId: see SET_VEHICLE_DOOR_SHUT
    ---@param vehicle Vehicle
    ---@param doorId integer
    ---@return BOOL
    GET_IS_DOOR_VALID = function(vehicle, doorId) end,

    ---@param vehicle Vehicle
    ---@param seconds number
    SET_SCRIPT_ROCKET_BOOST_RECHARGE_TIME = function(vehicle, seconds) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_HAS_ROCKET_BOOST = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_ROCKET_BOOST_ACTIVE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param active BOOL
    SET_ROCKET_BOOST_ACTIVE = function(vehicle, active) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_HAS_RETRACTABLE_WHEELS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_WHEELS_RETRACTED = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_WHEELS_EXTENDED_INSTANTLY = function(vehicle) end,

    ---@param vehicle Vehicle
    SET_WHEELS_RETRACTED_INSTANTLY = function(vehicle) end,

    ---Returns true if the vehicle has the FLAG_JUMPING_CAR flag set.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_CAR_HAS_JUMP = function(vehicle) end,

    ---Allows vehicles with the FLAG_JUMPING_CAR flag to jump higher (i.e. Ruiner 2000).
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_USE_HIGHER_CAR_JUMP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_CLEAR_FREEZE_WAITING_ON_COLLISION_ONCE_PLAYER_ENTERS = function(vehicle, toggle) end,

    ---Set vehicle's primary mounted weapon 2 ammo. For example, use it on APC.\
    ---For example, you can "remove" any vehicle weapon from any vehicle.\
    ---ammoAmount -1 = infinite ammo (default value for any spawned vehicle tho)
    ---@param vehicle Vehicle
    ---@param weaponIndex integer
    ---@param capacity integer
    SET_VEHICLE_WEAPON_RESTRICTED_AMMO = function(vehicle, weaponIndex, capacity) end,

    ---@param vehicle Vehicle
    ---@param weaponIndex integer
    ---@return integer
    GET_VEHICLE_WEAPON_RESTRICTED_AMMO = function(vehicle, weaponIndex) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_HAS_PARACHUTE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_VEHICLE_CAN_DEPLOY_PARACHUTE = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param active BOOL
    VEHICLE_START_PARACHUTING = function(vehicle, active) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_VEHICLE_PARACHUTE_DEPLOYED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    VEHICLE_SET_RAMP_AND_RAMMING_CARS_TAKE_DAMAGE = function(vehicle, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    VEHICLE_SET_ENABLE_RAMP_CAR_SIDE_IMPULSE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    VEHICLE_SET_ENABLE_NORMALISE_RAMP_CAR_VERTICAL_VELOCTIY = function(p0, p1) end,

    ---@param p0 Any
    VEHICLE_SET_JET_WASH_FORCE_ENABLED = function(p0) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_VEHICLE_WEAPON_CAN_TARGET_OBJECTS = function(vehicle, toggle) end,

    ---Used for blazer5. Changes the quadbike-jetski transformation input from raise/lower convertible roof (hold H by default) to horn (press E by default.)
    ---@param toggle BOOL
    SET_VEHICLE_USE_BOOST_BUTTON_FOR_WHEEL_RETRACT = function(toggle) end,

    ---@param toggle BOOL
    _SET_VEHICLE_USE_HORN_BUTTON_FOR_NITROUS = function(toggle) end,

    ---Parachute models:\
    ---- sr_prop_specraces_para_s_01\
    ---- imp_prop_impexp_para_s (SecuroServ; Default)\
    ---Plus, many more props can be used as vehicle parachutes, like umbrellas (prop_beach_parasol_03), and unlike SET_PLAYER_PARACHUTE_MODEL_OVERRIDE, you won't get stuck mid-air when using an umbrella.
    ---@param vehicle Vehicle
    ---@param modelHash Hash
    VEHICLE_SET_PARACHUTE_MODEL_OVERRIDE = function(vehicle, modelHash) end,

    ---Variations available for the generic parachute (sr_prop_specraces_para_s_01):\
    ---- 0: Rainbow\
    ---- 1: Red\
    ---- 2: White, blue, yellow\
    ---- 3: Black, red, white\
    ---- 4: Red, white, blue\
    ---- 5: Blue\
    ---- 6: Black\
    ---- 7: Black, yellow
    ---@param vehicle Vehicle
    ---@param textureVariation integer
    VEHICLE_SET_PARACHUTE_MODEL_TINT_INDEX = function(vehicle, textureVariation) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    VEHICLE_SET_OVERRIDE_EXTENABLE_SIDE_RATIO = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    VEHICLE_SET_EXTENABLE_SIDE_TARGET_RATIO = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@return integer
    VEHICLE_SET_OVERRIDE_SIDE_RATIO = function(p0, p1) end,

    ---@param vehsStruct Any*
    ---@return integer
    GET_ALL_VEHICLES = function(vehsStruct) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_CARGOBOB_EXTA_PICKUP_RANGE = function(p0, p1) end,

    ---@param p0 Any
    ---@param p1 Any
    ---@param p2 Any
    SET_OVERRIDE_VEHICLE_DOOR_TORQUE = function(p0, p1, p2) end,

    ---Enables/disables the ability to wheelie on motorcycles.
    ---@param vehicle Vehicle
    ---@param enabled BOOL
    SET_WHEELIE_ENABLED = function(vehicle, enabled) end,

    ---Prevents the vehicle from exploding when taking body damage. Only works for helis and planes.
    ---@param vehicle Vehicle
    ---@param disable BOOL
    SET_DISABLE_HELI_EXPLODE_FROM_BODY_DAMAGE = function(vehicle, disable) end,

    ---Prevents the vehicle from exploding when taking body damage if it was caused by a collision. Only works for planes.
    ---@param vehicle Vehicle
    ---@param disable BOOL
    SET_DISABLE_EXPLODE_FROM_BODY_DAMAGE_ON_COLLISION = function(vehicle, disable) end,

    ---Prevents the vehicle from exploding when taking body damage if the inflictor is an AI-controlled vehicle. Only works for planes.
    ---@param vehicle Vehicle
    ---@param disable BOOL
    _SET_DISABLE_EXPLODE_FROM_BODY_DAMAGE_RECEIVED_BY_AI_VEHICLE = function(vehicle, disable) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_TRAILER_ATTACHMENT_ENABLED = function(p0, p1) end,

    ---@param vehicle Vehicle
    ---@param percentage number
    SET_ROCKET_BOOST_FILL = function(vehicle, percentage) end,

    ---Set state to true to extend the wings, false to retract them.
    ---@param vehicle Vehicle
    ---@param state BOOL
    SET_GLIDER_ACTIVE = function(vehicle, state) end,

    ---Resets the vehicle's turret to its default position in scripted cameras. Doesn't seem to affect turrets that are occupied by a ped.
    ---@param vehicle Vehicle
    ---@param shouldReset BOOL
    SET_SHOULD_RESET_TURRET_IN_SCRIPTED_CAMERAS = function(vehicle, shouldReset) end,

    ---@param vehicle Vehicle
    ---@param disable BOOL
    SET_VEHICLE_DISABLE_COLLISION_UPON_CREATION = function(vehicle, disable) end,

    ---@param toggle BOOL
    SET_GROUND_EFFECT_REDUCES_DRAG = function(toggle) end,

    ---Disables collision for this vehicle (maybe it also supports other entities, not sure).\
    ---Only world/building/fixed world objects will have their collisions disabled, props, peds, or any other entity still collides with the vehicle.\
    ---Example: https://streamable.com/6n45d5\
    ---Not sure if there is a native (and if so, which one) that resets the collisions.
    ---@param vehicle Vehicle
    SET_DISABLE_MAP_COLLISION = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_PED_STAND_ON_TOP = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param p1 Any
    ---@param p2 Any
    ---@param p3 Any
    ---@param p4 Any
    SET_VEHICLE_DAMAGE_SCALES = function(vehicle, p1, p2, p3, p4) end,

    ---@param vehicle Vehicle
    ---@param p1 Any
    ---@param p2 Any
    SET_PLANE_SECTION_DAMAGE_SCALE = function(vehicle, p1, p2) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_PLANE_CONTROL_SECTIONS_SHOULD_BREAK_OFF_FROM_EXPLOSIONS = function(vehicle, toggle) end,

    ---Stops the cargobob from being able to attach any vehicle
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_HELI_CAN_PICKUP_ENTITY_THAT_HAS_PICK_UP_DISABLED = function(vehicle, toggle) end,

    ---Sets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane.
    ---@param vehicle Vehicle
    ---@param bombCount integer
    SET_VEHICLE_BOMB_AMMO = function(vehicle, bombCount) end,

    ---Gets the amount of bombs that this vehicle has. As far as I know, this does _not_ impact vehicle weapons or the ammo of those weapons in any way, it is just a way to keep track of the amount of bombs in a specific plane.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_BOMB_AMMO = function(vehicle) end,

    ---Similar to SET_VEHICLE_BOMB_AMMO, this sets the amount of countermeasures that are present on this vehicle.\
    ---Use GET_VEHICLE_BOMB_AMMO to get the current amount.
    ---@param vehicle Vehicle
    ---@param counterMeasureCount integer
    SET_VEHICLE_COUNTERMEASURE_AMMO = function(vehicle, counterMeasureCount) end,

    ---Similar to `GET_VEHICLE_BOMB_AMMO`, this gets the amount of countermeasures that are present on this vehicle.\
    ---Use SET_VEHICLE_COUNTERMEASURE_AMMO to set the current amount.
    ---@param vehicle Vehicle
    ---@return integer
    GET_VEHICLE_COUNTERMEASURE_AMMO = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    SET_HELI_COMBAT_OFFSET = function(vehicle, x, y, z) end,

    ---Used in decompiled scripts in combination with GET_VEHICLE_SIZE\
    ---p7 is usually 2\
    ---p8 is usually 1
    ---@param vehicle Vehicle
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param rotX number
    ---@param rotY number
    ---@param rotZ number
    ---@param p7 integer
    ---@param p8 Any
    ---@return BOOL
    GET_CAN_VEHICLE_BE_PLACED_HERE = function(vehicle, x, y, z, rotX, rotY, rotZ, p7, p8) end,

    ---Sets a flag on heli and another vehicle type.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_AUTOMATIC_CRASH_TASK = function(vehicle, toggle) end,

    ---Used in conjunction with SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO, in Rockstar's scripts. Using this will instantly transform the vehicle into hover mode starting from the given ratio (ranging from 0.0 to 1.0, values greater than 1.0 will put the vehicle into a glitched state.) If this is not used alongside SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO, the vehicle will automatically transform back into car mode.\
    ---\
    ---Usable only with the deluxo and other vehicles with deluxo-like hover mode toggle, modded or otherwise. Does nothing when used on oppressor2.\
    ---\
    ---Example:\
    ---Ped playerPed = PLAYER::PLAYER_PED_ID();\
    ---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);\
    ---VEHICLE::SET_SPECIAL_FLIGHT_MODE_RATIO(veh, 0.7f);\
    ---VEHICLE::SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO(veh, 1.0f);
    ---@param vehicle Vehicle
    ---@param ratio number
    SET_SPECIAL_FLIGHT_MODE_RATIO = function(vehicle, ratio) end,

    ---Used in conjunction with SET_SPECIAL_FLIGHT_MODE_RATIO, in Rockstar's scripts. The vehicle will transform into the given targetRatio, starting from the vehicle's current hover mode transform ratio (which can also be manually set by SET_SPECIAL_FLIGHT_MODE_RATIO,) i.e. setting targetRatio to 0.0 while the vehicle is in hover mode will transform the vehicle into car mode, likewise setting targetRatio to 1.0 while the vehicle is in car mode will transform the vehicle into hover mode, and if the current transform ratio is set to 0.7 while targetRatio is 1.0 the vehicle will transform into hover mode starting from being already partially transformed.\
    ---\
    ---targetRatio is recommended to always be 0.0 or 1.0, otherwise the vehicle will transform into a glitched state.\
    ---\
    ---Usable only with the deluxo and other vehicles with deluxo-like hover mode toggle, modded or otherwise. Does nothing when used on oppressor2.\
    ---\
    ---Example:\
    ---Ped playerPed = PLAYER::PLAYER_PED_ID();\
    ---Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);\
    ---VEHICLE::SET_SPECIAL_FLIGHT_MODE_RATIO(veh, 0.7f);\
    ---VEHICLE::SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO(veh, 1.0f);
    ---@param vehicle Vehicle
    ---@param targetRatio number
    SET_SPECIAL_FLIGHT_MODE_TARGET_RATIO = function(vehicle, targetRatio) end,

    ---It will override the ability to transform deluxo. For oppressor it will work just like SET_DISABLE_HOVER_MODE_FLIGHT
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_SPECIAL_FLIGHT_MODE_ALLOWED = function(vehicle, toggle) end,

    ---Disables "wings" for some flying vehicles. Works only for oppressor _2_ and deluxo.\
    ---For deluxo it just immediately removes vehicle's "wings" and you will be not able to fly up.\
    ---For oppressor 2 it will remove wings right after you land. And you will not able to fly up anymore too.\
    ---But for opressor 2 you still can fly if you somehow get back in the air.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DISABLE_HOVER_MODE_FLIGHT = function(vehicle, toggle) end,

    ---Checks if Chernobog's stabilizers are deployed or not.\
    ---These are the metal supports that allow it to fire.\
    ---This native only applies to the Chernobog.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_OUTRIGGERS_DEPLOYED = function(vehicle) end,

    ---Native is significantly more complicated than simply generating a random vector & length.\
    ---The 'point' is either 400.0 or 250.0 units away from the Ped's current coordinates; and paths into functions like rage::grcViewport___IsSphereVisible
    ---@param ped Ped
    ---@return Vector3
    FIND_SPAWN_COORDINATES_FOR_HELI = function(ped) end,

    ---Only used with the "akula" and "annihilator2" in the decompiled native scripts.
    ---@param vehicle Vehicle
    ---@param deploy BOOL
    ---@param p2 BOOL
    SET_DEPLOY_FOLDING_WINGS = function(vehicle, deploy, p2) end,

    ---Only used with the "akula" and "annihilator2" in the decompiled native scripts.
    ---@param vehicle Vehicle
    ---@return BOOL
    ARE_FOLDING_WINGS_DEPLOYED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param deploy BOOL
    _SET_DEPLOY_MISSILE_BAYS = function(vehicle, deploy) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    _ARE_MISSILE_BAYS_DEPLOYED = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DIP_STRAIGHT_DOWN_WHEN_CRASHING_PLANE = function(vehicle, toggle) end,

    ---Toggles specific flag on turret
    ---@param vehicle Vehicle
    ---@param index integer
    ---@param toggle BOOL
    SET_TURRET_HIDDEN = function(vehicle, index, toggle) end,

    ---@param vehicle Vehicle
    ---@param ratio number
    SET_HOVER_MODE_WING_RATIO = function(vehicle, ratio) end,

    ---Disables turret movement when called in a loop. You can still fire and aim. You cannot shoot backwards though.
    ---@param vehicle Vehicle
    ---@param turretId integer
    SET_DISABLE_TURRET_MOVEMENT = function(vehicle, turretId) end,

    ---@param vehicle Vehicle
    SET_FORCE_FIX_LINK_MATRICES = function(vehicle) end,

    ---Affects the playback speed of the submarine car conversion animations. Does not affect hardcoded animations such as the wheels being retracted.
    ---@param vehicle Vehicle
    ---@param transformRate number
    SET_TRANSFORM_RATE_FOR_ANIMATION = function(vehicle, transformRate) end,

    ---When set to true, the key to transform a car to submarine mode changes from raise/lower convertible roof (hold H by default) to special vehicle transform (press X by default.)
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_TRANSFORM_TO_SUBMARINE_USES_ALTERNATE_INPUT = function(vehicle, toggle) end,

    ---Does nothing. It's a nullsub.
    ---@param toggle BOOL
    SET_VEHICLE_COMBAT_MODE = function(toggle) end,

    ---Does nothing. It's a nullsub.
    ---@param toggle BOOL
    SET_VEHICLE_DETONATION_MODE = function(toggle) end,

    ---Does nothing. It's a nullsub.
    ---@param toggle BOOL
    SET_VEHICLE_SHUNT_ON_STICK = function(toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    _IS_VEHICLE_ON_BOOST_PAD = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_VEHICLE_SHUNTING = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_HAS_VEHICLE_BEEN_HIT_BY_SHUNT = function(vehicle) end,

    ---Returns last vehicle that was rammed by the given vehicle using the shunt boost.
    ---@param vehicle Vehicle
    ---@return Vehicle
    GET_LAST_SHUNT_VEHICLE = function(vehicle) end,

    ---@param toggle BOOL
    SET_DISABLE_VEHICLE_EXPLOSIONS_DAMAGE = function(toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    ---@param level number
    ---@param power number
    ---@param rechargeTime number
    ---@param disableSound BOOL
    SET_OVERRIDE_NITROUS_LEVEL = function(vehicle, toggle, level, power, rechargeTime, disableSound) end,

    ---@param vehicle Vehicle
    ---@param enabled BOOL
    _SET_NITROUS_IS_VISIBLE = function(vehicle, enabled) end,

    ---@param vehicle Vehicle
    ---@param modifier number
    _SET_OVERRIDE_TRACTION_LOSS_MULTIPLIER = function(vehicle, modifier) end,

    ---First two floats relate to rumble, the last is a threshold
    ---@param vehicle Vehicle
    ---@param durationScalar number
    ---@param amplitudeScalar number
    ---@param slipAngleLimit number
    _SET_DRIFT_SLIP_ANGLE_LIMITS = function(vehicle, durationScalar, amplitudeScalar, slipAngleLimit) end,

    ---@param vehicle Vehicle
    ---@param time integer
    _SET_MINIMUM_TIME_BETWEEN_GEAR_SHIFTS = function(vehicle, time) end,

    ---@param vehicle Vehicle
    FULLY_CHARGE_NITROUS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param duration number
    _SET_REMAINING_NITROUS_DURATION = function(vehicle, duration) end,

    ---@param vehicle Vehicle
    ---@return number
    _GET_REMAINING_NITROUS_DURATION = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    IS_NITROUS_ACTIVE = function(vehicle) end,

    ---@param vehicle Vehicle
    CLEAR_NITROUS = function(vehicle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_NITROUS_IS_ACTIVE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_INCREASE_WHEEL_CRUSH_DAMAGE = function(vehicle, toggle) end,

    ---Sets some global vehicle related bool
    ---@param toggle BOOL
    SET_DISABLE_WEAPON_BLADE_FORCES = function(toggle) end,

    ---Changes the car jump control to require a double-tap to activate.
    ---@param toggle BOOL
    SET_USE_DOUBLE_CLICK_FOR_CAR_JUMP = function(toggle) end,

    ---Returns true only if the "tombstone" bone is attached to the vehicle, irrespective of "FLAG_HAS_TOMBSTONE" being present or not. Detaching the tombstone will return false.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_DOES_VEHICLE_HAVE_TOMBSTONE = function(vehicle) end,

    ---Disables detachable bumber from domnator4, dominator5, dominator6, see https://gfycat.com/SecondUnluckyGosling
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    HIDE_TOMBSTONE = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    APPLY_EMP_EFFECT = function(vehicle) end,

    ---Returns whether this vehicle is currently disabled by an EMP mine.
    ---@param vehicle Vehicle
    ---@return BOOL
    GET_IS_VEHICLE_DISABLED_BY_EMP = function(vehicle) end,

    ---@param toggle BOOL
    SET_DISABLE_RETRACTING_WEAPON_BLADES = function(toggle) end,

    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@return number
    GET_TYRE_HEALTH = function(vehicle, wheelIndex) end,

    ---SET_TYRE_WEAR_RATE must be active, otherwise values set to <1000.0f will default to 350.0f\
    ---\
    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@param health number
    SET_TYRE_HEALTH = function(vehicle, wheelIndex, health) end,

    ---Returns the multiplier value from SET_TYRE_WEAR_RATE\
    ---\
    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@return number
    GET_TYRE_WEAR_RATE = function(vehicle, wheelIndex) end,

    ---Needs to be run for tire wear to work. Multiplier affects the downforce and how fast the tires will wear out, higher values essentially make the vehicle slower on straights and its tires will wear down quicker when cornering. Value must be >0f.\
    ---Default value in Rockstar's Open Wheel Race JSON's ("owrtws", "owrtwm", "owrtwh") is 1.0\
    ---\
    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@param multiplier number
    SET_TYRE_WEAR_RATE = function(vehicle, wheelIndex, multiplier) end,

    ---Controls how fast the tires wear out.\
    ---\
    ---Default values from Rockstar's Open Wheel Race JSON's:\
    ---"owrtss" (Soft): 2.2\
    ---"owrtsm" (Medium): 1.7\
    ---"owrtsh" (Hard): 1.2\
    ---\
    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@param multiplier number
    SET_TYRE_WEAR_RATE_SCALE = function(vehicle, wheelIndex, multiplier) end,

    ---Controls how much traction the wheel loses.\
    ---\
    ---Default values from Rockstar's Open Wheel Race JSON's:\
    ---"owrtds" (Soft): 0.05\
    ---"owrtdm" (Medium): 0.45\
    ---"owrtdh" (Hard): 0.8\
    ---\
    ---Usable wheels:\
    ---0: wheel_lf\
    ---1: wheel_rf\
    ---2: wheel_lm1\
    ---3: wheel_rm1\
    ---4: wheel_lr\
    ---5: wheel_rr
    ---@param vehicle Vehicle
    ---@param wheelIndex integer
    ---@param multiplier number
    SET_TYRE_MAXIMUM_GRIP_DIFFERENCE_DUE_TO_WEAR_RATE = function(vehicle, wheelIndex, multiplier) end,

    ---@param vehicle Vehicle
    ---@param p1 integer
    SET_AIRCRAFT_IGNORE_HIGHTMAP_OPTIMISATION = function(vehicle, p1) end,

    ---Lowers the vehicle's stance. Only works for vehicles that have strAdvancedFlags 0x8000 and 0x4000000 set.
    ---@param vehicle Vehicle
    ---@param enable BOOL
    SET_REDUCED_SUSPENSION_FORCE = function(vehicle, enable) end,

    ---@param vehicle Vehicle
    ---@param toggle BOOL
    SET_DRIFT_TYRES = function(vehicle, toggle) end,

    ---@param vehicle Vehicle
    ---@return BOOL
    GET_DRIFT_TYRES_SET = function(vehicle) end,

    ---Implemented only for trains.
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    NETWORK_USE_HIGH_PRECISION_TRAIN_BLENDING = function(vehicle, toggle) end,

    ---Only used in R* Script fm_content_cargo
    ---@param vehicle Vehicle
    ---@param p1 BOOL
    SET_CHECK_FOR_ENOUGH_ROOM_FOR_PED = function(vehicle, p1) end,

    ---_SET_ALLOW_R* - _SET_ALLOW_V*
    ---@param vehicle Vehicle
    ---@param toggle BOOL
    _SET_ALLOW_COLLISION_WHEN_IN_VEHICLE = function(vehicle, toggle) end,

    ---@param vehicleModel Hash
    ---@return BOOL
    _IS_VEHICLE_GEN9_EXCLUSIVE_MODEL = function(vehicleModel) end,

    ---@return integer
    _GET_VEHICLE_MAX_EXHAUST_BONE_COUNT = function() end,

    ---@param vehicle Vehicle
    ---@param index integer
    ---@param boneIndex integer
    ---@param axisX BOOL
    ---@return BOOL
    ---@return integer
    ---@return BOOL
    _GET_VEHICLE_EXHAUST_BONE = function(vehicle, index, boneIndex, axisX) end
}

WATER = {
    ---This function set height to the value of z-axis of the water surface.\
    ---\
    ---This function works with sea and lake. However it does not work with shallow rivers (e.g. raton canyon will return -100000.0f)\
    ---\
    ---note: seems to return true when you are in water
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param height number
    ---@return BOOL
    ---@return number
    GET_WATER_HEIGHT = function(x, y, z, height) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param height number
    ---@return BOOL
    ---@return number
    GET_WATER_HEIGHT_NO_WAVES = function(x, y, z, height) end,

    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param result Vector3
    ---@return BOOL
    TEST_PROBE_AGAINST_WATER = function(x1, y1, z1, x2, y2, z2, result) end,

    ---enum eScriptWaterTestResult\
    ---{\
    ---	SCRIPT_WATER_TEST_RESULT_NONE,\
    ---	SCRIPT_WATER_TEST_RESULT_WATER,\
    ---	SCRIPT_WATER_TEST_RESULT_BLOCKED,\
    ---};
    ---@param x1 number
    ---@param y1 number
    ---@param z1 number
    ---@param x2 number
    ---@param y2 number
    ---@param z2 number
    ---@param flags integer
    ---@param waterHeight number
    ---@return integer
    ---@return number
    TEST_PROBE_AGAINST_ALL_WATER = function(x1, y1, z1, x2, y2, z2, flags, waterHeight) end,

    ---See TEST_PROBE_AGAINST_ALL_WATER.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param flags integer
    ---@param waterHeight number
    ---@return integer
    ---@return number
    TEST_VERTICAL_PROBE_AGAINST_ALL_WATER = function(x, y, z, flags, waterHeight) end,

    ---Sets the water height for a given position and radius.\
    ---
    ---@param x number
    ---@param y number
    ---@param radius number
    ---@param height number
    MODIFY_WATER = function(x, y, radius, height) end,

    ---@param xLow number
    ---@param yLow number
    ---@param xHigh number
    ---@param yHigh number
    ---@param height number
    ---@return integer
    ADD_EXTRA_CALMING_QUAD = function(xLow, yLow, xHigh, yHigh, height) end,

    ---p0 is the handle returned from ADD_EXTRA_CALMING_QUAD
    ---@param calmingQuad integer
    REMOVE_EXTRA_CALMING_QUAD = function(calmingQuad) end,

    ---Sets a value that determines how aggressive the ocean waves will be. Values of 2.0 or more make for very aggressive waves like you see during a thunderstorm.\
    ---\
    ---Works only ~200 meters around the player.
    ---@param intensity number
    SET_DEEP_OCEAN_SCALER = function(intensity) end,

    ---Gets the aggressiveness factor of the ocean waves.
    ---@return number
    GET_DEEP_OCEAN_SCALER = function() end,

    ---@param height number
    SET_CALMED_WAVE_HEIGHT_SCALER = function(height) end,

    ---Sets the waves intensity back to original (1.0 in most cases).
    RESET_DEEP_OCEAN_SCALER = function() end
}

WEAPON = {
    ---Enables laser sight on any weapon.\
    ---\
    ---It doesn't work. Neither on tick nor OnKeyDown
    ---@param toggle BOOL
    ENABLE_LASER_SIGHT_RENDERING = function(toggle) end,

    ---@param componentHash Hash
    ---@return Hash
    GET_WEAPON_COMPONENT_TYPE_MODEL = function(componentHash) end,

    ---Returns the model of any weapon.\
    ---\
    ---Can also take an ammo hash?\
    ---sub_6663a(&l_115B, WEAPON::GET_WEAPONTYPE_MODEL(${ammo_rpg}));
    ---@param weaponHash Hash
    ---@return Hash
    GET_WEAPONTYPE_MODEL = function(weaponHash) end,

    ---@param weaponHash Hash
    ---@return Hash
    GET_WEAPONTYPE_SLOT = function(weaponHash) end,

    ---@param weaponHash Hash
    ---@return Hash
    GET_WEAPONTYPE_GROUP = function(weaponHash) end,

    ---Returns the amount of extra components the specified component has.\
    ---Returns -1 if the component isn't of type CWeaponComponentVariantModel.
    ---@param componentHash Hash
    ---@return integer
    GET_WEAPON_COMPONENT_VARIANT_EXTRA_COUNT = function(componentHash) end,

    ---Returns the model hash of the extra component at specified index.
    ---@param componentHash Hash
    ---@param extraComponentIndex integer
    ---@return Hash
    GET_WEAPON_COMPONENT_VARIANT_EXTRA_MODEL = function(componentHash, extraComponentIndex) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param bForceInHand BOOL
    SET_CURRENT_PED_WEAPON = function(ped, weaponHash, bForceInHand) end,

    ---The return value seems to indicate returns true if the hash of the weapon object weapon equals the weapon hash.\
    ---p2 seems to be 1 most of the time.\
    ---\
    ---\
    ---\
    ---\
    ---\
    ---p2 is not implemented\
    ---\
    ---disassembly said that?\
    ---
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param p2 BOOL
    ---@return BOOL
    ---@return Hash
    GET_CURRENT_PED_WEAPON = function(ped, weaponHash, p2) end,

    ---@param ped Ped
    ---@param p1 Any
    ---@return Entity
    GET_CURRENT_PED_WEAPON_ENTITY_INDEX = function(ped, p1) end,

    ---p1 is always 0 in the scripts.
    ---@param ped Ped
    ---@param p1 BOOL
    ---@return Hash
    GET_BEST_PED_WEAPON = function(ped, p1) end,

    ---Full list of weapons by DurtyFree (Search for VEHICLE_*): https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return BOOL
    SET_CURRENT_PED_VEHICLE_WEAPON = function(ped, weaponHash) end,

    ---Example in VB\
    ---\
    ---    Public Shared Function GetVehicleCurrentWeapon(Ped As Ped) As Integer\
    ---        Dim arg As New OutputArgument()\
    ---        Native.Function.Call(Hash.GET_CURRENT_PED_VEHICLE_WEAPON, Ped, arg)\
    ---        Return arg.GetResult(Of Integer)()\
    ---    End Function\
    ---\
    ---Usage:\
    ---If GetVehicleCurrentWeapon(Game.Player.Character) = -821520672 Then ...Do something\
    ---Note: -821520672 = VEHICLE_WEAPON_PLANE_ROCKET
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return BOOL
    ---@return Hash
    GET_CURRENT_PED_VEHICLE_WEAPON = function(ped, weaponHash) end,

    ---@param ped Ped
    SET_PED_CYCLE_VEHICLE_WEAPONS_ONLY = function(ped) end,

    ---Checks if the ped is currently equipped with a weapon matching a bit specified using a bitwise-or in typeFlags.\
    ---\
    ---Type flag bit values:\
    ---1 = Melee weapons\
    ---2 = Explosive weapons\
    ---4 = Any other weapons\
    ---\
    ---Not specifying any bit will lead to the native *always* returning 'false', and for example specifying '4 | 2' will check for any weapon except fists and melee weapons.\
    ---7 returns true if you are equipped with any weapon except your fists.\
    ---6 returns true if you are equipped with any weapon except melee weapons.\
    ---5 returns true if you are equipped with any weapon except the Explosives weapon group.\
    ---4 returns true if you are equipped with any weapon except Explosives weapon group AND melee weapons.\
    ---3 returns true if you are equipped with either Explosives or Melee weapons (the exact opposite of 4).\
    ---2 returns true only if you are equipped with any weapon from the Explosives weapon group.\
    ---1 returns true only if you are equipped with any Melee weapon.\
    ---0 never returns true.\
    ---\
    ---Note: When I say "Explosives weapon group", it does not include the Jerry can and Fire Extinguisher.
    ---@param ped Ped
    ---@param typeFlags integer
    ---@return BOOL
    IS_PED_ARMED = function(ped, typeFlags) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return BOOL
    IS_WEAPON_VALID = function(weaponHash) end,

    ---p2 should be FALSE, otherwise it seems to always return FALSE\
    ---\
    ---Bool does not check if the weapon is current equipped, unfortunately.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param p2 BOOL
    ---@return BOOL
    HAS_PED_GOT_WEAPON = function(ped, weaponHash, p2) end,

    ---@param ped Ped
    ---@return BOOL
    IS_PED_WEAPON_READY_TO_SHOOT = function(ped) end,

    ---@param ped Ped
    ---@param weaponSlot Hash
    ---@return Hash
    GET_PED_WEAPONTYPE_IN_SLOT = function(ped, weaponSlot) end,

    ---WEAPON::GET_AMMO_IN_PED_WEAPON(PLAYER::PLAYER_PED_ID(), a_0)\
    ---\
    ---From decompiled scripts\
    ---Returns total ammo in weapon\
    ---\
    ---GTALua Example :\
    ---natives.WEAPON.GET_AMMO_IN_PED_WEAPON(plyPed, WeaponHash)\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponhash Hash
    ---@return integer
    GET_AMMO_IN_PED_WEAPON = function(ped, weaponhash) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammo integer
    ADD_AMMO_TO_PED = function(ped, weaponHash, ammo) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammo integer
    ---@param p3 BOOL
    SET_PED_AMMO = function(ped, weaponHash, ammo, p3) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param toggle BOOL
    ---@param weaponHash Hash
    SET_PED_INFINITE_AMMO = function(ped, toggle, weaponHash) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_INFINITE_AMMO_CLIP = function(ped, toggle) end,

    ---@param p0 Any
    ---@param p1 Any
    SET_PED_STUN_GUN_FINITE_AMMO = function(p0, p1) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammoCount integer
    ---@param isHidden BOOL
    ---@param bForceInHand BOOL
    GIVE_WEAPON_TO_PED = function(ped, weaponHash, ammoCount, isHidden, bForceInHand) end,

    ---Gives a weapon to PED with a delay, example:\
    ---\
    ---WEAPON::GIVE_DELAYED_WEAPON_TO_PED(PED::PLAYER_PED_ID(), MISC::GET_HASH_KEY("WEAPON_PISTOL"), 1000, false)\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammoCount integer
    ---@param bForceInHand BOOL
    GIVE_DELAYED_WEAPON_TO_PED = function(ped, weaponHash, ammoCount, bForceInHand) end,

    ---setting the last params to false it does that same so I would suggest its not a toggle
    ---@param ped Ped
    ---@param p1 BOOL
    REMOVE_ALL_PED_WEAPONS = function(ped, p1) end,

    ---This native removes a specified weapon from your selected ped.\
    ---\
    ---Example:\
    ---C#:\
    ---Function.Call(Hash.REMOVE_WEAPON_FROM_PED, Game.Player.Character, 0x99B507EA);\
    ---\
    ---C++:\
    ---WEAPON::REMOVE_WEAPON_FROM_PED(PLAYER::PLAYER_PED_ID(), 0x99B507EA);\
    ---\
    ---The code above removes the knife from the player.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    REMOVE_WEAPON_FROM_PED = function(ped, weaponHash) end,

    ---Hides the players weapon during a cutscene.
    ---@param ped Ped
    ---@param toggle BOOL
    HIDE_PED_WEAPON_FOR_SCRIPTED_CUTSCENE = function(ped, toggle) end,

    ---Has 5 parameters since latest patches.
    ---@param ped Ped
    ---@param visible BOOL
    ---@param deselectWeapon BOOL
    ---@param p3 BOOL
    ---@param p4 BOOL
    SET_PED_CURRENT_WEAPON_VISIBLE = function(ped, visible, deselectWeapon, p3, p4) end,

    ---@param ped Ped
    ---@param toggle BOOL
    SET_PED_DROPS_WEAPONS_WHEN_DEAD = function(ped, toggle) end,

    ---It determines what weapons caused damage:\
    ---\
    ---If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0\
    ---If you want to define any melee weapon, second parameter=0, third parameter=1.\
    ---If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param weaponType integer
    ---@return BOOL
    HAS_PED_BEEN_DAMAGED_BY_WEAPON = function(ped, weaponHash, weaponType) end,

    ---Does NOT seem to work with HAS_PED_BEEN_DAMAGED_BY_WEAPON. Use CLEAR_ENTITY_LAST_WEAPON_DAMAGE and HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON instead.
    ---@param ped Ped
    CLEAR_PED_LAST_WEAPON_DAMAGE = function(ped) end,

    ---It determines what weapons caused damage:\
    ---\
    ---If you want to define only a specific weapon, second parameter=weapon hash code, third parameter=0\
    ---If you want to define any melee weapon, second parameter=0, third parameter=1.\
    ---If you want to identify any weapon (firearms, melee, rockets, etc.), second parameter=0, third parameter=2.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param entity Entity
    ---@param weaponHash Hash
    ---@param weaponType integer
    ---@return BOOL
    HAS_ENTITY_BEEN_DAMAGED_BY_WEAPON = function(entity, weaponHash, weaponType) end,

    ---@param entity Entity
    CLEAR_ENTITY_LAST_WEAPON_DAMAGE = function(entity) end,

    ---@param ped Ped
    SET_PED_DROPS_WEAPON = function(ped) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param xOffset number
    ---@param yOffset number
    ---@param zOffset number
    ---@param ammoCount integer
    SET_PED_DROPS_INVENTORY_WEAPON = function(ped, weaponHash, xOffset, yOffset, zOffset, ammoCount) end,

    ---p2 is mostly 1 in the scripts.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param p2 BOOL
    ---@return integer
    GET_MAX_AMMO_IN_CLIP = function(ped, weaponHash, p2) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@return integer
    _GET_TIME_BEFORE_VEHICLE_WEAPON_RELOAD_FINISHES = function(vehicle, seat) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@return BOOL
    _HAS_WEAPON_RELOADING_IN_VEHICLE = function(vehicle, seat) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@return number
    _GET_VEHICLE_WEAPON_RELOAD_TIME = function(vehicle, seat) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@param ammo integer
    ---@return BOOL
    ---@return integer
    _GET_AMMO_IN_VEHICLE_WEAPON_CLIP = function(vehicle, seat, ammo) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammo integer
    ---@return BOOL
    ---@return integer
    GET_AMMO_IN_CLIP = function(ped, weaponHash, ammo) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@param ammo integer
    ---@return BOOL
    _SET_AMMO_IN_VEHICLE_WEAPON_CLIP = function(vehicle, seat, ammo) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammo integer
    ---@return BOOL
    SET_AMMO_IN_CLIP = function(ped, weaponHash, ammo) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param ammo integer
    ---@return BOOL
    ---@return integer
    GET_MAX_AMMO = function(ped, weaponHash, ammo) end,

    ---Returns the max ammo for an ammo type. Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1
    ---@param ped Ped
    ---@param ammoTypeHash Hash
    ---@param ammo integer
    ---@return BOOL
    ---@return integer
    GET_MAX_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) end,

    ---Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1
    ---@param ped Ped
    ---@param ammoTypeHash Hash
    ---@param ammo integer
    ADD_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) end,

    ---Ammo types: https://gist.github.com/root-cause/faf41f59f7a6d818b7db0b839bd147c1
    ---@param ped Ped
    ---@param ammoTypeHash Hash
    ---@param ammo integer
    SET_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash, ammo) end,

    ---@param ped Ped
    ---@param ammoTypeHash Hash
    ---@return integer
    GET_PED_AMMO_BY_TYPE = function(ped, ammoTypeHash) end,

    ---@param ped Ped
    ---@param p1 integer
    SET_PED_AMMO_TO_DROP = function(ped, p1) end,

    ---@param p0 number
    SET_PICKUP_AMMO_AMOUNT_SCALER = function(p0) end,

    ---Returns the current ammo type of the specified ped's specified weapon.\
    ---MkII magazines will change the return value, like Pistol MkII returning AMMO_PISTOL without any components and returning AMMO_PISTOL_TRACER after Tracer Rounds component is attached.\
    ---Use 0xF489B44DD5AF4BD9 if you always want AMMO_PISTOL.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return Hash
    GET_PED_AMMO_TYPE_FROM_WEAPON = function(ped, weaponHash) end,

    ---Returns the base/default ammo type of the specified ped's specified weapon.\
    ---Use GET_PED_AMMO_TYPE_FROM_WEAPON if you want current ammo type (like AMMO_MG_INCENDIARY/AMMO_MG_TRACER while using MkII magazines) and use this if you want base ammo type. (AMMO_MG)\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return Hash
    GET_PED_ORIGINAL_AMMO_TYPE_FROM_WEAPON = function(ped, weaponHash) end,

    ---Pass ped. Pass address of Vector3.\
    ---The coord will be put into the Vector3.\
    ---The return will determine whether there was a coord found or not.
    ---@param ped Ped
    ---@param coords Vector3
    ---@return BOOL
    GET_PED_LAST_WEAPON_IMPACT_COORD = function(ped, coords) end,

    ---p1/gadgetHash was always 0xFBAB5776 ("GADGET_PARACHUTE").\
    ---p2 is always true.
    ---@param ped Ped
    ---@param gadgetHash Hash
    ---@param p2 BOOL
    SET_PED_GADGET = function(ped, gadgetHash, p2) end,

    ---gadgetHash - was always 0xFBAB5776 ("GADGET_PARACHUTE").
    ---@param ped Ped
    ---@param gadgetHash Hash
    ---@return BOOL
    GET_IS_PED_GADGET_EQUIPPED = function(ped, gadgetHash) end,

    ---Returns the hash of the weapon. \
    ---\
    ---            var num7 = WEAPON::GET_SELECTED_PED_WEAPON(num4);\
    ---            sub_27D3(num7);\
    ---            switch (num7)\
    ---            {\
    ---                case 0x24B17070:\
    ---\
    ---Also see WEAPON::GET_CURRENT_PED_WEAPON. Difference?\
    ---\
    ----------------------------------------------------------------------------\
    ---\
    ---The difference is that GET_SELECTED_PED_WEAPON simply returns the ped's current weapon hash but GET_CURRENT_PED_WEAPON also checks the weapon object and returns true if the hash of the weapon object equals the weapon hash\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@return Hash
    GET_SELECTED_PED_WEAPON = function(ped) end,

    ---             WEAPON::EXPLODE_PROJECTILES(PLAYER::PLAYER_PED_ID(), func_221(0x00000003), 0x00000001);
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param p2 BOOL
    EXPLODE_PROJECTILES = function(ped, weaponHash, p2) end,

    ---If `explode` true, then removal is done through exploding the projectile. Basically the same as EXPLODE_PROJECTILES but without defining the owner ped.
    ---@param weaponHash Hash
    ---@param explode BOOL
    REMOVE_ALL_PROJECTILES_OF_TYPE = function(weaponHash, explode) end,

    ---@param ped Ped
    ---@return number
    GET_LOCKON_DISTANCE_OF_CURRENT_PED_WEAPON = function(ped) end,

    ---@param ped Ped
    ---@return number
    GET_MAX_RANGE_OF_CURRENT_PED_WEAPON = function(ped) end,

    ---Fourth Parameter = unsure, almost always -1
    ---@param driver Ped
    ---@param vehicle Vehicle
    ---@param weaponHash Hash
    ---@param p3 Any
    ---@return BOOL
    HAS_VEHICLE_GOT_PROJECTILE_ATTACHED = function(driver, vehicle, weaponHash, p3) end,

    ---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param componentHash Hash
    GIVE_WEAPON_COMPONENT_TO_PED = function(ped, weaponHash, componentHash) end,

    ---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param componentHash Hash
    REMOVE_WEAPON_COMPONENT_FROM_PED = function(ped, weaponHash, componentHash) end,

    ---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param componentHash Hash
    ---@return BOOL
    HAS_PED_GOT_WEAPON_COMPONENT = function(ped, weaponHash, componentHash) end,

    ---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param componentHash Hash
    ---@return BOOL
    IS_PED_WEAPON_COMPONENT_ACTIVE = function(ped, weaponHash, componentHash) end,

    ---@param ped Ped
    ---@return BOOL
    REFILL_AMMO_INSTANTLY = function(ped) end,

    ---Forces a ped to reload only if they are able to; if they have a full magazine, they will not reload.
    ---@param ped Ped
    ---@return BOOL
    MAKE_PED_RELOAD = function(ped) end,

    ---@param vehicle Vehicle
    ---@param seat integer
    ---@param ped Ped
    ---@return BOOL
    _TRIGGER_VEHICLE_WEAPON_RELOAD = function(vehicle, seat, ped) end,

    ---Nearly every instance of p1 I found was 31. Nearly every instance of p2 I found was 0.\
    ---\
    ---REQUEST_WEAPON_ASSET(iLocal_1888, 31, 26);
    ---@param weaponHash Hash
    ---@param p1 integer
    ---@param p2 integer
    REQUEST_WEAPON_ASSET = function(weaponHash, p1, p2) end,

    ---@param weaponHash Hash
    ---@return BOOL
    HAS_WEAPON_ASSET_LOADED = function(weaponHash) end,

    ---@param weaponHash Hash
    REMOVE_WEAPON_ASSET = function(weaponHash) end,

    ---Now has 8 params.
    ---@param weaponHash Hash
    ---@param ammoCount integer
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param showWorldModel BOOL
    ---@param scale number
    ---@param p7 Any
    ---@param p8 Any
    ---@param p9 Any
    ---@return Object
    CREATE_WEAPON_OBJECT = function(weaponHash, ammoCount, x, y, z, showWorldModel, scale, p7, p8, p9) end,

    ---componentHash:\
    ---(use WEAPON::GET_WEAPON_COMPONENT_TYPE_MODEL() to get hash value)\
    ---${component_at_ar_flsh}, ${component_at_ar_supp}, ${component_at_pi_flsh}, ${component_at_scope_large}, ${component_at_ar_supp_02}
    ---@param weaponObject Object
    ---@param componentHash Hash
    GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT = function(weaponObject, componentHash) end,

    ---see DOES_WEAPON_TAKE_WEAPON_COMPONENT for full list of weapons & components
    ---@param object Object
    ---@param componentHash Hash
    REMOVE_WEAPON_COMPONENT_FROM_WEAPON_OBJECT = function(object, componentHash) end,

    ---see DOES_WEAPON_TAKE_WEAPON_COMPONENT for full list of weapons & components
    ---@param weapon Object
    ---@param componentHash Hash
    ---@return BOOL
    HAS_WEAPON_GOT_WEAPON_COMPONENT = function(weapon, componentHash) end,

    ---@param weaponObject Object
    ---@param ped Ped
    GIVE_WEAPON_OBJECT_TO_PED = function(weaponObject, ped) end,

    ---Full list of weapons & components by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@param componentHash Hash
    ---@return BOOL
    DOES_WEAPON_TAKE_WEAPON_COMPONENT = function(weaponHash, componentHash) end,

    ---Drops the current weapon and returns the object\
    ---\
    ---Unknown behavior when unarmed.
    ---@param ped Ped
    ---@param p1 BOOL
    ---@return Object
    GET_WEAPON_OBJECT_FROM_PED = function(ped, p1) end,

    ---Gives the specified loadout to the specified ped. \
    ---Loadouts are defined in common.rpf\data\ai\loadouts.meta
    ---@param ped Ped
    ---@param loadoutHash Hash
    GIVE_LOADOUT_TO_PED = function(ped, loadoutHash) end,

    ---tintIndex can be the following:\
    ---\
    ---0 - Normal\
    ---1 - Green\
    ---2 - Gold\
    ---3 - Pink\
    ---4 - Army\
    ---5 - LSPD\
    ---6 - Orange\
    ---7 - Platinum\
    ---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param tintIndex integer
    SET_PED_WEAPON_TINT_INDEX = function(ped, weaponHash, tintIndex) end,

    ---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return integer
    GET_PED_WEAPON_TINT_INDEX = function(ped, weaponHash) end,

    ---Full list of weapons, components & tint indexes by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weapon Object
    ---@param tintIndex integer
    SET_WEAPON_OBJECT_TINT_INDEX = function(weapon, tintIndex) end,

    ---@param weapon Object
    ---@return integer
    GET_WEAPON_OBJECT_TINT_INDEX = function(weapon) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return integer
    GET_WEAPON_TINT_COUNT = function(weaponHash) end,

    ---Colors:\
    ---0 = Gray\
    ---1 = Dark Gray\
    ---2 = Black\
    ---3 = White\
    ---4 = Blue\
    ---5 = Cyan\
    ---6 = Aqua\
    ---7 = Cool Blue\
    ---8 = Dark Blue\
    ---9 = Royal Blue\
    ---10 = Plum\
    ---11 = Dark Purple\
    ---12 = Purple\
    ---13 = Red\
    ---14 = Wine Red\
    ---15 = Magenta\
    ---16 = Pink\
    ---17 = Salmon\
    ---18 = Hot Pink\
    ---19 = Rust Orange\
    ---20 = Brown\
    ---21 = Earth\
    ---22 = Orange\
    ---23 = Light Orange\
    ---24 = Dark Yellow\
    ---25 = Yellow\
    ---26 = Light Brown\
    ---27 = Lime Green\
    ---28 = Olive\
    ---29 = Moss\
    ---30 = Turquoise\
    ---31 = Dark Green\
    ---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param camoComponentHash Hash
    ---@param colorIndex integer
    SET_PED_WEAPON_COMPONENT_TINT_INDEX = function(ped, weaponHash, camoComponentHash, colorIndex) end,

    ---Returns -1 if camoComponentHash is invalid/not attached to the weapon.\
    ---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param camoComponentHash Hash
    ---@return integer
    GET_PED_WEAPON_COMPONENT_TINT_INDEX = function(ped, weaponHash, camoComponentHash) end,

    ---Colors:\
    ---0 = Gray\
    ---1 = Dark Gray\
    ---2 = Black\
    ---3 = White\
    ---4 = Blue\
    ---5 = Cyan\
    ---6 = Aqua\
    ---7 = Cool Blue\
    ---8 = Dark Blue\
    ---9 = Royal Blue\
    ---10 = Plum\
    ---11 = Dark Purple\
    ---12 = Purple\
    ---13 = Red\
    ---14 = Wine Red\
    ---15 = Magenta\
    ---16 = Pink\
    ---17 = Salmon\
    ---18 = Hot Pink\
    ---19 = Rust Orange\
    ---20 = Brown\
    ---21 = Earth\
    ---22 = Orange\
    ---23 = Light Orange\
    ---24 = Dark Yellow\
    ---25 = Yellow\
    ---26 = Light Brown\
    ---27 = Lime Green\
    ---28 = Olive\
    ---29 = Moss\
    ---30 = Turquoise\
    ---31 = Dark Green\
    ---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponObject Object
    ---@param camoComponentHash Hash
    ---@param colorIndex integer
    SET_WEAPON_OBJECT_COMPONENT_TINT_INDEX = function(weaponObject, camoComponentHash, colorIndex) end,

    ---Returns -1 if camoComponentHash is invalid/not attached to the weapon object.\
    ---Full list of weapons, components, tint indexes & weapon liveries by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponObject Object
    ---@param camoComponentHash Hash
    ---@return integer
    GET_WEAPON_OBJECT_COMPONENT_TINT_INDEX = function(weaponObject, camoComponentHash) end,

    ---@param ped Ped
    ---@param weaponHash Hash
    ---@return integer
    GET_PED_WEAPON_CAMO_INDEX = function(ped, weaponHash) end,

    ---@param weaponObject Object
    ---@param p1 integer
    SET_WEAPON_OBJECT_CAMO_INDEX = function(weaponObject, p1) end,

    ---struct WeaponHudStatsData\
    ---{\
    ---    BYTE hudDamage; // 0x0000\
    ---    char _0x0001[0x7]; // 0x0001\
    ---    BYTE hudSpeed; // 0x0008\
    ---    char _0x0009[0x7]; // 0x0009\
    ---    BYTE hudCapacity; // 0x0010\
    ---    char _0x0011[0x7]; // 0x0011\
    ---    BYTE hudAccuracy; // 0x0018\
    ---    char _0x0019[0x7]; // 0x0019\
    ---    BYTE hudRange; // 0x0020\
    ---};\
    ---\
    ---Usage:\
    ---\
    ---WeaponHudStatsData data;\
    ---if (GET_WEAPON_HUD_STATS(weaponHash, (int *)&data))\
    ---{\
    ---    // BYTE damagePercentage = data.hudDamage and so on\
    ---}\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@param outData Any*
    ---@return BOOL
    GET_WEAPON_HUD_STATS = function(weaponHash, outData) end,

    ---@param componentHash Hash
    ---@param outData Any*
    ---@return BOOL
    GET_WEAPON_COMPONENT_HUD_STATS = function(componentHash, outData) end,

    ---This native does not return damages of weapons from the melee and explosive group.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@param componentHash Hash
    ---@return number
    GET_WEAPON_DAMAGE = function(weaponHash, componentHash) end,

    ---// Returns the size of the default weapon component clip.\
    ---\
    ---Use it like this:\
    ---\
    ---char cClipSize[32];\
    ---Hash cur;\
    ---if (WEAPON::GET_CURRENT_PED_WEAPON(playerPed, &cur, 1))\
    ---{\
    ---    if (WEAPON::IS_WEAPON_VALID(cur))\
    ---    {\
    ---        int iClipSize = WEAPON::GET_WEAPON_CLIP_SIZE(cur);\
    ---        sprintf_s(cClipSize, "ClipSize: %.d", iClipSize);\
    ---        vDrawString(cClipSize, 0.5f, 0.5f);\
    ---}\
    ---}\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return integer
    GET_WEAPON_CLIP_SIZE = function(weaponHash) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return number
    GET_WEAPON_TIME_BETWEEN_SHOTS = function(weaponHash) end,

    ---@param ped Ped
    ---@param xBias number
    ---@param yBias number
    SET_PED_CHANCE_OF_FIRING_BLANKS = function(ped, xBias, yBias) end,

    ---Returns handle of the projectile.
    ---@param ped Ped
    ---@param p1 number
    ---@return Object
    SET_PED_SHOOT_ORDNANCE_WEAPON = function(ped, p1) end,

    ---@param weaponObject Entity
    REQUEST_WEAPON_HIGH_DETAIL_MODEL = function(weaponObject) end,

    ---@param weapon Hash
    ---@param damageModifier number
    _SET_WEAPON_PED_DAMAGE_MODIFIER = function(weapon, damageModifier) end,

    ---Changes the weapon damage output by the given multiplier value. Must be run every frame.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@param damageMultiplier number
    SET_WEAPON_DAMAGE_MODIFIER = function(weaponHash, damageMultiplier) end,

    ---@param weaponHash Hash
    ---@param multiplier number
    SET_WEAPON_AOE_MODIFIER = function(weaponHash, multiplier) end,

    ---ex, WEAPON::SET_WEAPON_EFFECT_DURATION_MODIFIER(joaat("vehicle_weapon_mine_slick"), 1.0);
    ---@param p0 Hash
    ---@param p1 number
    SET_WEAPON_EFFECT_DURATION_MODIFIER = function(p0, p1) end,

    ---This native returns a true or false value.\
    ---\
    ---Ped ped = The ped whose weapon you want to check.
    ---@param ped Ped
    ---@return BOOL
    IS_PED_CURRENT_WEAPON_SILENCED = function(ped) end,

    ---@param ped Ped
    ---@return BOOL
    IS_FLASH_LIGHT_ON = function(ped) end,

    ---@param distance number
    ---@return BOOL
    SET_FLASH_LIGHT_FADE_DISTANCE = function(distance) end,

    ---Enables/disables flashlight on ped's weapon.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_FLASH_LIGHT_ACTIVE_HISTORY = function(ped, toggle) end,

    ---Changes the selected ped aiming animation style. \
    ---Note : You must use GET_HASH_KEY!\
    ---\
    ---Strings to use with GET_HASH_KEY :\
    ---\
    ---    "Ballistic",\
    ---    "Default",\
    ---  "Fat",\
    ---  "Female",\
    ---   "FirstPerson",\
    ---  "FirstPersonAiming",\
    ---    "FirstPersonFranklin",\
    ---  "FirstPersonFranklinAiming",\
    ---    "FirstPersonFranklinRNG",\
    ---   "FirstPersonFranklinScope",\
    --- "FirstPersonMPFemale",\
    ---  "FirstPersonMichael",\
    ---   "FirstPersonMichaelAiming",\
    --- "FirstPersonMichaelRNG",\
    ---    "FirstPersonMichaelScope",\
    ---  "FirstPersonRNG",\
    ---   "FirstPersonScope",\
    --- "FirstPersonTrevor",\
    ---    "FirstPersonTrevorAiming",\
    ---  "FirstPersonTrevorRNG",\
    --- "FirstPersonTrevorScope",\
    ---   "Franklin",\
    --- "Gang",\
    --- "Gang1H",\
    ---   "GangFemale",\
    ---   "Hillbilly",\
    ---    "MP_F_Freemode",\
    ---    "Michael",\
    ---  "SuperFat",\
    --- "Trevor"
    ---@param ped Ped
    ---@param animStyle Hash
    SET_WEAPON_ANIMATION_OVERRIDE = function(ped, animStyle) end,

    ---enum class eDamageType\
    ---{\
    ---	UNKNOWN = 0,\
    ---	NONE = 1,\
    ---	MELEE = 2,\
    ---	BULLET = 3,\
    ---	BULLET_RUBBER = 4,\
    ---	EXPLOSIVE = 5,\
    ---	FIRE = 6,\
    ---	COLLISION = 7,\
    ---	FALL = 8,\
    ---	DROWN = 9,\
    ---	ELECTRIC = 10,\
    ---	BARBED_WIRE = 11,\
    ---	FIRE_EXTINGUISHER = 12,\
    ---	SMOKE = 13,\
    ---	WATER_CANNON = 14,\
    ---	TRANQUILIZER = 15,\
    ---};\
    ---\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return integer
    GET_WEAPON_DAMAGE_TYPE = function(weaponHash) end,

    ---@param ped Ped
    SET_EQIPPED_WEAPON_START_SPINNING_AT_FULL_SPEED = function(ped) end,

    ---this returns if you can use the weapon while using a parachute\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param weaponHash Hash
    ---@return BOOL
    CAN_USE_WEAPON_ON_PARACHUTE = function(weaponHash) end,

    ---Both coordinates are from objects in the decompiled scripts. Native related to 0xECDC202B25E5CF48 p1 value. The only weapon hash used in the decompiled scripts is weapon_air_defence_gun. These two natives are used by the yacht script, decompiled scripts suggest it and the weapon hash used (valkyrie's rockets) are also used by yachts.
    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param weaponHash Hash
    ---@return integer
    CREATE_AIR_DEFENCE_SPHERE = function(x, y, z, radius, p4, p5, p6, weaponHash) end,

    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param p0 number
    ---@param p1 number
    ---@param p2 number
    ---@param p3 number
    ---@param p4 number
    ---@param p5 number
    ---@param p6 number
    ---@param p7 number
    ---@param p8 number
    ---@param radius number
    ---@param weaponHash Hash
    ---@return integer
    CREATE_AIR_DEFENCE_ANGLED_AREA = function(p0, p1, p2, p3, p4, p5, p6, p7, p8, radius, weaponHash) end,

    ---@param zoneId integer
    ---@return BOOL
    REMOVE_AIR_DEFENCE_SPHERE = function(zoneId) end,

    REMOVE_ALL_AIR_DEFENCE_SPHERES = function() end,

    ---@param player Player
    ---@param zoneId integer
    ---@param enable BOOL
    SET_PLAYER_TARGETTABLE_FOR_AIR_DEFENCE_SPHERE = function(player, zoneId, enable) end,

    ---@param x number
    ---@param y number
    ---@param z number
    ---@param radius number
    ---@param outZoneId integer
    ---@return BOOL
    ---@return integer
    IS_AIR_DEFENCE_SPHERE_IN_AREA = function(x, y, z, radius, outZoneId) end,

    ---@param zoneId integer
    ---@param x number
    ---@param y number
    ---@param z number
    FIRE_AIR_DEFENCE_SPHERE_WEAPON_AT_POSITION = function(zoneId, x, y, z) end,

    ---@param zoneId integer
    ---@return BOOL
    DOES_AIR_DEFENCE_SPHERE_EXIST = function(zoneId) end,

    ---Disables selecting the given weapon. Ped isn't forced to put the gun away. However you can't reselect the weapon if you holster then unholster. Weapon is also grayed out on the weapon wheel.\
    ---Full list of weapons by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/weapons.json
    ---@param ped Ped
    ---@param weaponHash Hash
    ---@param toggle BOOL
    SET_CAN_PED_SELECT_INVENTORY_WEAPON = function(ped, weaponHash, toggle) end,

    ---Disable all weapons. Does the same as 0xB4771B9AAF4E68E4 except for all weapons.
    ---@param ped Ped
    ---@param toggle BOOL
    SET_CAN_PED_SELECT_ALL_WEAPONS = function(ped, toggle) end
}

ZONE = {
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return integer
    GET_ZONE_AT_COORDS = function(x, y, z) end,

    ---'zoneName' corresponds to an entry in 'popzone.ipl'.\
    ---\
    ---AIRP = Los Santos International Airport\
    ---ALAMO = Alamo Sea\
    ---ALTA = Alta\
    ---ARMYB = Fort Zancudo\
    ---BANHAMC = Banham Canyon Dr\
    ---BANNING = Banning\
    ---BEACH = Vespucci Beach\
    ---BHAMCA = Banham Canyon\
    ---BRADP = Braddock Pass\
    ---BRADT = Braddock Tunnel\
    ---BURTON = Burton\
    ---CALAFB = Calafia Bridge\
    ---CANNY = Raton Canyon\
    ---CCREAK = Cassidy Creek\
    ---CHAMH = Chamberlain Hills\
    ---CHIL = Vinewood Hills\
    ---CHU = Chumash\
    ---CMSW = Chiliad Mountain State Wilderness\
    ---CYPRE = Cypress Flats\
    ---DAVIS = Davis\
    ---DELBE = Del Perro Beach\
    ---DELPE = Del Perro\
    ---DELSOL = La Puerta\
    ---DESRT = Grand Senora Desert\
    ---DOWNT = Downtown\
    ---DTVINE = Downtown Vinewood\
    ---EAST_V = East Vinewood\
    ---EBURO = El Burro Heights\
    ---ELGORL = El Gordo Lighthouse\
    ---ELYSIAN = Elysian Island\
    ---GALFISH = Galilee\
    ---GOLF = GWC and Golfing Society\
    ---GRAPES = Grapeseed\
    ---GREATC = Great Chaparral\
    ---HARMO = Harmony\
    ---HAWICK = Hawick\
    ---HORS = Vinewood Racetrack\
    ---HUMLAB = Humane Labs and Research\
    ---JAIL = Bolingbroke Penitentiary\
    ---KOREAT = Little Seoul\
    ---LACT = Land Act Reservoir\
    ---LAGO = Lago Zancudo\
    ---LDAM = Land Act Dam\
    ---LEGSQU = Legion Square\
    ---LMESA = La Mesa\
    ---LOSPUER = La Puerta\
    ---MIRR = Mirror Park\
    ---MORN = Morningwood\
    ---MOVIE = Richards Majestic\
    ---MTCHIL = Mount Chiliad\
    ---MTGORDO = Mount Gordo\
    ---MTJOSE = Mount Josiah\
    ---MURRI = Murrieta Heights\
    ---NCHU = North Chumash\
    ---NOOSE = N.O.O.S.E\
    ---OCEANA = Pacific Ocean\
    ---PALCOV = Paleto Cove\
    ---PALETO = Paleto Bay\
    ---PALFOR = Paleto Forest\
    ---PALHIGH = Palomino Highlands\
    ---PALMPOW = Palmer-Taylor Power Station\
    ---PBLUFF = Pacific Bluffs\
    ---PBOX = Pillbox Hill\
    ---PROCOB = Procopio Beach\
    ---RANCHO = Rancho\
    ---RGLEN = Richman Glen\
    ---RICHM = Richman\
    ---ROCKF = Rockford Hills\
    ---RTRAK = Redwood Lights Track\
    ---SANAND = San Andreas\
    ---SANCHIA = San Chianski Mountain Range\
    ---SANDY = Sandy Shores\
    ---SKID = Mission Row\
    ---SLAB = Stab City\
    ---STAD = Maze Bank Arena\
    ---STRAW = Strawberry\
    ---TATAMO = Tataviam Mountains\
    ---TERMINA = Terminal\
    ---TEXTI = Textile City\
    ---TONGVAH = Tongva Hills\
    ---TONGVAV = Tongva Valley\
    ---VCANA = Vespucci Canals\
    ---VESP = Vespucci\
    ---VINE = Vinewood\
    ---WINDF = Ron Alternates Wind Farm\
    ---WVINE = West Vinewood\
    ---ZANCUDO = Zancudo River\
    ---ZP_ORT = Port of South Los Santos\
    ---ZQ_UAR = Davis Quartz\
    ---\
    ---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json
    ---@param zoneName string
    ---@return integer
    GET_ZONE_FROM_NAME_ID = function(zoneName) end,

    ---@param zoneId integer
    ---@return integer
    GET_ZONE_POPSCHEDULE = function(zoneId) end,

    ---AIRP = Los Santos International Airport\
    ---ALAMO = Alamo Sea\
    ---ALTA = Alta\
    ---ARMYB = Fort Zancudo\
    ---BANHAMC = Banham Canyon Dr\
    ---BANNING = Banning\
    ---BEACH = Vespucci Beach\
    ---BHAMCA = Banham Canyon\
    ---BRADP = Braddock Pass\
    ---BRADT = Braddock Tunnel\
    ---BURTON = Burton\
    ---CALAFB = Calafia Bridge\
    ---CANNY = Raton Canyon\
    ---CCREAK = Cassidy Creek\
    ---CHAMH = Chamberlain Hills\
    ---CHIL = Vinewood Hills\
    ---CHU = Chumash\
    ---CMSW = Chiliad Mountain State Wilderness\
    ---CYPRE = Cypress Flats\
    ---DAVIS = Davis\
    ---DELBE = Del Perro Beach\
    ---DELPE = Del Perro\
    ---DELSOL = La Puerta\
    ---DESRT = Grand Senora Desert\
    ---DOWNT = Downtown\
    ---DTVINE = Downtown Vinewood\
    ---EAST_V = East Vinewood\
    ---EBURO = El Burro Heights\
    ---ELGORL = El Gordo Lighthouse\
    ---ELYSIAN = Elysian Island\
    ---GALFISH = Galilee\
    ---GOLF = GWC and Golfing Society\
    ---GRAPES = Grapeseed\
    ---GREATC = Great Chaparral\
    ---HARMO = Harmony\
    ---HAWICK = Hawick\
    ---HORS = Vinewood Racetrack\
    ---HUMLAB = Humane Labs and Research\
    ---JAIL = Bolingbroke Penitentiary\
    ---KOREAT = Little Seoul\
    ---LACT = Land Act Reservoir\
    ---LAGO = Lago Zancudo\
    ---LDAM = Land Act Dam\
    ---LEGSQU = Legion Square\
    ---LMESA = La Mesa\
    ---LOSPUER = La Puerta\
    ---MIRR = Mirror Park\
    ---MORN = Morningwood\
    ---MOVIE = Richards Majestic\
    ---MTCHIL = Mount Chiliad\
    ---MTGORDO = Mount Gordo\
    ---MTJOSE = Mount Josiah\
    ---MURRI = Murrieta Heights\
    ---NCHU = North Chumash\
    ---NOOSE = N.O.O.S.E\
    ---OCEANA = Pacific Ocean\
    ---PALCOV = Paleto Cove\
    ---PALETO = Paleto Bay\
    ---PALFOR = Paleto Forest\
    ---PALHIGH = Palomino Highlands\
    ---PALMPOW = Palmer-Taylor Power Station\
    ---PBLUFF = Pacific Bluffs\
    ---PBOX = Pillbox Hill\
    ---PROCOB = Procopio Beach\
    ---RANCHO = Rancho\
    ---RGLEN = Richman Glen\
    ---RICHM = Richman\
    ---ROCKF = Rockford Hills\
    ---RTRAK = Redwood Lights Track\
    ---SANAND = San Andreas\
    ---SANCHIA = San Chianski Mountain Range\
    ---SANDY = Sandy Shores\
    ---SKID = Mission Row\
    ---SLAB = Stab City\
    ---STAD = Maze Bank Arena\
    ---STRAW = Strawberry\
    ---TATAMO = Tataviam Mountains\
    ---TERMINA = Terminal\
    ---TEXTI = Textile City\
    ---TONGVAH = Tongva Hills\
    ---TONGVAV = Tongva Valley\
    ---VCANA = Vespucci Canals\
    ---VESP = Vespucci\
    ---VINE = Vinewood\
    ---WINDF = Ron Alternates Wind Farm\
    ---WVINE = West Vinewood\
    ---ZANCUDO = Zancudo River\
    ---ZP_ORT = Port of South Los Santos\
    ---ZQ_UAR = Davis Quartz\
    ---\
    ---Full list of zones by DurtyFree: https://github.com/DurtyFree/gta-v-data-dumps/blob/master/zones.json
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return string
    GET_NAME_OF_ZONE = function(x, y, z) end,

    ---@param zoneId integer
    ---@param toggle BOOL
    SET_ZONE_ENABLED = function(zoneId, toggle) end,

    ---cellphone range 1- 5 used for signal bar in iFruit phone
    ---@param zoneId integer
    ---@return integer
    GET_ZONE_SCUMMINESS = function(zoneId) end,

    ---Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.\
    ---\
    ---Modified example from "am_imp_exp.c4", line 6406:\
    ---/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));\
    ---etc.\
    ---*/\
    ---ZONE::OVERRIDE_POPSCHEDULE_VEHICLE_MODEL(popSchedules[index], vehicleHash);\
    ---STREAMING::REQUEST_MODEL(vehicleHash);
    ---@param scheduleId integer
    ---@param vehicleHash Hash
    OVERRIDE_POPSCHEDULE_VEHICLE_MODEL = function(scheduleId, vehicleHash) end,

    ---Only used once in the decompiled scripts. Seems to be related to scripted vehicle generators.\
    ---\
    ---Modified example from "am_imp_exp.c4", line 6418:\
    ---/* popSchedules[0] = ZONE::GET_ZONE_POPSCHEDULE(ZONE::GET_ZONE_AT_COORDS(891.3, 807.9, 188.1));\
    ---etc.\
    ---*/\
    ---STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(vehicleHash);\
    ---ZONE::CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL(popSchedules[index]);
    ---@param scheduleId integer
    CLEAR_POPSCHEDULE_OVERRIDE_VEHICLE_MODEL = function(scheduleId) end,

    ---Returns a hash representing which part of the map the given coords are located.\
    ---\
    ---Possible return values:\
    ---(Hash of) city -> -289320599\
    ---(Hash of) countryside -> 2072609373\
    ---\
    ---C# Example :\
    ---\
    ---Ped player = Game.Player.Character;\
    ---Hash h = Function.Call<Hash>(Hash.GET_HASH_OF_MAP_AREA_AT_COORDS, player.Position.X, player.Position.Y, player.Position.Z);
    ---@param x number
    ---@param y number
    ---@param z number
    ---@return Hash
    GET_HASH_OF_MAP_AREA_AT_COORDS = function(x, y, z) end
}