//
//  SCAdEnvironment.h
//  SCTVOSSDK
//
//  Copyright © 2018 smartclip. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreGraphics/CGGeometry.h>

NS_ASSUME_NONNULL_BEGIN
@class SCAdMacros;

/**
 * This class is used to specify certain environment variables like desired bitrate, deviceType and screenSize
 */
@interface SCAdEnvironment : NSObject

///enum DeviceType specifies the device type
///on which this is running (must be set from outside)
typedef enum DeviceType {
    ///No device type specified
    deviceTypeNone = -1,

    ///Device type mobile
    deviceTypeMobile,

    ///Device type tablet
    deviceTypeTablet,

    ///Device type desktop
    deviceTypeDesktop,

    ///Device type tv
    deviceTypeTV
} DeviceType;

///enum NetworkReachability specifies the
///type of internet connection (must be set from outside)
typedef enum NetworkReachability {
    ///No reachability specified
    reachabilityNone = -1,

    ///Reachability wwan
    reachabilityWWAN,

    ///Reachability wifi
    reachabilityWIFI,

    ///Reachability unreachable
    reachabilityUnreachable
} NetworkReachability;

/// Specify device type.
@property (nonatomic) DeviceType deviceType;

/// Specify network reachability
@property (nonatomic) NetworkReachability reachability;

/// Use a desiredBitrate, which overwrites bitrate calculation
@property (nonatomic) NSInteger desiredBitrate;

/// Value of the screenSize (if not specified, the values of the current device will be used)
@property (nonatomic) CGSize screenSize;

/// Desired mime types. Pass as array of strings
@property (nonatomic, strong) NSArray *desiredMimeTypes;

/// Macros
@property (nonatomic, strong) SCAdMacros *macros;

/// Not available here
- (instancetype)init NS_UNAVAILABLE;

/// Default initializer
- (instancetype)initWithMacros:(nonnull SCAdMacros*)macros NS_DESIGNATED_INITIALIZER;
@end

NS_ASSUME_NONNULL_END
