    m.add_class::<UlmenDictRust>()?;
    m.add_class::<UlmenDictFullRust>()?;
    m.add_class::<UlmenStreamEncoder>()?;
    m.add_function(wrap_pyfunction!(decode_binary_records_rust, m)?)?;
    m.add_function(wrap_pyfunction!(encode_ulmen_llm_rust, m)?)?;
    m.add_function(wrap_pyfunction!(decode_ulmen_llm_rust, m)?)?;
    m.add_function(wrap_pyfunction!(encode_binary_stream_chunked, m)?)?;
    m.add_function(wrap_pyfunction!(count_tokens, m)?)?;
    m.add_function(wrap_pyfunction!(estimate_tokens, m)?)?;
    m.add_function(wrap_pyfunction!(from_json, m)?)?;
    m.add_function(wrap_pyfunction!(to_json, m)?)?;
    m.add_function(wrap_pyfunction!(compare_sizes, m)?)?;
    m.add_function(wrap_pyfunction!(encode_agent_field, m)?)?;
    m.add_function(wrap_pyfunction!(decode_agent_field, m)?)?;
    m.add_function(wrap_pyfunction!(encode_agent_record_rust, m)?)?;
    m.add_function(wrap_pyfunction!(decode_agent_record_rust, m)?)?;
    m.add_function(wrap_pyfunction!(encode_agent_payload_rust, m)?)?;
    m.add_function(wrap_pyfunction!(decode_agent_payload_rust, m)?)?;
    m.add_function(wrap_pyfunction!(validate_agent_payload_rust, m)?)?;
    m.add_function(wrap_pyfunction!(decode_agent_stream_rust, m)?)?;
    m.add_function(wrap_pyfunction!(compress_context_rust, m)?)?;
    m.add_function(wrap_pyfunction!(chunk_payload_rust, m)?)?;
    m.add_function(wrap_pyfunction!(merge_chunks_rust, m)?)?;
    m.add_function(wrap_pyfunction!(parse_llm_output_rust, m)?)?;
    m.add_function(wrap_pyfunction!(count_tokens_exact_rust, m)?)?;
    m.add_function(wrap_pyfunction!(count_tokens_exact_records_rust, m)?)?;