pub trait Environment: AutoTraits {
type Storage: Storage<Context = Self::StorageContext>;
type Network: Network<Node = Self::ValidatorNode>;
type Signer: Signer;
type ValidatorNode: ValidatorNode + AutoTraits + Clone;
type StorageContext: Context<Extra: ExecutionRuntimeContext> + Send + Sync + 'static;
// Required methods
fn storage(&self) -> &Self::Storage;
fn network(&self) -> &Self::Network;
fn signer(&self) -> &Self::Signer;
}