1 // Copyright © 2018 650 Industries. All rights reserved.
2 
3 #import <Foundation/Foundation.h>
4 
5 #import <ExpoModulesCore/EXInternalModule.h>
6 #import <ExpoModulesCore/EXExportedModule.h>
7 #import <ExpoModulesCore/EXViewManager.h>
8 #import <ExpoModulesCore/EXModuleRegistryDelegate.h>
9 
10 NS_ASSUME_NONNULL_BEGIN
11 
12 NS_SWIFT_NAME(ModuleRegistry)
13 @interface EXModuleRegistry : NSObject
14 
15 - (instancetype)initWithInternalModules:(NSSet<id<EXInternalModule>> *)internalModules
16                         exportedModules:(NSSet<EXExportedModule *> *)exportedModules
17                            viewManagers:(NSSet<EXViewManager *> *)viewManagers
18                        singletonModules:(NSSet *)singletonModules;
19 
20 - (void)registerInternalModule:(id<EXInternalModule>)internalModule;
21 - (void)registerExportedModule:(EXExportedModule *)exportedModule;
22 - (void)registerViewManager:(EXViewManager *)viewManager;
23 
24 - (void)setDelegate:(id<EXModuleRegistryDelegate>)delegate;
25 
26 // Call this method once all the modules are set up and registered in the registry.
27 - (void)initialize;
28 
29 - (EXExportedModule *)getExportedModuleForName:(NSString *)name;
30 - (EXExportedModule *)getExportedModuleOfClass:(Class)moduleClass;
31 - (id)getModuleImplementingProtocol:(Protocol *)protocol;
32 - (id)getSingletonModuleForName:(NSString *)singletonModuleName;
33 
34 - (NSArray<id<EXInternalModule>> *)getAllInternalModules;
35 - (NSArray<EXExportedModule *> *)getAllExportedModules;
36 - (NSArray<EXViewManager *> *)getAllViewManagers;
37 - (NSArray *)getAllSingletonModules;
38 
39 @end
40 
41 NS_ASSUME_NONNULL_END
42