"""Low-level ctypes FFI for transcribe.cpp — AUTOGENERATED. DO NOT EDIT.

Regenerate with:
    uv run --no-project --with 'libclang==18.1.1' \
        bindings/python/_generate/generate.py

Source: include/transcribe/extensions.h
libclang: 18.1.1
"""

import ctypes as _c

# Stable digest of the ABI surface below (structs, enums, macros, layout,
# prototypes). A native provider package echoes this back so the API
# package can reject an ABI-mismatched provider before dlopen.
PUBLIC_HEADER_HASH = "86b16dd97ad1cb58"

# === enum constants ===
TRANSCRIBE_OK = 0
TRANSCRIBE_ERR_INVALID_ARG = 1
TRANSCRIBE_ERR_NOT_IMPLEMENTED = 2
TRANSCRIBE_ERR_FILE_NOT_FOUND = 3
TRANSCRIBE_ERR_GGUF = 4
TRANSCRIBE_ERR_UNSUPPORTED_ARCH = 5
TRANSCRIBE_ERR_UNSUPPORTED_VARIANT = 6
TRANSCRIBE_ERR_OOM = 7
TRANSCRIBE_ERR_BACKEND = 8
TRANSCRIBE_ERR_SAMPLE_RATE = 9
TRANSCRIBE_ERR_UNSUPPORTED_LANGUAGE = 10
TRANSCRIBE_ERR_UNSUPPORTED_TASK = 11
TRANSCRIBE_ERR_UNSUPPORTED_TIMESTAMPS = 12
TRANSCRIBE_ERR_ABORTED = 13
TRANSCRIBE_ERR_BAD_STRUCT_SIZE = 14
TRANSCRIBE_ERR_UNSUPPORTED_PNC = 15
TRANSCRIBE_ERR_UNSUPPORTED_ITN = 16
TRANSCRIBE_ERR_INPUT_TOO_LONG = 17
TRANSCRIBE_ERR_OUTPUT_TRUNCATED = 18
TRANSCRIBE_ABI_MODEL_LOAD_PARAMS = 0
TRANSCRIBE_ABI_SESSION_PARAMS = 1
TRANSCRIBE_ABI_RUN_PARAMS = 2
TRANSCRIBE_ABI_STREAM_PARAMS = 3
TRANSCRIBE_ABI_CAPABILITIES = 4
TRANSCRIBE_ABI_TIMINGS = 5
TRANSCRIBE_ABI_SEGMENT = 6
TRANSCRIBE_ABI_WORD = 7
TRANSCRIBE_ABI_TOKEN = 8
TRANSCRIBE_ABI_STREAM_UPDATE = 9
TRANSCRIBE_ABI_STREAM_TEXT = 10
TRANSCRIBE_ABI_SESSION_LIMITS = 11
TRANSCRIBE_ABI_EXT = 12
TRANSCRIBE_ABI_BACKEND_DEVICE = 13
TRANSCRIBE_LOG_LEVEL_NONE = 0
TRANSCRIBE_LOG_LEVEL_INFO = 1
TRANSCRIBE_LOG_LEVEL_WARN = 2
TRANSCRIBE_LOG_LEVEL_ERROR = 3
TRANSCRIBE_LOG_LEVEL_DEBUG = 4
TRANSCRIBE_LOG_LEVEL_CONT = 5
TRANSCRIBE_TASK_TRANSCRIBE = 0
TRANSCRIBE_TASK_TRANSLATE = 1
TRANSCRIBE_TIMESTAMPS_NONE = 0
TRANSCRIBE_TIMESTAMPS_AUTO = 1
TRANSCRIBE_TIMESTAMPS_SEGMENT = 2
TRANSCRIBE_TIMESTAMPS_WORD = 3
TRANSCRIBE_TIMESTAMPS_TOKEN = 4
TRANSCRIBE_KV_TYPE_AUTO = 0
TRANSCRIBE_KV_TYPE_F32 = 1
TRANSCRIBE_KV_TYPE_F16 = 2
TRANSCRIBE_PNC_MODE_DEFAULT = 0
TRANSCRIBE_PNC_MODE_OFF = 1
TRANSCRIBE_PNC_MODE_ON = 2
TRANSCRIBE_ITN_MODE_DEFAULT = 0
TRANSCRIBE_ITN_MODE_OFF = 1
TRANSCRIBE_ITN_MODE_ON = 2
TRANSCRIBE_EXT_SLOT_RUN = 0
TRANSCRIBE_EXT_SLOT_STREAM = 1
TRANSCRIBE_BACKEND_AUTO = 0
TRANSCRIBE_BACKEND_CPU = 1
TRANSCRIBE_BACKEND_METAL = 2
TRANSCRIBE_BACKEND_VULKAN = 3
TRANSCRIBE_BACKEND_CPU_ACCEL = 4
TRANSCRIBE_BACKEND_CUDA = 5
TRANSCRIBE_DEVICE_TYPE_CPU = 0
TRANSCRIBE_DEVICE_TYPE_GPU = 1
TRANSCRIBE_DEVICE_TYPE_IGPU = 2
TRANSCRIBE_DEVICE_TYPE_ACCEL = 3
TRANSCRIBE_FEATURE_INITIAL_PROMPT = 0
TRANSCRIBE_FEATURE_TEMPERATURE_FALLBACK = 1
TRANSCRIBE_FEATURE_LONG_FORM = 2
TRANSCRIBE_FEATURE_CANCELLATION = 3
TRANSCRIBE_FEATURE_PNC = 4
TRANSCRIBE_FEATURE_ITN = 5
TRANSCRIBE_STREAM_IDLE = 0
TRANSCRIBE_STREAM_ACTIVE = 1
TRANSCRIBE_STREAM_FINISHED = 2
TRANSCRIBE_STREAM_FAILED = 3
TRANSCRIBE_STREAM_COMMIT_AUTO = 0
TRANSCRIBE_STREAM_COMMIT_ON_FINALIZE = 1
TRANSCRIBE_STREAM_COMMIT_STABLE_PREFIX = 2
TRANSCRIBE_WHISPER_PROMPT_FIRST_SEGMENT = 0
TRANSCRIBE_WHISPER_PROMPT_ALL_SEGMENTS = 1

# === macro constants (integer object-like macros) ===
TRANSCRIBE_EXT_KIND_MOONSHINE_STREAMING_STREAM = 1414746957
TRANSCRIBE_EXT_KIND_PARAKEET_BUFFERED_STREAM = 1396853584
TRANSCRIBE_EXT_KIND_PARAKEET_STREAM = 1414744912
TRANSCRIBE_EXT_KIND_VOXTRAL_REALTIME_STREAM = 1414746710
TRANSCRIBE_EXT_KIND_WHISPER_RUN = 1314015319

# === structs ===
class transcribe_ext(_c.Structure):
    pass
class transcribe_backend_device(_c.Structure):
    pass
class transcribe_model_load_params(_c.Structure):
    pass
class transcribe_session_params(_c.Structure):
    pass
class transcribe_run_params(_c.Structure):
    pass
class transcribe_capabilities(_c.Structure):
    pass
class transcribe_session_limits(_c.Structure):
    pass
class transcribe_stream_params(_c.Structure):
    pass
class transcribe_stream_update(_c.Structure):
    pass
class transcribe_stream_text(_c.Structure):
    pass
class transcribe_timings(_c.Structure):
    pass
class transcribe_segment(_c.Structure):
    pass
class transcribe_word(_c.Structure):
    pass
class transcribe_token(_c.Structure):
    pass
class transcribe_moonshine_streaming_stream_ext(_c.Structure):
    pass
class transcribe_parakeet_stream_ext(_c.Structure):
    pass
class transcribe_parakeet_buffered_stream_ext(_c.Structure):
    pass
class transcribe_voxtral_realtime_stream_ext(_c.Structure):
    pass
class transcribe_whisper_run_ext(_c.Structure):
    pass
class transcribe_whisper_chunk_trace(_c.Structure):
    pass

transcribe_ext._fields_ = [("size", _c.c_uint64), ("kind", _c.c_uint32)]
transcribe_backend_device._fields_ = [("struct_size", _c.c_uint64), ("name", _c.c_char_p), ("description", _c.c_char_p), ("kind", _c.c_char_p), ("device_id", _c.c_char_p), ("memory_total", _c.c_uint64), ("memory_free", _c.c_uint64), ("device_type", _c.c_int)]
transcribe_model_load_params._fields_ = [("struct_size", _c.c_uint64), ("backend", _c.c_int), ("gpu_device", _c.c_int)]
transcribe_session_params._fields_ = [("struct_size", _c.c_uint64), ("n_threads", _c.c_int), ("kv_type", _c.c_int), ("n_ctx", _c.c_int32)]
transcribe_run_params._fields_ = [("struct_size", _c.c_uint64), ("task", _c.c_int), ("timestamps", _c.c_int), ("pnc", _c.c_int), ("itn", _c.c_int), ("language", _c.c_char_p), ("target_language", _c.c_char_p), ("keep_special_tags", _c.c_bool), ("family", _c.POINTER(transcribe_ext)), ("spec_k_drafts", _c.c_int32)]
transcribe_capabilities._fields_ = [("struct_size", _c.c_uint64), ("native_sample_rate", _c.c_int32), ("n_languages", _c.c_int), ("languages", _c.POINTER(_c.c_char_p)), ("max_timestamp_kind", _c.c_int), ("supports_language_detect", _c.c_bool), ("supports_translate", _c.c_bool), ("supports_streaming", _c.c_bool), ("supports_spec_decode", _c.c_bool), ("max_audio_ms", _c.c_int64), ("n_translate_target_languages", _c.c_int), ("translate_target_languages", _c.POINTER(_c.c_char_p))]
transcribe_session_limits._fields_ = [("struct_size", _c.c_uint64), ("effective_n_ctx", _c.c_int32), ("effective_max_audio_ms", _c.c_int64), ("max_kv_bytes", _c.c_int64)]
transcribe_stream_params._fields_ = [("struct_size", _c.c_uint64), ("family", _c.POINTER(transcribe_ext)), ("commit_policy", _c.c_int), ("stable_prefix_agreement_n", _c.c_uint32)]
transcribe_stream_update._fields_ = [("struct_size", _c.c_uint64), ("result_changed", _c.c_bool), ("is_final", _c.c_bool), ("revision", _c.c_int32), ("input_received_ms", _c.c_int64), ("audio_committed_ms", _c.c_int64), ("buffered_ms", _c.c_int64), ("committed_changed", _c.c_bool), ("tentative_changed", _c.c_bool)]
transcribe_stream_text._fields_ = [("struct_size", _c.c_uint64), ("full_text", _c.c_char_p), ("full_text_bytes", _c.c_uint64), ("committed_text", _c.c_char_p), ("committed_text_bytes", _c.c_uint64), ("tentative_text", _c.c_char_p), ("tentative_text_bytes", _c.c_uint64), ("raw_tentative_start_bytes", _c.c_uint64)]
transcribe_timings._fields_ = [("struct_size", _c.c_uint64), ("load_ms", _c.c_float), ("mel_ms", _c.c_float), ("encode_ms", _c.c_float), ("decode_ms", _c.c_float)]
transcribe_segment._fields_ = [("struct_size", _c.c_uint64), ("t0_ms", _c.c_int64), ("t1_ms", _c.c_int64), ("first_word", _c.c_int), ("n_words", _c.c_int), ("first_token", _c.c_int), ("n_tokens", _c.c_int), ("text", _c.c_char_p)]
transcribe_word._fields_ = [("struct_size", _c.c_uint64), ("t0_ms", _c.c_int64), ("t1_ms", _c.c_int64), ("seg_index", _c.c_int), ("first_token", _c.c_int), ("n_tokens", _c.c_int), ("text", _c.c_char_p)]
transcribe_token._fields_ = [("struct_size", _c.c_uint64), ("id", _c.c_int), ("p", _c.c_float), ("t0_ms", _c.c_int64), ("t1_ms", _c.c_int64), ("seg_index", _c.c_int), ("word_index", _c.c_int), ("text", _c.c_char_p)]
transcribe_moonshine_streaming_stream_ext._fields_ = [("ext", transcribe_ext), ("min_decode_interval_ms", _c.c_int32)]
transcribe_parakeet_stream_ext._fields_ = [("ext", transcribe_ext), ("att_context_right", _c.c_int32)]
transcribe_parakeet_buffered_stream_ext._fields_ = [("ext", transcribe_ext), ("left_ms", _c.c_int32), ("chunk_ms", _c.c_int32), ("right_ms", _c.c_int32)]
transcribe_voxtral_realtime_stream_ext._fields_ = [("ext", transcribe_ext), ("num_delay_tokens", _c.c_int32), ("min_decode_interval_ms", _c.c_int32)]
transcribe_whisper_run_ext._fields_ = [("ext", transcribe_ext), ("initial_prompt", _c.c_char_p), ("prompt_tokens", _c.POINTER(_c.c_int32)), ("n_prompt_tokens", _c.c_size_t), ("prompt_condition", _c.c_int), ("condition_on_prev_tokens", _c.c_bool), ("max_prev_context_tokens", _c.c_int32), ("temperature", _c.c_float), ("temperature_inc", _c.c_float), ("compression_ratio_thold", _c.c_float), ("logprob_thold", _c.c_float), ("no_speech_thold", _c.c_float), ("seed", _c.c_uint32), ("max_initial_timestamp", _c.c_float)]
transcribe_whisper_chunk_trace._fields_ = [("struct_size", _c.c_uint64), ("t0_ms", _c.c_int64), ("t1_ms", _c.c_int64), ("temperature_used", _c.c_float), ("compression_ratio", _c.c_float), ("avg_logprob", _c.c_float), ("no_speech_prob", _c.c_float), ("no_speech_triggered", _c.c_bool), ("n_fallbacks", _c.c_int32)]

# === ABI metadata ===
# transcribe_abi_struct id per struct (for the native size/align check).
ABI_STRUCT_IDS = {
    'transcribe_ext': 12,
    'transcribe_backend_device': 13,
    'transcribe_model_load_params': 0,
    'transcribe_session_params': 1,
    'transcribe_run_params': 2,
    'transcribe_capabilities': 4,
    'transcribe_session_limits': 11,
    'transcribe_stream_params': 3,
    'transcribe_stream_update': 9,
    'transcribe_stream_text': 10,
    'transcribe_timings': 5,
    'transcribe_segment': 6,
    'transcribe_word': 7,
    'transcribe_token': 8,
}

# C-compiler layout captured at generation (for offset self-check).
STRUCT_LAYOUT = {
    'transcribe_ext': {'size': 16, 'align': 8, 'offsets': {'size': 0, 'kind': 8}},
    'transcribe_backend_device': {'size': 64, 'align': 8, 'offsets': {'struct_size': 0, 'name': 8, 'description': 16, 'kind': 24, 'device_id': 32, 'memory_total': 40, 'memory_free': 48, 'device_type': 56}},
    'transcribe_model_load_params': {'size': 16, 'align': 8, 'offsets': {'struct_size': 0, 'backend': 8, 'gpu_device': 12}},
    'transcribe_session_params': {'size': 24, 'align': 8, 'offsets': {'struct_size': 0, 'n_threads': 8, 'kv_type': 12, 'n_ctx': 16}},
    'transcribe_run_params': {'size': 64, 'align': 8, 'offsets': {'struct_size': 0, 'task': 8, 'timestamps': 12, 'pnc': 16, 'itn': 20, 'language': 24, 'target_language': 32, 'keep_special_tags': 40, 'family': 48, 'spec_k_drafts': 56}},
    'transcribe_capabilities': {'size': 56, 'align': 8, 'offsets': {'struct_size': 0, 'native_sample_rate': 8, 'n_languages': 12, 'languages': 16, 'max_timestamp_kind': 24, 'supports_language_detect': 28, 'supports_translate': 29, 'supports_streaming': 30, 'supports_spec_decode': 31, 'max_audio_ms': 32, 'n_translate_target_languages': 40, 'translate_target_languages': 48}},
    'transcribe_session_limits': {'size': 32, 'align': 8, 'offsets': {'struct_size': 0, 'effective_n_ctx': 8, 'effective_max_audio_ms': 16, 'max_kv_bytes': 24}},
    'transcribe_stream_params': {'size': 24, 'align': 8, 'offsets': {'struct_size': 0, 'family': 8, 'commit_policy': 16, 'stable_prefix_agreement_n': 20}},
    'transcribe_stream_update': {'size': 48, 'align': 8, 'offsets': {'struct_size': 0, 'result_changed': 8, 'is_final': 9, 'revision': 12, 'input_received_ms': 16, 'audio_committed_ms': 24, 'buffered_ms': 32, 'committed_changed': 40, 'tentative_changed': 41}},
    'transcribe_stream_text': {'size': 64, 'align': 8, 'offsets': {'struct_size': 0, 'full_text': 8, 'full_text_bytes': 16, 'committed_text': 24, 'committed_text_bytes': 32, 'tentative_text': 40, 'tentative_text_bytes': 48, 'raw_tentative_start_bytes': 56}},
    'transcribe_timings': {'size': 24, 'align': 8, 'offsets': {'struct_size': 0, 'load_ms': 8, 'mel_ms': 12, 'encode_ms': 16, 'decode_ms': 20}},
    'transcribe_segment': {'size': 48, 'align': 8, 'offsets': {'struct_size': 0, 't0_ms': 8, 't1_ms': 16, 'first_word': 24, 'n_words': 28, 'first_token': 32, 'n_tokens': 36, 'text': 40}},
    'transcribe_word': {'size': 48, 'align': 8, 'offsets': {'struct_size': 0, 't0_ms': 8, 't1_ms': 16, 'seg_index': 24, 'first_token': 28, 'n_tokens': 32, 'text': 40}},
    'transcribe_token': {'size': 48, 'align': 8, 'offsets': {'struct_size': 0, 'id': 8, 'p': 12, 't0_ms': 16, 't1_ms': 24, 'seg_index': 32, 'word_index': 36, 'text': 40}},
    'transcribe_moonshine_streaming_stream_ext': {'size': 24, 'align': 8, 'offsets': {'ext': 0, 'min_decode_interval_ms': 16}},
    'transcribe_parakeet_stream_ext': {'size': 24, 'align': 8, 'offsets': {'ext': 0, 'att_context_right': 16}},
    'transcribe_parakeet_buffered_stream_ext': {'size': 32, 'align': 8, 'offsets': {'ext': 0, 'left_ms': 16, 'chunk_ms': 20, 'right_ms': 24}},
    'transcribe_voxtral_realtime_stream_ext': {'size': 24, 'align': 8, 'offsets': {'ext': 0, 'num_delay_tokens': 16, 'min_decode_interval_ms': 20}},
    'transcribe_whisper_run_ext': {'size': 80, 'align': 8, 'offsets': {'ext': 0, 'initial_prompt': 16, 'prompt_tokens': 24, 'n_prompt_tokens': 32, 'prompt_condition': 40, 'condition_on_prev_tokens': 44, 'max_prev_context_tokens': 48, 'temperature': 52, 'temperature_inc': 56, 'compression_ratio_thold': 60, 'logprob_thold': 64, 'no_speech_thold': 68, 'seed': 72, 'max_initial_timestamp': 76}},
    'transcribe_whisper_chunk_trace': {'size': 48, 'align': 8, 'offsets': {'struct_size': 0, 't0_ms': 8, 't1_ms': 16, 'temperature_used': 24, 'compression_ratio': 28, 'avg_logprob': 32, 'no_speech_prob': 36, 'no_speech_triggered': 40, 'n_fallbacks': 44}},
}

# === function prototypes ===
def configure(lib):
    """Stamp restype/argtypes onto a loaded CDLL."""
    lib.transcribe_abi_struct_align.restype = _c.c_size_t
    lib.transcribe_abi_struct_align.argtypes = [_c.c_int]
    lib.transcribe_abi_struct_size.restype = _c.c_size_t
    lib.transcribe_abi_struct_size.argtypes = [_c.c_int]
    lib.transcribe_backend_available.restype = _c.c_bool
    lib.transcribe_backend_available.argtypes = [_c.c_int]
    lib.transcribe_backend_device_count.restype = _c.c_int
    lib.transcribe_backend_device_count.argtypes = []
    lib.transcribe_backend_device_init.restype = None
    lib.transcribe_backend_device_init.argtypes = [_c.POINTER(transcribe_backend_device)]
    lib.transcribe_batch_detected_language.restype = _c.c_char_p
    lib.transcribe_batch_detected_language.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_full_text.restype = _c.c_char_p
    lib.transcribe_batch_full_text.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_get_segment.restype = _c.c_int
    lib.transcribe_batch_get_segment.argtypes = [_c.c_void_p, _c.c_int, _c.c_int, _c.POINTER(transcribe_segment)]
    lib.transcribe_batch_get_timings.restype = _c.c_int
    lib.transcribe_batch_get_timings.argtypes = [_c.c_void_p, _c.c_int, _c.POINTER(transcribe_timings)]
    lib.transcribe_batch_get_token.restype = _c.c_int
    lib.transcribe_batch_get_token.argtypes = [_c.c_void_p, _c.c_int, _c.c_int, _c.POINTER(transcribe_token)]
    lib.transcribe_batch_get_word.restype = _c.c_int
    lib.transcribe_batch_get_word.argtypes = [_c.c_void_p, _c.c_int, _c.c_int, _c.POINTER(transcribe_word)]
    lib.transcribe_batch_n_results.restype = _c.c_int
    lib.transcribe_batch_n_results.argtypes = [_c.c_void_p]
    lib.transcribe_batch_n_segments.restype = _c.c_int
    lib.transcribe_batch_n_segments.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_n_tokens.restype = _c.c_int
    lib.transcribe_batch_n_tokens.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_n_words.restype = _c.c_int
    lib.transcribe_batch_n_words.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_returned_timestamp_kind.restype = _c.c_int
    lib.transcribe_batch_returned_timestamp_kind.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_batch_status.restype = _c.c_int
    lib.transcribe_batch_status.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_capabilities_init.restype = None
    lib.transcribe_capabilities_init.argtypes = [_c.POINTER(transcribe_capabilities)]
    lib.transcribe_close.restype = None
    lib.transcribe_close.argtypes = [_c.c_void_p]
    lib.transcribe_detected_language.restype = _c.c_char_p
    lib.transcribe_detected_language.argtypes = [_c.c_void_p]
    lib.transcribe_ext_check.restype = _c.c_int
    lib.transcribe_ext_check.argtypes = [_c.POINTER(transcribe_ext), _c.c_uint32, _c.c_uint64]
    lib.transcribe_full_text.restype = _c.c_char_p
    lib.transcribe_full_text.argtypes = [_c.c_void_p]
    lib.transcribe_get_backend_device.restype = _c.c_int
    lib.transcribe_get_backend_device.argtypes = [_c.c_int, _c.POINTER(transcribe_backend_device)]
    lib.transcribe_get_model.restype = _c.c_void_p
    lib.transcribe_get_model.argtypes = [_c.c_void_p]
    lib.transcribe_get_segment.restype = _c.c_int
    lib.transcribe_get_segment.argtypes = [_c.c_void_p, _c.c_int, _c.POINTER(transcribe_segment)]
    lib.transcribe_get_timings.restype = _c.c_int
    lib.transcribe_get_timings.argtypes = [_c.c_void_p, _c.POINTER(transcribe_timings)]
    lib.transcribe_get_token.restype = _c.c_int
    lib.transcribe_get_token.argtypes = [_c.c_void_p, _c.c_int, _c.POINTER(transcribe_token)]
    lib.transcribe_get_whisper_chunk_count.restype = _c.c_int
    lib.transcribe_get_whisper_chunk_count.argtypes = [_c.c_void_p]
    lib.transcribe_get_whisper_chunk_trace.restype = _c.c_int
    lib.transcribe_get_whisper_chunk_trace.argtypes = [_c.c_void_p, _c.c_int, _c.POINTER(transcribe_whisper_chunk_trace)]
    lib.transcribe_get_word.restype = _c.c_int
    lib.transcribe_get_word.argtypes = [_c.c_void_p, _c.c_int, _c.POINTER(transcribe_word)]
    lib.transcribe_init_backends.restype = _c.c_int
    lib.transcribe_init_backends.argtypes = [_c.c_char_p]
    lib.transcribe_init_backends_default.restype = _c.c_int
    lib.transcribe_init_backends_default.argtypes = []
    lib.transcribe_log_set.restype = None
    lib.transcribe_log_set.argtypes = [_c.CFUNCTYPE(None, _c.c_int, _c.c_char_p, _c.c_void_p), _c.c_void_p]
    lib.transcribe_model_accepts_ext_kind.restype = _c.c_bool
    lib.transcribe_model_accepts_ext_kind.argtypes = [_c.c_void_p, _c.c_int, _c.c_uint32]
    lib.transcribe_model_arch_string.restype = _c.c_char_p
    lib.transcribe_model_arch_string.argtypes = [_c.c_void_p]
    lib.transcribe_model_backend.restype = _c.c_char_p
    lib.transcribe_model_backend.argtypes = [_c.c_void_p]
    lib.transcribe_model_free.restype = None
    lib.transcribe_model_free.argtypes = [_c.c_void_p]
    lib.transcribe_model_get_capabilities.restype = _c.c_int
    lib.transcribe_model_get_capabilities.argtypes = [_c.c_void_p, _c.POINTER(transcribe_capabilities)]
    lib.transcribe_model_get_device.restype = _c.c_int
    lib.transcribe_model_get_device.argtypes = [_c.c_void_p, _c.POINTER(transcribe_backend_device)]
    lib.transcribe_model_load_file.restype = _c.c_int
    lib.transcribe_model_load_file.argtypes = [_c.c_char_p, _c.POINTER(transcribe_model_load_params), _c.POINTER(_c.c_void_p)]
    lib.transcribe_model_load_params_init.restype = None
    lib.transcribe_model_load_params_init.argtypes = [_c.POINTER(transcribe_model_load_params)]
    lib.transcribe_model_meta_val_str.restype = _c.c_char_p
    lib.transcribe_model_meta_val_str.argtypes = [_c.c_void_p, _c.c_char_p]
    lib.transcribe_model_supports.restype = _c.c_bool
    lib.transcribe_model_supports.argtypes = [_c.c_void_p, _c.c_int]
    lib.transcribe_model_variant_string.restype = _c.c_char_p
    lib.transcribe_model_variant_string.argtypes = [_c.c_void_p]
    lib.transcribe_moonshine_streaming_stream_ext_init.restype = None
    lib.transcribe_moonshine_streaming_stream_ext_init.argtypes = [_c.POINTER(transcribe_moonshine_streaming_stream_ext)]
    lib.transcribe_n_segments.restype = _c.c_int
    lib.transcribe_n_segments.argtypes = [_c.c_void_p]
    lib.transcribe_n_tokens.restype = _c.c_int
    lib.transcribe_n_tokens.argtypes = [_c.c_void_p]
    lib.transcribe_n_words.restype = _c.c_int
    lib.transcribe_n_words.argtypes = [_c.c_void_p]
    lib.transcribe_open.restype = _c.c_int
    lib.transcribe_open.argtypes = [_c.c_char_p, _c.POINTER(transcribe_model_load_params), _c.POINTER(transcribe_session_params), _c.POINTER(_c.c_void_p)]
    lib.transcribe_parakeet_buffered_stream_ext_init.restype = None
    lib.transcribe_parakeet_buffered_stream_ext_init.argtypes = [_c.POINTER(transcribe_parakeet_buffered_stream_ext)]
    lib.transcribe_parakeet_stream_ext_init.restype = None
    lib.transcribe_parakeet_stream_ext_init.argtypes = [_c.POINTER(transcribe_parakeet_stream_ext)]
    lib.transcribe_print_timings.restype = None
    lib.transcribe_print_timings.argtypes = [_c.c_void_p]
    lib.transcribe_reset_timings.restype = None
    lib.transcribe_reset_timings.argtypes = [_c.c_void_p]
    lib.transcribe_returned_timestamp_kind.restype = _c.c_int
    lib.transcribe_returned_timestamp_kind.argtypes = [_c.c_void_p]
    lib.transcribe_run.restype = _c.c_int
    lib.transcribe_run.argtypes = [_c.c_void_p, _c.POINTER(_c.c_float), _c.c_int, _c.POINTER(transcribe_run_params)]
    lib.transcribe_run_batch.restype = _c.c_int
    lib.transcribe_run_batch.argtypes = [_c.c_void_p, _c.POINTER(_c.POINTER(_c.c_float)), _c.POINTER(_c.c_int), _c.c_int, _c.POINTER(transcribe_run_params)]
    lib.transcribe_run_params_init.restype = None
    lib.transcribe_run_params_init.argtypes = [_c.POINTER(transcribe_run_params)]
    lib.transcribe_segment_init.restype = None
    lib.transcribe_segment_init.argtypes = [_c.POINTER(transcribe_segment)]
    lib.transcribe_session_free.restype = None
    lib.transcribe_session_free.argtypes = [_c.c_void_p]
    lib.transcribe_session_get_limits.restype = _c.c_int
    lib.transcribe_session_get_limits.argtypes = [_c.c_void_p, _c.POINTER(transcribe_session_limits)]
    lib.transcribe_session_init.restype = _c.c_int
    lib.transcribe_session_init.argtypes = [_c.c_void_p, _c.POINTER(transcribe_session_params), _c.POINTER(_c.c_void_p)]
    lib.transcribe_session_limits_init.restype = None
    lib.transcribe_session_limits_init.argtypes = [_c.POINTER(transcribe_session_limits)]
    lib.transcribe_session_params_init.restype = None
    lib.transcribe_session_params_init.argtypes = [_c.POINTER(transcribe_session_params)]
    lib.transcribe_set_abort_callback.restype = None
    lib.transcribe_set_abort_callback.argtypes = [_c.c_void_p, _c.CFUNCTYPE(_c.c_bool, _c.c_void_p), _c.c_void_p]
    lib.transcribe_status_string.restype = _c.c_char_p
    lib.transcribe_status_string.argtypes = [_c.c_int]
    lib.transcribe_stream_begin.restype = _c.c_int
    lib.transcribe_stream_begin.argtypes = [_c.c_void_p, _c.POINTER(transcribe_run_params), _c.POINTER(transcribe_stream_params)]
    lib.transcribe_stream_feed.restype = _c.c_int
    lib.transcribe_stream_feed.argtypes = [_c.c_void_p, _c.POINTER(_c.c_float), _c.c_int, _c.POINTER(transcribe_stream_update)]
    lib.transcribe_stream_finalize.restype = _c.c_int
    lib.transcribe_stream_finalize.argtypes = [_c.c_void_p, _c.POINTER(transcribe_stream_update)]
    lib.transcribe_stream_get_state.restype = _c.c_int
    lib.transcribe_stream_get_state.argtypes = [_c.c_void_p]
    lib.transcribe_stream_get_text.restype = _c.c_int
    lib.transcribe_stream_get_text.argtypes = [_c.c_void_p, _c.POINTER(transcribe_stream_text)]
    lib.transcribe_stream_last_status.restype = _c.c_int
    lib.transcribe_stream_last_status.argtypes = [_c.c_void_p]
    lib.transcribe_stream_n_committed_segments.restype = _c.c_int
    lib.transcribe_stream_n_committed_segments.argtypes = [_c.c_void_p]
    lib.transcribe_stream_n_committed_tokens.restype = _c.c_int
    lib.transcribe_stream_n_committed_tokens.argtypes = [_c.c_void_p]
    lib.transcribe_stream_n_committed_words.restype = _c.c_int
    lib.transcribe_stream_n_committed_words.argtypes = [_c.c_void_p]
    lib.transcribe_stream_params_init.restype = None
    lib.transcribe_stream_params_init.argtypes = [_c.POINTER(transcribe_stream_params)]
    lib.transcribe_stream_reset.restype = None
    lib.transcribe_stream_reset.argtypes = [_c.c_void_p]
    lib.transcribe_stream_revision.restype = _c.c_int
    lib.transcribe_stream_revision.argtypes = [_c.c_void_p]
    lib.transcribe_stream_text_init.restype = None
    lib.transcribe_stream_text_init.argtypes = [_c.POINTER(transcribe_stream_text)]
    lib.transcribe_stream_update_init.restype = None
    lib.transcribe_stream_update_init.argtypes = [_c.POINTER(transcribe_stream_update)]
    lib.transcribe_timings_init.restype = None
    lib.transcribe_timings_init.argtypes = [_c.POINTER(transcribe_timings)]
    lib.transcribe_token_init.restype = None
    lib.transcribe_token_init.argtypes = [_c.POINTER(transcribe_token)]
    lib.transcribe_tokenize.restype = _c.c_int
    lib.transcribe_tokenize.argtypes = [_c.c_void_p, _c.c_char_p, _c.POINTER(_c.c_int32), _c.c_size_t]
    lib.transcribe_version.restype = _c.c_char_p
    lib.transcribe_version.argtypes = []
    lib.transcribe_version_commit.restype = _c.c_char_p
    lib.transcribe_version_commit.argtypes = []
    lib.transcribe_voxtral_realtime_stream_ext_init.restype = None
    lib.transcribe_voxtral_realtime_stream_ext_init.argtypes = [_c.POINTER(transcribe_voxtral_realtime_stream_ext)]
    lib.transcribe_was_aborted.restype = _c.c_bool
    lib.transcribe_was_aborted.argtypes = [_c.c_void_p]
    lib.transcribe_was_truncated.restype = _c.c_bool
    lib.transcribe_was_truncated.argtypes = [_c.c_void_p]
    lib.transcribe_whisper_chunk_trace_init.restype = None
    lib.transcribe_whisper_chunk_trace_init.argtypes = [_c.POINTER(transcribe_whisper_chunk_trace)]
    lib.transcribe_whisper_run_ext_init.restype = None
    lib.transcribe_whisper_run_ext_init.argtypes = [_c.POINTER(transcribe_whisper_run_ext)]
    lib.transcribe_word_init.restype = None
    lib.transcribe_word_init.argtypes = [_c.POINTER(transcribe_word)]
