"""Explicit unavailable result for hosts without usage evidence."""
from __future__ import annotations

from okstra_ctl.ports.usage_accounting import UsageRequest, UsageSnapshot
from okstra_token_usage.blocks import na_block

from .cli_artifact import CliArtifactUsageAccountingPort


class UnavailableUsageAccountingPort:
    def __init__(self, reason: str) -> None:
        self._reason = reason

    def collect(self, request: UsageRequest) -> UsageSnapshot:
        state = CliArtifactUsageAccountingPort().collect(request).payload
        lead_usage = na_block(self._reason)
        lead_usage.update(unavailable=True, reason=self._reason)
        state["leadUsage"] = lead_usage
        return UsageSnapshot(source="unavailable", payload=state)
