//
//  SMAGVListViewModel.h
//  SmaatoSDKCMP
//
//  Created by ashu on 12/07/21.
//

#import <Foundation/Foundation.h>
#import "SMAPublisherPurposesConfiguration.h"
#import "SMAPublisherVendorsConfiguration.h"
#import "SMACMPVendors.h"

@class SMAGlobalVendorList;

///Completion handler to receive SMAPublisherPurposes array
typedef void (^PublisherSelectedListLoadingOnDidLoad)(NSArray<SMAPublisherPurposes*> *_Nullable list, NSError *_Nullable error);
///Completion handler to receive SMACMPVendors array
typedef void (^PublisherSelectedVendorsLoadingOnDidLoad)(NSArray<SMACMPVendors*>*_Nullable list, NSError *_Nullable error);
NS_ASSUME_NONNULL_BEGIN

@interface SMAGVListViewModel : NSObject

- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithVendorList:(SMAGlobalVendorList* _Nullable)list NS_DESIGNATED_INITIALIZER;

- (void)objConverterWithCompletion:(void (^)(void))block;

/// To get SMAPublisherPurposes object array from publisher configuration integer array to display on welcome  screen
- (void)puposesToDisplayOnWelcomeScreen:(SMAPublisherPurposesConfiguration *)publisherConfig
                  publisherVendorConfig:(SMAPublisherVendorsConfiguration *)publisherVendorConfig
                      completionHandler:(PublisherSelectedListLoadingOnDidLoad)completion;
/// To get SMACMPVendors object array from publisher vendor integer array to display on privacy screen
-(void)vendorsToDisplayOnPrivacyCenter:(SMAPublisherVendorsConfiguration*)publisherVendorConfig  pubPurposeConfig:(SMAPublisherPurposesConfiguration*)publisherConfig completionHandler:(PublisherSelectedVendorsLoadingOnDidLoad)completion;
///Handle AcceptAll/RejectAll consent puposes and vendors in WelcomeScreen and PrivacyCenter screen
- (void)createTCStringFromWelcomeScreenWithSelectedLanguage:(NSString *)langStr
                                         isAcceptAllConsent:(BOOL)isAcceptAll
                                     publisherConfiguration:(SMAPublisherPurposesConfiguration *)pubConfig vendorConfiguration:(SMAPublisherVendorsConfiguration*)vendorConfig;
///Handle selected consent puposes and vendors to store in TCString
-(void)createTCStringWith:(NSArray<SMAPublisherPurposes *>*)selectedPurposes andVendors:(NSArray<SMACMPVendors *>*)selectedVendors selectedLanguage:(NSString*)langStr;
// Handle cancel tap on Privacy Center screen
- (void)handlingTCStringOnCancelTapWithSelectedLanguage:(NSString *)langStr publisherConfig:(SMAPublisherPurposesConfiguration *)pubConfig vendorConfiguration:(SMAPublisherVendorsConfiguration*)vendorConfig;
// To get SMAPublisherPurposes object array from publisher configuration integer array to display on welcome  screen
-(void)getPurposesAndFeatureListForPrivacyCenterWithVendorConfig:(SMAPublisherVendorsConfiguration*)publisherVendorConfig pubPurposeConfig:(SMAPublisherPurposesConfiguration*)publisherPurposeConfig completionHandler:(PublisherSelectedListLoadingOnDidLoad)completion;
@end

NS_ASSUME_NONNULL_END
