Так непонятно почему работа с результирующими данными должна лежать в плоскости завершившегося эффекта
Потому что это уровнеь api. Основное приложение импортит эффекты и для него они черный ящик. Это в любом случае разумно делать на этом уровне, я не хочу чтобы у меня подобная логика расползалась по модели