import {type DetectedQuadResultItem, type DeskewedImageResultItem} from "../ddn";
import {CaptureVisionRouter} from "../cvr";
import {MultiFrameResultCrossFilter} from "../utility";
/**
 * CrossVerificationStatus describes the status of the captured results.
 * <p>Code Snippet:</p>
 *
 * ```
 * let router = CaptureVisionRouter.getInstance()
 * let filter = new MultiFrameResultCrossFilter()
 * filter.enableResultCrossVerification(EnumCapturedResultItemType.CRIT_DETECTED_QUAD, true)
 * router.addFilter(filter)
 *
 * router.addResultReceiver({
 *    onProcessedDocumentResultReceived: result => {
 *        if(result.detectedQuadResultItems && result.detectedQuadResultItems.length > 0) {
 *            //Because result cross verification of DETECT_QUAD is enabled,
 *            //crossVerificationStatus of item will be CVS_PASSED or CVS_FAILED.
 *            let crossVerificationStatus = result.detectedQuadResultItems[0].crossVerificationStatus
 *        }
 *    },
 * })
 * //...
 * router.startCapturing(EnumPresetTemplate.PT_DETECT_DOCUMENT_BOUNDARIES)
 * ```
 *
 * @remarks If {@link CaptureVisionRouter} doesn't add {@link MultiFrameResultCrossFilter} via {@link CaptureVisionRouter.addFilter}
 * or added {@link MultiFrameResultCrossFilter} doesn't enable verification for the corresponding type,
 * the crossVerificationStatus property of the item for that type will always remain {@link CVS_NOT_VERIFIED}.
 * <p>
 * Currently, only {@link DetectedQuadResultItem} and {@link DeskewedImageResultItem} have the crossVerificationStatus property.
 *
 * @see {@link MultiFrameResultCrossFilter.enableResultCrossVerification}
 * @see {@link DetectedQuadResultItem.crossVerificationStatus}
 * @see {@link DeskewedImageResultItem.crossVerificationStatus}
 * */
export enum EnumCrossVerificationStatus {
  /** The cross verification has not been performed yet. */
  CVS_NOT_VERIFIED = 0,

  /** The cross verification has been passed successfully. */
  CVS_PASSED = 1,

  /** The cross verification has failed. */
  CVS_FAILED = 2
}
