import type {CapturedResultItem, Quadrilateral, EnumCapturedResultItemType, EnumCrossVerificationStatus} from "../core";
import {MultiFrameResultCrossFilter} from "../utility";
import {CaptureVisionRouter} from "../cvr";
import { type ProcessedDocumentResult } from "./ProcessedDocumentResult";

/**
 * The DetectedQuadResultItem interface extends the {@link CapturedResultItem} interface and represents a detected quadrilateral result item.
 * @see {@link EnumCapturedResultItemType.CRIT_DETECTED_QUAD}
 * @see {@link ProcessedDocumentResult.detectedQuadResultItems}
 * */
export interface DetectedQuadResultItem extends CapturedResultItem {
    /**
     * The location of the detected quadrilateral within the original image, represented as a quadrilateral shape.
     * @see {@link Quadrilateral}
     * */
    location: Quadrilateral;
    /**A confidence score measuring the certainty that the detected quadrilateral represents the boundary of a document.*/
    confidenceAsDocumentBoundary: number;

    /**
     * The cross verification status of type {@link EnumCrossVerificationStatus}.
     *
     * @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 EnumCrossVerificationStatus.CVS_NOT_VERIFIED}.
     *
     * @see {@link EnumCrossVerificationStatus}
     * @see {@link MultiFrameResultCrossFilter.enableResultCrossVerification}
     * */
    crossVerificationStatus: EnumCrossVerificationStatus | number
}
