from typing import Protocol from .models import DesiredRecord, ProviderCapabilities, ProviderRecord class SourcePlugin(Protocol): name: str def discover(self) -> list[DesiredRecord]: ... class ProviderPlugin(Protocol): name: str capabilities: ProviderCapabilities def connect(self) -> None: ... def list_records(self) -> dict[str, ProviderRecord]: ... def add_record(self, record: DesiredRecord) -> str | None: ... def update_record(self, record: DesiredRecord) -> str | None: ... def delete_record(self, hostname: str) -> str | None: ... def verify_record(self, record: DesiredRecord) -> bool: ... def capacity(self) -> tuple[int, int | None]: ...