@classmethod
def from_dict(cls, data: dict[str, Any]) -> "Rule":
payload = dict(data)
access = payload.get("access")
if isinstance(access, dict):
access_payload = dict(access)
session_types = access_payload.get("session_types")
if isinstance(session_types, dict):
access_payload["session_types"] = SessionTypeAccess(**session_types)
payload["access"] = AccessBlock(**access_payload)
limits = payload.get("limits")
if isinstance(limits, dict):
limits_payload = dict(limits)
rate = limits_payload.get("rate")
if isinstance(rate, dict):
limits_payload["rate"] = RateBlock(**rate)
inbox = limits_payload.get("inbox")
if isinstance(inbox, dict):
limits_payload["inbox"] = InboxBlock(**inbox)
payload["limits"] = LimitsBlock(**limits_payload)
return cls(**payload)