//
//  CfLogECom.m
//  ReactNativeCfEcom
//
//  Created by MOIZ HASSAN KHAN on 15/12/23.
//  Copyright © 2023 Facebook. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(CfLogECom, NSObject)

//RCT_EXTERN_METHOD(multiply:(float)a withB:(float)b
//                 withResolver:(RCTPromiseResolveBlock)resolve
//                 withRejecter:(RCTPromiseRejectBlock)reject)

// Expose Swift method 1
RCT_EXTERN_METHOD(logItemEvent:(NSString *)viewAction
                  itemString:(NSString *)itemString
                  catalogObject:(nullable NSString *)catalogObject
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logCartEvent:(NSString *)cartId
                  cartAction:(NSString *)cartAction
                  itemString:(NSString *)itemString
                  cartPrice:(nonnull NSNumber *)cartPrice
                  currency:(NSString *)currency
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logCheckoutEvent:(NSString *)orderId
                  cartId:(NSString *)cartId
                  isSuccessful:(BOOL)isSuccessful
                  cartPrice:(nonnull NSNumber *)cartPrice
                  currency:(NSString *)currency
                  shopMode:(nullable NSString *)shopMode
                  itemListString:(NSString *)itemListString
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logDeliveryEvent:(NSString *)orderId
                  action:(NSString *)action
                  deliveryId:(NSString *)deliveryId
                  isUrgent:(BOOL)isUrgent
                  dateTimeMillis:(NSNumber *)dateTimeMillis
                  deliveryCoordinates:(NSString *)deliveryCoordinates
                  dispatchCoordinates:(NSString *)dispatchCoordinates
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logCancelCheckoutEvent:(NSString *)checkoutId
                  cancelType:(NSString *)cancelType
                  itemTypeArrayJson:(NSString *)itemTypeArrayJson
                  reason:(NSString *)reason
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logItemReportEvent:(NSString *)itemObject
                  storeObject:(NSString *)storeObject
                  reportObject:(NSString *)reportObject
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logItemRequestEvent:(NSString *)requestId
                  itemName:(NSString *)itemName
                  manufacturer:(NSString *)manufacturer
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logItemVerificationEvent:(NSString *)scanChannel
                  scanType:(NSString *)scanType
                  isSuccessful:(BOOL)isSuccessful
                  itemInfo:(nullable NSString *)itemInfo
                  updateImmediately:(BOOL)updateImmediately)


RCT_EXTERN_METHOD(logItemImpressionEvent:(NSString *)recyclerId
                  visibleItems:(NSString *)visibleItems)



RCT_EXTERN_METHOD(updateDrugCatalog:(NSString *)itemId
                  drugCatalogModel:(NSString *)drugCatalogModel)


RCT_EXTERN_METHOD(updateGroceryCatalog:(NSString *)itemId
                  groceryItemModel:(NSString *)groceryItemModel)


RCT_EXTERN_METHOD(updateBloodCatalog:(NSString *)itemId
                  bloodCatalogModel:(NSString *)bloodCatalogModel)


RCT_EXTERN_METHOD(updateOxygenCatalog:(NSString *)itemId
                  oxygenCatalogModel:(NSString *)oxygenCatalogModel)


RCT_EXTERN_METHOD(updateMedicalEquipmentCatalog:(NSString *)itemId
                  medicalEquipmentCatalogModel:(NSString *)medicalEquipmentCatalogModel)


RCT_EXTERN_METHOD(updateFacilityCatalog:(NSString *)itemId
                  facilityCatalogModel:(NSString *)facilityCatalogModel)




+ (BOOL)requiresMainQueueSetup
{
  return YES;
}

@end
