"""
# This file is auto-generated, do not modify it.
__meta__ = {"target": "v0.9.10b0", "system": "Linux"}
"""

from .SDL import * # type: ignore
from . import raw, SDL_POINTER

import ctypes, typing

LP_SDL_GPUSamplerCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUSamplerCreateInfo]
LP_SDL_TLSID: typing.TypeAlias = SDL_POINTER[SDL_TLSID]
LP_NET_Datagram: typing.TypeAlias = SDL_POINTER[NET_Datagram]
LP_SDL_Camera: typing.TypeAlias = SDL_POINTER[SDL_Camera]
LP_SDL_DateTime: typing.TypeAlias = SDL_POINTER[SDL_DateTime]
LP_SDL_PixelFormatDetails: typing.TypeAlias = SDL_POINTER[SDL_PixelFormatDetails]
LP_SDL_ShaderCross_GraphicsShaderResourceInfo: typing.TypeAlias = SDL_POINTER[SDL_ShaderCross_GraphicsShaderResourceInfo]
LP_LP_SDL_CameraSpec: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_CameraSpec]]
LP_NET_Address: typing.TypeAlias = SDL_POINTER[NET_Address]
LP_LP_SDL_GPUBuffer: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_GPUBuffer]]
LP_SDL_AsyncIO: typing.TypeAlias = SDL_POINTER[SDL_AsyncIO]
LP_LP_SDL_Surface: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_Surface]]
LP_SDL_Event: typing.TypeAlias = SDL_POINTER[SDL_Event]
LP_SDL_GPUShader: typing.TypeAlias = SDL_POINTER[SDL_GPUShader]
LP_IMG_Animation: typing.TypeAlias = SDL_POINTER[IMG_Animation]
LP_c_void_p: typing.TypeAlias = SDL_POINTER[ctypes.c_void_p]
LP_SDL_AtomicInt: typing.TypeAlias = SDL_POINTER[SDL_AtomicInt]
LP_SDL_AudioStream: typing.TypeAlias = SDL_POINTER[SDL_AudioStream]
LP_SDL_GPUViewport: typing.TypeAlias = SDL_POINTER[SDL_GPUViewport]
LP_SDL_hid_device_info: typing.TypeAlias = SDL_POINTER[SDL_hid_device_info]
LP_SDL_hid_device: typing.TypeAlias = SDL_POINTER[SDL_hid_device]
LP_SDL_PathInfo: typing.TypeAlias = SDL_POINTER[SDL_PathInfo]
LP_SDL_GPUBufferRegion: typing.TypeAlias = SDL_POINTER[SDL_GPUBufferRegion]
LP_SDL_MouseID: typing.TypeAlias = SDL_POINTER[SDL_MouseID]
LP_c_int64: typing.TypeAlias = SDL_POINTER[ctypes.c_int64]
LP_MIX_Group: typing.TypeAlias = SDL_POINTER[MIX_Group]
LP_SDL_GPUDevice: typing.TypeAlias = SDL_POINTER[SDL_GPUDevice]
LP_SDL_calloc_func: typing.TypeAlias = SDL_POINTER[SDL_calloc_func]
LP_SDL_Rect: typing.TypeAlias = SDL_POINTER[SDL_Rect]
LP_SDL_GPUStorageBufferReadWriteBinding: typing.TypeAlias = SDL_POINTER[SDL_GPUStorageBufferReadWriteBinding]
LP_LP_SDL_DisplayMode: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_DisplayMode]]
LP_SDL_Environment: typing.TypeAlias = SDL_POINTER[SDL_Environment]
LP_TTF_Text: typing.TypeAlias = SDL_POINTER[TTF_Text]
LP_SDL_GPUFence: typing.TypeAlias = SDL_POINTER[SDL_GPUFence]
LP_SDL_GPUTextureCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUTextureCreateInfo]
LP_SDL_Keymod: typing.TypeAlias = SDL_POINTER[SDL_Keymod]
LP_SDL_GPUCopyPass: typing.TypeAlias = SDL_POINTER[SDL_GPUCopyPass]
LP_SDL_GPUBuffer: typing.TypeAlias = SDL_POINTER[SDL_GPUBuffer]
LP_SDL_GPUTextureRegion: typing.TypeAlias = SDL_POINTER[SDL_GPUTextureRegion]
LP_SDL_KeyboardID: typing.TypeAlias = SDL_POINTER[SDL_KeyboardID]
LP_SDL_InitState: typing.TypeAlias = SDL_POINTER[SDL_InitState]
LP_SDL_ShaderCross_GraphicsShaderMetadata: typing.TypeAlias = SDL_POINTER[SDL_ShaderCross_GraphicsShaderMetadata]
LP_MIX_Mixer: typing.TypeAlias = SDL_POINTER[MIX_Mixer]
LP_SDL_AssertData: typing.TypeAlias = SDL_POINTER[SDL_AssertData]
LP_c_double: typing.TypeAlias = SDL_POINTER[ctypes.c_double]
LP_SDL_AtomicU32: typing.TypeAlias = SDL_POINTER[SDL_AtomicU32]
LP_SDL_GPUBufferCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUBufferCreateInfo]
LP_SDL_GPUTextureTransferInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUTextureTransferInfo]
LP_SDL_Color: typing.TypeAlias = SDL_POINTER[SDL_Color]
LP_SDL_DateFormat: typing.TypeAlias = SDL_POINTER[SDL_DateFormat]
LP_LP_c_uint8: typing.TypeAlias = SDL_POINTER[SDL_POINTER[ctypes.c_uint8]]
LP_SDL_Cursor: typing.TypeAlias = SDL_POINTER[SDL_Cursor]
LP_LP_TTF_SubString: typing.TypeAlias = SDL_POINTER[SDL_POINTER[TTF_SubString]]
LP_VkAllocationCallbacks: typing.TypeAlias = SDL_POINTER[VkAllocationCallbacks]
LP_SDL_Time: typing.TypeAlias = SDL_POINTER[SDL_Time]
LP_SDL_GPUBlitInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUBlitInfo]
LP_SDL_SensorID: typing.TypeAlias = SDL_POINTER[SDL_SensorID]
LP_SDL_realloc_func: typing.TypeAlias = SDL_POINTER[SDL_realloc_func]
LP_SDL_LogOutputFunction: typing.TypeAlias = SDL_POINTER[SDL_LogOutputFunction]
LP_SDL_GPUBufferBinding: typing.TypeAlias = SDL_POINTER[SDL_GPUBufferBinding]
LP_LP_SDL_GPUFence: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_GPUFence]]
LP_SDL_SharedObject: typing.TypeAlias = SDL_POINTER[SDL_SharedObject]
LP_SDL_DialogFileFilter: typing.TypeAlias = SDL_POINTER[SDL_DialogFileFilter]
LP_c_int: typing.TypeAlias = SDL_POINTER[ctypes.c_int]
LP_TTF_GPUAtlasDrawSequence: typing.TypeAlias = SDL_POINTER[TTF_GPUAtlasDrawSequence]
LP_c_uint8: typing.TypeAlias = SDL_POINTER[ctypes.c_uint8]
LP_SDL_FRect: typing.TypeAlias = SDL_POINTER[SDL_FRect]
LP_RTF_FontEngine: typing.TypeAlias = SDL_POINTER[RTF_FontEngine]
LP_SDL_ShaderCross_HLSL_Info: typing.TypeAlias = SDL_POINTER[SDL_ShaderCross_HLSL_Info]
LP_SDL_StorageInterface: typing.TypeAlias = SDL_POINTER[SDL_StorageInterface]
LP_SDL_GPUCommandBuffer: typing.TypeAlias = SDL_POINTER[SDL_GPUCommandBuffer]
LP_LP_MIX_Track: typing.TypeAlias = SDL_POINTER[SDL_POINTER[MIX_Track]]
LP_c_float: typing.TypeAlias = SDL_POINTER[ctypes.c_float]
LP_SDL_CursorFrameInfo: typing.TypeAlias = SDL_POINTER[SDL_CursorFrameInfo]
LP_SDL_GPUTexture: typing.TypeAlias = SDL_POINTER[SDL_GPUTexture]
LP_SDL_IOStream: typing.TypeAlias = SDL_POINTER[SDL_IOStream]
LP_SDL_Renderer: typing.TypeAlias = SDL_POINTER[SDL_Renderer]
LP_c_int8: typing.TypeAlias = SDL_POINTER[ctypes.c_int8]
LP_SDL_AsyncIOOutcome: typing.TypeAlias = SDL_POINTER[SDL_AsyncIOOutcome]
LP_SDL_MessageBoxData: typing.TypeAlias = SDL_POINTER[SDL_MessageBoxData]
LP_LP_SDL_Window: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_Window]]
LP_SDL_GPUComputePass: typing.TypeAlias = SDL_POINTER[SDL_GPUComputePass]
LP_SDL_Gamepad: typing.TypeAlias = SDL_POINTER[SDL_Gamepad]
LP_SDL_Haptic: typing.TypeAlias = SDL_POINTER[SDL_Haptic]
LP_MIX_Audio: typing.TypeAlias = SDL_POINTER[MIX_Audio]
LP_c_uint64: typing.TypeAlias = SDL_POINTER[ctypes.c_uint64]
LP_SDL_GPUDepthStencilTargetInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUDepthStencilTargetInfo]
LP_SDL_Texture: typing.TypeAlias = SDL_POINTER[SDL_Texture]
LP_c_int32: typing.TypeAlias = SDL_POINTER[ctypes.c_int32]
LP_SDL_GPURenderPass: typing.TypeAlias = SDL_POINTER[SDL_GPURenderPass]
LP_SDL_Mutex: typing.TypeAlias = SDL_POINTER[SDL_Mutex]
LP_SDL_GPUComputePipelineCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUComputePipelineCreateInfo]
LP_SDL_Process: typing.TypeAlias = SDL_POINTER[SDL_Process]
LP_SDL_GPUTextureLocation: typing.TypeAlias = SDL_POINTER[SDL_GPUTextureLocation]
LP_SDL_Surface: typing.TypeAlias = SDL_POINTER[SDL_Surface]
LP_SDL_Joystick: typing.TypeAlias = SDL_POINTER[SDL_Joystick]
LP_SDL_AudioSpec: typing.TypeAlias = SDL_POINTER[SDL_AudioSpec]
LP_VkSurfaceKHR: typing.TypeAlias = SDL_POINTER[VkSurfaceKHR]
LP_SDL_Tray: typing.TypeAlias = SDL_POINTER[SDL_Tray]
LP_LP_NET_Datagram: typing.TypeAlias = SDL_POINTER[SDL_POINTER[NET_Datagram]]
LP_SDL_IOStreamInterface: typing.TypeAlias = SDL_POINTER[SDL_IOStreamInterface]
LP_SDL_GPUTransferBuffer: typing.TypeAlias = SDL_POINTER[SDL_GPUTransferBuffer]
LP_SDL_Sensor: typing.TypeAlias = SDL_POINTER[SDL_Sensor]
LP_c_char_p: typing.TypeAlias = SDL_POINTER[ctypes.c_char_p]
LP_c_uint16: typing.TypeAlias = SDL_POINTER[ctypes.c_uint16]
LP_SDL_GPUSampler: typing.TypeAlias = SDL_POINTER[SDL_GPUSampler]
LP_MIX_Point3D: typing.TypeAlias = SDL_POINTER[MIX_Point3D]
LP_LP_SDL_GPUTexture: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_GPUTexture]]
LP_SDL_GPURenderState: typing.TypeAlias = SDL_POINTER[SDL_GPURenderState]
LP_SDL_DisplayMode: typing.TypeAlias = SDL_POINTER[SDL_DisplayMode]
LP_SDL_free_func: typing.TypeAlias = SDL_POINTER[SDL_free_func]
LP_SDL_RWLock: typing.TypeAlias = SDL_POINTER[SDL_RWLock]
LP_SDL_TimeFormat: typing.TypeAlias = SDL_POINTER[SDL_TimeFormat]
LP_NET_Server: typing.TypeAlias = SDL_POINTER[NET_Server]
LP_LP_SDL_Renderer: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_Renderer]]
LP_SDL_GPUColorTargetInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUColorTargetInfo]
LP_SDL_GPUTextureSamplerBinding: typing.TypeAlias = SDL_POINTER[SDL_GPUTextureSamplerBinding]
LP_SDL_Semaphore: typing.TypeAlias = SDL_POINTER[SDL_Semaphore]
LP_RTF_Context: typing.TypeAlias = SDL_POINTER[RTF_Context]
LP_SDL_GPUTransferBufferLocation: typing.TypeAlias = SDL_POINTER[SDL_GPUTransferBufferLocation]
LP_SDL_GPUShaderCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUShaderCreateInfo]
LP_LP_SDL_Locale: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_Locale]]
LP_TTF_TextEngine: typing.TypeAlias = SDL_POINTER[TTF_TextEngine]
LP_SDL_FPoint: typing.TypeAlias = SDL_POINTER[SDL_FPoint]
LP_LP_NET_StreamSocket: typing.TypeAlias = SDL_POINTER[SDL_POINTER[NET_StreamSocket]]
LP_SDL_FColor: typing.TypeAlias = SDL_POINTER[SDL_FColor]
LP_SDL_GPUGraphicsPipelineCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUGraphicsPipelineCreateInfo]
LP_SDL_TouchID: typing.TypeAlias = SDL_POINTER[SDL_TouchID]
LP_SDL_AudioDeviceID: typing.TypeAlias = SDL_POINTER[SDL_AudioDeviceID]
LP_SDL_BlendMode: typing.TypeAlias = SDL_POINTER[SDL_BlendMode]
LP_SDL_JoystickID: typing.TypeAlias = SDL_POINTER[SDL_JoystickID]
LP_SDL_malloc_func: typing.TypeAlias = SDL_POINTER[SDL_malloc_func]
LP_SDL_Vertex: typing.TypeAlias = SDL_POINTER[SDL_Vertex]
LP_SDL_GPUBufferLocation: typing.TypeAlias = SDL_POINTER[SDL_GPUBufferLocation]
LP_SDL_TrayEntry: typing.TypeAlias = SDL_POINTER[SDL_TrayEntry]
LP_SDL_SpinLock: typing.TypeAlias = SDL_POINTER[SDL_SpinLock]
LP_c_int16: typing.TypeAlias = SDL_POINTER[ctypes.c_int16]
LP_SDL_GPUComputePipeline: typing.TypeAlias = SDL_POINTER[SDL_GPUComputePipeline]
LP_MIX_Track: typing.TypeAlias = SDL_POINTER[MIX_Track]
LP_SDL_GPUTransferBufferCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPUTransferBufferCreateInfo]
LP_SDL_GPUGraphicsPipeline: typing.TypeAlias = SDL_POINTER[SDL_GPUGraphicsPipeline]
LP_LP_NET_Address: typing.TypeAlias = SDL_POINTER[SDL_POINTER[NET_Address]]
LP_LP_SDL_GamepadBinding: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_GamepadBinding]]
LP_NET_DatagramSocket: typing.TypeAlias = SDL_POINTER[NET_DatagramSocket]
LP_SDL_GPURenderStateCreateInfo: typing.TypeAlias = SDL_POINTER[SDL_GPURenderStateCreateInfo]
LP_SDL_Condition: typing.TypeAlias = SDL_POINTER[SDL_Condition]
LP_MIX_StereoGains: typing.TypeAlias = SDL_POINTER[MIX_StereoGains]
LP_SDL_ShaderCross_ComputePipelineMetadata: typing.TypeAlias = SDL_POINTER[SDL_ShaderCross_ComputePipelineMetadata]
LP_SDL_TrayMenu: typing.TypeAlias = SDL_POINTER[SDL_TrayMenu]
LP_SDL_Thread: typing.TypeAlias = SDL_POINTER[SDL_Thread]
LP_c_uint32: typing.TypeAlias = SDL_POINTER[ctypes.c_uint32]
LP_SDL_CameraSpec: typing.TypeAlias = SDL_POINTER[SDL_CameraSpec]
LP_SDL_AsyncIOQueue: typing.TypeAlias = SDL_POINTER[SDL_AsyncIOQueue]
LP_SDL_CameraID: typing.TypeAlias = SDL_POINTER[SDL_CameraID]
LP_SDL_RendererLogicalPresentation: typing.TypeAlias = SDL_POINTER[SDL_RendererLogicalPresentation]
LP_SDL_ScaleMode: typing.TypeAlias = SDL_POINTER[SDL_ScaleMode]
LP_SDL_EventFilter: typing.TypeAlias = SDL_POINTER[SDL_EventFilter]
LP_LP_SDL_TrayEntry: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_TrayEntry]]
LP_SDL_Palette: typing.TypeAlias = SDL_POINTER[SDL_Palette]
LP_SDL_DisplayID: typing.TypeAlias = SDL_POINTER[SDL_DisplayID]
LP_SDL_HapticID: typing.TypeAlias = SDL_POINTER[SDL_HapticID]
LP_SDL_HapticEffect: typing.TypeAlias = SDL_POINTER[SDL_HapticEffect]
LP_TTF_Font: typing.TypeAlias = SDL_POINTER[TTF_Font]
LP_SDL_ShaderCross_SPIRV_Info: typing.TypeAlias = SDL_POINTER[SDL_ShaderCross_SPIRV_Info]
LP_SDL_TextureAddressMode: typing.TypeAlias = SDL_POINTER[SDL_TextureAddressMode]
LP_NET_StreamSocket: typing.TypeAlias = SDL_POINTER[NET_StreamSocket]
LP_c_bool: typing.TypeAlias = SDL_POINTER[ctypes.c_bool]
LP_SDL_VirtualJoystickDesc: typing.TypeAlias = SDL_POINTER[SDL_VirtualJoystickDesc]
LP_SDL_GPUStorageTextureReadWriteBinding: typing.TypeAlias = SDL_POINTER[SDL_GPUStorageTextureReadWriteBinding]
LP_c_size_t: typing.TypeAlias = SDL_POINTER[ctypes.c_size_t]
LP_SDL_Storage: typing.TypeAlias = SDL_POINTER[SDL_Storage]
LP_LP_SDL_Finger: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_Finger]]
LP_c_wchar_p: typing.TypeAlias = SDL_POINTER[ctypes.c_wchar_p]
LP_SDL_Point: typing.TypeAlias = SDL_POINTER[SDL_Point]
LP_MIX_AudioDecoder: typing.TypeAlias = SDL_POINTER[MIX_AudioDecoder]
LP_TTF_ImageType: typing.TypeAlias = SDL_POINTER[TTF_ImageType]
LP_LP_SDL_AudioStream: typing.TypeAlias = SDL_POINTER[SDL_POINTER[SDL_AudioStream]]
LP_c_ubyte: typing.TypeAlias = SDL_POINTER[ctypes.c_ubyte]
LP_SDL_Window: typing.TypeAlias = SDL_POINTER[SDL_Window]
LP_TTF_SubString: typing.TypeAlias = SDL_POINTER[TTF_SubString]

# libSDL3.so implementation.

def SDL_ReportAssertion(data: LP_SDL_AssertData, func: ctypes.c_char_p, file: ctypes.c_char_p, line: ctypes.c_int) -> SDL_AssertState:
    """
    Never call this directly.

    https://wiki.libsdl.org/SDL3/SDL_ReportAssertion
    """
    return raw.SDL_ReportAssertion(data, func, file, line)

def SDL_SetAssertionHandler(handler: SDL_AssertionHandler, userdata: ctypes.c_void_p) -> None:
    """
    Set an application-defined assertion handler.

    https://wiki.libsdl.org/SDL3/SDL_SetAssertionHandler
    """
    return raw.SDL_SetAssertionHandler(handler, userdata)

def SDL_GetDefaultAssertionHandler() -> SDL_AssertionHandler:
    """
    Get the default assertion handler.

    https://wiki.libsdl.org/SDL3/SDL_GetDefaultAssertionHandler
    """
    return raw.SDL_GetDefaultAssertionHandler()

def SDL_GetAssertionHandler(puserdata: LP_c_void_p) -> SDL_AssertionHandler:
    """
    Get the current assertion handler.

    https://wiki.libsdl.org/SDL3/SDL_GetAssertionHandler
    """
    return raw.SDL_GetAssertionHandler(puserdata)

def SDL_GetAssertionReport() -> LP_SDL_AssertData:
    """
    Get a list of all assertion failures.

    https://wiki.libsdl.org/SDL3/SDL_GetAssertionReport
    """
    return raw.SDL_GetAssertionReport()

def SDL_ResetAssertionReport() -> None:
    """
    Clear the list of all assertion failures.

    https://wiki.libsdl.org/SDL3/SDL_ResetAssertionReport
    """
    return raw.SDL_ResetAssertionReport()

def SDL_AsyncIOFromFile(file: ctypes.c_char_p, mode: ctypes.c_char_p) -> LP_SDL_AsyncIO:
    """
    Use this function to create a new [SDL_AsyncIO](https://wiki.libsdl.org/SDL3/SDL_AsyncIO) object for reading from and/or writing to a named file.

    https://wiki.libsdl.org/SDL3/SDL_AsyncIOFromFile
    """
    return raw.SDL_AsyncIOFromFile(file, mode)

def SDL_GetAsyncIOSize(asyncio: LP_SDL_AsyncIO) -> ctypes.c_int64:
    """
    Use this function to get the size of the data stream in an [SDL_AsyncIO](https://wiki.libsdl.org/SDL3/SDL_AsyncIO).

    https://wiki.libsdl.org/SDL3/SDL_GetAsyncIOSize
    """
    return raw.SDL_GetAsyncIOSize(asyncio)

def SDL_ReadAsyncIO(asyncio: LP_SDL_AsyncIO, ptr: ctypes.c_void_p, offset: ctypes.c_uint64, size: ctypes.c_uint64, queue: LP_SDL_AsyncIOQueue, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Start an async read.

    https://wiki.libsdl.org/SDL3/SDL_ReadAsyncIO
    """
    return raw.SDL_ReadAsyncIO(asyncio, ptr, offset, size, queue, userdata)

def SDL_WriteAsyncIO(asyncio: LP_SDL_AsyncIO, ptr: ctypes.c_void_p, offset: ctypes.c_uint64, size: ctypes.c_uint64, queue: LP_SDL_AsyncIOQueue, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Start an async write.

    https://wiki.libsdl.org/SDL3/SDL_WriteAsyncIO
    """
    return raw.SDL_WriteAsyncIO(asyncio, ptr, offset, size, queue, userdata)

def SDL_CloseAsyncIO(asyncio: LP_SDL_AsyncIO, flush: ctypes.c_bool, queue: LP_SDL_AsyncIOQueue, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Close and free any allocated resources for an async I/O object.

    https://wiki.libsdl.org/SDL3/SDL_CloseAsyncIO
    """
    return raw.SDL_CloseAsyncIO(asyncio, flush, queue, userdata)

def SDL_CreateAsyncIOQueue() -> LP_SDL_AsyncIOQueue:
    """
    Create a task queue for tracking multiple I/O operations.

    https://wiki.libsdl.org/SDL3/SDL_CreateAsyncIOQueue
    """
    return raw.SDL_CreateAsyncIOQueue()

def SDL_DestroyAsyncIOQueue(queue: LP_SDL_AsyncIOQueue) -> None:
    """
    Destroy a previously-created async I/O task queue.

    https://wiki.libsdl.org/SDL3/SDL_DestroyAsyncIOQueue
    """
    return raw.SDL_DestroyAsyncIOQueue(queue)

def SDL_GetAsyncIOResult(queue: LP_SDL_AsyncIOQueue, outcome: LP_SDL_AsyncIOOutcome) -> ctypes.c_bool:
    """
    Query an async I/O task queue for completed tasks.

    https://wiki.libsdl.org/SDL3/SDL_GetAsyncIOResult
    """
    return raw.SDL_GetAsyncIOResult(queue, outcome)

def SDL_WaitAsyncIOResult(queue: LP_SDL_AsyncIOQueue, outcome: LP_SDL_AsyncIOOutcome, timeoutMS: ctypes.c_int32) -> ctypes.c_bool:
    """
    Block until an async I/O task queue has a completed task.

    https://wiki.libsdl.org/SDL3/SDL_WaitAsyncIOResult
    """
    return raw.SDL_WaitAsyncIOResult(queue, outcome, timeoutMS)

def SDL_SignalAsyncIOQueue(queue: LP_SDL_AsyncIOQueue) -> None:
    """
    Wake up any threads that are blocking in [SDL_WaitAsyncIOResult](https://wiki.libsdl.org/SDL3/SDL_WaitAsyncIOResult)().

    https://wiki.libsdl.org/SDL3/SDL_SignalAsyncIOQueue
    """
    return raw.SDL_SignalAsyncIOQueue(queue)

def SDL_LoadFileAsync(file: ctypes.c_char_p, queue: LP_SDL_AsyncIOQueue, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Load all the data from a file path, asynchronously.

    https://wiki.libsdl.org/SDL3/SDL_LoadFileAsync
    """
    return raw.SDL_LoadFileAsync(file, queue, userdata)

def SDL_TryLockSpinlock(lock: LP_SDL_SpinLock) -> ctypes.c_bool:
    """
    Try to lock a spin lock by setting it to a non-zero value.

    https://wiki.libsdl.org/SDL3/SDL_TryLockSpinlock
    """
    return raw.SDL_TryLockSpinlock(lock)

def SDL_LockSpinlock(lock: LP_SDL_SpinLock) -> None:
    """
    Lock a spin lock by setting it to a non-zero value.

    https://wiki.libsdl.org/SDL3/SDL_LockSpinlock
    """
    return raw.SDL_LockSpinlock(lock)

def SDL_UnlockSpinlock(lock: LP_SDL_SpinLock) -> None:
    """
    Unlock a spin lock by setting it to 0.

    https://wiki.libsdl.org/SDL3/SDL_UnlockSpinlock
    """
    return raw.SDL_UnlockSpinlock(lock)

def SDL_MemoryBarrierReleaseFunction() -> None:
    """
    Insert a memory release barrier (function version).

    https://wiki.libsdl.org/SDL3/SDL_MemoryBarrierReleaseFunction
    """
    return raw.SDL_MemoryBarrierReleaseFunction()

def SDL_MemoryBarrierAcquireFunction() -> None:
    """
    Insert a memory acquire barrier (function version).

    https://wiki.libsdl.org/SDL3/SDL_MemoryBarrierAcquireFunction
    """
    return raw.SDL_MemoryBarrierAcquireFunction()

def SDL_CompareAndSwapAtomicInt(a: LP_SDL_AtomicInt, oldval: ctypes.c_int, newval: ctypes.c_int) -> ctypes.c_bool:
    """
    Set an atomic variable to a new value if it is currently an old value.

    https://wiki.libsdl.org/SDL3/SDL_CompareAndSwapAtomicInt
    """
    return raw.SDL_CompareAndSwapAtomicInt(a, oldval, newval)

def SDL_SetAtomicInt(a: LP_SDL_AtomicInt, v: ctypes.c_int) -> ctypes.c_int:
    """
    Set an atomic variable to a value.

    https://wiki.libsdl.org/SDL3/SDL_SetAtomicInt
    """
    return raw.SDL_SetAtomicInt(a, v)

def SDL_GetAtomicInt(a: LP_SDL_AtomicInt) -> ctypes.c_int:
    """
    Get the value of an atomic variable.

    https://wiki.libsdl.org/SDL3/SDL_GetAtomicInt
    """
    return raw.SDL_GetAtomicInt(a)

def SDL_AddAtomicInt(a: LP_SDL_AtomicInt, v: ctypes.c_int) -> ctypes.c_int:
    """
    Add to an atomic variable.

    https://wiki.libsdl.org/SDL3/SDL_AddAtomicInt
    """
    return raw.SDL_AddAtomicInt(a, v)

def SDL_CompareAndSwapAtomicU32(a: LP_SDL_AtomicU32, oldval: ctypes.c_uint32, newval: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Set an atomic variable to a new value if it is currently an old value.

    https://wiki.libsdl.org/SDL3/SDL_CompareAndSwapAtomicU32
    """
    return raw.SDL_CompareAndSwapAtomicU32(a, oldval, newval)

def SDL_SetAtomicU32(a: LP_SDL_AtomicU32, v: ctypes.c_uint32) -> ctypes.c_uint32:
    """
    Set an atomic variable to a value.

    https://wiki.libsdl.org/SDL3/SDL_SetAtomicU32
    """
    return raw.SDL_SetAtomicU32(a, v)

def SDL_GetAtomicU32(a: LP_SDL_AtomicU32) -> ctypes.c_uint32:
    """
    Get the value of an atomic variable.

    https://wiki.libsdl.org/SDL3/SDL_GetAtomicU32
    """
    return raw.SDL_GetAtomicU32(a)

def SDL_AddAtomicU32(a: LP_SDL_AtomicU32, v: ctypes.c_int) -> ctypes.c_uint32:
    """
    Add to an atomic variable.

    https://wiki.libsdl.org/SDL3/SDL_AddAtomicU32
    """
    return raw.SDL_AddAtomicU32(a, v)

def SDL_CompareAndSwapAtomicPointer(a: LP_c_void_p, oldval: ctypes.c_void_p, newval: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a pointer to a new value if it is currently an old value.

    https://wiki.libsdl.org/SDL3/SDL_CompareAndSwapAtomicPointer
    """
    return raw.SDL_CompareAndSwapAtomicPointer(a, oldval, newval)

def SDL_SetAtomicPointer(a: LP_c_void_p, v: ctypes.c_void_p) -> ctypes.c_void_p:
    """
    Set a pointer to a value atomically.

    https://wiki.libsdl.org/SDL3/SDL_SetAtomicPointer
    """
    return raw.SDL_SetAtomicPointer(a, v)

def SDL_GetAtomicPointer(a: LP_c_void_p) -> ctypes.c_void_p:
    """
    Get the value of a pointer atomically.

    https://wiki.libsdl.org/SDL3/SDL_GetAtomicPointer
    """
    return raw.SDL_GetAtomicPointer(a)

def SDL_GetGlobalProperties() -> SDL_PropertiesID:
    """
    Get the global SDL properties.

    https://wiki.libsdl.org/SDL3/SDL_GetGlobalProperties
    """
    return raw.SDL_GetGlobalProperties()

def SDL_CreateProperties() -> SDL_PropertiesID:
    """
    Create a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_CreateProperties
    """
    return raw.SDL_CreateProperties()

def SDL_CopyProperties(src: SDL_PropertiesID, dst: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Copy a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_CopyProperties
    """
    return raw.SDL_CopyProperties(src, dst)

def SDL_LockProperties(props: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Lock a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_LockProperties
    """
    return raw.SDL_LockProperties(props)

def SDL_UnlockProperties(props: SDL_PropertiesID) -> None:
    """
    Unlock a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_UnlockProperties
    """
    return raw.SDL_UnlockProperties(props)

def SDL_SetPointerPropertyWithCleanup(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_void_p, cleanup: SDL_CleanupPropertyCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a pointer property in a group of properties with a cleanup function that is called when the property is deleted.

    https://wiki.libsdl.org/SDL3/SDL_SetPointerPropertyWithCleanup
    """
    return raw.SDL_SetPointerPropertyWithCleanup(props, name, value, cleanup, userdata)

def SDL_SetPointerProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a pointer property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetPointerProperty
    """
    return raw.SDL_SetPointerProperty(props, name, value)

def SDL_SetStringProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set a string property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetStringProperty
    """
    return raw.SDL_SetStringProperty(props, name, value)

def SDL_SetNumberProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_int64) -> ctypes.c_bool:
    """
    Set an integer property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetNumberProperty
    """
    return raw.SDL_SetNumberProperty(props, name, value)

def SDL_SetFloatProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_float) -> ctypes.c_bool:
    """
    Set a floating point property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetFloatProperty
    """
    return raw.SDL_SetFloatProperty(props, name, value)

def SDL_SetBooleanProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, value: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set a boolean property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetBooleanProperty
    """
    return raw.SDL_SetBooleanProperty(props, name, value)

def SDL_HasProperty(props: SDL_PropertiesID, name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Return whether a property exists in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_HasProperty
    """
    return raw.SDL_HasProperty(props, name)

def SDL_GetPropertyType(props: SDL_PropertiesID, name: ctypes.c_char_p) -> SDL_PropertyType:
    """
    Get the type of a property in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetPropertyType
    """
    return raw.SDL_GetPropertyType(props, name)

def SDL_GetPointerProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, default_value: ctypes.c_void_p) -> ctypes.c_void_p:
    """
    Get a pointer property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetPointerProperty
    """
    return raw.SDL_GetPointerProperty(props, name, default_value)

def SDL_GetStringProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, default_value: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get a string property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetStringProperty
    """
    return raw.SDL_GetStringProperty(props, name, default_value)

def SDL_GetNumberProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, default_value: ctypes.c_int64) -> ctypes.c_int64:
    """
    Get a number property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetNumberProperty
    """
    return raw.SDL_GetNumberProperty(props, name, default_value)

def SDL_GetFloatProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, default_value: ctypes.c_float) -> ctypes.c_float:
    """
    Get a floating point property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetFloatProperty
    """
    return raw.SDL_GetFloatProperty(props, name, default_value)

def SDL_GetBooleanProperty(props: SDL_PropertiesID, name: ctypes.c_char_p, default_value: ctypes.c_bool) -> ctypes.c_bool:
    """
    Get a boolean property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_GetBooleanProperty
    """
    return raw.SDL_GetBooleanProperty(props, name, default_value)

def SDL_ClearProperty(props: SDL_PropertiesID, name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Clear a property from a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_ClearProperty
    """
    return raw.SDL_ClearProperty(props, name)

def SDL_EnumerateProperties(props: SDL_PropertiesID, callback: SDL_EnumeratePropertiesCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Enumerate the properties contained in a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_EnumerateProperties
    """
    return raw.SDL_EnumerateProperties(props, callback, userdata)

def SDL_DestroyProperties(props: SDL_PropertiesID) -> None:
    """
    Destroy a group of properties.

    https://wiki.libsdl.org/SDL3/SDL_DestroyProperties
    """
    return raw.SDL_DestroyProperties(props)

def SDL_IOFromFile(file: ctypes.c_char_p, mode: ctypes.c_char_p) -> LP_SDL_IOStream:
    """
    Use this function to create a new [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) structure for reading from and/or writing to a named file.

    https://wiki.libsdl.org/SDL3/SDL_IOFromFile
    """
    return raw.SDL_IOFromFile(file, mode)

def SDL_IOFromMem(mem: ctypes.c_void_p, size: ctypes.c_size_t) -> LP_SDL_IOStream:
    """
    Use this function to prepare a read-write memory buffer for use with [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_IOFromMem
    """
    return raw.SDL_IOFromMem(mem, size)

def SDL_IOFromConstMem(mem: ctypes.c_void_p, size: ctypes.c_size_t) -> LP_SDL_IOStream:
    """
    Use this function to prepare a read-only memory buffer for use with [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_IOFromConstMem
    """
    return raw.SDL_IOFromConstMem(mem, size)

def SDL_IOFromDynamicMem() -> LP_SDL_IOStream:
    """
    Use this function to create an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) that is backed by dynamically allocated memory.

    https://wiki.libsdl.org/SDL3/SDL_IOFromDynamicMem
    """
    return raw.SDL_IOFromDynamicMem()

def SDL_OpenIO(iface: LP_SDL_IOStreamInterface, userdata: ctypes.c_void_p) -> LP_SDL_IOStream:
    """
    Create a custom [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_OpenIO
    """
    return raw.SDL_OpenIO(iface, userdata)

def SDL_CloseIO(context: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Close and free an allocated [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) structure.

    https://wiki.libsdl.org/SDL3/SDL_CloseIO
    """
    return raw.SDL_CloseIO(context)

def SDL_GetIOProperties(context: LP_SDL_IOStream) -> SDL_PropertiesID:
    """
    Get the properties associated with an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_GetIOProperties
    """
    return raw.SDL_GetIOProperties(context)

def SDL_GetIOStatus(context: LP_SDL_IOStream) -> SDL_IOStatus:
    """
    Query the stream status of an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_GetIOStatus
    """
    return raw.SDL_GetIOStatus(context)

def SDL_GetIOSize(context: LP_SDL_IOStream) -> ctypes.c_int64:
    """
    Use this function to get the size of the data stream in an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_GetIOSize
    """
    return raw.SDL_GetIOSize(context)

def SDL_SeekIO(context: LP_SDL_IOStream, offset: ctypes.c_int64, whence: SDL_IOWhence) -> ctypes.c_int64:
    """
    Seek within an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) data stream.

    https://wiki.libsdl.org/SDL3/SDL_SeekIO
    """
    return raw.SDL_SeekIO(context, offset, whence)

def SDL_TellIO(context: LP_SDL_IOStream) -> ctypes.c_int64:
    """
    Determine the current read/write offset in an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) data stream.

    https://wiki.libsdl.org/SDL3/SDL_TellIO
    """
    return raw.SDL_TellIO(context)

def SDL_ReadIO(context: LP_SDL_IOStream, ptr: ctypes.c_void_p, size: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Read from a data source.

    https://wiki.libsdl.org/SDL3/SDL_ReadIO
    """
    return raw.SDL_ReadIO(context, ptr, size)

def SDL_WriteIO(context: LP_SDL_IOStream, ptr: ctypes.c_void_p, size: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Write to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) data stream.

    https://wiki.libsdl.org/SDL3/SDL_WriteIO
    """
    return raw.SDL_WriteIO(context, ptr, size)

def SDL_IOprintf(context: LP_SDL_IOStream, fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_size_t:
    """
    Print to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) data stream.

    https://wiki.libsdl.org/SDL3/SDL_IOprintf
    """
    return raw.SDL_IOprintf(context, fmt, *args)

def SDL_IOvprintf(context: LP_SDL_IOStream, fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> ctypes.c_size_t:
    """
    Print to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) data stream.

    https://wiki.libsdl.org/SDL3/SDL_IOvprintf
    """
    return raw.SDL_IOvprintf(context, fmt, ap)

def SDL_FlushIO(context: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Flush any buffered data in the stream.

    https://wiki.libsdl.org/SDL3/SDL_FlushIO
    """
    return raw.SDL_FlushIO(context)

def SDL_LoadFile_IO(src: LP_SDL_IOStream, datasize: LP_c_size_t, closeio: ctypes.c_bool) -> ctypes.c_void_p:
    """
    Load all the data from an SDL data stream.

    https://wiki.libsdl.org/SDL3/SDL_LoadFile_IO
    """
    return raw.SDL_LoadFile_IO(src, datasize, closeio)

def SDL_LoadFile(file: ctypes.c_char_p, datasize: LP_c_size_t) -> ctypes.c_void_p:
    """
    Load all the data from a file path.

    https://wiki.libsdl.org/SDL3/SDL_LoadFile
    """
    return raw.SDL_LoadFile(file, datasize)

def SDL_SaveFile_IO(src: LP_SDL_IOStream, data: ctypes.c_void_p, datasize: ctypes.c_size_t, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Save all the data into an SDL data stream.

    https://wiki.libsdl.org/SDL3/SDL_SaveFile_IO
    """
    return raw.SDL_SaveFile_IO(src, data, datasize, closeio)

def SDL_SaveFile(file: ctypes.c_char_p, data: ctypes.c_void_p, datasize: ctypes.c_size_t) -> ctypes.c_bool:
    """
    Save all the data into a file path.

    https://wiki.libsdl.org/SDL3/SDL_SaveFile
    """
    return raw.SDL_SaveFile(file, data, datasize)

def SDL_ReadU8(src: LP_SDL_IOStream, value: LP_c_uint8) -> ctypes.c_bool:
    """
    Use this function to read a byte from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_ReadU8
    """
    return raw.SDL_ReadU8(src, value)

def SDL_ReadS8(src: LP_SDL_IOStream, value: LP_c_int8) -> ctypes.c_bool:
    """
    Use this function to read a signed byte from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_ReadS8
    """
    return raw.SDL_ReadS8(src, value)

def SDL_ReadU16LE(src: LP_SDL_IOStream, value: LP_c_uint16) -> ctypes.c_bool:
    """
    Use this function to read 16 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU16LE
    """
    return raw.SDL_ReadU16LE(src, value)

def SDL_ReadS16LE(src: LP_SDL_IOStream, value: LP_c_int16) -> ctypes.c_bool:
    """
    Use this function to read 16 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS16LE
    """
    return raw.SDL_ReadS16LE(src, value)

def SDL_ReadU16BE(src: LP_SDL_IOStream, value: LP_c_uint16) -> ctypes.c_bool:
    """
    Use this function to read 16 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU16BE
    """
    return raw.SDL_ReadU16BE(src, value)

def SDL_ReadS16BE(src: LP_SDL_IOStream, value: LP_c_int16) -> ctypes.c_bool:
    """
    Use this function to read 16 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS16BE
    """
    return raw.SDL_ReadS16BE(src, value)

def SDL_ReadU32LE(src: LP_SDL_IOStream, value: LP_c_uint32) -> ctypes.c_bool:
    """
    Use this function to read 32 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU32LE
    """
    return raw.SDL_ReadU32LE(src, value)

def SDL_ReadS32LE(src: LP_SDL_IOStream, value: LP_c_int32) -> ctypes.c_bool:
    """
    Use this function to read 32 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS32LE
    """
    return raw.SDL_ReadS32LE(src, value)

def SDL_ReadU32BE(src: LP_SDL_IOStream, value: LP_c_uint32) -> ctypes.c_bool:
    """
    Use this function to read 32 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU32BE
    """
    return raw.SDL_ReadU32BE(src, value)

def SDL_ReadS32BE(src: LP_SDL_IOStream, value: LP_c_int32) -> ctypes.c_bool:
    """
    Use this function to read 32 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS32BE
    """
    return raw.SDL_ReadS32BE(src, value)

def SDL_ReadU64LE(src: LP_SDL_IOStream, value: LP_c_uint64) -> ctypes.c_bool:
    """
    Use this function to read 64 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU64LE
    """
    return raw.SDL_ReadU64LE(src, value)

def SDL_ReadS64LE(src: LP_SDL_IOStream, value: LP_c_int64) -> ctypes.c_bool:
    """
    Use this function to read 64 bits of little-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS64LE
    """
    return raw.SDL_ReadS64LE(src, value)

def SDL_ReadU64BE(src: LP_SDL_IOStream, value: LP_c_uint64) -> ctypes.c_bool:
    """
    Use this function to read 64 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadU64BE
    """
    return raw.SDL_ReadU64BE(src, value)

def SDL_ReadS64BE(src: LP_SDL_IOStream, value: LP_c_int64) -> ctypes.c_bool:
    """
    Use this function to read 64 bits of big-endian data from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) and return in native format.

    https://wiki.libsdl.org/SDL3/SDL_ReadS64BE
    """
    return raw.SDL_ReadS64BE(src, value)

def SDL_WriteU8(dst: LP_SDL_IOStream, value: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Use this function to write a byte to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_WriteU8
    """
    return raw.SDL_WriteU8(dst, value)

def SDL_WriteS8(dst: LP_SDL_IOStream, value: ctypes.c_int8) -> ctypes.c_bool:
    """
    Use this function to write a signed byte to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_WriteS8
    """
    return raw.SDL_WriteS8(dst, value)

def SDL_WriteU16LE(dst: LP_SDL_IOStream, value: ctypes.c_uint16) -> ctypes.c_bool:
    """
    Use this function to write 16 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU16LE
    """
    return raw.SDL_WriteU16LE(dst, value)

def SDL_WriteS16LE(dst: LP_SDL_IOStream, value: ctypes.c_int16) -> ctypes.c_bool:
    """
    Use this function to write 16 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS16LE
    """
    return raw.SDL_WriteS16LE(dst, value)

def SDL_WriteU16BE(dst: LP_SDL_IOStream, value: ctypes.c_uint16) -> ctypes.c_bool:
    """
    Use this function to write 16 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU16BE
    """
    return raw.SDL_WriteU16BE(dst, value)

def SDL_WriteS16BE(dst: LP_SDL_IOStream, value: ctypes.c_int16) -> ctypes.c_bool:
    """
    Use this function to write 16 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS16BE
    """
    return raw.SDL_WriteS16BE(dst, value)

def SDL_WriteU32LE(dst: LP_SDL_IOStream, value: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Use this function to write 32 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU32LE
    """
    return raw.SDL_WriteU32LE(dst, value)

def SDL_WriteS32LE(dst: LP_SDL_IOStream, value: ctypes.c_int32) -> ctypes.c_bool:
    """
    Use this function to write 32 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS32LE
    """
    return raw.SDL_WriteS32LE(dst, value)

def SDL_WriteU32BE(dst: LP_SDL_IOStream, value: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Use this function to write 32 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU32BE
    """
    return raw.SDL_WriteU32BE(dst, value)

def SDL_WriteS32BE(dst: LP_SDL_IOStream, value: ctypes.c_int32) -> ctypes.c_bool:
    """
    Use this function to write 32 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS32BE
    """
    return raw.SDL_WriteS32BE(dst, value)

def SDL_WriteU64LE(dst: LP_SDL_IOStream, value: ctypes.c_uint64) -> ctypes.c_bool:
    """
    Use this function to write 64 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU64LE
    """
    return raw.SDL_WriteU64LE(dst, value)

def SDL_WriteS64LE(dst: LP_SDL_IOStream, value: ctypes.c_int64) -> ctypes.c_bool:
    """
    Use this function to write 64 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as little-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS64LE
    """
    return raw.SDL_WriteS64LE(dst, value)

def SDL_WriteU64BE(dst: LP_SDL_IOStream, value: ctypes.c_uint64) -> ctypes.c_bool:
    """
    Use this function to write 64 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteU64BE
    """
    return raw.SDL_WriteU64BE(dst, value)

def SDL_WriteS64BE(dst: LP_SDL_IOStream, value: ctypes.c_int64) -> ctypes.c_bool:
    """
    Use this function to write 64 bits in native format to an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) as big-endian data.

    https://wiki.libsdl.org/SDL3/SDL_WriteS64BE
    """
    return raw.SDL_WriteS64BE(dst, value)

def SDL_GetNumAudioDrivers() -> ctypes.c_int:
    """
    Use this function to get the number of built-in audio drivers.

    https://wiki.libsdl.org/SDL3/SDL_GetNumAudioDrivers
    """
    return raw.SDL_GetNumAudioDrivers()

def SDL_GetAudioDriver(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Use this function to get the name of a built in audio driver.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioDriver
    """
    return raw.SDL_GetAudioDriver(index)

def SDL_GetCurrentAudioDriver() -> ctypes.c_char_p:
    """
    Get the name of the current audio driver.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentAudioDriver
    """
    return raw.SDL_GetCurrentAudioDriver()

def SDL_GetAudioPlaybackDevices(count: LP_c_int) -> LP_SDL_AudioDeviceID:
    """
    Get a list of currently-connected audio playback devices.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioPlaybackDevices
    """
    return raw.SDL_GetAudioPlaybackDevices(count)

def SDL_GetAudioRecordingDevices(count: LP_c_int) -> LP_SDL_AudioDeviceID:
    """
    Get a list of currently-connected audio recording devices.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioRecordingDevices
    """
    return raw.SDL_GetAudioRecordingDevices(count)

def SDL_GetAudioDeviceName(devid: SDL_AudioDeviceID) -> ctypes.c_char_p:
    """
    Get the human-readable name of a specific audio device.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioDeviceName
    """
    return raw.SDL_GetAudioDeviceName(devid)

def SDL_GetAudioDeviceFormat(devid: SDL_AudioDeviceID, spec: LP_SDL_AudioSpec, sample_frames: LP_c_int) -> ctypes.c_bool:
    """
    Get the current audio format of a specific audio device.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioDeviceFormat
    """
    return raw.SDL_GetAudioDeviceFormat(devid, spec, sample_frames)

def SDL_GetAudioDeviceChannelMap(devid: SDL_AudioDeviceID, count: LP_c_int) -> LP_c_int:
    """
    Get the current channel map of an audio device.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioDeviceChannelMap
    """
    return raw.SDL_GetAudioDeviceChannelMap(devid, count)

def SDL_OpenAudioDevice(devid: SDL_AudioDeviceID, spec: LP_SDL_AudioSpec) -> SDL_AudioDeviceID:
    """
    Open a specific audio device.

    https://wiki.libsdl.org/SDL3/SDL_OpenAudioDevice
    """
    return raw.SDL_OpenAudioDevice(devid, spec)

def SDL_IsAudioDevicePhysical(devid: SDL_AudioDeviceID) -> ctypes.c_bool:
    """
    Determine if an audio device is physical (instead of logical).

    https://wiki.libsdl.org/SDL3/SDL_IsAudioDevicePhysical
    """
    return raw.SDL_IsAudioDevicePhysical(devid)

def SDL_IsAudioDevicePlayback(devid: SDL_AudioDeviceID) -> ctypes.c_bool:
    """
    Determine if an audio device is a playback device (instead of recording).

    https://wiki.libsdl.org/SDL3/SDL_IsAudioDevicePlayback
    """
    return raw.SDL_IsAudioDevicePlayback(devid)

def SDL_PauseAudioDevice(devid: SDL_AudioDeviceID) -> ctypes.c_bool:
    """
    Use this function to pause audio playback on a specified device.

    https://wiki.libsdl.org/SDL3/SDL_PauseAudioDevice
    """
    return raw.SDL_PauseAudioDevice(devid)

def SDL_ResumeAudioDevice(devid: SDL_AudioDeviceID) -> ctypes.c_bool:
    """
    Use this function to unpause audio playback on a specified device.

    https://wiki.libsdl.org/SDL3/SDL_ResumeAudioDevice
    """
    return raw.SDL_ResumeAudioDevice(devid)

def SDL_AudioDevicePaused(devid: SDL_AudioDeviceID) -> ctypes.c_bool:
    """
    Use this function to query if an audio device is paused.

    https://wiki.libsdl.org/SDL3/SDL_AudioDevicePaused
    """
    return raw.SDL_AudioDevicePaused(devid)

def SDL_GetAudioDeviceGain(devid: SDL_AudioDeviceID) -> ctypes.c_float:
    """
    Get the gain of an audio device.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioDeviceGain
    """
    return raw.SDL_GetAudioDeviceGain(devid)

def SDL_SetAudioDeviceGain(devid: SDL_AudioDeviceID, gain: ctypes.c_float) -> ctypes.c_bool:
    """
    Change the gain of an audio device.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioDeviceGain
    """
    return raw.SDL_SetAudioDeviceGain(devid, gain)

def SDL_CloseAudioDevice(devid: SDL_AudioDeviceID) -> None:
    """
    Close a previously-opened audio device.

    https://wiki.libsdl.org/SDL3/SDL_CloseAudioDevice
    """
    return raw.SDL_CloseAudioDevice(devid)

def SDL_BindAudioStreams(devid: SDL_AudioDeviceID, streams: LP_LP_SDL_AudioStream, num_streams: ctypes.c_int) -> ctypes.c_bool:
    """
    Bind a list of audio streams to an audio device.

    https://wiki.libsdl.org/SDL3/SDL_BindAudioStreams
    """
    return raw.SDL_BindAudioStreams(devid, streams, num_streams)

def SDL_BindAudioStream(devid: SDL_AudioDeviceID, stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Bind a single audio stream to an audio device.

    https://wiki.libsdl.org/SDL3/SDL_BindAudioStream
    """
    return raw.SDL_BindAudioStream(devid, stream)

def SDL_UnbindAudioStreams(streams: LP_LP_SDL_AudioStream, num_streams: ctypes.c_int) -> None:
    """
    Unbind a list of audio streams from their audio devices.

    https://wiki.libsdl.org/SDL3/SDL_UnbindAudioStreams
    """
    return raw.SDL_UnbindAudioStreams(streams, num_streams)

def SDL_UnbindAudioStream(stream: LP_SDL_AudioStream) -> None:
    """
    Unbind a single audio stream from its audio device.

    https://wiki.libsdl.org/SDL3/SDL_UnbindAudioStream
    """
    return raw.SDL_UnbindAudioStream(stream)

def SDL_GetAudioStreamDevice(stream: LP_SDL_AudioStream) -> SDL_AudioDeviceID:
    """
    Query an audio stream for its currently-bound device.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamDevice
    """
    return raw.SDL_GetAudioStreamDevice(stream)

def SDL_CreateAudioStream(src_spec: LP_SDL_AudioSpec, dst_spec: LP_SDL_AudioSpec) -> LP_SDL_AudioStream:
    """
    Create a new audio stream.

    https://wiki.libsdl.org/SDL3/SDL_CreateAudioStream
    """
    return raw.SDL_CreateAudioStream(src_spec, dst_spec)

def SDL_GetAudioStreamProperties(stream: LP_SDL_AudioStream) -> SDL_PropertiesID:
    """
    Get the properties associated with an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamProperties
    """
    return raw.SDL_GetAudioStreamProperties(stream)

def SDL_GetAudioStreamFormat(stream: LP_SDL_AudioStream, src_spec: LP_SDL_AudioSpec, dst_spec: LP_SDL_AudioSpec) -> ctypes.c_bool:
    """
    Query the current format of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamFormat
    """
    return raw.SDL_GetAudioStreamFormat(stream, src_spec, dst_spec)

def SDL_SetAudioStreamFormat(stream: LP_SDL_AudioStream, src_spec: LP_SDL_AudioSpec, dst_spec: LP_SDL_AudioSpec) -> ctypes.c_bool:
    """
    Change the input and output formats of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamFormat
    """
    return raw.SDL_SetAudioStreamFormat(stream, src_spec, dst_spec)

def SDL_GetAudioStreamFrequencyRatio(stream: LP_SDL_AudioStream) -> ctypes.c_float:
    """
    Get the frequency ratio of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamFrequencyRatio
    """
    return raw.SDL_GetAudioStreamFrequencyRatio(stream)

def SDL_SetAudioStreamFrequencyRatio(stream: LP_SDL_AudioStream, ratio: ctypes.c_float) -> ctypes.c_bool:
    """
    Change the frequency ratio of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamFrequencyRatio
    """
    return raw.SDL_SetAudioStreamFrequencyRatio(stream, ratio)

def SDL_GetAudioStreamGain(stream: LP_SDL_AudioStream) -> ctypes.c_float:
    """
    Get the gain of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamGain
    """
    return raw.SDL_GetAudioStreamGain(stream)

def SDL_SetAudioStreamGain(stream: LP_SDL_AudioStream, gain: ctypes.c_float) -> ctypes.c_bool:
    """
    Change the gain of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamGain
    """
    return raw.SDL_SetAudioStreamGain(stream, gain)

def SDL_GetAudioStreamInputChannelMap(stream: LP_SDL_AudioStream, count: LP_c_int) -> LP_c_int:
    """
    Get the current input channel map of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamInputChannelMap
    """
    return raw.SDL_GetAudioStreamInputChannelMap(stream, count)

def SDL_GetAudioStreamOutputChannelMap(stream: LP_SDL_AudioStream, count: LP_c_int) -> LP_c_int:
    """
    Get the current output channel map of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamOutputChannelMap
    """
    return raw.SDL_GetAudioStreamOutputChannelMap(stream, count)

def SDL_SetAudioStreamInputChannelMap(stream: LP_SDL_AudioStream, chmap: LP_c_int, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the current input channel map of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamInputChannelMap
    """
    return raw.SDL_SetAudioStreamInputChannelMap(stream, chmap, count)

def SDL_SetAudioStreamOutputChannelMap(stream: LP_SDL_AudioStream, chmap: LP_c_int, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the current output channel map of an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamOutputChannelMap
    """
    return raw.SDL_SetAudioStreamOutputChannelMap(stream, chmap, count)

def SDL_PutAudioStreamData(stream: LP_SDL_AudioStream, buf: ctypes.c_void_p, len: ctypes.c_int) -> ctypes.c_bool:
    """
    Add data to the stream.

    https://wiki.libsdl.org/SDL3/SDL_PutAudioStreamData
    """
    return raw.SDL_PutAudioStreamData(stream, buf, len)

def SDL_PutAudioStreamDataNoCopy(stream: LP_SDL_AudioStream, buf: ctypes.c_void_p, len: ctypes.c_int, callback: SDL_AudioStreamDataCompleteCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Add external data to an audio stream without copying it.

    https://wiki.libsdl.org/SDL3/SDL_PutAudioStreamDataNoCopy
    """
    return raw.SDL_PutAudioStreamDataNoCopy(stream, buf, len, callback, userdata)

def SDL_PutAudioStreamPlanarData(stream: LP_SDL_AudioStream, channel_buffers: LP_c_void_p, num_channels: ctypes.c_int, num_samples: ctypes.c_int) -> ctypes.c_bool:
    """
    Add data to the stream with each channel in a separate array.

    https://wiki.libsdl.org/SDL3/SDL_PutAudioStreamPlanarData
    """
    return raw.SDL_PutAudioStreamPlanarData(stream, channel_buffers, num_channels, num_samples)

def SDL_GetAudioStreamData(stream: LP_SDL_AudioStream, buf: ctypes.c_void_p, len: ctypes.c_int) -> ctypes.c_int:
    """
    Get converted/resampled data from the stream.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamData
    """
    return raw.SDL_GetAudioStreamData(stream, buf, len)

def SDL_GetAudioStreamAvailable(stream: LP_SDL_AudioStream) -> ctypes.c_int:
    """
    Get the number of converted/resampled bytes available.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamAvailable
    """
    return raw.SDL_GetAudioStreamAvailable(stream)

def SDL_GetAudioStreamQueued(stream: LP_SDL_AudioStream) -> ctypes.c_int:
    """
    Get the number of bytes currently queued.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioStreamQueued
    """
    return raw.SDL_GetAudioStreamQueued(stream)

def SDL_FlushAudioStream(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Tell the stream that you're done sending data, and anything being buffered should be converted/resampled and made available immediately.

    https://wiki.libsdl.org/SDL3/SDL_FlushAudioStream
    """
    return raw.SDL_FlushAudioStream(stream)

def SDL_ClearAudioStream(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Clear any pending data in the stream.

    https://wiki.libsdl.org/SDL3/SDL_ClearAudioStream
    """
    return raw.SDL_ClearAudioStream(stream)

def SDL_PauseAudioStreamDevice(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Use this function to pause audio playback on the audio device associated with an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_PauseAudioStreamDevice
    """
    return raw.SDL_PauseAudioStreamDevice(stream)

def SDL_ResumeAudioStreamDevice(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Use this function to unpause audio playback on the audio device associated with an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_ResumeAudioStreamDevice
    """
    return raw.SDL_ResumeAudioStreamDevice(stream)

def SDL_AudioStreamDevicePaused(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Use this function to query if an audio device associated with a stream is paused.

    https://wiki.libsdl.org/SDL3/SDL_AudioStreamDevicePaused
    """
    return raw.SDL_AudioStreamDevicePaused(stream)

def SDL_LockAudioStream(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Lock an audio stream for serialized access.

    https://wiki.libsdl.org/SDL3/SDL_LockAudioStream
    """
    return raw.SDL_LockAudioStream(stream)

def SDL_UnlockAudioStream(stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Unlock an audio stream for serialized access.

    https://wiki.libsdl.org/SDL3/SDL_UnlockAudioStream
    """
    return raw.SDL_UnlockAudioStream(stream)

def SDL_SetAudioStreamGetCallback(stream: LP_SDL_AudioStream, callback: SDL_AudioStreamCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that runs when data is requested from an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamGetCallback
    """
    return raw.SDL_SetAudioStreamGetCallback(stream, callback, userdata)

def SDL_SetAudioStreamPutCallback(stream: LP_SDL_AudioStream, callback: SDL_AudioStreamCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that runs when data is added to an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioStreamPutCallback
    """
    return raw.SDL_SetAudioStreamPutCallback(stream, callback, userdata)

def SDL_DestroyAudioStream(stream: LP_SDL_AudioStream) -> None:
    """
    Free an audio stream.

    https://wiki.libsdl.org/SDL3/SDL_DestroyAudioStream
    """
    return raw.SDL_DestroyAudioStream(stream)

def SDL_OpenAudioDeviceStream(devid: SDL_AudioDeviceID, spec: LP_SDL_AudioSpec, callback: SDL_AudioStreamCallback, userdata: ctypes.c_void_p) -> LP_SDL_AudioStream:
    """
    Convenience function for straightforward audio init for the common case.

    https://wiki.libsdl.org/SDL3/SDL_OpenAudioDeviceStream
    """
    return raw.SDL_OpenAudioDeviceStream(devid, spec, callback, userdata)

def SDL_SetAudioPostmixCallback(devid: SDL_AudioDeviceID, callback: SDL_AudioPostmixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when data is about to be fed to an audio device.

    https://wiki.libsdl.org/SDL3/SDL_SetAudioPostmixCallback
    """
    return raw.SDL_SetAudioPostmixCallback(devid, callback, userdata)

def SDL_LoadWAV_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool, spec: LP_SDL_AudioSpec, audio_buf: LP_LP_c_uint8, audio_len: LP_c_uint32) -> ctypes.c_bool:
    """
    Load the audio data of a WAVE file into memory.

    https://wiki.libsdl.org/SDL3/SDL_LoadWAV_IO
    """
    return raw.SDL_LoadWAV_IO(src, closeio, spec, audio_buf, audio_len)

def SDL_LoadWAV(path: ctypes.c_char_p, spec: LP_SDL_AudioSpec, audio_buf: LP_LP_c_uint8, audio_len: LP_c_uint32) -> ctypes.c_bool:
    """
    Loads a WAV from a file path.

    https://wiki.libsdl.org/SDL3/SDL_LoadWAV
    """
    return raw.SDL_LoadWAV(path, spec, audio_buf, audio_len)

def SDL_MixAudio(dst: LP_c_uint8, src: LP_c_uint8, format: SDL_AudioFormat, len: ctypes.c_uint32, volume: ctypes.c_float) -> ctypes.c_bool:
    """
    Mix audio data in a specified format.

    https://wiki.libsdl.org/SDL3/SDL_MixAudio
    """
    return raw.SDL_MixAudio(dst, src, format, len, volume)

def SDL_ConvertAudioSamples(src_spec: LP_SDL_AudioSpec, src_data: LP_c_uint8, src_len: ctypes.c_int, dst_spec: LP_SDL_AudioSpec, dst_data: LP_LP_c_uint8, dst_len: LP_c_int) -> ctypes.c_bool:
    """
    Convert some audio data of one format to another format.

    https://wiki.libsdl.org/SDL3/SDL_ConvertAudioSamples
    """
    return raw.SDL_ConvertAudioSamples(src_spec, src_data, src_len, dst_spec, dst_data, dst_len)

def SDL_GetAudioFormatName(format: SDL_AudioFormat) -> ctypes.c_char_p:
    """
    Get the human readable name of an audio format.

    https://wiki.libsdl.org/SDL3/SDL_GetAudioFormatName
    """
    return raw.SDL_GetAudioFormatName(format)

def SDL_GetSilenceValueForFormat(format: SDL_AudioFormat) -> ctypes.c_int:
    """
    Get the appropriate memset value for silencing an audio format.

    https://wiki.libsdl.org/SDL3/SDL_GetSilenceValueForFormat
    """
    return raw.SDL_GetSilenceValueForFormat(format)

def SDL_ComposeCustomBlendMode(srcColorFactor: SDL_BlendFactor, dstColorFactor: SDL_BlendFactor, colorOperation: SDL_BlendOperation, srcAlphaFactor: SDL_BlendFactor, dstAlphaFactor: SDL_BlendFactor, alphaOperation: SDL_BlendOperation) -> SDL_BlendMode:
    """
    Compose a custom blend mode for renderers.

    https://wiki.libsdl.org/SDL3/SDL_ComposeCustomBlendMode
    """
    return raw.SDL_ComposeCustomBlendMode(srcColorFactor, dstColorFactor, colorOperation, srcAlphaFactor, dstAlphaFactor, alphaOperation)

def SDL_malloc(size: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Allocate uninitialized memory.

    https://wiki.libsdl.org/SDL3/SDL_malloc
    """
    return raw.SDL_malloc(size)

def SDL_calloc(nmemb: ctypes.c_size_t, size: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Allocate a zero-initialized array.

    https://wiki.libsdl.org/SDL3/SDL_calloc
    """
    return raw.SDL_calloc(nmemb, size)

def SDL_realloc(mem: ctypes.c_void_p, size: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Change the size of allocated memory.

    https://wiki.libsdl.org/SDL3/SDL_realloc
    """
    return raw.SDL_realloc(mem, size)

def SDL_free(mem: ctypes.c_void_p) -> None:
    """
    Free allocated memory.

    https://wiki.libsdl.org/SDL3/SDL_free
    """
    return raw.SDL_free(mem)

def SDL_GetOriginalMemoryFunctions(malloc_func: LP_SDL_malloc_func, calloc_func: LP_SDL_calloc_func, realloc_func: LP_SDL_realloc_func, free_func: LP_SDL_free_func) -> None:
    """
    Get the original set of SDL memory functions.

    https://wiki.libsdl.org/SDL3/SDL_GetOriginalMemoryFunctions
    """
    return raw.SDL_GetOriginalMemoryFunctions(malloc_func, calloc_func, realloc_func, free_func)

def SDL_GetMemoryFunctions(malloc_func: LP_SDL_malloc_func, calloc_func: LP_SDL_calloc_func, realloc_func: LP_SDL_realloc_func, free_func: LP_SDL_free_func) -> None:
    """
    Get the current set of SDL memory functions.

    https://wiki.libsdl.org/SDL3/SDL_GetMemoryFunctions
    """
    return raw.SDL_GetMemoryFunctions(malloc_func, calloc_func, realloc_func, free_func)

def SDL_SetMemoryFunctions(malloc_func: SDL_malloc_func, calloc_func: SDL_calloc_func, realloc_func: SDL_realloc_func, free_func: SDL_free_func) -> ctypes.c_bool:
    """
    Replace SDL's memory allocation functions with a custom set.

    https://wiki.libsdl.org/SDL3/SDL_SetMemoryFunctions
    """
    return raw.SDL_SetMemoryFunctions(malloc_func, calloc_func, realloc_func, free_func)

def SDL_aligned_alloc(alignment: ctypes.c_size_t, size: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Allocate memory aligned to a specific alignment.

    https://wiki.libsdl.org/SDL3/SDL_aligned_alloc
    """
    return raw.SDL_aligned_alloc(alignment, size)

def SDL_aligned_free(mem: ctypes.c_void_p) -> None:
    """
    Free memory allocated by [SDL_aligned_alloc](https://wiki.libsdl.org/SDL3/SDL_aligned_alloc)().

    https://wiki.libsdl.org/SDL3/SDL_aligned_free
    """
    return raw.SDL_aligned_free(mem)

def SDL_GetNumAllocations() -> ctypes.c_int:
    """
    Get the number of outstanding (unfreed) allocations.

    https://wiki.libsdl.org/SDL3/SDL_GetNumAllocations
    """
    return raw.SDL_GetNumAllocations()

def SDL_GetEnvironment() -> LP_SDL_Environment:
    """
    Get the process environment.

    https://wiki.libsdl.org/SDL3/SDL_GetEnvironment
    """
    return raw.SDL_GetEnvironment()

def SDL_CreateEnvironment(populated: ctypes.c_bool) -> LP_SDL_Environment:
    """
    Create a set of environment variables

    https://wiki.libsdl.org/SDL3/SDL_CreateEnvironment
    """
    return raw.SDL_CreateEnvironment(populated)

def SDL_GetEnvironmentVariable(env: LP_SDL_Environment, name: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get the value of a variable in the environment.

    https://wiki.libsdl.org/SDL3/SDL_GetEnvironmentVariable
    """
    return raw.SDL_GetEnvironmentVariable(env, name)

def SDL_GetEnvironmentVariables(env: LP_SDL_Environment) -> LP_c_char_p:
    """
    Get all variables in the environment.

    https://wiki.libsdl.org/SDL3/SDL_GetEnvironmentVariables
    """
    return raw.SDL_GetEnvironmentVariables(env)

def SDL_SetEnvironmentVariable(env: LP_SDL_Environment, name: ctypes.c_char_p, value: ctypes.c_char_p, overwrite: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the value of a variable in the environment.

    https://wiki.libsdl.org/SDL3/SDL_SetEnvironmentVariable
    """
    return raw.SDL_SetEnvironmentVariable(env, name, value, overwrite)

def SDL_UnsetEnvironmentVariable(env: LP_SDL_Environment, name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Clear a variable from the environment.

    https://wiki.libsdl.org/SDL3/SDL_UnsetEnvironmentVariable
    """
    return raw.SDL_UnsetEnvironmentVariable(env, name)

def SDL_DestroyEnvironment(env: LP_SDL_Environment) -> None:
    """
    Destroy a set of environment variables.

    https://wiki.libsdl.org/SDL3/SDL_DestroyEnvironment
    """
    return raw.SDL_DestroyEnvironment(env)

def SDL_getenv(name: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get the value of a variable in the environment.

    https://wiki.libsdl.org/SDL3/SDL_getenv
    """
    return raw.SDL_getenv(name)

def SDL_getenv_unsafe(name: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get the value of a variable in the environment.

    https://wiki.libsdl.org/SDL3/SDL_getenv_unsafe
    """
    return raw.SDL_getenv_unsafe(name)

def SDL_setenv_unsafe(name: ctypes.c_char_p, value: ctypes.c_char_p, overwrite: ctypes.c_int) -> ctypes.c_int:
    """
    Set the value of a variable in the environment.

    https://wiki.libsdl.org/SDL3/SDL_setenv_unsafe
    """
    return raw.SDL_setenv_unsafe(name, value, overwrite)

def SDL_unsetenv_unsafe(name: ctypes.c_char_p) -> ctypes.c_int:
    """
    Clear a variable from the environment.

    https://wiki.libsdl.org/SDL3/SDL_unsetenv_unsafe
    """
    return raw.SDL_unsetenv_unsafe(name)

def SDL_qsort(base: ctypes.c_void_p, nmemb: ctypes.c_size_t, size: ctypes.c_size_t, compare: SDL_CompareCallback) -> None:
    """
    Sort an array.

    https://wiki.libsdl.org/SDL3/SDL_qsort
    """
    return raw.SDL_qsort(base, nmemb, size, compare)

def SDL_bsearch(key: ctypes.c_void_p, base: ctypes.c_void_p, nmemb: ctypes.c_size_t, size: ctypes.c_size_t, compare: SDL_CompareCallback) -> ctypes.c_void_p:
    """
    Perform a binary search on a previously sorted array.

    https://wiki.libsdl.org/SDL3/SDL_bsearch
    """
    return raw.SDL_bsearch(key, base, nmemb, size, compare)

def SDL_qsort_r(base: ctypes.c_void_p, nmemb: ctypes.c_size_t, size: ctypes.c_size_t, compare: SDL_CompareCallback_r, userdata: ctypes.c_void_p) -> None:
    """
    Sort an array, passing a userdata pointer to the compare function.

    https://wiki.libsdl.org/SDL3/SDL_qsort_r
    """
    return raw.SDL_qsort_r(base, nmemb, size, compare, userdata)

def SDL_bsearch_r(key: ctypes.c_void_p, base: ctypes.c_void_p, nmemb: ctypes.c_size_t, size: ctypes.c_size_t, compare: SDL_CompareCallback_r, userdata: ctypes.c_void_p) -> ctypes.c_void_p:
    """
    Perform a binary search on a previously sorted array, passing a userdata pointer to the compare function.

    https://wiki.libsdl.org/SDL3/SDL_bsearch_r
    """
    return raw.SDL_bsearch_r(key, base, nmemb, size, compare, userdata)

def SDL_abs(x: ctypes.c_int) -> ctypes.c_int:
    """
    Compute the absolute value of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_abs
    """
    return raw.SDL_abs(x)

def SDL_isalpha(x: ctypes.c_int) -> ctypes.c_int:
    """
    Query if a character is alphabetic (a letter).

    https://wiki.libsdl.org/SDL3/SDL_isalpha
    """
    return raw.SDL_isalpha(x)

def SDL_isalnum(x: ctypes.c_int) -> ctypes.c_int:
    """
    Query if a character is alphabetic (a letter) or a number.

    https://wiki.libsdl.org/SDL3/SDL_isalnum
    """
    return raw.SDL_isalnum(x)

def SDL_isblank(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is blank (a space or tab).

    https://wiki.libsdl.org/SDL3/SDL_isblank
    """
    return raw.SDL_isblank(x)

def SDL_iscntrl(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is a control character.

    https://wiki.libsdl.org/SDL3/SDL_iscntrl
    """
    return raw.SDL_iscntrl(x)

def SDL_isdigit(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is a numeric digit.

    https://wiki.libsdl.org/SDL3/SDL_isdigit
    """
    return raw.SDL_isdigit(x)

def SDL_isxdigit(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is a hexadecimal digit.

    https://wiki.libsdl.org/SDL3/SDL_isxdigit
    """
    return raw.SDL_isxdigit(x)

def SDL_ispunct(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is a punctuation mark.

    https://wiki.libsdl.org/SDL3/SDL_ispunct
    """
    return raw.SDL_ispunct(x)

def SDL_isspace(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is whitespace.

    https://wiki.libsdl.org/SDL3/SDL_isspace
    """
    return raw.SDL_isspace(x)

def SDL_isupper(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is upper case.

    https://wiki.libsdl.org/SDL3/SDL_isupper
    """
    return raw.SDL_isupper(x)

def SDL_islower(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is lower case.

    https://wiki.libsdl.org/SDL3/SDL_islower
    """
    return raw.SDL_islower(x)

def SDL_isprint(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is "printable".

    https://wiki.libsdl.org/SDL3/SDL_isprint
    """
    return raw.SDL_isprint(x)

def SDL_isgraph(x: ctypes.c_int) -> ctypes.c_int:
    """
    Report if a character is any "printable" except space.

    https://wiki.libsdl.org/SDL3/SDL_isgraph
    """
    return raw.SDL_isgraph(x)

def SDL_toupper(x: ctypes.c_int) -> ctypes.c_int:
    """
    Convert low-ASCII English letters to uppercase.

    https://wiki.libsdl.org/SDL3/SDL_toupper
    """
    return raw.SDL_toupper(x)

def SDL_tolower(x: ctypes.c_int) -> ctypes.c_int:
    """
    Convert low-ASCII English letters to lowercase.

    https://wiki.libsdl.org/SDL3/SDL_tolower
    """
    return raw.SDL_tolower(x)

def SDL_crc16(crc: ctypes.c_uint16, data: ctypes.c_void_p, len: ctypes.c_size_t) -> ctypes.c_uint16:
    """
    Calculate a CRC-16 value.

    https://wiki.libsdl.org/SDL3/SDL_crc16
    """
    return raw.SDL_crc16(crc, data, len)

def SDL_crc32(crc: ctypes.c_uint32, data: ctypes.c_void_p, len: ctypes.c_size_t) -> ctypes.c_uint32:
    """
    Calculate a CRC-32 value.

    https://wiki.libsdl.org/SDL3/SDL_crc32
    """
    return raw.SDL_crc32(crc, data, len)

def SDL_murmur3_32(data: ctypes.c_void_p, len: ctypes.c_size_t, seed: ctypes.c_uint32) -> ctypes.c_uint32:
    """
    Calculate a 32-bit MurmurHash3 value for a block of data.

    https://wiki.libsdl.org/SDL3/SDL_murmur3_32
    """
    return raw.SDL_murmur3_32(data, len, seed)

def SDL_memcpy(dst: ctypes.c_void_p, src: ctypes.c_void_p, len: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Copy non-overlapping memory.

    https://wiki.libsdl.org/SDL3/SDL_memcpy
    """
    return raw.SDL_memcpy(dst, src, len)

def SDL_memmove(dst: ctypes.c_void_p, src: ctypes.c_void_p, len: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Copy memory ranges that might overlap.

    https://wiki.libsdl.org/SDL3/SDL_memmove
    """
    return raw.SDL_memmove(dst, src, len)

def SDL_memset(dst: ctypes.c_void_p, c: ctypes.c_int, len: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Initialize all bytes of buffer of memory to a specific value.

    https://wiki.libsdl.org/SDL3/SDL_memset
    """
    return raw.SDL_memset(dst, c, len)

def SDL_memset4(dst: ctypes.c_void_p, val: ctypes.c_uint32, dwords: ctypes.c_size_t) -> ctypes.c_void_p:
    """
    Initialize all 32-bit words of buffer of memory to a specific value.

    https://wiki.libsdl.org/SDL3/SDL_memset4
    """
    return raw.SDL_memset4(dst, val, dwords)

def SDL_memcmp(s1: ctypes.c_void_p, s2: ctypes.c_void_p, len: ctypes.c_size_t) -> ctypes.c_int:
    """
    Compare two buffers of memory.

    https://wiki.libsdl.org/SDL3/SDL_memcmp
    """
    return raw.SDL_memcmp(s1, s2, len)

def SDL_wcslen(wstr: ctypes.c_wchar_p) -> ctypes.c_size_t:
    """
    This works exactly like wcslen() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_wcslen
    """
    return raw.SDL_wcslen(wstr)

def SDL_wcsnlen(wstr: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    This works exactly like wcsnlen() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_wcsnlen
    """
    return raw.SDL_wcsnlen(wstr, maxlen)

def SDL_wcslcpy(dst: ctypes.c_wchar_p, src: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Copy a wide string.

    https://wiki.libsdl.org/SDL3/SDL_wcslcpy
    """
    return raw.SDL_wcslcpy(dst, src, maxlen)

def SDL_wcslcat(dst: ctypes.c_wchar_p, src: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Concatenate wide strings.

    https://wiki.libsdl.org/SDL3/SDL_wcslcat
    """
    return raw.SDL_wcslcat(dst, src, maxlen)

def SDL_wcsdup(wstr: ctypes.c_wchar_p) -> ctypes.c_wchar_p:
    """
    Allocate a copy of a wide string.

    https://wiki.libsdl.org/SDL3/SDL_wcsdup
    """
    return raw.SDL_wcsdup(wstr)

def SDL_wcsstr(haystack: ctypes.c_wchar_p, needle: ctypes.c_wchar_p) -> ctypes.c_wchar_p:
    """
    Search a wide string for the first instance of a specific substring.

    https://wiki.libsdl.org/SDL3/SDL_wcsstr
    """
    return raw.SDL_wcsstr(haystack, needle)

def SDL_wcsnstr(haystack: ctypes.c_wchar_p, needle: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_wchar_p:
    """
    Search a wide string, up to n wide chars, for the first instance of a specific substring.

    https://wiki.libsdl.org/SDL3/SDL_wcsnstr
    """
    return raw.SDL_wcsnstr(haystack, needle, maxlen)

def SDL_wcscmp(str1: ctypes.c_wchar_p, str2: ctypes.c_wchar_p) -> ctypes.c_int:
    """
    Compare two null-terminated wide strings.

    https://wiki.libsdl.org/SDL3/SDL_wcscmp
    """
    return raw.SDL_wcscmp(str1, str2)

def SDL_wcsncmp(str1: ctypes.c_wchar_p, str2: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Compare two wide strings up to a number of wchar_t values.

    https://wiki.libsdl.org/SDL3/SDL_wcsncmp
    """
    return raw.SDL_wcsncmp(str1, str2, maxlen)

def SDL_wcscasecmp(str1: ctypes.c_wchar_p, str2: ctypes.c_wchar_p) -> ctypes.c_int:
    """
    Compare two null-terminated wide strings, case-insensitively.

    https://wiki.libsdl.org/SDL3/SDL_wcscasecmp
    """
    return raw.SDL_wcscasecmp(str1, str2)

def SDL_wcsncasecmp(str1: ctypes.c_wchar_p, str2: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Compare two wide strings, case-insensitively, up to a number of wchar_t.

    https://wiki.libsdl.org/SDL3/SDL_wcsncasecmp
    """
    return raw.SDL_wcsncasecmp(str1, str2, maxlen)

def SDL_wcstol(str: ctypes.c_wchar_p, endp: LP_c_wchar_p, base: ctypes.c_int) -> ctypes.c_long:
    """
    Parse a ``long`` from a wide string.

    https://wiki.libsdl.org/SDL3/SDL_wcstol
    """
    return raw.SDL_wcstol(str, endp, base)

def SDL_strlen(str: ctypes.c_char_p) -> ctypes.c_size_t:
    """
    This works exactly like strlen() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_strlen
    """
    return raw.SDL_strlen(str)

def SDL_strnlen(str: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    This works exactly like strnlen() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_strnlen
    """
    return raw.SDL_strnlen(str, maxlen)

def SDL_strlcpy(dst: ctypes.c_char_p, src: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Copy a string.

    https://wiki.libsdl.org/SDL3/SDL_strlcpy
    """
    return raw.SDL_strlcpy(dst, src, maxlen)

def SDL_utf8strlcpy(dst: ctypes.c_char_p, src: ctypes.c_char_p, dst_bytes: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Copy an UTF-8 string.

    https://wiki.libsdl.org/SDL3/SDL_utf8strlcpy
    """
    return raw.SDL_utf8strlcpy(dst, src, dst_bytes)

def SDL_strlcat(dst: ctypes.c_char_p, src: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Concatenate strings.

    https://wiki.libsdl.org/SDL3/SDL_strlcat
    """
    return raw.SDL_strlcat(dst, src, maxlen)

def SDL_strdup(str: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Allocate a copy of a string.

    https://wiki.libsdl.org/SDL3/SDL_strdup
    """
    return raw.SDL_strdup(str)

def SDL_strndup(str: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_char_p:
    """
    Allocate a copy of a string, up to n characters.

    https://wiki.libsdl.org/SDL3/SDL_strndup
    """
    return raw.SDL_strndup(str, maxlen)

def SDL_strrev(str: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Reverse a string's contents.

    https://wiki.libsdl.org/SDL3/SDL_strrev
    """
    return raw.SDL_strrev(str)

def SDL_strupr(str: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Convert a string to uppercase.

    https://wiki.libsdl.org/SDL3/SDL_strupr
    """
    return raw.SDL_strupr(str)

def SDL_strlwr(str: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Convert a string to lowercase.

    https://wiki.libsdl.org/SDL3/SDL_strlwr
    """
    return raw.SDL_strlwr(str)

def SDL_strchr(str: ctypes.c_char_p, c: ctypes.c_int) -> ctypes.c_char_p:
    """
    Search a string for the first instance of a specific byte.

    https://wiki.libsdl.org/SDL3/SDL_strchr
    """
    return raw.SDL_strchr(str, c)

def SDL_strrchr(str: ctypes.c_char_p, c: ctypes.c_int) -> ctypes.c_char_p:
    """
    Search a string for the last instance of a specific byte.

    https://wiki.libsdl.org/SDL3/SDL_strrchr
    """
    return raw.SDL_strrchr(str, c)

def SDL_strstr(haystack: ctypes.c_char_p, needle: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Search a string for the first instance of a specific substring.

    https://wiki.libsdl.org/SDL3/SDL_strstr
    """
    return raw.SDL_strstr(haystack, needle)

def SDL_strnstr(haystack: ctypes.c_char_p, needle: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_char_p:
    """
    Search a string, up to n bytes, for the first instance of a specific substring.

    https://wiki.libsdl.org/SDL3/SDL_strnstr
    """
    return raw.SDL_strnstr(haystack, needle, maxlen)

def SDL_strcasestr(haystack: ctypes.c_char_p, needle: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Search a UTF-8 string for the first instance of a specific substring, case-insensitively.

    https://wiki.libsdl.org/SDL3/SDL_strcasestr
    """
    return raw.SDL_strcasestr(haystack, needle)

def SDL_strtok_r(str: ctypes.c_char_p, delim: ctypes.c_char_p, saveptr: LP_c_char_p) -> ctypes.c_char_p:
    """
    This works exactly like strtok_r() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_strtok_r
    """
    return raw.SDL_strtok_r(str, delim, saveptr)

def SDL_utf8strlen(str: ctypes.c_char_p) -> ctypes.c_size_t:
    """
    Count the number of codepoints in a UTF-8 string.

    https://wiki.libsdl.org/SDL3/SDL_utf8strlen
    """
    return raw.SDL_utf8strlen(str)

def SDL_utf8strnlen(str: ctypes.c_char_p, bytes: ctypes.c_size_t) -> ctypes.c_size_t:
    """
    Count the number of codepoints in a UTF-8 string, up to n bytes.

    https://wiki.libsdl.org/SDL3/SDL_utf8strnlen
    """
    return raw.SDL_utf8strnlen(str, bytes)

def SDL_itoa(value: ctypes.c_int, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert an integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_itoa
    """
    return raw.SDL_itoa(value, str, radix)

def SDL_uitoa(value: ctypes.c_uint, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert an unsigned integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_uitoa
    """
    return raw.SDL_uitoa(value, str, radix)

def SDL_ltoa(value: ctypes.c_long, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert a long integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_ltoa
    """
    return raw.SDL_ltoa(value, str, radix)

def SDL_ultoa(value: ctypes.c_ulong, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert an unsigned long integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_ultoa
    """
    return raw.SDL_ultoa(value, str, radix)

def SDL_lltoa(value: ctypes.c_longlong, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert a long long integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_lltoa
    """
    return raw.SDL_lltoa(value, str, radix)

def SDL_ulltoa(value: ctypes.c_ulonglong, str: ctypes.c_char_p, radix: ctypes.c_int) -> ctypes.c_char_p:
    """
    Convert an unsigned long long integer into a string.

    https://wiki.libsdl.org/SDL3/SDL_ulltoa
    """
    return raw.SDL_ulltoa(value, str, radix)

def SDL_atoi(str: ctypes.c_char_p) -> ctypes.c_int:
    """
    Parse an ``int`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_atoi
    """
    return raw.SDL_atoi(str)

def SDL_atof(str: ctypes.c_char_p) -> ctypes.c_double:
    """
    Parse a ``double`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_atof
    """
    return raw.SDL_atof(str)

def SDL_strtol(str: ctypes.c_char_p, endp: LP_c_char_p, base: ctypes.c_int) -> ctypes.c_long:
    """
    Parse a ``long`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_strtol
    """
    return raw.SDL_strtol(str, endp, base)

def SDL_strtoul(str: ctypes.c_char_p, endp: LP_c_char_p, base: ctypes.c_int) -> ctypes.c_ulong:
    """
    Parse an ``unsigned long`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_strtoul
    """
    return raw.SDL_strtoul(str, endp, base)

def SDL_strtoll(str: ctypes.c_char_p, endp: LP_c_char_p, base: ctypes.c_int) -> ctypes.c_longlong:
    """
    Parse a ``long long`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_strtoll
    """
    return raw.SDL_strtoll(str, endp, base)

def SDL_strtoull(str: ctypes.c_char_p, endp: LP_c_char_p, base: ctypes.c_int) -> ctypes.c_ulonglong:
    """
    Parse an ``unsigned long long`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_strtoull
    """
    return raw.SDL_strtoull(str, endp, base)

def SDL_strtod(str: ctypes.c_char_p, endp: LP_c_char_p) -> ctypes.c_double:
    """
    Parse a ``double`` from a string.

    https://wiki.libsdl.org/SDL3/SDL_strtod
    """
    return raw.SDL_strtod(str, endp)

def SDL_strcmp(str1: ctypes.c_char_p, str2: ctypes.c_char_p) -> ctypes.c_int:
    """
    Compare two null-terminated UTF-8 strings.

    https://wiki.libsdl.org/SDL3/SDL_strcmp
    """
    return raw.SDL_strcmp(str1, str2)

def SDL_strncmp(str1: ctypes.c_char_p, str2: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Compare two UTF-8 strings up to a number of bytes.

    https://wiki.libsdl.org/SDL3/SDL_strncmp
    """
    return raw.SDL_strncmp(str1, str2, maxlen)

def SDL_strcasecmp(str1: ctypes.c_char_p, str2: ctypes.c_char_p) -> ctypes.c_int:
    """
    Compare two null-terminated UTF-8 strings, case-insensitively.

    https://wiki.libsdl.org/SDL3/SDL_strcasecmp
    """
    return raw.SDL_strcasecmp(str1, str2)

def SDL_strncasecmp(str1: ctypes.c_char_p, str2: ctypes.c_char_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Compare two UTF-8 strings, case-insensitively, up to a number of bytes.

    https://wiki.libsdl.org/SDL3/SDL_strncasecmp
    """
    return raw.SDL_strncasecmp(str1, str2, maxlen)

def SDL_StepUTF8(pstr: LP_c_char_p, pslen: LP_c_size_t) -> ctypes.c_uint32:
    """
    Decode a UTF-8 string, one Unicode codepoint at a time.

    https://wiki.libsdl.org/SDL3/SDL_StepUTF8
    """
    return raw.SDL_StepUTF8(pstr, pslen)

def SDL_StepBackUTF8(start: ctypes.c_char_p, pstr: LP_c_char_p) -> ctypes.c_uint32:
    """
    Decode a UTF-8 string in reverse, one Unicode codepoint at a time.

    https://wiki.libsdl.org/SDL3/SDL_StepBackUTF8
    """
    return raw.SDL_StepBackUTF8(start, pstr)

def SDL_UCS4ToUTF8(codepoint: ctypes.c_uint32, dst: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Convert a single Unicode codepoint to UTF-8.

    https://wiki.libsdl.org/SDL3/SDL_UCS4ToUTF8
    """
    return raw.SDL_UCS4ToUTF8(codepoint, dst)

def SDL_sscanf(text: ctypes.c_char_p, fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_int:
    """
    This works exactly like sscanf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_sscanf
    """
    return raw.SDL_sscanf(text, fmt, *args)

def SDL_vsscanf(text: ctypes.c_char_p, fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> ctypes.c_int:
    """
    This works exactly like vsscanf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_vsscanf
    """
    return raw.SDL_vsscanf(text, fmt, ap)

def SDL_snprintf(text: ctypes.c_char_p, maxlen: ctypes.c_size_t, fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_int:
    """
    This works exactly like snprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_snprintf
    """
    return raw.SDL_snprintf(text, maxlen, fmt, *args)

def SDL_swprintf(text: ctypes.c_wchar_p, maxlen: ctypes.c_size_t, fmt: ctypes.c_wchar_p, *args: typing.Any) -> ctypes.c_int:
    """
    This works exactly like swprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_swprintf
    """
    return raw.SDL_swprintf(text, maxlen, fmt, *args)

def SDL_vsnprintf(text: ctypes.c_char_p, maxlen: ctypes.c_size_t, fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> ctypes.c_int:
    """
    This works exactly like vsnprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_vsnprintf
    """
    return raw.SDL_vsnprintf(text, maxlen, fmt, ap)

def SDL_vswprintf(text: ctypes.c_wchar_p, maxlen: ctypes.c_size_t, fmt: ctypes.c_wchar_p, ap: SDL_VA_LIST) -> ctypes.c_int:
    """
    This works exactly like vswprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_vswprintf
    """
    return raw.SDL_vswprintf(text, maxlen, fmt, ap)

def SDL_asprintf(strp: LP_c_char_p, fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_int:
    """
    This works exactly like asprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_asprintf
    """
    return raw.SDL_asprintf(strp, fmt, *args)

def SDL_vasprintf(strp: LP_c_char_p, fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> ctypes.c_int:
    """
    This works exactly like vasprintf() but doesn't require access to a C runtime.

    https://wiki.libsdl.org/SDL3/SDL_vasprintf
    """
    return raw.SDL_vasprintf(strp, fmt, ap)

def SDL_srand(seed: ctypes.c_uint64) -> None:
    """
    Seeds the pseudo-random number generator.

    https://wiki.libsdl.org/SDL3/SDL_srand
    """
    return raw.SDL_srand(seed)

def SDL_rand(n: ctypes.c_int32) -> ctypes.c_int32:
    """
    Generate a pseudo-random number less than n for positive n

    https://wiki.libsdl.org/SDL3/SDL_rand
    """
    return raw.SDL_rand(n)

def SDL_randf() -> ctypes.c_float:
    """
    Generate a uniform pseudo-random floating point number less than 1.0

    https://wiki.libsdl.org/SDL3/SDL_randf
    """
    return raw.SDL_randf()

def SDL_rand_bits() -> ctypes.c_uint32:
    """
    Generate 32 pseudo-random bits.

    https://wiki.libsdl.org/SDL3/SDL_rand_bits
    """
    return raw.SDL_rand_bits()

def SDL_rand_r(state: LP_c_uint64, n: ctypes.c_int32) -> ctypes.c_int32:
    """
    Generate a pseudo-random number less than n for positive n

    https://wiki.libsdl.org/SDL3/SDL_rand_r
    """
    return raw.SDL_rand_r(state, n)

def SDL_randf_r(state: LP_c_uint64) -> ctypes.c_float:
    """
    Generate a uniform pseudo-random floating point number less than 1.0

    https://wiki.libsdl.org/SDL3/SDL_randf_r
    """
    return raw.SDL_randf_r(state)

def SDL_rand_bits_r(state: LP_c_uint64) -> ctypes.c_uint32:
    """
    Generate 32 pseudo-random bits.

    https://wiki.libsdl.org/SDL3/SDL_rand_bits_r
    """
    return raw.SDL_rand_bits_r(state)

def SDL_acos(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the arc cosine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_acos
    """
    return raw.SDL_acos(x)

def SDL_acosf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the arc cosine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_acosf
    """
    return raw.SDL_acosf(x)

def SDL_asin(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the arc sine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_asin
    """
    return raw.SDL_asin(x)

def SDL_asinf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the arc sine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_asinf
    """
    return raw.SDL_asinf(x)

def SDL_atan(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the arc tangent of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_atan
    """
    return raw.SDL_atan(x)

def SDL_atanf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the arc tangent of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_atanf
    """
    return raw.SDL_atanf(x)

def SDL_atan2(y: ctypes.c_double, x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the arc tangent of ``y / x``, using the signs of x and y to adjust the result's quadrant.

    https://wiki.libsdl.org/SDL3/SDL_atan2
    """
    return raw.SDL_atan2(y, x)

def SDL_atan2f(y: ctypes.c_float, x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the arc tangent of ``y / x``, using the signs of x and y to adjust the result's quadrant.

    https://wiki.libsdl.org/SDL3/SDL_atan2f
    """
    return raw.SDL_atan2f(y, x)

def SDL_ceil(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the ceiling of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_ceil
    """
    return raw.SDL_ceil(x)

def SDL_ceilf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the ceiling of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_ceilf
    """
    return raw.SDL_ceilf(x)

def SDL_copysign(x: ctypes.c_double, y: ctypes.c_double) -> ctypes.c_double:
    """
    Copy the sign of one floating-point value to another.

    https://wiki.libsdl.org/SDL3/SDL_copysign
    """
    return raw.SDL_copysign(x, y)

def SDL_copysignf(x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_float:
    """
    Copy the sign of one floating-point value to another.

    https://wiki.libsdl.org/SDL3/SDL_copysignf
    """
    return raw.SDL_copysignf(x, y)

def SDL_cos(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the cosine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_cos
    """
    return raw.SDL_cos(x)

def SDL_cosf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the cosine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_cosf
    """
    return raw.SDL_cosf(x)

def SDL_exp(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the exponential of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_exp
    """
    return raw.SDL_exp(x)

def SDL_expf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the exponential of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_expf
    """
    return raw.SDL_expf(x)

def SDL_fabs(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the absolute value of ``x``

    https://wiki.libsdl.org/SDL3/SDL_fabs
    """
    return raw.SDL_fabs(x)

def SDL_fabsf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the absolute value of ``x``

    https://wiki.libsdl.org/SDL3/SDL_fabsf
    """
    return raw.SDL_fabsf(x)

def SDL_floor(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the floor of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_floor
    """
    return raw.SDL_floor(x)

def SDL_floorf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the floor of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_floorf
    """
    return raw.SDL_floorf(x)

def SDL_trunc(x: ctypes.c_double) -> ctypes.c_double:
    """
    Truncate ``x`` to an integer.

    https://wiki.libsdl.org/SDL3/SDL_trunc
    """
    return raw.SDL_trunc(x)

def SDL_truncf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Truncate ``x`` to an integer.

    https://wiki.libsdl.org/SDL3/SDL_truncf
    """
    return raw.SDL_truncf(x)

def SDL_fmod(x: ctypes.c_double, y: ctypes.c_double) -> ctypes.c_double:
    """
    Return the floating-point remainder of ``x / y``

    https://wiki.libsdl.org/SDL3/SDL_fmod
    """
    return raw.SDL_fmod(x, y)

def SDL_fmodf(x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_float:
    """
    Return the floating-point remainder of ``x / y``

    https://wiki.libsdl.org/SDL3/SDL_fmodf
    """
    return raw.SDL_fmodf(x, y)

def SDL_isinf(x: ctypes.c_double) -> ctypes.c_int:
    """
    Return whether the value is infinity.

    https://wiki.libsdl.org/SDL3/SDL_isinf
    """
    return raw.SDL_isinf(x)

def SDL_isinff(x: ctypes.c_float) -> ctypes.c_int:
    """
    Return whether the value is infinity.

    https://wiki.libsdl.org/SDL3/SDL_isinff
    """
    return raw.SDL_isinff(x)

def SDL_isnan(x: ctypes.c_double) -> ctypes.c_int:
    """
    Return whether the value is NaN.

    https://wiki.libsdl.org/SDL3/SDL_isnan
    """
    return raw.SDL_isnan(x)

def SDL_isnanf(x: ctypes.c_float) -> ctypes.c_int:
    """
    Return whether the value is NaN.

    https://wiki.libsdl.org/SDL3/SDL_isnanf
    """
    return raw.SDL_isnanf(x)

def SDL_log(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the natural logarithm of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_log
    """
    return raw.SDL_log(x)

def SDL_logf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the natural logarithm of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_logf
    """
    return raw.SDL_logf(x)

def SDL_log10(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the base-10 logarithm of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_log10
    """
    return raw.SDL_log10(x)

def SDL_log10f(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the base-10 logarithm of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_log10f
    """
    return raw.SDL_log10f(x)

def SDL_modf(x: ctypes.c_double, y: LP_c_double) -> ctypes.c_double:
    """
    Split ``x`` into integer and fractional parts

    https://wiki.libsdl.org/SDL3/SDL_modf
    """
    return raw.SDL_modf(x, y)

def SDL_modff(x: ctypes.c_float, y: LP_c_float) -> ctypes.c_float:
    """
    Split ``x`` into integer and fractional parts

    https://wiki.libsdl.org/SDL3/SDL_modff
    """
    return raw.SDL_modff(x, y)

def SDL_pow(x: ctypes.c_double, y: ctypes.c_double) -> ctypes.c_double:
    """
    Raise ``x`` to the power ``y``

    https://wiki.libsdl.org/SDL3/SDL_pow
    """
    return raw.SDL_pow(x, y)

def SDL_powf(x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_float:
    """
    Raise ``x`` to the power ``y``

    https://wiki.libsdl.org/SDL3/SDL_powf
    """
    return raw.SDL_powf(x, y)

def SDL_round(x: ctypes.c_double) -> ctypes.c_double:
    """
    Round ``x`` to the nearest integer.

    https://wiki.libsdl.org/SDL3/SDL_round
    """
    return raw.SDL_round(x)

def SDL_roundf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Round ``x`` to the nearest integer.

    https://wiki.libsdl.org/SDL3/SDL_roundf
    """
    return raw.SDL_roundf(x)

def SDL_lround(x: ctypes.c_double) -> ctypes.c_long:
    """
    Round ``x`` to the nearest integer representable as a long

    https://wiki.libsdl.org/SDL3/SDL_lround
    """
    return raw.SDL_lround(x)

def SDL_lroundf(x: ctypes.c_float) -> ctypes.c_long:
    """
    Round ``x`` to the nearest integer representable as a long

    https://wiki.libsdl.org/SDL3/SDL_lroundf
    """
    return raw.SDL_lroundf(x)

def SDL_scalbn(x: ctypes.c_double, n: ctypes.c_int) -> ctypes.c_double:
    """
    Scale ``x`` by an integer power of two.

    https://wiki.libsdl.org/SDL3/SDL_scalbn
    """
    return raw.SDL_scalbn(x, n)

def SDL_scalbnf(x: ctypes.c_float, n: ctypes.c_int) -> ctypes.c_float:
    """
    Scale ``x`` by an integer power of two.

    https://wiki.libsdl.org/SDL3/SDL_scalbnf
    """
    return raw.SDL_scalbnf(x, n)

def SDL_sin(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the sine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_sin
    """
    return raw.SDL_sin(x)

def SDL_sinf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the sine of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_sinf
    """
    return raw.SDL_sinf(x)

def SDL_sqrt(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the square root of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_sqrt
    """
    return raw.SDL_sqrt(x)

def SDL_sqrtf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the square root of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_sqrtf
    """
    return raw.SDL_sqrtf(x)

def SDL_tan(x: ctypes.c_double) -> ctypes.c_double:
    """
    Compute the tangent of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_tan
    """
    return raw.SDL_tan(x)

def SDL_tanf(x: ctypes.c_float) -> ctypes.c_float:
    """
    Compute the tangent of ``x``.

    https://wiki.libsdl.org/SDL3/SDL_tanf
    """
    return raw.SDL_tanf(x)

def SDL_iconv_open(tocode: ctypes.c_char_p, fromcode: ctypes.c_char_p) -> SDL_iconv_t:
    """
    This function allocates a context for the specified character set conversion.

    https://wiki.libsdl.org/SDL3/SDL_iconv_open
    """
    return raw.SDL_iconv_open(tocode, fromcode)

def SDL_iconv_close(cd: SDL_iconv_t) -> ctypes.c_int:
    """
    This function frees a context used for character set conversion.

    https://wiki.libsdl.org/SDL3/SDL_iconv_close
    """
    return raw.SDL_iconv_close(cd)

def SDL_iconv(cd: SDL_iconv_t, inbuf: LP_c_char_p, inbytesleft: LP_c_size_t, outbuf: LP_c_char_p, outbytesleft: LP_c_size_t) -> ctypes.c_size_t:
    """
    This function converts text between encodings, reading from and writing to a buffer.

    https://wiki.libsdl.org/SDL3/SDL_iconv
    """
    return raw.SDL_iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)

def SDL_iconv_string(tocode: ctypes.c_char_p, fromcode: ctypes.c_char_p, inbuf: ctypes.c_char_p, inbytesleft: ctypes.c_size_t) -> ctypes.c_char_p:
    """
    Helper function to convert a string's encoding in one call.

    https://wiki.libsdl.org/SDL3/SDL_iconv_string
    """
    return raw.SDL_iconv_string(tocode, fromcode, inbuf, inbytesleft)

def SDL_GetPixelFormatName(format: SDL_PixelFormat) -> ctypes.c_char_p:
    """
    Get the human readable name of a pixel format.

    https://wiki.libsdl.org/SDL3/SDL_GetPixelFormatName
    """
    return raw.SDL_GetPixelFormatName(format)

def SDL_GetMasksForPixelFormat(format: SDL_PixelFormat, bpp: LP_c_int, Rmask: LP_c_uint32, Gmask: LP_c_uint32, Bmask: LP_c_uint32, Amask: LP_c_uint32) -> ctypes.c_bool:
    """
    Convert one of the enumerated pixel formats to a bpp value and RGBA masks.

    https://wiki.libsdl.org/SDL3/SDL_GetMasksForPixelFormat
    """
    return raw.SDL_GetMasksForPixelFormat(format, bpp, Rmask, Gmask, Bmask, Amask)

def SDL_GetPixelFormatForMasks(bpp: ctypes.c_int, Rmask: ctypes.c_uint32, Gmask: ctypes.c_uint32, Bmask: ctypes.c_uint32, Amask: ctypes.c_uint32) -> SDL_PixelFormat:
    """
    Convert a bpp value and RGBA masks to an enumerated pixel format.

    https://wiki.libsdl.org/SDL3/SDL_GetPixelFormatForMasks
    """
    return raw.SDL_GetPixelFormatForMasks(bpp, Rmask, Gmask, Bmask, Amask)

def SDL_GetPixelFormatDetails(format: SDL_PixelFormat) -> LP_SDL_PixelFormatDetails:
    """
    Create an [SDL_PixelFormatDetails](https://wiki.libsdl.org/SDL3/SDL_PixelFormatDetails) structure corresponding to a pixel format.

    https://wiki.libsdl.org/SDL3/SDL_GetPixelFormatDetails
    """
    return raw.SDL_GetPixelFormatDetails(format)

def SDL_CreatePalette(ncolors: ctypes.c_int) -> LP_SDL_Palette:
    """
    Create a palette structure with the specified number of color entries.

    https://wiki.libsdl.org/SDL3/SDL_CreatePalette
    """
    return raw.SDL_CreatePalette(ncolors)

def SDL_SetPaletteColors(palette: LP_SDL_Palette, colors: LP_SDL_Color, firstcolor: ctypes.c_int, ncolors: ctypes.c_int) -> ctypes.c_bool:
    """
    Set a range of colors in a palette.

    https://wiki.libsdl.org/SDL3/SDL_SetPaletteColors
    """
    return raw.SDL_SetPaletteColors(palette, colors, firstcolor, ncolors)

def SDL_DestroyPalette(palette: LP_SDL_Palette) -> None:
    """
    Free a palette created with [SDL_CreatePalette](https://wiki.libsdl.org/SDL3/SDL_CreatePalette)().

    https://wiki.libsdl.org/SDL3/SDL_DestroyPalette
    """
    return raw.SDL_DestroyPalette(palette)

def SDL_MapRGB(format: LP_SDL_PixelFormatDetails, palette: LP_SDL_Palette, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8) -> ctypes.c_uint32:
    """
    Map an RGB triple to an opaque pixel value for a given pixel format.

    https://wiki.libsdl.org/SDL3/SDL_MapRGB
    """
    return raw.SDL_MapRGB(format, palette, r, g, b)

def SDL_MapRGBA(format: LP_SDL_PixelFormatDetails, palette: LP_SDL_Palette, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8, a: ctypes.c_uint8) -> ctypes.c_uint32:
    """
    Map an RGBA quadruple to a pixel value for a given pixel format.

    https://wiki.libsdl.org/SDL3/SDL_MapRGBA
    """
    return raw.SDL_MapRGBA(format, palette, r, g, b, a)

def SDL_GetRGB(pixelvalue: ctypes.c_uint32, format: LP_SDL_PixelFormatDetails, palette: LP_SDL_Palette, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8) -> None:
    """
    Get RGB values from a pixel in the specified format.

    https://wiki.libsdl.org/SDL3/SDL_GetRGB
    """
    return raw.SDL_GetRGB(pixelvalue, format, palette, r, g, b)

def SDL_GetRGBA(pixelvalue: ctypes.c_uint32, format: LP_SDL_PixelFormatDetails, palette: LP_SDL_Palette, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8, a: LP_c_uint8) -> None:
    """
    Get RGBA values from a pixel in the specified format.

    https://wiki.libsdl.org/SDL3/SDL_GetRGBA
    """
    return raw.SDL_GetRGBA(pixelvalue, format, palette, r, g, b, a)

def SDL_HasRectIntersection(A: LP_SDL_Rect, B: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Determine whether two rectangles intersect.

    https://wiki.libsdl.org/SDL3/SDL_HasRectIntersection
    """
    return raw.SDL_HasRectIntersection(A, B)

def SDL_GetRectIntersection(A: LP_SDL_Rect, B: LP_SDL_Rect, result: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Calculate the intersection of two rectangles.

    https://wiki.libsdl.org/SDL3/SDL_GetRectIntersection
    """
    return raw.SDL_GetRectIntersection(A, B, result)

def SDL_GetRectUnion(A: LP_SDL_Rect, B: LP_SDL_Rect, result: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Calculate the union of two rectangles.

    https://wiki.libsdl.org/SDL3/SDL_GetRectUnion
    """
    return raw.SDL_GetRectUnion(A, B, result)

def SDL_GetRectEnclosingPoints(points: LP_SDL_Point, count: ctypes.c_int, clip: LP_SDL_Rect, result: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Calculate a minimal rectangle enclosing a set of points.

    https://wiki.libsdl.org/SDL3/SDL_GetRectEnclosingPoints
    """
    return raw.SDL_GetRectEnclosingPoints(points, count, clip, result)

def SDL_GetRectAndLineIntersection(rect: LP_SDL_Rect, X1: LP_c_int, Y1: LP_c_int, X2: LP_c_int, Y2: LP_c_int) -> ctypes.c_bool:
    """
    Calculate the intersection of a rectangle and line segment.

    https://wiki.libsdl.org/SDL3/SDL_GetRectAndLineIntersection
    """
    return raw.SDL_GetRectAndLineIntersection(rect, X1, Y1, X2, Y2)

def SDL_HasRectIntersectionFloat(A: LP_SDL_FRect, B: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Determine whether two rectangles intersect with float precision.

    https://wiki.libsdl.org/SDL3/SDL_HasRectIntersectionFloat
    """
    return raw.SDL_HasRectIntersectionFloat(A, B)

def SDL_GetRectIntersectionFloat(A: LP_SDL_FRect, B: LP_SDL_FRect, result: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Calculate the intersection of two rectangles with float precision.

    https://wiki.libsdl.org/SDL3/SDL_GetRectIntersectionFloat
    """
    return raw.SDL_GetRectIntersectionFloat(A, B, result)

def SDL_GetRectUnionFloat(A: LP_SDL_FRect, B: LP_SDL_FRect, result: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Calculate the union of two rectangles with float precision.

    https://wiki.libsdl.org/SDL3/SDL_GetRectUnionFloat
    """
    return raw.SDL_GetRectUnionFloat(A, B, result)

def SDL_GetRectEnclosingPointsFloat(points: LP_SDL_FPoint, count: ctypes.c_int, clip: LP_SDL_FRect, result: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Calculate a minimal rectangle enclosing a set of points with float precision.

    https://wiki.libsdl.org/SDL3/SDL_GetRectEnclosingPointsFloat
    """
    return raw.SDL_GetRectEnclosingPointsFloat(points, count, clip, result)

def SDL_GetRectAndLineIntersectionFloat(rect: LP_SDL_FRect, X1: LP_c_float, Y1: LP_c_float, X2: LP_c_float, Y2: LP_c_float) -> ctypes.c_bool:
    """
    Calculate the intersection of a rectangle and line segment with float precision.

    https://wiki.libsdl.org/SDL3/SDL_GetRectAndLineIntersectionFloat
    """
    return raw.SDL_GetRectAndLineIntersectionFloat(rect, X1, Y1, X2, Y2)

def SDL_CreateSurface(width: ctypes.c_int, height: ctypes.c_int, format: SDL_PixelFormat) -> LP_SDL_Surface:
    """
    Allocate a new surface with a specific pixel format.

    https://wiki.libsdl.org/SDL3/SDL_CreateSurface
    """
    return raw.SDL_CreateSurface(width, height, format)

def SDL_CreateSurfaceFrom(width: ctypes.c_int, height: ctypes.c_int, format: SDL_PixelFormat, pixels: ctypes.c_void_p, pitch: ctypes.c_int) -> LP_SDL_Surface:
    """
    Allocate a new surface with a specific pixel format and existing pixel data.

    https://wiki.libsdl.org/SDL3/SDL_CreateSurfaceFrom
    """
    return raw.SDL_CreateSurfaceFrom(width, height, format, pixels, pitch)

def SDL_DestroySurface(surface: LP_SDL_Surface) -> None:
    """
    Free a surface.

    https://wiki.libsdl.org/SDL3/SDL_DestroySurface
    """
    return raw.SDL_DestroySurface(surface)

def SDL_GetSurfaceProperties(surface: LP_SDL_Surface) -> SDL_PropertiesID:
    """
    Get the properties associated with a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceProperties
    """
    return raw.SDL_GetSurfaceProperties(surface)

def SDL_SetSurfaceColorspace(surface: LP_SDL_Surface, colorspace: SDL_Colorspace) -> ctypes.c_bool:
    """
    Set the colorspace used by a surface.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceColorspace
    """
    return raw.SDL_SetSurfaceColorspace(surface, colorspace)

def SDL_GetSurfaceColorspace(surface: LP_SDL_Surface) -> SDL_Colorspace:
    """
    Get the colorspace used by a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceColorspace
    """
    return raw.SDL_GetSurfaceColorspace(surface)

def SDL_CreateSurfacePalette(surface: LP_SDL_Surface) -> LP_SDL_Palette:
    """
    Create a palette and associate it with a surface.

    https://wiki.libsdl.org/SDL3/SDL_CreateSurfacePalette
    """
    return raw.SDL_CreateSurfacePalette(surface)

def SDL_SetSurfacePalette(surface: LP_SDL_Surface, palette: LP_SDL_Palette) -> ctypes.c_bool:
    """
    Set the palette used by a surface.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfacePalette
    """
    return raw.SDL_SetSurfacePalette(surface, palette)

def SDL_GetSurfacePalette(surface: LP_SDL_Surface) -> LP_SDL_Palette:
    """
    Get the palette used by a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfacePalette
    """
    return raw.SDL_GetSurfacePalette(surface)

def SDL_AddSurfaceAlternateImage(surface: LP_SDL_Surface, image: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Add an alternate version of a surface.

    https://wiki.libsdl.org/SDL3/SDL_AddSurfaceAlternateImage
    """
    return raw.SDL_AddSurfaceAlternateImage(surface, image)

def SDL_SurfaceHasAlternateImages(surface: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Return whether a surface has alternate versions available.

    https://wiki.libsdl.org/SDL3/SDL_SurfaceHasAlternateImages
    """
    return raw.SDL_SurfaceHasAlternateImages(surface)

def SDL_GetSurfaceImages(surface: LP_SDL_Surface, count: LP_c_int) -> LP_LP_SDL_Surface:
    """
    Get an array including all versions of a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceImages
    """
    return raw.SDL_GetSurfaceImages(surface, count)

def SDL_RemoveSurfaceAlternateImages(surface: LP_SDL_Surface) -> None:
    """
    Remove all alternate versions of a surface.

    https://wiki.libsdl.org/SDL3/SDL_RemoveSurfaceAlternateImages
    """
    return raw.SDL_RemoveSurfaceAlternateImages(surface)

def SDL_LockSurface(surface: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Set up a surface for directly accessing the pixels.

    https://wiki.libsdl.org/SDL3/SDL_LockSurface
    """
    return raw.SDL_LockSurface(surface)

def SDL_UnlockSurface(surface: LP_SDL_Surface) -> None:
    """
    Release a surface after directly accessing the pixels.

    https://wiki.libsdl.org/SDL3/SDL_UnlockSurface
    """
    return raw.SDL_UnlockSurface(surface)

def SDL_LoadSurface_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_SDL_Surface:
    """
    Load a BMP or PNG image from a seekable SDL data stream.

    https://wiki.libsdl.org/SDL3/SDL_LoadSurface_IO
    """
    return raw.SDL_LoadSurface_IO(src, closeio)

def SDL_LoadSurface(file: ctypes.c_char_p) -> LP_SDL_Surface:
    """
    Load a BMP or PNG image from a file.

    https://wiki.libsdl.org/SDL3/SDL_LoadSurface
    """
    return raw.SDL_LoadSurface(file)

def SDL_LoadBMP_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_SDL_Surface:
    """
    Load a BMP image from a seekable SDL data stream.

    https://wiki.libsdl.org/SDL3/SDL_LoadBMP_IO
    """
    return raw.SDL_LoadBMP_IO(src, closeio)

def SDL_LoadBMP(file: ctypes.c_char_p) -> LP_SDL_Surface:
    """
    Load a BMP image from a file.

    https://wiki.libsdl.org/SDL3/SDL_LoadBMP
    """
    return raw.SDL_LoadBMP(file)

def SDL_SaveBMP_IO(surface: LP_SDL_Surface, dst: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Save a surface to a seekable SDL data stream in BMP format.

    https://wiki.libsdl.org/SDL3/SDL_SaveBMP_IO
    """
    return raw.SDL_SaveBMP_IO(surface, dst, closeio)

def SDL_SaveBMP(surface: LP_SDL_Surface, file: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Save a surface to a file in BMP format.

    https://wiki.libsdl.org/SDL3/SDL_SaveBMP
    """
    return raw.SDL_SaveBMP(surface, file)

def SDL_LoadPNG_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_SDL_Surface:
    """
    Load a PNG image from a seekable SDL data stream.

    https://wiki.libsdl.org/SDL3/SDL_LoadPNG_IO
    """
    return raw.SDL_LoadPNG_IO(src, closeio)

def SDL_LoadPNG(file: ctypes.c_char_p) -> LP_SDL_Surface:
    """
    Load a PNG image from a file.

    https://wiki.libsdl.org/SDL3/SDL_LoadPNG
    """
    return raw.SDL_LoadPNG(file)

def SDL_SavePNG_IO(surface: LP_SDL_Surface, dst: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Save a surface to a seekable SDL data stream in PNG format.

    https://wiki.libsdl.org/SDL3/SDL_SavePNG_IO
    """
    return raw.SDL_SavePNG_IO(surface, dst, closeio)

def SDL_SavePNG(surface: LP_SDL_Surface, file: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Save a surface to a file in PNG format.

    https://wiki.libsdl.org/SDL3/SDL_SavePNG
    """
    return raw.SDL_SavePNG(surface, file)

def SDL_SetSurfaceRLE(surface: LP_SDL_Surface, enabled: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the RLE acceleration hint for a surface.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceRLE
    """
    return raw.SDL_SetSurfaceRLE(surface, enabled)

def SDL_SurfaceHasRLE(surface: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Returns whether the surface is RLE enabled.

    https://wiki.libsdl.org/SDL3/SDL_SurfaceHasRLE
    """
    return raw.SDL_SurfaceHasRLE(surface)

def SDL_SetSurfaceColorKey(surface: LP_SDL_Surface, enabled: ctypes.c_bool, key: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Set the color key (transparent pixel) in a surface.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceColorKey
    """
    return raw.SDL_SetSurfaceColorKey(surface, enabled, key)

def SDL_SurfaceHasColorKey(surface: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Returns whether the surface has a color key.

    https://wiki.libsdl.org/SDL3/SDL_SurfaceHasColorKey
    """
    return raw.SDL_SurfaceHasColorKey(surface)

def SDL_GetSurfaceColorKey(surface: LP_SDL_Surface, key: LP_c_uint32) -> ctypes.c_bool:
    """
    Get the color key (transparent pixel) for a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceColorKey
    """
    return raw.SDL_GetSurfaceColorKey(surface, key)

def SDL_SetSurfaceColorMod(surface: LP_SDL_Surface, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set an additional color value multiplied into blit operations.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceColorMod
    """
    return raw.SDL_SetSurfaceColorMod(surface, r, g, b)

def SDL_GetSurfaceColorMod(surface: LP_SDL_Surface, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the additional color value multiplied into blit operations.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceColorMod
    """
    return raw.SDL_GetSurfaceColorMod(surface, r, g, b)

def SDL_SetSurfaceAlphaMod(surface: LP_SDL_Surface, alpha: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set an additional alpha value used in blit operations.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceAlphaMod
    """
    return raw.SDL_SetSurfaceAlphaMod(surface, alpha)

def SDL_GetSurfaceAlphaMod(surface: LP_SDL_Surface, alpha: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the additional alpha value used in blit operations.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceAlphaMod
    """
    return raw.SDL_GetSurfaceAlphaMod(surface, alpha)

def SDL_SetSurfaceBlendMode(surface: LP_SDL_Surface, blendMode: SDL_BlendMode) -> ctypes.c_bool:
    """
    Set the blend mode used for blit operations.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceBlendMode
    """
    return raw.SDL_SetSurfaceBlendMode(surface, blendMode)

def SDL_GetSurfaceBlendMode(surface: LP_SDL_Surface, blendMode: LP_SDL_BlendMode) -> ctypes.c_bool:
    """
    Get the blend mode used for blit operations.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceBlendMode
    """
    return raw.SDL_GetSurfaceBlendMode(surface, blendMode)

def SDL_SetSurfaceClipRect(surface: LP_SDL_Surface, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Set the clipping rectangle for a surface.

    https://wiki.libsdl.org/SDL3/SDL_SetSurfaceClipRect
    """
    return raw.SDL_SetSurfaceClipRect(surface, rect)

def SDL_GetSurfaceClipRect(surface: LP_SDL_Surface, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the clipping rectangle for a surface.

    https://wiki.libsdl.org/SDL3/SDL_GetSurfaceClipRect
    """
    return raw.SDL_GetSurfaceClipRect(surface, rect)

def SDL_FlipSurface(surface: LP_SDL_Surface, flip: SDL_FlipMode) -> ctypes.c_bool:
    """
    Flip a surface vertically or horizontally.

    https://wiki.libsdl.org/SDL3/SDL_FlipSurface
    """
    return raw.SDL_FlipSurface(surface, flip)

def SDL_RotateSurface(surface: LP_SDL_Surface, angle: ctypes.c_float) -> LP_SDL_Surface:
    """
    Return a copy of a surface rotated clockwise a number of degrees.

    https://wiki.libsdl.org/SDL3/SDL_RotateSurface
    """
    return raw.SDL_RotateSurface(surface, angle)

def SDL_DuplicateSurface(surface: LP_SDL_Surface) -> LP_SDL_Surface:
    """
    Creates a new surface identical to the existing surface.

    https://wiki.libsdl.org/SDL3/SDL_DuplicateSurface
    """
    return raw.SDL_DuplicateSurface(surface)

def SDL_ScaleSurface(surface: LP_SDL_Surface, width: ctypes.c_int, height: ctypes.c_int, scaleMode: SDL_ScaleMode) -> LP_SDL_Surface:
    """
    Creates a new surface identical to the existing surface, scaled to the desired size.

    https://wiki.libsdl.org/SDL3/SDL_ScaleSurface
    """
    return raw.SDL_ScaleSurface(surface, width, height, scaleMode)

def SDL_ConvertSurface(surface: LP_SDL_Surface, format: SDL_PixelFormat) -> LP_SDL_Surface:
    """
    Copy an existing surface to a new surface of the specified format.

    https://wiki.libsdl.org/SDL3/SDL_ConvertSurface
    """
    return raw.SDL_ConvertSurface(surface, format)

def SDL_ConvertSurfaceAndColorspace(surface: LP_SDL_Surface, format: SDL_PixelFormat, palette: LP_SDL_Palette, colorspace: SDL_Colorspace, props: SDL_PropertiesID) -> LP_SDL_Surface:
    """
    Copy an existing surface to a new surface of the specified format and colorspace.

    https://wiki.libsdl.org/SDL3/SDL_ConvertSurfaceAndColorspace
    """
    return raw.SDL_ConvertSurfaceAndColorspace(surface, format, palette, colorspace, props)

def SDL_ConvertPixels(width: ctypes.c_int, height: ctypes.c_int, src_format: SDL_PixelFormat, src: ctypes.c_void_p, src_pitch: ctypes.c_int, dst_format: SDL_PixelFormat, dst: ctypes.c_void_p, dst_pitch: ctypes.c_int) -> ctypes.c_bool:
    """
    Copy a block of pixels of one format to another format.

    https://wiki.libsdl.org/SDL3/SDL_ConvertPixels
    """
    return raw.SDL_ConvertPixels(width, height, src_format, src, src_pitch, dst_format, dst, dst_pitch)

def SDL_ConvertPixelsAndColorspace(width: ctypes.c_int, height: ctypes.c_int, src_format: SDL_PixelFormat, src_colorspace: SDL_Colorspace, src_properties: SDL_PropertiesID, src: ctypes.c_void_p, src_pitch: ctypes.c_int, dst_format: SDL_PixelFormat, dst_colorspace: SDL_Colorspace, dst_properties: SDL_PropertiesID, dst: ctypes.c_void_p, dst_pitch: ctypes.c_int) -> ctypes.c_bool:
    """
    Copy a block of pixels of one format and colorspace to another format and colorspace.

    https://wiki.libsdl.org/SDL3/SDL_ConvertPixelsAndColorspace
    """
    return raw.SDL_ConvertPixelsAndColorspace(width, height, src_format, src_colorspace, src_properties, src, src_pitch, dst_format, dst_colorspace, dst_properties, dst, dst_pitch)

def SDL_PremultiplyAlpha(width: ctypes.c_int, height: ctypes.c_int, src_format: SDL_PixelFormat, src: ctypes.c_void_p, src_pitch: ctypes.c_int, dst_format: SDL_PixelFormat, dst: ctypes.c_void_p, dst_pitch: ctypes.c_int, linear: ctypes.c_bool) -> ctypes.c_bool:
    """
    Premultiply the alpha on a block of pixels.

    https://wiki.libsdl.org/SDL3/SDL_PremultiplyAlpha
    """
    return raw.SDL_PremultiplyAlpha(width, height, src_format, src, src_pitch, dst_format, dst, dst_pitch, linear)

def SDL_PremultiplySurfaceAlpha(surface: LP_SDL_Surface, linear: ctypes.c_bool) -> ctypes.c_bool:
    """
    Premultiply the alpha in a surface.

    https://wiki.libsdl.org/SDL3/SDL_PremultiplySurfaceAlpha
    """
    return raw.SDL_PremultiplySurfaceAlpha(surface, linear)

def SDL_ClearSurface(surface: LP_SDL_Surface, r: ctypes.c_float, g: ctypes.c_float, b: ctypes.c_float, a: ctypes.c_float) -> ctypes.c_bool:
    """
    Clear a surface with a specific color, with floating point precision.

    https://wiki.libsdl.org/SDL3/SDL_ClearSurface
    """
    return raw.SDL_ClearSurface(surface, r, g, b, a)

def SDL_FillSurfaceRect(dst: LP_SDL_Surface, rect: LP_SDL_Rect, color: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Perform a fast fill of a rectangle with a specific color.

    https://wiki.libsdl.org/SDL3/SDL_FillSurfaceRect
    """
    return raw.SDL_FillSurfaceRect(dst, rect, color)

def SDL_FillSurfaceRects(dst: LP_SDL_Surface, rects: LP_SDL_Rect, count: ctypes.c_int, color: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Perform a fast fill of a set of rectangles with a specific color.

    https://wiki.libsdl.org/SDL3/SDL_FillSurfaceRects
    """
    return raw.SDL_FillSurfaceRects(dst, rects, count, color)

def SDL_BlitSurface(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Performs a fast blit from the source surface to the destination surface with clipping.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurface
    """
    return raw.SDL_BlitSurface(src, srcrect, dst, dstrect)

def SDL_BlitSurfaceUnchecked(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Perform low-level surface blitting only.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurfaceUnchecked
    """
    return raw.SDL_BlitSurfaceUnchecked(src, srcrect, dst, dstrect)

def SDL_BlitSurfaceScaled(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect, scaleMode: SDL_ScaleMode) -> ctypes.c_bool:
    """
    Perform a scaled blit to a destination surface, which may be of a different format.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurfaceScaled
    """
    return raw.SDL_BlitSurfaceScaled(src, srcrect, dst, dstrect, scaleMode)

def SDL_BlitSurfaceUncheckedScaled(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect, scaleMode: SDL_ScaleMode) -> ctypes.c_bool:
    """
    Perform low-level surface scaled blitting only.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurfaceUncheckedScaled
    """
    return raw.SDL_BlitSurfaceUncheckedScaled(src, srcrect, dst, dstrect, scaleMode)

def SDL_StretchSurface(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect, scaleMode: SDL_ScaleMode) -> ctypes.c_bool:
    """
    Perform a stretched pixel copy from one surface to another.

    https://wiki.libsdl.org/SDL3/SDL_StretchSurface
    """
    return raw.SDL_StretchSurface(src, srcrect, dst, dstrect, scaleMode)

def SDL_BlitSurfaceTiled(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Perform a tiled blit to a destination surface, which may be of a different format.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurfaceTiled
    """
    return raw.SDL_BlitSurfaceTiled(src, srcrect, dst, dstrect)

def SDL_BlitSurfaceTiledWithScale(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, scale: ctypes.c_float, scaleMode: SDL_ScaleMode, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Perform a scaled and tiled blit to a destination surface, which may be of a different format.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurfaceTiledWithScale
    """
    return raw.SDL_BlitSurfaceTiledWithScale(src, srcrect, scale, scaleMode, dst, dstrect)

def SDL_BlitSurface9Grid(src: LP_SDL_Surface, srcrect: LP_SDL_Rect, left_width: ctypes.c_int, right_width: ctypes.c_int, top_height: ctypes.c_int, bottom_height: ctypes.c_int, scale: ctypes.c_float, scaleMode: SDL_ScaleMode, dst: LP_SDL_Surface, dstrect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Perform a scaled blit using the 9-grid algorithm to a destination surface, which may be of a different format.

    https://wiki.libsdl.org/SDL3/SDL_BlitSurface9Grid
    """
    return raw.SDL_BlitSurface9Grid(src, srcrect, left_width, right_width, top_height, bottom_height, scale, scaleMode, dst, dstrect)

def SDL_MapSurfaceRGB(surface: LP_SDL_Surface, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8) -> ctypes.c_uint32:
    """
    Map an RGB triple to an opaque pixel value for a surface.

    https://wiki.libsdl.org/SDL3/SDL_MapSurfaceRGB
    """
    return raw.SDL_MapSurfaceRGB(surface, r, g, b)

def SDL_MapSurfaceRGBA(surface: LP_SDL_Surface, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8, a: ctypes.c_uint8) -> ctypes.c_uint32:
    """
    Map an RGBA quadruple to a pixel value for a surface.

    https://wiki.libsdl.org/SDL3/SDL_MapSurfaceRGBA
    """
    return raw.SDL_MapSurfaceRGBA(surface, r, g, b, a)

def SDL_ReadSurfacePixel(surface: LP_SDL_Surface, x: ctypes.c_int, y: ctypes.c_int, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8, a: LP_c_uint8) -> ctypes.c_bool:
    """
    Retrieves a single pixel from a surface.

    https://wiki.libsdl.org/SDL3/SDL_ReadSurfacePixel
    """
    return raw.SDL_ReadSurfacePixel(surface, x, y, r, g, b, a)

def SDL_ReadSurfacePixelFloat(surface: LP_SDL_Surface, x: ctypes.c_int, y: ctypes.c_int, r: LP_c_float, g: LP_c_float, b: LP_c_float, a: LP_c_float) -> ctypes.c_bool:
    """
    Retrieves a single pixel from a surface.

    https://wiki.libsdl.org/SDL3/SDL_ReadSurfacePixelFloat
    """
    return raw.SDL_ReadSurfacePixelFloat(surface, x, y, r, g, b, a)

def SDL_WriteSurfacePixel(surface: LP_SDL_Surface, x: ctypes.c_int, y: ctypes.c_int, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8, a: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Writes a single pixel to a surface.

    https://wiki.libsdl.org/SDL3/SDL_WriteSurfacePixel
    """
    return raw.SDL_WriteSurfacePixel(surface, x, y, r, g, b, a)

def SDL_WriteSurfacePixelFloat(surface: LP_SDL_Surface, x: ctypes.c_int, y: ctypes.c_int, r: ctypes.c_float, g: ctypes.c_float, b: ctypes.c_float, a: ctypes.c_float) -> ctypes.c_bool:
    """
    Writes a single pixel to a surface.

    https://wiki.libsdl.org/SDL3/SDL_WriteSurfacePixelFloat
    """
    return raw.SDL_WriteSurfacePixelFloat(surface, x, y, r, g, b, a)

def SDL_GetNumCameraDrivers() -> ctypes.c_int:
    """
    Use this function to get the number of built-in camera drivers.

    https://wiki.libsdl.org/SDL3/SDL_GetNumCameraDrivers
    """
    return raw.SDL_GetNumCameraDrivers()

def SDL_GetCameraDriver(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Use this function to get the name of a built in camera driver.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraDriver
    """
    return raw.SDL_GetCameraDriver(index)

def SDL_GetCurrentCameraDriver() -> ctypes.c_char_p:
    """
    Get the name of the current camera driver.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentCameraDriver
    """
    return raw.SDL_GetCurrentCameraDriver()

def SDL_GetCameras(count: LP_c_int) -> LP_SDL_CameraID:
    """
    Get a list of currently connected camera devices.

    https://wiki.libsdl.org/SDL3/SDL_GetCameras
    """
    return raw.SDL_GetCameras(count)

def SDL_GetCameraSupportedFormats(instance_id: SDL_CameraID, count: LP_c_int) -> LP_LP_SDL_CameraSpec:
    """
    Get the list of native formats/sizes a camera supports.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraSupportedFormats
    """
    return raw.SDL_GetCameraSupportedFormats(instance_id, count)

def SDL_GetCameraName(instance_id: SDL_CameraID) -> ctypes.c_char_p:
    """
    Get the human-readable device name for a camera.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraName
    """
    return raw.SDL_GetCameraName(instance_id)

def SDL_GetCameraPosition(instance_id: SDL_CameraID) -> SDL_CameraPosition:
    """
    Get the position of the camera in relation to the system.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraPosition
    """
    return raw.SDL_GetCameraPosition(instance_id)

def SDL_OpenCamera(instance_id: SDL_CameraID, spec: LP_SDL_CameraSpec) -> LP_SDL_Camera:
    """
    Open a video recording device (a "camera").

    https://wiki.libsdl.org/SDL3/SDL_OpenCamera
    """
    return raw.SDL_OpenCamera(instance_id, spec)

def SDL_GetCameraPermissionState(camera: LP_SDL_Camera) -> SDL_CameraPermissionState:
    """
    Query if camera access has been approved by the user.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraPermissionState
    """
    return raw.SDL_GetCameraPermissionState(camera)

def SDL_GetCameraID(camera: LP_SDL_Camera) -> SDL_CameraID:
    """
    Get the instance ID of an opened camera.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraID
    """
    return raw.SDL_GetCameraID(camera)

def SDL_GetCameraProperties(camera: LP_SDL_Camera) -> SDL_PropertiesID:
    """
    Get the properties associated with an opened camera.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraProperties
    """
    return raw.SDL_GetCameraProperties(camera)

def SDL_GetCameraFormat(camera: LP_SDL_Camera, spec: LP_SDL_CameraSpec) -> ctypes.c_bool:
    """
    Get the spec that a camera is using when generating images.

    https://wiki.libsdl.org/SDL3/SDL_GetCameraFormat
    """
    return raw.SDL_GetCameraFormat(camera, spec)

def SDL_AcquireCameraFrame(camera: LP_SDL_Camera, timestampNS: LP_c_uint64) -> LP_SDL_Surface:
    """
    Acquire a frame.

    https://wiki.libsdl.org/SDL3/SDL_AcquireCameraFrame
    """
    return raw.SDL_AcquireCameraFrame(camera, timestampNS)

def SDL_ReleaseCameraFrame(camera: LP_SDL_Camera, frame: LP_SDL_Surface) -> None:
    """
    Release a frame of video acquired from a camera.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseCameraFrame
    """
    return raw.SDL_ReleaseCameraFrame(camera, frame)

def SDL_CloseCamera(camera: LP_SDL_Camera) -> None:
    """
    Use this function to shut down camera processing and close the camera device.

    https://wiki.libsdl.org/SDL3/SDL_CloseCamera
    """
    return raw.SDL_CloseCamera(camera)

def SDL_SetClipboardText(text: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Put UTF-8 text into the clipboard.

    https://wiki.libsdl.org/SDL3/SDL_SetClipboardText
    """
    return raw.SDL_SetClipboardText(text)

def SDL_GetClipboardText() -> ctypes.c_char_p:
    """
    Get UTF-8 text from the clipboard.

    https://wiki.libsdl.org/SDL3/SDL_GetClipboardText
    """
    return raw.SDL_GetClipboardText()

def SDL_HasClipboardText() -> ctypes.c_bool:
    """
    Query whether the clipboard exists and contains a non-empty text string.

    https://wiki.libsdl.org/SDL3/SDL_HasClipboardText
    """
    return raw.SDL_HasClipboardText()

def SDL_SetPrimarySelectionText(text: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Put UTF-8 text into the primary selection.

    https://wiki.libsdl.org/SDL3/SDL_SetPrimarySelectionText
    """
    return raw.SDL_SetPrimarySelectionText(text)

def SDL_GetPrimarySelectionText() -> ctypes.c_char_p:
    """
    Get UTF-8 text from the primary selection.

    https://wiki.libsdl.org/SDL3/SDL_GetPrimarySelectionText
    """
    return raw.SDL_GetPrimarySelectionText()

def SDL_HasPrimarySelectionText() -> ctypes.c_bool:
    """
    Query whether the primary selection exists and contains a non-empty text string.

    https://wiki.libsdl.org/SDL3/SDL_HasPrimarySelectionText
    """
    return raw.SDL_HasPrimarySelectionText()

def SDL_SetClipboardData(callback: SDL_ClipboardDataCallback, cleanup: SDL_ClipboardCleanupCallback, userdata: ctypes.c_void_p, mime_types: LP_c_char_p, num_mime_types: ctypes.c_size_t) -> ctypes.c_bool:
    """
    Offer clipboard data to the OS.

    https://wiki.libsdl.org/SDL3/SDL_SetClipboardData
    """
    return raw.SDL_SetClipboardData(callback, cleanup, userdata, mime_types, num_mime_types)

def SDL_ClearClipboardData() -> ctypes.c_bool:
    """
    Clear the clipboard data.

    https://wiki.libsdl.org/SDL3/SDL_ClearClipboardData
    """
    return raw.SDL_ClearClipboardData()

def SDL_GetClipboardData(mime_type: ctypes.c_char_p, size: LP_c_size_t) -> ctypes.c_void_p:
    """
    Get the data from the clipboard for a given mime type.

    https://wiki.libsdl.org/SDL3/SDL_GetClipboardData
    """
    return raw.SDL_GetClipboardData(mime_type, size)

def SDL_HasClipboardData(mime_type: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Query whether there is data in the clipboard for the provided mime type.

    https://wiki.libsdl.org/SDL3/SDL_HasClipboardData
    """
    return raw.SDL_HasClipboardData(mime_type)

def SDL_GetNumLogicalCPUCores() -> ctypes.c_int:
    """
    Get the number of logical CPU cores available.

    https://wiki.libsdl.org/SDL3/SDL_GetNumLogicalCPUCores
    """
    return raw.SDL_GetNumLogicalCPUCores()

def SDL_GetCPUCacheLineSize() -> ctypes.c_int:
    """
    Determine the L1 cache line size of the CPU.

    https://wiki.libsdl.org/SDL3/SDL_GetCPUCacheLineSize
    """
    return raw.SDL_GetCPUCacheLineSize()

def SDL_HasAltiVec() -> ctypes.c_bool:
    """
    Determine whether the CPU has AltiVec features.

    https://wiki.libsdl.org/SDL3/SDL_HasAltiVec
    """
    return raw.SDL_HasAltiVec()

def SDL_HasMMX() -> ctypes.c_bool:
    """
    Determine whether the CPU has MMX features.

    https://wiki.libsdl.org/SDL3/SDL_HasMMX
    """
    return raw.SDL_HasMMX()

def SDL_HasSSE() -> ctypes.c_bool:
    """
    Determine whether the CPU has SSE features.

    https://wiki.libsdl.org/SDL3/SDL_HasSSE
    """
    return raw.SDL_HasSSE()

def SDL_HasSSE2() -> ctypes.c_bool:
    """
    Determine whether the CPU has SSE2 features.

    https://wiki.libsdl.org/SDL3/SDL_HasSSE2
    """
    return raw.SDL_HasSSE2()

def SDL_HasSSE3() -> ctypes.c_bool:
    """
    Determine whether the CPU has SSE3 features.

    https://wiki.libsdl.org/SDL3/SDL_HasSSE3
    """
    return raw.SDL_HasSSE3()

def SDL_HasSSE41() -> ctypes.c_bool:
    """
    Determine whether the CPU has SSE4.1 features.

    https://wiki.libsdl.org/SDL3/SDL_HasSSE41
    """
    return raw.SDL_HasSSE41()

def SDL_HasSSE42() -> ctypes.c_bool:
    """
    Determine whether the CPU has SSE4.2 features.

    https://wiki.libsdl.org/SDL3/SDL_HasSSE42
    """
    return raw.SDL_HasSSE42()

def SDL_HasAVX() -> ctypes.c_bool:
    """
    Determine whether the CPU has AVX features.

    https://wiki.libsdl.org/SDL3/SDL_HasAVX
    """
    return raw.SDL_HasAVX()

def SDL_HasAVX2() -> ctypes.c_bool:
    """
    Determine whether the CPU has AVX2 features.

    https://wiki.libsdl.org/SDL3/SDL_HasAVX2
    """
    return raw.SDL_HasAVX2()

def SDL_HasAVX512F() -> ctypes.c_bool:
    """
    Determine whether the CPU has AVX-512F (foundation) features.

    https://wiki.libsdl.org/SDL3/SDL_HasAVX512F
    """
    return raw.SDL_HasAVX512F()

def SDL_HasARMSIMD() -> ctypes.c_bool:
    """
    Determine whether the CPU has ARM SIMD (ARMv6) features.

    https://wiki.libsdl.org/SDL3/SDL_HasARMSIMD
    """
    return raw.SDL_HasARMSIMD()

def SDL_HasNEON() -> ctypes.c_bool:
    """
    Determine whether the CPU has NEON (ARM SIMD) features.

    https://wiki.libsdl.org/SDL3/SDL_HasNEON
    """
    return raw.SDL_HasNEON()

def SDL_HasLSX() -> ctypes.c_bool:
    """
    Determine whether the CPU has LSX (LOONGARCH SIMD) features.

    https://wiki.libsdl.org/SDL3/SDL_HasLSX
    """
    return raw.SDL_HasLSX()

def SDL_HasLASX() -> ctypes.c_bool:
    """
    Determine whether the CPU has LASX (LOONGARCH SIMD) features.

    https://wiki.libsdl.org/SDL3/SDL_HasLASX
    """
    return raw.SDL_HasLASX()

def SDL_GetSystemRAM() -> ctypes.c_int:
    """
    Get the amount of RAM configured in the system.

    https://wiki.libsdl.org/SDL3/SDL_GetSystemRAM
    """
    return raw.SDL_GetSystemRAM()

def SDL_GetSIMDAlignment() -> ctypes.c_size_t:
    """
    Report the alignment this system needs for SIMD allocations.

    https://wiki.libsdl.org/SDL3/SDL_GetSIMDAlignment
    """
    return raw.SDL_GetSIMDAlignment()

def SDL_GetSystemPageSize() -> ctypes.c_int:
    """
    Report the size of a page of memory.

    https://wiki.libsdl.org/SDL3/SDL_GetSystemPageSize
    """
    return raw.SDL_GetSystemPageSize()

def SDL_GetNumVideoDrivers() -> ctypes.c_int:
    """
    Get the number of video drivers compiled into SDL.

    https://wiki.libsdl.org/SDL3/SDL_GetNumVideoDrivers
    """
    return raw.SDL_GetNumVideoDrivers()

def SDL_GetVideoDriver(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Get the name of a built in video driver.

    https://wiki.libsdl.org/SDL3/SDL_GetVideoDriver
    """
    return raw.SDL_GetVideoDriver(index)

def SDL_GetCurrentVideoDriver() -> ctypes.c_char_p:
    """
    Get the name of the currently initialized video driver.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentVideoDriver
    """
    return raw.SDL_GetCurrentVideoDriver()

def SDL_GetSystemTheme() -> SDL_SystemTheme:
    """
    Get the current system theme.

    https://wiki.libsdl.org/SDL3/SDL_GetSystemTheme
    """
    return raw.SDL_GetSystemTheme()

def SDL_GetDisplays(count: LP_c_int) -> LP_SDL_DisplayID:
    """
    Get a list of currently connected displays.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplays
    """
    return raw.SDL_GetDisplays(count)

def SDL_GetPrimaryDisplay() -> SDL_DisplayID:
    """
    Return the primary display.

    https://wiki.libsdl.org/SDL3/SDL_GetPrimaryDisplay
    """
    return raw.SDL_GetPrimaryDisplay()

def SDL_GetDisplayProperties(displayID: SDL_DisplayID) -> SDL_PropertiesID:
    """
    Get the properties associated with a display.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayProperties
    """
    return raw.SDL_GetDisplayProperties(displayID)

def SDL_GetDisplayName(displayID: SDL_DisplayID) -> ctypes.c_char_p:
    """
    Get the name of a display in UTF-8 encoding.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayName
    """
    return raw.SDL_GetDisplayName(displayID)

def SDL_GetDisplayBounds(displayID: SDL_DisplayID, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the desktop area represented by a display.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayBounds
    """
    return raw.SDL_GetDisplayBounds(displayID, rect)

def SDL_GetDisplayUsableBounds(displayID: SDL_DisplayID, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the usable desktop area represented by a display, in screen coordinates.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayUsableBounds
    """
    return raw.SDL_GetDisplayUsableBounds(displayID, rect)

def SDL_GetNaturalDisplayOrientation(displayID: SDL_DisplayID) -> SDL_DisplayOrientation:
    """
    Get the orientation of a display when it is unrotated.

    https://wiki.libsdl.org/SDL3/SDL_GetNaturalDisplayOrientation
    """
    return raw.SDL_GetNaturalDisplayOrientation(displayID)

def SDL_GetCurrentDisplayOrientation(displayID: SDL_DisplayID) -> SDL_DisplayOrientation:
    """
    Get the orientation of a display.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentDisplayOrientation
    """
    return raw.SDL_GetCurrentDisplayOrientation(displayID)

def SDL_GetDisplayContentScale(displayID: SDL_DisplayID) -> ctypes.c_float:
    """
    Get the content scale of a display.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayContentScale
    """
    return raw.SDL_GetDisplayContentScale(displayID)

def SDL_GetFullscreenDisplayModes(displayID: SDL_DisplayID, count: LP_c_int) -> LP_LP_SDL_DisplayMode:
    """
    Get a list of fullscreen display modes available on a display.

    https://wiki.libsdl.org/SDL3/SDL_GetFullscreenDisplayModes
    """
    return raw.SDL_GetFullscreenDisplayModes(displayID, count)

def SDL_GetClosestFullscreenDisplayMode(displayID: SDL_DisplayID, w: ctypes.c_int, h: ctypes.c_int, refresh_rate: ctypes.c_float, include_high_density_modes: ctypes.c_bool, closest: LP_SDL_DisplayMode) -> ctypes.c_bool:
    """
    Get the closest match to the requested display mode.

    https://wiki.libsdl.org/SDL3/SDL_GetClosestFullscreenDisplayMode
    """
    return raw.SDL_GetClosestFullscreenDisplayMode(displayID, w, h, refresh_rate, include_high_density_modes, closest)

def SDL_GetDesktopDisplayMode(displayID: SDL_DisplayID) -> LP_SDL_DisplayMode:
    """
    Get information about the desktop's display mode.

    https://wiki.libsdl.org/SDL3/SDL_GetDesktopDisplayMode
    """
    return raw.SDL_GetDesktopDisplayMode(displayID)

def SDL_GetCurrentDisplayMode(displayID: SDL_DisplayID) -> LP_SDL_DisplayMode:
    """
    Get information about the current display mode.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentDisplayMode
    """
    return raw.SDL_GetCurrentDisplayMode(displayID)

def SDL_GetDisplayForPoint(point: LP_SDL_Point) -> SDL_DisplayID:
    """
    Get the display containing a point.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayForPoint
    """
    return raw.SDL_GetDisplayForPoint(point)

def SDL_GetDisplayForRect(rect: LP_SDL_Rect) -> SDL_DisplayID:
    """
    Get the display primarily containing a rect.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayForRect
    """
    return raw.SDL_GetDisplayForRect(rect)

def SDL_GetDisplayForWindow(window: LP_SDL_Window) -> SDL_DisplayID:
    """
    Get the display associated with a window.

    https://wiki.libsdl.org/SDL3/SDL_GetDisplayForWindow
    """
    return raw.SDL_GetDisplayForWindow(window)

def SDL_GetWindowPixelDensity(window: LP_SDL_Window) -> ctypes.c_float:
    """
    Get the pixel density of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowPixelDensity
    """
    return raw.SDL_GetWindowPixelDensity(window)

def SDL_GetWindowDisplayScale(window: LP_SDL_Window) -> ctypes.c_float:
    """
    Get the content display scale relative to a window's pixel size.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowDisplayScale
    """
    return raw.SDL_GetWindowDisplayScale(window)

def SDL_SetWindowFullscreenMode(window: LP_SDL_Window, mode: LP_SDL_DisplayMode) -> ctypes.c_bool:
    """
    Set the display mode to use when a window is visible and fullscreen.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowFullscreenMode
    """
    return raw.SDL_SetWindowFullscreenMode(window, mode)

def SDL_GetWindowFullscreenMode(window: LP_SDL_Window) -> LP_SDL_DisplayMode:
    """
    Query the display mode to use when a window is visible at fullscreen.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowFullscreenMode
    """
    return raw.SDL_GetWindowFullscreenMode(window)

def SDL_GetWindowICCProfile(window: LP_SDL_Window, size: LP_c_size_t) -> ctypes.c_void_p:
    """
    Get the raw ICC profile data for the screen the window is currently on.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowICCProfile
    """
    return raw.SDL_GetWindowICCProfile(window, size)

def SDL_GetWindowPixelFormat(window: LP_SDL_Window) -> SDL_PixelFormat:
    """
    Get the pixel format associated with the window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowPixelFormat
    """
    return raw.SDL_GetWindowPixelFormat(window)

def SDL_GetWindows(count: LP_c_int) -> LP_LP_SDL_Window:
    """
    Get a list of valid windows.

    https://wiki.libsdl.org/SDL3/SDL_GetWindows
    """
    return raw.SDL_GetWindows(count)

def SDL_CreateWindow(title: ctypes.c_char_p, w: ctypes.c_int, h: ctypes.c_int, flags: SDL_WindowFlags) -> LP_SDL_Window:
    """
    Create a window with the specified dimensions and flags.

    https://wiki.libsdl.org/SDL3/SDL_CreateWindow
    """
    return raw.SDL_CreateWindow(title, w, h, flags)

def SDL_CreatePopupWindow(parent: LP_SDL_Window, offset_x: ctypes.c_int, offset_y: ctypes.c_int, w: ctypes.c_int, h: ctypes.c_int, flags: SDL_WindowFlags) -> LP_SDL_Window:
    """
    Create a child popup window of the specified parent window.

    https://wiki.libsdl.org/SDL3/SDL_CreatePopupWindow
    """
    return raw.SDL_CreatePopupWindow(parent, offset_x, offset_y, w, h, flags)

def SDL_CreateWindowWithProperties(props: SDL_PropertiesID) -> LP_SDL_Window:
    """
    Create a window with the specified properties.

    https://wiki.libsdl.org/SDL3/SDL_CreateWindowWithProperties
    """
    return raw.SDL_CreateWindowWithProperties(props)

def SDL_GetWindowID(window: LP_SDL_Window) -> SDL_WindowID:
    """
    Get the numeric ID of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowID
    """
    return raw.SDL_GetWindowID(window)

def SDL_GetWindowFromID(id: SDL_WindowID) -> LP_SDL_Window:
    """
    Get a window from a stored ID.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowFromID
    """
    return raw.SDL_GetWindowFromID(id)

def SDL_GetWindowParent(window: LP_SDL_Window) -> LP_SDL_Window:
    """
    Get parent of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowParent
    """
    return raw.SDL_GetWindowParent(window)

def SDL_GetWindowProperties(window: LP_SDL_Window) -> SDL_PropertiesID:
    """
    Get the properties associated with a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowProperties
    """
    return raw.SDL_GetWindowProperties(window)

def SDL_GetWindowFlags(window: LP_SDL_Window) -> SDL_WindowFlags:
    """
    Get the window flags.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowFlags
    """
    return raw.SDL_GetWindowFlags(window)

def SDL_SetWindowTitle(window: LP_SDL_Window, title: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set the title of a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowTitle
    """
    return raw.SDL_SetWindowTitle(window, title)

def SDL_GetWindowTitle(window: LP_SDL_Window) -> ctypes.c_char_p:
    """
    Get the title of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowTitle
    """
    return raw.SDL_GetWindowTitle(window)

def SDL_SetWindowIcon(window: LP_SDL_Window, icon: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Set the icon for a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowIcon
    """
    return raw.SDL_SetWindowIcon(window, icon)

def SDL_SetWindowPosition(window: LP_SDL_Window, x: ctypes.c_int, y: ctypes.c_int) -> ctypes.c_bool:
    """
    Request that the window's position be set.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowPosition
    """
    return raw.SDL_SetWindowPosition(window, x, y)

def SDL_GetWindowPosition(window: LP_SDL_Window, x: LP_c_int, y: LP_c_int) -> ctypes.c_bool:
    """
    Get the position of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowPosition
    """
    return raw.SDL_GetWindowPosition(window, x, y)

def SDL_SetWindowSize(window: LP_SDL_Window, w: ctypes.c_int, h: ctypes.c_int) -> ctypes.c_bool:
    """
    Request that the size of a window's client area be set.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowSize
    """
    return raw.SDL_SetWindowSize(window, w, h)

def SDL_GetWindowSize(window: LP_SDL_Window, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the size of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowSize
    """
    return raw.SDL_GetWindowSize(window, w, h)

def SDL_GetWindowSafeArea(window: LP_SDL_Window, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the safe area for this window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowSafeArea
    """
    return raw.SDL_GetWindowSafeArea(window, rect)

def SDL_SetWindowAspectRatio(window: LP_SDL_Window, min_aspect: ctypes.c_float, max_aspect: ctypes.c_float) -> ctypes.c_bool:
    """
    Request that the aspect ratio of a window's client area be set.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowAspectRatio
    """
    return raw.SDL_SetWindowAspectRatio(window, min_aspect, max_aspect)

def SDL_GetWindowAspectRatio(window: LP_SDL_Window, min_aspect: LP_c_float, max_aspect: LP_c_float) -> ctypes.c_bool:
    """
    Get the aspect ratio of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowAspectRatio
    """
    return raw.SDL_GetWindowAspectRatio(window, min_aspect, max_aspect)

def SDL_GetWindowBordersSize(window: LP_SDL_Window, top: LP_c_int, left: LP_c_int, bottom: LP_c_int, right: LP_c_int) -> ctypes.c_bool:
    """
    Get the size of a window's borders (decorations) around the client area.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowBordersSize
    """
    return raw.SDL_GetWindowBordersSize(window, top, left, bottom, right)

def SDL_GetWindowSizeInPixels(window: LP_SDL_Window, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the size of a window's client area, in pixels.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowSizeInPixels
    """
    return raw.SDL_GetWindowSizeInPixels(window, w, h)

def SDL_SetWindowMinimumSize(window: LP_SDL_Window, min_w: ctypes.c_int, min_h: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the minimum size of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowMinimumSize
    """
    return raw.SDL_SetWindowMinimumSize(window, min_w, min_h)

def SDL_GetWindowMinimumSize(window: LP_SDL_Window, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the minimum size of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowMinimumSize
    """
    return raw.SDL_GetWindowMinimumSize(window, w, h)

def SDL_SetWindowMaximumSize(window: LP_SDL_Window, max_w: ctypes.c_int, max_h: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the maximum size of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowMaximumSize
    """
    return raw.SDL_SetWindowMaximumSize(window, max_w, max_h)

def SDL_GetWindowMaximumSize(window: LP_SDL_Window, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the maximum size of a window's client area.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowMaximumSize
    """
    return raw.SDL_GetWindowMaximumSize(window, w, h)

def SDL_SetWindowBordered(window: LP_SDL_Window, bordered: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the border state of a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowBordered
    """
    return raw.SDL_SetWindowBordered(window, bordered)

def SDL_SetWindowResizable(window: LP_SDL_Window, resizable: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the user-resizable state of a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowResizable
    """
    return raw.SDL_SetWindowResizable(window, resizable)

def SDL_SetWindowAlwaysOnTop(window: LP_SDL_Window, on_top: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the window to always be above the others.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowAlwaysOnTop
    """
    return raw.SDL_SetWindowAlwaysOnTop(window, on_top)

def SDL_SetWindowFillDocument(window: LP_SDL_Window, fill: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the window to fill the current document space (Emscripten only).

    https://wiki.libsdl.org/SDL3/SDL_SetWindowFillDocument
    """
    return raw.SDL_SetWindowFillDocument(window, fill)

def SDL_ShowWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Show a window.

    https://wiki.libsdl.org/SDL3/SDL_ShowWindow
    """
    return raw.SDL_ShowWindow(window)

def SDL_HideWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Hide a window.

    https://wiki.libsdl.org/SDL3/SDL_HideWindow
    """
    return raw.SDL_HideWindow(window)

def SDL_RaiseWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Request that a window be raised above other windows and gain the input focus.

    https://wiki.libsdl.org/SDL3/SDL_RaiseWindow
    """
    return raw.SDL_RaiseWindow(window)

def SDL_MaximizeWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Request that the window be made as large as possible.

    https://wiki.libsdl.org/SDL3/SDL_MaximizeWindow
    """
    return raw.SDL_MaximizeWindow(window)

def SDL_MinimizeWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Request that the window be minimized to an iconic representation.

    https://wiki.libsdl.org/SDL3/SDL_MinimizeWindow
    """
    return raw.SDL_MinimizeWindow(window)

def SDL_RestoreWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Request that the size and position of a minimized or maximized window be restored.

    https://wiki.libsdl.org/SDL3/SDL_RestoreWindow
    """
    return raw.SDL_RestoreWindow(window)

def SDL_SetWindowFullscreen(window: LP_SDL_Window, fullscreen: ctypes.c_bool) -> ctypes.c_bool:
    """
    Request that the window's fullscreen state be changed.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowFullscreen
    """
    return raw.SDL_SetWindowFullscreen(window, fullscreen)

def SDL_SyncWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Block until any pending window state is finalized.

    https://wiki.libsdl.org/SDL3/SDL_SyncWindow
    """
    return raw.SDL_SyncWindow(window)

def SDL_WindowHasSurface(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Return whether the window has a surface associated with it.

    https://wiki.libsdl.org/SDL3/SDL_WindowHasSurface
    """
    return raw.SDL_WindowHasSurface(window)

def SDL_GetWindowSurface(window: LP_SDL_Window) -> LP_SDL_Surface:
    """
    Get the SDL surface associated with the window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowSurface
    """
    return raw.SDL_GetWindowSurface(window)

def SDL_SetWindowSurfaceVSync(window: LP_SDL_Window, vsync: ctypes.c_int) -> ctypes.c_bool:
    """
    Toggle VSync for the window surface.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowSurfaceVSync
    """
    return raw.SDL_SetWindowSurfaceVSync(window, vsync)

def SDL_GetWindowSurfaceVSync(window: LP_SDL_Window, vsync: LP_c_int) -> ctypes.c_bool:
    """
    Get VSync for the window surface.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowSurfaceVSync
    """
    return raw.SDL_GetWindowSurfaceVSync(window, vsync)

def SDL_UpdateWindowSurface(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Copy the window surface to the screen.

    https://wiki.libsdl.org/SDL3/SDL_UpdateWindowSurface
    """
    return raw.SDL_UpdateWindowSurface(window)

def SDL_UpdateWindowSurfaceRects(window: LP_SDL_Window, rects: LP_SDL_Rect, numrects: ctypes.c_int) -> ctypes.c_bool:
    """
    Copy areas of the window surface to the screen.

    https://wiki.libsdl.org/SDL3/SDL_UpdateWindowSurfaceRects
    """
    return raw.SDL_UpdateWindowSurfaceRects(window, rects, numrects)

def SDL_DestroyWindowSurface(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Destroy the surface associated with the window.

    https://wiki.libsdl.org/SDL3/SDL_DestroyWindowSurface
    """
    return raw.SDL_DestroyWindowSurface(window)

def SDL_SetWindowKeyboardGrab(window: LP_SDL_Window, grabbed: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set a window's keyboard grab mode.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowKeyboardGrab
    """
    return raw.SDL_SetWindowKeyboardGrab(window, grabbed)

def SDL_SetWindowMouseGrab(window: LP_SDL_Window, grabbed: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set a window's mouse grab mode.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowMouseGrab
    """
    return raw.SDL_SetWindowMouseGrab(window, grabbed)

def SDL_GetWindowKeyboardGrab(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Get a window's keyboard grab mode.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowKeyboardGrab
    """
    return raw.SDL_GetWindowKeyboardGrab(window)

def SDL_GetWindowMouseGrab(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Get a window's mouse grab mode.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowMouseGrab
    """
    return raw.SDL_GetWindowMouseGrab(window)

def SDL_GetGrabbedWindow() -> LP_SDL_Window:
    """
    Get the window that currently has an input grab enabled.

    https://wiki.libsdl.org/SDL3/SDL_GetGrabbedWindow
    """
    return raw.SDL_GetGrabbedWindow()

def SDL_SetWindowMouseRect(window: LP_SDL_Window, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Confines the cursor to the specified area of a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowMouseRect
    """
    return raw.SDL_SetWindowMouseRect(window, rect)

def SDL_GetWindowMouseRect(window: LP_SDL_Window) -> LP_SDL_Rect:
    """
    Get the mouse confinement rectangle of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowMouseRect
    """
    return raw.SDL_GetWindowMouseRect(window)

def SDL_SetWindowOpacity(window: LP_SDL_Window, opacity: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the opacity for a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowOpacity
    """
    return raw.SDL_SetWindowOpacity(window, opacity)

def SDL_GetWindowOpacity(window: LP_SDL_Window) -> ctypes.c_float:
    """
    Get the opacity of a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowOpacity
    """
    return raw.SDL_GetWindowOpacity(window)

def SDL_SetWindowParent(window: LP_SDL_Window, parent: LP_SDL_Window) -> ctypes.c_bool:
    """
    Set the window as a child of a parent window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowParent
    """
    return raw.SDL_SetWindowParent(window, parent)

def SDL_SetWindowModal(window: LP_SDL_Window, modal: ctypes.c_bool) -> ctypes.c_bool:
    """
    Toggle the state of the window as modal.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowModal
    """
    return raw.SDL_SetWindowModal(window, modal)

def SDL_SetWindowFocusable(window: LP_SDL_Window, focusable: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set whether the window may have input focus.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowFocusable
    """
    return raw.SDL_SetWindowFocusable(window, focusable)

def SDL_ShowWindowSystemMenu(window: LP_SDL_Window, x: ctypes.c_int, y: ctypes.c_int) -> ctypes.c_bool:
    """
    Display the system-level window menu.

    https://wiki.libsdl.org/SDL3/SDL_ShowWindowSystemMenu
    """
    return raw.SDL_ShowWindowSystemMenu(window, x, y)

def SDL_SetWindowHitTest(window: LP_SDL_Window, callback: SDL_HitTest, callback_data: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Provide a callback that decides if a window region has special properties.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowHitTest
    """
    return raw.SDL_SetWindowHitTest(window, callback, callback_data)

def SDL_SetWindowShape(window: LP_SDL_Window, shape: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Set the shape of a transparent window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowShape
    """
    return raw.SDL_SetWindowShape(window, shape)

def SDL_FlashWindow(window: LP_SDL_Window, operation: SDL_FlashOperation) -> ctypes.c_bool:
    """
    Request a window to demand attention from the user.

    https://wiki.libsdl.org/SDL3/SDL_FlashWindow
    """
    return raw.SDL_FlashWindow(window, operation)

def SDL_SetWindowProgressState(window: LP_SDL_Window, state: SDL_ProgressState) -> ctypes.c_bool:
    """
    Sets the state of the progress bar for the given window’s taskbar icon.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowProgressState
    """
    return raw.SDL_SetWindowProgressState(window, state)

def SDL_GetWindowProgressState(window: LP_SDL_Window) -> SDL_ProgressState:
    """
    Get the state of the progress bar for the given window’s taskbar icon.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowProgressState
    """
    return raw.SDL_GetWindowProgressState(window)

def SDL_SetWindowProgressValue(window: LP_SDL_Window, value: ctypes.c_float) -> ctypes.c_bool:
    """
    Sets the value of the progress bar for the given window’s taskbar icon.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowProgressValue
    """
    return raw.SDL_SetWindowProgressValue(window, value)

def SDL_GetWindowProgressValue(window: LP_SDL_Window) -> ctypes.c_float:
    """
    Get the value of the progress bar for the given window’s taskbar icon.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowProgressValue
    """
    return raw.SDL_GetWindowProgressValue(window)

def SDL_DestroyWindow(window: LP_SDL_Window) -> None:
    """
    Destroy a window.

    https://wiki.libsdl.org/SDL3/SDL_DestroyWindow
    """
    return raw.SDL_DestroyWindow(window)

def SDL_ScreenSaverEnabled() -> ctypes.c_bool:
    """
    Check whether the screensaver is currently enabled.

    https://wiki.libsdl.org/SDL3/SDL_ScreenSaverEnabled
    """
    return raw.SDL_ScreenSaverEnabled()

def SDL_EnableScreenSaver() -> ctypes.c_bool:
    """
    Allow the screen to be blanked by a screen saver.

    https://wiki.libsdl.org/SDL3/SDL_EnableScreenSaver
    """
    return raw.SDL_EnableScreenSaver()

def SDL_DisableScreenSaver() -> ctypes.c_bool:
    """
    Prevent the screen from being blanked by a screen saver.

    https://wiki.libsdl.org/SDL3/SDL_DisableScreenSaver
    """
    return raw.SDL_DisableScreenSaver()

def SDL_GL_LoadLibrary(path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Dynamically load an OpenGL library.

    https://wiki.libsdl.org/SDL3/SDL_GL_LoadLibrary
    """
    return raw.SDL_GL_LoadLibrary(path)

def SDL_GL_GetProcAddress(proc: ctypes.c_char_p) -> SDL_FunctionPointer:
    """
    Get an OpenGL function by name.

    https://wiki.libsdl.org/SDL3/SDL_GL_GetProcAddress
    """
    return raw.SDL_GL_GetProcAddress(proc)

def SDL_EGL_GetProcAddress(proc: ctypes.c_char_p) -> SDL_FunctionPointer:
    """
    Get an EGL library function by name.

    https://wiki.libsdl.org/SDL3/SDL_EGL_GetProcAddress
    """
    return raw.SDL_EGL_GetProcAddress(proc)

def SDL_GL_UnloadLibrary() -> None:
    """
    Unload the OpenGL library previously loaded by [SDL_GL_LoadLibrary](https://wiki.libsdl.org/SDL3/SDL_GL_LoadLibrary)().

    https://wiki.libsdl.org/SDL3/SDL_GL_UnloadLibrary
    """
    return raw.SDL_GL_UnloadLibrary()

def SDL_GL_ExtensionSupported(extension: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Check if an OpenGL extension is supported for the current context.

    https://wiki.libsdl.org/SDL3/SDL_GL_ExtensionSupported
    """
    return raw.SDL_GL_ExtensionSupported(extension)

def SDL_GL_ResetAttributes() -> None:
    """
    Reset all previously set OpenGL context attributes to their default values.

    https://wiki.libsdl.org/SDL3/SDL_GL_ResetAttributes
    """
    return raw.SDL_GL_ResetAttributes()

def SDL_GL_SetAttribute(attr: SDL_GLAttr, value: ctypes.c_int) -> ctypes.c_bool:
    """
    Set an OpenGL window attribute before window creation.

    https://wiki.libsdl.org/SDL3/SDL_GL_SetAttribute
    """
    return raw.SDL_GL_SetAttribute(attr, value)

def SDL_GL_GetAttribute(attr: SDL_GLAttr, value: LP_c_int) -> ctypes.c_bool:
    """
    Get the actual value for an attribute from the current context.

    https://wiki.libsdl.org/SDL3/SDL_GL_GetAttribute
    """
    return raw.SDL_GL_GetAttribute(attr, value)

def SDL_GL_CreateContext(window: LP_SDL_Window) -> SDL_GLContext:
    """
    Create an OpenGL context for an OpenGL window, and make it current.

    https://wiki.libsdl.org/SDL3/SDL_GL_CreateContext
    """
    return raw.SDL_GL_CreateContext(window)

def SDL_GL_MakeCurrent(window: LP_SDL_Window, context: SDL_GLContext) -> ctypes.c_bool:
    """
    Set up an OpenGL context for rendering into an OpenGL window.

    https://wiki.libsdl.org/SDL3/SDL_GL_MakeCurrent
    """
    return raw.SDL_GL_MakeCurrent(window, context)

def SDL_GL_GetCurrentWindow() -> LP_SDL_Window:
    """
    Get the currently active OpenGL window.

    https://wiki.libsdl.org/SDL3/SDL_GL_GetCurrentWindow
    """
    return raw.SDL_GL_GetCurrentWindow()

def SDL_GL_GetCurrentContext() -> SDL_GLContext:
    """
    Get the currently active OpenGL context.

    https://wiki.libsdl.org/SDL3/SDL_GL_GetCurrentContext
    """
    return raw.SDL_GL_GetCurrentContext()

def SDL_EGL_GetCurrentDisplay() -> SDL_EGLDisplay:
    """
    Get the currently active EGL display.

    https://wiki.libsdl.org/SDL3/SDL_EGL_GetCurrentDisplay
    """
    return raw.SDL_EGL_GetCurrentDisplay()

def SDL_EGL_GetCurrentConfig() -> SDL_EGLConfig:
    """
    Get the currently active EGL config.

    https://wiki.libsdl.org/SDL3/SDL_EGL_GetCurrentConfig
    """
    return raw.SDL_EGL_GetCurrentConfig()

def SDL_EGL_GetWindowSurface(window: LP_SDL_Window) -> SDL_EGLSurface:
    """
    Get the EGL surface associated with the window.

    https://wiki.libsdl.org/SDL3/SDL_EGL_GetWindowSurface
    """
    return raw.SDL_EGL_GetWindowSurface(window)

def SDL_EGL_SetAttributeCallbacks(platformAttribCallback: SDL_EGLAttribArrayCallback, surfaceAttribCallback: SDL_EGLIntArrayCallback, contextAttribCallback: SDL_EGLIntArrayCallback, userdata: ctypes.c_void_p) -> None:
    """
    Sets the callbacks for defining custom EGLAttrib arrays for EGL initialization.

    https://wiki.libsdl.org/SDL3/SDL_EGL_SetAttributeCallbacks
    """
    return raw.SDL_EGL_SetAttributeCallbacks(platformAttribCallback, surfaceAttribCallback, contextAttribCallback, userdata)

def SDL_GL_SetSwapInterval(interval: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the swap interval for the current OpenGL context.

    https://wiki.libsdl.org/SDL3/SDL_GL_SetSwapInterval
    """
    return raw.SDL_GL_SetSwapInterval(interval)

def SDL_GL_GetSwapInterval(interval: LP_c_int) -> ctypes.c_bool:
    """
    Get the swap interval for the current OpenGL context.

    https://wiki.libsdl.org/SDL3/SDL_GL_GetSwapInterval
    """
    return raw.SDL_GL_GetSwapInterval(interval)

def SDL_GL_SwapWindow(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Update a window with OpenGL rendering.

    https://wiki.libsdl.org/SDL3/SDL_GL_SwapWindow
    """
    return raw.SDL_GL_SwapWindow(window)

def SDL_GL_DestroyContext(context: SDL_GLContext) -> ctypes.c_bool:
    """
    Delete an OpenGL context.

    https://wiki.libsdl.org/SDL3/SDL_GL_DestroyContext
    """
    return raw.SDL_GL_DestroyContext(context)

def SDL_ShowOpenFileDialog(callback: SDL_DialogFileCallback, userdata: ctypes.c_void_p, window: LP_SDL_Window, filters: LP_SDL_DialogFileFilter, nfilters: ctypes.c_int, default_location: ctypes.c_char_p, allow_many: ctypes.c_bool) -> None:
    """
    Displays a dialog that lets the user select a file on their filesystem.

    https://wiki.libsdl.org/SDL3/SDL_ShowOpenFileDialog
    """
    return raw.SDL_ShowOpenFileDialog(callback, userdata, window, filters, nfilters, default_location, allow_many)

def SDL_ShowSaveFileDialog(callback: SDL_DialogFileCallback, userdata: ctypes.c_void_p, window: LP_SDL_Window, filters: LP_SDL_DialogFileFilter, nfilters: ctypes.c_int, default_location: ctypes.c_char_p) -> None:
    """
    Displays a dialog that lets the user choose a new or existing file on their filesystem.

    https://wiki.libsdl.org/SDL3/SDL_ShowSaveFileDialog
    """
    return raw.SDL_ShowSaveFileDialog(callback, userdata, window, filters, nfilters, default_location)

def SDL_ShowOpenFolderDialog(callback: SDL_DialogFileCallback, userdata: ctypes.c_void_p, window: LP_SDL_Window, default_location: ctypes.c_char_p, allow_many: ctypes.c_bool) -> None:
    """
    Displays a dialog that lets the user select a folder on their filesystem.

    https://wiki.libsdl.org/SDL3/SDL_ShowOpenFolderDialog
    """
    return raw.SDL_ShowOpenFolderDialog(callback, userdata, window, default_location, allow_many)

def SDL_ShowFileDialogWithProperties(type: SDL_FileDialogType, callback: SDL_DialogFileCallback, userdata: ctypes.c_void_p, props: SDL_PropertiesID) -> None:
    """
    Create and launch a file dialog with the specified properties.

    https://wiki.libsdl.org/SDL3/SDL_ShowFileDialogWithProperties
    """
    return raw.SDL_ShowFileDialogWithProperties(type, callback, userdata, props)

def SDL_SetError(fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_bool:
    """
    Set the SDL error message for the current thread.

    https://wiki.libsdl.org/SDL3/SDL_SetError
    """
    return raw.SDL_SetError(fmt, *args)

def SDL_SetErrorV(fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> ctypes.c_bool:
    """
    Set the SDL error message for the current thread.

    https://wiki.libsdl.org/SDL3/SDL_SetErrorV
    """
    return raw.SDL_SetErrorV(fmt, ap)

def SDL_OutOfMemory() -> ctypes.c_bool:
    """
    Set an error indicating that memory allocation failed.

    https://wiki.libsdl.org/SDL3/SDL_OutOfMemory
    """
    return raw.SDL_OutOfMemory()

def SDL_GetError() -> ctypes.c_char_p:
    """
    Retrieve a message about the last error that occurred on the current thread.

    https://wiki.libsdl.org/SDL3/SDL_GetError
    """
    return raw.SDL_GetError()

def SDL_ClearError() -> ctypes.c_bool:
    """
    Clear any previous error message for this thread.

    https://wiki.libsdl.org/SDL3/SDL_ClearError
    """
    return raw.SDL_ClearError()

def SDL_GetSensors(count: LP_c_int) -> LP_SDL_SensorID:
    """
    Get a list of currently connected sensors.

    https://wiki.libsdl.org/SDL3/SDL_GetSensors
    """
    return raw.SDL_GetSensors(count)

def SDL_GetSensorNameForID(instance_id: SDL_SensorID) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorNameForID
    """
    return raw.SDL_GetSensorNameForID(instance_id)

def SDL_GetSensorTypeForID(instance_id: SDL_SensorID) -> SDL_SensorType:
    """
    Get the type of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorTypeForID
    """
    return raw.SDL_GetSensorTypeForID(instance_id)

def SDL_GetSensorNonPortableTypeForID(instance_id: SDL_SensorID) -> ctypes.c_int:
    """
    Get the platform dependent type of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorNonPortableTypeForID
    """
    return raw.SDL_GetSensorNonPortableTypeForID(instance_id)

def SDL_OpenSensor(instance_id: SDL_SensorID) -> LP_SDL_Sensor:
    """
    Open a sensor for use.

    https://wiki.libsdl.org/SDL3/SDL_OpenSensor
    """
    return raw.SDL_OpenSensor(instance_id)

def SDL_GetSensorFromID(instance_id: SDL_SensorID) -> LP_SDL_Sensor:
    """
    Return the [SDL_Sensor](https://wiki.libsdl.org/SDL3/SDL_Sensor) associated with an instance ID.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorFromID
    """
    return raw.SDL_GetSensorFromID(instance_id)

def SDL_GetSensorProperties(sensor: LP_SDL_Sensor) -> SDL_PropertiesID:
    """
    Get the properties associated with a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorProperties
    """
    return raw.SDL_GetSensorProperties(sensor)

def SDL_GetSensorName(sensor: LP_SDL_Sensor) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorName
    """
    return raw.SDL_GetSensorName(sensor)

def SDL_GetSensorType(sensor: LP_SDL_Sensor) -> SDL_SensorType:
    """
    Get the type of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorType
    """
    return raw.SDL_GetSensorType(sensor)

def SDL_GetSensorNonPortableType(sensor: LP_SDL_Sensor) -> ctypes.c_int:
    """
    Get the platform dependent type of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorNonPortableType
    """
    return raw.SDL_GetSensorNonPortableType(sensor)

def SDL_GetSensorID(sensor: LP_SDL_Sensor) -> SDL_SensorID:
    """
    Get the instance ID of a sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorID
    """
    return raw.SDL_GetSensorID(sensor)

def SDL_GetSensorData(sensor: LP_SDL_Sensor, data: LP_c_float, num_values: ctypes.c_int) -> ctypes.c_bool:
    """
    Get the current state of an opened sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetSensorData
    """
    return raw.SDL_GetSensorData(sensor, data, num_values)

def SDL_CloseSensor(sensor: LP_SDL_Sensor) -> None:
    """
    Close a sensor previously opened with [SDL_OpenSensor](https://wiki.libsdl.org/SDL3/SDL_OpenSensor)().

    https://wiki.libsdl.org/SDL3/SDL_CloseSensor
    """
    return raw.SDL_CloseSensor(sensor)

def SDL_UpdateSensors() -> None:
    """
    Update the current state of the open sensors.

    https://wiki.libsdl.org/SDL3/SDL_UpdateSensors
    """
    return raw.SDL_UpdateSensors()

def SDL_GetPowerInfo(seconds: LP_c_int, percent: LP_c_int) -> SDL_PowerState:
    """
    Get the current power supply details.

    https://wiki.libsdl.org/SDL3/SDL_GetPowerInfo
    """
    return raw.SDL_GetPowerInfo(seconds, percent)

def SDL_GUIDToString(guid: SDL_GUID, pszGUID: ctypes.c_char_p, cbGUID: ctypes.c_int) -> None:
    """
    Get an ASCII string representation for a given [SDL_GUID](https://wiki.libsdl.org/SDL3/SDL_GUID).

    https://wiki.libsdl.org/SDL3/SDL_GUIDToString
    """
    return raw.SDL_GUIDToString(guid, pszGUID, cbGUID)

def SDL_StringToGUID(pchGUID: ctypes.c_char_p) -> SDL_GUID:
    """
    Convert a GUID string into a [SDL_GUID](https://wiki.libsdl.org/SDL3/SDL_GUID) structure.

    https://wiki.libsdl.org/SDL3/SDL_StringToGUID
    """
    return raw.SDL_StringToGUID(pchGUID)

def SDL_LockJoysticks() -> None:
    """
    Locking for atomic access to the joystick API.

    https://wiki.libsdl.org/SDL3/SDL_LockJoysticks
    """
    return raw.SDL_LockJoysticks()

def SDL_UnlockJoysticks() -> None:
    """
    Unlocking for atomic access to the joystick API.

    https://wiki.libsdl.org/SDL3/SDL_UnlockJoysticks
    """
    return raw.SDL_UnlockJoysticks()

def SDL_HasJoystick() -> ctypes.c_bool:
    """
    Return whether a joystick is currently connected.

    https://wiki.libsdl.org/SDL3/SDL_HasJoystick
    """
    return raw.SDL_HasJoystick()

def SDL_GetJoysticks(count: LP_c_int) -> LP_SDL_JoystickID:
    """
    Get a list of currently connected joysticks.

    https://wiki.libsdl.org/SDL3/SDL_GetJoysticks
    """
    return raw.SDL_GetJoysticks(count)

def SDL_GetJoystickNameForID(instance_id: SDL_JoystickID) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickNameForID
    """
    return raw.SDL_GetJoystickNameForID(instance_id)

def SDL_GetJoystickPathForID(instance_id: SDL_JoystickID) -> ctypes.c_char_p:
    """
    Get the implementation dependent path of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickPathForID
    """
    return raw.SDL_GetJoystickPathForID(instance_id)

def SDL_GetJoystickPlayerIndexForID(instance_id: SDL_JoystickID) -> ctypes.c_int:
    """
    Get the player index of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickPlayerIndexForID
    """
    return raw.SDL_GetJoystickPlayerIndexForID(instance_id)

def SDL_GetJoystickGUIDForID(instance_id: SDL_JoystickID) -> SDL_GUID:
    """
    Get the implementation-dependent GUID of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickGUIDForID
    """
    return raw.SDL_GetJoystickGUIDForID(instance_id)

def SDL_GetJoystickVendorForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the USB vendor ID of a joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickVendorForID
    """
    return raw.SDL_GetJoystickVendorForID(instance_id)

def SDL_GetJoystickProductForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the USB product ID of a joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickProductForID
    """
    return raw.SDL_GetJoystickProductForID(instance_id)

def SDL_GetJoystickProductVersionForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the product version of a joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickProductVersionForID
    """
    return raw.SDL_GetJoystickProductVersionForID(instance_id)

def SDL_GetJoystickTypeForID(instance_id: SDL_JoystickID) -> SDL_JoystickType:
    """
    Get the type of a joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickTypeForID
    """
    return raw.SDL_GetJoystickTypeForID(instance_id)

def SDL_OpenJoystick(instance_id: SDL_JoystickID) -> LP_SDL_Joystick:
    """
    Open a joystick for use.

    https://wiki.libsdl.org/SDL3/SDL_OpenJoystick
    """
    return raw.SDL_OpenJoystick(instance_id)

def SDL_GetJoystickFromID(instance_id: SDL_JoystickID) -> LP_SDL_Joystick:
    """
    Get the [SDL_Joystick](https://wiki.libsdl.org/SDL3/SDL_Joystick) associated with an instance ID, if it has been opened.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickFromID
    """
    return raw.SDL_GetJoystickFromID(instance_id)

def SDL_GetJoystickFromPlayerIndex(player_index: ctypes.c_int) -> LP_SDL_Joystick:
    """
    Get the [SDL_Joystick](https://wiki.libsdl.org/SDL3/SDL_Joystick) associated with a player index.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickFromPlayerIndex
    """
    return raw.SDL_GetJoystickFromPlayerIndex(player_index)

def SDL_AttachVirtualJoystick(desc: LP_SDL_VirtualJoystickDesc) -> SDL_JoystickID:
    """
    Attach a new virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_AttachVirtualJoystick
    """
    return raw.SDL_AttachVirtualJoystick(desc)

def SDL_DetachVirtualJoystick(instance_id: SDL_JoystickID) -> ctypes.c_bool:
    """
    Detach a virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_DetachVirtualJoystick
    """
    return raw.SDL_DetachVirtualJoystick(instance_id)

def SDL_IsJoystickVirtual(instance_id: SDL_JoystickID) -> ctypes.c_bool:
    """
    Query whether or not a joystick is virtual.

    https://wiki.libsdl.org/SDL3/SDL_IsJoystickVirtual
    """
    return raw.SDL_IsJoystickVirtual(instance_id)

def SDL_SetJoystickVirtualAxis(joystick: LP_SDL_Joystick, axis: ctypes.c_int, value: ctypes.c_int16) -> ctypes.c_bool:
    """
    Set the state of an axis on an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickVirtualAxis
    """
    return raw.SDL_SetJoystickVirtualAxis(joystick, axis, value)

def SDL_SetJoystickVirtualBall(joystick: LP_SDL_Joystick, ball: ctypes.c_int, xrel: ctypes.c_int16, yrel: ctypes.c_int16) -> ctypes.c_bool:
    """
    Generate ball motion on an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickVirtualBall
    """
    return raw.SDL_SetJoystickVirtualBall(joystick, ball, xrel, yrel)

def SDL_SetJoystickVirtualButton(joystick: LP_SDL_Joystick, button: ctypes.c_int, down: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set the state of a button on an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickVirtualButton
    """
    return raw.SDL_SetJoystickVirtualButton(joystick, button, down)

def SDL_SetJoystickVirtualHat(joystick: LP_SDL_Joystick, hat: ctypes.c_int, value: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set the state of a hat on an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickVirtualHat
    """
    return raw.SDL_SetJoystickVirtualHat(joystick, hat, value)

def SDL_SetJoystickVirtualTouchpad(joystick: LP_SDL_Joystick, touchpad: ctypes.c_int, finger: ctypes.c_int, down: ctypes.c_bool, x: ctypes.c_float, y: ctypes.c_float, pressure: ctypes.c_float) -> ctypes.c_bool:
    """
    Set touchpad finger state on an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickVirtualTouchpad
    """
    return raw.SDL_SetJoystickVirtualTouchpad(joystick, touchpad, finger, down, x, y, pressure)

def SDL_SendJoystickVirtualSensorData(joystick: LP_SDL_Joystick, type: SDL_SensorType, sensor_timestamp: ctypes.c_uint64, data: LP_c_float, num_values: ctypes.c_int) -> ctypes.c_bool:
    """
    Send a sensor update for an opened virtual joystick.

    https://wiki.libsdl.org/SDL3/SDL_SendJoystickVirtualSensorData
    """
    return raw.SDL_SendJoystickVirtualSensorData(joystick, type, sensor_timestamp, data, num_values)

def SDL_GetJoystickProperties(joystick: LP_SDL_Joystick) -> SDL_PropertiesID:
    """
    Get the properties associated with a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickProperties
    """
    return raw.SDL_GetJoystickProperties(joystick)

def SDL_GetJoystickName(joystick: LP_SDL_Joystick) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickName
    """
    return raw.SDL_GetJoystickName(joystick)

def SDL_GetJoystickPath(joystick: LP_SDL_Joystick) -> ctypes.c_char_p:
    """
    Get the implementation dependent path of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickPath
    """
    return raw.SDL_GetJoystickPath(joystick)

def SDL_GetJoystickPlayerIndex(joystick: LP_SDL_Joystick) -> ctypes.c_int:
    """
    Get the player index of an opened joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickPlayerIndex
    """
    return raw.SDL_GetJoystickPlayerIndex(joystick)

def SDL_SetJoystickPlayerIndex(joystick: LP_SDL_Joystick, player_index: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the player index of an opened joystick.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickPlayerIndex
    """
    return raw.SDL_SetJoystickPlayerIndex(joystick, player_index)

def SDL_GetJoystickGUID(joystick: LP_SDL_Joystick) -> SDL_GUID:
    """
    Get the implementation-dependent GUID for the joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickGUID
    """
    return raw.SDL_GetJoystickGUID(joystick)

def SDL_GetJoystickVendor(joystick: LP_SDL_Joystick) -> ctypes.c_uint16:
    """
    Get the USB vendor ID of an opened joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickVendor
    """
    return raw.SDL_GetJoystickVendor(joystick)

def SDL_GetJoystickProduct(joystick: LP_SDL_Joystick) -> ctypes.c_uint16:
    """
    Get the USB product ID of an opened joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickProduct
    """
    return raw.SDL_GetJoystickProduct(joystick)

def SDL_GetJoystickProductVersion(joystick: LP_SDL_Joystick) -> ctypes.c_uint16:
    """
    Get the product version of an opened joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickProductVersion
    """
    return raw.SDL_GetJoystickProductVersion(joystick)

def SDL_GetJoystickFirmwareVersion(joystick: LP_SDL_Joystick) -> ctypes.c_uint16:
    """
    Get the firmware version of an opened joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickFirmwareVersion
    """
    return raw.SDL_GetJoystickFirmwareVersion(joystick)

def SDL_GetJoystickSerial(joystick: LP_SDL_Joystick) -> ctypes.c_char_p:
    """
    Get the serial number of an opened joystick, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickSerial
    """
    return raw.SDL_GetJoystickSerial(joystick)

def SDL_GetJoystickType(joystick: LP_SDL_Joystick) -> SDL_JoystickType:
    """
    Get the type of an opened joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickType
    """
    return raw.SDL_GetJoystickType(joystick)

def SDL_GetJoystickGUIDInfo(guid: SDL_GUID, vendor: LP_c_uint16, product: LP_c_uint16, version: LP_c_uint16, crc16: LP_c_uint16) -> None:
    """
    Get the device information encoded in a [SDL_GUID](https://wiki.libsdl.org/SDL3/SDL_GUID) structure.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickGUIDInfo
    """
    return raw.SDL_GetJoystickGUIDInfo(guid, vendor, product, version, crc16)

def SDL_JoystickConnected(joystick: LP_SDL_Joystick) -> ctypes.c_bool:
    """
    Get the status of a specified joystick.

    https://wiki.libsdl.org/SDL3/SDL_JoystickConnected
    """
    return raw.SDL_JoystickConnected(joystick)

def SDL_GetJoystickID(joystick: LP_SDL_Joystick) -> SDL_JoystickID:
    """
    Get the instance ID of an opened joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickID
    """
    return raw.SDL_GetJoystickID(joystick)

def SDL_GetNumJoystickAxes(joystick: LP_SDL_Joystick) -> ctypes.c_int:
    """
    Get the number of general axis controls on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetNumJoystickAxes
    """
    return raw.SDL_GetNumJoystickAxes(joystick)

def SDL_GetNumJoystickBalls(joystick: LP_SDL_Joystick) -> ctypes.c_int:
    """
    Get the number of trackballs on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetNumJoystickBalls
    """
    return raw.SDL_GetNumJoystickBalls(joystick)

def SDL_GetNumJoystickHats(joystick: LP_SDL_Joystick) -> ctypes.c_int:
    """
    Get the number of POV hats on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetNumJoystickHats
    """
    return raw.SDL_GetNumJoystickHats(joystick)

def SDL_GetNumJoystickButtons(joystick: LP_SDL_Joystick) -> ctypes.c_int:
    """
    Get the number of buttons on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetNumJoystickButtons
    """
    return raw.SDL_GetNumJoystickButtons(joystick)

def SDL_SetJoystickEventsEnabled(enabled: ctypes.c_bool) -> None:
    """
    Set the state of joystick event processing.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickEventsEnabled
    """
    return raw.SDL_SetJoystickEventsEnabled(enabled)

def SDL_JoystickEventsEnabled() -> ctypes.c_bool:
    """
    Query the state of joystick event processing.

    https://wiki.libsdl.org/SDL3/SDL_JoystickEventsEnabled
    """
    return raw.SDL_JoystickEventsEnabled()

def SDL_UpdateJoysticks() -> None:
    """
    Update the current state of the open joysticks.

    https://wiki.libsdl.org/SDL3/SDL_UpdateJoysticks
    """
    return raw.SDL_UpdateJoysticks()

def SDL_GetJoystickAxis(joystick: LP_SDL_Joystick, axis: ctypes.c_int) -> ctypes.c_int16:
    """
    Get the current state of an axis control on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickAxis
    """
    return raw.SDL_GetJoystickAxis(joystick, axis)

def SDL_GetJoystickAxisInitialState(joystick: LP_SDL_Joystick, axis: ctypes.c_int, state: LP_c_int16) -> ctypes.c_bool:
    """
    Get the initial state of an axis control on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickAxisInitialState
    """
    return raw.SDL_GetJoystickAxisInitialState(joystick, axis, state)

def SDL_GetJoystickBall(joystick: LP_SDL_Joystick, ball: ctypes.c_int, dx: LP_c_int, dy: LP_c_int) -> ctypes.c_bool:
    """
    Get the ball axis change since the last poll.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickBall
    """
    return raw.SDL_GetJoystickBall(joystick, ball, dx, dy)

def SDL_GetJoystickHat(joystick: LP_SDL_Joystick, hat: ctypes.c_int) -> ctypes.c_uint8:
    """
    Get the current state of a POV hat on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickHat
    """
    return raw.SDL_GetJoystickHat(joystick, hat)

def SDL_GetJoystickButton(joystick: LP_SDL_Joystick, button: ctypes.c_int) -> ctypes.c_bool:
    """
    Get the current state of a button on a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickButton
    """
    return raw.SDL_GetJoystickButton(joystick, button)

def SDL_RumbleJoystick(joystick: LP_SDL_Joystick, low_frequency_rumble: ctypes.c_uint16, high_frequency_rumble: ctypes.c_uint16, duration_ms: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Start a rumble effect.

    https://wiki.libsdl.org/SDL3/SDL_RumbleJoystick
    """
    return raw.SDL_RumbleJoystick(joystick, low_frequency_rumble, high_frequency_rumble, duration_ms)

def SDL_RumbleJoystickTriggers(joystick: LP_SDL_Joystick, left_rumble: ctypes.c_uint16, right_rumble: ctypes.c_uint16, duration_ms: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Start a rumble effect in the joystick's triggers.

    https://wiki.libsdl.org/SDL3/SDL_RumbleJoystickTriggers
    """
    return raw.SDL_RumbleJoystickTriggers(joystick, left_rumble, right_rumble, duration_ms)

def SDL_SetJoystickLED(joystick: LP_SDL_Joystick, red: ctypes.c_uint8, green: ctypes.c_uint8, blue: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Update a joystick's LED color.

    https://wiki.libsdl.org/SDL3/SDL_SetJoystickLED
    """
    return raw.SDL_SetJoystickLED(joystick, red, green, blue)

def SDL_SendJoystickEffect(joystick: LP_SDL_Joystick, data: ctypes.c_void_p, size: ctypes.c_int) -> ctypes.c_bool:
    """
    Send a joystick specific effect packet.

    https://wiki.libsdl.org/SDL3/SDL_SendJoystickEffect
    """
    return raw.SDL_SendJoystickEffect(joystick, data, size)

def SDL_CloseJoystick(joystick: LP_SDL_Joystick) -> None:
    """
    Close a joystick previously opened with [SDL_OpenJoystick](https://wiki.libsdl.org/SDL3/SDL_OpenJoystick)().

    https://wiki.libsdl.org/SDL3/SDL_CloseJoystick
    """
    return raw.SDL_CloseJoystick(joystick)

def SDL_GetJoystickConnectionState(joystick: LP_SDL_Joystick) -> SDL_JoystickConnectionState:
    """
    Get the connection state of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickConnectionState
    """
    return raw.SDL_GetJoystickConnectionState(joystick)

def SDL_GetJoystickPowerInfo(joystick: LP_SDL_Joystick, percent: LP_c_int) -> SDL_PowerState:
    """
    Get the battery state of a joystick.

    https://wiki.libsdl.org/SDL3/SDL_GetJoystickPowerInfo
    """
    return raw.SDL_GetJoystickPowerInfo(joystick, percent)

def SDL_HasKeyboard() -> ctypes.c_bool:
    """
    Return whether a keyboard is currently connected.

    https://wiki.libsdl.org/SDL3/SDL_HasKeyboard
    """
    return raw.SDL_HasKeyboard()

def SDL_GetKeyboards(count: LP_c_int) -> LP_SDL_KeyboardID:
    """
    Get a list of currently connected keyboards.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyboards
    """
    return raw.SDL_GetKeyboards(count)

def SDL_GetKeyboardNameForID(instance_id: SDL_KeyboardID) -> ctypes.c_char_p:
    """
    Get the name of a keyboard.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyboardNameForID
    """
    return raw.SDL_GetKeyboardNameForID(instance_id)

def SDL_GetKeyboardFocus() -> LP_SDL_Window:
    """
    Query the window which currently has keyboard focus.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyboardFocus
    """
    return raw.SDL_GetKeyboardFocus()

def SDL_GetKeyboardState(numkeys: LP_c_int) -> LP_c_bool:
    """
    Get a snapshot of the current state of the keyboard.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyboardState
    """
    return raw.SDL_GetKeyboardState(numkeys)

def SDL_ResetKeyboard() -> None:
    """
    Clear the state of the keyboard.

    https://wiki.libsdl.org/SDL3/SDL_ResetKeyboard
    """
    return raw.SDL_ResetKeyboard()

def SDL_GetModState() -> SDL_Keymod:
    """
    Get the current key modifier state for the keyboard.

    https://wiki.libsdl.org/SDL3/SDL_GetModState
    """
    return raw.SDL_GetModState()

def SDL_SetModState(modstate: SDL_Keymod) -> None:
    """
    Set the current key modifier state for the keyboard.

    https://wiki.libsdl.org/SDL3/SDL_SetModState
    """
    return raw.SDL_SetModState(modstate)

def SDL_GetKeyFromScancode(scancode: SDL_Scancode, modstate: SDL_Keymod, key_event: ctypes.c_bool) -> SDL_Keycode:
    """
    Get the key code corresponding to the given scancode according to the current keyboard layout.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyFromScancode
    """
    return raw.SDL_GetKeyFromScancode(scancode, modstate, key_event)

def SDL_GetScancodeFromKey(key: SDL_Keycode, modstate: LP_SDL_Keymod) -> SDL_Scancode:
    """
    Get the scancode corresponding to the given key code according to the current keyboard layout.

    https://wiki.libsdl.org/SDL3/SDL_GetScancodeFromKey
    """
    return raw.SDL_GetScancodeFromKey(key, modstate)

def SDL_SetScancodeName(scancode: SDL_Scancode, name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set a human-readable name for a scancode.

    https://wiki.libsdl.org/SDL3/SDL_SetScancodeName
    """
    return raw.SDL_SetScancodeName(scancode, name)

def SDL_GetScancodeName(scancode: SDL_Scancode) -> ctypes.c_char_p:
    """
    Get a human-readable name for a scancode.

    https://wiki.libsdl.org/SDL3/SDL_GetScancodeName
    """
    return raw.SDL_GetScancodeName(scancode)

def SDL_GetScancodeFromName(name: ctypes.c_char_p) -> SDL_Scancode:
    """
    Get a scancode from a human-readable name.

    https://wiki.libsdl.org/SDL3/SDL_GetScancodeFromName
    """
    return raw.SDL_GetScancodeFromName(name)

def SDL_GetKeyName(key: SDL_Keycode) -> ctypes.c_char_p:
    """
    Get a human-readable name for a key.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyName
    """
    return raw.SDL_GetKeyName(key)

def SDL_GetKeyFromName(name: ctypes.c_char_p) -> SDL_Keycode:
    """
    Get a key code from a human-readable name.

    https://wiki.libsdl.org/SDL3/SDL_GetKeyFromName
    """
    return raw.SDL_GetKeyFromName(name)

def SDL_StartTextInput(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Start accepting Unicode text input events in a window.

    https://wiki.libsdl.org/SDL3/SDL_StartTextInput
    """
    return raw.SDL_StartTextInput(window)

def SDL_StartTextInputWithProperties(window: LP_SDL_Window, props: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Start accepting Unicode text input events in a window, with properties describing the input.

    https://wiki.libsdl.org/SDL3/SDL_StartTextInputWithProperties
    """
    return raw.SDL_StartTextInputWithProperties(window, props)

def SDL_TextInputActive(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Check whether or not Unicode text input events are enabled for a window.

    https://wiki.libsdl.org/SDL3/SDL_TextInputActive
    """
    return raw.SDL_TextInputActive(window)

def SDL_StopTextInput(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Stop receiving any text input events in a window.

    https://wiki.libsdl.org/SDL3/SDL_StopTextInput
    """
    return raw.SDL_StopTextInput(window)

def SDL_ClearComposition(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Dismiss the composition window/IME without disabling the subsystem.

    https://wiki.libsdl.org/SDL3/SDL_ClearComposition
    """
    return raw.SDL_ClearComposition(window)

def SDL_SetTextInputArea(window: LP_SDL_Window, rect: LP_SDL_Rect, cursor: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the area used to type Unicode text input.

    https://wiki.libsdl.org/SDL3/SDL_SetTextInputArea
    """
    return raw.SDL_SetTextInputArea(window, rect, cursor)

def SDL_GetTextInputArea(window: LP_SDL_Window, rect: LP_SDL_Rect, cursor: LP_c_int) -> ctypes.c_bool:
    """
    Get the area used to type Unicode text input.

    https://wiki.libsdl.org/SDL3/SDL_GetTextInputArea
    """
    return raw.SDL_GetTextInputArea(window, rect, cursor)

def SDL_HasScreenKeyboardSupport() -> ctypes.c_bool:
    """
    Check whether the platform has screen keyboard support.

    https://wiki.libsdl.org/SDL3/SDL_HasScreenKeyboardSupport
    """
    return raw.SDL_HasScreenKeyboardSupport()

def SDL_ScreenKeyboardShown(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Check whether the screen keyboard is shown for given window.

    https://wiki.libsdl.org/SDL3/SDL_ScreenKeyboardShown
    """
    return raw.SDL_ScreenKeyboardShown(window)

def SDL_HasMouse() -> ctypes.c_bool:
    """
    Return whether a mouse is currently connected.

    https://wiki.libsdl.org/SDL3/SDL_HasMouse
    """
    return raw.SDL_HasMouse()

def SDL_GetMice(count: LP_c_int) -> LP_SDL_MouseID:
    """
    Get a list of currently connected mice.

    https://wiki.libsdl.org/SDL3/SDL_GetMice
    """
    return raw.SDL_GetMice(count)

def SDL_GetMouseNameForID(instance_id: SDL_MouseID) -> ctypes.c_char_p:
    """
    Get the name of a mouse.

    https://wiki.libsdl.org/SDL3/SDL_GetMouseNameForID
    """
    return raw.SDL_GetMouseNameForID(instance_id)

def SDL_GetMouseFocus() -> LP_SDL_Window:
    """
    Get the window which currently has mouse focus.

    https://wiki.libsdl.org/SDL3/SDL_GetMouseFocus
    """
    return raw.SDL_GetMouseFocus()

def SDL_GetMouseState(x: LP_c_float, y: LP_c_float) -> SDL_MouseButtonFlags:
    """
    Query SDL's cache for the synchronous mouse button state and the window-relative SDL-cursor position.

    https://wiki.libsdl.org/SDL3/SDL_GetMouseState
    """
    return raw.SDL_GetMouseState(x, y)

def SDL_GetGlobalMouseState(x: LP_c_float, y: LP_c_float) -> SDL_MouseButtonFlags:
    """
    Query the platform for the asynchronous mouse button state and the desktop-relative platform-cursor position.

    https://wiki.libsdl.org/SDL3/SDL_GetGlobalMouseState
    """
    return raw.SDL_GetGlobalMouseState(x, y)

def SDL_GetRelativeMouseState(x: LP_c_float, y: LP_c_float) -> SDL_MouseButtonFlags:
    """
    Query SDL's cache for the synchronous mouse button state and accumulated mouse delta since last call.

    https://wiki.libsdl.org/SDL3/SDL_GetRelativeMouseState
    """
    return raw.SDL_GetRelativeMouseState(x, y)

def SDL_WarpMouseInWindow(window: LP_SDL_Window, x: ctypes.c_float, y: ctypes.c_float) -> None:
    """
    Move the mouse cursor to the given position within the window.

    https://wiki.libsdl.org/SDL3/SDL_WarpMouseInWindow
    """
    return raw.SDL_WarpMouseInWindow(window, x, y)

def SDL_WarpMouseGlobal(x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_bool:
    """
    Move the mouse to the given position in global screen space.

    https://wiki.libsdl.org/SDL3/SDL_WarpMouseGlobal
    """
    return raw.SDL_WarpMouseGlobal(x, y)

def SDL_SetRelativeMouseTransform(callback: SDL_MouseMotionTransformCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a user-defined function by which to transform relative mouse inputs.

    https://wiki.libsdl.org/SDL3/SDL_SetRelativeMouseTransform
    """
    return raw.SDL_SetRelativeMouseTransform(callback, userdata)

def SDL_SetWindowRelativeMouseMode(window: LP_SDL_Window, enabled: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set relative mouse mode for a window.

    https://wiki.libsdl.org/SDL3/SDL_SetWindowRelativeMouseMode
    """
    return raw.SDL_SetWindowRelativeMouseMode(window, enabled)

def SDL_GetWindowRelativeMouseMode(window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Query whether relative mouse mode is enabled for a window.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowRelativeMouseMode
    """
    return raw.SDL_GetWindowRelativeMouseMode(window)

def SDL_CaptureMouse(enabled: ctypes.c_bool) -> ctypes.c_bool:
    """
    Capture the mouse and to track input outside an SDL window.

    https://wiki.libsdl.org/SDL3/SDL_CaptureMouse
    """
    return raw.SDL_CaptureMouse(enabled)

def SDL_CreateCursor(data: LP_c_uint8, mask: LP_c_uint8, w: ctypes.c_int, h: ctypes.c_int, hot_x: ctypes.c_int, hot_y: ctypes.c_int) -> LP_SDL_Cursor:
    """
    Create a cursor using the specified bitmap data and mask (in MSB format).

    https://wiki.libsdl.org/SDL3/SDL_CreateCursor
    """
    return raw.SDL_CreateCursor(data, mask, w, h, hot_x, hot_y)

def SDL_CreateColorCursor(surface: LP_SDL_Surface, hot_x: ctypes.c_int, hot_y: ctypes.c_int) -> LP_SDL_Cursor:
    """
    Create a color cursor.

    https://wiki.libsdl.org/SDL3/SDL_CreateColorCursor
    """
    return raw.SDL_CreateColorCursor(surface, hot_x, hot_y)

def SDL_CreateAnimatedCursor(frames: LP_SDL_CursorFrameInfo, frame_count: ctypes.c_int, hot_x: ctypes.c_int, hot_y: ctypes.c_int) -> LP_SDL_Cursor:
    """
    Create an animated color cursor.

    https://wiki.libsdl.org/SDL3/SDL_CreateAnimatedCursor
    """
    return raw.SDL_CreateAnimatedCursor(frames, frame_count, hot_x, hot_y)

def SDL_CreateSystemCursor(id: SDL_SystemCursor) -> LP_SDL_Cursor:
    """
    Create a system cursor.

    https://wiki.libsdl.org/SDL3/SDL_CreateSystemCursor
    """
    return raw.SDL_CreateSystemCursor(id)

def SDL_SetCursor(cursor: LP_SDL_Cursor) -> ctypes.c_bool:
    """
    Set the active cursor.

    https://wiki.libsdl.org/SDL3/SDL_SetCursor
    """
    return raw.SDL_SetCursor(cursor)

def SDL_GetCursor() -> LP_SDL_Cursor:
    """
    Get the active cursor.

    https://wiki.libsdl.org/SDL3/SDL_GetCursor
    """
    return raw.SDL_GetCursor()

def SDL_GetDefaultCursor() -> LP_SDL_Cursor:
    """
    Get the default cursor.

    https://wiki.libsdl.org/SDL3/SDL_GetDefaultCursor
    """
    return raw.SDL_GetDefaultCursor()

def SDL_DestroyCursor(cursor: LP_SDL_Cursor) -> None:
    """
    Free a previously-created cursor.

    https://wiki.libsdl.org/SDL3/SDL_DestroyCursor
    """
    return raw.SDL_DestroyCursor(cursor)

def SDL_ShowCursor() -> ctypes.c_bool:
    """
    Show the cursor.

    https://wiki.libsdl.org/SDL3/SDL_ShowCursor
    """
    return raw.SDL_ShowCursor()

def SDL_HideCursor() -> ctypes.c_bool:
    """
    Hide the cursor.

    https://wiki.libsdl.org/SDL3/SDL_HideCursor
    """
    return raw.SDL_HideCursor()

def SDL_CursorVisible() -> ctypes.c_bool:
    """
    Return whether the cursor is currently being shown.

    https://wiki.libsdl.org/SDL3/SDL_CursorVisible
    """
    return raw.SDL_CursorVisible()

def SDL_GetTouchDevices(count: LP_c_int) -> LP_SDL_TouchID:
    """
    Get a list of registered touch devices.

    https://wiki.libsdl.org/SDL3/SDL_GetTouchDevices
    """
    return raw.SDL_GetTouchDevices(count)

def SDL_GetTouchDeviceName(touchID: SDL_TouchID) -> ctypes.c_char_p:
    """
    Get the touch device name as reported from the driver.

    https://wiki.libsdl.org/SDL3/SDL_GetTouchDeviceName
    """
    return raw.SDL_GetTouchDeviceName(touchID)

def SDL_GetTouchDeviceType(touchID: SDL_TouchID) -> SDL_TouchDeviceType:
    """
    Get the type of the given touch device.

    https://wiki.libsdl.org/SDL3/SDL_GetTouchDeviceType
    """
    return raw.SDL_GetTouchDeviceType(touchID)

def SDL_GetTouchFingers(touchID: SDL_TouchID, count: LP_c_int) -> LP_LP_SDL_Finger:
    """
    Get a list of active fingers for a given touch device.

    https://wiki.libsdl.org/SDL3/SDL_GetTouchFingers
    """
    return raw.SDL_GetTouchFingers(touchID, count)

def SDL_GetPenDeviceType(instance_id: SDL_PenID) -> SDL_PenDeviceType:
    """
    Get the device type of the given pen.

    https://wiki.libsdl.org/SDL3/SDL_GetPenDeviceType
    """
    return raw.SDL_GetPenDeviceType(instance_id)

def SDL_PumpEvents() -> None:
    """
    Pump the event loop, gathering events from the input devices.

    https://wiki.libsdl.org/SDL3/SDL_PumpEvents
    """
    return raw.SDL_PumpEvents()

def SDL_PeepEvents(events: LP_SDL_Event, numevents: ctypes.c_int, action: SDL_EventAction, minType: ctypes.c_uint32, maxType: ctypes.c_uint32) -> ctypes.c_int:
    """
    Check the event queue for messages and optionally return them.

    https://wiki.libsdl.org/SDL3/SDL_PeepEvents
    """
    return raw.SDL_PeepEvents(events, numevents, action, minType, maxType)

def SDL_HasEvent(type: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Check for the existence of a certain event type in the event queue.

    https://wiki.libsdl.org/SDL3/SDL_HasEvent
    """
    return raw.SDL_HasEvent(type)

def SDL_HasEvents(minType: ctypes.c_uint32, maxType: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Check for the existence of certain event types in the event queue.

    https://wiki.libsdl.org/SDL3/SDL_HasEvents
    """
    return raw.SDL_HasEvents(minType, maxType)

def SDL_FlushEvent(type: ctypes.c_uint32) -> None:
    """
    Clear events of a specific type from the event queue.

    https://wiki.libsdl.org/SDL3/SDL_FlushEvent
    """
    return raw.SDL_FlushEvent(type)

def SDL_FlushEvents(minType: ctypes.c_uint32, maxType: ctypes.c_uint32) -> None:
    """
    Clear events of a range of types from the event queue.

    https://wiki.libsdl.org/SDL3/SDL_FlushEvents
    """
    return raw.SDL_FlushEvents(minType, maxType)

def SDL_PollEvent(event: LP_SDL_Event) -> ctypes.c_bool:
    """
    Poll for currently pending events.

    https://wiki.libsdl.org/SDL3/SDL_PollEvent
    """
    return raw.SDL_PollEvent(event)

def SDL_WaitEvent(event: LP_SDL_Event) -> ctypes.c_bool:
    """
    Wait indefinitely for the next available event.

    https://wiki.libsdl.org/SDL3/SDL_WaitEvent
    """
    return raw.SDL_WaitEvent(event)

def SDL_WaitEventTimeout(event: LP_SDL_Event, timeoutMS: ctypes.c_int32) -> ctypes.c_bool:
    """
    Wait until the specified timeout (in milliseconds) for the next available event.

    https://wiki.libsdl.org/SDL3/SDL_WaitEventTimeout
    """
    return raw.SDL_WaitEventTimeout(event, timeoutMS)

def SDL_PushEvent(event: LP_SDL_Event) -> ctypes.c_bool:
    """
    Add an event to the event queue.

    https://wiki.libsdl.org/SDL3/SDL_PushEvent
    """
    return raw.SDL_PushEvent(event)

def SDL_SetEventFilter(filter: SDL_EventFilter, userdata: ctypes.c_void_p) -> None:
    """
    Set up a filter to process all events before they are added to the internal event queue.

    https://wiki.libsdl.org/SDL3/SDL_SetEventFilter
    """
    return raw.SDL_SetEventFilter(filter, userdata)

def SDL_GetEventFilter(filter: LP_SDL_EventFilter, userdata: LP_c_void_p) -> ctypes.c_bool:
    """
    Query the current event filter.

    https://wiki.libsdl.org/SDL3/SDL_GetEventFilter
    """
    return raw.SDL_GetEventFilter(filter, userdata)

def SDL_AddEventWatch(filter: SDL_EventFilter, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Add a callback to be triggered when an event is added to the event queue.

    https://wiki.libsdl.org/SDL3/SDL_AddEventWatch
    """
    return raw.SDL_AddEventWatch(filter, userdata)

def SDL_RemoveEventWatch(filter: SDL_EventFilter, userdata: ctypes.c_void_p) -> None:
    """
    Remove an event watch callback added with [SDL_AddEventWatch](https://wiki.libsdl.org/SDL3/SDL_AddEventWatch)().

    https://wiki.libsdl.org/SDL3/SDL_RemoveEventWatch
    """
    return raw.SDL_RemoveEventWatch(filter, userdata)

def SDL_FilterEvents(filter: SDL_EventFilter, userdata: ctypes.c_void_p) -> None:
    """
    Run a specific filter function on the current event queue, removing any events for which the filter returns false.

    https://wiki.libsdl.org/SDL3/SDL_FilterEvents
    """
    return raw.SDL_FilterEvents(filter, userdata)

def SDL_SetEventEnabled(type: ctypes.c_uint32, enabled: ctypes.c_bool) -> None:
    """
    Set the state of processing events by type.

    https://wiki.libsdl.org/SDL3/SDL_SetEventEnabled
    """
    return raw.SDL_SetEventEnabled(type, enabled)

def SDL_EventEnabled(type: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Query the state of processing events by type.

    https://wiki.libsdl.org/SDL3/SDL_EventEnabled
    """
    return raw.SDL_EventEnabled(type)

def SDL_RegisterEvents(numevents: ctypes.c_int) -> ctypes.c_uint32:
    """
    Allocate a set of user-defined events, and return the beginning event number for that set of events.

    https://wiki.libsdl.org/SDL3/SDL_RegisterEvents
    """
    return raw.SDL_RegisterEvents(numevents)

def SDL_GetWindowFromEvent(event: LP_SDL_Event) -> LP_SDL_Window:
    """
    Get window associated with an event.

    https://wiki.libsdl.org/SDL3/SDL_GetWindowFromEvent
    """
    return raw.SDL_GetWindowFromEvent(event)

def SDL_GetEventDescription(event: LP_SDL_Event, buf: ctypes.c_char_p, buflen: ctypes.c_int) -> ctypes.c_int:
    """
    Generate an English description of an event.

    https://wiki.libsdl.org/SDL3/SDL_GetEventDescription
    """
    return raw.SDL_GetEventDescription(event, buf, buflen)

def SDL_GetBasePath() -> ctypes.c_char_p:
    """
    Get the directory where the application was run from.

    https://wiki.libsdl.org/SDL3/SDL_GetBasePath
    """
    return raw.SDL_GetBasePath()

def SDL_GetPrefPath(org: ctypes.c_char_p, app: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get the user-and-app-specific path where files can be written.

    https://wiki.libsdl.org/SDL3/SDL_GetPrefPath
    """
    return raw.SDL_GetPrefPath(org, app)

def SDL_GetUserFolder(folder: SDL_Folder) -> ctypes.c_char_p:
    """
    Finds the most suitable user folder for a specific purpose.

    https://wiki.libsdl.org/SDL3/SDL_GetUserFolder
    """
    return raw.SDL_GetUserFolder(folder)

def SDL_CreateDirectory(path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Create a directory, and any missing parent directories.

    https://wiki.libsdl.org/SDL3/SDL_CreateDirectory
    """
    return raw.SDL_CreateDirectory(path)

def SDL_EnumerateDirectory(path: ctypes.c_char_p, callback: SDL_EnumerateDirectoryCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Enumerate a directory through a callback function.

    https://wiki.libsdl.org/SDL3/SDL_EnumerateDirectory
    """
    return raw.SDL_EnumerateDirectory(path, callback, userdata)

def SDL_RemovePath(path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Remove a file or an empty directory.

    https://wiki.libsdl.org/SDL3/SDL_RemovePath
    """
    return raw.SDL_RemovePath(path)

def SDL_RenamePath(oldpath: ctypes.c_char_p, newpath: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Rename a file or directory.

    https://wiki.libsdl.org/SDL3/SDL_RenamePath
    """
    return raw.SDL_RenamePath(oldpath, newpath)

def SDL_CopyFile(oldpath: ctypes.c_char_p, newpath: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Copy a file.

    https://wiki.libsdl.org/SDL3/SDL_CopyFile
    """
    return raw.SDL_CopyFile(oldpath, newpath)

def SDL_GetPathInfo(path: ctypes.c_char_p, info: LP_SDL_PathInfo) -> ctypes.c_bool:
    """
    Get information about a filesystem path.

    https://wiki.libsdl.org/SDL3/SDL_GetPathInfo
    """
    return raw.SDL_GetPathInfo(path, info)

def SDL_GlobDirectory(path: ctypes.c_char_p, pattern: ctypes.c_char_p, flags: SDL_GlobFlags, count: LP_c_int) -> LP_c_char_p:
    """
    Enumerate a directory tree, filtered by pattern, and return a list.

    https://wiki.libsdl.org/SDL3/SDL_GlobDirectory
    """
    return raw.SDL_GlobDirectory(path, pattern, flags, count)

def SDL_GetCurrentDirectory() -> ctypes.c_char_p:
    """
    Get what the system believes is the "current working directory."

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentDirectory
    """
    return raw.SDL_GetCurrentDirectory()

def SDL_AddGamepadMapping(mapping: ctypes.c_char_p) -> ctypes.c_int:
    """
    Add support for gamepads that SDL is unaware of or change the binding of an existing gamepad.

    https://wiki.libsdl.org/SDL3/SDL_AddGamepadMapping
    """
    return raw.SDL_AddGamepadMapping(mapping)

def SDL_AddGamepadMappingsFromIO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_int:
    """
    Load a set of gamepad mappings from an [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream).

    https://wiki.libsdl.org/SDL3/SDL_AddGamepadMappingsFromIO
    """
    return raw.SDL_AddGamepadMappingsFromIO(src, closeio)

def SDL_AddGamepadMappingsFromFile(file: ctypes.c_char_p) -> ctypes.c_int:
    """
    Load a set of gamepad mappings from a file.

    https://wiki.libsdl.org/SDL3/SDL_AddGamepadMappingsFromFile
    """
    return raw.SDL_AddGamepadMappingsFromFile(file)

def SDL_ReloadGamepadMappings() -> ctypes.c_bool:
    """
    Reinitialize the SDL mapping database to its initial state.

    https://wiki.libsdl.org/SDL3/SDL_ReloadGamepadMappings
    """
    return raw.SDL_ReloadGamepadMappings()

def SDL_GetGamepadMappings(count: LP_c_int) -> LP_c_char_p:
    """
    Get the current gamepad mappings.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadMappings
    """
    return raw.SDL_GetGamepadMappings(count)

def SDL_GetGamepadMappingForGUID(guid: SDL_GUID) -> ctypes.c_char_p:
    """
    Get the gamepad mapping string for a given GUID.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadMappingForGUID
    """
    return raw.SDL_GetGamepadMappingForGUID(guid)

def SDL_GetGamepadMapping(gamepad: LP_SDL_Gamepad) -> ctypes.c_char_p:
    """
    Get the current mapping of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadMapping
    """
    return raw.SDL_GetGamepadMapping(gamepad)

def SDL_SetGamepadMapping(instance_id: SDL_JoystickID, mapping: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set the current mapping of a joystick or gamepad.

    https://wiki.libsdl.org/SDL3/SDL_SetGamepadMapping
    """
    return raw.SDL_SetGamepadMapping(instance_id, mapping)

def SDL_HasGamepad() -> ctypes.c_bool:
    """
    Return whether a gamepad is currently connected.

    https://wiki.libsdl.org/SDL3/SDL_HasGamepad
    """
    return raw.SDL_HasGamepad()

def SDL_GetGamepads(count: LP_c_int) -> LP_SDL_JoystickID:
    """
    Get a list of currently connected gamepads.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepads
    """
    return raw.SDL_GetGamepads(count)

def SDL_IsGamepad(instance_id: SDL_JoystickID) -> ctypes.c_bool:
    """
    Check if the given joystick is supported by the gamepad interface.

    https://wiki.libsdl.org/SDL3/SDL_IsGamepad
    """
    return raw.SDL_IsGamepad(instance_id)

def SDL_GetGamepadNameForID(instance_id: SDL_JoystickID) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadNameForID
    """
    return raw.SDL_GetGamepadNameForID(instance_id)

def SDL_GetGamepadPathForID(instance_id: SDL_JoystickID) -> ctypes.c_char_p:
    """
    Get the implementation dependent path of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadPathForID
    """
    return raw.SDL_GetGamepadPathForID(instance_id)

def SDL_GetGamepadPlayerIndexForID(instance_id: SDL_JoystickID) -> ctypes.c_int:
    """
    Get the player index of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadPlayerIndexForID
    """
    return raw.SDL_GetGamepadPlayerIndexForID(instance_id)

def SDL_GetGamepadGUIDForID(instance_id: SDL_JoystickID) -> SDL_GUID:
    """
    Get the implementation-dependent GUID of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadGUIDForID
    """
    return raw.SDL_GetGamepadGUIDForID(instance_id)

def SDL_GetGamepadVendorForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the USB vendor ID of a gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadVendorForID
    """
    return raw.SDL_GetGamepadVendorForID(instance_id)

def SDL_GetGamepadProductForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the USB product ID of a gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadProductForID
    """
    return raw.SDL_GetGamepadProductForID(instance_id)

def SDL_GetGamepadProductVersionForID(instance_id: SDL_JoystickID) -> ctypes.c_uint16:
    """
    Get the product version of a gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadProductVersionForID
    """
    return raw.SDL_GetGamepadProductVersionForID(instance_id)

def SDL_GetGamepadTypeForID(instance_id: SDL_JoystickID) -> SDL_GamepadType:
    """
    Get the type of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadTypeForID
    """
    return raw.SDL_GetGamepadTypeForID(instance_id)

def SDL_GetRealGamepadTypeForID(instance_id: SDL_JoystickID) -> SDL_GamepadType:
    """
    Get the type of a gamepad, ignoring any mapping override.

    https://wiki.libsdl.org/SDL3/SDL_GetRealGamepadTypeForID
    """
    return raw.SDL_GetRealGamepadTypeForID(instance_id)

def SDL_GetGamepadMappingForID(instance_id: SDL_JoystickID) -> ctypes.c_char_p:
    """
    Get the mapping of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadMappingForID
    """
    return raw.SDL_GetGamepadMappingForID(instance_id)

def SDL_OpenGamepad(instance_id: SDL_JoystickID) -> LP_SDL_Gamepad:
    """
    Open a gamepad for use.

    https://wiki.libsdl.org/SDL3/SDL_OpenGamepad
    """
    return raw.SDL_OpenGamepad(instance_id)

def SDL_GetGamepadFromID(instance_id: SDL_JoystickID) -> LP_SDL_Gamepad:
    """
    Get the [SDL_Gamepad](https://wiki.libsdl.org/SDL3/SDL_Gamepad) associated with a joystick instance ID, if it has been opened.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadFromID
    """
    return raw.SDL_GetGamepadFromID(instance_id)

def SDL_GetGamepadFromPlayerIndex(player_index: ctypes.c_int) -> LP_SDL_Gamepad:
    """
    Get the [SDL_Gamepad](https://wiki.libsdl.org/SDL3/SDL_Gamepad) associated with a player index.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadFromPlayerIndex
    """
    return raw.SDL_GetGamepadFromPlayerIndex(player_index)

def SDL_GetGamepadProperties(gamepad: LP_SDL_Gamepad) -> SDL_PropertiesID:
    """
    Get the properties associated with an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadProperties
    """
    return raw.SDL_GetGamepadProperties(gamepad)

def SDL_GetGamepadID(gamepad: LP_SDL_Gamepad) -> SDL_JoystickID:
    """
    Get the instance ID of an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadID
    """
    return raw.SDL_GetGamepadID(gamepad)

def SDL_GetGamepadName(gamepad: LP_SDL_Gamepad) -> ctypes.c_char_p:
    """
    Get the implementation-dependent name for an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadName
    """
    return raw.SDL_GetGamepadName(gamepad)

def SDL_GetGamepadPath(gamepad: LP_SDL_Gamepad) -> ctypes.c_char_p:
    """
    Get the implementation-dependent path for an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadPath
    """
    return raw.SDL_GetGamepadPath(gamepad)

def SDL_GetGamepadType(gamepad: LP_SDL_Gamepad) -> SDL_GamepadType:
    """
    Get the type of an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadType
    """
    return raw.SDL_GetGamepadType(gamepad)

def SDL_GetRealGamepadType(gamepad: LP_SDL_Gamepad) -> SDL_GamepadType:
    """
    Get the type of an opened gamepad, ignoring any mapping override.

    https://wiki.libsdl.org/SDL3/SDL_GetRealGamepadType
    """
    return raw.SDL_GetRealGamepadType(gamepad)

def SDL_GetGamepadPlayerIndex(gamepad: LP_SDL_Gamepad) -> ctypes.c_int:
    """
    Get the player index of an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadPlayerIndex
    """
    return raw.SDL_GetGamepadPlayerIndex(gamepad)

def SDL_SetGamepadPlayerIndex(gamepad: LP_SDL_Gamepad, player_index: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the player index of an opened gamepad.

    https://wiki.libsdl.org/SDL3/SDL_SetGamepadPlayerIndex
    """
    return raw.SDL_SetGamepadPlayerIndex(gamepad, player_index)

def SDL_GetGamepadVendor(gamepad: LP_SDL_Gamepad) -> ctypes.c_uint16:
    """
    Get the USB vendor ID of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadVendor
    """
    return raw.SDL_GetGamepadVendor(gamepad)

def SDL_GetGamepadProduct(gamepad: LP_SDL_Gamepad) -> ctypes.c_uint16:
    """
    Get the USB product ID of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadProduct
    """
    return raw.SDL_GetGamepadProduct(gamepad)

def SDL_GetGamepadProductVersion(gamepad: LP_SDL_Gamepad) -> ctypes.c_uint16:
    """
    Get the product version of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadProductVersion
    """
    return raw.SDL_GetGamepadProductVersion(gamepad)

def SDL_GetGamepadFirmwareVersion(gamepad: LP_SDL_Gamepad) -> ctypes.c_uint16:
    """
    Get the firmware version of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadFirmwareVersion
    """
    return raw.SDL_GetGamepadFirmwareVersion(gamepad)

def SDL_GetGamepadSerial(gamepad: LP_SDL_Gamepad) -> ctypes.c_char_p:
    """
    Get the serial number of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadSerial
    """
    return raw.SDL_GetGamepadSerial(gamepad)

def SDL_GetGamepadSteamHandle(gamepad: LP_SDL_Gamepad) -> ctypes.c_uint64:
    """
    Get the Steam Input handle of an opened gamepad, if available.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadSteamHandle
    """
    return raw.SDL_GetGamepadSteamHandle(gamepad)

def SDL_GetGamepadConnectionState(gamepad: LP_SDL_Gamepad) -> SDL_JoystickConnectionState:
    """
    Get the connection state of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadConnectionState
    """
    return raw.SDL_GetGamepadConnectionState(gamepad)

def SDL_GetGamepadPowerInfo(gamepad: LP_SDL_Gamepad, percent: LP_c_int) -> SDL_PowerState:
    """
    Get the battery state of a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadPowerInfo
    """
    return raw.SDL_GetGamepadPowerInfo(gamepad, percent)

def SDL_GamepadConnected(gamepad: LP_SDL_Gamepad) -> ctypes.c_bool:
    """
    Check if a gamepad has been opened and is currently connected.

    https://wiki.libsdl.org/SDL3/SDL_GamepadConnected
    """
    return raw.SDL_GamepadConnected(gamepad)

def SDL_GetGamepadJoystick(gamepad: LP_SDL_Gamepad) -> LP_SDL_Joystick:
    """
    Get the underlying joystick from a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadJoystick
    """
    return raw.SDL_GetGamepadJoystick(gamepad)

def SDL_SetGamepadEventsEnabled(enabled: ctypes.c_bool) -> None:
    """
    Set the state of gamepad event processing.

    https://wiki.libsdl.org/SDL3/SDL_SetGamepadEventsEnabled
    """
    return raw.SDL_SetGamepadEventsEnabled(enabled)

def SDL_GamepadEventsEnabled() -> ctypes.c_bool:
    """
    Query the state of gamepad event processing.

    https://wiki.libsdl.org/SDL3/SDL_GamepadEventsEnabled
    """
    return raw.SDL_GamepadEventsEnabled()

def SDL_GetGamepadBindings(gamepad: LP_SDL_Gamepad, count: LP_c_int) -> LP_LP_SDL_GamepadBinding:
    """
    Get the SDL joystick layer bindings for a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadBindings
    """
    return raw.SDL_GetGamepadBindings(gamepad, count)

def SDL_UpdateGamepads() -> None:
    """
    Manually pump gamepad updates if not using the loop.

    https://wiki.libsdl.org/SDL3/SDL_UpdateGamepads
    """
    return raw.SDL_UpdateGamepads()

def SDL_GetGamepadTypeFromString(str: ctypes.c_char_p) -> SDL_GamepadType:
    """
    Convert a string into [SDL_GamepadType](https://wiki.libsdl.org/SDL3/SDL_GamepadType) enum.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadTypeFromString
    """
    return raw.SDL_GetGamepadTypeFromString(str)

def SDL_GetGamepadStringForType(type: SDL_GamepadType) -> ctypes.c_char_p:
    """
    Convert from an [SDL_GamepadType](https://wiki.libsdl.org/SDL3/SDL_GamepadType) enum to a string.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadStringForType
    """
    return raw.SDL_GetGamepadStringForType(type)

def SDL_GetGamepadAxisFromString(str: ctypes.c_char_p) -> SDL_GamepadAxis:
    """
    Convert a string into [SDL_GamepadAxis](https://wiki.libsdl.org/SDL3/SDL_GamepadAxis) enum.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadAxisFromString
    """
    return raw.SDL_GetGamepadAxisFromString(str)

def SDL_GetGamepadStringForAxis(axis: SDL_GamepadAxis) -> ctypes.c_char_p:
    """
    Convert from an [SDL_GamepadAxis](https://wiki.libsdl.org/SDL3/SDL_GamepadAxis) enum to a string.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadStringForAxis
    """
    return raw.SDL_GetGamepadStringForAxis(axis)

def SDL_GamepadHasAxis(gamepad: LP_SDL_Gamepad, axis: SDL_GamepadAxis) -> ctypes.c_bool:
    """
    Query whether a gamepad has a given axis.

    https://wiki.libsdl.org/SDL3/SDL_GamepadHasAxis
    """
    return raw.SDL_GamepadHasAxis(gamepad, axis)

def SDL_GetGamepadAxis(gamepad: LP_SDL_Gamepad, axis: SDL_GamepadAxis) -> ctypes.c_int16:
    """
    Get the current state of an axis control on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadAxis
    """
    return raw.SDL_GetGamepadAxis(gamepad, axis)

def SDL_GetGamepadButtonFromString(str: ctypes.c_char_p) -> SDL_GamepadButton:
    """
    Convert a string into an [SDL_GamepadButton](https://wiki.libsdl.org/SDL3/SDL_GamepadButton) enum.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadButtonFromString
    """
    return raw.SDL_GetGamepadButtonFromString(str)

def SDL_GetGamepadStringForButton(button: SDL_GamepadButton) -> ctypes.c_char_p:
    """
    Convert from an [SDL_GamepadButton](https://wiki.libsdl.org/SDL3/SDL_GamepadButton) enum to a string.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadStringForButton
    """
    return raw.SDL_GetGamepadStringForButton(button)

def SDL_GamepadHasButton(gamepad: LP_SDL_Gamepad, button: SDL_GamepadButton) -> ctypes.c_bool:
    """
    Query whether a gamepad has a given button.

    https://wiki.libsdl.org/SDL3/SDL_GamepadHasButton
    """
    return raw.SDL_GamepadHasButton(gamepad, button)

def SDL_GetGamepadButton(gamepad: LP_SDL_Gamepad, button: SDL_GamepadButton) -> ctypes.c_bool:
    """
    Get the current state of a button on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadButton
    """
    return raw.SDL_GetGamepadButton(gamepad, button)

def SDL_GetGamepadButtonLabelForType(type: SDL_GamepadType, button: SDL_GamepadButton) -> SDL_GamepadButtonLabel:
    """
    Get the label of a button on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadButtonLabelForType
    """
    return raw.SDL_GetGamepadButtonLabelForType(type, button)

def SDL_GetGamepadButtonLabel(gamepad: LP_SDL_Gamepad, button: SDL_GamepadButton) -> SDL_GamepadButtonLabel:
    """
    Get the label of a button on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadButtonLabel
    """
    return raw.SDL_GetGamepadButtonLabel(gamepad, button)

def SDL_GetNumGamepadTouchpads(gamepad: LP_SDL_Gamepad) -> ctypes.c_int:
    """
    Get the number of touchpads on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetNumGamepadTouchpads
    """
    return raw.SDL_GetNumGamepadTouchpads(gamepad)

def SDL_GetNumGamepadTouchpadFingers(gamepad: LP_SDL_Gamepad, touchpad: ctypes.c_int) -> ctypes.c_int:
    """
    Get the number of supported simultaneous fingers on a touchpad on a game gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetNumGamepadTouchpadFingers
    """
    return raw.SDL_GetNumGamepadTouchpadFingers(gamepad, touchpad)

def SDL_GetGamepadTouchpadFinger(gamepad: LP_SDL_Gamepad, touchpad: ctypes.c_int, finger: ctypes.c_int, down: LP_c_bool, x: LP_c_float, y: LP_c_float, pressure: LP_c_float) -> ctypes.c_bool:
    """
    Get the current state of a finger on a touchpad on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadTouchpadFinger
    """
    return raw.SDL_GetGamepadTouchpadFinger(gamepad, touchpad, finger, down, x, y, pressure)

def SDL_GamepadHasSensor(gamepad: LP_SDL_Gamepad, type: SDL_SensorType) -> ctypes.c_bool:
    """
    Return whether a gamepad has a particular sensor.

    https://wiki.libsdl.org/SDL3/SDL_GamepadHasSensor
    """
    return raw.SDL_GamepadHasSensor(gamepad, type)

def SDL_SetGamepadSensorEnabled(gamepad: LP_SDL_Gamepad, type: SDL_SensorType, enabled: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set whether data reporting for a gamepad sensor is enabled.

    https://wiki.libsdl.org/SDL3/SDL_SetGamepadSensorEnabled
    """
    return raw.SDL_SetGamepadSensorEnabled(gamepad, type, enabled)

def SDL_GamepadSensorEnabled(gamepad: LP_SDL_Gamepad, type: SDL_SensorType) -> ctypes.c_bool:
    """
    Query whether sensor data reporting is enabled for a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_GamepadSensorEnabled
    """
    return raw.SDL_GamepadSensorEnabled(gamepad, type)

def SDL_GetGamepadSensorDataRate(gamepad: LP_SDL_Gamepad, type: SDL_SensorType) -> ctypes.c_float:
    """
    Get the data rate (number of events per second) of a gamepad sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadSensorDataRate
    """
    return raw.SDL_GetGamepadSensorDataRate(gamepad, type)

def SDL_GetGamepadSensorData(gamepad: LP_SDL_Gamepad, type: SDL_SensorType, data: LP_c_float, num_values: ctypes.c_int) -> ctypes.c_bool:
    """
    Get the current state of a gamepad sensor.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadSensorData
    """
    return raw.SDL_GetGamepadSensorData(gamepad, type, data, num_values)

def SDL_RumbleGamepad(gamepad: LP_SDL_Gamepad, low_frequency_rumble: ctypes.c_uint16, high_frequency_rumble: ctypes.c_uint16, duration_ms: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Start a rumble effect on a gamepad.

    https://wiki.libsdl.org/SDL3/SDL_RumbleGamepad
    """
    return raw.SDL_RumbleGamepad(gamepad, low_frequency_rumble, high_frequency_rumble, duration_ms)

def SDL_RumbleGamepadTriggers(gamepad: LP_SDL_Gamepad, left_rumble: ctypes.c_uint16, right_rumble: ctypes.c_uint16, duration_ms: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Start a rumble effect in the gamepad's triggers.

    https://wiki.libsdl.org/SDL3/SDL_RumbleGamepadTriggers
    """
    return raw.SDL_RumbleGamepadTriggers(gamepad, left_rumble, right_rumble, duration_ms)

def SDL_SetGamepadLED(gamepad: LP_SDL_Gamepad, red: ctypes.c_uint8, green: ctypes.c_uint8, blue: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Update a gamepad's LED color.

    https://wiki.libsdl.org/SDL3/SDL_SetGamepadLED
    """
    return raw.SDL_SetGamepadLED(gamepad, red, green, blue)

def SDL_SendGamepadEffect(gamepad: LP_SDL_Gamepad, data: ctypes.c_void_p, size: ctypes.c_int) -> ctypes.c_bool:
    """
    Send a gamepad specific effect packet.

    https://wiki.libsdl.org/SDL3/SDL_SendGamepadEffect
    """
    return raw.SDL_SendGamepadEffect(gamepad, data, size)

def SDL_CloseGamepad(gamepad: LP_SDL_Gamepad) -> None:
    """
    Close a gamepad previously opened with [SDL_OpenGamepad](https://wiki.libsdl.org/SDL3/SDL_OpenGamepad)().

    https://wiki.libsdl.org/SDL3/SDL_CloseGamepad
    """
    return raw.SDL_CloseGamepad(gamepad)

def SDL_GetGamepadAppleSFSymbolsNameForButton(gamepad: LP_SDL_Gamepad, button: SDL_GamepadButton) -> ctypes.c_char_p:
    """
    Return the sfSymbolsName for a given button on a gamepad on Apple platforms.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadAppleSFSymbolsNameForButton
    """
    return raw.SDL_GetGamepadAppleSFSymbolsNameForButton(gamepad, button)

def SDL_GetGamepadAppleSFSymbolsNameForAxis(gamepad: LP_SDL_Gamepad, axis: SDL_GamepadAxis) -> ctypes.c_char_p:
    """
    Return the sfSymbolsName for a given axis on a gamepad on Apple platforms.

    https://wiki.libsdl.org/SDL3/SDL_GetGamepadAppleSFSymbolsNameForAxis
    """
    return raw.SDL_GetGamepadAppleSFSymbolsNameForAxis(gamepad, axis)

def SDL_GPUSupportsShaderFormats(format_flags: SDL_GPUShaderFormat, name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Checks for GPU runtime support.

    https://wiki.libsdl.org/SDL3/SDL_GPUSupportsShaderFormats
    """
    return raw.SDL_GPUSupportsShaderFormats(format_flags, name)

def SDL_GPUSupportsProperties(props: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Checks for GPU runtime support.

    https://wiki.libsdl.org/SDL3/SDL_GPUSupportsProperties
    """
    return raw.SDL_GPUSupportsProperties(props)

def SDL_CreateGPUDevice(format_flags: SDL_GPUShaderFormat, debug_mode: ctypes.c_bool, name: ctypes.c_char_p) -> LP_SDL_GPUDevice:
    """
    Creates a GPU context.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUDevice
    """
    return raw.SDL_CreateGPUDevice(format_flags, debug_mode, name)

def SDL_CreateGPUDeviceWithProperties(props: SDL_PropertiesID) -> LP_SDL_GPUDevice:
    """
    Creates a GPU context.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUDeviceWithProperties
    """
    return raw.SDL_CreateGPUDeviceWithProperties(props)

def SDL_DestroyGPUDevice(device: LP_SDL_GPUDevice) -> None:
    """
    Destroys a GPU context previously returned by [SDL_CreateGPUDevice](https://wiki.libsdl.org/SDL3/SDL_CreateGPUDevice).

    https://wiki.libsdl.org/SDL3/SDL_DestroyGPUDevice
    """
    return raw.SDL_DestroyGPUDevice(device)

def SDL_GetNumGPUDrivers() -> ctypes.c_int:
    """
    Get the number of GPU drivers compiled into SDL.

    https://wiki.libsdl.org/SDL3/SDL_GetNumGPUDrivers
    """
    return raw.SDL_GetNumGPUDrivers()

def SDL_GetGPUDriver(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Get the name of a built in GPU driver.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUDriver
    """
    return raw.SDL_GetGPUDriver(index)

def SDL_GetGPUDeviceDriver(device: LP_SDL_GPUDevice) -> ctypes.c_char_p:
    """
    Returns the name of the backend used to create this GPU context.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUDeviceDriver
    """
    return raw.SDL_GetGPUDeviceDriver(device)

def SDL_GetGPUShaderFormats(device: LP_SDL_GPUDevice) -> SDL_GPUShaderFormat:
    """
    Returns the supported shader formats for this GPU context.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUShaderFormats
    """
    return raw.SDL_GetGPUShaderFormats(device)

def SDL_GetGPUDeviceProperties(device: LP_SDL_GPUDevice) -> SDL_PropertiesID:
    """
    Get the properties associated with a GPU device.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUDeviceProperties
    """
    return raw.SDL_GetGPUDeviceProperties(device)

def SDL_CreateGPUComputePipeline(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUComputePipelineCreateInfo) -> LP_SDL_GPUComputePipeline:
    """
    Creates a pipeline object to be used in a compute workflow.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUComputePipeline
    """
    return raw.SDL_CreateGPUComputePipeline(device, createinfo)

def SDL_CreateGPUGraphicsPipeline(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUGraphicsPipelineCreateInfo) -> LP_SDL_GPUGraphicsPipeline:
    """
    Creates a pipeline object to be used in a graphics workflow.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUGraphicsPipeline
    """
    return raw.SDL_CreateGPUGraphicsPipeline(device, createinfo)

def SDL_CreateGPUSampler(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUSamplerCreateInfo) -> LP_SDL_GPUSampler:
    """
    Creates a sampler object to be used when binding textures in a graphics workflow.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUSampler
    """
    return raw.SDL_CreateGPUSampler(device, createinfo)

def SDL_CreateGPUShader(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUShaderCreateInfo) -> LP_SDL_GPUShader:
    """
    Creates a shader to be used when creating a graphics pipeline.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUShader
    """
    return raw.SDL_CreateGPUShader(device, createinfo)

def SDL_CreateGPUTexture(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUTextureCreateInfo) -> LP_SDL_GPUTexture:
    """
    Creates a texture object to be used in graphics or compute workflows.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUTexture
    """
    return raw.SDL_CreateGPUTexture(device, createinfo)

def SDL_CreateGPUBuffer(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUBufferCreateInfo) -> LP_SDL_GPUBuffer:
    """
    Creates a buffer object to be used in graphics or compute workflows.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUBuffer
    """
    return raw.SDL_CreateGPUBuffer(device, createinfo)

def SDL_CreateGPUTransferBuffer(device: LP_SDL_GPUDevice, createinfo: LP_SDL_GPUTransferBufferCreateInfo) -> LP_SDL_GPUTransferBuffer:
    """
    Creates a transfer buffer to be used when uploading to or downloading from graphics resources.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPUTransferBuffer
    """
    return raw.SDL_CreateGPUTransferBuffer(device, createinfo)

def SDL_SetGPUBufferName(device: LP_SDL_GPUDevice, buffer: LP_SDL_GPUBuffer, text: ctypes.c_char_p) -> None:
    """
    Sets an arbitrary string constant to label a buffer.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUBufferName
    """
    return raw.SDL_SetGPUBufferName(device, buffer, text)

def SDL_SetGPUTextureName(device: LP_SDL_GPUDevice, texture: LP_SDL_GPUTexture, text: ctypes.c_char_p) -> None:
    """
    Sets an arbitrary string constant to label a texture.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUTextureName
    """
    return raw.SDL_SetGPUTextureName(device, texture, text)

def SDL_InsertGPUDebugLabel(command_buffer: LP_SDL_GPUCommandBuffer, text: ctypes.c_char_p) -> None:
    """
    Inserts an arbitrary string label into the command buffer callstream.

    https://wiki.libsdl.org/SDL3/SDL_InsertGPUDebugLabel
    """
    return raw.SDL_InsertGPUDebugLabel(command_buffer, text)

def SDL_PushGPUDebugGroup(command_buffer: LP_SDL_GPUCommandBuffer, name: ctypes.c_char_p) -> None:
    """
    Begins a debug group with an arbitrary name.

    https://wiki.libsdl.org/SDL3/SDL_PushGPUDebugGroup
    """
    return raw.SDL_PushGPUDebugGroup(command_buffer, name)

def SDL_PopGPUDebugGroup(command_buffer: LP_SDL_GPUCommandBuffer) -> None:
    """
    Ends the most-recently pushed debug group.

    https://wiki.libsdl.org/SDL3/SDL_PopGPUDebugGroup
    """
    return raw.SDL_PopGPUDebugGroup(command_buffer)

def SDL_ReleaseGPUTexture(device: LP_SDL_GPUDevice, texture: LP_SDL_GPUTexture) -> None:
    """
    Frees the given texture as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUTexture
    """
    return raw.SDL_ReleaseGPUTexture(device, texture)

def SDL_ReleaseGPUSampler(device: LP_SDL_GPUDevice, sampler: LP_SDL_GPUSampler) -> None:
    """
    Frees the given sampler as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUSampler
    """
    return raw.SDL_ReleaseGPUSampler(device, sampler)

def SDL_ReleaseGPUBuffer(device: LP_SDL_GPUDevice, buffer: LP_SDL_GPUBuffer) -> None:
    """
    Frees the given buffer as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUBuffer
    """
    return raw.SDL_ReleaseGPUBuffer(device, buffer)

def SDL_ReleaseGPUTransferBuffer(device: LP_SDL_GPUDevice, transfer_buffer: LP_SDL_GPUTransferBuffer) -> None:
    """
    Frees the given transfer buffer as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUTransferBuffer
    """
    return raw.SDL_ReleaseGPUTransferBuffer(device, transfer_buffer)

def SDL_ReleaseGPUComputePipeline(device: LP_SDL_GPUDevice, compute_pipeline: LP_SDL_GPUComputePipeline) -> None:
    """
    Frees the given compute pipeline as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUComputePipeline
    """
    return raw.SDL_ReleaseGPUComputePipeline(device, compute_pipeline)

def SDL_ReleaseGPUShader(device: LP_SDL_GPUDevice, shader: LP_SDL_GPUShader) -> None:
    """
    Frees the given shader as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUShader
    """
    return raw.SDL_ReleaseGPUShader(device, shader)

def SDL_ReleaseGPUGraphicsPipeline(device: LP_SDL_GPUDevice, graphics_pipeline: LP_SDL_GPUGraphicsPipeline) -> None:
    """
    Frees the given graphics pipeline as soon as it is safe to do so.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUGraphicsPipeline
    """
    return raw.SDL_ReleaseGPUGraphicsPipeline(device, graphics_pipeline)

def SDL_AcquireGPUCommandBuffer(device: LP_SDL_GPUDevice) -> LP_SDL_GPUCommandBuffer:
    """
    Acquire a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_AcquireGPUCommandBuffer
    """
    return raw.SDL_AcquireGPUCommandBuffer(device)

def SDL_PushGPUVertexUniformData(command_buffer: LP_SDL_GPUCommandBuffer, slot_index: ctypes.c_uint32, data: ctypes.c_void_p, length: ctypes.c_uint32) -> None:
    """
    Pushes data to a vertex uniform slot on the command buffer.

    https://wiki.libsdl.org/SDL3/SDL_PushGPUVertexUniformData
    """
    return raw.SDL_PushGPUVertexUniformData(command_buffer, slot_index, data, length)

def SDL_PushGPUFragmentUniformData(command_buffer: LP_SDL_GPUCommandBuffer, slot_index: ctypes.c_uint32, data: ctypes.c_void_p, length: ctypes.c_uint32) -> None:
    """
    Pushes data to a fragment uniform slot on the command buffer.

    https://wiki.libsdl.org/SDL3/SDL_PushGPUFragmentUniformData
    """
    return raw.SDL_PushGPUFragmentUniformData(command_buffer, slot_index, data, length)

def SDL_PushGPUComputeUniformData(command_buffer: LP_SDL_GPUCommandBuffer, slot_index: ctypes.c_uint32, data: ctypes.c_void_p, length: ctypes.c_uint32) -> None:
    """
    Pushes data to a uniform slot on the command buffer.

    https://wiki.libsdl.org/SDL3/SDL_PushGPUComputeUniformData
    """
    return raw.SDL_PushGPUComputeUniformData(command_buffer, slot_index, data, length)

def SDL_BeginGPURenderPass(command_buffer: LP_SDL_GPUCommandBuffer, color_target_infos: LP_SDL_GPUColorTargetInfo, num_color_targets: ctypes.c_uint32, depth_stencil_target_info: LP_SDL_GPUDepthStencilTargetInfo) -> LP_SDL_GPURenderPass:
    """
    Begins a render pass on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_BeginGPURenderPass
    """
    return raw.SDL_BeginGPURenderPass(command_buffer, color_target_infos, num_color_targets, depth_stencil_target_info)

def SDL_BindGPUGraphicsPipeline(render_pass: LP_SDL_GPURenderPass, graphics_pipeline: LP_SDL_GPUGraphicsPipeline) -> None:
    """
    Binds a graphics pipeline on a render pass to be used in rendering.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUGraphicsPipeline
    """
    return raw.SDL_BindGPUGraphicsPipeline(render_pass, graphics_pipeline)

def SDL_SetGPUViewport(render_pass: LP_SDL_GPURenderPass, viewport: LP_SDL_GPUViewport) -> None:
    """
    Sets the current viewport state on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUViewport
    """
    return raw.SDL_SetGPUViewport(render_pass, viewport)

def SDL_SetGPUScissor(render_pass: LP_SDL_GPURenderPass, scissor: LP_SDL_Rect) -> None:
    """
    Sets the current scissor state on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUScissor
    """
    return raw.SDL_SetGPUScissor(render_pass, scissor)

def SDL_SetGPUBlendConstants(render_pass: LP_SDL_GPURenderPass, blend_constants: SDL_FColor) -> None:
    """
    Sets the current blend constants on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUBlendConstants
    """
    return raw.SDL_SetGPUBlendConstants(render_pass, blend_constants)

def SDL_SetGPUStencilReference(render_pass: LP_SDL_GPURenderPass, reference: ctypes.c_uint8) -> None:
    """
    Sets the current stencil reference value on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUStencilReference
    """
    return raw.SDL_SetGPUStencilReference(render_pass, reference)

def SDL_BindGPUVertexBuffers(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, bindings: LP_SDL_GPUBufferBinding, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds vertex buffers on a command buffer for use with subsequent draw calls.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUVertexBuffers
    """
    return raw.SDL_BindGPUVertexBuffers(render_pass, first_slot, bindings, num_bindings)

def SDL_BindGPUIndexBuffer(render_pass: LP_SDL_GPURenderPass, binding: LP_SDL_GPUBufferBinding, index_element_size: SDL_GPUIndexElementSize) -> None:
    """
    Binds an index buffer on a command buffer for use with subsequent draw calls.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUIndexBuffer
    """
    return raw.SDL_BindGPUIndexBuffer(render_pass, binding, index_element_size)

def SDL_BindGPUVertexSamplers(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, texture_sampler_bindings: LP_SDL_GPUTextureSamplerBinding, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds texture-sampler pairs for use on the vertex shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUVertexSamplers
    """
    return raw.SDL_BindGPUVertexSamplers(render_pass, first_slot, texture_sampler_bindings, num_bindings)

def SDL_BindGPUVertexStorageTextures(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, storage_textures: LP_LP_SDL_GPUTexture, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage textures for use on the vertex shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUVertexStorageTextures
    """
    return raw.SDL_BindGPUVertexStorageTextures(render_pass, first_slot, storage_textures, num_bindings)

def SDL_BindGPUVertexStorageBuffers(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, storage_buffers: LP_LP_SDL_GPUBuffer, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage buffers for use on the vertex shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUVertexStorageBuffers
    """
    return raw.SDL_BindGPUVertexStorageBuffers(render_pass, first_slot, storage_buffers, num_bindings)

def SDL_BindGPUFragmentSamplers(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, texture_sampler_bindings: LP_SDL_GPUTextureSamplerBinding, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds texture-sampler pairs for use on the fragment shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUFragmentSamplers
    """
    return raw.SDL_BindGPUFragmentSamplers(render_pass, first_slot, texture_sampler_bindings, num_bindings)

def SDL_BindGPUFragmentStorageTextures(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, storage_textures: LP_LP_SDL_GPUTexture, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage textures for use on the fragment shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUFragmentStorageTextures
    """
    return raw.SDL_BindGPUFragmentStorageTextures(render_pass, first_slot, storage_textures, num_bindings)

def SDL_BindGPUFragmentStorageBuffers(render_pass: LP_SDL_GPURenderPass, first_slot: ctypes.c_uint32, storage_buffers: LP_LP_SDL_GPUBuffer, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage buffers for use on the fragment shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUFragmentStorageBuffers
    """
    return raw.SDL_BindGPUFragmentStorageBuffers(render_pass, first_slot, storage_buffers, num_bindings)

def SDL_DrawGPUIndexedPrimitives(render_pass: LP_SDL_GPURenderPass, num_indices: ctypes.c_uint32, num_instances: ctypes.c_uint32, first_index: ctypes.c_uint32, vertex_offset: ctypes.c_int32, first_instance: ctypes.c_uint32) -> None:
    """
    Draws data using bound graphics state with an index buffer and instancing enabled.

    https://wiki.libsdl.org/SDL3/SDL_DrawGPUIndexedPrimitives
    """
    return raw.SDL_DrawGPUIndexedPrimitives(render_pass, num_indices, num_instances, first_index, vertex_offset, first_instance)

def SDL_DrawGPUPrimitives(render_pass: LP_SDL_GPURenderPass, num_vertices: ctypes.c_uint32, num_instances: ctypes.c_uint32, first_vertex: ctypes.c_uint32, first_instance: ctypes.c_uint32) -> None:
    """
    Draws data using bound graphics state.

    https://wiki.libsdl.org/SDL3/SDL_DrawGPUPrimitives
    """
    return raw.SDL_DrawGPUPrimitives(render_pass, num_vertices, num_instances, first_vertex, first_instance)

def SDL_DrawGPUPrimitivesIndirect(render_pass: LP_SDL_GPURenderPass, buffer: LP_SDL_GPUBuffer, offset: ctypes.c_uint32, draw_count: ctypes.c_uint32) -> None:
    """
    Draws data using bound graphics state and with draw parameters set from a buffer.

    https://wiki.libsdl.org/SDL3/SDL_DrawGPUPrimitivesIndirect
    """
    return raw.SDL_DrawGPUPrimitivesIndirect(render_pass, buffer, offset, draw_count)

def SDL_DrawGPUIndexedPrimitivesIndirect(render_pass: LP_SDL_GPURenderPass, buffer: LP_SDL_GPUBuffer, offset: ctypes.c_uint32, draw_count: ctypes.c_uint32) -> None:
    """
    Draws data using bound graphics state with an index buffer enabled and with draw parameters set from a buffer.

    https://wiki.libsdl.org/SDL3/SDL_DrawGPUIndexedPrimitivesIndirect
    """
    return raw.SDL_DrawGPUIndexedPrimitivesIndirect(render_pass, buffer, offset, draw_count)

def SDL_EndGPURenderPass(render_pass: LP_SDL_GPURenderPass) -> None:
    """
    Ends the given render pass.

    https://wiki.libsdl.org/SDL3/SDL_EndGPURenderPass
    """
    return raw.SDL_EndGPURenderPass(render_pass)

def SDL_BeginGPUComputePass(command_buffer: LP_SDL_GPUCommandBuffer, storage_texture_bindings: LP_SDL_GPUStorageTextureReadWriteBinding, num_storage_texture_bindings: ctypes.c_uint32, storage_buffer_bindings: LP_SDL_GPUStorageBufferReadWriteBinding, num_storage_buffer_bindings: ctypes.c_uint32) -> LP_SDL_GPUComputePass:
    """
    Begins a compute pass on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_BeginGPUComputePass
    """
    return raw.SDL_BeginGPUComputePass(command_buffer, storage_texture_bindings, num_storage_texture_bindings, storage_buffer_bindings, num_storage_buffer_bindings)

def SDL_BindGPUComputePipeline(compute_pass: LP_SDL_GPUComputePass, compute_pipeline: LP_SDL_GPUComputePipeline) -> None:
    """
    Binds a compute pipeline on a command buffer for use in compute dispatch.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUComputePipeline
    """
    return raw.SDL_BindGPUComputePipeline(compute_pass, compute_pipeline)

def SDL_BindGPUComputeSamplers(compute_pass: LP_SDL_GPUComputePass, first_slot: ctypes.c_uint32, texture_sampler_bindings: LP_SDL_GPUTextureSamplerBinding, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds texture-sampler pairs for use on the compute shader.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUComputeSamplers
    """
    return raw.SDL_BindGPUComputeSamplers(compute_pass, first_slot, texture_sampler_bindings, num_bindings)

def SDL_BindGPUComputeStorageTextures(compute_pass: LP_SDL_GPUComputePass, first_slot: ctypes.c_uint32, storage_textures: LP_LP_SDL_GPUTexture, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage textures as readonly for use on the compute pipeline.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUComputeStorageTextures
    """
    return raw.SDL_BindGPUComputeStorageTextures(compute_pass, first_slot, storage_textures, num_bindings)

def SDL_BindGPUComputeStorageBuffers(compute_pass: LP_SDL_GPUComputePass, first_slot: ctypes.c_uint32, storage_buffers: LP_LP_SDL_GPUBuffer, num_bindings: ctypes.c_uint32) -> None:
    """
    Binds storage buffers as readonly for use on the compute pipeline.

    https://wiki.libsdl.org/SDL3/SDL_BindGPUComputeStorageBuffers
    """
    return raw.SDL_BindGPUComputeStorageBuffers(compute_pass, first_slot, storage_buffers, num_bindings)

def SDL_DispatchGPUCompute(compute_pass: LP_SDL_GPUComputePass, groupcount_x: ctypes.c_uint32, groupcount_y: ctypes.c_uint32, groupcount_z: ctypes.c_uint32) -> None:
    """
    Dispatches compute work.

    https://wiki.libsdl.org/SDL3/SDL_DispatchGPUCompute
    """
    return raw.SDL_DispatchGPUCompute(compute_pass, groupcount_x, groupcount_y, groupcount_z)

def SDL_DispatchGPUComputeIndirect(compute_pass: LP_SDL_GPUComputePass, buffer: LP_SDL_GPUBuffer, offset: ctypes.c_uint32) -> None:
    """
    Dispatches compute work with parameters set from a buffer.

    https://wiki.libsdl.org/SDL3/SDL_DispatchGPUComputeIndirect
    """
    return raw.SDL_DispatchGPUComputeIndirect(compute_pass, buffer, offset)

def SDL_EndGPUComputePass(compute_pass: LP_SDL_GPUComputePass) -> None:
    """
    Ends the current compute pass.

    https://wiki.libsdl.org/SDL3/SDL_EndGPUComputePass
    """
    return raw.SDL_EndGPUComputePass(compute_pass)

def SDL_MapGPUTransferBuffer(device: LP_SDL_GPUDevice, transfer_buffer: LP_SDL_GPUTransferBuffer, cycle: ctypes.c_bool) -> ctypes.c_void_p:
    """
    Maps a transfer buffer into application address space.

    https://wiki.libsdl.org/SDL3/SDL_MapGPUTransferBuffer
    """
    return raw.SDL_MapGPUTransferBuffer(device, transfer_buffer, cycle)

def SDL_UnmapGPUTransferBuffer(device: LP_SDL_GPUDevice, transfer_buffer: LP_SDL_GPUTransferBuffer) -> None:
    """
    Unmaps a previously mapped transfer buffer.

    https://wiki.libsdl.org/SDL3/SDL_UnmapGPUTransferBuffer
    """
    return raw.SDL_UnmapGPUTransferBuffer(device, transfer_buffer)

def SDL_BeginGPUCopyPass(command_buffer: LP_SDL_GPUCommandBuffer) -> LP_SDL_GPUCopyPass:
    """
    Begins a copy pass on a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_BeginGPUCopyPass
    """
    return raw.SDL_BeginGPUCopyPass(command_buffer)

def SDL_UploadToGPUTexture(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUTextureTransferInfo, destination: LP_SDL_GPUTextureRegion, cycle: ctypes.c_bool) -> None:
    """
    Uploads data from a transfer buffer to a texture.

    https://wiki.libsdl.org/SDL3/SDL_UploadToGPUTexture
    """
    return raw.SDL_UploadToGPUTexture(copy_pass, source, destination, cycle)

def SDL_UploadToGPUBuffer(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUTransferBufferLocation, destination: LP_SDL_GPUBufferRegion, cycle: ctypes.c_bool) -> None:
    """
    Uploads data from a transfer buffer to a buffer.

    https://wiki.libsdl.org/SDL3/SDL_UploadToGPUBuffer
    """
    return raw.SDL_UploadToGPUBuffer(copy_pass, source, destination, cycle)

def SDL_CopyGPUTextureToTexture(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUTextureLocation, destination: LP_SDL_GPUTextureLocation, w: ctypes.c_uint32, h: ctypes.c_uint32, d: ctypes.c_uint32, cycle: ctypes.c_bool) -> None:
    """
    Performs a texture-to-texture copy.

    https://wiki.libsdl.org/SDL3/SDL_CopyGPUTextureToTexture
    """
    return raw.SDL_CopyGPUTextureToTexture(copy_pass, source, destination, w, h, d, cycle)

def SDL_CopyGPUBufferToBuffer(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUBufferLocation, destination: LP_SDL_GPUBufferLocation, size: ctypes.c_uint32, cycle: ctypes.c_bool) -> None:
    """
    Performs a buffer-to-buffer copy.

    https://wiki.libsdl.org/SDL3/SDL_CopyGPUBufferToBuffer
    """
    return raw.SDL_CopyGPUBufferToBuffer(copy_pass, source, destination, size, cycle)

def SDL_DownloadFromGPUTexture(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUTextureRegion, destination: LP_SDL_GPUTextureTransferInfo) -> None:
    """
    Copies data from a texture to a transfer buffer on the GPU timeline.

    https://wiki.libsdl.org/SDL3/SDL_DownloadFromGPUTexture
    """
    return raw.SDL_DownloadFromGPUTexture(copy_pass, source, destination)

def SDL_DownloadFromGPUBuffer(copy_pass: LP_SDL_GPUCopyPass, source: LP_SDL_GPUBufferRegion, destination: LP_SDL_GPUTransferBufferLocation) -> None:
    """
    Copies data from a buffer to a transfer buffer on the GPU timeline.

    https://wiki.libsdl.org/SDL3/SDL_DownloadFromGPUBuffer
    """
    return raw.SDL_DownloadFromGPUBuffer(copy_pass, source, destination)

def SDL_EndGPUCopyPass(copy_pass: LP_SDL_GPUCopyPass) -> None:
    """
    Ends the current copy pass.

    https://wiki.libsdl.org/SDL3/SDL_EndGPUCopyPass
    """
    return raw.SDL_EndGPUCopyPass(copy_pass)

def SDL_GenerateMipmapsForGPUTexture(command_buffer: LP_SDL_GPUCommandBuffer, texture: LP_SDL_GPUTexture) -> None:
    """
    Generates mipmaps for the given texture.

    https://wiki.libsdl.org/SDL3/SDL_GenerateMipmapsForGPUTexture
    """
    return raw.SDL_GenerateMipmapsForGPUTexture(command_buffer, texture)

def SDL_BlitGPUTexture(command_buffer: LP_SDL_GPUCommandBuffer, info: LP_SDL_GPUBlitInfo) -> None:
    """
    Blits from a source texture region to a destination texture region.

    https://wiki.libsdl.org/SDL3/SDL_BlitGPUTexture
    """
    return raw.SDL_BlitGPUTexture(command_buffer, info)

def SDL_WindowSupportsGPUSwapchainComposition(device: LP_SDL_GPUDevice, window: LP_SDL_Window, swapchain_composition: SDL_GPUSwapchainComposition) -> ctypes.c_bool:
    """
    Determines whether a swapchain composition is supported by the window.

    https://wiki.libsdl.org/SDL3/SDL_WindowSupportsGPUSwapchainComposition
    """
    return raw.SDL_WindowSupportsGPUSwapchainComposition(device, window, swapchain_composition)

def SDL_WindowSupportsGPUPresentMode(device: LP_SDL_GPUDevice, window: LP_SDL_Window, present_mode: SDL_GPUPresentMode) -> ctypes.c_bool:
    """
    Determines whether a presentation mode is supported by the window.

    https://wiki.libsdl.org/SDL3/SDL_WindowSupportsGPUPresentMode
    """
    return raw.SDL_WindowSupportsGPUPresentMode(device, window, present_mode)

def SDL_ClaimWindowForGPUDevice(device: LP_SDL_GPUDevice, window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Claims a window, creating a swapchain structure for it.

    https://wiki.libsdl.org/SDL3/SDL_ClaimWindowForGPUDevice
    """
    return raw.SDL_ClaimWindowForGPUDevice(device, window)

def SDL_ReleaseWindowFromGPUDevice(device: LP_SDL_GPUDevice, window: LP_SDL_Window) -> None:
    """
    Unclaims a window, destroying its swapchain structure.

    https://wiki.libsdl.org/SDL3/SDL_ReleaseWindowFromGPUDevice
    """
    return raw.SDL_ReleaseWindowFromGPUDevice(device, window)

def SDL_SetGPUSwapchainParameters(device: LP_SDL_GPUDevice, window: LP_SDL_Window, swapchain_composition: SDL_GPUSwapchainComposition, present_mode: SDL_GPUPresentMode) -> ctypes.c_bool:
    """
    Changes the swapchain parameters for the given claimed window.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUSwapchainParameters
    """
    return raw.SDL_SetGPUSwapchainParameters(device, window, swapchain_composition, present_mode)

def SDL_SetGPUAllowedFramesInFlight(device: LP_SDL_GPUDevice, allowed_frames_in_flight: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Configures the maximum allowed number of frames in flight.

    https://wiki.libsdl.org/SDL3/SDL_SetGPUAllowedFramesInFlight
    """
    return raw.SDL_SetGPUAllowedFramesInFlight(device, allowed_frames_in_flight)

def SDL_GetGPUSwapchainTextureFormat(device: LP_SDL_GPUDevice, window: LP_SDL_Window) -> SDL_GPUTextureFormat:
    """
    Obtains the texture format of the swapchain for the given window.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUSwapchainTextureFormat
    """
    return raw.SDL_GetGPUSwapchainTextureFormat(device, window)

def SDL_AcquireGPUSwapchainTexture(command_buffer: LP_SDL_GPUCommandBuffer, window: LP_SDL_Window, swapchain_texture: LP_LP_SDL_GPUTexture, swapchain_texture_width: LP_c_uint32, swapchain_texture_height: LP_c_uint32) -> ctypes.c_bool:
    """
    Acquire a texture to use in presentation.

    https://wiki.libsdl.org/SDL3/SDL_AcquireGPUSwapchainTexture
    """
    return raw.SDL_AcquireGPUSwapchainTexture(command_buffer, window, swapchain_texture, swapchain_texture_width, swapchain_texture_height)

def SDL_WaitForGPUSwapchain(device: LP_SDL_GPUDevice, window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Blocks the thread until a swapchain texture is available to be acquired.

    https://wiki.libsdl.org/SDL3/SDL_WaitForGPUSwapchain
    """
    return raw.SDL_WaitForGPUSwapchain(device, window)

def SDL_WaitAndAcquireGPUSwapchainTexture(command_buffer: LP_SDL_GPUCommandBuffer, window: LP_SDL_Window, swapchain_texture: LP_LP_SDL_GPUTexture, swapchain_texture_width: LP_c_uint32, swapchain_texture_height: LP_c_uint32) -> ctypes.c_bool:
    """
    Blocks the thread until a swapchain texture is available to be acquired, and then acquires it.

    https://wiki.libsdl.org/SDL3/SDL_WaitAndAcquireGPUSwapchainTexture
    """
    return raw.SDL_WaitAndAcquireGPUSwapchainTexture(command_buffer, window, swapchain_texture, swapchain_texture_width, swapchain_texture_height)

def SDL_SubmitGPUCommandBuffer(command_buffer: LP_SDL_GPUCommandBuffer) -> ctypes.c_bool:
    """
    Submits a command buffer so its commands can be processed on the GPU.

    https://wiki.libsdl.org/SDL3/SDL_SubmitGPUCommandBuffer
    """
    return raw.SDL_SubmitGPUCommandBuffer(command_buffer)

def SDL_SubmitGPUCommandBufferAndAcquireFence(command_buffer: LP_SDL_GPUCommandBuffer) -> LP_SDL_GPUFence:
    """
    Submits a command buffer so its commands can be processed on the GPU, and acquires a fence associated with the command buffer.

    https://wiki.libsdl.org/SDL3/SDL_SubmitGPUCommandBufferAndAcquireFence
    """
    return raw.SDL_SubmitGPUCommandBufferAndAcquireFence(command_buffer)

def SDL_CancelGPUCommandBuffer(command_buffer: LP_SDL_GPUCommandBuffer) -> ctypes.c_bool:
    """
    Cancels a command buffer.

    https://wiki.libsdl.org/SDL3/SDL_CancelGPUCommandBuffer
    """
    return raw.SDL_CancelGPUCommandBuffer(command_buffer)

def SDL_WaitForGPUIdle(device: LP_SDL_GPUDevice) -> ctypes.c_bool:
    """
    Blocks the thread until the GPU is completely idle.

    https://wiki.libsdl.org/SDL3/SDL_WaitForGPUIdle
    """
    return raw.SDL_WaitForGPUIdle(device)

def SDL_WaitForGPUFences(device: LP_SDL_GPUDevice, wait_all: ctypes.c_bool, fences: LP_LP_SDL_GPUFence, num_fences: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Blocks the thread until the given fences are signaled.

    https://wiki.libsdl.org/SDL3/SDL_WaitForGPUFences
    """
    return raw.SDL_WaitForGPUFences(device, wait_all, fences, num_fences)

def SDL_QueryGPUFence(device: LP_SDL_GPUDevice, fence: LP_SDL_GPUFence) -> ctypes.c_bool:
    """
    Checks the status of a fence.

    https://wiki.libsdl.org/SDL3/SDL_QueryGPUFence
    """
    return raw.SDL_QueryGPUFence(device, fence)

def SDL_ReleaseGPUFence(device: LP_SDL_GPUDevice, fence: LP_SDL_GPUFence) -> None:
    """
    Releases a fence obtained from [SDL_SubmitGPUCommandBufferAndAcquireFence](https://wiki.libsdl.org/SDL3/SDL_SubmitGPUCommandBufferAndAcquireFence).

    https://wiki.libsdl.org/SDL3/SDL_ReleaseGPUFence
    """
    return raw.SDL_ReleaseGPUFence(device, fence)

def SDL_GPUTextureFormatTexelBlockSize(format: SDL_GPUTextureFormat) -> ctypes.c_uint32:
    """
    Obtains the texel block size for a texture format.

    https://wiki.libsdl.org/SDL3/SDL_GPUTextureFormatTexelBlockSize
    """
    return raw.SDL_GPUTextureFormatTexelBlockSize(format)

def SDL_GPUTextureSupportsFormat(device: LP_SDL_GPUDevice, format: SDL_GPUTextureFormat, type: SDL_GPUTextureType, usage: SDL_GPUTextureUsageFlags) -> ctypes.c_bool:
    """
    Determines whether a texture format is supported for a given type and usage.

    https://wiki.libsdl.org/SDL3/SDL_GPUTextureSupportsFormat
    """
    return raw.SDL_GPUTextureSupportsFormat(device, format, type, usage)

def SDL_GPUTextureSupportsSampleCount(device: LP_SDL_GPUDevice, format: SDL_GPUTextureFormat, sample_count: SDL_GPUSampleCount) -> ctypes.c_bool:
    """
    Determines if a sample count for a texture format is supported.

    https://wiki.libsdl.org/SDL3/SDL_GPUTextureSupportsSampleCount
    """
    return raw.SDL_GPUTextureSupportsSampleCount(device, format, sample_count)

def SDL_CalculateGPUTextureFormatSize(format: SDL_GPUTextureFormat, width: ctypes.c_uint32, height: ctypes.c_uint32, depth_or_layer_count: ctypes.c_uint32) -> ctypes.c_uint32:
    """
    Calculate the size in bytes of a texture format with dimensions.

    https://wiki.libsdl.org/SDL3/SDL_CalculateGPUTextureFormatSize
    """
    return raw.SDL_CalculateGPUTextureFormatSize(format, width, height, depth_or_layer_count)

def SDL_GetPixelFormatFromGPUTextureFormat(format: SDL_GPUTextureFormat) -> SDL_PixelFormat:
    """
    Get the SDL pixel format corresponding to a GPU texture format.

    https://wiki.libsdl.org/SDL3/SDL_GetPixelFormatFromGPUTextureFormat
    """
    return raw.SDL_GetPixelFormatFromGPUTextureFormat(format)

def SDL_GetGPUTextureFormatFromPixelFormat(format: SDL_PixelFormat) -> SDL_GPUTextureFormat:
    """
    Get the GPU texture format corresponding to an SDL pixel format.

    https://wiki.libsdl.org/SDL3/SDL_GetGPUTextureFormatFromPixelFormat
    """
    return raw.SDL_GetGPUTextureFormatFromPixelFormat(format)

def SDL_GetHaptics(count: LP_c_int) -> LP_SDL_HapticID:
    """
    Get a list of currently connected haptic devices.

    https://wiki.libsdl.org/SDL3/SDL_GetHaptics
    """
    return raw.SDL_GetHaptics(count)

def SDL_GetHapticNameForID(instance_id: SDL_HapticID) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticNameForID
    """
    return raw.SDL_GetHapticNameForID(instance_id)

def SDL_OpenHaptic(instance_id: SDL_HapticID) -> LP_SDL_Haptic:
    """
    Open a haptic device for use.

    https://wiki.libsdl.org/SDL3/SDL_OpenHaptic
    """
    return raw.SDL_OpenHaptic(instance_id)

def SDL_GetHapticFromID(instance_id: SDL_HapticID) -> LP_SDL_Haptic:
    """
    Get the [SDL_Haptic](https://wiki.libsdl.org/SDL3/SDL_Haptic) associated with an instance ID, if it has been opened.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticFromID
    """
    return raw.SDL_GetHapticFromID(instance_id)

def SDL_GetHapticID(haptic: LP_SDL_Haptic) -> SDL_HapticID:
    """
    Get the instance ID of an opened haptic device.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticID
    """
    return raw.SDL_GetHapticID(haptic)

def SDL_GetHapticName(haptic: LP_SDL_Haptic) -> ctypes.c_char_p:
    """
    Get the implementation dependent name of a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticName
    """
    return raw.SDL_GetHapticName(haptic)

def SDL_IsMouseHaptic() -> ctypes.c_bool:
    """
    Query whether or not the current mouse has haptic capabilities.

    https://wiki.libsdl.org/SDL3/SDL_IsMouseHaptic
    """
    return raw.SDL_IsMouseHaptic()

def SDL_OpenHapticFromMouse() -> LP_SDL_Haptic:
    """
    Try to open a haptic device from the current mouse.

    https://wiki.libsdl.org/SDL3/SDL_OpenHapticFromMouse
    """
    return raw.SDL_OpenHapticFromMouse()

def SDL_IsJoystickHaptic(joystick: LP_SDL_Joystick) -> ctypes.c_bool:
    """
    Query if a joystick has haptic features.

    https://wiki.libsdl.org/SDL3/SDL_IsJoystickHaptic
    """
    return raw.SDL_IsJoystickHaptic(joystick)

def SDL_OpenHapticFromJoystick(joystick: LP_SDL_Joystick) -> LP_SDL_Haptic:
    """
    Open a haptic device for use from a joystick device.

    https://wiki.libsdl.org/SDL3/SDL_OpenHapticFromJoystick
    """
    return raw.SDL_OpenHapticFromJoystick(joystick)

def SDL_CloseHaptic(haptic: LP_SDL_Haptic) -> None:
    """
    Close a haptic device previously opened with [SDL_OpenHaptic](https://wiki.libsdl.org/SDL3/SDL_OpenHaptic)().

    https://wiki.libsdl.org/SDL3/SDL_CloseHaptic
    """
    return raw.SDL_CloseHaptic(haptic)

def SDL_GetMaxHapticEffects(haptic: LP_SDL_Haptic) -> ctypes.c_int:
    """
    Get the number of effects a haptic device can store.

    https://wiki.libsdl.org/SDL3/SDL_GetMaxHapticEffects
    """
    return raw.SDL_GetMaxHapticEffects(haptic)

def SDL_GetMaxHapticEffectsPlaying(haptic: LP_SDL_Haptic) -> ctypes.c_int:
    """
    Get the number of effects a haptic device can play at the same time.

    https://wiki.libsdl.org/SDL3/SDL_GetMaxHapticEffectsPlaying
    """
    return raw.SDL_GetMaxHapticEffectsPlaying(haptic)

def SDL_GetHapticFeatures(haptic: LP_SDL_Haptic) -> ctypes.c_uint32:
    """
    Get the haptic device's supported features in bitwise manner.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticFeatures
    """
    return raw.SDL_GetHapticFeatures(haptic)

def SDL_GetNumHapticAxes(haptic: LP_SDL_Haptic) -> ctypes.c_int:
    """
    Get the number of haptic axes the device has.

    https://wiki.libsdl.org/SDL3/SDL_GetNumHapticAxes
    """
    return raw.SDL_GetNumHapticAxes(haptic)

def SDL_HapticEffectSupported(haptic: LP_SDL_Haptic, effect: LP_SDL_HapticEffect) -> ctypes.c_bool:
    """
    Check to see if an effect is supported by a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_HapticEffectSupported
    """
    return raw.SDL_HapticEffectSupported(haptic, effect)

def SDL_CreateHapticEffect(haptic: LP_SDL_Haptic, effect: LP_SDL_HapticEffect) -> SDL_HapticEffectID:
    """
    Create a new haptic effect on a specified device.

    https://wiki.libsdl.org/SDL3/SDL_CreateHapticEffect
    """
    return raw.SDL_CreateHapticEffect(haptic, effect)

def SDL_UpdateHapticEffect(haptic: LP_SDL_Haptic, effect: SDL_HapticEffectID, data: LP_SDL_HapticEffect) -> ctypes.c_bool:
    """
    Update the properties of an effect.

    https://wiki.libsdl.org/SDL3/SDL_UpdateHapticEffect
    """
    return raw.SDL_UpdateHapticEffect(haptic, effect, data)

def SDL_RunHapticEffect(haptic: LP_SDL_Haptic, effect: SDL_HapticEffectID, iterations: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Run the haptic effect on its associated haptic device.

    https://wiki.libsdl.org/SDL3/SDL_RunHapticEffect
    """
    return raw.SDL_RunHapticEffect(haptic, effect, iterations)

def SDL_StopHapticEffect(haptic: LP_SDL_Haptic, effect: SDL_HapticEffectID) -> ctypes.c_bool:
    """
    Stop the haptic effect on its associated haptic device.

    https://wiki.libsdl.org/SDL3/SDL_StopHapticEffect
    """
    return raw.SDL_StopHapticEffect(haptic, effect)

def SDL_DestroyHapticEffect(haptic: LP_SDL_Haptic, effect: SDL_HapticEffectID) -> None:
    """
    Destroy a haptic effect on the device.

    https://wiki.libsdl.org/SDL3/SDL_DestroyHapticEffect
    """
    return raw.SDL_DestroyHapticEffect(haptic, effect)

def SDL_GetHapticEffectStatus(haptic: LP_SDL_Haptic, effect: SDL_HapticEffectID) -> ctypes.c_bool:
    """
    Get the status of the current effect on the specified haptic device.

    https://wiki.libsdl.org/SDL3/SDL_GetHapticEffectStatus
    """
    return raw.SDL_GetHapticEffectStatus(haptic, effect)

def SDL_SetHapticGain(haptic: LP_SDL_Haptic, gain: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the global gain of the specified haptic device.

    https://wiki.libsdl.org/SDL3/SDL_SetHapticGain
    """
    return raw.SDL_SetHapticGain(haptic, gain)

def SDL_SetHapticAutocenter(haptic: LP_SDL_Haptic, autocenter: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the global autocenter of the device.

    https://wiki.libsdl.org/SDL3/SDL_SetHapticAutocenter
    """
    return raw.SDL_SetHapticAutocenter(haptic, autocenter)

def SDL_PauseHaptic(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Pause a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_PauseHaptic
    """
    return raw.SDL_PauseHaptic(haptic)

def SDL_ResumeHaptic(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Resume a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_ResumeHaptic
    """
    return raw.SDL_ResumeHaptic(haptic)

def SDL_StopHapticEffects(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Stop all the currently playing effects on a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_StopHapticEffects
    """
    return raw.SDL_StopHapticEffects(haptic)

def SDL_HapticRumbleSupported(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Check whether rumble is supported on a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_HapticRumbleSupported
    """
    return raw.SDL_HapticRumbleSupported(haptic)

def SDL_InitHapticRumble(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Initialize a haptic device for simple rumble playback.

    https://wiki.libsdl.org/SDL3/SDL_InitHapticRumble
    """
    return raw.SDL_InitHapticRumble(haptic)

def SDL_PlayHapticRumble(haptic: LP_SDL_Haptic, strength: ctypes.c_float, length: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Run a simple rumble effect on a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_PlayHapticRumble
    """
    return raw.SDL_PlayHapticRumble(haptic, strength, length)

def SDL_StopHapticRumble(haptic: LP_SDL_Haptic) -> ctypes.c_bool:
    """
    Stop the simple rumble on a haptic device.

    https://wiki.libsdl.org/SDL3/SDL_StopHapticRumble
    """
    return raw.SDL_StopHapticRumble(haptic)

def SDL_hid_init() -> ctypes.c_int:
    """
    Initialize the HIDAPI library.

    https://wiki.libsdl.org/SDL3/SDL_hid_init
    """
    return raw.SDL_hid_init()

def SDL_hid_exit() -> ctypes.c_int:
    """
    Finalize the HIDAPI library.

    https://wiki.libsdl.org/SDL3/SDL_hid_exit
    """
    return raw.SDL_hid_exit()

def SDL_hid_device_change_count() -> ctypes.c_uint32:
    """
    Check to see if devices may have been added or removed.

    https://wiki.libsdl.org/SDL3/SDL_hid_device_change_count
    """
    return raw.SDL_hid_device_change_count()

def SDL_hid_enumerate(vendor_id: ctypes.c_ushort, product_id: ctypes.c_ushort) -> LP_SDL_hid_device_info:
    """
    Enumerate the HID Devices.

    https://wiki.libsdl.org/SDL3/SDL_hid_enumerate
    """
    return raw.SDL_hid_enumerate(vendor_id, product_id)

def SDL_hid_free_enumeration(devs: LP_SDL_hid_device_info) -> None:
    """
    Free an enumeration linked list.

    https://wiki.libsdl.org/SDL3/SDL_hid_free_enumeration
    """
    return raw.SDL_hid_free_enumeration(devs)

def SDL_hid_open(vendor_id: ctypes.c_ushort, product_id: ctypes.c_ushort, serial_number: ctypes.c_wchar_p) -> LP_SDL_hid_device:
    """
    Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally a serial number.

    https://wiki.libsdl.org/SDL3/SDL_hid_open
    """
    return raw.SDL_hid_open(vendor_id, product_id, serial_number)

def SDL_hid_open_path(path: ctypes.c_char_p) -> LP_SDL_hid_device:
    """
    Open a HID device by its path name.

    https://wiki.libsdl.org/SDL3/SDL_hid_open_path
    """
    return raw.SDL_hid_open_path(path)

def SDL_hid_get_properties(dev: LP_SDL_hid_device) -> SDL_PropertiesID:
    """
    Get the properties associated with an [SDL_hid_device](https://wiki.libsdl.org/SDL3/SDL_hid_device).

    https://wiki.libsdl.org/SDL3/SDL_hid_get_properties
    """
    return raw.SDL_hid_get_properties(dev)

def SDL_hid_write(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t) -> ctypes.c_int:
    """
    Write an Output report to a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_write
    """
    return raw.SDL_hid_write(dev, data, length)

def SDL_hid_read_timeout(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t, milliseconds: ctypes.c_int) -> ctypes.c_int:
    """
    Read an Input report from a HID device with timeout.

    https://wiki.libsdl.org/SDL3/SDL_hid_read_timeout
    """
    return raw.SDL_hid_read_timeout(dev, data, length, milliseconds)

def SDL_hid_read(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t) -> ctypes.c_int:
    """
    Read an Input report from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_read
    """
    return raw.SDL_hid_read(dev, data, length)

def SDL_hid_set_nonblocking(dev: LP_SDL_hid_device, nonblock: ctypes.c_int) -> ctypes.c_int:
    """
    Set the device handle to be non-blocking.

    https://wiki.libsdl.org/SDL3/SDL_hid_set_nonblocking
    """
    return raw.SDL_hid_set_nonblocking(dev, nonblock)

def SDL_hid_send_feature_report(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t) -> ctypes.c_int:
    """
    Send a Feature report to the device.

    https://wiki.libsdl.org/SDL3/SDL_hid_send_feature_report
    """
    return raw.SDL_hid_send_feature_report(dev, data, length)

def SDL_hid_get_feature_report(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get a feature report from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_feature_report
    """
    return raw.SDL_hid_get_feature_report(dev, data, length)

def SDL_hid_get_input_report(dev: LP_SDL_hid_device, data: LP_c_ubyte, length: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get an input report from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_input_report
    """
    return raw.SDL_hid_get_input_report(dev, data, length)

def SDL_hid_close(dev: LP_SDL_hid_device) -> ctypes.c_int:
    """
    Close a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_close
    """
    return raw.SDL_hid_close(dev)

def SDL_hid_get_manufacturer_string(dev: LP_SDL_hid_device, string: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get The Manufacturer String from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_manufacturer_string
    """
    return raw.SDL_hid_get_manufacturer_string(dev, string, maxlen)

def SDL_hid_get_product_string(dev: LP_SDL_hid_device, string: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get The Product String from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_product_string
    """
    return raw.SDL_hid_get_product_string(dev, string, maxlen)

def SDL_hid_get_serial_number_string(dev: LP_SDL_hid_device, string: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get The Serial Number String from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_serial_number_string
    """
    return raw.SDL_hid_get_serial_number_string(dev, string, maxlen)

def SDL_hid_get_indexed_string(dev: LP_SDL_hid_device, string_index: ctypes.c_int, string: ctypes.c_wchar_p, maxlen: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get a string from a HID device, based on its string index.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_indexed_string
    """
    return raw.SDL_hid_get_indexed_string(dev, string_index, string, maxlen)

def SDL_hid_get_device_info(dev: LP_SDL_hid_device) -> LP_SDL_hid_device_info:
    """
    Get the device info from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_device_info
    """
    return raw.SDL_hid_get_device_info(dev)

def SDL_hid_get_report_descriptor(dev: LP_SDL_hid_device, buf: LP_c_ubyte, buf_size: ctypes.c_size_t) -> ctypes.c_int:
    """
    Get a report descriptor from a HID device.

    https://wiki.libsdl.org/SDL3/SDL_hid_get_report_descriptor
    """
    return raw.SDL_hid_get_report_descriptor(dev, buf, buf_size)

def SDL_hid_ble_scan(active: ctypes.c_bool) -> None:
    """
    Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers.

    https://wiki.libsdl.org/SDL3/SDL_hid_ble_scan
    """
    return raw.SDL_hid_ble_scan(active)

def SDL_SetHintWithPriority(name: ctypes.c_char_p, value: ctypes.c_char_p, priority: SDL_HintPriority) -> ctypes.c_bool:
    """
    Set a hint with a specific priority.

    https://wiki.libsdl.org/SDL3/SDL_SetHintWithPriority
    """
    return raw.SDL_SetHintWithPriority(name, value, priority)

def SDL_SetHint(name: ctypes.c_char_p, value: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set a hint with normal priority.

    https://wiki.libsdl.org/SDL3/SDL_SetHint
    """
    return raw.SDL_SetHint(name, value)

def SDL_ResetHint(name: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Reset a hint to the default value.

    https://wiki.libsdl.org/SDL3/SDL_ResetHint
    """
    return raw.SDL_ResetHint(name)

def SDL_ResetHints() -> None:
    """
    Reset all hints to the default values.

    https://wiki.libsdl.org/SDL3/SDL_ResetHints
    """
    return raw.SDL_ResetHints()

def SDL_GetHint(name: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get the value of a hint.

    https://wiki.libsdl.org/SDL3/SDL_GetHint
    """
    return raw.SDL_GetHint(name)

def SDL_GetHintBoolean(name: ctypes.c_char_p, default_value: ctypes.c_bool) -> ctypes.c_bool:
    """
    Get the boolean value of a hint variable.

    https://wiki.libsdl.org/SDL3/SDL_GetHintBoolean
    """
    return raw.SDL_GetHintBoolean(name, default_value)

def SDL_AddHintCallback(name: ctypes.c_char_p, callback: SDL_HintCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Add a function to watch a particular hint.

    https://wiki.libsdl.org/SDL3/SDL_AddHintCallback
    """
    return raw.SDL_AddHintCallback(name, callback, userdata)

def SDL_RemoveHintCallback(name: ctypes.c_char_p, callback: SDL_HintCallback, userdata: ctypes.c_void_p) -> None:
    """
    Remove a function watching a particular hint.

    https://wiki.libsdl.org/SDL3/SDL_RemoveHintCallback
    """
    return raw.SDL_RemoveHintCallback(name, callback, userdata)

def SDL_GetNumRenderDrivers() -> ctypes.c_int:
    """
    Get the number of 2D rendering drivers available for the current display.

    https://wiki.libsdl.org/SDL3/SDL_GetNumRenderDrivers
    """
    return raw.SDL_GetNumRenderDrivers()

def SDL_GetRenderDriver(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Use this function to get the name of a built in 2D rendering driver.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderDriver
    """
    return raw.SDL_GetRenderDriver(index)

def SDL_CreateWindowAndRenderer(title: ctypes.c_char_p, width: ctypes.c_int, height: ctypes.c_int, window_flags: SDL_WindowFlags, window: LP_LP_SDL_Window, renderer: LP_LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Create a window and default renderer.

    https://wiki.libsdl.org/SDL3/SDL_CreateWindowAndRenderer
    """
    return raw.SDL_CreateWindowAndRenderer(title, width, height, window_flags, window, renderer)

def SDL_CreateRenderer(window: LP_SDL_Window, name: ctypes.c_char_p) -> LP_SDL_Renderer:
    """
    Create a 2D rendering context for a window.

    https://wiki.libsdl.org/SDL3/SDL_CreateRenderer
    """
    return raw.SDL_CreateRenderer(window, name)

def SDL_CreateRendererWithProperties(props: SDL_PropertiesID) -> LP_SDL_Renderer:
    """
    Create a 2D rendering context for a window, with the specified properties.

    https://wiki.libsdl.org/SDL3/SDL_CreateRendererWithProperties
    """
    return raw.SDL_CreateRendererWithProperties(props)

def SDL_CreateGPURenderer(device: LP_SDL_GPUDevice, window: LP_SDL_Window) -> LP_SDL_Renderer:
    """
    Create a 2D GPU rendering context.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPURenderer
    """
    return raw.SDL_CreateGPURenderer(device, window)

def SDL_GetGPURendererDevice(renderer: LP_SDL_Renderer) -> LP_SDL_GPUDevice:
    """
    Return the GPU device used by a renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetGPURendererDevice
    """
    return raw.SDL_GetGPURendererDevice(renderer)

def SDL_CreateSoftwareRenderer(surface: LP_SDL_Surface) -> LP_SDL_Renderer:
    """
    Create a 2D software rendering context for a surface.

    https://wiki.libsdl.org/SDL3/SDL_CreateSoftwareRenderer
    """
    return raw.SDL_CreateSoftwareRenderer(surface)

def SDL_GetRenderer(window: LP_SDL_Window) -> LP_SDL_Renderer:
    """
    Get the renderer associated with a window.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderer
    """
    return raw.SDL_GetRenderer(window)

def SDL_GetRenderWindow(renderer: LP_SDL_Renderer) -> LP_SDL_Window:
    """
    Get the window associated with a renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderWindow
    """
    return raw.SDL_GetRenderWindow(renderer)

def SDL_GetRendererName(renderer: LP_SDL_Renderer) -> ctypes.c_char_p:
    """
    Get the name of a renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetRendererName
    """
    return raw.SDL_GetRendererName(renderer)

def SDL_GetRendererProperties(renderer: LP_SDL_Renderer) -> SDL_PropertiesID:
    """
    Get the properties associated with a renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetRendererProperties
    """
    return raw.SDL_GetRendererProperties(renderer)

def SDL_GetRenderOutputSize(renderer: LP_SDL_Renderer, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the output size in pixels of a rendering context.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderOutputSize
    """
    return raw.SDL_GetRenderOutputSize(renderer, w, h)

def SDL_GetCurrentRenderOutputSize(renderer: LP_SDL_Renderer, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the current output size in pixels of a rendering context.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentRenderOutputSize
    """
    return raw.SDL_GetCurrentRenderOutputSize(renderer, w, h)

def SDL_CreateTexture(renderer: LP_SDL_Renderer, format: SDL_PixelFormat, access: SDL_TextureAccess, w: ctypes.c_int, h: ctypes.c_int) -> LP_SDL_Texture:
    """
    Create a texture for a rendering context.

    https://wiki.libsdl.org/SDL3/SDL_CreateTexture
    """
    return raw.SDL_CreateTexture(renderer, format, access, w, h)

def SDL_CreateTextureFromSurface(renderer: LP_SDL_Renderer, surface: LP_SDL_Surface) -> LP_SDL_Texture:
    """
    Create a texture from an existing surface.

    https://wiki.libsdl.org/SDL3/SDL_CreateTextureFromSurface
    """
    return raw.SDL_CreateTextureFromSurface(renderer, surface)

def SDL_CreateTextureWithProperties(renderer: LP_SDL_Renderer, props: SDL_PropertiesID) -> LP_SDL_Texture:
    """
    Create a texture for a rendering context with the specified properties.

    https://wiki.libsdl.org/SDL3/SDL_CreateTextureWithProperties
    """
    return raw.SDL_CreateTextureWithProperties(renderer, props)

def SDL_GetTextureProperties(texture: LP_SDL_Texture) -> SDL_PropertiesID:
    """
    Get the properties associated with a texture.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureProperties
    """
    return raw.SDL_GetTextureProperties(texture)

def SDL_GetRendererFromTexture(texture: LP_SDL_Texture) -> LP_SDL_Renderer:
    """
    Get the renderer that created an [SDL_Texture](https://wiki.libsdl.org/SDL3/SDL_Texture).

    https://wiki.libsdl.org/SDL3/SDL_GetRendererFromTexture
    """
    return raw.SDL_GetRendererFromTexture(texture)

def SDL_GetTextureSize(texture: LP_SDL_Texture, w: LP_c_float, h: LP_c_float) -> ctypes.c_bool:
    """
    Get the size of a texture, as floating point values.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureSize
    """
    return raw.SDL_GetTextureSize(texture, w, h)

def SDL_SetTexturePalette(texture: LP_SDL_Texture, palette: LP_SDL_Palette) -> ctypes.c_bool:
    """
    Set the palette used by a texture.

    https://wiki.libsdl.org/SDL3/SDL_SetTexturePalette
    """
    return raw.SDL_SetTexturePalette(texture, palette)

def SDL_GetTexturePalette(texture: LP_SDL_Texture) -> LP_SDL_Palette:
    """
    Get the palette used by a texture.

    https://wiki.libsdl.org/SDL3/SDL_GetTexturePalette
    """
    return raw.SDL_GetTexturePalette(texture)

def SDL_SetTextureColorMod(texture: LP_SDL_Texture, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set an additional color value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_SetTextureColorMod
    """
    return raw.SDL_SetTextureColorMod(texture, r, g, b)

def SDL_SetTextureColorModFloat(texture: LP_SDL_Texture, r: ctypes.c_float, g: ctypes.c_float, b: ctypes.c_float) -> ctypes.c_bool:
    """
    Set an additional color value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_SetTextureColorModFloat
    """
    return raw.SDL_SetTextureColorModFloat(texture, r, g, b)

def SDL_GetTextureColorMod(texture: LP_SDL_Texture, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the additional color value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureColorMod
    """
    return raw.SDL_GetTextureColorMod(texture, r, g, b)

def SDL_GetTextureColorModFloat(texture: LP_SDL_Texture, r: LP_c_float, g: LP_c_float, b: LP_c_float) -> ctypes.c_bool:
    """
    Get the additional color value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureColorModFloat
    """
    return raw.SDL_GetTextureColorModFloat(texture, r, g, b)

def SDL_SetTextureAlphaMod(texture: LP_SDL_Texture, alpha: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set an additional alpha value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_SetTextureAlphaMod
    """
    return raw.SDL_SetTextureAlphaMod(texture, alpha)

def SDL_SetTextureAlphaModFloat(texture: LP_SDL_Texture, alpha: ctypes.c_float) -> ctypes.c_bool:
    """
    Set an additional alpha value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_SetTextureAlphaModFloat
    """
    return raw.SDL_SetTextureAlphaModFloat(texture, alpha)

def SDL_GetTextureAlphaMod(texture: LP_SDL_Texture, alpha: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the additional alpha value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureAlphaMod
    """
    return raw.SDL_GetTextureAlphaMod(texture, alpha)

def SDL_GetTextureAlphaModFloat(texture: LP_SDL_Texture, alpha: LP_c_float) -> ctypes.c_bool:
    """
    Get the additional alpha value multiplied into render copy operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureAlphaModFloat
    """
    return raw.SDL_GetTextureAlphaModFloat(texture, alpha)

def SDL_SetTextureBlendMode(texture: LP_SDL_Texture, blendMode: SDL_BlendMode) -> ctypes.c_bool:
    """
    Set the blend mode for a texture, used by [SDL_RenderTexture](https://wiki.libsdl.org/SDL3/SDL_RenderTexture)().

    https://wiki.libsdl.org/SDL3/SDL_SetTextureBlendMode
    """
    return raw.SDL_SetTextureBlendMode(texture, blendMode)

def SDL_GetTextureBlendMode(texture: LP_SDL_Texture, blendMode: LP_SDL_BlendMode) -> ctypes.c_bool:
    """
    Get the blend mode used for texture copy operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureBlendMode
    """
    return raw.SDL_GetTextureBlendMode(texture, blendMode)

def SDL_SetTextureScaleMode(texture: LP_SDL_Texture, scaleMode: SDL_ScaleMode) -> ctypes.c_bool:
    """
    Set the scale mode used for texture scale operations.

    https://wiki.libsdl.org/SDL3/SDL_SetTextureScaleMode
    """
    return raw.SDL_SetTextureScaleMode(texture, scaleMode)

def SDL_GetTextureScaleMode(texture: LP_SDL_Texture, scaleMode: LP_SDL_ScaleMode) -> ctypes.c_bool:
    """
    Get the scale mode used for texture scale operations.

    https://wiki.libsdl.org/SDL3/SDL_GetTextureScaleMode
    """
    return raw.SDL_GetTextureScaleMode(texture, scaleMode)

def SDL_UpdateTexture(texture: LP_SDL_Texture, rect: LP_SDL_Rect, pixels: ctypes.c_void_p, pitch: ctypes.c_int) -> ctypes.c_bool:
    """
    Update the given texture rectangle with new pixel data.

    https://wiki.libsdl.org/SDL3/SDL_UpdateTexture
    """
    return raw.SDL_UpdateTexture(texture, rect, pixels, pitch)

def SDL_UpdateYUVTexture(texture: LP_SDL_Texture, rect: LP_SDL_Rect, Yplane: LP_c_uint8, Ypitch: ctypes.c_int, Uplane: LP_c_uint8, Upitch: ctypes.c_int, Vplane: LP_c_uint8, Vpitch: ctypes.c_int) -> ctypes.c_bool:
    """
    Update a rectangle within a planar YV12 or IYUV texture with new pixel data.

    https://wiki.libsdl.org/SDL3/SDL_UpdateYUVTexture
    """
    return raw.SDL_UpdateYUVTexture(texture, rect, Yplane, Ypitch, Uplane, Upitch, Vplane, Vpitch)

def SDL_UpdateNVTexture(texture: LP_SDL_Texture, rect: LP_SDL_Rect, Yplane: LP_c_uint8, Ypitch: ctypes.c_int, UVplane: LP_c_uint8, UVpitch: ctypes.c_int) -> ctypes.c_bool:
    """
    Update a rectangle within a planar NV12 or NV21 texture with new pixels.

    https://wiki.libsdl.org/SDL3/SDL_UpdateNVTexture
    """
    return raw.SDL_UpdateNVTexture(texture, rect, Yplane, Ypitch, UVplane, UVpitch)

def SDL_LockTexture(texture: LP_SDL_Texture, rect: LP_SDL_Rect, pixels: LP_c_void_p, pitch: LP_c_int) -> ctypes.c_bool:
    """
    Lock a portion of the texture for **write-only** pixel access.

    https://wiki.libsdl.org/SDL3/SDL_LockTexture
    """
    return raw.SDL_LockTexture(texture, rect, pixels, pitch)

def SDL_LockTextureToSurface(texture: LP_SDL_Texture, rect: LP_SDL_Rect, surface: LP_LP_SDL_Surface) -> ctypes.c_bool:
    """
    Lock a portion of the texture for **write-only** pixel access, and expose it as a SDL surface.

    https://wiki.libsdl.org/SDL3/SDL_LockTextureToSurface
    """
    return raw.SDL_LockTextureToSurface(texture, rect, surface)

def SDL_UnlockTexture(texture: LP_SDL_Texture) -> None:
    """
    Unlock a texture, uploading the changes to video memory, if needed.

    https://wiki.libsdl.org/SDL3/SDL_UnlockTexture
    """
    return raw.SDL_UnlockTexture(texture)

def SDL_SetRenderTarget(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture) -> ctypes.c_bool:
    """
    Set a texture as the current rendering target.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderTarget
    """
    return raw.SDL_SetRenderTarget(renderer, texture)

def SDL_GetRenderTarget(renderer: LP_SDL_Renderer) -> LP_SDL_Texture:
    """
    Get the current render target.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderTarget
    """
    return raw.SDL_GetRenderTarget(renderer)

def SDL_SetRenderLogicalPresentation(renderer: LP_SDL_Renderer, w: ctypes.c_int, h: ctypes.c_int, mode: SDL_RendererLogicalPresentation) -> ctypes.c_bool:
    """
    Set a device-independent resolution and presentation mode for rendering.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderLogicalPresentation
    """
    return raw.SDL_SetRenderLogicalPresentation(renderer, w, h, mode)

def SDL_GetRenderLogicalPresentation(renderer: LP_SDL_Renderer, w: LP_c_int, h: LP_c_int, mode: LP_SDL_RendererLogicalPresentation) -> ctypes.c_bool:
    """
    Get device independent resolution and presentation mode for rendering.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderLogicalPresentation
    """
    return raw.SDL_GetRenderLogicalPresentation(renderer, w, h, mode)

def SDL_GetRenderLogicalPresentationRect(renderer: LP_SDL_Renderer, rect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Get the final presentation rectangle for rendering.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderLogicalPresentationRect
    """
    return raw.SDL_GetRenderLogicalPresentationRect(renderer, rect)

def SDL_RenderCoordinatesFromWindow(renderer: LP_SDL_Renderer, window_x: ctypes.c_float, window_y: ctypes.c_float, x: LP_c_float, y: LP_c_float) -> ctypes.c_bool:
    """
    Get a point in render coordinates when given a point in window coordinates.

    https://wiki.libsdl.org/SDL3/SDL_RenderCoordinatesFromWindow
    """
    return raw.SDL_RenderCoordinatesFromWindow(renderer, window_x, window_y, x, y)

def SDL_RenderCoordinatesToWindow(renderer: LP_SDL_Renderer, x: ctypes.c_float, y: ctypes.c_float, window_x: LP_c_float, window_y: LP_c_float) -> ctypes.c_bool:
    """
    Get a point in window coordinates when given a point in render coordinates.

    https://wiki.libsdl.org/SDL3/SDL_RenderCoordinatesToWindow
    """
    return raw.SDL_RenderCoordinatesToWindow(renderer, x, y, window_x, window_y)

def SDL_ConvertEventToRenderCoordinates(renderer: LP_SDL_Renderer, event: LP_SDL_Event) -> ctypes.c_bool:
    """
    Convert the coordinates in an event to render coordinates.

    https://wiki.libsdl.org/SDL3/SDL_ConvertEventToRenderCoordinates
    """
    return raw.SDL_ConvertEventToRenderCoordinates(renderer, event)

def SDL_SetRenderViewport(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Set the drawing area for rendering on the current target.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderViewport
    """
    return raw.SDL_SetRenderViewport(renderer, rect)

def SDL_GetRenderViewport(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the drawing area for the current target.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderViewport
    """
    return raw.SDL_GetRenderViewport(renderer, rect)

def SDL_RenderViewportSet(renderer: LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Return whether an explicit rectangle was set as the viewport.

    https://wiki.libsdl.org/SDL3/SDL_RenderViewportSet
    """
    return raw.SDL_RenderViewportSet(renderer)

def SDL_GetRenderSafeArea(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the safe area for rendering within the current viewport.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderSafeArea
    """
    return raw.SDL_GetRenderSafeArea(renderer, rect)

def SDL_SetRenderClipRect(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Set the clip rectangle for rendering on the specified target.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderClipRect
    """
    return raw.SDL_SetRenderClipRect(renderer, rect)

def SDL_GetRenderClipRect(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> ctypes.c_bool:
    """
    Get the clip rectangle for the current target.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderClipRect
    """
    return raw.SDL_GetRenderClipRect(renderer, rect)

def SDL_RenderClipEnabled(renderer: LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Get whether clipping is enabled on the given render target.

    https://wiki.libsdl.org/SDL3/SDL_RenderClipEnabled
    """
    return raw.SDL_RenderClipEnabled(renderer)

def SDL_SetRenderScale(renderer: LP_SDL_Renderer, scaleX: ctypes.c_float, scaleY: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the drawing scale for rendering on the current target.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderScale
    """
    return raw.SDL_SetRenderScale(renderer, scaleX, scaleY)

def SDL_GetRenderScale(renderer: LP_SDL_Renderer, scaleX: LP_c_float, scaleY: LP_c_float) -> ctypes.c_bool:
    """
    Get the drawing scale for the current target.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderScale
    """
    return raw.SDL_GetRenderScale(renderer, scaleX, scaleY)

def SDL_SetRenderDrawColor(renderer: LP_SDL_Renderer, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8, a: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set the color used for drawing operations.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderDrawColor
    """
    return raw.SDL_SetRenderDrawColor(renderer, r, g, b, a)

def SDL_SetRenderDrawColorFloat(renderer: LP_SDL_Renderer, r: ctypes.c_float, g: ctypes.c_float, b: ctypes.c_float, a: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the color used for drawing operations (Rect, Line and Clear).

    https://wiki.libsdl.org/SDL3/SDL_SetRenderDrawColorFloat
    """
    return raw.SDL_SetRenderDrawColorFloat(renderer, r, g, b, a)

def SDL_GetRenderDrawColor(renderer: LP_SDL_Renderer, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8, a: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the color used for drawing operations (Rect, Line and Clear).

    https://wiki.libsdl.org/SDL3/SDL_GetRenderDrawColor
    """
    return raw.SDL_GetRenderDrawColor(renderer, r, g, b, a)

def SDL_GetRenderDrawColorFloat(renderer: LP_SDL_Renderer, r: LP_c_float, g: LP_c_float, b: LP_c_float, a: LP_c_float) -> ctypes.c_bool:
    """
    Get the color used for drawing operations (Rect, Line and Clear).

    https://wiki.libsdl.org/SDL3/SDL_GetRenderDrawColorFloat
    """
    return raw.SDL_GetRenderDrawColorFloat(renderer, r, g, b, a)

def SDL_SetRenderColorScale(renderer: LP_SDL_Renderer, scale: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the color scale used for render operations.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderColorScale
    """
    return raw.SDL_SetRenderColorScale(renderer, scale)

def SDL_GetRenderColorScale(renderer: LP_SDL_Renderer, scale: LP_c_float) -> ctypes.c_bool:
    """
    Get the color scale used for render operations.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderColorScale
    """
    return raw.SDL_GetRenderColorScale(renderer, scale)

def SDL_SetRenderDrawBlendMode(renderer: LP_SDL_Renderer, blendMode: SDL_BlendMode) -> ctypes.c_bool:
    """
    Set the blend mode used for drawing operations (Fill and Line).

    https://wiki.libsdl.org/SDL3/SDL_SetRenderDrawBlendMode
    """
    return raw.SDL_SetRenderDrawBlendMode(renderer, blendMode)

def SDL_GetRenderDrawBlendMode(renderer: LP_SDL_Renderer, blendMode: LP_SDL_BlendMode) -> ctypes.c_bool:
    """
    Get the blend mode used for drawing operations.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderDrawBlendMode
    """
    return raw.SDL_GetRenderDrawBlendMode(renderer, blendMode)

def SDL_RenderClear(renderer: LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Clear the current rendering target with the drawing color.

    https://wiki.libsdl.org/SDL3/SDL_RenderClear
    """
    return raw.SDL_RenderClear(renderer)

def SDL_RenderPoint(renderer: LP_SDL_Renderer, x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_bool:
    """
    Draw a point on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderPoint
    """
    return raw.SDL_RenderPoint(renderer, x, y)

def SDL_RenderPoints(renderer: LP_SDL_Renderer, points: LP_SDL_FPoint, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Draw multiple points on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderPoints
    """
    return raw.SDL_RenderPoints(renderer, points, count)

def SDL_RenderLine(renderer: LP_SDL_Renderer, x1: ctypes.c_float, y1: ctypes.c_float, x2: ctypes.c_float, y2: ctypes.c_float) -> ctypes.c_bool:
    """
    Draw a line on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderLine
    """
    return raw.SDL_RenderLine(renderer, x1, y1, x2, y2)

def SDL_RenderLines(renderer: LP_SDL_Renderer, points: LP_SDL_FPoint, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Draw a series of connected lines on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderLines
    """
    return raw.SDL_RenderLines(renderer, points, count)

def SDL_RenderRect(renderer: LP_SDL_Renderer, rect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Draw a rectangle on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderRect
    """
    return raw.SDL_RenderRect(renderer, rect)

def SDL_RenderRects(renderer: LP_SDL_Renderer, rects: LP_SDL_FRect, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Draw some number of rectangles on the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderRects
    """
    return raw.SDL_RenderRects(renderer, rects, count)

def SDL_RenderFillRect(renderer: LP_SDL_Renderer, rect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Fill a rectangle on the current rendering target with the drawing color at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderFillRect
    """
    return raw.SDL_RenderFillRect(renderer, rect)

def SDL_RenderFillRects(renderer: LP_SDL_Renderer, rects: LP_SDL_FRect, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Fill some number of rectangles on the current rendering target with the drawing color at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderFillRects
    """
    return raw.SDL_RenderFillRects(renderer, rects, count)

def SDL_RenderTexture(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, dstrect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Copy a portion of the texture to the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTexture
    """
    return raw.SDL_RenderTexture(renderer, texture, srcrect, dstrect)

def SDL_RenderTextureRotated(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, dstrect: LP_SDL_FRect, angle: ctypes.c_double, center: LP_SDL_FPoint, flip: SDL_FlipMode) -> ctypes.c_bool:
    """
    Copy a portion of the source texture to the current rendering target, with rotation and flipping, at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTextureRotated
    """
    return raw.SDL_RenderTextureRotated(renderer, texture, srcrect, dstrect, angle, center, flip)

def SDL_RenderTextureAffine(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, origin: LP_SDL_FPoint, right: LP_SDL_FPoint, down: LP_SDL_FPoint) -> ctypes.c_bool:
    """
    Copy a portion of the source texture to the current rendering target, with affine transform, at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTextureAffine
    """
    return raw.SDL_RenderTextureAffine(renderer, texture, srcrect, origin, right, down)

def SDL_RenderTextureTiled(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, scale: ctypes.c_float, dstrect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Tile a portion of the texture to the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTextureTiled
    """
    return raw.SDL_RenderTextureTiled(renderer, texture, srcrect, scale, dstrect)

def SDL_RenderTexture9Grid(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, left_width: ctypes.c_float, right_width: ctypes.c_float, top_height: ctypes.c_float, bottom_height: ctypes.c_float, scale: ctypes.c_float, dstrect: LP_SDL_FRect) -> ctypes.c_bool:
    """
    Perform a scaled copy using the 9-grid algorithm to the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTexture9Grid
    """
    return raw.SDL_RenderTexture9Grid(renderer, texture, srcrect, left_width, right_width, top_height, bottom_height, scale, dstrect)

def SDL_RenderTexture9GridTiled(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, srcrect: LP_SDL_FRect, left_width: ctypes.c_float, right_width: ctypes.c_float, top_height: ctypes.c_float, bottom_height: ctypes.c_float, scale: ctypes.c_float, dstrect: LP_SDL_FRect, tileScale: ctypes.c_float) -> ctypes.c_bool:
    """
    Perform a scaled copy using the 9-grid algorithm to the current rendering target at subpixel precision.

    https://wiki.libsdl.org/SDL3/SDL_RenderTexture9GridTiled
    """
    return raw.SDL_RenderTexture9GridTiled(renderer, texture, srcrect, left_width, right_width, top_height, bottom_height, scale, dstrect, tileScale)

def SDL_RenderGeometry(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, vertices: LP_SDL_Vertex, num_vertices: ctypes.c_int, indices: LP_c_int, num_indices: ctypes.c_int) -> ctypes.c_bool:
    """
    Render a list of triangles, optionally using a texture and indices into the vertex array Color and alpha modulation is done per vertex ([SDL_SetTextureColorMod](https://wiki.libsdl.org/SDL3/SDL_SetTextureColorMod) and [SDL_SetTextureAlphaMod](https://wiki.libsdl.org/SDL3/SDL_SetTextureAlphaMod) are ignored).

    https://wiki.libsdl.org/SDL3/SDL_RenderGeometry
    """
    return raw.SDL_RenderGeometry(renderer, texture, vertices, num_vertices, indices, num_indices)

def SDL_RenderGeometryRaw(renderer: LP_SDL_Renderer, texture: LP_SDL_Texture, xy: LP_c_float, xy_stride: ctypes.c_int, color: LP_SDL_FColor, color_stride: ctypes.c_int, uv: LP_c_float, uv_stride: ctypes.c_int, num_vertices: ctypes.c_int, indices: ctypes.c_void_p, num_indices: ctypes.c_int, size_indices: ctypes.c_int) -> ctypes.c_bool:
    """
    Render a list of triangles, optionally using a texture and indices into the vertex arrays Color and alpha modulation is done per vertex ([SDL_SetTextureColorMod](https://wiki.libsdl.org/SDL3/SDL_SetTextureColorMod) and [SDL_SetTextureAlphaMod](https://wiki.libsdl.org/SDL3/SDL_SetTextureAlphaMod) are ignored).

    https://wiki.libsdl.org/SDL3/SDL_RenderGeometryRaw
    """
    return raw.SDL_RenderGeometryRaw(renderer, texture, xy, xy_stride, color, color_stride, uv, uv_stride, num_vertices, indices, num_indices, size_indices)

def SDL_SetRenderTextureAddressMode(renderer: LP_SDL_Renderer, u_mode: SDL_TextureAddressMode, v_mode: SDL_TextureAddressMode) -> ctypes.c_bool:
    """
    Set the texture addressing mode used in [SDL_RenderGeometry](https://wiki.libsdl.org/SDL3/SDL_RenderGeometry)().

    https://wiki.libsdl.org/SDL3/SDL_SetRenderTextureAddressMode
    """
    return raw.SDL_SetRenderTextureAddressMode(renderer, u_mode, v_mode)

def SDL_GetRenderTextureAddressMode(renderer: LP_SDL_Renderer, u_mode: LP_SDL_TextureAddressMode, v_mode: LP_SDL_TextureAddressMode) -> ctypes.c_bool:
    """
    Get the texture addressing mode used in [SDL_RenderGeometry](https://wiki.libsdl.org/SDL3/SDL_RenderGeometry)().

    https://wiki.libsdl.org/SDL3/SDL_GetRenderTextureAddressMode
    """
    return raw.SDL_GetRenderTextureAddressMode(renderer, u_mode, v_mode)

def SDL_RenderReadPixels(renderer: LP_SDL_Renderer, rect: LP_SDL_Rect) -> LP_SDL_Surface:
    """
    Read pixels from the current rendering target.

    https://wiki.libsdl.org/SDL3/SDL_RenderReadPixels
    """
    return raw.SDL_RenderReadPixels(renderer, rect)

def SDL_RenderPresent(renderer: LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Update the screen with any rendering performed since the previous call.

    https://wiki.libsdl.org/SDL3/SDL_RenderPresent
    """
    return raw.SDL_RenderPresent(renderer)

def SDL_DestroyTexture(texture: LP_SDL_Texture) -> None:
    """
    Destroy the specified texture.

    https://wiki.libsdl.org/SDL3/SDL_DestroyTexture
    """
    return raw.SDL_DestroyTexture(texture)

def SDL_DestroyRenderer(renderer: LP_SDL_Renderer) -> None:
    """
    Destroy the rendering context for a window and free all associated textures.

    https://wiki.libsdl.org/SDL3/SDL_DestroyRenderer
    """
    return raw.SDL_DestroyRenderer(renderer)

def SDL_FlushRenderer(renderer: LP_SDL_Renderer) -> ctypes.c_bool:
    """
    Force the rendering context to flush any pending commands and state.

    https://wiki.libsdl.org/SDL3/SDL_FlushRenderer
    """
    return raw.SDL_FlushRenderer(renderer)

def SDL_GetRenderMetalLayer(renderer: LP_SDL_Renderer) -> ctypes.c_void_p:
    """
    Get the CAMetalLayer associated with the given Metal renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderMetalLayer
    """
    return raw.SDL_GetRenderMetalLayer(renderer)

def SDL_GetRenderMetalCommandEncoder(renderer: LP_SDL_Renderer) -> ctypes.c_void_p:
    """
    Get the Metal command encoder for the current frame.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderMetalCommandEncoder
    """
    return raw.SDL_GetRenderMetalCommandEncoder(renderer)

def SDL_AddVulkanRenderSemaphores(renderer: LP_SDL_Renderer, wait_stage_mask: ctypes.c_uint32, wait_semaphore: ctypes.c_int64, signal_semaphore: ctypes.c_int64) -> ctypes.c_bool:
    """
    Add a set of synchronization semaphores for the current frame.

    https://wiki.libsdl.org/SDL3/SDL_AddVulkanRenderSemaphores
    """
    return raw.SDL_AddVulkanRenderSemaphores(renderer, wait_stage_mask, wait_semaphore, signal_semaphore)

def SDL_SetRenderVSync(renderer: LP_SDL_Renderer, vsync: ctypes.c_int) -> ctypes.c_bool:
    """
    Toggle VSync of the given renderer.

    https://wiki.libsdl.org/SDL3/SDL_SetRenderVSync
    """
    return raw.SDL_SetRenderVSync(renderer, vsync)

def SDL_GetRenderVSync(renderer: LP_SDL_Renderer, vsync: LP_c_int) -> ctypes.c_bool:
    """
    Get VSync of the given renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetRenderVSync
    """
    return raw.SDL_GetRenderVSync(renderer, vsync)

def SDL_RenderDebugText(renderer: LP_SDL_Renderer, x: ctypes.c_float, y: ctypes.c_float, str: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Draw debug text to an [SDL_Renderer](https://wiki.libsdl.org/SDL3/SDL_Renderer).

    https://wiki.libsdl.org/SDL3/SDL_RenderDebugText
    """
    return raw.SDL_RenderDebugText(renderer, x, y, str)

def SDL_RenderDebugTextFormat(renderer: LP_SDL_Renderer, x: ctypes.c_float, y: ctypes.c_float, fmt: ctypes.c_char_p, *args: typing.Any) -> ctypes.c_bool:
    """
    Draw debug text to an [SDL_Renderer](https://wiki.libsdl.org/SDL3/SDL_Renderer).

    https://wiki.libsdl.org/SDL3/SDL_RenderDebugTextFormat
    """
    return raw.SDL_RenderDebugTextFormat(renderer, x, y, fmt, *args)

def SDL_SetDefaultTextureScaleMode(renderer: LP_SDL_Renderer, scale_mode: SDL_ScaleMode) -> ctypes.c_bool:
    """
    Set default scale mode for new textures for given renderer.

    https://wiki.libsdl.org/SDL3/SDL_SetDefaultTextureScaleMode
    """
    return raw.SDL_SetDefaultTextureScaleMode(renderer, scale_mode)

def SDL_GetDefaultTextureScaleMode(renderer: LP_SDL_Renderer, scale_mode: LP_SDL_ScaleMode) -> ctypes.c_bool:
    """
    Get default texture scale mode of the given renderer.

    https://wiki.libsdl.org/SDL3/SDL_GetDefaultTextureScaleMode
    """
    return raw.SDL_GetDefaultTextureScaleMode(renderer, scale_mode)

def SDL_CreateGPURenderState(renderer: LP_SDL_Renderer, createinfo: LP_SDL_GPURenderStateCreateInfo) -> LP_SDL_GPURenderState:
    """
    Create custom GPU render state.

    https://wiki.libsdl.org/SDL3/SDL_CreateGPURenderState
    """
    return raw.SDL_CreateGPURenderState(renderer, createinfo)

def SDL_SetGPURenderStateFragmentUniforms(state: LP_SDL_GPURenderState, slot_index: ctypes.c_uint32, data: ctypes.c_void_p, length: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Set fragment shader uniform variables in a custom GPU render state.

    https://wiki.libsdl.org/SDL3/SDL_SetGPURenderStateFragmentUniforms
    """
    return raw.SDL_SetGPURenderStateFragmentUniforms(state, slot_index, data, length)

def SDL_SetGPURenderState(renderer: LP_SDL_Renderer, state: LP_SDL_GPURenderState) -> ctypes.c_bool:
    """
    Set custom GPU render state.

    https://wiki.libsdl.org/SDL3/SDL_SetGPURenderState
    """
    return raw.SDL_SetGPURenderState(renderer, state)

def SDL_DestroyGPURenderState(state: LP_SDL_GPURenderState) -> None:
    """
    Destroy custom GPU render state.

    https://wiki.libsdl.org/SDL3/SDL_DestroyGPURenderState
    """
    return raw.SDL_DestroyGPURenderState(state)

def SDL_GetVersion() -> ctypes.c_int:
    """
    Get the version of SDL that is linked against your program.

    https://wiki.libsdl.org/SDL3/SDL_GetVersion
    """
    return raw.SDL_GetVersion()

def SDL_GetRevision() -> ctypes.c_char_p:
    """
    Get the code revision of the SDL library that is linked against your program.

    https://wiki.libsdl.org/SDL3/SDL_GetRevision
    """
    return raw.SDL_GetRevision()

def SDL_Init(flags: SDL_InitFlags) -> ctypes.c_bool:
    """
    Initialize the SDL library.

    https://wiki.libsdl.org/SDL3/SDL_Init
    """
    return raw.SDL_Init(flags)

def SDL_InitSubSystem(flags: SDL_InitFlags) -> ctypes.c_bool:
    """
    Compatibility function to initialize the SDL library.

    https://wiki.libsdl.org/SDL3/SDL_InitSubSystem
    """
    return raw.SDL_InitSubSystem(flags)

def SDL_QuitSubSystem(flags: SDL_InitFlags) -> None:
    """
    Shut down specific SDL subsystems.

    https://wiki.libsdl.org/SDL3/SDL_QuitSubSystem
    """
    return raw.SDL_QuitSubSystem(flags)

def SDL_WasInit(flags: SDL_InitFlags) -> SDL_InitFlags:
    """
    Get a mask of the specified subsystems which are currently initialized.

    https://wiki.libsdl.org/SDL3/SDL_WasInit
    """
    return raw.SDL_WasInit(flags)

def SDL_Quit() -> None:
    """
    Clean up all initialized subsystems.

    https://wiki.libsdl.org/SDL3/SDL_Quit
    """
    return raw.SDL_Quit()

def SDL_IsMainThread() -> ctypes.c_bool:
    """
    Return whether this is the main thread.

    https://wiki.libsdl.org/SDL3/SDL_IsMainThread
    """
    return raw.SDL_IsMainThread()

def SDL_RunOnMainThread(callback: SDL_MainThreadCallback, userdata: ctypes.c_void_p, wait_complete: ctypes.c_bool) -> ctypes.c_bool:
    """
    Call a function on the main thread during event processing.

    https://wiki.libsdl.org/SDL3/SDL_RunOnMainThread
    """
    return raw.SDL_RunOnMainThread(callback, userdata, wait_complete)

def SDL_SetAppMetadata(appname: ctypes.c_char_p, appversion: ctypes.c_char_p, appidentifier: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Specify basic metadata about your app.

    https://wiki.libsdl.org/SDL3/SDL_SetAppMetadata
    """
    return raw.SDL_SetAppMetadata(appname, appversion, appidentifier)

def SDL_SetAppMetadataProperty(name: ctypes.c_char_p, value: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Specify metadata about your app through a set of properties.

    https://wiki.libsdl.org/SDL3/SDL_SetAppMetadataProperty
    """
    return raw.SDL_SetAppMetadataProperty(name, value)

def SDL_GetAppMetadataProperty(name: ctypes.c_char_p) -> ctypes.c_char_p:
    """
    Get metadata about your app.

    https://wiki.libsdl.org/SDL3/SDL_GetAppMetadataProperty
    """
    return raw.SDL_GetAppMetadataProperty(name)

def SDL_LoadObject(sofile: ctypes.c_char_p) -> LP_SDL_SharedObject:
    """
    Dynamically load a shared object.

    https://wiki.libsdl.org/SDL3/SDL_LoadObject
    """
    return raw.SDL_LoadObject(sofile)

def SDL_LoadFunction(handle: LP_SDL_SharedObject, name: ctypes.c_char_p) -> SDL_FunctionPointer:
    """
    Look up the address of the named function in a shared object.

    https://wiki.libsdl.org/SDL3/SDL_LoadFunction
    """
    return raw.SDL_LoadFunction(handle, name)

def SDL_UnloadObject(handle: LP_SDL_SharedObject) -> None:
    """
    Unload a shared object from memory.

    https://wiki.libsdl.org/SDL3/SDL_UnloadObject
    """
    return raw.SDL_UnloadObject(handle)

def SDL_GetPreferredLocales(count: LP_c_int) -> LP_LP_SDL_Locale:
    """
    Report the user's preferred locale.

    https://wiki.libsdl.org/SDL3/SDL_GetPreferredLocales
    """
    return raw.SDL_GetPreferredLocales(count)

def SDL_SetLogPriorities(priority: SDL_LogPriority) -> None:
    """
    Set the priority of all log categories.

    https://wiki.libsdl.org/SDL3/SDL_SetLogPriorities
    """
    return raw.SDL_SetLogPriorities(priority)

def SDL_SetLogPriority(category: ctypes.c_int, priority: SDL_LogPriority) -> None:
    """
    Set the priority of a particular log category.

    https://wiki.libsdl.org/SDL3/SDL_SetLogPriority
    """
    return raw.SDL_SetLogPriority(category, priority)

def SDL_GetLogPriority(category: ctypes.c_int) -> SDL_LogPriority:
    """
    Get the priority of a particular log category.

    https://wiki.libsdl.org/SDL3/SDL_GetLogPriority
    """
    return raw.SDL_GetLogPriority(category)

def SDL_ResetLogPriorities() -> None:
    """
    Reset all priorities to default.

    https://wiki.libsdl.org/SDL3/SDL_ResetLogPriorities
    """
    return raw.SDL_ResetLogPriorities()

def SDL_SetLogPriorityPrefix(priority: SDL_LogPriority, prefix: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set the text prepended to log messages of a given priority.

    https://wiki.libsdl.org/SDL3/SDL_SetLogPriorityPrefix
    """
    return raw.SDL_SetLogPriorityPrefix(priority, prefix)

def SDL_Log(fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_CATEGORY_APPLICATION](https://wiki.libsdl.org/SDL3/SDL_LOG_CATEGORY_APPLICATION) and [SDL_LOG_PRIORITY_INFO](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_INFO).

    https://wiki.libsdl.org/SDL3/SDL_Log
    """
    return raw.SDL_Log(fmt, *args)

def SDL_LogTrace(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_TRACE](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_TRACE).

    https://wiki.libsdl.org/SDL3/SDL_LogTrace
    """
    return raw.SDL_LogTrace(category, fmt, *args)

def SDL_LogVerbose(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_VERBOSE](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_VERBOSE).

    https://wiki.libsdl.org/SDL3/SDL_LogVerbose
    """
    return raw.SDL_LogVerbose(category, fmt, *args)

def SDL_LogDebug(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_DEBUG](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_DEBUG).

    https://wiki.libsdl.org/SDL3/SDL_LogDebug
    """
    return raw.SDL_LogDebug(category, fmt, *args)

def SDL_LogInfo(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_INFO](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_INFO).

    https://wiki.libsdl.org/SDL3/SDL_LogInfo
    """
    return raw.SDL_LogInfo(category, fmt, *args)

def SDL_LogWarn(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_WARN](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_WARN).

    https://wiki.libsdl.org/SDL3/SDL_LogWarn
    """
    return raw.SDL_LogWarn(category, fmt, *args)

def SDL_LogError(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_ERROR](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_ERROR).

    https://wiki.libsdl.org/SDL3/SDL_LogError
    """
    return raw.SDL_LogError(category, fmt, *args)

def SDL_LogCritical(category: ctypes.c_int, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with [SDL_LOG_PRIORITY_CRITICAL](https://wiki.libsdl.org/SDL3/SDL_LOG_PRIORITY_CRITICAL).

    https://wiki.libsdl.org/SDL3/SDL_LogCritical
    """
    return raw.SDL_LogCritical(category, fmt, *args)

def SDL_LogMessage(category: ctypes.c_int, priority: SDL_LogPriority, fmt: ctypes.c_char_p, *args: typing.Any) -> None:
    """
    Log a message with the specified category and priority.

    https://wiki.libsdl.org/SDL3/SDL_LogMessage
    """
    return raw.SDL_LogMessage(category, priority, fmt, *args)

def SDL_LogMessageV(category: ctypes.c_int, priority: SDL_LogPriority, fmt: ctypes.c_char_p, ap: SDL_VA_LIST) -> None:
    """
    Log a message with the specified category and priority.

    https://wiki.libsdl.org/SDL3/SDL_LogMessageV
    """
    return raw.SDL_LogMessageV(category, priority, fmt, ap)

def SDL_GetDefaultLogOutputFunction() -> SDL_LogOutputFunction:
    """
    Get the default log output function.

    https://wiki.libsdl.org/SDL3/SDL_GetDefaultLogOutputFunction
    """
    return raw.SDL_GetDefaultLogOutputFunction()

def SDL_GetLogOutputFunction(callback: LP_SDL_LogOutputFunction, userdata: LP_c_void_p) -> None:
    """
    Get the current log output function.

    https://wiki.libsdl.org/SDL3/SDL_GetLogOutputFunction
    """
    return raw.SDL_GetLogOutputFunction(callback, userdata)

def SDL_SetLogOutputFunction(callback: SDL_LogOutputFunction, userdata: ctypes.c_void_p) -> None:
    """
    Replace the default log output function with one of your own.

    https://wiki.libsdl.org/SDL3/SDL_SetLogOutputFunction
    """
    return raw.SDL_SetLogOutputFunction(callback, userdata)

def SDL_SetMainReady() -> None:
    """
    Circumvent failure of [SDL_Init](https://wiki.libsdl.org/SDL3/SDL_Init)() when not using [SDL_main](https://wiki.libsdl.org/SDL3/SDL_main)() as an entry point.

    https://wiki.libsdl.org/SDL3/SDL_SetMainReady
    """
    return raw.SDL_SetMainReady()

def SDL_RunApp(argc: ctypes.c_int, argv: LP_c_char_p, mainFunction: SDL_main_func, reserved: ctypes.c_void_p) -> ctypes.c_int:
    """
    Initializes and launches an SDL application, by doing platform-specific initialization before calling your mainFunction and cleanups after it returns, if that is needed for a specific platform, otherwise it just calls mainFunction.

    https://wiki.libsdl.org/SDL3/SDL_RunApp
    """
    return raw.SDL_RunApp(argc, argv, mainFunction, reserved)

def SDL_EnterAppMainCallbacks(argc: ctypes.c_int, argv: LP_c_char_p, appinit: SDL_AppInit_func, appiter: SDL_AppIterate_func, appevent: SDL_AppEvent_func, appquit: SDL_AppQuit_func) -> ctypes.c_int:
    """
    An entry point for SDL's use in [SDL_MAIN_USE_CALLBACKS](https://wiki.libsdl.org/SDL3/SDL_MAIN_USE_CALLBACKS).

    https://wiki.libsdl.org/SDL3/SDL_EnterAppMainCallbacks
    """
    return raw.SDL_EnterAppMainCallbacks(argc, argv, appinit, appiter, appevent, appquit)

def SDL_ShowMessageBox(messageboxdata: LP_SDL_MessageBoxData, buttonid: LP_c_int) -> ctypes.c_bool:
    """
    Create a modal message box.

    https://wiki.libsdl.org/SDL3/SDL_ShowMessageBox
    """
    return raw.SDL_ShowMessageBox(messageboxdata, buttonid)

def SDL_ShowSimpleMessageBox(flags: SDL_MessageBoxFlags, title: ctypes.c_char_p, message: ctypes.c_char_p, window: LP_SDL_Window) -> ctypes.c_bool:
    """
    Display a simple modal message box.

    https://wiki.libsdl.org/SDL3/SDL_ShowSimpleMessageBox
    """
    return raw.SDL_ShowSimpleMessageBox(flags, title, message, window)

def SDL_Metal_CreateView(window: LP_SDL_Window) -> SDL_MetalView:
    """
    Create a CAMetalLayer-backed NSView/UIView and attach it to the specified window.

    https://wiki.libsdl.org/SDL3/SDL_Metal_CreateView
    """
    return raw.SDL_Metal_CreateView(window)

def SDL_Metal_DestroyView(view: SDL_MetalView) -> None:
    """
    Destroy an existing [SDL_MetalView](https://wiki.libsdl.org/SDL3/SDL_MetalView) object.

    https://wiki.libsdl.org/SDL3/SDL_Metal_DestroyView
    """
    return raw.SDL_Metal_DestroyView(view)

def SDL_Metal_GetLayer(view: SDL_MetalView) -> ctypes.c_void_p:
    """
    Get a pointer to the backing CAMetalLayer for the given view.

    https://wiki.libsdl.org/SDL3/SDL_Metal_GetLayer
    """
    return raw.SDL_Metal_GetLayer(view)

def SDL_OpenURL(url: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Open a URL/URI in the browser or other appropriate external application.

    https://wiki.libsdl.org/SDL3/SDL_OpenURL
    """
    return raw.SDL_OpenURL(url)

def SDL_CreateThreadRuntime(_0: SDL_ThreadFunction, _1: ctypes.c_char_p, _2: ctypes.c_void_p, _3: SDL_FunctionPointer, _4: SDL_FunctionPointer) -> LP_SDL_Thread:
    """

    https://wiki.libsdl.org/SDL3/SDL_CreateThreadRuntime
    """
    return raw.SDL_CreateThreadRuntime(_0, _1, _2, _3, _4)

def SDL_CreateThreadWithPropertiesRuntime(_0: SDL_PropertiesID, _1: SDL_FunctionPointer, _2: SDL_FunctionPointer) -> LP_SDL_Thread:
    """

    https://wiki.libsdl.org/SDL3/SDL_CreateThreadWithPropertiesRuntime
    """
    return raw.SDL_CreateThreadWithPropertiesRuntime(_0, _1, _2)

def SDL_GetThreadName(thread: LP_SDL_Thread) -> ctypes.c_char_p:
    """
    Get the thread name as it was specified in [SDL_CreateThread](https://wiki.libsdl.org/SDL3/SDL_CreateThread)().

    https://wiki.libsdl.org/SDL3/SDL_GetThreadName
    """
    return raw.SDL_GetThreadName(thread)

def SDL_GetCurrentThreadID() -> SDL_ThreadID:
    """
    Get the thread identifier for the current thread.

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentThreadID
    """
    return raw.SDL_GetCurrentThreadID()

def SDL_GetThreadID(thread: LP_SDL_Thread) -> SDL_ThreadID:
    """
    Get the thread identifier for the specified thread.

    https://wiki.libsdl.org/SDL3/SDL_GetThreadID
    """
    return raw.SDL_GetThreadID(thread)

def SDL_SetCurrentThreadPriority(priority: SDL_ThreadPriority) -> ctypes.c_bool:
    """
    Set the priority for the current thread.

    https://wiki.libsdl.org/SDL3/SDL_SetCurrentThreadPriority
    """
    return raw.SDL_SetCurrentThreadPriority(priority)

def SDL_WaitThread(thread: LP_SDL_Thread, status: LP_c_int) -> None:
    """
    Wait for a thread to finish.

    https://wiki.libsdl.org/SDL3/SDL_WaitThread
    """
    return raw.SDL_WaitThread(thread, status)

def SDL_GetThreadState(thread: LP_SDL_Thread) -> SDL_ThreadState:
    """
    Get the current state of a thread.

    https://wiki.libsdl.org/SDL3/SDL_GetThreadState
    """
    return raw.SDL_GetThreadState(thread)

def SDL_DetachThread(thread: LP_SDL_Thread) -> None:
    """
    Let a thread clean up on exit without intervention.

    https://wiki.libsdl.org/SDL3/SDL_DetachThread
    """
    return raw.SDL_DetachThread(thread)

def SDL_GetTLS(id: LP_SDL_TLSID) -> ctypes.c_void_p:
    """
    Get the current thread's value associated with a thread local storage ID.

    https://wiki.libsdl.org/SDL3/SDL_GetTLS
    """
    return raw.SDL_GetTLS(id)

def SDL_SetTLS(id: LP_SDL_TLSID, value: ctypes.c_void_p, destructor: SDL_TLSDestructorCallback) -> ctypes.c_bool:
    """
    Set the current thread's value associated with a thread local storage ID.

    https://wiki.libsdl.org/SDL3/SDL_SetTLS
    """
    return raw.SDL_SetTLS(id, value, destructor)

def SDL_CleanupTLS() -> None:
    """
    Cleanup all TLS data for this thread.

    https://wiki.libsdl.org/SDL3/SDL_CleanupTLS
    """
    return raw.SDL_CleanupTLS()

def SDL_CreateMutex() -> LP_SDL_Mutex:
    """
    Create a new mutex.

    https://wiki.libsdl.org/SDL3/SDL_CreateMutex
    """
    return raw.SDL_CreateMutex()

def SDL_LockMutex(mutex: LP_SDL_Mutex) -> None:
    """
    Lock the mutex.

    https://wiki.libsdl.org/SDL3/SDL_LockMutex
    """
    return raw.SDL_LockMutex(mutex)

def SDL_TryLockMutex(mutex: LP_SDL_Mutex) -> ctypes.c_bool:
    """
    Try to lock a mutex without blocking.

    https://wiki.libsdl.org/SDL3/SDL_TryLockMutex
    """
    return raw.SDL_TryLockMutex(mutex)

def SDL_UnlockMutex(mutex: LP_SDL_Mutex) -> None:
    """
    Unlock the mutex.

    https://wiki.libsdl.org/SDL3/SDL_UnlockMutex
    """
    return raw.SDL_UnlockMutex(mutex)

def SDL_DestroyMutex(mutex: LP_SDL_Mutex) -> None:
    """
    Destroy a mutex created with [SDL_CreateMutex](https://wiki.libsdl.org/SDL3/SDL_CreateMutex)().

    https://wiki.libsdl.org/SDL3/SDL_DestroyMutex
    """
    return raw.SDL_DestroyMutex(mutex)

def SDL_CreateRWLock() -> LP_SDL_RWLock:
    """
    Create a new read/write lock.

    https://wiki.libsdl.org/SDL3/SDL_CreateRWLock
    """
    return raw.SDL_CreateRWLock()

def SDL_LockRWLockForReading(rwlock: LP_SDL_RWLock) -> None:
    """
    Lock the read/write lock for *read only* operations.

    https://wiki.libsdl.org/SDL3/SDL_LockRWLockForReading
    """
    return raw.SDL_LockRWLockForReading(rwlock)

def SDL_LockRWLockForWriting(rwlock: LP_SDL_RWLock) -> None:
    """
    Lock the read/write lock for *write* operations.

    https://wiki.libsdl.org/SDL3/SDL_LockRWLockForWriting
    """
    return raw.SDL_LockRWLockForWriting(rwlock)

def SDL_TryLockRWLockForReading(rwlock: LP_SDL_RWLock) -> ctypes.c_bool:
    """
    Try to lock a read/write lock *for reading* without blocking.

    https://wiki.libsdl.org/SDL3/SDL_TryLockRWLockForReading
    """
    return raw.SDL_TryLockRWLockForReading(rwlock)

def SDL_TryLockRWLockForWriting(rwlock: LP_SDL_RWLock) -> ctypes.c_bool:
    """
    Try to lock a read/write lock *for writing* without blocking.

    https://wiki.libsdl.org/SDL3/SDL_TryLockRWLockForWriting
    """
    return raw.SDL_TryLockRWLockForWriting(rwlock)

def SDL_UnlockRWLock(rwlock: LP_SDL_RWLock) -> None:
    """
    Unlock the read/write lock.

    https://wiki.libsdl.org/SDL3/SDL_UnlockRWLock
    """
    return raw.SDL_UnlockRWLock(rwlock)

def SDL_DestroyRWLock(rwlock: LP_SDL_RWLock) -> None:
    """
    Destroy a read/write lock created with [SDL_CreateRWLock](https://wiki.libsdl.org/SDL3/SDL_CreateRWLock)().

    https://wiki.libsdl.org/SDL3/SDL_DestroyRWLock
    """
    return raw.SDL_DestroyRWLock(rwlock)

def SDL_CreateSemaphore(initial_value: ctypes.c_uint32) -> LP_SDL_Semaphore:
    """
    Create a semaphore.

    https://wiki.libsdl.org/SDL3/SDL_CreateSemaphore
    """
    return raw.SDL_CreateSemaphore(initial_value)

def SDL_DestroySemaphore(sem: LP_SDL_Semaphore) -> None:
    """
    Destroy a semaphore.

    https://wiki.libsdl.org/SDL3/SDL_DestroySemaphore
    """
    return raw.SDL_DestroySemaphore(sem)

def SDL_WaitSemaphore(sem: LP_SDL_Semaphore) -> None:
    """
    Wait until a semaphore has a positive value and then decrements it.

    https://wiki.libsdl.org/SDL3/SDL_WaitSemaphore
    """
    return raw.SDL_WaitSemaphore(sem)

def SDL_TryWaitSemaphore(sem: LP_SDL_Semaphore) -> ctypes.c_bool:
    """
    See if a semaphore has a positive value and decrement it if it does.

    https://wiki.libsdl.org/SDL3/SDL_TryWaitSemaphore
    """
    return raw.SDL_TryWaitSemaphore(sem)

def SDL_WaitSemaphoreTimeout(sem: LP_SDL_Semaphore, timeoutMS: ctypes.c_int32) -> ctypes.c_bool:
    """
    Wait until a semaphore has a positive value and then decrements it.

    https://wiki.libsdl.org/SDL3/SDL_WaitSemaphoreTimeout
    """
    return raw.SDL_WaitSemaphoreTimeout(sem, timeoutMS)

def SDL_SignalSemaphore(sem: LP_SDL_Semaphore) -> None:
    """
    Atomically increment a semaphore's value and wake waiting threads.

    https://wiki.libsdl.org/SDL3/SDL_SignalSemaphore
    """
    return raw.SDL_SignalSemaphore(sem)

def SDL_GetSemaphoreValue(sem: LP_SDL_Semaphore) -> ctypes.c_uint32:
    """
    Get the current value of a semaphore.

    https://wiki.libsdl.org/SDL3/SDL_GetSemaphoreValue
    """
    return raw.SDL_GetSemaphoreValue(sem)

def SDL_CreateCondition() -> LP_SDL_Condition:
    """
    Create a condition variable.

    https://wiki.libsdl.org/SDL3/SDL_CreateCondition
    """
    return raw.SDL_CreateCondition()

def SDL_DestroyCondition(cond: LP_SDL_Condition) -> None:
    """
    Destroy a condition variable.

    https://wiki.libsdl.org/SDL3/SDL_DestroyCondition
    """
    return raw.SDL_DestroyCondition(cond)

def SDL_SignalCondition(cond: LP_SDL_Condition) -> None:
    """
    Restart one of the threads that are waiting on the condition variable.

    https://wiki.libsdl.org/SDL3/SDL_SignalCondition
    """
    return raw.SDL_SignalCondition(cond)

def SDL_BroadcastCondition(cond: LP_SDL_Condition) -> None:
    """
    Restart all threads that are waiting on the condition variable.

    https://wiki.libsdl.org/SDL3/SDL_BroadcastCondition
    """
    return raw.SDL_BroadcastCondition(cond)

def SDL_WaitCondition(cond: LP_SDL_Condition, mutex: LP_SDL_Mutex) -> None:
    """
    Wait until a condition variable is signaled.

    https://wiki.libsdl.org/SDL3/SDL_WaitCondition
    """
    return raw.SDL_WaitCondition(cond, mutex)

def SDL_WaitConditionTimeout(cond: LP_SDL_Condition, mutex: LP_SDL_Mutex, timeoutMS: ctypes.c_int32) -> ctypes.c_bool:
    """
    Wait until a condition variable is signaled or a certain time has passed.

    https://wiki.libsdl.org/SDL3/SDL_WaitConditionTimeout
    """
    return raw.SDL_WaitConditionTimeout(cond, mutex, timeoutMS)

def SDL_ShouldInit(state: LP_SDL_InitState) -> ctypes.c_bool:
    """
    Return whether initialization should be done.

    https://wiki.libsdl.org/SDL3/SDL_ShouldInit
    """
    return raw.SDL_ShouldInit(state)

def SDL_ShouldQuit(state: LP_SDL_InitState) -> ctypes.c_bool:
    """
    Return whether cleanup should be done.

    https://wiki.libsdl.org/SDL3/SDL_ShouldQuit
    """
    return raw.SDL_ShouldQuit(state)

def SDL_SetInitialized(state: LP_SDL_InitState, initialized: ctypes.c_bool) -> None:
    """
    Finish an initialization state transition.

    https://wiki.libsdl.org/SDL3/SDL_SetInitialized
    """
    return raw.SDL_SetInitialized(state, initialized)

def SDL_GetPlatform() -> ctypes.c_char_p:
    """
    Get the name of the platform.

    https://wiki.libsdl.org/SDL3/SDL_GetPlatform
    """
    return raw.SDL_GetPlatform()

def SDL_CreateProcess(args: LP_c_char_p, pipe_stdio: ctypes.c_bool) -> LP_SDL_Process:
    """
    Create a new process.

    https://wiki.libsdl.org/SDL3/SDL_CreateProcess
    """
    return raw.SDL_CreateProcess(args, pipe_stdio)

def SDL_CreateProcessWithProperties(props: SDL_PropertiesID) -> LP_SDL_Process:
    """
    Create a new process with the specified properties.

    https://wiki.libsdl.org/SDL3/SDL_CreateProcessWithProperties
    """
    return raw.SDL_CreateProcessWithProperties(props)

def SDL_GetProcessProperties(process: LP_SDL_Process) -> SDL_PropertiesID:
    """
    Get the properties associated with a process.

    https://wiki.libsdl.org/SDL3/SDL_GetProcessProperties
    """
    return raw.SDL_GetProcessProperties(process)

def SDL_ReadProcess(process: LP_SDL_Process, datasize: LP_c_size_t, exitcode: LP_c_int) -> ctypes.c_void_p:
    """
    Read all the output from a process.

    https://wiki.libsdl.org/SDL3/SDL_ReadProcess
    """
    return raw.SDL_ReadProcess(process, datasize, exitcode)

def SDL_GetProcessInput(process: LP_SDL_Process) -> LP_SDL_IOStream:
    """
    Get the [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) associated with process standard input.

    https://wiki.libsdl.org/SDL3/SDL_GetProcessInput
    """
    return raw.SDL_GetProcessInput(process)

def SDL_GetProcessOutput(process: LP_SDL_Process) -> LP_SDL_IOStream:
    """
    Get the [SDL_IOStream](https://wiki.libsdl.org/SDL3/SDL_IOStream) associated with process standard output.

    https://wiki.libsdl.org/SDL3/SDL_GetProcessOutput
    """
    return raw.SDL_GetProcessOutput(process)

def SDL_KillProcess(process: LP_SDL_Process, force: ctypes.c_bool) -> ctypes.c_bool:
    """
    Stop a process.

    https://wiki.libsdl.org/SDL3/SDL_KillProcess
    """
    return raw.SDL_KillProcess(process, force)

def SDL_WaitProcess(process: LP_SDL_Process, block: ctypes.c_bool, exitcode: LP_c_int) -> ctypes.c_bool:
    """
    Wait for a process to finish.

    https://wiki.libsdl.org/SDL3/SDL_WaitProcess
    """
    return raw.SDL_WaitProcess(process, block, exitcode)

def SDL_DestroyProcess(process: LP_SDL_Process) -> None:
    """
    Destroy a previously created process object.

    https://wiki.libsdl.org/SDL3/SDL_DestroyProcess
    """
    return raw.SDL_DestroyProcess(process)

def SDL_OpenTitleStorage(override: ctypes.c_char_p, props: SDL_PropertiesID) -> LP_SDL_Storage:
    """
    Opens up a read-only container for the application's filesystem.

    https://wiki.libsdl.org/SDL3/SDL_OpenTitleStorage
    """
    return raw.SDL_OpenTitleStorage(override, props)

def SDL_OpenUserStorage(org: ctypes.c_char_p, app: ctypes.c_char_p, props: SDL_PropertiesID) -> LP_SDL_Storage:
    """
    Opens up a container for a user's unique read/write filesystem.

    https://wiki.libsdl.org/SDL3/SDL_OpenUserStorage
    """
    return raw.SDL_OpenUserStorage(org, app, props)

def SDL_OpenFileStorage(path: ctypes.c_char_p) -> LP_SDL_Storage:
    """
    Opens up a container for local filesystem storage.

    https://wiki.libsdl.org/SDL3/SDL_OpenFileStorage
    """
    return raw.SDL_OpenFileStorage(path)

def SDL_OpenStorage(iface: LP_SDL_StorageInterface, userdata: ctypes.c_void_p) -> LP_SDL_Storage:
    """
    Opens up a container using a client-provided storage interface.

    https://wiki.libsdl.org/SDL3/SDL_OpenStorage
    """
    return raw.SDL_OpenStorage(iface, userdata)

def SDL_CloseStorage(storage: LP_SDL_Storage) -> ctypes.c_bool:
    """
    Closes and frees a storage container.

    https://wiki.libsdl.org/SDL3/SDL_CloseStorage
    """
    return raw.SDL_CloseStorage(storage)

def SDL_StorageReady(storage: LP_SDL_Storage) -> ctypes.c_bool:
    """
    Checks if the storage container is ready to use.

    https://wiki.libsdl.org/SDL3/SDL_StorageReady
    """
    return raw.SDL_StorageReady(storage)

def SDL_GetStorageFileSize(storage: LP_SDL_Storage, path: ctypes.c_char_p, length: LP_c_uint64) -> ctypes.c_bool:
    """
    Query the size of a file within a storage container.

    https://wiki.libsdl.org/SDL3/SDL_GetStorageFileSize
    """
    return raw.SDL_GetStorageFileSize(storage, path, length)

def SDL_ReadStorageFile(storage: LP_SDL_Storage, path: ctypes.c_char_p, destination: ctypes.c_void_p, length: ctypes.c_uint64) -> ctypes.c_bool:
    """
    Synchronously read a file from a storage container into a client-provided buffer.

    https://wiki.libsdl.org/SDL3/SDL_ReadStorageFile
    """
    return raw.SDL_ReadStorageFile(storage, path, destination, length)

def SDL_WriteStorageFile(storage: LP_SDL_Storage, path: ctypes.c_char_p, source: ctypes.c_void_p, length: ctypes.c_uint64) -> ctypes.c_bool:
    """
    Synchronously write a file from client memory into a storage container.

    https://wiki.libsdl.org/SDL3/SDL_WriteStorageFile
    """
    return raw.SDL_WriteStorageFile(storage, path, source, length)

def SDL_CreateStorageDirectory(storage: LP_SDL_Storage, path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Create a directory in a writable storage container.

    https://wiki.libsdl.org/SDL3/SDL_CreateStorageDirectory
    """
    return raw.SDL_CreateStorageDirectory(storage, path)

def SDL_EnumerateStorageDirectory(storage: LP_SDL_Storage, path: ctypes.c_char_p, callback: SDL_EnumerateDirectoryCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Enumerate a directory in a storage container through a callback function.

    https://wiki.libsdl.org/SDL3/SDL_EnumerateStorageDirectory
    """
    return raw.SDL_EnumerateStorageDirectory(storage, path, callback, userdata)

def SDL_RemoveStoragePath(storage: LP_SDL_Storage, path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Remove a file or an empty directory in a writable storage container.

    https://wiki.libsdl.org/SDL3/SDL_RemoveStoragePath
    """
    return raw.SDL_RemoveStoragePath(storage, path)

def SDL_RenameStoragePath(storage: LP_SDL_Storage, oldpath: ctypes.c_char_p, newpath: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Rename a file or directory in a writable storage container.

    https://wiki.libsdl.org/SDL3/SDL_RenameStoragePath
    """
    return raw.SDL_RenameStoragePath(storage, oldpath, newpath)

def SDL_CopyStorageFile(storage: LP_SDL_Storage, oldpath: ctypes.c_char_p, newpath: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Copy a file in a writable storage container.

    https://wiki.libsdl.org/SDL3/SDL_CopyStorageFile
    """
    return raw.SDL_CopyStorageFile(storage, oldpath, newpath)

def SDL_GetStoragePathInfo(storage: LP_SDL_Storage, path: ctypes.c_char_p, info: LP_SDL_PathInfo) -> ctypes.c_bool:
    """
    Get information about a filesystem path in a storage container.

    https://wiki.libsdl.org/SDL3/SDL_GetStoragePathInfo
    """
    return raw.SDL_GetStoragePathInfo(storage, path, info)

def SDL_GetStorageSpaceRemaining(storage: LP_SDL_Storage) -> ctypes.c_uint64:
    """
    Queries the remaining space in a storage container.

    https://wiki.libsdl.org/SDL3/SDL_GetStorageSpaceRemaining
    """
    return raw.SDL_GetStorageSpaceRemaining(storage)

def SDL_GlobStorageDirectory(storage: LP_SDL_Storage, path: ctypes.c_char_p, pattern: ctypes.c_char_p, flags: SDL_GlobFlags, count: LP_c_int) -> LP_c_char_p:
    """
    Enumerate a directory tree, filtered by pattern, and return a list.

    https://wiki.libsdl.org/SDL3/SDL_GlobStorageDirectory
    """
    return raw.SDL_GlobStorageDirectory(storage, path, pattern, flags, count)

def SDL_SetLinuxThreadPriority(threadID: ctypes.c_int64, priority: ctypes.c_int) -> ctypes.c_bool:
    """
    Sets the UNIX nice value for a thread.

    https://wiki.libsdl.org/SDL3/SDL_SetLinuxThreadPriority
    """
    return raw.SDL_SetLinuxThreadPriority(threadID, priority)

def SDL_SetLinuxThreadPriorityAndPolicy(threadID: ctypes.c_int64, sdlPriority: ctypes.c_int, schedPolicy: ctypes.c_int) -> ctypes.c_bool:
    """
    Sets the priority (not nice level) and scheduling policy for a thread.

    https://wiki.libsdl.org/SDL3/SDL_SetLinuxThreadPriorityAndPolicy
    """
    return raw.SDL_SetLinuxThreadPriorityAndPolicy(threadID, sdlPriority, schedPolicy)

def SDL_IsTablet() -> ctypes.c_bool:
    """
    Query if the current device is a tablet.

    https://wiki.libsdl.org/SDL3/SDL_IsTablet
    """
    return raw.SDL_IsTablet()

def SDL_IsTV() -> ctypes.c_bool:
    """
    Query if the current device is a TV.

    https://wiki.libsdl.org/SDL3/SDL_IsTV
    """
    return raw.SDL_IsTV()

def SDL_GetSandbox() -> SDL_Sandbox:
    """
    Get the application sandbox environment, if any.

    https://wiki.libsdl.org/SDL3/SDL_GetSandbox
    """
    return raw.SDL_GetSandbox()

def SDL_OnApplicationWillTerminate() -> None:
    """
    Let iOS apps with external event handling report onApplicationWillTerminate.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationWillTerminate
    """
    return raw.SDL_OnApplicationWillTerminate()

def SDL_OnApplicationDidReceiveMemoryWarning() -> None:
    """
    Let iOS apps with external event handling report onApplicationDidReceiveMemoryWarning.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationDidReceiveMemoryWarning
    """
    return raw.SDL_OnApplicationDidReceiveMemoryWarning()

def SDL_OnApplicationWillEnterBackground() -> None:
    """
    Let iOS apps with external event handling report onApplicationWillResignActive.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationWillEnterBackground
    """
    return raw.SDL_OnApplicationWillEnterBackground()

def SDL_OnApplicationDidEnterBackground() -> None:
    """
    Let iOS apps with external event handling report onApplicationDidEnterBackground.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationDidEnterBackground
    """
    return raw.SDL_OnApplicationDidEnterBackground()

def SDL_OnApplicationWillEnterForeground() -> None:
    """
    Let iOS apps with external event handling report onApplicationWillEnterForeground.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationWillEnterForeground
    """
    return raw.SDL_OnApplicationWillEnterForeground()

def SDL_OnApplicationDidEnterForeground() -> None:
    """
    Let iOS apps with external event handling report onApplicationDidBecomeActive.

    https://wiki.libsdl.org/SDL3/SDL_OnApplicationDidEnterForeground
    """
    return raw.SDL_OnApplicationDidEnterForeground()

def SDL_GetDateTimeLocalePreferences(dateFormat: LP_SDL_DateFormat, timeFormat: LP_SDL_TimeFormat) -> ctypes.c_bool:
    """
    Gets the current preferred date and time format for the system locale.

    https://wiki.libsdl.org/SDL3/SDL_GetDateTimeLocalePreferences
    """
    return raw.SDL_GetDateTimeLocalePreferences(dateFormat, timeFormat)

def SDL_GetCurrentTime(ticks: LP_SDL_Time) -> ctypes.c_bool:
    """
    Gets the current value of the system realtime clock in nanoseconds since Jan 1, 1970 in Universal Coordinated Time (UTC).

    https://wiki.libsdl.org/SDL3/SDL_GetCurrentTime
    """
    return raw.SDL_GetCurrentTime(ticks)

def SDL_TimeToDateTime(ticks: SDL_Time, dt: LP_SDL_DateTime, localTime: ctypes.c_bool) -> ctypes.c_bool:
    """
    Converts an [SDL_Time](https://wiki.libsdl.org/SDL3/SDL_Time) in nanoseconds since the epoch to a calendar time in the [SDL_DateTime](https://wiki.libsdl.org/SDL3/SDL_DateTime) format.

    https://wiki.libsdl.org/SDL3/SDL_TimeToDateTime
    """
    return raw.SDL_TimeToDateTime(ticks, dt, localTime)

def SDL_DateTimeToTime(dt: LP_SDL_DateTime, ticks: LP_SDL_Time) -> ctypes.c_bool:
    """
    Converts a calendar time to an [SDL_Time](https://wiki.libsdl.org/SDL3/SDL_Time) in nanoseconds since the epoch.

    https://wiki.libsdl.org/SDL3/SDL_DateTimeToTime
    """
    return raw.SDL_DateTimeToTime(dt, ticks)

def SDL_TimeToWindows(ticks: SDL_Time, dwLowDateTime: LP_c_uint32, dwHighDateTime: LP_c_uint32) -> None:
    """
    Converts an SDL time into a Windows FILETIME (100-nanosecond intervals since January 1, 1601).

    https://wiki.libsdl.org/SDL3/SDL_TimeToWindows
    """
    return raw.SDL_TimeToWindows(ticks, dwLowDateTime, dwHighDateTime)

def SDL_TimeFromWindows(dwLowDateTime: ctypes.c_uint32, dwHighDateTime: ctypes.c_uint32) -> SDL_Time:
    """
    Converts a Windows FILETIME (100-nanosecond intervals since January 1, 1601) to an SDL time.

    https://wiki.libsdl.org/SDL3/SDL_TimeFromWindows
    """
    return raw.SDL_TimeFromWindows(dwLowDateTime, dwHighDateTime)

def SDL_GetDaysInMonth(year: ctypes.c_int, month: ctypes.c_int) -> ctypes.c_int:
    """
    Get the number of days in a month for a given year.

    https://wiki.libsdl.org/SDL3/SDL_GetDaysInMonth
    """
    return raw.SDL_GetDaysInMonth(year, month)

def SDL_GetDayOfYear(year: ctypes.c_int, month: ctypes.c_int, day: ctypes.c_int) -> ctypes.c_int:
    """
    Get the day of year for a calendar date.

    https://wiki.libsdl.org/SDL3/SDL_GetDayOfYear
    """
    return raw.SDL_GetDayOfYear(year, month, day)

def SDL_GetDayOfWeek(year: ctypes.c_int, month: ctypes.c_int, day: ctypes.c_int) -> ctypes.c_int:
    """
    Get the day of week for a calendar date.

    https://wiki.libsdl.org/SDL3/SDL_GetDayOfWeek
    """
    return raw.SDL_GetDayOfWeek(year, month, day)

def SDL_GetTicks() -> ctypes.c_uint64:
    """
    Get the number of milliseconds that have elapsed since the SDL library initialization.

    https://wiki.libsdl.org/SDL3/SDL_GetTicks
    """
    return raw.SDL_GetTicks()

def SDL_GetTicksNS() -> ctypes.c_uint64:
    """
    Get the number of nanoseconds since SDL library initialization.

    https://wiki.libsdl.org/SDL3/SDL_GetTicksNS
    """
    return raw.SDL_GetTicksNS()

def SDL_GetPerformanceCounter() -> ctypes.c_uint64:
    """
    Get the current value of the high resolution counter.

    https://wiki.libsdl.org/SDL3/SDL_GetPerformanceCounter
    """
    return raw.SDL_GetPerformanceCounter()

def SDL_GetPerformanceFrequency() -> ctypes.c_uint64:
    """
    Get the count per second of the high resolution counter.

    https://wiki.libsdl.org/SDL3/SDL_GetPerformanceFrequency
    """
    return raw.SDL_GetPerformanceFrequency()

def SDL_Delay(ms: ctypes.c_uint32) -> None:
    """
    Wait a specified number of milliseconds before returning.

    https://wiki.libsdl.org/SDL3/SDL_Delay
    """
    return raw.SDL_Delay(ms)

def SDL_DelayNS(ns: ctypes.c_uint64) -> None:
    """
    Wait a specified number of nanoseconds before returning.

    https://wiki.libsdl.org/SDL3/SDL_DelayNS
    """
    return raw.SDL_DelayNS(ns)

def SDL_DelayPrecise(ns: ctypes.c_uint64) -> None:
    """
    Wait a specified number of nanoseconds before returning.

    https://wiki.libsdl.org/SDL3/SDL_DelayPrecise
    """
    return raw.SDL_DelayPrecise(ns)

def SDL_AddTimer(interval: ctypes.c_uint32, callback: SDL_TimerCallback, userdata: ctypes.c_void_p) -> SDL_TimerID:
    """
    Call a callback function at a future time.

    https://wiki.libsdl.org/SDL3/SDL_AddTimer
    """
    return raw.SDL_AddTimer(interval, callback, userdata)

def SDL_AddTimerNS(interval: ctypes.c_uint64, callback: SDL_NSTimerCallback, userdata: ctypes.c_void_p) -> SDL_TimerID:
    """
    Call a callback function at a future time.

    https://wiki.libsdl.org/SDL3/SDL_AddTimerNS
    """
    return raw.SDL_AddTimerNS(interval, callback, userdata)

def SDL_RemoveTimer(id: SDL_TimerID) -> ctypes.c_bool:
    """
    Remove a timer created with [SDL_AddTimer](https://wiki.libsdl.org/SDL3/SDL_AddTimer)().

    https://wiki.libsdl.org/SDL3/SDL_RemoveTimer
    """
    return raw.SDL_RemoveTimer(id)

def SDL_CreateTray(icon: LP_SDL_Surface, tooltip: ctypes.c_char_p) -> LP_SDL_Tray:
    """
    Create an icon to be placed in the operating system's tray, or equivalent.

    https://wiki.libsdl.org/SDL3/SDL_CreateTray
    """
    return raw.SDL_CreateTray(icon, tooltip)

def SDL_SetTrayIcon(tray: LP_SDL_Tray, icon: LP_SDL_Surface) -> None:
    """
    Updates the system tray icon's icon.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayIcon
    """
    return raw.SDL_SetTrayIcon(tray, icon)

def SDL_SetTrayTooltip(tray: LP_SDL_Tray, tooltip: ctypes.c_char_p) -> None:
    """
    Updates the system tray icon's tooltip.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayTooltip
    """
    return raw.SDL_SetTrayTooltip(tray, tooltip)

def SDL_CreateTrayMenu(tray: LP_SDL_Tray) -> LP_SDL_TrayMenu:
    """
    Create a menu for a system tray.

    https://wiki.libsdl.org/SDL3/SDL_CreateTrayMenu
    """
    return raw.SDL_CreateTrayMenu(tray)

def SDL_CreateTraySubmenu(entry: LP_SDL_TrayEntry) -> LP_SDL_TrayMenu:
    """
    Create a submenu for a system tray entry.

    https://wiki.libsdl.org/SDL3/SDL_CreateTraySubmenu
    """
    return raw.SDL_CreateTraySubmenu(entry)

def SDL_GetTrayMenu(tray: LP_SDL_Tray) -> LP_SDL_TrayMenu:
    """
    Gets a previously created tray menu.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayMenu
    """
    return raw.SDL_GetTrayMenu(tray)

def SDL_GetTraySubmenu(entry: LP_SDL_TrayEntry) -> LP_SDL_TrayMenu:
    """
    Gets a previously created tray entry submenu.

    https://wiki.libsdl.org/SDL3/SDL_GetTraySubmenu
    """
    return raw.SDL_GetTraySubmenu(entry)

def SDL_GetTrayEntries(menu: LP_SDL_TrayMenu, count: LP_c_int) -> LP_LP_SDL_TrayEntry:
    """
    Returns a list of entries in the menu, in order.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayEntries
    """
    return raw.SDL_GetTrayEntries(menu, count)

def SDL_RemoveTrayEntry(entry: LP_SDL_TrayEntry) -> None:
    """
    Removes a tray entry.

    https://wiki.libsdl.org/SDL3/SDL_RemoveTrayEntry
    """
    return raw.SDL_RemoveTrayEntry(entry)

def SDL_InsertTrayEntryAt(menu: LP_SDL_TrayMenu, pos: ctypes.c_int, label: ctypes.c_char_p, flags: SDL_TrayEntryFlags) -> LP_SDL_TrayEntry:
    """
    Insert a tray entry at a given position.

    https://wiki.libsdl.org/SDL3/SDL_InsertTrayEntryAt
    """
    return raw.SDL_InsertTrayEntryAt(menu, pos, label, flags)

def SDL_SetTrayEntryLabel(entry: LP_SDL_TrayEntry, label: ctypes.c_char_p) -> None:
    """
    Sets the label of an entry.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayEntryLabel
    """
    return raw.SDL_SetTrayEntryLabel(entry, label)

def SDL_GetTrayEntryLabel(entry: LP_SDL_TrayEntry) -> ctypes.c_char_p:
    """
    Gets the label of an entry.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayEntryLabel
    """
    return raw.SDL_GetTrayEntryLabel(entry)

def SDL_SetTrayEntryChecked(entry: LP_SDL_TrayEntry, checked: ctypes.c_bool) -> None:
    """
    Sets whether or not an entry is checked.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayEntryChecked
    """
    return raw.SDL_SetTrayEntryChecked(entry, checked)

def SDL_GetTrayEntryChecked(entry: LP_SDL_TrayEntry) -> ctypes.c_bool:
    """
    Gets whether or not an entry is checked.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayEntryChecked
    """
    return raw.SDL_GetTrayEntryChecked(entry)

def SDL_SetTrayEntryEnabled(entry: LP_SDL_TrayEntry, enabled: ctypes.c_bool) -> None:
    """
    Sets whether or not an entry is enabled.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayEntryEnabled
    """
    return raw.SDL_SetTrayEntryEnabled(entry, enabled)

def SDL_GetTrayEntryEnabled(entry: LP_SDL_TrayEntry) -> ctypes.c_bool:
    """
    Gets whether or not an entry is enabled.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayEntryEnabled
    """
    return raw.SDL_GetTrayEntryEnabled(entry)

def SDL_SetTrayEntryCallback(entry: LP_SDL_TrayEntry, callback: SDL_TrayCallback, userdata: ctypes.c_void_p) -> None:
    """
    Sets a callback to be invoked when the entry is selected.

    https://wiki.libsdl.org/SDL3/SDL_SetTrayEntryCallback
    """
    return raw.SDL_SetTrayEntryCallback(entry, callback, userdata)

def SDL_ClickTrayEntry(entry: LP_SDL_TrayEntry) -> None:
    """
    Simulate a click on a tray entry.

    https://wiki.libsdl.org/SDL3/SDL_ClickTrayEntry
    """
    return raw.SDL_ClickTrayEntry(entry)

def SDL_DestroyTray(tray: LP_SDL_Tray) -> None:
    """
    Destroys a tray object.

    https://wiki.libsdl.org/SDL3/SDL_DestroyTray
    """
    return raw.SDL_DestroyTray(tray)

def SDL_GetTrayEntryParent(entry: LP_SDL_TrayEntry) -> LP_SDL_TrayMenu:
    """
    Gets the menu containing a certain tray entry.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayEntryParent
    """
    return raw.SDL_GetTrayEntryParent(entry)

def SDL_GetTrayMenuParentEntry(menu: LP_SDL_TrayMenu) -> LP_SDL_TrayEntry:
    """
    Gets the entry for which the menu is a submenu, if the current menu is a submenu.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayMenuParentEntry
    """
    return raw.SDL_GetTrayMenuParentEntry(menu)

def SDL_GetTrayMenuParentTray(menu: LP_SDL_TrayMenu) -> LP_SDL_Tray:
    """
    Gets the tray for which this menu is the first-level menu, if the current menu isn't a submenu.

    https://wiki.libsdl.org/SDL3/SDL_GetTrayMenuParentTray
    """
    return raw.SDL_GetTrayMenuParentTray(menu)

def SDL_UpdateTrays() -> None:
    """
    Update the trays.

    https://wiki.libsdl.org/SDL3/SDL_UpdateTrays
    """
    return raw.SDL_UpdateTrays()

def SDL_Vulkan_LoadLibrary(path: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Dynamically load the Vulkan loader library.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_LoadLibrary
    """
    return raw.SDL_Vulkan_LoadLibrary(path)

def SDL_Vulkan_GetVkGetInstanceProcAddr() -> SDL_FunctionPointer:
    """
    Get the address of the ``vkGetInstanceProcAddr`` function.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_GetVkGetInstanceProcAddr
    """
    return raw.SDL_Vulkan_GetVkGetInstanceProcAddr()

def SDL_Vulkan_UnloadLibrary() -> None:
    """
    Unload the Vulkan library previously loaded by [SDL_Vulkan_LoadLibrary](https://wiki.libsdl.org/SDL3/SDL_Vulkan_LoadLibrary)().

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_UnloadLibrary
    """
    return raw.SDL_Vulkan_UnloadLibrary()

def SDL_Vulkan_GetInstanceExtensions(count: LP_c_uint32) -> LP_c_char_p:
    """
    Get the Vulkan instance extensions needed for vkCreateInstance.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_GetInstanceExtensions
    """
    return raw.SDL_Vulkan_GetInstanceExtensions(count)

def SDL_Vulkan_CreateSurface(window: LP_SDL_Window, instance: VkInstance, allocator: LP_VkAllocationCallbacks, surface: LP_VkSurfaceKHR) -> ctypes.c_bool:
    """
    Create a Vulkan rendering surface for a window.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_CreateSurface
    """
    return raw.SDL_Vulkan_CreateSurface(window, instance, allocator, surface)

def SDL_Vulkan_DestroySurface(instance: VkInstance, surface: VkSurfaceKHR, allocator: LP_VkAllocationCallbacks) -> None:
    """
    Destroy the Vulkan rendering surface of a window.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_DestroySurface
    """
    return raw.SDL_Vulkan_DestroySurface(instance, surface, allocator)

def SDL_Vulkan_GetPresentationSupport(instance: VkInstance, physicalDevice: VkPhysicalDevice, queueFamilyIndex: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Query support for presentation via a given physical device and queue family.

    https://wiki.libsdl.org/SDL3/SDL_Vulkan_GetPresentationSupport
    """
    return raw.SDL_Vulkan_GetPresentationSupport(instance, physicalDevice, queueFamilyIndex)

# libSDL3_image.so implementation.

def IMG_Version() -> ctypes.c_int:
    """
    This function gets the version of the dynamically linked SDL_image library.

    https://wiki.libsdl.org/SDL3_image/IMG_Version
    """
    return raw.IMG_Version()

def IMG_LoadTyped_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool, type: ctypes.c_char_p) -> LP_SDL_Surface:
    """
    Load an image from an SDL data source into a software surface.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTyped_IO
    """
    return raw.IMG_LoadTyped_IO(src, closeio, type)

def IMG_Load(file: ctypes.c_char_p) -> LP_SDL_Surface:
    """
    Load an image from a filesystem path into a software surface.

    https://wiki.libsdl.org/SDL3_image/IMG_Load
    """
    return raw.IMG_Load(file)

def IMG_Load_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_SDL_Surface:
    """
    Load an image from an SDL data source into a software surface.

    https://wiki.libsdl.org/SDL3_image/IMG_Load_IO
    """
    return raw.IMG_Load_IO(src, closeio)

def IMG_LoadTexture(renderer: LP_SDL_Renderer, file: ctypes.c_char_p) -> LP_SDL_Texture:
    """
    Load an image from a filesystem path into a GPU texture.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTexture
    """
    return raw.IMG_LoadTexture(renderer, file)

def IMG_LoadTexture_IO(renderer: LP_SDL_Renderer, src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_SDL_Texture:
    """
    Load an image from an SDL data source into a GPU texture.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTexture_IO
    """
    return raw.IMG_LoadTexture_IO(renderer, src, closeio)

def IMG_LoadTextureTyped_IO(renderer: LP_SDL_Renderer, src: LP_SDL_IOStream, closeio: ctypes.c_bool, type: ctypes.c_char_p) -> LP_SDL_Texture:
    """
    Load an image from an SDL data source into a GPU texture.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTextureTyped_IO
    """
    return raw.IMG_LoadTextureTyped_IO(renderer, src, closeio, type)

def IMG_isAVIF(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect AVIF image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isAVIF
    """
    return raw.IMG_isAVIF(src)

def IMG_isICO(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect ICO image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isICO
    """
    return raw.IMG_isICO(src)

def IMG_isCUR(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect CUR image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isCUR
    """
    return raw.IMG_isCUR(src)

def IMG_isBMP(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect BMP image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isBMP
    """
    return raw.IMG_isBMP(src)

def IMG_isGIF(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect GIF image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isGIF
    """
    return raw.IMG_isGIF(src)

def IMG_isJPG(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect JPG image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isJPG
    """
    return raw.IMG_isJPG(src)

def IMG_isJXL(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect JXL image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isJXL
    """
    return raw.IMG_isJXL(src)

def IMG_isLBM(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect LBM image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isLBM
    """
    return raw.IMG_isLBM(src)

def IMG_isPCX(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect PCX image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isPCX
    """
    return raw.IMG_isPCX(src)

def IMG_isPNG(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect PNG image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isPNG
    """
    return raw.IMG_isPNG(src)

def IMG_isPNM(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect PNM image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isPNM
    """
    return raw.IMG_isPNM(src)

def IMG_isSVG(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect SVG image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isSVG
    """
    return raw.IMG_isSVG(src)

def IMG_isQOI(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect QOI image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isQOI
    """
    return raw.IMG_isQOI(src)

def IMG_isTIF(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect TIFF image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isTIF
    """
    return raw.IMG_isTIF(src)

def IMG_isXCF(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect XCF image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isXCF
    """
    return raw.IMG_isXCF(src)

def IMG_isXPM(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect XPM image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isXPM
    """
    return raw.IMG_isXPM(src)

def IMG_isXV(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect XV image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isXV
    """
    return raw.IMG_isXV(src)

def IMG_isWEBP(src: LP_SDL_IOStream) -> ctypes.c_bool:
    """
    Detect WEBP image data on a readable/seekable SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_isWEBP
    """
    return raw.IMG_isWEBP(src)

def IMG_LoadAVIF_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a AVIF image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadAVIF_IO
    """
    return raw.IMG_LoadAVIF_IO(src)

def IMG_LoadICO_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a ICO image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadICO_IO
    """
    return raw.IMG_LoadICO_IO(src)

def IMG_LoadCUR_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a CUR image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadCUR_IO
    """
    return raw.IMG_LoadCUR_IO(src)

def IMG_LoadBMP_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a BMP image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadBMP_IO
    """
    return raw.IMG_LoadBMP_IO(src)

def IMG_LoadGIF_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a GIF image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadGIF_IO
    """
    return raw.IMG_LoadGIF_IO(src)

def IMG_LoadJPG_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a JPG image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadJPG_IO
    """
    return raw.IMG_LoadJPG_IO(src)

def IMG_LoadJXL_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a JXL image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadJXL_IO
    """
    return raw.IMG_LoadJXL_IO(src)

def IMG_LoadLBM_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a LBM image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadLBM_IO
    """
    return raw.IMG_LoadLBM_IO(src)

def IMG_LoadPCX_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a PCX image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadPCX_IO
    """
    return raw.IMG_LoadPCX_IO(src)

def IMG_LoadPNG_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a PNG image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadPNG_IO
    """
    return raw.IMG_LoadPNG_IO(src)

def IMG_LoadPNM_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a PNM image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadPNM_IO
    """
    return raw.IMG_LoadPNM_IO(src)

def IMG_LoadSVG_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a SVG image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadSVG_IO
    """
    return raw.IMG_LoadSVG_IO(src)

def IMG_LoadQOI_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a QOI image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadQOI_IO
    """
    return raw.IMG_LoadQOI_IO(src)

def IMG_LoadTGA_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a TGA image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTGA_IO
    """
    return raw.IMG_LoadTGA_IO(src)

def IMG_LoadTIF_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a TIFF image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadTIF_IO
    """
    return raw.IMG_LoadTIF_IO(src)

def IMG_LoadXCF_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a XCF image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadXCF_IO
    """
    return raw.IMG_LoadXCF_IO(src)

def IMG_LoadXPM_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a XPM image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadXPM_IO
    """
    return raw.IMG_LoadXPM_IO(src)

def IMG_LoadXV_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a XV image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadXV_IO
    """
    return raw.IMG_LoadXV_IO(src)

def IMG_LoadWEBP_IO(src: LP_SDL_IOStream) -> LP_SDL_Surface:
    """
    Load a WEBP image directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadWEBP_IO
    """
    return raw.IMG_LoadWEBP_IO(src)

def IMG_LoadSizedSVG_IO(src: LP_SDL_IOStream, width: ctypes.c_int, height: ctypes.c_int) -> LP_SDL_Surface:
    """
    Load an SVG image, scaled to a specific size.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadSizedSVG_IO
    """
    return raw.IMG_LoadSizedSVG_IO(src, width, height)

def IMG_ReadXPMFromArray(xpm: LP_c_char_p) -> LP_SDL_Surface:
    """
    Load an XPM image from a memory array.

    https://wiki.libsdl.org/SDL3_image/IMG_ReadXPMFromArray
    """
    return raw.IMG_ReadXPMFromArray(xpm)

def IMG_ReadXPMFromArrayToRGB888(xpm: LP_c_char_p) -> LP_SDL_Surface:
    """
    Load an XPM image from a memory array.

    https://wiki.libsdl.org/SDL3_image/IMG_ReadXPMFromArrayToRGB888
    """
    return raw.IMG_ReadXPMFromArrayToRGB888(xpm)

def IMG_SaveAVIF(surface: LP_SDL_Surface, file: ctypes.c_char_p, quality: ctypes.c_int) -> ctypes.c_bool:
    """
    Save an SDL_Surface into a AVIF image file.

    https://wiki.libsdl.org/SDL3_image/IMG_SaveAVIF
    """
    return raw.IMG_SaveAVIF(surface, file, quality)

def IMG_SaveAVIF_IO(surface: LP_SDL_Surface, dst: LP_SDL_IOStream, closeio: ctypes.c_bool, quality: ctypes.c_int) -> ctypes.c_bool:
    """
    Save an SDL_Surface into AVIF image data, via an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_SaveAVIF_IO
    """
    return raw.IMG_SaveAVIF_IO(surface, dst, closeio, quality)

def IMG_SavePNG(surface: LP_SDL_Surface, file: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Save an SDL_Surface into a PNG image file.

    https://wiki.libsdl.org/SDL3_image/IMG_SavePNG
    """
    return raw.IMG_SavePNG(surface, file)

def IMG_SavePNG_IO(surface: LP_SDL_Surface, dst: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Save an SDL_Surface into PNG image data, via an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_SavePNG_IO
    """
    return raw.IMG_SavePNG_IO(surface, dst, closeio)

def IMG_SaveJPG(surface: LP_SDL_Surface, file: ctypes.c_char_p, quality: ctypes.c_int) -> ctypes.c_bool:
    """
    Save an SDL_Surface into a JPEG image file.

    https://wiki.libsdl.org/SDL3_image/IMG_SaveJPG
    """
    return raw.IMG_SaveJPG(surface, file, quality)

def IMG_SaveJPG_IO(surface: LP_SDL_Surface, dst: LP_SDL_IOStream, closeio: ctypes.c_bool, quality: ctypes.c_int) -> ctypes.c_bool:
    """
    Save an SDL_Surface into JPEG image data, via an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_SaveJPG_IO
    """
    return raw.IMG_SaveJPG_IO(surface, dst, closeio, quality)

def IMG_LoadAnimation(file: ctypes.c_char_p) -> LP_IMG_Animation:
    """
    Load an animation from a file.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadAnimation
    """
    return raw.IMG_LoadAnimation(file)

def IMG_LoadAnimation_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool) -> LP_IMG_Animation:
    """
    Load an animation from an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadAnimation_IO
    """
    return raw.IMG_LoadAnimation_IO(src, closeio)

def IMG_LoadAnimationTyped_IO(src: LP_SDL_IOStream, closeio: ctypes.c_bool, type: ctypes.c_char_p) -> LP_IMG_Animation:
    """
    Load an animation from an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadAnimationTyped_IO
    """
    return raw.IMG_LoadAnimationTyped_IO(src, closeio, type)

def IMG_FreeAnimation(anim: LP_IMG_Animation) -> None:
    """
    Dispose of an [IMG_Animation](https://wiki.libsdl.org/SDL3_image/IMG_Animation) and free its resources.

    https://wiki.libsdl.org/SDL3_image/IMG_FreeAnimation
    """
    return raw.IMG_FreeAnimation(anim)

def IMG_LoadGIFAnimation_IO(src: LP_SDL_IOStream) -> LP_IMG_Animation:
    """
    Load a GIF animation directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadGIFAnimation_IO
    """
    return raw.IMG_LoadGIFAnimation_IO(src)

def IMG_LoadWEBPAnimation_IO(src: LP_SDL_IOStream) -> LP_IMG_Animation:
    """
    Load a WEBP animation directly.

    https://wiki.libsdl.org/SDL3_image/IMG_LoadWEBPAnimation_IO
    """
    return raw.IMG_LoadWEBPAnimation_IO(src)

# libSDL3_mixer.so implementation.

def MIX_Version() -> ctypes.c_int:
    """
    Get the version of SDL_mixer that is linked against your program.

    https://wiki.libsdl.org/SDL3_mixer/MIX_Version
    """
    return raw.MIX_Version()

def MIX_Init() -> ctypes.c_bool:
    """
    Initialize the SDL_mixer library.

    https://wiki.libsdl.org/SDL3_mixer/MIX_Init
    """
    return raw.MIX_Init()

def MIX_Quit() -> None:
    """
    Deinitialize the SDL_mixer library.

    https://wiki.libsdl.org/SDL3_mixer/MIX_Quit
    """
    return raw.MIX_Quit()

def MIX_GetNumAudioDecoders() -> ctypes.c_int:
    """
    Report the number of audio decoders available for use.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetNumAudioDecoders
    """
    return raw.MIX_GetNumAudioDecoders()

def MIX_GetAudioDecoder(index: ctypes.c_int) -> ctypes.c_char_p:
    """
    Report the name of a specific audio decoders.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioDecoder
    """
    return raw.MIX_GetAudioDecoder(index)

def MIX_CreateMixerDevice(devid: SDL_AudioDeviceID, spec: LP_SDL_AudioSpec) -> LP_MIX_Mixer:
    """
    Create a mixer that plays sound directly to an audio device.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateMixerDevice
    """
    return raw.MIX_CreateMixerDevice(devid, spec)

def MIX_CreateMixer(spec: LP_SDL_AudioSpec) -> LP_MIX_Mixer:
    """
    Create a mixer that generates audio to a memory buffer.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateMixer
    """
    return raw.MIX_CreateMixer(spec)

def MIX_DestroyMixer(mixer: LP_MIX_Mixer) -> None:
    """
    Free a mixer.

    https://wiki.libsdl.org/SDL3_mixer/MIX_DestroyMixer
    """
    return raw.MIX_DestroyMixer(mixer)

def MIX_GetMixerProperties(mixer: LP_MIX_Mixer) -> SDL_PropertiesID:
    """
    Get the properties associated with a mixer.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetMixerProperties
    """
    return raw.MIX_GetMixerProperties(mixer)

def MIX_GetMixerFormat(mixer: LP_MIX_Mixer, spec: LP_SDL_AudioSpec) -> ctypes.c_bool:
    """
    Get the audio format a mixer is generating.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetMixerFormat
    """
    return raw.MIX_GetMixerFormat(mixer, spec)

def MIX_LoadAudio_IO(mixer: LP_MIX_Mixer, io: LP_SDL_IOStream, predecode: ctypes.c_bool, closeio: ctypes.c_bool) -> LP_MIX_Audio:
    """
    Load audio for playback from an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadAudio_IO
    """
    return raw.MIX_LoadAudio_IO(mixer, io, predecode, closeio)

def MIX_LoadAudio(mixer: LP_MIX_Mixer, path: ctypes.c_char_p, predecode: ctypes.c_bool) -> LP_MIX_Audio:
    """
    Load audio for playback from a file.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadAudio
    """
    return raw.MIX_LoadAudio(mixer, path, predecode)

def MIX_LoadAudioWithProperties(props: SDL_PropertiesID) -> LP_MIX_Audio:
    """
    Load audio for playback through a collection of properties.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadAudioWithProperties
    """
    return raw.MIX_LoadAudioWithProperties(props)

def MIX_LoadRawAudio_IO(mixer: LP_MIX_Mixer, io: LP_SDL_IOStream, spec: LP_SDL_AudioSpec, closeio: ctypes.c_bool) -> LP_MIX_Audio:
    """
    Load raw PCM data from an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadRawAudio_IO
    """
    return raw.MIX_LoadRawAudio_IO(mixer, io, spec, closeio)

def MIX_LoadRawAudio(mixer: LP_MIX_Mixer, data: ctypes.c_void_p, datalen: ctypes.c_size_t, spec: LP_SDL_AudioSpec) -> LP_MIX_Audio:
    """
    Load raw PCM data from a memory buffer.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadRawAudio
    """
    return raw.MIX_LoadRawAudio(mixer, data, datalen, spec)

def MIX_LoadRawAudioNoCopy(mixer: LP_MIX_Mixer, data: ctypes.c_void_p, datalen: ctypes.c_size_t, spec: LP_SDL_AudioSpec, free_when_done: ctypes.c_bool) -> LP_MIX_Audio:
    """
    Load raw PCM data from a memory buffer without making a copy.

    https://wiki.libsdl.org/SDL3_mixer/MIX_LoadRawAudioNoCopy
    """
    return raw.MIX_LoadRawAudioNoCopy(mixer, data, datalen, spec, free_when_done)

def MIX_CreateSineWaveAudio(mixer: LP_MIX_Mixer, hz: ctypes.c_int, amplitude: ctypes.c_float) -> LP_MIX_Audio:
    """
    Create a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio) that generates a sinewave.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateSineWaveAudio
    """
    return raw.MIX_CreateSineWaveAudio(mixer, hz, amplitude)

def MIX_GetAudioProperties(audio: LP_MIX_Audio) -> SDL_PropertiesID:
    """
    Get the properties associated with a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioProperties
    """
    return raw.MIX_GetAudioProperties(audio)

def MIX_GetAudioDuration(audio: LP_MIX_Audio) -> ctypes.c_int64:
    """
    Get the length of a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio)'s playback in sample frames.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioDuration
    """
    return raw.MIX_GetAudioDuration(audio)

def MIX_GetAudioFormat(audio: LP_MIX_Audio, spec: LP_SDL_AudioSpec) -> ctypes.c_bool:
    """
    Query the initial audio format of a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioFormat
    """
    return raw.MIX_GetAudioFormat(audio, spec)

def MIX_DestroyAudio(audio: LP_MIX_Audio) -> None:
    """
    Destroy the specified audio.

    https://wiki.libsdl.org/SDL3_mixer/MIX_DestroyAudio
    """
    return raw.MIX_DestroyAudio(audio)

def MIX_CreateTrack(mixer: LP_MIX_Mixer) -> LP_MIX_Track:
    """
    Create a new track on a mixer.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateTrack
    """
    return raw.MIX_CreateTrack(mixer)

def MIX_DestroyTrack(track: LP_MIX_Track) -> None:
    """
    Destroy the specified track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_DestroyTrack
    """
    return raw.MIX_DestroyTrack(track)

def MIX_GetTrackProperties(track: LP_MIX_Track) -> SDL_PropertiesID:
    """
    Get the properties associated with a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackProperties
    """
    return raw.MIX_GetTrackProperties(track)

def MIX_GetTrackMixer(track: LP_MIX_Track) -> LP_MIX_Mixer:
    """
    Get the [MIX_Mixer](https://wiki.libsdl.org/SDL3_mixer/MIX_Mixer) that owns a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackMixer
    """
    return raw.MIX_GetTrackMixer(track)

def MIX_SetTrackAudio(track: LP_MIX_Track, audio: LP_MIX_Audio) -> ctypes.c_bool:
    """
    Set a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track)'s input to a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio).

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackAudio
    """
    return raw.MIX_SetTrackAudio(track, audio)

def MIX_SetTrackAudioStream(track: LP_MIX_Track, stream: LP_SDL_AudioStream) -> ctypes.c_bool:
    """
    Set a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track)'s input to an SDL_AudioStream.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackAudioStream
    """
    return raw.MIX_SetTrackAudioStream(track, stream)

def MIX_SetTrackIOStream(track: LP_MIX_Track, io: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track)'s input to an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackIOStream
    """
    return raw.MIX_SetTrackIOStream(track, io, closeio)

def MIX_SetTrackRawIOStream(track: LP_MIX_Track, io: LP_SDL_IOStream, spec: LP_SDL_AudioSpec, closeio: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track)'s input to an SDL_IOStream providing raw PCM data.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackRawIOStream
    """
    return raw.MIX_SetTrackRawIOStream(track, io, spec, closeio)

def MIX_TagTrack(track: LP_MIX_Track, tag: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Assign an arbitrary tag to a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TagTrack
    """
    return raw.MIX_TagTrack(track, tag)

def MIX_UntagTrack(track: LP_MIX_Track, tag: ctypes.c_char_p) -> None:
    """
    Remove an arbitrary tag from a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_UntagTrack
    """
    return raw.MIX_UntagTrack(track, tag)

def MIX_GetTrackTags(track: LP_MIX_Track, count: LP_c_int) -> LP_c_char_p:
    """
    Get the tags currently associated with a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackTags
    """
    return raw.MIX_GetTrackTags(track, count)

def MIX_GetTaggedTracks(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, count: LP_c_int) -> LP_LP_MIX_Track:
    """
    Get all tracks with a specific tag.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTaggedTracks
    """
    return raw.MIX_GetTaggedTracks(mixer, tag, count)

def MIX_SetTrackPlaybackPosition(track: LP_MIX_Track, frames: ctypes.c_int64) -> ctypes.c_bool:
    """
    Seek a playing track to a new position in its input.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackPlaybackPosition
    """
    return raw.MIX_SetTrackPlaybackPosition(track, frames)

def MIX_GetTrackPlaybackPosition(track: LP_MIX_Track) -> ctypes.c_int64:
    """
    Get the current input position of a playing track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackPlaybackPosition
    """
    return raw.MIX_GetTrackPlaybackPosition(track)

def MIX_GetTrackFadeFrames(track: LP_MIX_Track) -> ctypes.c_int64:
    """
    Query whether a given track is fading.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackFadeFrames
    """
    return raw.MIX_GetTrackFadeFrames(track)

def MIX_TrackLooping(track: LP_MIX_Track) -> ctypes.c_bool:
    """
    Query whether a given track is looping.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TrackLooping
    """
    return raw.MIX_TrackLooping(track)

def MIX_SetTrackLoops(track: LP_MIX_Track, num_loops: ctypes.c_int) -> ctypes.c_bool:
    """
    Change the number of times a currently-playing track will loop.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackLoops
    """
    return raw.MIX_SetTrackLoops(track, num_loops)

def MIX_GetTrackAudio(track: LP_MIX_Track) -> LP_MIX_Audio:
    """
    Query the [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio) assigned to a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackAudio
    """
    return raw.MIX_GetTrackAudio(track)

def MIX_GetTrackAudioStream(track: LP_MIX_Track) -> LP_SDL_AudioStream:
    """
    Query the SDL_AudioStream assigned to a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackAudioStream
    """
    return raw.MIX_GetTrackAudioStream(track)

def MIX_GetTrackRemaining(track: LP_MIX_Track) -> ctypes.c_int64:
    """
    Return the number of sample frames remaining to be mixed in a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackRemaining
    """
    return raw.MIX_GetTrackRemaining(track)

def MIX_TrackMSToFrames(track: LP_MIX_Track, ms: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert milliseconds to sample frames for a track's current format.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TrackMSToFrames
    """
    return raw.MIX_TrackMSToFrames(track, ms)

def MIX_TrackFramesToMS(track: LP_MIX_Track, frames: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert sample frames for a track's current format to milliseconds.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TrackFramesToMS
    """
    return raw.MIX_TrackFramesToMS(track, frames)

def MIX_AudioMSToFrames(audio: LP_MIX_Audio, ms: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert milliseconds to sample frames for a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio)'s format.

    https://wiki.libsdl.org/SDL3_mixer/MIX_AudioMSToFrames
    """
    return raw.MIX_AudioMSToFrames(audio, ms)

def MIX_AudioFramesToMS(audio: LP_MIX_Audio, frames: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert sample frames for a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio)'s format to milliseconds.

    https://wiki.libsdl.org/SDL3_mixer/MIX_AudioFramesToMS
    """
    return raw.MIX_AudioFramesToMS(audio, frames)

def MIX_MSToFrames(sample_rate: ctypes.c_int, ms: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert milliseconds to sample frames at a specific sample rate.

    https://wiki.libsdl.org/SDL3_mixer/MIX_MSToFrames
    """
    return raw.MIX_MSToFrames(sample_rate, ms)

def MIX_FramesToMS(sample_rate: ctypes.c_int, frames: ctypes.c_int64) -> ctypes.c_int64:
    """
    Convert sample frames, at a specific sample rate, to milliseconds.

    https://wiki.libsdl.org/SDL3_mixer/MIX_FramesToMS
    """
    return raw.MIX_FramesToMS(sample_rate, frames)

def MIX_PlayTrack(track: LP_MIX_Track, options: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Start (or restart) mixing a track for playback.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PlayTrack
    """
    return raw.MIX_PlayTrack(track, options)

def MIX_PlayTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, options: SDL_PropertiesID) -> ctypes.c_bool:
    """
    Start (or restart) mixing all tracks with a specific tag for playback.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PlayTag
    """
    return raw.MIX_PlayTag(mixer, tag, options)

def MIX_PlayAudio(mixer: LP_MIX_Mixer, audio: LP_MIX_Audio) -> ctypes.c_bool:
    """
    Play a [MIX_Audio](https://wiki.libsdl.org/SDL3_mixer/MIX_Audio) from start to finish without any management.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PlayAudio
    """
    return raw.MIX_PlayAudio(mixer, audio)

def MIX_StopTrack(track: LP_MIX_Track, fade_out_frames: ctypes.c_int64) -> ctypes.c_bool:
    """
    Halt a currently-playing track, possibly fading out over time.

    https://wiki.libsdl.org/SDL3_mixer/MIX_StopTrack
    """
    return raw.MIX_StopTrack(track, fade_out_frames)

def MIX_StopAllTracks(mixer: LP_MIX_Mixer, fade_out_ms: ctypes.c_int64) -> ctypes.c_bool:
    """
    Halt all currently-playing tracks, possibly fading out over time.

    https://wiki.libsdl.org/SDL3_mixer/MIX_StopAllTracks
    """
    return raw.MIX_StopAllTracks(mixer, fade_out_ms)

def MIX_StopTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, fade_out_ms: ctypes.c_int64) -> ctypes.c_bool:
    """
    Halt all tracks with a specific tag, possibly fading out over time.

    https://wiki.libsdl.org/SDL3_mixer/MIX_StopTag
    """
    return raw.MIX_StopTag(mixer, tag, fade_out_ms)

def MIX_PauseTrack(track: LP_MIX_Track) -> ctypes.c_bool:
    """
    Pause a currently-playing track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PauseTrack
    """
    return raw.MIX_PauseTrack(track)

def MIX_PauseAllTracks(mixer: LP_MIX_Mixer) -> ctypes.c_bool:
    """
    Pause all currently-playing tracks.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PauseAllTracks
    """
    return raw.MIX_PauseAllTracks(mixer)

def MIX_PauseTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Pause all tracks with a specific tag.

    https://wiki.libsdl.org/SDL3_mixer/MIX_PauseTag
    """
    return raw.MIX_PauseTag(mixer, tag)

def MIX_ResumeTrack(track: LP_MIX_Track) -> ctypes.c_bool:
    """
    Resume a currently-paused track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_ResumeTrack
    """
    return raw.MIX_ResumeTrack(track)

def MIX_ResumeAllTracks(mixer: LP_MIX_Mixer) -> ctypes.c_bool:
    """
    Resume all currently-paused tracks.

    https://wiki.libsdl.org/SDL3_mixer/MIX_ResumeAllTracks
    """
    return raw.MIX_ResumeAllTracks(mixer)

def MIX_ResumeTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Resume all tracks with a specific tag.

    https://wiki.libsdl.org/SDL3_mixer/MIX_ResumeTag
    """
    return raw.MIX_ResumeTag(mixer, tag)

def MIX_TrackPlaying(track: LP_MIX_Track) -> ctypes.c_bool:
    """
    Query if a track is currently playing.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TrackPlaying
    """
    return raw.MIX_TrackPlaying(track)

def MIX_TrackPaused(track: LP_MIX_Track) -> ctypes.c_bool:
    """
    Query if a track is currently paused.

    https://wiki.libsdl.org/SDL3_mixer/MIX_TrackPaused
    """
    return raw.MIX_TrackPaused(track)

def MIX_SetMasterGain(mixer: LP_MIX_Mixer, gain: ctypes.c_float) -> ctypes.c_bool:
    """
    Set a mixer's master gain control.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetMasterGain
    """
    return raw.MIX_SetMasterGain(mixer, gain)

def MIX_GetMasterGain(mixer: LP_MIX_Mixer) -> ctypes.c_float:
    """
    Get a mixer's master gain control.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetMasterGain
    """
    return raw.MIX_GetMasterGain(mixer)

def MIX_SetTrackGain(track: LP_MIX_Track, gain: ctypes.c_float) -> ctypes.c_bool:
    """
    Set a track's gain control.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackGain
    """
    return raw.MIX_SetTrackGain(track, gain)

def MIX_GetTrackGain(track: LP_MIX_Track) -> ctypes.c_float:
    """
    Get a track's gain control.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackGain
    """
    return raw.MIX_GetTrackGain(track)

def MIX_SetTagGain(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, gain: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the gain control of all tracks with a specific tag.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTagGain
    """
    return raw.MIX_SetTagGain(mixer, tag, gain)

def MIX_SetTrackFrequencyRatio(track: LP_MIX_Track, ratio: ctypes.c_float) -> ctypes.c_bool:
    """
    Change the frequency ratio of a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackFrequencyRatio
    """
    return raw.MIX_SetTrackFrequencyRatio(track, ratio)

def MIX_GetTrackFrequencyRatio(track: LP_MIX_Track) -> ctypes.c_float:
    """
    Query the frequency ratio of a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrackFrequencyRatio
    """
    return raw.MIX_GetTrackFrequencyRatio(track)

def MIX_SetTrackOutputChannelMap(track: LP_MIX_Track, chmap: LP_c_int, count: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the current output channel map of a track.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackOutputChannelMap
    """
    return raw.MIX_SetTrackOutputChannelMap(track, chmap, count)

def MIX_SetTrackStereo(track: LP_MIX_Track, gains: LP_MIX_StereoGains) -> ctypes.c_bool:
    """
    Force a track to stereo output, with optionally left/right panning.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackStereo
    """
    return raw.MIX_SetTrackStereo(track, gains)

def MIX_SetTrack3DPosition(track: LP_MIX_Track, position: LP_MIX_Point3D) -> ctypes.c_bool:
    """
    Set a track's position in 3D space.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrack3DPosition
    """
    return raw.MIX_SetTrack3DPosition(track, position)

def MIX_GetTrack3DPosition(track: LP_MIX_Track, position: LP_MIX_Point3D) -> ctypes.c_bool:
    """
    Get a track's current position in 3D space.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetTrack3DPosition
    """
    return raw.MIX_GetTrack3DPosition(track, position)

def MIX_CreateGroup(mixer: LP_MIX_Mixer) -> LP_MIX_Group:
    """
    Create a mixing group.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateGroup
    """
    return raw.MIX_CreateGroup(mixer)

def MIX_DestroyGroup(group: LP_MIX_Group) -> None:
    """
    Destroy a mixing group.

    https://wiki.libsdl.org/SDL3_mixer/MIX_DestroyGroup
    """
    return raw.MIX_DestroyGroup(group)

def MIX_GetGroupProperties(group: LP_MIX_Group) -> SDL_PropertiesID:
    """
    Get the properties associated with a group.

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetGroupProperties
    """
    return raw.MIX_GetGroupProperties(group)

def MIX_GetGroupMixer(group: LP_MIX_Group) -> LP_MIX_Mixer:
    """
    Get the [MIX_Mixer](https://wiki.libsdl.org/SDL3_mixer/MIX_Mixer) that owns a [MIX_Group](https://wiki.libsdl.org/SDL3_mixer/MIX_Group).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetGroupMixer
    """
    return raw.MIX_GetGroupMixer(group)

def MIX_SetTrackGroup(track: LP_MIX_Track, group: LP_MIX_Group) -> ctypes.c_bool:
    """
    Assign a track to a mixing group.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackGroup
    """
    return raw.MIX_SetTrackGroup(track, group)

def MIX_SetTrackStoppedCallback(track: LP_MIX_Track, cb: MIX_TrackStoppedCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track) is stopped.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackStoppedCallback
    """
    return raw.MIX_SetTrackStoppedCallback(track, cb, userdata)

def MIX_SetTrackRawCallback(track: LP_MIX_Track, cb: MIX_TrackMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when a [MIX_Track](https://wiki.libsdl.org/SDL3_mixer/MIX_Track) has initial decoded audio.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackRawCallback
    """
    return raw.MIX_SetTrackRawCallback(track, cb, userdata)

def MIX_SetTrackCookedCallback(track: LP_MIX_Track, cb: MIX_TrackMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when the mixer has transformed a track's audio.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetTrackCookedCallback
    """
    return raw.MIX_SetTrackCookedCallback(track, cb, userdata)

def MIX_SetGroupPostMixCallback(group: LP_MIX_Group, cb: MIX_GroupMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when a mixer group has completed mixing.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetGroupPostMixCallback
    """
    return raw.MIX_SetGroupPostMixCallback(group, cb, userdata)

def MIX_SetPostMixCallback(mixer: LP_MIX_Mixer, cb: MIX_PostMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool:
    """
    Set a callback that fires when all mixing has completed.

    https://wiki.libsdl.org/SDL3_mixer/MIX_SetPostMixCallback
    """
    return raw.MIX_SetPostMixCallback(mixer, cb, userdata)

def MIX_Generate(mixer: LP_MIX_Mixer, buffer: ctypes.c_void_p, buflen: ctypes.c_int) -> ctypes.c_bool:
    """
    Generate mixer output when not driving an audio device.

    https://wiki.libsdl.org/SDL3_mixer/MIX_Generate
    """
    return raw.MIX_Generate(mixer, buffer, buflen)

def MIX_CreateAudioDecoder(path: ctypes.c_char_p, props: SDL_PropertiesID) -> LP_MIX_AudioDecoder:
    """
    Create a [MIX_AudioDecoder](https://wiki.libsdl.org/SDL3_mixer/MIX_AudioDecoder) from a path on the filesystem.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateAudioDecoder
    """
    return raw.MIX_CreateAudioDecoder(path, props)

def MIX_CreateAudioDecoder_IO(io: LP_SDL_IOStream, closeio: ctypes.c_bool, props: SDL_PropertiesID) -> LP_MIX_AudioDecoder:
    """
    Create a [MIX_AudioDecoder](https://wiki.libsdl.org/SDL3_mixer/MIX_AudioDecoder) from an SDL_IOStream.

    https://wiki.libsdl.org/SDL3_mixer/MIX_CreateAudioDecoder_IO
    """
    return raw.MIX_CreateAudioDecoder_IO(io, closeio, props)

def MIX_DestroyAudioDecoder(audiodecoder: LP_MIX_AudioDecoder) -> None:
    """
    Destroy the specified audio decoder.

    https://wiki.libsdl.org/SDL3_mixer/MIX_DestroyAudioDecoder
    """
    return raw.MIX_DestroyAudioDecoder(audiodecoder)

def MIX_GetAudioDecoderProperties(audiodecoder: LP_MIX_AudioDecoder) -> SDL_PropertiesID:
    """
    Get the properties associated with a [MIX_AudioDecoder](https://wiki.libsdl.org/SDL3_mixer/MIX_AudioDecoder).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioDecoderProperties
    """
    return raw.MIX_GetAudioDecoderProperties(audiodecoder)

def MIX_GetAudioDecoderFormat(audiodecoder: LP_MIX_AudioDecoder, spec: LP_SDL_AudioSpec) -> ctypes.c_bool:
    """
    Query the initial audio format of a [MIX_AudioDecoder](https://wiki.libsdl.org/SDL3_mixer/MIX_AudioDecoder).

    https://wiki.libsdl.org/SDL3_mixer/MIX_GetAudioDecoderFormat
    """
    return raw.MIX_GetAudioDecoderFormat(audiodecoder, spec)

def MIX_DecodeAudio(audiodecoder: LP_MIX_AudioDecoder, buffer: ctypes.c_void_p, buflen: ctypes.c_int, spec: LP_SDL_AudioSpec) -> ctypes.c_int:
    """
    Decode more audio from a [MIX_AudioDecoder](https://wiki.libsdl.org/SDL3_mixer/MIX_AudioDecoder).

    https://wiki.libsdl.org/SDL3_mixer/MIX_DecodeAudio
    """
    return raw.MIX_DecodeAudio(audiodecoder, buffer, buflen, spec)

# libSDL3_ttf.so implementation.

def TTF_Version() -> ctypes.c_int:
    """
    This function gets the version of the dynamically linked SDL_ttf library.

    https://wiki.libsdl.org/SDL3_ttf/TTF_Version
    """
    return raw.TTF_Version()

def TTF_GetFreeTypeVersion(major: LP_c_int, minor: LP_c_int, patch: LP_c_int) -> None:
    """
    Query the version of the FreeType library in use.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFreeTypeVersion
    """
    return raw.TTF_GetFreeTypeVersion(major, minor, patch)

def TTF_GetHarfBuzzVersion(major: LP_c_int, minor: LP_c_int, patch: LP_c_int) -> None:
    """
    Query the version of the HarfBuzz library in use.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetHarfBuzzVersion
    """
    return raw.TTF_GetHarfBuzzVersion(major, minor, patch)

def TTF_Init() -> ctypes.c_bool:
    """
    Initialize SDL_ttf.

    https://wiki.libsdl.org/SDL3_ttf/TTF_Init
    """
    return raw.TTF_Init()

def TTF_OpenFont(file: ctypes.c_char_p, ptsize: ctypes.c_float) -> LP_TTF_Font:
    """
    Create a font from a file, using a specified point size.

    https://wiki.libsdl.org/SDL3_ttf/TTF_OpenFont
    """
    return raw.TTF_OpenFont(file, ptsize)

def TTF_OpenFontIO(src: LP_SDL_IOStream, closeio: ctypes.c_bool, ptsize: ctypes.c_float) -> LP_TTF_Font:
    """
    Create a font from an SDL_IOStream, using a specified point size.

    https://wiki.libsdl.org/SDL3_ttf/TTF_OpenFontIO
    """
    return raw.TTF_OpenFontIO(src, closeio, ptsize)

def TTF_OpenFontWithProperties(props: SDL_PropertiesID) -> LP_TTF_Font:
    """
    Create a font with the specified properties.

    https://wiki.libsdl.org/SDL3_ttf/TTF_OpenFontWithProperties
    """
    return raw.TTF_OpenFontWithProperties(props)

def TTF_CopyFont(existing_font: LP_TTF_Font) -> LP_TTF_Font:
    """
    Create a copy of an existing font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CopyFont
    """
    return raw.TTF_CopyFont(existing_font)

def TTF_GetFontProperties(font: LP_TTF_Font) -> SDL_PropertiesID:
    """
    Get the properties associated with a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontProperties
    """
    return raw.TTF_GetFontProperties(font)

def TTF_GetFontGeneration(font: LP_TTF_Font) -> ctypes.c_uint32:
    """
    Get the font generation.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontGeneration
    """
    return raw.TTF_GetFontGeneration(font)

def TTF_AddFallbackFont(font: LP_TTF_Font, fallback: LP_TTF_Font) -> ctypes.c_bool:
    """
    Add a fallback font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_AddFallbackFont
    """
    return raw.TTF_AddFallbackFont(font, fallback)

def TTF_RemoveFallbackFont(font: LP_TTF_Font, fallback: LP_TTF_Font) -> None:
    """
    Remove a fallback font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RemoveFallbackFont
    """
    return raw.TTF_RemoveFallbackFont(font, fallback)

def TTF_ClearFallbackFonts(font: LP_TTF_Font) -> None:
    """
    Remove all fallback fonts.

    https://wiki.libsdl.org/SDL3_ttf/TTF_ClearFallbackFonts
    """
    return raw.TTF_ClearFallbackFonts(font)

def TTF_SetFontSize(font: LP_TTF_Font, ptsize: ctypes.c_float) -> ctypes.c_bool:
    """
    Set a font's size dynamically.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontSize
    """
    return raw.TTF_SetFontSize(font, ptsize)

def TTF_SetFontSizeDPI(font: LP_TTF_Font, ptsize: ctypes.c_float, hdpi: ctypes.c_int, vdpi: ctypes.c_int) -> ctypes.c_bool:
    """
    Set font size dynamically with target resolutions, in dots per inch.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontSizeDPI
    """
    return raw.TTF_SetFontSizeDPI(font, ptsize, hdpi, vdpi)

def TTF_GetFontSize(font: LP_TTF_Font) -> ctypes.c_float:
    """
    Get the size of a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontSize
    """
    return raw.TTF_GetFontSize(font)

def TTF_GetFontDPI(font: LP_TTF_Font, hdpi: LP_c_int, vdpi: LP_c_int) -> ctypes.c_bool:
    """
    Get font target resolutions, in dots per inch.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontDPI
    """
    return raw.TTF_GetFontDPI(font, hdpi, vdpi)

def TTF_SetFontStyle(font: LP_TTF_Font, style: TTF_FontStyleFlags) -> None:
    """
    Set a font's current style.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontStyle
    """
    return raw.TTF_SetFontStyle(font, style)

def TTF_GetFontStyle(font: LP_TTF_Font) -> TTF_FontStyleFlags:
    """
    Query a font's current style.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontStyle
    """
    return raw.TTF_GetFontStyle(font)

def TTF_SetFontOutline(font: LP_TTF_Font, outline: ctypes.c_int) -> ctypes.c_bool:
    """
    Set a font's current outline.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontOutline
    """
    return raw.TTF_SetFontOutline(font, outline)

def TTF_GetFontOutline(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query a font's current outline.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontOutline
    """
    return raw.TTF_GetFontOutline(font)

def TTF_SetFontHinting(font: LP_TTF_Font, hinting: TTF_HintingFlags) -> None:
    """
    Set a font's current hinter setting.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontHinting
    """
    return raw.TTF_SetFontHinting(font, hinting)

def TTF_GetNumFontFaces(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query the number of faces of a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetNumFontFaces
    """
    return raw.TTF_GetNumFontFaces(font)

def TTF_GetFontHinting(font: LP_TTF_Font) -> TTF_HintingFlags:
    """
    Query a font's current FreeType hinter setting.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontHinting
    """
    return raw.TTF_GetFontHinting(font)

def TTF_SetFontSDF(font: LP_TTF_Font, enabled: ctypes.c_bool) -> ctypes.c_bool:
    """
    Enable Signed Distance Field rendering for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontSDF
    """
    return raw.TTF_SetFontSDF(font, enabled)

def TTF_GetFontSDF(font: LP_TTF_Font) -> ctypes.c_bool:
    """
    Query whether Signed Distance Field rendering is enabled for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontSDF
    """
    return raw.TTF_GetFontSDF(font)

def TTF_GetFontWeight(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query a font's weight, in terms of the lightness/heaviness of the strokes.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontWeight
    """
    return raw.TTF_GetFontWeight(font)

def TTF_SetFontWrapAlignment(font: LP_TTF_Font, align: TTF_HorizontalAlignment) -> None:
    """
    Set a font's current wrap alignment option.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontWrapAlignment
    """
    return raw.TTF_SetFontWrapAlignment(font, align)

def TTF_GetFontWrapAlignment(font: LP_TTF_Font) -> TTF_HorizontalAlignment:
    """
    Query a font's current wrap alignment option.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontWrapAlignment
    """
    return raw.TTF_GetFontWrapAlignment(font)

def TTF_GetFontHeight(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query the total height of a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontHeight
    """
    return raw.TTF_GetFontHeight(font)

def TTF_GetFontAscent(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query the offset from the baseline to the top of a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontAscent
    """
    return raw.TTF_GetFontAscent(font)

def TTF_GetFontDescent(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query the offset from the baseline to the bottom of a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontDescent
    """
    return raw.TTF_GetFontDescent(font)

def TTF_SetFontLineSkip(font: LP_TTF_Font, lineskip: ctypes.c_int) -> None:
    """
    Set the spacing between lines of text for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontLineSkip
    """
    return raw.TTF_SetFontLineSkip(font, lineskip)

def TTF_GetFontLineSkip(font: LP_TTF_Font) -> ctypes.c_int:
    """
    Query the spacing between lines of text for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontLineSkip
    """
    return raw.TTF_GetFontLineSkip(font)

def TTF_SetFontKerning(font: LP_TTF_Font, enabled: ctypes.c_bool) -> None:
    """
    Set if kerning is enabled for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontKerning
    """
    return raw.TTF_SetFontKerning(font, enabled)

def TTF_GetFontKerning(font: LP_TTF_Font) -> ctypes.c_bool:
    """
    Query whether or not kerning is enabled for a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontKerning
    """
    return raw.TTF_GetFontKerning(font)

def TTF_FontIsFixedWidth(font: LP_TTF_Font) -> ctypes.c_bool:
    """
    Query whether a font is fixed-width.

    https://wiki.libsdl.org/SDL3_ttf/TTF_FontIsFixedWidth
    """
    return raw.TTF_FontIsFixedWidth(font)

def TTF_FontIsScalable(font: LP_TTF_Font) -> ctypes.c_bool:
    """
    Query whether a font is scalable or not.

    https://wiki.libsdl.org/SDL3_ttf/TTF_FontIsScalable
    """
    return raw.TTF_FontIsScalable(font)

def TTF_GetFontFamilyName(font: LP_TTF_Font) -> ctypes.c_char_p:
    """
    Query a font's family name.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontFamilyName
    """
    return raw.TTF_GetFontFamilyName(font)

def TTF_GetFontStyleName(font: LP_TTF_Font) -> ctypes.c_char_p:
    """
    Query a font's style name.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontStyleName
    """
    return raw.TTF_GetFontStyleName(font)

def TTF_SetFontDirection(font: LP_TTF_Font, direction: TTF_Direction) -> ctypes.c_bool:
    """
    Set the direction to be used for text shaping by a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontDirection
    """
    return raw.TTF_SetFontDirection(font, direction)

def TTF_GetFontDirection(font: LP_TTF_Font) -> TTF_Direction:
    """
    Get the direction to be used for text shaping by a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontDirection
    """
    return raw.TTF_GetFontDirection(font)

def TTF_StringToTag(string: ctypes.c_char_p) -> ctypes.c_uint32:
    """
    Convert from a 4 character string to a 32-bit tag.

    https://wiki.libsdl.org/SDL3_ttf/TTF_StringToTag
    """
    return raw.TTF_StringToTag(string)

def TTF_TagToString(tag: ctypes.c_uint32, string: ctypes.c_char_p, size: ctypes.c_size_t) -> None:
    """
    Convert from a 32-bit tag to a 4 character string.

    https://wiki.libsdl.org/SDL3_ttf/TTF_TagToString
    """
    return raw.TTF_TagToString(tag, string, size)

def TTF_SetFontScript(font: LP_TTF_Font, script: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Set the script to be used for text shaping by a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontScript
    """
    return raw.TTF_SetFontScript(font, script)

def TTF_GetFontScript(font: LP_TTF_Font) -> ctypes.c_uint32:
    """
    Get the script used for text shaping a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetFontScript
    """
    return raw.TTF_GetFontScript(font)

def TTF_GetGlyphScript(ch: ctypes.c_uint32) -> ctypes.c_uint32:
    """
    Get the script used by a 32-bit codepoint.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGlyphScript
    """
    return raw.TTF_GetGlyphScript(ch)

def TTF_SetFontLanguage(font: LP_TTF_Font, language_bcp47: ctypes.c_char_p) -> ctypes.c_bool:
    """
    Set language to be used for text shaping by a font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetFontLanguage
    """
    return raw.TTF_SetFontLanguage(font, language_bcp47)

def TTF_FontHasGlyph(font: LP_TTF_Font, ch: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Check whether a glyph is provided by the font for a UNICODE codepoint.

    https://wiki.libsdl.org/SDL3_ttf/TTF_FontHasGlyph
    """
    return raw.TTF_FontHasGlyph(font, ch)

def TTF_GetGlyphImage(font: LP_TTF_Font, ch: ctypes.c_uint32, image_type: LP_TTF_ImageType) -> LP_SDL_Surface:
    """
    Get the pixel image for a UNICODE codepoint.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGlyphImage
    """
    return raw.TTF_GetGlyphImage(font, ch, image_type)

def TTF_GetGlyphImageForIndex(font: LP_TTF_Font, glyph_index: ctypes.c_uint32, image_type: LP_TTF_ImageType) -> LP_SDL_Surface:
    """
    Get the pixel image for a character index.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGlyphImageForIndex
    """
    return raw.TTF_GetGlyphImageForIndex(font, glyph_index, image_type)

def TTF_GetGlyphMetrics(font: LP_TTF_Font, ch: ctypes.c_uint32, minx: LP_c_int, maxx: LP_c_int, miny: LP_c_int, maxy: LP_c_int, advance: LP_c_int) -> ctypes.c_bool:
    """
    Query the metrics (dimensions) of a font's glyph for a UNICODE codepoint.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGlyphMetrics
    """
    return raw.TTF_GetGlyphMetrics(font, ch, minx, maxx, miny, maxy, advance)

def TTF_GetGlyphKerning(font: LP_TTF_Font, previous_ch: ctypes.c_uint32, ch: ctypes.c_uint32, kerning: LP_c_int) -> ctypes.c_bool:
    """
    Query the kerning size between the glyphs of two UNICODE codepoints.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGlyphKerning
    """
    return raw.TTF_GetGlyphKerning(font, previous_ch, ch, kerning)

def TTF_GetStringSize(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Calculate the dimensions of a rendered string of UTF-8 text.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetStringSize
    """
    return raw.TTF_GetStringSize(font, text, length, w, h)

def TTF_GetStringSizeWrapped(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, wrap_width: ctypes.c_int, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Calculate the dimensions of a rendered string of UTF-8 text.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetStringSizeWrapped
    """
    return raw.TTF_GetStringSizeWrapped(font, text, length, wrap_width, w, h)

def TTF_MeasureString(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, max_width: ctypes.c_int, measured_width: LP_c_int, measured_length: LP_c_size_t) -> ctypes.c_bool:
    """
    Calculate how much of a UTF-8 string will fit in a given width.

    https://wiki.libsdl.org/SDL3_ttf/TTF_MeasureString
    """
    return raw.TTF_MeasureString(font, text, length, max_width, measured_width, measured_length)

def TTF_RenderText_Solid(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color) -> LP_SDL_Surface:
    """
    Render UTF-8 text at fast quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Solid
    """
    return raw.TTF_RenderText_Solid(font, text, length, fg)

def TTF_RenderText_Solid_Wrapped(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, wrapLength: ctypes.c_int) -> LP_SDL_Surface:
    """
    Render word-wrapped UTF-8 text at fast quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Solid_Wrapped
    """
    return raw.TTF_RenderText_Solid_Wrapped(font, text, length, fg, wrapLength)

def TTF_RenderGlyph_Solid(font: LP_TTF_Font, ch: ctypes.c_uint32, fg: SDL_Color) -> LP_SDL_Surface:
    """
    Render a single 32-bit glyph at fast quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderGlyph_Solid
    """
    return raw.TTF_RenderGlyph_Solid(font, ch, fg)

def TTF_RenderText_Shaded(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, bg: SDL_Color) -> LP_SDL_Surface:
    """
    Render UTF-8 text at high quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Shaded
    """
    return raw.TTF_RenderText_Shaded(font, text, length, fg, bg)

def TTF_RenderText_Shaded_Wrapped(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, bg: SDL_Color, wrap_width: ctypes.c_int) -> LP_SDL_Surface:
    """
    Render word-wrapped UTF-8 text at high quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Shaded_Wrapped
    """
    return raw.TTF_RenderText_Shaded_Wrapped(font, text, length, fg, bg, wrap_width)

def TTF_RenderGlyph_Shaded(font: LP_TTF_Font, ch: ctypes.c_uint32, fg: SDL_Color, bg: SDL_Color) -> LP_SDL_Surface:
    """
    Render a single UNICODE codepoint at high quality to a new 8-bit surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderGlyph_Shaded
    """
    return raw.TTF_RenderGlyph_Shaded(font, ch, fg, bg)

def TTF_RenderText_Blended(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color) -> LP_SDL_Surface:
    """
    Render UTF-8 text at high quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Blended
    """
    return raw.TTF_RenderText_Blended(font, text, length, fg)

def TTF_RenderText_Blended_Wrapped(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, wrap_width: ctypes.c_int) -> LP_SDL_Surface:
    """
    Render word-wrapped UTF-8 text at high quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_Blended_Wrapped
    """
    return raw.TTF_RenderText_Blended_Wrapped(font, text, length, fg, wrap_width)

def TTF_RenderGlyph_Blended(font: LP_TTF_Font, ch: ctypes.c_uint32, fg: SDL_Color) -> LP_SDL_Surface:
    """
    Render a single UNICODE codepoint at high quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderGlyph_Blended
    """
    return raw.TTF_RenderGlyph_Blended(font, ch, fg)

def TTF_RenderText_LCD(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, bg: SDL_Color) -> LP_SDL_Surface:
    """
    Render UTF-8 text at LCD subpixel quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_LCD
    """
    return raw.TTF_RenderText_LCD(font, text, length, fg, bg)

def TTF_RenderText_LCD_Wrapped(font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t, fg: SDL_Color, bg: SDL_Color, wrap_width: ctypes.c_int) -> LP_SDL_Surface:
    """
    Render word-wrapped UTF-8 text at LCD subpixel quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderText_LCD_Wrapped
    """
    return raw.TTF_RenderText_LCD_Wrapped(font, text, length, fg, bg, wrap_width)

def TTF_RenderGlyph_LCD(font: LP_TTF_Font, ch: ctypes.c_uint32, fg: SDL_Color, bg: SDL_Color) -> LP_SDL_Surface:
    """
    Render a single UNICODE codepoint at LCD subpixel quality to a new ARGB surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_RenderGlyph_LCD
    """
    return raw.TTF_RenderGlyph_LCD(font, ch, fg, bg)

def TTF_CreateSurfaceTextEngine() -> LP_TTF_TextEngine:
    """
    Create a text engine for drawing text on SDL surfaces.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateSurfaceTextEngine
    """
    return raw.TTF_CreateSurfaceTextEngine()

def TTF_DrawSurfaceText(text: LP_TTF_Text, x: ctypes.c_int, y: ctypes.c_int, surface: LP_SDL_Surface) -> ctypes.c_bool:
    """
    Draw text to an SDL surface.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DrawSurfaceText
    """
    return raw.TTF_DrawSurfaceText(text, x, y, surface)

def TTF_DestroySurfaceTextEngine(engine: LP_TTF_TextEngine) -> None:
    """
    Destroy a text engine created for drawing text on SDL surfaces.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DestroySurfaceTextEngine
    """
    return raw.TTF_DestroySurfaceTextEngine(engine)

def TTF_CreateRendererTextEngine(renderer: LP_SDL_Renderer) -> LP_TTF_TextEngine:
    """
    Create a text engine for drawing text on an SDL renderer.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateRendererTextEngine
    """
    return raw.TTF_CreateRendererTextEngine(renderer)

def TTF_CreateRendererTextEngineWithProperties(props: SDL_PropertiesID) -> LP_TTF_TextEngine:
    """
    Create a text engine for drawing text on an SDL renderer, with the specified properties.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateRendererTextEngineWithProperties
    """
    return raw.TTF_CreateRendererTextEngineWithProperties(props)

def TTF_DrawRendererText(text: LP_TTF_Text, x: ctypes.c_float, y: ctypes.c_float) -> ctypes.c_bool:
    """
    Draw text to an SDL renderer.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DrawRendererText
    """
    return raw.TTF_DrawRendererText(text, x, y)

def TTF_DestroyRendererTextEngine(engine: LP_TTF_TextEngine) -> None:
    """
    Destroy a text engine created for drawing text on an SDL renderer.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DestroyRendererTextEngine
    """
    return raw.TTF_DestroyRendererTextEngine(engine)

def TTF_CreateGPUTextEngine(device: LP_SDL_GPUDevice) -> LP_TTF_TextEngine:
    """
    Create a text engine for drawing text with the SDL GPU API.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateGPUTextEngine
    """
    return raw.TTF_CreateGPUTextEngine(device)

def TTF_CreateGPUTextEngineWithProperties(props: SDL_PropertiesID) -> LP_TTF_TextEngine:
    """
    Create a text engine for drawing text with the SDL GPU API, with the specified properties.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateGPUTextEngineWithProperties
    """
    return raw.TTF_CreateGPUTextEngineWithProperties(props)

def TTF_GetGPUTextDrawData(text: LP_TTF_Text) -> LP_TTF_GPUAtlasDrawSequence:
    """
    Get the geometry data needed for drawing the text.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGPUTextDrawData
    """
    return raw.TTF_GetGPUTextDrawData(text)

def TTF_DestroyGPUTextEngine(engine: LP_TTF_TextEngine) -> None:
    """
    Destroy a text engine created for drawing text with the SDL GPU API.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DestroyGPUTextEngine
    """
    return raw.TTF_DestroyGPUTextEngine(engine)

def TTF_SetGPUTextEngineWinding(engine: LP_TTF_TextEngine, winding: TTF_GPUTextEngineWinding) -> None:
    """
    Sets the winding order of the vertices returned by [TTF_GetGPUTextDrawData](https://wiki.libsdl.org/SDL3_ttf/TTF_GetGPUTextDrawData) for a particular GPU text engine.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetGPUTextEngineWinding
    """
    return raw.TTF_SetGPUTextEngineWinding(engine, winding)

def TTF_GetGPUTextEngineWinding(engine: LP_TTF_TextEngine) -> TTF_GPUTextEngineWinding:
    """
    Get the winding order of the vertices returned by [TTF_GetGPUTextDrawData](https://wiki.libsdl.org/SDL3_ttf/TTF_GetGPUTextDrawData) for a particular GPU text engine

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetGPUTextEngineWinding
    """
    return raw.TTF_GetGPUTextEngineWinding(engine)

def TTF_CreateText(engine: LP_TTF_TextEngine, font: LP_TTF_Font, text: ctypes.c_char_p, length: ctypes.c_size_t) -> LP_TTF_Text:
    """
    Create a text object from UTF-8 text and a text engine.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CreateText
    """
    return raw.TTF_CreateText(engine, font, text, length)

def TTF_SetTextEngine(text: LP_TTF_Text, engine: LP_TTF_TextEngine) -> ctypes.c_bool:
    """
    Set the text engine used by a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextEngine
    """
    return raw.TTF_SetTextEngine(text, engine)

def TTF_GetTextEngine(text: LP_TTF_Text) -> LP_TTF_TextEngine:
    """
    Get the text engine used by a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextEngine
    """
    return raw.TTF_GetTextEngine(text)

def TTF_SetTextFont(text: LP_TTF_Text, font: LP_TTF_Font) -> ctypes.c_bool:
    """
    Set the font used by a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextFont
    """
    return raw.TTF_SetTextFont(text, font)

def TTF_GetTextFont(text: LP_TTF_Text) -> LP_TTF_Font:
    """
    Get the font used by a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextFont
    """
    return raw.TTF_GetTextFont(text)

def TTF_SetTextDirection(text: LP_TTF_Text, direction: TTF_Direction) -> ctypes.c_bool:
    """
    Set the direction to be used for text shaping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextDirection
    """
    return raw.TTF_SetTextDirection(text, direction)

def TTF_GetTextDirection(text: LP_TTF_Text) -> TTF_Direction:
    """
    Get the direction to be used for text shaping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextDirection
    """
    return raw.TTF_GetTextDirection(text)

def TTF_SetTextScript(text: LP_TTF_Text, script: ctypes.c_uint32) -> ctypes.c_bool:
    """
    Set the script to be used for text shaping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextScript
    """
    return raw.TTF_SetTextScript(text, script)

def TTF_GetTextScript(text: LP_TTF_Text) -> ctypes.c_uint32:
    """
    Get the script used for text shaping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextScript
    """
    return raw.TTF_GetTextScript(text)

def TTF_SetTextColor(text: LP_TTF_Text, r: ctypes.c_uint8, g: ctypes.c_uint8, b: ctypes.c_uint8, a: ctypes.c_uint8) -> ctypes.c_bool:
    """
    Set the color of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextColor
    """
    return raw.TTF_SetTextColor(text, r, g, b, a)

def TTF_SetTextColorFloat(text: LP_TTF_Text, r: ctypes.c_float, g: ctypes.c_float, b: ctypes.c_float, a: ctypes.c_float) -> ctypes.c_bool:
    """
    Set the color of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextColorFloat
    """
    return raw.TTF_SetTextColorFloat(text, r, g, b, a)

def TTF_GetTextColor(text: LP_TTF_Text, r: LP_c_uint8, g: LP_c_uint8, b: LP_c_uint8, a: LP_c_uint8) -> ctypes.c_bool:
    """
    Get the color of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextColor
    """
    return raw.TTF_GetTextColor(text, r, g, b, a)

def TTF_GetTextColorFloat(text: LP_TTF_Text, r: LP_c_float, g: LP_c_float, b: LP_c_float, a: LP_c_float) -> ctypes.c_bool:
    """
    Get the color of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextColorFloat
    """
    return raw.TTF_GetTextColorFloat(text, r, g, b, a)

def TTF_SetTextPosition(text: LP_TTF_Text, x: ctypes.c_int, y: ctypes.c_int) -> ctypes.c_bool:
    """
    Set the position of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextPosition
    """
    return raw.TTF_SetTextPosition(text, x, y)

def TTF_GetTextPosition(text: LP_TTF_Text, x: LP_c_int, y: LP_c_int) -> ctypes.c_bool:
    """
    Get the position of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextPosition
    """
    return raw.TTF_GetTextPosition(text, x, y)

def TTF_SetTextWrapWidth(text: LP_TTF_Text, wrap_width: ctypes.c_int) -> ctypes.c_bool:
    """
    Set whether wrapping is enabled on a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextWrapWidth
    """
    return raw.TTF_SetTextWrapWidth(text, wrap_width)

def TTF_GetTextWrapWidth(text: LP_TTF_Text, wrap_width: LP_c_int) -> ctypes.c_bool:
    """
    Get whether wrapping is enabled on a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextWrapWidth
    """
    return raw.TTF_GetTextWrapWidth(text, wrap_width)

def TTF_SetTextWrapWhitespaceVisible(text: LP_TTF_Text, visible: ctypes.c_bool) -> ctypes.c_bool:
    """
    Set whether whitespace should be visible when wrapping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextWrapWhitespaceVisible
    """
    return raw.TTF_SetTextWrapWhitespaceVisible(text, visible)

def TTF_TextWrapWhitespaceVisible(text: LP_TTF_Text) -> ctypes.c_bool:
    """
    Return whether whitespace is shown when wrapping a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_TextWrapWhitespaceVisible
    """
    return raw.TTF_TextWrapWhitespaceVisible(text)

def TTF_SetTextString(text: LP_TTF_Text, string: ctypes.c_char_p, length: ctypes.c_size_t) -> ctypes.c_bool:
    """
    Set the UTF-8 text used by a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_SetTextString
    """
    return raw.TTF_SetTextString(text, string, length)

def TTF_InsertTextString(text: LP_TTF_Text, offset: ctypes.c_int, string: ctypes.c_char_p, length: ctypes.c_size_t) -> ctypes.c_bool:
    """
    Insert UTF-8 text into a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_InsertTextString
    """
    return raw.TTF_InsertTextString(text, offset, string, length)

def TTF_AppendTextString(text: LP_TTF_Text, string: ctypes.c_char_p, length: ctypes.c_size_t) -> ctypes.c_bool:
    """
    Append UTF-8 text to a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_AppendTextString
    """
    return raw.TTF_AppendTextString(text, string, length)

def TTF_DeleteTextString(text: LP_TTF_Text, offset: ctypes.c_int, length: ctypes.c_int) -> ctypes.c_bool:
    """
    Delete UTF-8 text from a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DeleteTextString
    """
    return raw.TTF_DeleteTextString(text, offset, length)

def TTF_GetTextSize(text: LP_TTF_Text, w: LP_c_int, h: LP_c_int) -> ctypes.c_bool:
    """
    Get the size of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextSize
    """
    return raw.TTF_GetTextSize(text, w, h)

def TTF_GetTextSubString(text: LP_TTF_Text, offset: ctypes.c_int, substring: LP_TTF_SubString) -> ctypes.c_bool:
    """
    Get the substring of a text object that surrounds a text offset.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextSubString
    """
    return raw.TTF_GetTextSubString(text, offset, substring)

def TTF_GetTextSubStringForLine(text: LP_TTF_Text, line: ctypes.c_int, substring: LP_TTF_SubString) -> ctypes.c_bool:
    """
    Get the substring of a text object that contains the given line.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextSubStringForLine
    """
    return raw.TTF_GetTextSubStringForLine(text, line, substring)

def TTF_GetTextSubStringsForRange(text: LP_TTF_Text, offset: ctypes.c_int, length: ctypes.c_int, count: LP_c_int) -> LP_LP_TTF_SubString:
    """
    Get the substrings of a text object that contain a range of text.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextSubStringsForRange
    """
    return raw.TTF_GetTextSubStringsForRange(text, offset, length, count)

def TTF_GetTextSubStringForPoint(text: LP_TTF_Text, x: ctypes.c_int, y: ctypes.c_int, substring: LP_TTF_SubString) -> ctypes.c_bool:
    """
    Get the portion of a text string that is closest to a point.

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetTextSubStringForPoint
    """
    return raw.TTF_GetTextSubStringForPoint(text, x, y, substring)

def TTF_GetPreviousTextSubString(text: LP_TTF_Text, substring: LP_TTF_SubString, previous: LP_TTF_SubString) -> ctypes.c_bool:
    """
    Get the previous substring in a text object

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetPreviousTextSubString
    """
    return raw.TTF_GetPreviousTextSubString(text, substring, previous)

def TTF_GetNextTextSubString(text: LP_TTF_Text, substring: LP_TTF_SubString, next: LP_TTF_SubString) -> ctypes.c_bool:
    """
    Get the next substring in a text object

    https://wiki.libsdl.org/SDL3_ttf/TTF_GetNextTextSubString
    """
    return raw.TTF_GetNextTextSubString(text, substring, next)

def TTF_UpdateText(text: LP_TTF_Text) -> ctypes.c_bool:
    """
    Update the layout of a text object.

    https://wiki.libsdl.org/SDL3_ttf/TTF_UpdateText
    """
    return raw.TTF_UpdateText(text)

def TTF_DestroyText(text: LP_TTF_Text) -> None:
    """
    Destroy a text object created by a text engine.

    https://wiki.libsdl.org/SDL3_ttf/TTF_DestroyText
    """
    return raw.TTF_DestroyText(text)

def TTF_CloseFont(font: LP_TTF_Font) -> None:
    """
    Dispose of a previously-created font.

    https://wiki.libsdl.org/SDL3_ttf/TTF_CloseFont
    """
    return raw.TTF_CloseFont(font)

def TTF_Quit() -> None:
    """
    Deinitialize SDL_ttf.

    https://wiki.libsdl.org/SDL3_ttf/TTF_Quit
    """
    return raw.TTF_Quit()

def TTF_WasInit() -> ctypes.c_int:
    """
    Check if SDL_ttf is initialized.

    https://wiki.libsdl.org/SDL3_ttf/TTF_WasInit
    """
    return raw.TTF_WasInit()

# libSDL3_rtf.so implementation.

def RTF_Version() -> ctypes.c_int:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_Version
    """
    return raw.RTF_Version()

def RTF_CreateContext(_0: LP_SDL_Renderer, _1: LP_RTF_FontEngine) -> LP_RTF_Context:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_CreateContext
    """
    return raw.RTF_CreateContext(_0, _1)

def RTF_Load(_0: LP_RTF_Context, _1: ctypes.c_char_p) -> ctypes.c_int:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_Load
    """
    return raw.RTF_Load(_0, _1)

def RTF_Load_IO(_0: LP_RTF_Context, _1: LP_SDL_IOStream, _2: ctypes.c_int) -> ctypes.c_int:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_Load_IO
    """
    return raw.RTF_Load_IO(_0, _1, _2)

def RTF_GetTitle(_0: LP_RTF_Context) -> ctypes.c_char_p:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_GetTitle
    """
    return raw.RTF_GetTitle(_0)

def RTF_GetSubject(_0: LP_RTF_Context) -> ctypes.c_char_p:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_GetSubject
    """
    return raw.RTF_GetSubject(_0)

def RTF_GetAuthor(_0: LP_RTF_Context) -> ctypes.c_char_p:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_GetAuthor
    """
    return raw.RTF_GetAuthor(_0)

def RTF_GetHeight(_0: LP_RTF_Context, _1: ctypes.c_int) -> ctypes.c_int:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_GetHeight
    """
    return raw.RTF_GetHeight(_0, _1)

def RTF_Render(_0: LP_RTF_Context, _1: LP_SDL_Rect, _2: ctypes.c_int) -> None:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_Render
    """
    return raw.RTF_Render(_0, _1, _2)

def RTF_FreeContext(_0: LP_RTF_Context) -> None:
    """

    https://wiki.libsdl.org/SDL3_rtf/RTF_FreeContext
    """
    return raw.RTF_FreeContext(_0)

# libSDL3_net.so implementation.

def NET_Version() -> ctypes.c_int:
    """
    This function gets the version of the dynamically linked SDL_net library.

    https://wiki.libsdl.org/SDL3_net/NET_Version
    """
    return raw.NET_Version()

def NET_Init() -> ctypes.c_bool:
    """
    Initialize the SDL_net library.

    https://wiki.libsdl.org/SDL3_net/NET_Init
    """
    return raw.NET_Init()

def NET_Quit() -> None:
    """
    Deinitialize the SDL_net library.

    https://wiki.libsdl.org/SDL3_net/NET_Quit
    """
    return raw.NET_Quit()

def NET_ResolveHostname(host: ctypes.c_char_p) -> LP_NET_Address:
    """
    Resolve a human-readable hostname.

    https://wiki.libsdl.org/SDL3_net/NET_ResolveHostname
    """
    return raw.NET_ResolveHostname(host)

def NET_WaitUntilResolved(address: LP_NET_Address, timeout: ctypes.c_int32) -> NET_Status:
    """
    Block until an address is resolved.

    https://wiki.libsdl.org/SDL3_net/NET_WaitUntilResolved
    """
    return raw.NET_WaitUntilResolved(address, timeout)

def NET_GetAddressStatus(address: LP_NET_Address) -> NET_Status:
    """
    Check if an address is resolved, without blocking.

    https://wiki.libsdl.org/SDL3_net/NET_GetAddressStatus
    """
    return raw.NET_GetAddressStatus(address)

def NET_GetAddressString(address: LP_NET_Address) -> ctypes.c_char_p:
    """
    Get a human-readable string from a resolved address.

    https://wiki.libsdl.org/SDL3_net/NET_GetAddressString
    """
    return raw.NET_GetAddressString(address)

def NET_RefAddress(address: LP_NET_Address) -> LP_NET_Address:
    """
    Add a reference to an [NET_Address](https://wiki.libsdl.org/SDL3_net/NET_Address).

    https://wiki.libsdl.org/SDL3_net/NET_RefAddress
    """
    return raw.NET_RefAddress(address)

def NET_UnrefAddress(address: LP_NET_Address) -> None:
    """
    Drop a reference to an [NET_Address](https://wiki.libsdl.org/SDL3_net/NET_Address).

    https://wiki.libsdl.org/SDL3_net/NET_UnrefAddress
    """
    return raw.NET_UnrefAddress(address)

def NET_SimulateAddressResolutionLoss(percent_loss: ctypes.c_int) -> None:
    """
    Enable simulated address resolution failures.

    https://wiki.libsdl.org/SDL3_net/NET_SimulateAddressResolutionLoss
    """
    return raw.NET_SimulateAddressResolutionLoss(percent_loss)

def NET_CompareAddresses(a: LP_NET_Address, b: LP_NET_Address) -> ctypes.c_int:
    """
    Compare two [NET_Address](https://wiki.libsdl.org/SDL3_net/NET_Address) objects.

    https://wiki.libsdl.org/SDL3_net/NET_CompareAddresses
    """
    return raw.NET_CompareAddresses(a, b)

def NET_GetLocalAddresses(num_addresses: LP_c_int) -> LP_LP_NET_Address:
    """
    Obtain a list of local addresses on the system.

    https://wiki.libsdl.org/SDL3_net/NET_GetLocalAddresses
    """
    return raw.NET_GetLocalAddresses(num_addresses)

def NET_FreeLocalAddresses(addresses: LP_LP_NET_Address) -> None:
    """
    Free the results from [NET_GetLocalAddresses](https://wiki.libsdl.org/SDL3_net/NET_GetLocalAddresses).

    https://wiki.libsdl.org/SDL3_net/NET_FreeLocalAddresses
    """
    return raw.NET_FreeLocalAddresses(addresses)

def NET_CreateClient(address: LP_NET_Address, port: ctypes.c_uint16) -> LP_NET_StreamSocket:
    """
    Begin connecting a socket as a client to a remote server.

    https://wiki.libsdl.org/SDL3_net/NET_CreateClient
    """
    return raw.NET_CreateClient(address, port)

def NET_WaitUntilConnected(sock: LP_NET_StreamSocket, timeout: ctypes.c_int32) -> NET_Status:
    """
    Block until a stream socket has connected to a server.

    https://wiki.libsdl.org/SDL3_net/NET_WaitUntilConnected
    """
    return raw.NET_WaitUntilConnected(sock, timeout)

def NET_CreateServer(addr: LP_NET_Address, port: ctypes.c_uint16) -> LP_NET_Server:
    """
    Create a server, which listens for connections to accept.

    https://wiki.libsdl.org/SDL3_net/NET_CreateServer
    """
    return raw.NET_CreateServer(addr, port)

def NET_AcceptClient(server: LP_NET_Server, client_stream: LP_LP_NET_StreamSocket) -> ctypes.c_bool:
    """
    Create a stream socket for the next pending client connection.

    https://wiki.libsdl.org/SDL3_net/NET_AcceptClient
    """
    return raw.NET_AcceptClient(server, client_stream)

def NET_DestroyServer(server: LP_NET_Server) -> None:
    """
    Dispose of a previously-created server.

    https://wiki.libsdl.org/SDL3_net/NET_DestroyServer
    """
    return raw.NET_DestroyServer(server)

def NET_GetStreamSocketAddress(sock: LP_NET_StreamSocket) -> LP_NET_Address:
    """
    Get the remote address of a stream socket.

    https://wiki.libsdl.org/SDL3_net/NET_GetStreamSocketAddress
    """
    return raw.NET_GetStreamSocketAddress(sock)

def NET_GetConnectionStatus(sock: LP_NET_StreamSocket) -> NET_Status:
    """
    Check if a stream socket is connected, without blocking.

    https://wiki.libsdl.org/SDL3_net/NET_GetConnectionStatus
    """
    return raw.NET_GetConnectionStatus(sock)

def NET_WriteToStreamSocket(sock: LP_NET_StreamSocket, buf: ctypes.c_void_p, buflen: ctypes.c_int) -> ctypes.c_bool:
    """
    Send bytes over a stream socket to a remote system.

    https://wiki.libsdl.org/SDL3_net/NET_WriteToStreamSocket
    """
    return raw.NET_WriteToStreamSocket(sock, buf, buflen)

def NET_GetStreamSocketPendingWrites(sock: LP_NET_StreamSocket) -> ctypes.c_int:
    """
    Query bytes still pending transmission on a stream socket.

    https://wiki.libsdl.org/SDL3_net/NET_GetStreamSocketPendingWrites
    """
    return raw.NET_GetStreamSocketPendingWrites(sock)

def NET_WaitUntilStreamSocketDrained(sock: LP_NET_StreamSocket, timeout: ctypes.c_int32) -> ctypes.c_int:
    """
    Block until all of a stream socket's pending data is sent.

    https://wiki.libsdl.org/SDL3_net/NET_WaitUntilStreamSocketDrained
    """
    return raw.NET_WaitUntilStreamSocketDrained(sock, timeout)

def NET_ReadFromStreamSocket(sock: LP_NET_StreamSocket, buf: ctypes.c_void_p, buflen: ctypes.c_int) -> ctypes.c_int:
    """
    Receive bytes that a remote system sent to a stream socket.

    https://wiki.libsdl.org/SDL3_net/NET_ReadFromStreamSocket
    """
    return raw.NET_ReadFromStreamSocket(sock, buf, buflen)

def NET_SimulateStreamPacketLoss(sock: LP_NET_StreamSocket, percent_loss: ctypes.c_int) -> None:
    """
    Enable simulated stream socket failures.

    https://wiki.libsdl.org/SDL3_net/NET_SimulateStreamPacketLoss
    """
    return raw.NET_SimulateStreamPacketLoss(sock, percent_loss)

def NET_DestroyStreamSocket(sock: LP_NET_StreamSocket) -> None:
    """
    Dispose of a previously-created stream socket.

    https://wiki.libsdl.org/SDL3_net/NET_DestroyStreamSocket
    """
    return raw.NET_DestroyStreamSocket(sock)

def NET_CreateDatagramSocket(addr: LP_NET_Address, port: ctypes.c_uint16) -> LP_NET_DatagramSocket:
    """
    Create and bind a new datagram socket.

    https://wiki.libsdl.org/SDL3_net/NET_CreateDatagramSocket
    """
    return raw.NET_CreateDatagramSocket(addr, port)

def NET_SendDatagram(sock: LP_NET_DatagramSocket, address: LP_NET_Address, port: ctypes.c_uint16, buf: ctypes.c_void_p, buflen: ctypes.c_int) -> ctypes.c_bool:
    """
    Send a new packet over a datagram socket to a remote system.

    https://wiki.libsdl.org/SDL3_net/NET_SendDatagram
    """
    return raw.NET_SendDatagram(sock, address, port, buf, buflen)

def NET_ReceiveDatagram(sock: LP_NET_DatagramSocket, dgram: LP_LP_NET_Datagram) -> ctypes.c_bool:
    """
    Receive a new packet that a remote system sent to a datagram socket.

    https://wiki.libsdl.org/SDL3_net/NET_ReceiveDatagram
    """
    return raw.NET_ReceiveDatagram(sock, dgram)

def NET_DestroyDatagram(dgram: LP_NET_Datagram) -> None:
    """
    Dispose of a datagram packet previously received.

    https://wiki.libsdl.org/SDL3_net/NET_DestroyDatagram
    """
    return raw.NET_DestroyDatagram(dgram)

def NET_SimulateDatagramPacketLoss(sock: LP_NET_DatagramSocket, percent_loss: ctypes.c_int) -> None:
    """
    Enable simulated datagram socket failures.

    https://wiki.libsdl.org/SDL3_net/NET_SimulateDatagramPacketLoss
    """
    return raw.NET_SimulateDatagramPacketLoss(sock, percent_loss)

def NET_DestroyDatagramSocket(sock: LP_NET_DatagramSocket) -> None:
    """
    Dispose of a previously-created datagram socket.

    https://wiki.libsdl.org/SDL3_net/NET_DestroyDatagramSocket
    """
    return raw.NET_DestroyDatagramSocket(sock)

def NET_WaitUntilInputAvailable(vsockets: LP_c_void_p, numsockets: ctypes.c_int, timeout: ctypes.c_int32) -> ctypes.c_int:
    """
    Block on multiple sockets until at least one has data available.

    https://wiki.libsdl.org/SDL3_net/NET_WaitUntilInputAvailable
    """
    return raw.NET_WaitUntilInputAvailable(vsockets, numsockets, timeout)

# libSDL3_shadercross.so implementation.

def SDL_ShaderCross_Init() -> ctypes.c_bool:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_Init
    """
    return raw.SDL_ShaderCross_Init()

def SDL_ShaderCross_Quit() -> None:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_Quit
    """
    return raw.SDL_ShaderCross_Quit()

def SDL_ShaderCross_GetSPIRVShaderFormats() -> SDL_GPUShaderFormat:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_GetSPIRVShaderFormats
    """
    return raw.SDL_ShaderCross_GetSPIRVShaderFormats()

def SDL_ShaderCross_TranspileMSLFromSPIRV(_0: LP_SDL_ShaderCross_SPIRV_Info) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_TranspileMSLFromSPIRV
    """
    return raw.SDL_ShaderCross_TranspileMSLFromSPIRV(_0)

def SDL_ShaderCross_TranspileHLSLFromSPIRV(_0: LP_SDL_ShaderCross_SPIRV_Info) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_TranspileHLSLFromSPIRV
    """
    return raw.SDL_ShaderCross_TranspileHLSLFromSPIRV(_0)

def SDL_ShaderCross_CompileDXBCFromSPIRV(_0: LP_SDL_ShaderCross_SPIRV_Info, _1: LP_c_size_t) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileDXBCFromSPIRV
    """
    return raw.SDL_ShaderCross_CompileDXBCFromSPIRV(_0, _1)

def SDL_ShaderCross_CompileDXILFromSPIRV(_0: LP_SDL_ShaderCross_SPIRV_Info, _1: LP_c_size_t) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileDXILFromSPIRV
    """
    return raw.SDL_ShaderCross_CompileDXILFromSPIRV(_0, _1)

def SDL_ShaderCross_CompileGraphicsShaderFromSPIRV(_0: LP_SDL_GPUDevice, _1: LP_SDL_ShaderCross_SPIRV_Info, _2: LP_SDL_ShaderCross_GraphicsShaderResourceInfo, _3: SDL_PropertiesID) -> LP_SDL_GPUShader:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileGraphicsShaderFromSPIRV
    """
    return raw.SDL_ShaderCross_CompileGraphicsShaderFromSPIRV(_0, _1, _2, _3)

def SDL_ShaderCross_CompileComputePipelineFromSPIRV(_0: LP_SDL_GPUDevice, _1: LP_SDL_ShaderCross_SPIRV_Info, _2: LP_SDL_ShaderCross_ComputePipelineMetadata, _3: SDL_PropertiesID) -> LP_SDL_GPUComputePipeline:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileComputePipelineFromSPIRV
    """
    return raw.SDL_ShaderCross_CompileComputePipelineFromSPIRV(_0, _1, _2, _3)

def SDL_ShaderCross_ReflectGraphicsSPIRV(_0: LP_c_uint8, _1: ctypes.c_size_t, _2: SDL_PropertiesID) -> LP_SDL_ShaderCross_GraphicsShaderMetadata:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_ReflectGraphicsSPIRV
    """
    return raw.SDL_ShaderCross_ReflectGraphicsSPIRV(_0, _1, _2)

def SDL_ShaderCross_ReflectComputeSPIRV(_0: LP_c_uint8, _1: ctypes.c_size_t, _2: SDL_PropertiesID) -> LP_SDL_ShaderCross_ComputePipelineMetadata:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_ReflectComputeSPIRV
    """
    return raw.SDL_ShaderCross_ReflectComputeSPIRV(_0, _1, _2)

def SDL_ShaderCross_GetHLSLShaderFormats() -> SDL_GPUShaderFormat:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_GetHLSLShaderFormats
    """
    return raw.SDL_ShaderCross_GetHLSLShaderFormats()

def SDL_ShaderCross_CompileDXBCFromHLSL(_0: LP_SDL_ShaderCross_HLSL_Info, _1: LP_c_size_t) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileDXBCFromHLSL
    """
    return raw.SDL_ShaderCross_CompileDXBCFromHLSL(_0, _1)

def SDL_ShaderCross_CompileDXILFromHLSL(_0: LP_SDL_ShaderCross_HLSL_Info, _1: LP_c_size_t) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileDXILFromHLSL
    """
    return raw.SDL_ShaderCross_CompileDXILFromHLSL(_0, _1)

def SDL_ShaderCross_CompileSPIRVFromHLSL(_0: LP_SDL_ShaderCross_HLSL_Info, _1: LP_c_size_t) -> ctypes.c_void_p:
    """

    https://wiki.libsdl.org/SDL3_shadercross/SDL_ShaderCross_CompileSPIRVFromHLSL
    """
    return raw.SDL_ShaderCross_CompileSPIRVFromHLSL(_0, _1)