"""Core policy for the P2HS-owned SMS fallback."""
from __future__ import annotations

from dataclasses import dataclass

from src.config import Settings, get_settings


@dataclass(frozen=True)
class SmsDeliveryPolicy:
    delivery_scope: str
    from_number: str | None = None
    reason_code: str | None = None
    message: str | None = None

    @property
    def allowed(self) -> bool:
        return self.reason_code is None


def platform_default_sms_delivery(settings: Settings | None = None) -> SmsDeliveryPolicy:
    settings = settings or get_settings()
    # Core only checks that the platform has selected an SMS adapter and a
    # sender. Adapter support and credentials are validated by Cloud's private
    # provider registry; the capability contract must not enumerate vendors.
    if not settings.cloud_sms_provider.strip() or not settings.cloud_sms_from.strip():
        return SmsDeliveryPolicy(
            delivery_scope="none",
            reason_code="sms_provider_not_configured",
            message="The P2HS-owned SMS service is not configured",
        )
    return SmsDeliveryPolicy(delivery_scope="internal", from_number=settings.cloud_sms_from.strip())
