/*
 * Copyright © Dynamsoft Corporation. All rights reserved.
 */

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

@interface RCT_EXTERN_REMAP_MODULE(DynamsoftMultiCrossFilterModule, RNDynamsoftMultiCrossFilter, RCTEventEmitter)

RCT_EXTERN_METHOD(createInstance)

RCT_EXTERN_METHOD(destroy:(NSString *)key)

RCT_EXTERN_METHOD(enableResultCrossVerification:(NSString *)key type:(NSInteger)type isEnabled:(BOOL)isEnabled)

RCT_EXTERN_METHOD(isResultCrossVerificationEnabled:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(enableResultDeduplication:(NSString *)key type:(NSInteger)type isEnabled:(BOOL)isEnabled)

RCT_EXTERN_METHOD(isResultDeduplicationEnabled:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setDuplicateForgetTime:(NSString *)key type:(NSInteger)type time:(NSInteger)time)

RCT_EXTERN_METHOD(getDuplicateForgetTime:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(enableLatestOverlapping:(NSString *)key type:(NSInteger)type isEnabled:(BOOL)isEnabled)

RCT_EXTERN_METHOD(isLatestOverlappingEnabled:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setMaxOverlappingFrames:(NSString *)key type:(NSInteger)type maxOverlappingFrames:(NSInteger)maxOverlappingFrames)

RCT_EXTERN_METHOD(getMaxOverlappingFrames:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(setResultCrossVerificationCriteria:(NSString *)key type:(NSInteger)type criteria:(NSDictionary *)criteria)

RCT_EXTERN_METHOD(getResultCrossVerificationCriteria:(NSString *)key
                  type:(NSInteger)type
                  resolve:(RCTPromiseResolveBlock)resolve
                  reject:(RCTPromiseRejectBlock)reject)

@end
