""" Interfaces del dominio. El dominio define QUÉ necesita, no CÓMO se implementa. La capa de Datos implementa estas interfaces. """ from abc import ABC, abstractmethod from typing import Optional from app.domain.entities.ruta import EstadoRuta, Ruta class IRutaRepository(ABC): @abstractmethod def obtener_ruta(self, ruta_id: str) -> Optional[Ruta]: ... @abstractmethod def obtener_estado(self, ruta_id: str) -> Optional[EstadoRuta]: ... @abstractmethod def guardar_estado(self, estado: EstadoRuta) -> None: ... @abstractmethod def obtener_ruta_por_zona(self, zona_id: str) -> Optional[Ruta]: """ Devuelve la ruta asignada a una zona. Cumple la restricción de 'túnel': el domicilio solo ve su ruta. """ ...