1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 #import <UIKit/UIKit.h> 4 5 NS_ASSUME_NONNULL_BEGIN 6 7 @class EXViewController; 8 9 @interface ExpoKit : NSObject 10 11 + (instancetype)sharedInstance; 12 13 /** 14 * Register an EXViewController subclass as the root class. 15 * This must be the first method called on ExpoKit's singleton instance to make any difference. 16 */ 17 - (void)registerRootViewControllerClass:(Class)rootViewControllerClass; 18 19 /** 20 * The root Exponent view controller hosting a detached Exponent app. 21 */ 22 - (EXViewController *)rootViewController; 23 24 /** 25 * The current view controller that is presented by Exponent app. 26 */ 27 - (UIViewController *)currentViewController; 28 29 /** 30 * Set up dependencies that need to be initialized before app delegates. 31 */ 32 - (void)prepareWithLaunchOptions:(nullable NSDictionary *)launchOptions; 33 34 /** 35 * Keys to third-party integrations used inside ExpoKit. 36 * TODO: document this. 37 */ 38 @property (nonatomic, strong) NSDictionary *applicationKeys; 39 40 @property (nonatomic, readonly) NSDictionary *launchOptions; 41 42 @property (nonatomic, weak) Class moduleRegistryDelegateClass; 43 44 @end 45 46 NS_ASSUME_NONNULL_END 47