#import <React/RCTBridgeModule.h>
#import <React/RCTViewManager.h>
#import <React/RCTUtils.h>
#import <React/RCTEventEmitter.h>
#import <React/RCTUIManager.h>

@interface RCT_EXTERN_MODULE(RnFawryPaySdk, RCTEventEmitter)

RCT_EXTERN_METHOD(startPayment:(NSString *)baseUrl
                              lang:(NSString *)lang
                              addressHierarchy:(NSString *)addressHierarchy
                              allow3DPayment:(BOOL)allow3DPayment
                              apiPath:(NSString *)apiPath
                              customerInfo:(NSDictionary *)customerInfo
                              items:(NSArray<NSDictionary *> *)items
                              merchantInfo:(NSDictionary *)merchantInfo
                              showLoyaltyContainer:(BOOL)showLoyaltyContainer
                              showTipsView:(BOOL)showTipsView
                              showVoucherContainer:(BOOL)showVoucherContainer
                              skipReceipt:(BOOL)skipReceipt
                              optionalPaymentParams:(NSDictionary *)optionalPaymentParams)

RCT_EXTERN_METHOD(openCardsManager:(nonnull NSString*)baseUrl
                              lang:(nonnull NSString*)lang
                              merchantInfo:(nonnull NSDictionary*)merchantInfo
                              customerInfo:(nonnull NSDictionary*)customerInfo)

RCT_EXTERN_METHOD(openAddressManager:(nonnull NSString*)baseUrl
                              lang:(nonnull NSString*)lang
                              merchantInfo:(nonnull NSDictionary*)merchantInfo
                              customerInfo:(nonnull NSDictionary*)customerInfo
                              beid:(nonnull NSString*)beid
                              addressHierarchy:(nonnull NSString*)addressHierarchy)

+ (BOOL)requiresMainQueueSetup
{
  return NO;
}

@end
