Awesome Reviewers

When exposing a Rust library through multi-language bindings, treat the binding surface as a single canonical API: mirror the underlying Rust types/surfaces instead of reshaping them differently per client, and ensure exported classes/functions are actually registered so clients can import them.

Apply this as:

Example (Python binding wiring):

#[pyclass(name = "PageSignals")]
pub struct PyPageSignals { /* fields */ }

// In module init
fn pdf_inspector(m: &PyModule) -> PyResult<()> {
    m.add_class::<PyPageSignals>()?;
    Ok(())
}

And verify from Python (conceptually): hasattr(pdf_inspector, "PageSignals").