// Copyright © 2018 650 Industries. All rights reserved. #import #import #import #import NS_ASSUME_NONNULL_BEGIN @interface EXModuleRegistry : NSObject - (instancetype)initWithInternalModules:(NSSet> *)internalModules exportedModules:(NSSet *)exportedModules singletonModules:(NSSet *)singletonModules; - (void)registerInternalModule:(id)internalModule; - (void)registerExportedModule:(EXExportedModule *)exportedModule; - (void)setDelegate:(id)delegate; // Call this method once all the modules are set up and registered in the registry. - (void)initialize; - (EXExportedModule *)getExportedModuleForName:(NSString *)name; - (EXExportedModule *)getExportedModuleOfClass:(Class)moduleClass; - (id)getModuleImplementingProtocol:(Protocol *)protocol; - (id)getSingletonModuleForName:(NSString *)singletonModuleName; - (NSArray> *)getAllInternalModules; - (NSArray *)getAllExportedModules; - (NSArray *)getAllSingletonModules; @end NS_ASSUME_NONNULL_END