//Header
#import "VRTUManager.h"

//Dependencies
#import <VrtcalSDK/VrtcalSDK.h>
#import "VRTUTypes.h"

//Singleton. Is the delegate for the VrtcalSDK singleton, owns a Banner & Interstitial.
@interface VRTUManager : NSObject <VrtcalSdkDelegate, VRTBannerDelegate, VRTInterstitialDelegate>

//Singleton
+(instancetype) singleton;

//SDK
@property VRTUSdkInitializedCallback sdkInitializedCallback;
@property VRTUSdkInitializationFailedWithErrorCallback sdkInitializationFailedWithErrorCallback;
-(void) initializeSdkWithAppId:(NSUInteger)appId;
-(void) setPiiData: (nullable NSString*) piiData;
-(void) setPiiDataTypes: (nullable NSString*) piiDataType;




//Banner
@property(nonatomic, assign) VRTUCallback bannerAdLoadedCallback;
@property(nonatomic, assign) VRTUErrorCallback bannerAdFailedToLoadCallback;
@property(nonatomic, assign) VRTUCallback bannerVideoStartedCallback;
@property(nonatomic, assign) VRTUCallback bannerVideoCompletedCallback;
@property(nonatomic, assign) VRTUCallback bannerAdClickedCallback;
@property(nonatomic, assign) VRTUCallback bannerAdWillLeaveApplicationCallback;
@property(nonatomic, assign) VRTUCallback bannerAdWillPresentModalCallback;
@property(nonatomic, assign) VRTUCallback bannerAdDidPresentModalCallback;
@property(nonatomic, assign) VRTUCallback bannerAdWillDismissModalCallback;
@property(nonatomic, assign) VRTUCallback bannerAdDidDismissModalCallback;


-(void) bannerLoadWithZoneId:(int)zoneId position:(VRTBannerPosition)position size:(CGSize)size;
-(void) bannerLoadWithZoneId:(int)zoneId frame:(CGRect)frame;
-(void) bannerMoveWithZoneId:(int)zoneId origin:(CGPoint)center;
-(void) bannerDestroyWithZoneId:(int)zoneId;


//Interstitial
@property(nonatomic, assign) VRTUCallback interstitialAdLoadedCallback;
@property(nonatomic, assign) VRTUErrorCallback interstitialAdFailedToLoadCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdWillShowCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdDidShowCallback;
@property(nonatomic, assign) VRTUCallback interstitialVideoStartedCallback;
@property(nonatomic, assign) VRTUCallback interstitialVideoCompletedCallback;
@property(nonatomic, assign) VRTUErrorCallback interstitialAdFailedToShowCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdClickedCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdWillLeaveApplicationCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdWillDismissCallback;
@property(nonatomic, assign) VRTUCallback interstitialAdDidDismissCallback;


-(void) interstitialLoadWithZoneId:(int)zoneId;
-(void) interstitialShowWithZoneId:(int)zoneId;
-(void) interstitialDestroyWithZoneId:(int)zoneId;


@end
