//
//  SMAPublisherPurposesConfiguration.h
//  SmaatoSDKCMP
//
//  Created by Rushikesh Dhule on 19/07/21.
//  Copyright © 2021 Smaato Inc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "SMAPublisherPurposes.h"
#import <SmaatoSDKCMP/SMAGDPRTypes.h>

NS_ASSUME_NONNULL_BEGIN

/**
 All properties can not be nil of this class. Publisher has to send at-least a Purpose / Stack / Special Purpose / CustomPurpose / Feature / SpecialFeature. Otherwise a run time error will be thrown from cmpConfigurationDidFailWithError delegate method.
 */

@interface SMAPublisherPurposesConfiguration : NSObject

///An integer array of purposes to fetch the purposes from GVL list.
@property (nonatomic, retain) NSArray * _Nullable purposes;

///An integer array of stacks to fetch the stacks from GVL list.
@property (nonatomic, retain) NSArray * _Nullable stacks;

///An array(of type SMAPublisherPurposes) of customPurposes to be used for showing publisher's custom purposes.
@property (nonatomic, retain) NSArray<SMAPublisherPurposes *> * _Nullable customPurposes;

///An integer array of specialFeatures to fetch the specialFeatures from GVL list.
@property (nonatomic, retain) NSArray * _Nullable specialFeatures;

///A standard option to select a list of predefined purposes, stacks and special features
///enum values:
///monitization: purpose 1, stack 39 & special feature 1
///middleGround: purpose 1, stack 39
///optimizedPrivacy: purpose 1, stack 6
@property (nonatomic, assign) CMPStandardOption standardPurposeOption;

/// A message for empty user consent tab that a publisher can set for the privacy screen
@property (nonatomic, retain) NSString * _Nullable emptyMessageForUserConsent;

/// A message for empty features tab that a publisher can set for the privacy screen
@property (nonatomic, retain) NSString * _Nullable emptyMessageForFeatures;

@end

NS_ASSUME_NONNULL_END
