Safety analysis output for a URL string.
A result may have safe=True with non-empty warnings when
informational warnings (e.g. punycode decoding) are present without
suspicious patterns.
UrlSafetyResult(
self,
safe: bool,
decoded_domain: str | None,
warnings: tuple[str, ...],
issues: tuple[UnicodeIssue, ...]
)