1 // Copyright 2018-present 650 Industries. All rights reserved.
2 
3 #import <React/RCTBridgeModule.h>
4 
5 #import <ExpoModulesCore/EXInternalModule.h>
6 #import <ExpoModulesCore/EXModuleRegistry.h>
7 
8 // A convenience class, which acts as a store for the native modules proxy config
9 
10 NS_SWIFT_NAME(ModulesProxyConfig)
11 @interface EXModulesProxyConfig : NSObject
12 
13 - (instancetype)initWithConstants:(nonnull NSDictionary *)constants
14                       methodNames:(nonnull NSDictionary *)methodNames
15                      viewManagers:(nonnull NSDictionary *)viewManagerMetadata;
16 
17 - (void)addEntriesFromConfig:(nonnull const EXModulesProxyConfig *)config;
18 - (nonnull NSDictionary<NSString *, id> *)toDictionary;
19 
20 @end
21 
22 // RCTBridgeModule capable of receiving method calls from JS and forwarding them
23 // to proper exported universal modules. Also, it exports important constants to JS, like
24 // properties of exported methods and modules' constants.
25 
26 NS_SWIFT_NAME(LegacyNativeModulesProxy)
27 @interface EXNativeModulesProxy : NSObject <RCTBridgeModule>
28 
29 @property (nonatomic, strong, readonly) EXModulesProxyConfig *nativeModulesConfig;
30 
31 - (nonnull instancetype)init;
32 - (nonnull instancetype)initWithModuleRegistry:(nullable EXModuleRegistry *)moduleRegistry;
33 - (nonnull instancetype)initWithCustomModuleRegistry:(nonnull EXModuleRegistry *)moduleRegistry;
34 
35 - (void)callMethod:(NSString *)moduleName methodNameOrKey:(id)methodNameOrKey arguments:(NSArray *)arguments resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject;
36 
37 @end
38