//
//  MVMCoreUISession.h
//  MVMCoreUI
//
//  Created by Scott Pfeil on 1/10/19.
//  Copyright © 2019 Verizon Wireless. All rights reserved.
//

@import UIKit.UIView;
@import MVMCore.MVMCoreSessionObject;
@class MVMCoreUISplitViewController;
@class MFViewController;
@class MFLoadingViewController;
@class NavigationController;

NS_ASSUME_NONNULL_BEGIN

@interface MVMCoreUISession : MVMCoreSessionObject

@property (weak, nonatomic, nullable) UIView *topAlertView;
@property (weak, nonatomic, nullable) MVMCoreUISplitViewController *splitViewController;
@property (weak, nonatomic, nullable) NavigationController *navigationController;
@property (weak, nonatomic, nullable) MFLoadingViewController *loadingViewController;

/// Tracks the current page type the user is currently viewing. KVO compliant.
@property (nonatomic, strong, nullable) NSString *currentPageType;

/// for handscroll Animation on subclasses of MFScrollingViewController
@property (assign, nonatomic) BOOL enableHandScrollAnimation;

/// indicates if the app launched successfully
@property (assign, nonatomic) BOOL launchAppLoadedSuccessfully;

/// Sets up the session as delegate for standard load view controller. Pass the view controller that will be used to present and will be disabled when load view is presented.
- (void)setupAsStandardLoadViewDelegate:(nonnull UIViewController *)mainViewController;

/// Applies additional behaviors to a controller according to the session. Allows for packages to add additional cross cutting concerns.
- (void)applyGlobalBehaviorsToController:(nonnull UIViewController *)viewController;

@end

NS_ASSUME_NONNULL_END
