"""Provider driver contracts and safe normalized results."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Protocol


@dataclass(frozen=True)
class ProviderResult:
    accepted: bool
    status: str
    provider_code: str | None = None
    error_category: str | None = None
    retryable: bool = False
    latency_ms: int | None = None


class ProviderDriver(Protocol):
    def validate_configuration(self, config: dict) -> None: ...
    def health_check(self, config: dict, secret: str | None) -> ProviderResult: ...
    def send(self, config: dict, secret: str | None, message: dict) -> ProviderResult: ...


class ProviderConfigurationError(ValueError):
    pass
