1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 #import "EXKernelAppRecord.h"
4 
5 @class RCTBridge;
6 @class EXReactAppManager;
7 @class EXFrameReactAppManager;
8 @class EXKernelAppRegistry;
9 @class EXKernelReactAppManager;
10 
11 @protocol EXKernelAppRegistryDelegate <NSObject>
12 
13 - (void)appRegistry:(EXKernelAppRegistry *)registry didRegisterAppRecord:(EXKernelAppRecord *)appRecord;
14 - (void)appRegistry:(EXKernelAppRegistry *)registry willUnregisterAppRecord:(EXKernelAppRecord *)appRecord;
15 
16 @end
17 
18 @interface EXKernelAppRegistry : NSObject
19 
20 - (void)registerKernelAppManager: (EXKernelReactAppManager *)appManager;
21 - (void)unregisterKernelAppManager;
22 
23 - (NSString *)registerAppWithManifestUrl:(NSURL *)manifestUrl;
24 - (void)addAppManager:(EXFrameReactAppManager *)appManager toRecordWithId:(NSString *)recordId;
25 - (void)addAppManager:(EXFrameReactAppManager *)appManager toRecordWithExperienceId:(NSString *)experienceId;
26 
27 - (void)unregisterAppWithRecordId:(NSString *)recordId;
28 - (void)unregisterRecordWithExperienceId:(NSString *)experienceId;
29 
30 - (void)setExperienceFinishedLoading:(BOOL)experienceFinishedLoading onRecordWithId:(NSString *)recordId;
31 - (void)setExperienceFinishedLoading:(BOOL)experienceFinishedLoading onRecordWithExperienceId:(NSString *)experienceId;
32 
33 /**
34  *  We pass some system events on to the visible experience,
35  *  but not to any others which may be open, e.g. UIApplicationState changes.
36  */
37 @property (nonatomic, weak) EXReactAppManager *lastKnownForegroundAppManager;
38 
39 @property (nonatomic, weak) id<EXKernelAppRegistryDelegate> delegate;
40 
41 - (EXKernelAppRecord *)recordForId:(NSString *)recordId;
42 - (EXKernelAppRecord * _Nullable)newestRecordWithExperienceId:(NSString *)experienceId;
43 - (EXKernelReactAppManager *)kernelAppManager;
44 - (NSEnumerator<id> *)appEnumerator; // does not include kernel
45 - (BOOL)isExperienceIdUnique:(NSString *)experienceId;
46 
47 @end
48