
#ifndef RNScanbotBarcodeScannerViewControllerWrapper_h
#define RNScanbotBarcodeScannerViewControllerWrapper_h
#import <AVFoundation/AVFoundation.h>
#import "BarcodeItem.h"
#import <ScanbotBarcodeScannerSDK/ScanbotBarcodeScannerSDK-Swift.h>
#import <ScanbotBarcodeSDKWrapper/ScanbotBarcodeSDKWrapper-Swift.h>

@interface RNScanbotBarcodeScannerViewControllerWrapper : NSObject

+ (SBSDKBarcodeScannerViewController * _Nonnull) initController;

+ (void) setFlashEnabled:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                   value:(BOOL)value;

+ (void) setFinderEnabled:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                    value:(BOOL)value;

+ (void) setFinderStrokeWidth:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                        value:(int)value;

+ (void) setFinderStrokeColor:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                        value:(UIColor * _Nullable)value;

+ (void) setFinderOverlayColor:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                         value:(UIColor * _Nullable)value;

+ (void) setFinderInset:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                    top:(float)top
                   left:(float)left
                 bottom:(float)bottom
                  right:(float)right;

+ (void) setFinderRequiredAspectRatios:(SBSDKBaseScannerViewFinderConfiguration* _Nonnull)config
                                 width:(double)width
                                height:(double)height;

+ (void) setCameraZoomFactor:(SBSDKBaseScannerZoomConfiguration* _Nonnull)config
                       value:(float)value;

+ (void) setCameraZoomRange:(SBSDKBaseScannerZoomConfiguration* _Nonnull)config
                    minZoom:(float)minZoom
                    maxZoom:(float)maxZoom;

+ (void) setCameraDevice:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                   value:(NSString * _Nullable)value;

+ (void) setMinFocusDistanceLock:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                           value:(BOOL)value;

+ (void) setBarcodeFormats:(SBSDKBarcodeScannerViewController* _Nonnull)controller
      acceptedBarcodeTypes:(NSArray<SBSDKBarcodeType *> * _Nonnull)acceptedBarcodeTypes;

+ (void) setDocumentFormats:(SBSDKBarcodeScannerViewController* _Nonnull)controller
      acceptedDocumentTypes:(NSArray<SBSDKBarcodeDocumentRootType *> * _Nonnull)acceptedDocumentTypes;

+ (void) setEngineMode:(SBSDKBarcodeScannerViewController* _Nonnull)controller
            engineMode:(SBSDKBarcodeEngineMode)engineMode;

+ (void) setBarcodeExtensionFilter:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                            filter:(SBSDKBarcodesExtensionFilter)filter;

+ (void) setGS1HandlingMode:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
           gs1HandlingMode:(SBSDKGS1Handling)gs1HandlingMode;

+ (void) setMsiPlesseyChecksumAlgorithm:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
            msiPlesseyChecksumAlgorithm:(SBSDKBarcodeMSIPlesseyChecksumAlgorithm)msiPlesseyChecksumAlgorithm;

+ (void) setLowPowerMode:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                   value:(BOOL)value;

+ (void) setMinimumTextLenght:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
                        value:(int)value;

+ (void) setMaximumTextLenght:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
                        value:(int)value;

+ (void) setMinimum1DBarcodesQuietZone:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
                        value:(int)value;

+ (void) setStripCheckDigits:(SBSDKBarcodeAdditionalParameters* _Nonnull)config
                       value:(BOOL)value;

+ (void) setOverlayEnabled:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                     value:(BOOL)value;

+ (void) setOverlayAutomaticSelectionEnabled:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                                       value:(BOOL)value;

+ (void) setOverlayPolygonColor:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                          value:(UIColor * _Nullable)value;

+ (void) setOverlayStrokeColor:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                         value:(UIColor * _Nullable)value;

+ (void) setOverlayTextColor:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                       value:(UIColor * _Nullable)value;

+ (void) setOverlayTextContainerColor:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                                value:(UIColor * _Nullable)value;

+ (void) setOverlayTextFormat:(SBSDKBarcodeScannerViewController* _Nonnull)controller
                        value:(SBSDKBarcodeOverlayFormat)value;

+ (NSString * _Nullable) jsonFromResultOrNil:(NSArray<SBSDKBarcodeScannerResult *> * _Nonnull)codes;

+ (void) freezeCamera:(SBSDKBarcodeScannerViewController* _Nonnull)controller;

+ (void) unfreezeCamera:(SBSDKBarcodeScannerViewController* _Nonnull)controller;

+ (void) addBarcodeItemOverlayViewInitialBinderInDictionary:(NSMutableDictionary * _Nullable)dictionary
                                                loadingText:(NSString * _Nullable)loadingText
                                                   barcodes:(NSArray<SBSDKBarcodeScannerResult *> * _Nonnull)barcodes;

+ (void) updateBarcodeItemOverlayViewBinderInDictionary:(NSMutableDictionary * _Nullable)dictionary
                                        barcodeItemUuid:(NSString * _Nonnull)barcodeItemUuid
                           barcodeItemOverlayViewConfigJson:(NSString * _Nonnull)barcodeItemOverlayViewConfigJson;

+ (SBSDKBarcodeTrackedViewPolygonStyle * _Nonnull) scannedBarcodePolygonStyle:(SBSDKBarcodeScannerResult * _Nonnull)barcode
                                           barcodeItemOverlayViewBinding:(NSDictionary * _Nullable) barcodeItemOverlayViewBinding
                                                         controller:(SBSDKBarcodeScannerViewController* _Nonnull)controller;

+ (SBSDKBarcodeTrackedViewTextStyle * _Nonnull) scannedBarcodeOverlayViewTextStyle:(SBSDKBarcodeScannerResult * _Nonnull)barcode
                                      barcodeItemOverlayViewBinding:(NSDictionary * _Nullable) barcodeItemOverlayViewBinding
                                                         controller:(SBSDKBarcodeScannerViewController* _Nonnull)controller;

+ (NSString * _Nonnull) scannedBarcodeOverlayViewText:(NSString * _Nonnull)barcodeItemUuid
                                       proposedString:(NSString * _Nonnull)proposedString
                        barcodeItemOverlayViewBinding:(NSDictionary * _Nullable)barcodeItemOverlayViewBinding;

@end

#endif /* RNScanbotBarcodeScannerViewHandler_h */
