#ifdef RCT_NEW_ARCH_ENABLED
#pragma once
#import <react/renderer/components/RNScanbotScannerViewSpec/Props.h>

inline bool operator!=(const facebook::react::ScanbotBarcodeScannerViewFinderInsetStruct &i,const facebook::react::ScanbotBarcodeScannerViewFinderInsetStruct &j) {
    return !(i.left == j.left && i.top == j.top && i.bottom == j.bottom && i.right == j.right);
}

inline bool operator!=(const facebook::react::ScanbotBarcodeScannerViewFinderRequiredAspectRatiosStruct &i,const facebook::react::ScanbotBarcodeScannerViewFinderRequiredAspectRatiosStruct &j) {
    return !(i.width == j.width && i.height == j.height);
}

inline bool operator!=(const facebook::react::ScanbotBarcodeScannerViewCameraZoomRangeStruct &i,const facebook::react::ScanbotBarcodeScannerViewCameraZoomRangeStruct &j) {
    return !(i.maxZoom == j.maxZoom && i.minZoom == j.minZoom);
}

inline bool operator!=(const std::vector<std::string> &v1,const std::vector<std::string> &v2) {
    
    if(v1.size() != v2.size()) return true;
    
    for(int i = 0; i< v1.size(); i++){
        if(v1[i] != v2[i]){
            return true;
        }
    }
    
    return false;
}

inline bool operator!=(std::vector<facebook::react::ScanbotBarcodeScannerViewConfigFormatConfigurationsStruct> const &v1, std::vector<facebook::react::ScanbotBarcodeScannerViewConfigFormatConfigurationsStruct> const &v2){
    
    if(v1.size() != v2.size()) return true;
    
    for(int i = 0; i< v1.size(); i++){
        if(
           v1[i]._type != v2[i]._type ||
           v1[i].regexFilter != v2[i].regexFilter ||
           v1[i].minimumSizeScore != v2[i].minimumSizeScore ||
           v1[i].addAdditionalQuietZone != v2[i].addAdditionalQuietZone ||
           v1[i].minimum1DQuietZoneSize != v2[i].minimum1DQuietZoneSize ||
           v1[i].minimumTextLength != v2[i].minimumTextLength ||
           v1[i].maximumTextLength != v2[i].maximumTextLength ||
           v1[i].enableOneDBlurScanner != v2[i].enableOneDBlurScanner ||
           v1[i].returnStartEnd != v2[i].returnStartEnd ||
           v1[i].stripCheckDigits != v2[i].stripCheckDigits ||
           v1[i].checksum != v2[i].checksum ||
           v1[i].code32 != v2[i].code32 ||
           v1[i].code39 != v2[i].code39 ||
           v1[i].pzn7 != v2[i].pzn7 ||
           v1[i].pzn8 != v2[i].pzn8 ||
           v1[i].tryCode39ExtendedMode != v2[i].tryCode39ExtendedMode ||
           v1[i].useCode39CheckDigit != v2[i].useCode39CheckDigit ||
           v1[i].gs1Handling != v2[i].gs1Handling ||
           v1[i].iata2of5 != v2[i].iata2of5 ||
           v1[i].code25 != v2[i].code25 ||
           v1[i].industrial2of5 != v2[i].industrial2of5 ||
           v1[i].useIATA2OF5Checksum != v2[i].useIATA2OF5Checksum ||
           v1[i].checksumAlgorithms != v2[i].checksumAlgorithms ||
           v1[i].ean8 != v2[i].ean8 ||
           v1[i].ean13 != v2[i].ean13 ||
           v1[i].upca != v2[i].upca ||
           v1[i].upce != v2[i].upce ||
           v1[i].extensions != v2[i].extensions ||
           v1[i].minimumValue != v2[i].minimumValue ||
           v1[i].allowNarrowBarsOnly != v2[i].allowNarrowBarsOnly ||
           v1[i].allowWideBarsOnly != v2[i].allowWideBarsOnly ||
           v1[i].strictMode != v2[i].strictMode ||
           v1[i].qr != v2[i].qr ||
           v1[i].microQr != v2[i].microQr ||
           v1[i].rmqr != v2[i].rmqr ||
           v1[i].minimumValue != v2[i].minimumValue ||
           v1[i].allowNarrowBarsOnly != v2[i].allowNarrowBarsOnly ||
           v1[i].allowWideBarsOnly != v2[i].allowWideBarsOnly ||
           v1[i].strictMode != v2[i].strictMode ||
           v1[i].qr != v2[i].qr ||
           v1[i].australiaPostCustomerFormat != v2[i].australiaPostCustomerFormat ||
           v1[i].formats != v2[i].formats ||
           v1[i].minimumNumberOfRequiredFramesWithEqualRecognitionResult != v2[i].minimumNumberOfRequiredFramesWithEqualRecognitionResult ||
           v1[i].minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless != v2[i].minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless ||
           v1[i].oneDConfirmationMode != v2[i].oneDConfirmationMode
           ){
               return true;
           }
    }
    
    return false;
}

inline bool operator!=(facebook::react::ScanbotBarcodeScannerViewConfigAccumulationStruct const &i, facebook::react::ScanbotBarcodeScannerViewConfigAccumulationStruct const &j) {
    return i.accumulationTime != j.accumulationTime ||
    i.method != j.method ||
    i.removeUnconnectedResults != j.removeUnconnectedResults;
}

#endif
