# AUTO-GENERATED by mizan — do not edit

from __future__ import annotations

from collections.abc import Callable
from typing import Any

# Built from frontends/mizan-rust with `maturin develop --features pyo3`.
from mizan_rust import PyMizanClient, PyContextSubscription

from .types import *  # noqa: F401, F403
from .types import BaseModel  # re-import for the synthesized ContextData classes


class MizanClient:
    """Typed Python facade over the PyO3 mizan-rust kernel."""

    def __init__(self, base_url: str, *, session: bool = False,
                 csrf_cookie_name: str = "csrftoken",
                 csrf_header_name: str = "X-CSRFToken") -> None:
        self._inner = PyMizanClient(
            base_url,
            session=session,
            csrf_cookie_name=csrf_cookie_name,
            csrf_header_name=csrf_header_name,
        )

{{ ctx_methods_block }}
{{ call_methods_block }}
    def invalidate(self, context: str) -> None:
        self._inner.invalidate(context)

    def invalidate_scoped(self, context: str, params: dict[str, Any]) -> None:
        self._inner.invalidate_scoped(context, params)


# ── Context data shapes (per-context bundle) ──────────────────────────────

{{ data_classes_block }}
