DS4_SOURCE_REPOSITORY = "https://github.com/antirez/ds4"
DS4_BACKEND_NAME = "ds4"
DS4_BINDING_IMPORT_NAME = "pyds4"
DS4_BINDING_VERSION_FALLBACK = "unknown"
DS4_API_COMMIT = "8809b90a1e3247389d7652b565ab6772e036f1ea"
DS4_API_COMMIT_DATE = "2026-05-12T19:09:16+02:00"
DS4_API_COMMIT_SUBJECT = "Merge pull request #98 from Chida82/benchtypos"
DS4_API_VERSION: int | None = None

DS4_SUPPORTED_NATIVE_BACKENDS = ("metal", "cuda", "cpu")

DS4_SAMPLE_ADVANCES_SESSION = False
DS4_ARGMAX_ADVANCES_SESSION = False
DS4_SESSION_EVAL_ADVANCES_SESSION = True
DS4_SESSION_THREAD_POLICY = "single_worker_session_owner"

DS4_PUBLIC_C_SYMBOLS = (
    "ds4_engine_open",
    "ds4_engine_close",
    "ds4_engine_summary",
    "ds4_backend_name",
    "ds4_think_mode_enabled",
    "ds4_think_mode_name",
    "ds4_think_max_prefix",
    "ds4_think_max_min_context",
    "ds4_think_mode_for_context",
    "ds4_context_memory_estimate",
    "ds4_log_is_tty",
    "ds4_log",
    "ds4_engine_generate_argmax",
    "ds4_engine_collect_imatrix",
    "ds4_engine_dump_tokens",
    "ds4_dump_text_tokenization",
    "ds4_engine_head_test",
    "ds4_engine_first_token_test",
    "ds4_engine_metal_graph_test",
    "ds4_engine_metal_graph_full_test",
    "ds4_engine_metal_graph_prompt_test",
    "ds4_tokens_push",
    "ds4_tokens_free",
    "ds4_tokens_copy",
    "ds4_tokens_starts_with",
    "ds4_tokenize_text",
    "ds4_tokenize_rendered_chat",
    "ds4_chat_begin",
    "ds4_encode_chat_prompt",
    "ds4_chat_append_max_effort_prefix",
    "ds4_chat_append_message",
    "ds4_chat_append_assistant_prefix",
    "ds4_token_text",
    "ds4_token_eos",
    "ds4_session_create",
    "ds4_session_free",
    "ds4_session_set_progress",
    "ds4_session_sync",
    "ds4_session_rewrite_requires_rebuild",
    "ds4_session_rewrite_from_common",
    "ds4_session_common_prefix",
    "ds4_session_argmax",
    "ds4_session_argmax_excluding",
    "ds4_session_sample",
    "ds4_session_top_logprobs",
    "ds4_session_token_logprob",
    "ds4_session_eval",
    "ds4_session_eval_speculative_argmax",
    "ds4_session_invalidate",
    "ds4_session_rewind",
    "ds4_session_pos",
    "ds4_session_ctx",
    "ds4_engine_routed_quant_bits",
    "ds4_engine_has_mtp",
    "ds4_engine_mtp_draft_tokens",
    "ds4_session_tokens",
    "ds4_session_payload_bytes",
    "ds4_session_save_payload",
    "ds4_session_load_payload",
    "ds4_session_save_snapshot",
    "ds4_session_load_snapshot",
    "ds4_session_snapshot_free",
)

DS4_REQUIRED_C_SYMBOLS = (
    "ds4_engine_open",
    "ds4_engine_close",
    "ds4_backend_name",
    "ds4_think_mode_enabled",
    "ds4_think_mode_name",
    "ds4_think_max_prefix",
    "ds4_think_max_min_context",
    "ds4_think_mode_for_context",
    "ds4_context_memory_estimate",
    "ds4_tokens_free",
    "ds4_tokens_copy",
    "ds4_tokens_starts_with",
    "ds4_tokenize_text",
    "ds4_tokenize_rendered_chat",
    "ds4_chat_begin",
    "ds4_encode_chat_prompt",
    "ds4_chat_append_message",
    "ds4_chat_append_assistant_prefix",
    "ds4_token_text",
    "ds4_token_eos",
    "ds4_session_create",
    "ds4_session_free",
    "ds4_session_set_progress",
    "ds4_session_sync",
    "ds4_session_argmax",
    "ds4_session_argmax_excluding",
    "ds4_session_sample",
    "ds4_session_eval",
    "ds4_session_invalidate",
    "ds4_session_rewind",
    "ds4_session_pos",
    "ds4_session_ctx",
    "ds4_engine_routed_quant_bits",
    "ds4_engine_has_mtp",
    "ds4_engine_mtp_draft_tokens",
    "ds4_session_tokens",
)
