#import <Foundation/Foundation.h>

#import "AdinCubeNativeAd.h"
#import "AdinCubeNativeAdOptions.h"

@interface AdinCubeNativeLoadingPool : NSObject

/**
 @abstract Start caching native ads.
 */
- (void)initialize;

/*!
 @abstract Load a native ad.
 @param sucessCallback Callback called when a native ad is loaded. The native ad is passed in parameters.
 */
- (void)get:(AdinCubeNativeAdOptions*)options success:(void(^)(AdinCubeNativeAd*))sucessCallback;

/*!
 @abstract Load a native ad.
 @param sucessCallback Callback called when a native ad is loaded. The native ad is passed in parameters.
 @param errorCallback Called called when a native has failed to load. The error code is passed in parameters.
 */
- (void)get:(AdinCubeNativeAdOptions*)options success:(void(^)(AdinCubeNativeAd*))sucessCallback error:(void(^)(NSString*))errorCallback;

/*!
 @abstract Load a native ad.
 @param callback Callback called when a native ad is loaded. The native ad is passed in parameters.
 @deprecated Use get:sucess: instead. By continuing using this method you will no more receive ads from all networks.
 */
- (void)get:(void(^)(AdinCubeNativeAd*))callback
    DEPRECATED_MSG_ATTRIBUTE("Use get:sucess: instead. By continuing using this method you will no more receive ads from all networks.");

/*!
 @abstract Load a native ad.
 @param sucessCallback Callback called when a native ad is loaded. The native ad is passed in parameters.
 @param errorCallback Called called when a native has failed to load. The error code is passed in parameters.
 @deprecated Use get:sucess:error: instead. By continuing using this method you will no more receive ads from all networks.
 */
- (void)get:(void(^)(AdinCubeNativeAd*))callback error:(void(^)(NSString*))callback
    DEPRECATED_MSG_ATTRIBUTE("Use get:sucess:error: instead. By continuing using this method you will no more receive ads from all networks.");

@end
