Мне удобно отталкиваться от этой схемы. Она хоть и кратенькая, но примерно изображает что у нас вообще происходит со сторами.
Есть атомарная сущность - плагин. Он пишется кодом, имеет возможность конфигурироваться и прочее.
Есть еще одна атомарная сущность - стор. Стор никак не пишется кодом. Есть только некий класс, который в себя принимает набор плагинов.
Есть конфигурация атомарных сущностей, и в данном случае это два в одном: описывается стор с набором плагинов и их конфигурации.
Когда приложению требуется какой-то стор, то он просто запрашивается у билдера, который по конфигурации это все дело собирает.
Каждый плагин реализует в себе определенную логику, например общение с бекендом, работу с эвентами и каналами, обработка различных событий с последующей реакцией состояния или других плагинов. Все они накидываются друг на друга, работают каждый в своем контексте, со своими интерфейсами и конфигурацией.
Плагины могут общаться, например, канал умеет мапить эвенты и дергать другие плагины на различные действия (условно входы, выходы, хуки).