/*
 * This is one of the header files of Dynamsoft Capture Vision SDK - Capture Vision Router module.
 *
 * Copyright © Dynamsoft Corporation. All rights reserved.
 */

#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <DynamsoftCaptureVisionBundle/DSCapturedResultBase.h>

@class DSImageTag;
@class DSCapturedResultItem;
@class DSDecodedBarcodesResult;
@class DSRecognizedTextLinesResult;
@class DSProcessedDocumentResult;
@class DSParsedResult;

NS_ASSUME_NONNULL_BEGIN

/**
 * The DSCapturedResult class represents the result of a capture operation on an image. Internally, DSCaptureResult stores an array that contains multiple items, each of which may be a barcode, text line, detected quad, normalized image, raw image, parsed item, etc.
 */
NS_SWIFT_NAME(CapturedResult)
@interface DSCapturedResult : DSCapturedResultBase

/**
 * An array of DSCapturedResultItems, which are the basic unit of the captured results.
 * A DSCapturedResultItem can be a raw image, a decoded barcode, a recognized text, a detected quad, a normalized image or a parsed result.
 * View DSCapturedResultItemType for all available types.
 */
@property (nonatomic, readonly, copy, nullable) NSArray<DSCapturedResultItem *> *items;

/**
 * A DSDecodeBarcodesResult object that contains all the DSBarcodeResultItems in the DSCapturedResult.
 */
@property (nonatomic, readonly, strong, nullable) DSDecodedBarcodesResult *decodedBarcodesResult;

/**
 * A DSRecognizedTextLinesResult object that contains all the DSTextLinesResultItems in the DSCapturedResult.
 */
@property (nonatomic, readonly, strong, nullable) DSRecognizedTextLinesResult *recognizedTextLinesResult;

/**
 * A DSProcessedDocumentResult object that contains all the DSDetectedQuadResultItem in the DSCapturedResult.
 */
@property (nonatomic, readonly, strong, nullable) DSProcessedDocumentResult *processedDocumentResult;

/**
 * A DSParsedResult object that contains all the DSParsedResultItem in the DSCapturedResult.
 */
@property (nonatomic, readonly, strong, nullable) DSParsedResult *parsedResult;

+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;

@end

NS_ASSUME_NONNULL_END
