//
//  MVMCoreUITopAlertView.h
//  myverizon
//
//  Created by Chris Yang on 2/3/16.
//  Copyright © 2016 Verizon Wireless. All rights reserved.
//

#import <UIKit/UIKit.h>
@import MVMCore.MVMCoreLoadDelegateProtocol;
@import MVMCore.MVMCoreActionDelegateProtocol;
@import MVMCore.MVMCorePresentationDelegateProtocol;
@import MVMCore.MVMCoreViewProtocol;
#import <MVMCoreUI/MVMCoreTopAlertAnimationDelegateProtocol.h>
#import <MVMCoreUI/MVMCoreTopAlertViewProtocol.h>
#import <MVMCoreUI/ButtonDelegateProtocol.h>

@class MVMCoreTopAlertObject;

@interface MVMCoreUITopAlertView : UIView <MVMCoreViewProtocol, MVMCoreTopAlertViewProtocol, MVMCoreLoadDelegateProtocol, MVMCoreActionDelegateProtocol, MVMCorePresentationDelegateProtocol, ButtonDelegateProtocol>

// Delegate for the top alert view
@property (nonatomic, nullable, weak) id <MVMCoreTopAlertAnimationDelegateProtocol> animationDelegate;

// Current top alert object
@property (strong, nullable, nonatomic) MVMCoreTopAlertObject *topAlertObject;

/// Current top alert view.
@property (weak, nullable, nonatomic, readonly) UIView *currentAlert;

// Returns the top alert view
+ (nullable instancetype)sharedGlobal;

// Returns a TopAlertView with the mvm styling. Also sets the property in the session.
+ (nullable instancetype)setupTopAlertView;

// Can be subclassed for custom views.
- (nonnull UIView *)topAlertViewForTopAlertObject:(nullable MVMCoreTopAlertObject *)topAlertObject animationDelegate:(nonnull id <MVMCoreTopAlertAnimationDelegateProtocol>)animationDelegate statusBarColor:(UIColor *_Nullable *_Nullable)statusBarColor statusBarStyle:(UIStatusBarStyle *_Nullable)statusBarStyle;

/// Get the background color based on the type
- (nonnull UIColor *)getBackgroundColorForType:(nullable NSString *)type;

/// Get the content color based on the type
- (nonnull UIColor *)getContentColorForType:(nullable NSString *)type;

@end
