from typing import Protocol, Sequence from .domain.models import Document, IngestionRequest, IngestionResult class SourceConnector(Protocol): def fetch(self, request: IngestionRequest) -> Sequence[Document]: ... class PublicationPort(Protocol): def publish(self, document: Document) -> IngestionResult: ...