Currently the AppChain class acts both as the main composability layer to stich together modules and containers and as the primary user-facing API access point. This introduces unnessecary size and coupling into the AppChain class. An example for this is insufficient seperation for the transaction() API, which is almost entirely implement inside Appchain.
As a solution, seperate those two functions into seperate classes and allow access through getters on Appchain.
A example for how this should be is the .query accessor.
Currently the AppChain class acts both as the main composability layer to stich together modules and containers and as the primary user-facing API access point. This introduces unnessecary size and coupling into the AppChain class. An example for this is insufficient seperation for the transaction() API, which is almost entirely implement inside Appchain. As a solution, seperate those two functions into seperate classes and allow access through getters on Appchain. A example for how this should be is the .query accessor.