/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #import #import #import #import #import #import #import #import "RCTTurboModule.h" @protocol RCTTurboModuleManagerDelegate /** * Given a module name, return its actual class. If nil is returned, basic ObjC class lookup is performed. */ - (Class)getModuleClassFromName:(const char *)name; /** * Given a module class, provide an instance for it. If nil is returned, default initializer is used. */ - (id)getModuleInstanceFromClass:(Class)moduleClass; @optional /** * Create an instance of a TurboModule without relying on any ObjC++ module instance. */ - (std::shared_ptr)getTurboModule:(const std::string &)name jsInvoker: (std::shared_ptr)jsInvoker; /** * Return a pre-initialized list of leagcy native modules. * These modules shouldn't be TurboModule-compatible (i.e: they should not conform to RCTTurboModule). * * This method is only used by the TurboModule interop layer. * * It must match the signature of RCTBridgeDelegate extraModulesForBridge: * - (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge; */ - (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge __attribute((deprecated("Please make all native modules returned from this method TurboModule-compatible."))); @end @interface RCTTurboModuleManager : NSObject - (instancetype)initWithBridge:(RCTBridge *)bridge delegate:(id)delegate jsInvoker:(std::shared_ptr)jsInvoker; - (instancetype)initWithBridgeProxy:(RCTBridgeProxy *)bridgeProxy bridgeModuleDecorator:(RCTBridgeModuleDecorator *)bridgeModuleDecorator delegate:(id)delegate jsInvoker:(std::shared_ptr)jsInvoker; - (void)installJSBindings:(facebook::jsi::Runtime &)runtime; - (void)invalidate; @end