/*
    `modules` will :
    - be a starting refrence point for the bot instance to pull module definitions for

*/

//mod crate::core::botmodules;
// use crate::core::botmodules;
pub use crate::core::botmodules::ModulesManager;

// use crate::core::botinstance;
pub use crate::core::botinstance::BotInstance;


// [ ] Load submodules

mod experiments;


// [ ] init() function that accepts bot instance - this is passed to init() on submodules

// pub fn init<F>(mgr:ModulesManager<F>) -> ModulesManager<F> 
// pub fn init<F>(mgr:ModulesManager<F>) 
// where
//     // F: std::future::Future + Send,
//     // F : Send,
//     F : Send + ?Sized,
pub fn init(mgr:&mut ModulesManager)
{
    // Modules initializer loads modules into the bot
    // this is achieved by calling submodules that also have fn init() defined

    experiments::init(mgr)    

    //();
}