"""Repository protocol для хранения FinancialModel. Определяет контракт: load(path) -> FinancialModel, save(model, path) -> None. Реализации: JsonFileRepository, ExcelRepository. """ from __future__ import annotations from pathlib import Path from typing import Protocol, runtime_checkable from domain import FinancialModel @runtime_checkable class ModelRepository(Protocol): """Любой storage, способный прочитать и записать FinancialModel.""" def load(self, path: str | Path) -> FinancialModel: ... def save(self, model: FinancialModel, path: str | Path) -> None: ...