Gen K
Да. Репозиторий не должен париться о внутренностях DataSource. Его задача шлюзовать данные между локальным хранилищем, удаленным хранилищем и ядром (domain). И преобразованием данных должны заниматься классы хранилищ. Лучше всего сразу в тип, используемый ядром. Тогда репозиторий становится до безобразия простым. Нужно тебе подрубить Room, ORM, SQLite, JSON, Protobuf или еще что, тебе не придется переписывать репозиторий. Особенностями протоколов пусть занимаются те слои, в которых это все происходит. Их задача получить, сохранить данные через соответствующие протоколы и подготовить их в вид, удобный для более внутренних слоев.
Но нужен ли такой репозиторий, который просто является фасадом для 1-2 датасорсов