export { IDocumentScannerHandle } from "./interfaces/i-document-scanner-handle";
export {
    DocumentScannerViewConfiguration,
    StyleConfiguration,
    TextConfiguration,
    CaptureButtonStyleConfiguration,
    OutlineStyleConfiguration,
    HintTextConfiguration,
    OutlineLabelStyleConfiguration,
    CaptureAnimationStyleConfiguration,
    OutlinePolygonStyleConfiguration,
    EnabledText
} from "./model/configuration/document-scanner-view-configuration";

export { ViewFinderScannerConfiguration } from "./model/configuration/view-finder-scanner-configuration";

export { ICroppingViewHandle } from "./interfaces/i-cropping-view-handle";
export {
    CroppingViewConfiguration,
    CroppingViewStyle,
    CroppingViewMagneticLineStyle,
    CroppingViewMagnifierStyle,
    CroppingViewPolygonStyle,
    CroppingViewMagnifierBorderStyle,
    CroppingViewMagnifierCrosshairStyle,
    CroppingViewPolygonHandleStyle
} from "./model/configuration/cropping-view-configuration";
export { CroppingResult } from "./model/response/cropping-result";

export { IBarcodeScannerHandle } from "./interfaces/i-barcode-scanner-handle";
export { BarcodeScannerViewConfiguration } from "./model/configuration/barcode-scanner-view-configuration";
export {
    BarcodeCountConfiguration,
    BarcodeCountStyleConfiguration
} from "./model/configuration/barcode-count-configuration";
export { BarcodeScannerResultWithSize } from "./model/barcode/barcode-result";

export { IMrzScannerHandle } from "./interfaces/i-mrz-scanner-handle";
export { MrzScannerViewConfiguration } from "./model/configuration/mrz-scanner-view-configuration";

export { ICheckScannerHandle } from "./interfaces/i-check-scanner-handle";
export { CheckScannerViewConfiguration } from "./model/configuration/check-scanner-view-configuration";

export { ITextPatternScannerHandle } from "./interfaces/i-text-pattern-scanner-handle";
export {
    TextPatternScannerViewConfiguration
} from "./model/configuration/text-pattern-scanner-view-configuration";

export { VinScannerViewConfiguration } from "./model/configuration/vin-scanner-view-configuration";

export { IDocumentDataExtractorHandle } from "./interfaces/i-document-data-extractor-handle";
export { DocumentDataExtractorViewConfiguration } from "./model/configuration/document-data-extractor-view-configuration";

export { ICreditCardScannerHandle } from "./interfaces/i-credit-card-scanner-handle";
export { CreditCardScannerViewConfiguration } from "./model/configuration/credit-card-scanner-view-configuration";

export { PdfGenerator, PdfPageOptions } from "./service/pdf-generator";
export { TiffGenerator, TiffPageOptions } from "./service/tiff-generator";

export { MagneticLine } from "./utils/dto/MagneticLine";

export { PublicUtils } from "./service/public-utils";
export { Size } from "./utils/dto/Size";
export { VideoSize } from "./utils/dto/VideoSize";

export {
    SelectionOverlayConfiguration,
    IBarcodePolygonHandle,
    IBarcodePolygonLabelHandle,
    BarcodePolygonStyle,
    SelectionOverlayTextFormat,
    SelectionOverlayStyleConfiguration,
    BarcodePolygonLabelStyle
} from "./model/configuration/selection-overlay-configuration";

export { Polygon } from "./utils/dto/Polygon";

//TODO We currently have two implementations of Point in: utils/dto/Point & core-types. Should this be refactored?
export { Point as Point2 } from "./utils/dto/Point";

export { InitializationOptions } from "./model/configuration/initialization-options";
export { CameraInfo, CameraFacingMode } from "./model/camera-info";

export { ConsumeType } from "./consume-type";

export { BrowserCameras, CameraDetectionStrategy, DiscoverCameraMode } from './utils/browser-cameras';

export { DocumentScannerUIResult } from "./ui2/configuration/DocumentScannerUIResult";

/** Storage-related exports */
export { SBStorage, SBStoreDocumentScannerResponse } from "./service/storage/sb-storage";
export { SBStorageUtils, } from "./service/storage/utils/sb-storage-utils";
export { SBStoreImage, SBStorePageImage, SBStoreImageType, SBStorageQuery, SBStoreBuffer } from "./service/storage/indexed-db/sb-indexed-db";
export { SBDocument } from "./ui2/document/model/sb-document";
export { SBPage, SBPageEditParams, SBPageCropData } from "./ui2/document/model/sb-page";
export { PageImageSource } from "./ui2/configuration/native/PageImageSource";
export { SBStorageError } from "./service/storage/utils/sb-storage-error";
export { SBDocumentData } from "./ui2/document/model/utils/sb-document-data";
export { SBPageData } from "./ui2/document/model/utils/sb-page-data";
export { DocumentDetectionUIResult } from "./ui2/document/model/document-detection-ui-result";

export { default as ScanbotSDKUI2 } from "./ui2/scanbot-sdk-ui";
export * as UIConfig from "./ui2/configuration";
export * from "./core-types";


// TODO rm tmp types:
export { ObjectId } from "./core-types";
export { WorkerBridge as SDKWorkerBridge, } from "./worker/worker-bridge";

// We also need to export the Config-namespace as a whole, because it is directly used in
// ScanbotSDK.ts and without it, the API docs would be incomplete.
// In the API docs, Config and the types that are directly exported from ./core-types above are
// automatically reconciled.
export * as Config from "./core-types";
