/**
 * Copyright (c) Microblink Ltd. All rights reserved.
 */
import { Point, Quadrilateral } from "./Geometry";
/**
 * Interface representing possible events that can occur during image processing.
 * All functions in this interface are optional and will be called only if they are
 * implemented.
 */
export interface MetadataCallbacks {
    /**
     * Called when recognition process wants to display some debug text information.
     * @param debugTest Debug text information to be displayed.
     */
    onDebugText?(debugTest: string): void;
    /**
     * Called when all recognizers in RecognizerRunner have failed to detect anything on the image.
     */
    onDetectionFailed?(): void;
    /**
     * Called when recognition process wants to display some quadrilateral.
     * @param quad Quadrilateral to be displayed.
     */
    onQuadDetection?(quad: DisplayableQuad): void;
    /**
     * Called when recognition process wants to display some points.
     * @param pointSet Points to be displayed.
     */
    onPointsDetection?(pointSet: DisplayablePoints): void;
    /**
     * Called when first side recognition with the combined recognizer completes.
     */
    onFirstSideResult?(): void;
    /**
     * Called when glare detection has completed with result whether glare has been found or not.
     * @param hasGlare indicates whether glare has been found on the input image or not
     */
    onGlare?(hasGlare: boolean): void;
}
/**
 * Detection status of the specific detected object.
 */
export declare enum DetectionStatus {
    /** Detection failed, form not detected */
    Fail = 0,
    /** Object was successfully detected */
    Success = 1,
    /** Object detected, but the camera is too far above it */
    CameraTooHigh = 2,
    /** Fallback detection of an object was successful */
    FallbackSuccess = 3,
    /** Object is detected, but parts of it are not in image */
    Partial = 4,
    /** Object detected, but camera is at too big angle */
    CameraAtAngle = 5,
    /** Object detected, but the camera is too near to it */
    CameraTooNear = 6,
    /** Document detected, but document is too close to the edge of the frame */
    DocumentTooCloseToEdge = 7
}
/**
 * Interface representing any displayable object.
 */
export interface Displayable {
    /** Detection status of the displayable object. */
    detectionStatus: DetectionStatus;
    /**
     * 3x3 transformation matrix from the image's coordinate system to view's coordinate system.
     */
    transformMatrix: Float32Array;
}
/**
 * Interface representing quadrilateral in image.
 */
export interface DisplayableQuad extends Displayable, Quadrilateral {
}
/**
 * Interface representing list of points in image.
 */
export interface DisplayablePoints extends Displayable {
    /** Array of points */
    points: Point[];
}
