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