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

#import <SmartclipSDKiOS/SCAdConfiguration.h>
#import <SmartclipSDKiOS/SCElementSize.h>

#ifndef SCAdSlotDelegate_h
#define SCAdSlotDelegate_h

@class SCAdPlayerEvent, SCAdVerification, SCClosedCaptionDescription;

typedef void (^SCJavaScriptBridgeStringResultCompletionBlock)(NSString* _Nullable result);
typedef void (^SCJavaScriptBridgeVerificationResultCompletionBlock)(NSError * _Nullable error, NSArray * _Nullable verifications);
typedef void (^SCJavaScriptBridgeBoolResultCompletionBlock)(NSNumber * _Nullable result);
typedef void (^SCJavaScriptBridgeClosedCaptionsResultCompletionBlock)(NSError * _Nullable error, SCClosedCaptionDescription* _Nullable closedCaption);

@protocol SCAdSlotDelegate <NSObject>
- (void)playAdWithURL:(nonnull NSArray*)urls opener:(nullable NSString*)opener closer:(nullable NSString*)closer bumper:(nullable NSString*)bumper;
- (void)playAdWithConfiguration:(SCAdConfiguration*_Nonnull)configuration;
- (void)playVMAPWithConfiguration:(SCAdConfiguration*_Nonnull)configuration;
- (void)stopAdSlot;
- (void)stopAdPlaylist;
- (void)skipAd;
- (void)eventPlayerCallbackWith:(SCAdPlayerEvent*_Nonnull)playerEvent;
- (void)getAdInfo:(SCJavaScriptBridgeStringResultCompletionBlock _Nonnull )completion;
- (void)getPublicAdSlot:(SCJavaScriptBridgeStringResultCompletionBlock _Nonnull )completion;
- (void)getAdVerifications:(SCJavaScriptBridgeVerificationResultCompletionBlock _Nonnull )completion;
- (void)getClosedCaptions:(SCJavaScriptBridgeClosedCaptionsResultCompletionBlock _Nonnull )completion;
- (void)clickThroughURL:(SCJavaScriptBridgeStringResultCompletionBlock _Nonnull )completion;
- (void)getAdError:(SCJavaScriptBridgeStringResultCompletionBlock _Nonnull )completion;
- (void)hasClickThrough:(SCJavaScriptBridgeBoolResultCompletionBlock _Nonnull )completion;
- (void)loadRequestPromiseResolve:(SCJavaScriptBridgeBoolResultCompletionBlock _Nullable)completion;
- (void)loadRequestPromiseReject:(SCJavaScriptBridgeBoolResultCompletionBlock _Nullable)completion;
- (void)replayAdSlot;
- (void)resizeWith:(SCElementSize* _Nonnull)boundingRect;
- (void)getCoreVersion:(SCJavaScriptBridgeStringResultCompletionBlock _Nonnull )completion;
@end

#endif /* SCAdSlotDelegate_h */
