"""Minimal plugin and provider contracts for future extensions."""

from __future__ import annotations

from typing import Protocol

from sentra.discovery.modules import DiscoveryModule
from sentra.discovery.passive import PassiveDiscoveryProvider
from sentra.models import ServiceEvidence


class ProtocolAnalyzer(Protocol):
    name: str

    def analyze(self, host: str, service: ServiceEvidence) -> ServiceEvidence | None:
        """Return enriched service metadata for a discovered service."""


class Plugin(Protocol):
    name: str

    def register(self) -> None:
        """Register plugin hooks with Sentra."""


class DiscoveryModuleProvider(Protocol):
    name: str

    def get_modules(self) -> list[DiscoveryModule]:
        """Return active discovery modules to attach to scans."""


class PassiveProviderFactory(Protocol):
    name: str

    def get_passive_providers(self) -> list[PassiveDiscoveryProvider]:
        """Return passive discovery providers for future passive scans."""

