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