xref: /expo/ios/Exponent/ExpoKit/ExpoKit.h (revision b8addc5d)
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