//
//  SCAdInfo.h
//  SmartclipSDKiOS
//
//  Copyright © 2018 smartclip. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 * This class holds the advertisement information
 */
@interface SCAdEvent : NSObject

///EventType: type of events that are fired during the progress of an ad slot.
typedef enum EventType {
    // Single Ad Events
    EVENT_TYPE_UNDEFINED = -1,
    ON_AD_CLICKED,                     // clickThroughUrl
    ON_AD_ERROR,
    ON_AD_FINISHED,                    // deprecated
    ON_AD_STOPPED,
    ON_AD_LINEARITY_CHANGE,            // isLinear
    ON_AD_MANIFEST_LOADED,
    ON_AD_MANIFEST_LOAD_ERROR,
    ON_AD_PLAYBACK_FINISHED,
    ON_AD_LOADED,                        // numAds
    ON_AD_SKIPPED,
    ON_AD_START,
    ON_AD_STARTED,
    ON_AD_FIRST_QUARTILE,
    ON_AD_IMPRESSION,
    ON_AD_CREATIVE_VIEW,
    ON_AD_MID_POINT,
    ON_AD_PAUSED,
    ON_AD_PLAYBACK_START,
    ON_AD_PLAYING,
    ON_AD_THIRD_QUARTILE,
    ON_AD_SIZE_CHANGED,
    ON_AD_PROGRESS,
    ON_AD_REWIND,
    ON_AD_VOLUME_CHANGED,
    ON_AD_UNMUTED,
    ON_AD_MUTED,
    ON_ENTER_FULLSCREEN,                // replaced by playerExpand since VAST 4.1
    ON_EXIT_FULLSCREEN,                 // replaced by playerCollapse since VAST 4.1
    ON_PLAYER_EXPAND,
    ON_PLAYER_COLLAPSE,
    ON_CLOSED_CAPTIONS_DETECTED,
    ON_COMPANIONS_DETECTED,
    ON_EXTENSIONS_DETECTED,
    ON_VERIFICATION_DETECTED,
    ON_ICONS_DETECTED,
    ON_ICON_CLICKED,
    ON_AD_SKIPPABLE_STATE_CHANGE,
    ON_COMPANION_CREATIVE_VIEW,
    ON_COMPANION_CLICKED,
    ON_AD_NONLINEAR_FINISHED,
    ON_AD_NONLINEAR_STOPPED,
    ON_AD_SLOT_START,
    ON_AD_SLOT_STARTED,
    ON_AD_SLOT_FINISHED,                // deprecated
    ON_AD_SLOT_STOPPED,
    ON_AD_SLOT_COMPLETE,
    ON_AD_SLOT_DURATION_CHANGE,
    ON_PLAYBACK_FINISHED,
    ON_AD_REINSERTION_ACTIVATION,
    ON_HOMAD_PENALTY,
    ON_GENERAL_ERROR,
    ON_AD_WARNING,
    ON_AD_VIEWABLE,
    ON_AD_NOT_VIEWABLE,
    ON_AD_VIEWABLE_UNDETERMINED
} EventType;

///Event type
@property (nonatomic)       EventType          type;

///Always smartclip
@property (nonatomic, copy) NSString           *issuer;

///Adopted from the Bitmovin Player Events. Current client time
@property (nonatomic)       NSTimeInterval      timestamp;

/**
 * Initalizer, takes a JSON formatted description string
 * - Parameter description: adInfo as JSON formatted string
 */
- (id)initWithDescription:(NSString*)description;

/**
 * Gives back a string describing the current event
 */
- (NSString*)eventString;
@end
