"""Composite interface implemented by each host strategy."""
from __future__ import annotations

from typing import Protocol

from ..domain.host import (
    HostClaim,
    HostDescriptor,
    HostReadiness,
    HostResolutionContext,
    HostSessionContext,
)
from .interaction import InteractionPort
from .host_model import HostModelBindingPort
from .lead_session import LeadSessionPort
from .usage_accounting import UsageAccountingPort
from .worker_dispatch import WorkerDispatchPort


class HostAdapter(Protocol):
    descriptor: HostDescriptor

    def detect(self, context: HostResolutionContext) -> HostClaim | None: ...

    def probe(self, context: HostSessionContext) -> HostReadiness: ...

    def interaction(self) -> InteractionPort: ...

    def host_model(self) -> HostModelBindingPort: ...

    def lead_session(self) -> LeadSessionPort: ...

    def worker_dispatch(self) -> WorkerDispatchPort: ...

    def usage_accounting(self) -> UsageAccountingPort: ...
