/**
 * Copyright (c) Microblink Ltd. All rights reserved.
 */
import { AdditionalProcessingInfo } from "./AdditionalProcessingInfo";
import { BlinkIdSingleSideRecognizerSettings, BaseBlinkIdRecognizerResult } from "./BlinkIdSingleSideRecognizer";
import { CameraFrameResult, ImageResult } from "../ImageOptions";
import { DataMatchResult } from "./DataMatch";
import { ImageAnalysisResult } from "./ImageAnalysisResult";
import { ProcessingStatus } from "./ProcessingStatus";
import { VIZResult } from "./VIZResult";
import { Recognizer, WasmSDK } from "../../../MicroblinkSDK/DataStructures";
/**
 * A settings object that is used for configuring the BlinkIdMultiSideRecognizer.
 */
export declare class BlinkIdMultiSideRecognizerSettings extends BlinkIdSingleSideRecognizerSettings {
    /**
     * Proceed to scan the back side of a document even if some of the validity checks have failed while scanning the
     * front side of a document.
     */
    allowUncertainFrontSideScan: boolean;
    /**
     * Configure the number of characters per field that are allowed to be inconsistent in data match.
     */
    maxAllowedMismatchesPerField: number;
    /**
     * Back side of the document will not be scanned if only the front side is supported for a specific document.
     *
     * If set to false, a photo of the back side will be returned, as well as barcode or MRZ (Machine Readable Zone) if
     * either is present.
     */
    skipUnsupportedBack: boolean;
    /**
     * Scan only the data page ( page containing MRZ ) of the passport.
     * If set to `false`, it will be required to scan the second page of certain passports.
     */
    scanPassportDataPageOnly: boolean;
}
/**
 * The result of image recognition when using the BlinkIdMultiSideRecognizer.
 */
export interface BlinkIdMultiSideRecognizerResult extends BaseBlinkIdRecognizerResult {
    /**
     * Detailed information about missing, invalid and extra fields.
     */
    readonly backAdditionalProcessingInfo: AdditionalProcessingInfo;
    /**
     * Detailed information about missing, invalid and extra fields.
     */
    readonly frontAdditionalProcessingInfo: AdditionalProcessingInfo;
    /**
     * Full video feed frame from which barcode data was extracted.
     */
    readonly barcodeCameraFrame: CameraFrameResult;
    /**
     * Full video feed frame from which document data on front side was extracted.
     */
    readonly frontCameraFrame: CameraFrameResult;
    /**
     * Full video feed frame from which document data on back side was extracted.
     */
    readonly backCameraFrame: CameraFrameResult;
    /**
     * Cropped and dewarped back side image of a document that has been scanned.
     */
    readonly fullDocumentBackImage: ImageResult;
    /**
     * Cropped and dewarped front side image of a document that has been scanned.
     */
    readonly fullDocumentFrontImage: ImageResult;
    /**
     * Result of analysis of the image of the front side of the document.
     */
    readonly frontImageAnalysisResult: ImageAnalysisResult;
    /**
     * Result of analysis of the image of the back side of the document.
     */
    readonly backImageAnalysisResult: ImageAnalysisResult;
    /**
     * The data extracted from the front side visual inspection zone.
     */
    readonly frontViz: VIZResult;
    /**
     * The data extracted from the back side visual inspection zone.
     */
    readonly backViz: VIZResult;
    /**
     * Status of the last recognition process for the front side of the document.
     */
    readonly frontProcessingStatus: ProcessingStatus;
    /**
     * Status of the last recognition process for the back side of the document.
     */
    readonly backProcessingStatus: ProcessingStatus;
    /**
     * The result of the data matching algorithm for scanned parts/sides of the document.
     *
     * For example if date of expiry is scanned from the front and back side of the document and
     * values do not match, this method will return {@link DataMatchResult#Failed} for that specific
     * field, and for data match on the whole document.
     *
     * Result for the whole document will be {@link DataMatchResult#Success} only if scanned values
     * for all fields that are compared are the same. If data matching has not been performed,
     * result will be {@link DataMatchResult#NotPerformed}.
     */
    readonly dataMatchResult: DataMatchResult;
    /**
     * {@code true} if recognizer has finished scanning first side and is now scanning back side,
     * {@code false} if it's still scanning first side.
     */
    readonly scanningFirstSideDone: boolean;
}
/**
 * The Blink ID MultiSide Recognizer is used for scanning both sides of any ID document.
 */
export interface BlinkIdMultiSideRecognizer extends Recognizer {
    /** Returns the currently applied BlinkIdMultiSideRecognizerSettings. */
    currentSettings(): Promise<BlinkIdMultiSideRecognizerSettings>;
    /** Applies new settings to the recognizer. */
    updateSettings(newSettings: BlinkIdMultiSideRecognizerSettings): Promise<void>;
    /** Returns the current result of the recognition. */
    getResult(): Promise<BlinkIdMultiSideRecognizerResult>;
}
/**
 * This function is used to create a new instance of `BlinkIdMultiSideRecognizer`.
 * @param wasmSDK Instance of WasmSDK which will be used to communicate with the WebAssembly module.
 */
export declare function createBlinkIdMultiSideRecognizer(wasmSDK: WasmSDK): Promise<BlinkIdMultiSideRecognizer>;
