// Path: erp-library/src/main/java/com.jukusoft/erp/lib/context/AppContext.java
// public interface AppContext {
// 
//     public Vertx getVertx ();
// 
//     public ILogging getLogger ();
// 
//     /**
//     * get hazelcast instance
//      *
//      * @return instance of hazelcast
//     */
//     public HazelcastInstance getHazelcast ();
// 
//     /**
//     * get instance of session manager
//      *
//      * @return instance of session manager
//     */
//     public SessionManager getSessionManager ();
// 
//     /**
//     * get instance of database manager
//      *
//      * @return instance of database manager
//     */
//     public DatabaseManager getDatabaseManager ();
// 
//     /**
//     * get instance of cache manager
//      *
//      * @return instance of cache manager
//     */
//     public CacheManager getCacheManager ();
// 
//     /**
//     * get instance of permission manager
//      *
//      * @return instance of permission manager
//     */
//     @Deprecated
//     public PermissionManager getPermissionManager ();
// 
//     /**
//     * set instance of permission manager
//      *
//      * @param permissionManager instance of permission manager
//     */
//     @Deprecated
//     public void setPermissionManager (PermissionManager permissionManager);
// 
//     /**
//     * get permission service
//      *
//      * @return permission service
//     */
//     public PermissionService getPermissionService ();
// 
//     /**
//     * set permission service
//      *
//      * @param service instance of permission service
//     */
//     public void setPermissionService (PermissionService service);
// 
//     /**
//     * check, if user has permission
//      *
//      * @param request api request
//      * @param permission permission token
//      *
//      * @return true, if user has permission
//     */
//     public boolean checkPermission (ApiRequest request, String permission);
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


import com.jukusoft.erp.lib.context.AppContext;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.EventBus;
package com.jukusoft.erp.lib.module;


public interface IModule {

    /**
     * get a reference to the Vert.x instance that deployed this verticle
     *
     * @return reference to the Vert.x instance
     */
    public Vertx getVertx ();

    /**
    * get instance of logger
    */
    public ILogging getLogger ();

    /**
    * get instance of event bus
     *
     * @return instance of event bus
    */
    public EventBus getEventBus ();

    /**
    * initialize module
    */
    public void init (Vertx vertx, AppContext context, ILogging logger);

    /**
    * start module
    */
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/context/AppContext.java
// public interface AppContext {
// 
//     public Vertx getVertx ();
// 
//     public ILogging getLogger ();
// 
//     /**
//     * get hazelcast instance
//      *
//      * @return instance of hazelcast
//     */
//     public HazelcastInstance getHazelcast ();
// 
//     /**
//     * get instance of session manager
//      *
//      * @return instance of session manager
//     */
//     public SessionManager getSessionManager ();
// 
//     /**
//     * get instance of database manager
//      *
//      * @return instance of database manager
//     */
//     public DatabaseManager getDatabaseManager ();
// 
//     /**
//     * get instance of cache manager
//      *
//      * @return instance of cache manager
//     */
//     public CacheManager getCacheManager ();
// 
//     /**
//     * get instance of permission manager
//      *
//      * @return instance of permission manager
//     */
//     @Deprecated
//     public PermissionManager getPermissionManager ();
// 
//     /**
//     * set instance of permission manager
//      *
//      * @param permissionManager instance of permission manager
//     */
//     @Deprecated
//     public void setPermissionManager (PermissionManager permissionManager);
// 
//     /**
//     * get permission service
//      *
//      * @return permission service
//     */
//     public PermissionService getPermissionService ();
// 
//     /**
//     * set permission service
//      *
//      * @param service instance of permission service
//     */
//     public void setPermissionService (PermissionService service);
// 
//     /**
//     * check, if user has permission
//      *
//      * @param request api request
//      * @param permission permission token
//      *
//      * @return true, if user has permission
//     */
//     public boolean checkPermission (ApiRequest request, String permission);
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


// Path: erp-library/src/main/java/com.jukusoft/erp/lib/module/IModule.java
import com.jukusoft.erp.lib.context.AppContext;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.eventbus.EventBus;

package com.jukusoft.erp.lib.module;


public interface IModule {

    /**
     * get a reference to the Vert.x instance that deployed this verticle
     *
     * @return reference to the Vert.x instance
     */
    public Vertx getVertx ();

    /**
    * get instance of logger
    */
    public ILogging getLogger ();

    /**
    * get instance of event bus
     *
     * @return instance of event bus
    */
    public EventBus getEventBus ();

    /**
    * initialize module
    */
    public void init (Vertx vertx, AppContext context, ILogging logger);

    /**
    * start module
    */
    public void start (Handler<Future<IModule>> handler) throws Exception;