#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import "BSUTypes.h"
#import "BlueStackSDK/MNGNAtiveObject.h"

@interface BSUNativeAd : NSObject

NS_ASSUME_NONNULL_BEGIN

- (id)initWithNativeAdClientReference:(BSUTypeNativeAdClientRef *)nativeAdClient
                        placementId:(NSString *_Nullable)placementId;

@property(nonatomic, assign) BSUTypeNativeAdClientRef * _Nonnull nativeAdClient;
@property(nonatomic, assign) MNGNAtiveObject *nativeAdsObject;

@property(nonatomic, assign) BSUOnNativeAdDidLoadCallback onDidLoadCallback;
@property(nonatomic, assign) BSUOnNativeAdDidFailCallback onDidFailCallback;
@property(nonatomic, assign) BSUOnNativeAdDidRecordImpressionCallback onRecordImpressionCallback;
@property(nonatomic, assign) BSUOnNativeAdDidPerformClickCallback onPerformClickCallback;
@property(nonatomic, assign) BSUOnNativeAdCloseCallback onCloseCallback;


@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *body;
@property (nonatomic, retain) NSString *callToAction;
@property (nonatomic, retain) NSString *badge;
@property (nonatomic, retain) NSString *iconUrl;
@property (nonatomic, retain) NSString *coverImageUrl;
@property (nonatomic, retain) NSString *clickUrl;

NS_ASSUME_NONNULL_END

- (void)loadAd;
- (void)loadAdWithRequestOptions:(BSUTypeRequestOptionsRef)requestOptionsRef;
- (void)recordImpression:(nonnull NSDictionary *)args;
- (void)performClick:(nonnull NSDictionary *)args;
- (void)destroy;

@end
