{"version":3,"sources":["jsdelivr-header.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/utils/utils.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/utils/json/JsonSerializationTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/analytics/Analytics.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/barcode/BarcodeConfigurationTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/barcode/BarcodeTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/CommonFieldType.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/imageRef/ObjectPoolTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/imageRef/ImageRefTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/imageRef/image.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/GenericDocument.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/barcode/BarcodeScannerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/utils/geometry/Geometry.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_scanner/DocumentScannerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/check/CheckScannerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/frame_accumulation/FrameAccumulationTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/credit_card/CreditCardTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_data_extractor/DocumentDataExtractorConfigurationTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_data_extractor/DocumentDataExtractorTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_scanner/PageImageSource.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/dqa/DocumentQualityAnalyzerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/image_filters/ParametricFilters.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_scanner/PageData.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/document_scanner/DocumentData.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/ehic/EuropeanHealthInsuranceCardTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/medical_certificate/MedicalCertificateTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/mrz/MrzTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/text_pattern_scanner/TextPatternScannerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/vin/VinScannerTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/barcode/BarcodeDocumentTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/BarcodeDocumentModel.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/CheckDocumentModel.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/CreditCardDocumentModel.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/documents/DocumentsModel.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/imageRef/ImageTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/ocr_renderer/PdfConfigurationTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/tiff_wrapper/TiffTypes.js","/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/esm/index.js"],"names":[],"mappings":"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ARH,Q,+VEiCmB,2B,0GACC,4B,mHACG,+B,2bDnClB,a,8YFKS,S,kCAFN,gB,yCACO,U,4CAEG,a,oDACQ,W,6DACS,Y,wDACL,e,+OGoBT,6B,mEA1Bd,e,sEADC,gB,6DAEH,a,8FAuBW,wB,iGADC,yB,snDAhBe,K,0DACA,K,yDAFD,I,0DAGC,K,0DAEA,K,yDADD,I,0DAEC,K,0DAEA,K,2DACC,M,yDAFF,I,0DAGC,K,0DAEA,K,2DACC,M,yDAFF,I,0DAGC,K,wDAfF,a,yDAgBC,I,yDACA,I,sDAlBH,W,8CADR,4B,6GADC,6B,0MAuBC,8B,+WFzBnB,W,ohBDQL,M,+BACO,U,8CACe,kB,uRA2DrB,O,wFGpCe,sB,mEH1BP,e,uDCHJ,W,uDAHA,W,+iBACA,W,0JELL,M,6XHee,qB,qjBGuBA,qB,wFACC,sB,svBAtCJ,kB,upBHaX,O,kaAZG,U,iWGmCa,uB,uDFnCZ,W,uDADA,W,mEAQI,e,mSD+BF,Q,qCAdM,c,kCADH,W,qCA4BG,c,qCAEA,c,gDADW,yB,oCAVZ,a,wCAaI,iB,sCAPF,e,gCAQN,S,yCA9BS,kB,0BAZf,Q,+BAgBK,Q,+BAfA,Q,uCAMQ,gB,gCAIP,S,qCASK,c,8BAHP,O,8BAbA,O,+BASC,Q,mCAKI,Y,8BAKL,O,gCAGE,S,8BApBF,O,kCAEI,W,8BAqBJ,O,sCAJQ,e,+BAXP,Q,mCAgBI,Y,mCAMA,Y,iCATF,U,kCAIC,W,8BATJ,O,oCAkBM,a,+BARL,Q,gCA7BC,S,yCAYS,kB,kCAIP,W,+BAEH,Q,6BAYF,M,6BAEA,M,iCAjCI,U,6BAGJ,M","file":"/npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/plugin.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/capacitor-plugin-scanbot-sdk@7.1.1/dist/plugin.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export class PartiallyConstructible {\n    /** @internal */\n    _marker() { }\n}\n/** @internal */\nexport function mapRTUUIResult(result, LClass) {\n    if (result.status === 'OK') {\n        return Object.assign(Object.assign({}, result), { data: new LClass(result.data) });\n    }\n    else {\n        return result;\n    }\n}\n/** @internal */\nexport function mapPlainResult(jsObject) {\n    return jsObject.result;\n}\nexport class Point {\n    constructor(x, y) {\n        this.x = x;\n        this.y = y;\n    }\n}\n//# sourceMappingURL=utils.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/JSONSerializationTypes.yaml\nimport { PartiallyConstructible } from '../../utils/utils';\n/**\nConfiguration used to serialize an object to json.\n*/\nexport class ToJsonConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ToJsonConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Serialize images in the object to json. If false, then fields that contain images are not serialized.\n          \n          Default is true\n          */\n        this.serializeImages = true;\n        /**\n          Image serialization mode.\n          \n          Default is REFERENCE\n          */\n        this.imageSerializationMode = 'REFERENCE';\n        if (source.serializeImages !== undefined) {\n            this.serializeImages = source.serializeImages;\n        }\n        if (source.imageSerializationMode !== undefined) {\n            this.imageSerializationMode = source.imageSerializationMode;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            serializeImages: this.serializeImages,\n            imageSerializationMode: this.imageSerializationMode,\n        };\n    }\n}\nexport const ImageSerializationModeValues = ['REFERENCE', 'BUFFER'];\n//# sourceMappingURL=JsonSerializationTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from native/schemas/analytics/Analytics.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nThe feature that is being tracked.\n*/\nexport class AnalyticsFeature extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AnalyticsFeature>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (AnalyticsFeature) {\n    /**\n      The document scanner feature.\n      \n      Default is \"rtuui_document_scanner\"\n      */\n    AnalyticsFeature.documentScanner = 'rtuui_document_scanner';\n})(AnalyticsFeature || (AnalyticsFeature = {}));\n/**\nThe category that is being tracked.\n*/\nexport class AnalyticsCategory extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AnalyticsCategory>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (AnalyticsCategory) {\n    /**\n      The acknowledge category.\n      \n      Default is \"acknowledge\"\n      */\n    AnalyticsCategory.acknowledge = 'acknowledge';\n})(AnalyticsCategory || (AnalyticsCategory = {}));\n/**\nThe event that is being tracked.\n*/\nexport class AnalyticsEvent extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AnalyticsEvent>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The value associated with the event.\n          */\n        this.values = [];\n        if (source.feature !== undefined) {\n            this.feature = source.feature;\n        }\n        else {\n            throw new Error('feature must be present in constructor argument');\n        }\n        if (source.category !== undefined) {\n            this.category = source.category;\n        }\n        else {\n            throw new Error('category must be present in constructor argument');\n        }\n        if (source.name !== undefined) {\n            this.name = source.name;\n        }\n        else {\n            throw new Error('name must be present in constructor argument');\n        }\n        if (source.values !== undefined) {\n            this.values = source.values.map((it) => {\n                return it;\n            });\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            feature: this.feature,\n            category: this.category,\n            name: this.name,\n            values: this.values.map((it) => {\n                return it;\n            }),\n        };\n    }\n}\n/**\nThe name of the event.\n*/\nexport class AnalyticsEventName extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AnalyticsEventName>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (AnalyticsEventName) {\n    /**\n      The image quality result event for imported page.\n      \n      Default is \"imported_image_quality_result\"\n      */\n    AnalyticsEventName.importedImageQualityResult = 'imported_image_quality_result';\n    /**\n      The image quality result event for scanned page.\n      \n      Default is \"scanned_image_quality_result\"\n      */\n    AnalyticsEventName.scannedImageQualityResult = 'scanned_image_quality_result';\n    /**\n      The proceed event.\n      \n      Default is \"proceed_with_image\"\n      */\n    AnalyticsEventName.proceedImage = 'proceed_with_image';\n    /**\n      The retake event.\n      \n      Default is \"retake_image\"\n      */\n    AnalyticsEventName.retakeImage = 'retake_image';\n})(AnalyticsEventName || (AnalyticsEventName = {}));\n/**\nA predefined analytics event.\n*/\nexport class AnalyticsEventFactory extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AnalyticsEventFactory>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (AnalyticsEventFactory) {\n    /**\n      A predefined analytics event.\n      */\n    AnalyticsEventFactory.scannedImageQualityResult = new AnalyticsEvent({\n        feature: 'rtuui_document_scanner',\n        category: 'acknowledge',\n        name: 'scanned_image_quality_result',\n    });\n    /**\n      A predefined analytics event.\n      */\n    AnalyticsEventFactory.importedImageQualityResult = new AnalyticsEvent({\n        feature: 'rtuui_document_scanner',\n        category: 'acknowledge',\n        name: 'imported_image_quality_result',\n    });\n    /**\n      A predefined analytics event.\n      */\n    AnalyticsEventFactory.proceedWithImage = new AnalyticsEvent({\n        feature: 'rtuui_document_scanner',\n        category: 'acknowledge',\n        name: 'proceed_with_image',\n    });\n    /**\n      A predefined analytics event.\n      */\n    AnalyticsEventFactory.retakeImage = new AnalyticsEvent({\n        feature: 'rtuui_document_scanner',\n        category: 'acknowledge',\n        name: 'retake_image',\n    });\n})(AnalyticsEventFactory || (AnalyticsEventFactory = {}));\n//# sourceMappingURL=Analytics.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/BarcodeConfigurationTypes.yaml\nimport { PartiallyConstructible } from '../utils/utils';\n/** @internal */\nexport var BarcodeFormatConfigurationBase;\n(function (BarcodeFormatConfigurationBase) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'BarcodeFormatCodabarConfiguration':\n                return new BarcodeFormatCodabarConfiguration(source);\n            case 'BarcodeFormatCode11Configuration':\n                return new BarcodeFormatCode11Configuration(source);\n            case 'BarcodeFormatCode39Configuration':\n                return new BarcodeFormatCode39Configuration(source);\n            case 'BarcodeFormatCode93Configuration':\n                return new BarcodeFormatCode93Configuration(source);\n            case 'BarcodeFormatCode128Configuration':\n                return new BarcodeFormatCode128Configuration(source);\n            case 'BarcodeFormatCode2Of5Configuration':\n                return new BarcodeFormatCode2Of5Configuration(source);\n            case 'BarcodeFormatDataBarConfiguration':\n                return new BarcodeFormatDataBarConfiguration(source);\n            case 'BarcodeFormatDataBarExpandedConfiguration':\n                return new BarcodeFormatDataBarExpandedConfiguration(source);\n            case 'BarcodeFormatDataBarLimitedConfiguration':\n                return new BarcodeFormatDataBarLimitedConfiguration(source);\n            case 'BarcodeFormatITFConfiguration':\n                return new BarcodeFormatItfConfiguration(source);\n            case 'BarcodeFormatMSIPlesseyConfiguration':\n                return new BarcodeFormatMsiPlesseyConfiguration(source);\n            case 'BarcodeFormatUpcEanConfiguration':\n                return new BarcodeFormatUpcEanConfiguration(source);\n            case 'BarcodeFormatPharmaCodeConfiguration':\n                return new BarcodeFormatPharmaCodeConfiguration(source);\n            case 'BarcodeFormatAztecConfiguration':\n                return new BarcodeFormatAztecConfiguration(source);\n            case 'BarcodeFormatQRCodeConfiguration':\n                return new BarcodeFormatQrCodeConfiguration(source);\n            case 'BarcodeFormatPDF417Configuration':\n                return new BarcodeFormatPdf417Configuration(source);\n            case 'BarcodeFormatMicroPDF417Configuration':\n                return new BarcodeFormatMicroPdf417Configuration(source);\n            case 'BarcodeFormatDataMatrixConfiguration':\n                return new BarcodeFormatDataMatrixConfiguration(source);\n            case 'BarcodeFormatMaxiCodeConfiguration':\n                return new BarcodeFormatMaxiCodeConfiguration(source);\n            case 'BarcodeFormatAustraliaPostConfiguration':\n                return new BarcodeFormatAustraliaPostConfiguration(source);\n            case 'BarcodeFormatJapanPostConfiguration':\n                return new BarcodeFormatJapanPostConfiguration(source);\n            case 'BarcodeFormatRoyalMailConfiguration':\n                return new BarcodeFormatRoyalMailConfiguration(source);\n            case 'BarcodeFormatRoyalTNTPostConfiguration':\n                return new BarcodeFormatRoyalTntPostConfiguration(source);\n            case 'BarcodeFormatUSPSIntelligentMailConfiguration':\n                return new BarcodeFormatUspsIntelligentMailConfiguration(source);\n            case 'BarcodeFormatPharmaCodeTwoTrackConfiguration':\n                return new BarcodeFormatPharmaCodeTwoTrackConfiguration(source);\n            case 'BarcodeFormatGS1CompositeConfiguration':\n                return new BarcodeFormatGs1CompositeConfiguration(source);\n            case 'BarcodeFormatCommonOneDConfiguration':\n                return new BarcodeFormatCommonOneDConfiguration(source);\n            case 'BarcodeFormatCommonTwoDConfiguration':\n                return new BarcodeFormatCommonTwoDConfiguration(source);\n            case 'BarcodeFormatCommonFourStateConfiguration':\n                return new BarcodeFormatCommonFourStateConfiguration(source);\n            case 'BarcodeFormatCommonConfiguration':\n                return new BarcodeFormatCommonConfiguration(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    BarcodeFormatConfigurationBase.From = From;\n})(BarcodeFormatConfigurationBase || (BarcodeFormatConfigurationBase = {}));\n/** @internal */\nexport var BarcodeFormatOneDConfigurationBase;\n(function (BarcodeFormatOneDConfigurationBase) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'BarcodeFormatCodabarConfiguration':\n                return new BarcodeFormatCodabarConfiguration(source);\n            case 'BarcodeFormatCode11Configuration':\n                return new BarcodeFormatCode11Configuration(source);\n            case 'BarcodeFormatCode39Configuration':\n                return new BarcodeFormatCode39Configuration(source);\n            case 'BarcodeFormatCode93Configuration':\n                return new BarcodeFormatCode93Configuration(source);\n            case 'BarcodeFormatCode128Configuration':\n                return new BarcodeFormatCode128Configuration(source);\n            case 'BarcodeFormatCode2Of5Configuration':\n                return new BarcodeFormatCode2Of5Configuration(source);\n            case 'BarcodeFormatDataBarConfiguration':\n                return new BarcodeFormatDataBarConfiguration(source);\n            case 'BarcodeFormatDataBarExpandedConfiguration':\n                return new BarcodeFormatDataBarExpandedConfiguration(source);\n            case 'BarcodeFormatDataBarLimitedConfiguration':\n                return new BarcodeFormatDataBarLimitedConfiguration(source);\n            case 'BarcodeFormatITFConfiguration':\n                return new BarcodeFormatItfConfiguration(source);\n            case 'BarcodeFormatMSIPlesseyConfiguration':\n                return new BarcodeFormatMsiPlesseyConfiguration(source);\n            case 'BarcodeFormatUpcEanConfiguration':\n                return new BarcodeFormatUpcEanConfiguration(source);\n            case 'BarcodeFormatPharmaCodeConfiguration':\n                return new BarcodeFormatPharmaCodeConfiguration(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    BarcodeFormatOneDConfigurationBase.From = From;\n})(BarcodeFormatOneDConfigurationBase || (BarcodeFormatOneDConfigurationBase = {}));\n/**\nCodabar barcode configuration. Add to scanner configuration to scan Codabar barcodes.\n*/\nexport class BarcodeFormatCodabarConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCodabarConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCodabarConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          If true, return the start and end characters.\n          \n          Default is false\n          */\n        this.returnStartEnd = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.returnStartEnd !== undefined) {\n            this.returnStartEnd = source.returnStartEnd;\n        }\n    }\n}\n/**\nCode 11 barcode configuration. Add to scanner configuration to scan Code 11 barcodes.\n*/\nexport class BarcodeFormatCode11Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCode11Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCode11Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          If true, return CODE_11 barcodes only if they have a valid checksum.\n          \n          Default is true\n          */\n        this.checksum = true;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.checksum !== undefined) {\n            this.checksum = source.checksum;\n        }\n    }\n}\n/**\nCode 39 barcode and derivatives configuration. Add to scanner configuration to scan Code 39, Code 32 (Italian Pharmacode), PZN7 and PZN8 (Pharmazentralnummer) barcodes.\n*/\nexport class BarcodeFormatCode39Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCode39Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCode39Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          If true, scan and return valid CODE_32 (Italian Pharmacode) barcodes. If false, CODE_32 barcodes are not decoded and are returned as CODE_39 instead.\n          \n          Default is false\n          */\n        this.code32 = false;\n        /**\n          If true, scan CODE_39 barcodes.\n          \n          Default is true\n          */\n        this.code39 = true;\n        /**\n          If true, scan PZN7 (legacy Pharmazentralnummer) barcodes. If false, PZN7 barcodes are not decoded and are returned as CODE_39 instead.\n          \n          Default is true\n          */\n        this.pzn7 = true;\n        /**\n          If true, scan PZN8 (Pharmazentralnummer) barcodes. If false, PZN8 barcodes are not decoded and are returned as CODE_39 instead.\n          \n          Default is true\n          */\n        this.pzn8 = true;\n        /**\n          If true, try to scan CODE_39 in extended mode.\n          \n          Default is false\n          */\n        this.tryCode39ExtendedMode = false;\n        /**\n          If true, return CODE_39 barcodes only if they have a valid check digit.\n          \n          Default is false\n          */\n        this.useCode39CheckDigit = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.code32 !== undefined) {\n            this.code32 = source.code32;\n        }\n        if (source.code39 !== undefined) {\n            this.code39 = source.code39;\n        }\n        if (source.pzn7 !== undefined) {\n            this.pzn7 = source.pzn7;\n        }\n        if (source.pzn8 !== undefined) {\n            this.pzn8 = source.pzn8;\n        }\n        if (source.tryCode39ExtendedMode !== undefined) {\n            this.tryCode39ExtendedMode = source.tryCode39ExtendedMode;\n        }\n        if (source.useCode39CheckDigit !== undefined) {\n            this.useCode39CheckDigit = source.useCode39CheckDigit;\n        }\n    }\n}\n/**\nCode 93 barcode configuration. Add to scanner configuration to scan Code 93 barcodes.\n*/\nexport class BarcodeFormatCode93Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCode93Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCode93Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n    }\n}\n/**\nCode 128 barcode configuration. Add to scanner configuration to scan Code 128 barcodes.\n*/\nexport class BarcodeFormatCode128Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCode128Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCode128Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n    }\n}\n/**\nConfiguration for all 2-of-5 barcode types (except Interleaved 2-of-5, which is handled by ItfConfig).\nAdd to scanner configuration to scan Code 25, IATA 2-of-5 and Industrial 2-of-5 barcodes.\n\nIndustrial 2-of-5 barcodes are a subset of Code 25 barcodes.\nAny valid Industrial 2-of-5 barcode is also a valid Code 25 barcode.\n*/\nexport class BarcodeFormatCode2Of5Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCode2Of5Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCode2Of5Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          If true, scan IATA 2-of-5 barcodes. If useIATA2OF5Checksum is true, only barcodes with a valid checksum are returned.\n          \n          Default is true\n          */\n        this.iata2of5 = true;\n        /**\n          If true, scan and return Code 25 (Code 2-of-5) barcodes. If industrial2of5 is also true, then valid Industrial 2-of-5 barcodes will preferentially be returned as such, instead of Code 25.\n          \n          Default is false\n          */\n        this.code25 = false;\n        /**\n          If true, scan and return valid Industrial 2-of-5 barcodes. If false, but code25 is true, Industrial 2-of-5 barcodes will be returned as Code 25 barcodes.\n          \n          Default is true\n          */\n        this.industrial2of5 = true;\n        /**\n          If true, return IATA_2_OF_5 barcodes only if they have a valid check digit.\n          \n          Default is true\n          */\n        this.useIATA2OF5Checksum = true;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.iata2of5 !== undefined) {\n            this.iata2of5 = source.iata2of5;\n        }\n        if (source.code25 !== undefined) {\n            this.code25 = source.code25;\n        }\n        if (source.industrial2of5 !== undefined) {\n            this.industrial2of5 = source.industrial2of5;\n        }\n        if (source.useIATA2OF5Checksum !== undefined) {\n            this.useIATA2OF5Checksum = source.useIATA2OF5Checksum;\n        }\n    }\n}\n/**\nGS1 DataBar barcode configuration. Add to scanner configuration to scan GS1 DataBar-14, GS1 DataBar-14 Truncated, GS1 DataBar-14 Stacked and GS1 DataBar-14 Stacked Omnidirectional barcodes.\n*/\nexport class BarcodeFormatDataBarConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatDataBarConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatDataBarConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n    }\n}\n/**\nGS1 DataBar Expanded barcode configuration. Add to scanner configuration to scan GS1 DataBar Expanded and GS1 DataBar Expanded Stacked barcodes.\n*/\nexport class BarcodeFormatDataBarExpandedConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatDataBarExpandedConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatDataBarExpandedConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n    }\n}\n/**\nGS1 DataBar Limited barcode configuration. Add to scanner configuration to scan GS1 DataBar Limited barcodes.\n*/\nexport class BarcodeFormatDataBarLimitedConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatDataBarLimitedConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatDataBarLimitedConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n    }\n}\n/**\nITF (Interleaved 2-of-5) barcode configuration. Add to scanner configuration to scan Interleaved 2-of-5 (ITF) barcodes.\n*/\nexport class BarcodeFormatItfConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatItfConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatITFConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n    }\n}\nexport const MsiPlesseyChecksumAlgorithmValues = [\n    'MOD_10',\n    'MOD_11_IBM',\n    'MOD_11_NCR',\n    'MOD_10_10',\n    'MOD_11_10_IBM',\n    'MOD_11_10_NCR',\n];\n/**\nMSI Plessey barcode configuration. Add to scanner configuration to scan MSI Plessey barcodes.\n*/\nexport class BarcodeFormatMsiPlesseyConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatMsiPlesseyConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatMSIPlesseyConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          List of MSI Plessey checksum algorithms to apply during scanning.\n          A barcode is considered valid if it passes any of the checksum algorithms in the list.\n          If the list is empty, no checksum validation is performed.\n          */\n        this.checksumAlgorithms = ['MOD_10'];\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.checksumAlgorithms !== undefined) {\n            this.checksumAlgorithms = source.checksumAlgorithms.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n/**\nUPC/EAN barcode configuration. Add to scanner configuration to scan EAN-8, EAN-13, UPC-E and UPC-A barcodes.\n*/\nexport class BarcodeFormatUpcEanConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatUpcEanConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatUpcEanConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          If true, scan and return valid EAN-8 barcodes.\n          \n          Default is true\n          */\n        this.ean8 = true;\n        /**\n          If true, scan and return valid EAN-13 barcodes.\n          \n          Default is true\n          */\n        this.ean13 = true;\n        /**\n          If true, scan and return valid UPC-A barcodes. If false, but ean13 is true, then UPC-A barcodes will be returned as EAN-13 barcodes.\n          \n          Default is true\n          */\n        this.upca = true;\n        /**\n          If true, scan and return valid UPC-E barcodes.\n          \n          Default is true\n          */\n        this.upce = true;\n        /**\n          Behavior when scanning UPC/EAN barcodes with EAN-2 or EAN-5 extensions.\n          \n          Default is ALLOW_ANY\n          */\n        this.extensions = 'ALLOW_ANY';\n        /**\n          In case that EAN/UPC barcodes both with and without extensions are allowed,\n          we require this number of frames on which the standalone EAN or UPC (i.e. without extension) has to be detected to be considered as valid (live scanning only).\n          EAN/UPC barcodes with extensions are more prone to slicing (incomplete decoding).\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability that an extension is accidentally missed.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless = 1;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.ean8 !== undefined) {\n            this.ean8 = source.ean8;\n        }\n        if (source.ean13 !== undefined) {\n            this.ean13 = source.ean13;\n        }\n        if (source.upca !== undefined) {\n            this.upca = source.upca;\n        }\n        if (source.upce !== undefined) {\n            this.upce = source.upce;\n        }\n        if (source.extensions !== undefined) {\n            this.extensions = source.extensions;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResultExtensionless;\n        }\n    }\n}\n/**\nPharmaCode barcode configuration. Add to scanner configuration to scan linear (1D) Laetus Pharmacode barcodes. Two-track PharmaCode scanning is configured separately through the PharmaCodeTwoTrackConfig class.\n*/\nexport class BarcodeFormatPharmaCodeConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatPharmaCodeConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatPharmaCodeConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          Minimum value for PharmaCode. Very low values are likely to produce more false positives.\n          \n          Default is 16\n          */\n        this.minimumValue = 16;\n        /**\n          If true, a result consisting of only narrow bars is accepted as valid. The specification does not recommend such barcodes. Default is false.\n          \n          Default is false\n          */\n        this.allowNarrowBarsOnly = false;\n        /**\n          If true, a result consisting of only wide bars is accepted as valid. The specification does not recommend such barcodes. Default is false.\n          \n          Default is false\n          */\n        this.allowWideBarsOnly = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.minimumValue !== undefined) {\n            this.minimumValue = source.minimumValue;\n        }\n        if (source.allowNarrowBarsOnly !== undefined) {\n            this.allowNarrowBarsOnly = source.allowNarrowBarsOnly;\n        }\n        if (source.allowWideBarsOnly !== undefined) {\n            this.allowWideBarsOnly = source.allowWideBarsOnly;\n        }\n    }\n}\n/** @internal */\nexport var BarcodeFormatTwoDConfigurationBase;\n(function (BarcodeFormatTwoDConfigurationBase) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'BarcodeFormatAztecConfiguration':\n                return new BarcodeFormatAztecConfiguration(source);\n            case 'BarcodeFormatQRCodeConfiguration':\n                return new BarcodeFormatQrCodeConfiguration(source);\n            case 'BarcodeFormatPDF417Configuration':\n                return new BarcodeFormatPdf417Configuration(source);\n            case 'BarcodeFormatMicroPDF417Configuration':\n                return new BarcodeFormatMicroPdf417Configuration(source);\n            case 'BarcodeFormatDataMatrixConfiguration':\n                return new BarcodeFormatDataMatrixConfiguration(source);\n            case 'BarcodeFormatMaxiCodeConfiguration':\n                return new BarcodeFormatMaxiCodeConfiguration(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    BarcodeFormatTwoDConfigurationBase.From = From;\n})(BarcodeFormatTwoDConfigurationBase || (BarcodeFormatTwoDConfigurationBase = {}));\n/**\nAztec configuration. Add to scanner configuration to scan Aztec codes.\n*/\nexport class BarcodeFormatAztecConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatAztecConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatAztecConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n    }\n}\n/**\nQR Code configuration. Add to scanner configuration to scan QR codes, Micro QR codes and rectangular Micro QR (rMQR) codes.\n*/\nexport class BarcodeFormatQrCodeConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatQrCodeConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatQRCodeConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        /**\n          If true, scan and return QR codes.\n          \n          Default is true\n          */\n        this.qr = true;\n        /**\n          If true, scan and return Micro QR codes.\n          \n          Default is false\n          */\n        this.microQr = false;\n        /**\n          If true, scan and return rectangular Micro QR (rMQR) codes.\n          \n          Default is false\n          */\n        this.rmqr = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n        if (source.qr !== undefined) {\n            this.qr = source.qr;\n        }\n        if (source.microQr !== undefined) {\n            this.microQr = source.microQr;\n        }\n        if (source.rmqr !== undefined) {\n            this.rmqr = source.rmqr;\n        }\n    }\n}\n/**\nPDF417 configuration. Add to scanner configuration to scan PDF417 codes.\n*/\nexport class BarcodeFormatPdf417Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatPdf417Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatPDF417Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n    }\n}\n/**\nMicroPDF417 configuration. Add to scanner configuration to scan MicroPDF417 codes.\n*/\nexport class BarcodeFormatMicroPdf417Configuration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatMicroPdf417Configuration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatMicroPDF417Configuration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n    }\n}\n/**\nDataMatrix configuration. Add to scanner configuration to scan DataMatrix and DataMatrix rectangular extensions (DMRE) codes.\n*/\nexport class BarcodeFormatDataMatrixConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatDataMatrixConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatDataMatrixConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n    }\n}\n/**\nMaxiCode configuration. Add to scanner configuration to scan MaxiCode codes.\n*/\nexport class BarcodeFormatMaxiCodeConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatMaxiCodeConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatMaxiCodeConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n    }\n}\n/** @internal */\nexport var BarcodeFormatFourStateConfigurationBase;\n(function (BarcodeFormatFourStateConfigurationBase) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'BarcodeFormatAustraliaPostConfiguration':\n                return new BarcodeFormatAustraliaPostConfiguration(source);\n            case 'BarcodeFormatJapanPostConfiguration':\n                return new BarcodeFormatJapanPostConfiguration(source);\n            case 'BarcodeFormatRoyalMailConfiguration':\n                return new BarcodeFormatRoyalMailConfiguration(source);\n            case 'BarcodeFormatRoyalTNTPostConfiguration':\n                return new BarcodeFormatRoyalTntPostConfiguration(source);\n            case 'BarcodeFormatUSPSIntelligentMailConfiguration':\n                return new BarcodeFormatUspsIntelligentMailConfiguration(source);\n            case 'BarcodeFormatPharmaCodeTwoTrackConfiguration':\n                return new BarcodeFormatPharmaCodeTwoTrackConfiguration(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    BarcodeFormatFourStateConfigurationBase.From = From;\n})(BarcodeFormatFourStateConfigurationBase || (BarcodeFormatFourStateConfigurationBase = {}));\nexport const AustraliaPostCustomerFormatValues = ['NUMERIC', 'ALPHA_NUMERIC'];\n/**\nAustralia Post barcode configuration. Add to scanner configuration to scan Australia Post barcodes.\n*/\nexport class BarcodeFormatAustraliaPostConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatAustraliaPostConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatAustraliaPostConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Can be either numeric or alphanumeric and is only relevant for Format Codes 59 and 62.\n          \n          Default is ALPHA_NUMERIC\n          */\n        this.australiaPostCustomerFormat = 'ALPHA_NUMERIC';\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.australiaPostCustomerFormat !== undefined) {\n            this.australiaPostCustomerFormat = source.australiaPostCustomerFormat;\n        }\n    }\n}\n/**\nJapan Post barcode configuration. Add to scanner configuration to scan Japan Post barcodes.\n*/\nexport class BarcodeFormatJapanPostConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatJapanPostConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatJapanPostConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n    }\n}\n/**\nRoyal Mail barcode configuration. Add to scanner configuration to scan Royal Mail (a.k.a. RM4SCC, CBC, BPO 4-State) barcodes.\n*/\nexport class BarcodeFormatRoyalMailConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatRoyalMailConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatRoyalMailConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n    }\n}\n/**\nRoyal TNT Post barcode configuration. Add to scanner configuration to scan Royal TNT Post (a.k.a. KIX, Klant IndeX) barcodes.\n*/\nexport class BarcodeFormatRoyalTntPostConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatRoyalTntPostConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatRoyalTNTPostConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n    }\n}\n/**\nUSPS Intelligent Mail barcode configuration. Add to scanner configuration to scan USPS Intelligent Mail (a.k.a. USPS OneCode, USPS-STD-11) barcodes.\n*/\nexport class BarcodeFormatUspsIntelligentMailConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatUspsIntelligentMailConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatUSPSIntelligentMailConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n    }\n}\n/**\nPHARMA_CODE_TWO_TRACK barcode configuration. Add to scanner configuration to scan Laetus two-track PharmaCode barcodes. Linear (i.e. one-track) PharmaCode scanning is configured separately through the PharmaCodeConfig class.\n*/\nexport class BarcodeFormatPharmaCodeTwoTrackConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatPharmaCodeTwoTrackConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatPharmaCodeTwoTrackConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum value for PHARMA_CODE_TWO_TRACK. Very low values are likely to produce more false positives.\n          \n          Default is 364\n          */\n        this.minimumValue = 364;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimumValue !== undefined) {\n            this.minimumValue = source.minimumValue;\n        }\n    }\n}\n/**\nGS1 Composite configuration. Add to scanner configuration to scan GS1 Composite barcodes.\n\nWhen not enabled, the individual parts of GS1 Composite barcodes will be returned as separate items,\nif the respective formats are enabled (UPC-A, Code 128, MicroPDF417, PDF417).\nThose barcode items will have their isGS1CompositePart field set to true.\nIf GS1 Composite scanning is enabled, the individual parts are never returned, even if their respective formats\nare enabled, except when the linear component is a UPC or EAN barcode. In that case the linear component might still\noccasionally be returned as a separate result. If this situation needs to be avoided, remove the UPC and EAN formats from\nthe enabled formats.\n\nIf GS1 Composite scanning is disabled, but GS1 message validation is enabled, then the parts of the composite barcode may\nfail validation and be rejected.\n*/\nexport class BarcodeFormatGs1CompositeConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatGs1CompositeConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatGS1CompositeConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n    }\n}\n/**\nConvenience configuration for enabling the scanning of multiple linear (1D) barcode formats with a common configuration.\nAdd to scanner configuration to enable and configure the scanning of multiple linear (1D) barcode formats.\n\nThe given configuration will be applied to all enabled barcode formats, if they support it.\nYou can override the common configuration for individual barcode formats by additionally adding\ntheir specific configuration to the scanner's configuration.\n*/\nexport class BarcodeFormatCommonOneDConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCommonOneDConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCommonOneDConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          List of linear (1D) barcode formats to scan.\n          */\n        this.formats = [\n            'CODABAR',\n            'CODE_11',\n            'CODE_25',\n            'CODE_32',\n            'CODE_39',\n            'CODE_93',\n            'CODE_128',\n            'DATABAR',\n            'DATABAR_EXPANDED',\n            'DATABAR_LIMITED',\n            'EAN_8',\n            'EAN_13',\n            'IATA_2_OF_5',\n            'INDUSTRIAL_2_OF_5',\n            'ITF',\n            'MSI_PLESSEY',\n            'PHARMA_CODE',\n            'PZN_7',\n            'PZN_8',\n            'UPC_A',\n            'UPC_E',\n        ];\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.formats !== undefined) {\n            this.formats = source.formats.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n/**\nConvenience configuration for enabling the scanning of multiple 2D codes with a common configuration.\nAdd to scanner configuration to enable and configure the scanning of multiple 2D codes.\n\nThe given configuration will be applied to all enabled barcode formats, if they support it.\nYou can override the common configuration for individual barcode formats by additionally adding\ntheir specific configuration to the scanner's configuration.\n*/\nexport class BarcodeFormatCommonTwoDConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCommonTwoDConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCommonTwoDConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        /**\n          List of 2D codes to scan.\n          */\n        this.formats = [\n            'AZTEC',\n            'DATA_MATRIX',\n            'MAXI_CODE',\n            'MICRO_QR_CODE',\n            'MICRO_PDF_417',\n            'PDF_417',\n            'QR_CODE',\n            'RMQR_CODE',\n        ];\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n        if (source.formats !== undefined) {\n            this.formats = source.formats.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n/**\nConvenience configuration for enabling the scanning of multiple four-state barcode formats with a common configuration.\nAdd to scanner configuration to enable and configure the scanning of multiple four-state codes.\n\nThe given configuration will be applied to all enabled barcode formats, if they support it.\nYou can override the common configuration for individual barcode formats by additionally adding\ntheir specific configuration to the scanner's configuration.\n*/\nexport class BarcodeFormatCommonFourStateConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCommonFourStateConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCommonFourStateConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          List of four-state barcode formats to scan.\n          */\n        this.formats = [\n            'AUSTRALIA_POST',\n            'JAPAN_POST',\n            'ROYAL_MAIL',\n            'ROYAL_TNT_POST',\n            'USPS_INTELLIGENT_MAIL',\n        ];\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.formats !== undefined) {\n            this.formats = source.formats.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n/**\nConvenience configuration for enabling the scanning of multiple barcode formats with a common configuration.\nAdd to scanner configuration to enable and configure the scanning of multiple barcodes.\n\nThe given configuration will be applied to all enabled barcode formats, if they support it.\nYou can override the common configuration for individual barcode formats by additionally adding\ntheir specific configuration to the scanner's configuration.\n*/\nexport class BarcodeFormatCommonConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormatCommonConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BarcodeFormatCommonConfiguration';\n        /**\n          Regular expression filter for barcode text. If the barcode text does not match the regular expression, it will not be scanned. The default is an empty string (setting is turned off).\n          \n          Default is \"\"\n          */\n        this.regexFilter = '';\n        /**\n          Minimum acceptable value of a result BarcodeItem's sizeScore (between 0 and 1).\n          Barcodes with a sizeScore less than this value will not be scanned.\n          When set to 0, barcodes are returned no matter what their size is.\n          \n          Default is 0\n          */\n        this.minimumSizeScore = 0.0;\n        /**\n          If true, we process the barcode scanning with an artificial quiet zone that we add to the input image.\n          This flag should be used to scan sharp crops of a barcode in single-shot mode.\n          \n          Default is false\n          */\n        this.addAdditionalQuietZone = false;\n        /**\n          Minimum quiet zone size on the left and right sides of a 1D barcode, measured in number of modules.\n          The quiet zone is only for 1D barcodes with weak start/stop patterns, i.e. Iata2Of5, Industrial2Of5, Code25, Itf, Codabar, MsiPlessey and Code11.\n          \n          Default is 6\n          */\n        this.minimum1DQuietZoneSize = 6;\n        /**\n          Minimum number of frames on which a linear (1D) barcode has to be detected to be considered valid (live scanning only).\n          Linear barcodes are more prone to false positives.\n          Increasing the number of frames on which a barcode has to decode to the same content reduces the probability of a false positive.\n          \n          Default is 1\n          */\n        this.minimumNumberOfRequiredFramesWithEqualRecognitionResult = 1;\n        /**\n          If true, the check digits are stripped from the result.\n          \n          Default is false\n          */\n        this.stripCheckDigits = false;\n        /**\n          Minimum text length. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 1\n          */\n        this.minimumTextLength = 1;\n        /**\n          Maximum text length. 0 implies no maximum. Applied only to linear barcode formats that allow variable length.\n          \n          Default is 0\n          */\n        this.maximumTextLength = 0;\n        /**\n          GS1 message handling options.\n          \n          Default is PARSE\n          */\n        this.gs1Handling = 'PARSE';\n        /**\n          If true, the barcode scanner will only return barcodes that pass the strict validation checks according to standards to avoid false positives.\n          \n          Default is true\n          */\n        this.strictMode = true;\n        /**\n          List of barcode formats to scan. By default, the most commonly used formats are enabled.\n          */\n        this.formats = [\n            'AZTEC',\n            'CODABAR',\n            'CODE_39',\n            'CODE_93',\n            'CODE_128',\n            'DATA_MATRIX',\n            'DATABAR',\n            'DATABAR_EXPANDED',\n            'DATABAR_LIMITED',\n            'EAN_13',\n            'EAN_8',\n            'ITF',\n            'MICRO_QR_CODE',\n            'PDF_417',\n            'QR_CODE',\n            'UPC_A',\n            'UPC_E',\n        ];\n        if (source.regexFilter !== undefined) {\n            this.regexFilter = source.regexFilter;\n        }\n        if (source.minimumSizeScore !== undefined) {\n            this.minimumSizeScore = source.minimumSizeScore;\n        }\n        if (source.addAdditionalQuietZone !== undefined) {\n            this.addAdditionalQuietZone = source.addAdditionalQuietZone;\n        }\n        if (source.minimum1DQuietZoneSize !== undefined) {\n            this.minimum1DQuietZoneSize = source.minimum1DQuietZoneSize;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualRecognitionResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualRecognitionResult =\n                source.minimumNumberOfRequiredFramesWithEqualRecognitionResult;\n        }\n        if (source.stripCheckDigits !== undefined) {\n            this.stripCheckDigits = source.stripCheckDigits;\n        }\n        if (source.minimumTextLength !== undefined) {\n            this.minimumTextLength = source.minimumTextLength;\n        }\n        if (source.maximumTextLength !== undefined) {\n            this.maximumTextLength = source.maximumTextLength;\n        }\n        if (source.gs1Handling !== undefined) {\n            this.gs1Handling = source.gs1Handling;\n        }\n        if (source.strictMode !== undefined) {\n            this.strictMode = source.strictMode;\n        }\n        if (source.formats !== undefined) {\n            this.formats = source.formats.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n//# sourceMappingURL=BarcodeConfigurationTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/BarcodeTypes.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const CharacterEncodingValues = [\n    'UNKNOWN',\n    'ASCII',\n    'ISO_8859_PART1',\n    'ISO_8859_PART2',\n    'ISO_8859_PART3',\n    'ISO_8859_PART4',\n    'ISO_8859_PART5',\n    'ISO_8859_PART6',\n    'ISO_8859_PART7',\n    'ISO_8859_PART8',\n    'ISO_8859_PART9',\n    'ISO_8859_PART10',\n    'ISO_8859_PART11',\n    'ISO_8859_PART13',\n    'ISO_8859_PART14',\n    'ISO_8859_PART15',\n    'ISO_8859_PART16',\n    'CP_437',\n    'CP_1250',\n    'CP_1251',\n    'CP_1252',\n    'CP_1256',\n    'SHIFT_JIS',\n    'BIG_5',\n    'GB_2312',\n    'GB_18030',\n    'EUC_JP',\n    'EUC_KR',\n    'UTF_16_BE',\n    'UTF_8',\n    'UTF_16_LE',\n    'UTF_32_BE',\n    'UTF_32_LE',\n    'BINARY',\n];\n/**\nA character encoding for a given range of bytes.\n*/\nexport class RangeEncoding extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<RangeEncoding>`} */\n    constructor(source = {}) {\n        super();\n        if (source.start !== undefined) {\n            this.start = source.start;\n        }\n        else {\n            throw new Error('start must be present in constructor argument');\n        }\n        if (source.end !== undefined) {\n            this.end = source.end;\n        }\n        else {\n            throw new Error('end must be present in constructor argument');\n        }\n        if (source.encoding !== undefined) {\n            this.encoding = source.encoding;\n        }\n        else {\n            throw new Error('encoding must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            start: this.start,\n            end: this.end,\n            encoding: this.encoding,\n        };\n    }\n}\n/**\nThe structured append mode can be used to split a message across multiple barcodes.\n*/\nexport class StructuredAppendInfo extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<StructuredAppendInfo>`} */\n    constructor(source = {}) {\n        super();\n        if (source.count !== undefined) {\n            this.count = source.count;\n        }\n        else {\n            throw new Error('count must be present in constructor argument');\n        }\n        if (source.index !== undefined) {\n            this.index = source.index;\n        }\n        else {\n            throw new Error('index must be present in constructor argument');\n        }\n        if (source.id !== undefined) {\n            this.id = source.id;\n        }\n        else {\n            throw new Error('id must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            count: this.count,\n            index: this.index,\n            id: this.id,\n        };\n    }\n}\nexport const BarcodeFormatValues = [\n    'NONE',\n    'AZTEC',\n    'CODABAR',\n    'CODE_39',\n    'CODE_93',\n    'CODE_128',\n    'DATA_MATRIX',\n    'EAN_8',\n    'EAN_13',\n    'ITF',\n    'MAXI_CODE',\n    'PDF_417',\n    'QR_CODE',\n    'DATABAR',\n    'DATABAR_EXPANDED',\n    'UPC_A',\n    'UPC_E',\n    'MSI_PLESSEY',\n    'IATA_2_OF_5',\n    'INDUSTRIAL_2_OF_5',\n    'CODE_25',\n    'MICRO_QR_CODE',\n    'USPS_INTELLIGENT_MAIL',\n    'ROYAL_MAIL',\n    'JAPAN_POST',\n    'ROYAL_TNT_POST',\n    'AUSTRALIA_POST',\n    'DATABAR_LIMITED',\n    'MICRO_PDF_417',\n    'GS1_COMPOSITE',\n    'RMQR_CODE',\n    'CODE_11',\n    'CODE_32',\n    'PHARMA_CODE',\n    'PHARMA_CODE_TWO_TRACK',\n    'PZN_7',\n    'PZN_8',\n];\n/**\nLists of barcode formats to decode.\n*/\nexport class BarcodeFormats extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeFormats>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (BarcodeFormats) {\n    /**\n      List of 1D barcode formats.\n      */\n    BarcodeFormats.oned = [\n        'CODABAR',\n        'CODE_11',\n        'CODE_25',\n        'CODE_32',\n        'CODE_39',\n        'CODE_93',\n        'CODE_128',\n        'DATABAR',\n        'DATABAR_EXPANDED',\n        'DATABAR_LIMITED',\n        'EAN_8',\n        'EAN_13',\n        'IATA_2_OF_5',\n        'INDUSTRIAL_2_OF_5',\n        'ITF',\n        'MSI_PLESSEY',\n        'PHARMA_CODE',\n        'PZN_7',\n        'PZN_8',\n        'UPC_A',\n        'UPC_E',\n    ];\n    /**\n      List of 2D barcode formats.\n      */\n    BarcodeFormats.twod = [\n        'AZTEC',\n        'DATA_MATRIX',\n        'MAXI_CODE',\n        'MICRO_QR_CODE',\n        'MICRO_PDF_417',\n        'PDF_417',\n        'QR_CODE',\n        'RMQR_CODE',\n    ];\n    /**\n      List of postal barcode formats.\n      */\n    BarcodeFormats.postal = [\n        'AUSTRALIA_POST',\n        'JAPAN_POST',\n        'ROYAL_MAIL',\n        'ROYAL_TNT_POST',\n        'USPS_INTELLIGENT_MAIL',\n    ];\n    /**\n      List of pharmaceutical barcode formats.\n      */\n    BarcodeFormats.pharma = ['CODE_32', 'PHARMA_CODE', 'PHARMA_CODE_TWO_TRACK', 'PZN_7', 'PZN_8'];\n    /**\n      List of common barcode formats.\n      */\n    BarcodeFormats.common = [\n        'AZTEC',\n        'CODABAR',\n        'CODE_39',\n        'CODE_93',\n        'CODE_128',\n        'DATA_MATRIX',\n        'DATABAR',\n        'DATABAR_EXPANDED',\n        'DATABAR_LIMITED',\n        'EAN_13',\n        'EAN_8',\n        'ITF',\n        'MICRO_QR_CODE',\n        'PDF_417',\n        'QR_CODE',\n        'UPC_A',\n        'UPC_E',\n    ];\n    /**\n      List of all barcode formats.\n      */\n    BarcodeFormats.all = [\n        'AUSTRALIA_POST',\n        'AZTEC',\n        'CODABAR',\n        'CODE_11',\n        'CODE_25',\n        'CODE_32',\n        'CODE_39',\n        'CODE_93',\n        'CODE_128',\n        'DATA_MATRIX',\n        'DATABAR',\n        'DATABAR_EXPANDED',\n        'DATABAR_LIMITED',\n        'EAN_13',\n        'EAN_8',\n        'GS1_COMPOSITE',\n        'IATA_2_OF_5',\n        'INDUSTRIAL_2_OF_5',\n        'ITF',\n        'JAPAN_POST',\n        'MAXI_CODE',\n        'MICRO_PDF_417',\n        'MICRO_QR_CODE',\n        'MSI_PLESSEY',\n        'PDF_417',\n        'PHARMA_CODE',\n        'PHARMA_CODE_TWO_TRACK',\n        'PZN_7',\n        'PZN_8',\n        'QR_CODE',\n        'RMQR_CODE',\n        'ROYAL_MAIL',\n        'ROYAL_TNT_POST',\n        'UPC_A',\n        'UPC_E',\n        'USPS_INTELLIGENT_MAIL',\n    ];\n})(BarcodeFormats || (BarcodeFormats = {}));\nexport const Gs1HandlingValues = [\n    'PARSE',\n    'VALIDATE_STRUCTURE',\n    'DECODE_STRUCTURE',\n    'VALIDATE_FULL',\n    'DECODE_FULL',\n];\nexport const UpcEanExtensionBehaviorValues = [\n    'REQUIRE_2',\n    'REQUIRE_5',\n    'REQUIRE_ANY',\n    'IGNORE',\n    'ALLOW_2',\n    'ALLOW_5',\n    'ALLOW_ANY',\n];\n//# sourceMappingURL=BarcodeTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/CommonFieldType.yaml\nexport const CommonFieldTypeValues = [\n    'ID',\n    'SURNAME',\n    'MAIDEN_NAME',\n    'GIVEN_NAMES',\n    'BIRTH_DATE',\n    'NATIONALITY',\n    'BIRTHPLACE',\n    'EXPIRY_DATE',\n    'EYE_COLOR',\n    'HEIGHT',\n    'ISSUE_DATE',\n    'ISSUING_AUTHORITY',\n    'ADDRESS',\n    'PSEUDONYM',\n    'MRZ',\n    'COUNTRY_CODE',\n    'GENDER',\n    'SIGNATURE',\n    'PHOTO',\n    'VALID_FROM_DATE',\n    'ROUTING_NUMBER',\n    'ACCOUNT_NUMBER',\n    'PLACE_OF_ISSUE',\n    'TITLE_TYPE',\n    'REMARKS',\n    'NAME',\n    'CARD_ACCESS_NUMBER',\n];\n//# sourceMappingURL=CommonFieldType.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/ObjectPoolTypes.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nProfile info of a reference-counted stored object.\n*/\nexport class RefCountedObjectProfile extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<RefCountedObjectProfile>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Number of strong references associated with the object. The strong reference count increases when a new instance of a platform ImageRef class is created from the object's unique ID and decreases when the ImageRef instance is destroyed.\n          \n          Default is 0\n          */\n        this.strongReferences = 0;\n        /**\n          Number of serialized references to the object. The serialized reference count increases when an ImageRef is written to JSON or a Parcel on Android and decrease when the respective JSON or Parcel is deserialized.\n          \n          Default is 0\n          */\n        this.serializedReferences = 0;\n        if (source.uniqueId !== undefined) {\n            this.uniqueId = source.uniqueId;\n        }\n        else {\n            throw new Error('uniqueId must be present in constructor argument');\n        }\n        if (source.timestampCreated !== undefined) {\n            this.timestampCreated = source.timestampCreated;\n        }\n        else {\n            throw new Error('timestampCreated must be present in constructor argument');\n        }\n        if (source.strongReferences !== undefined) {\n            this.strongReferences = source.strongReferences;\n        }\n        if (source.serializedReferences !== undefined) {\n            this.serializedReferences = source.serializedReferences;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            uniqueId: this.uniqueId,\n            timestampCreated: this.timestampCreated,\n            strongReferences: this.strongReferences,\n            serializedReferences: this.serializedReferences,\n        };\n    }\n}\n//# sourceMappingURL=ObjectPoolTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/ImageRefTypes.yaml\nimport { RefCountedObjectProfile } from '../imageRef/ObjectPoolTypes';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nImage Info.\n*/\nexport class ImageInfo extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageInfo>`} */\n    constructor(source = {}) {\n        super();\n        if (source.height !== undefined) {\n            this.height = source.height;\n        }\n        else {\n            throw new Error('height must be present in constructor argument');\n        }\n        if (source.width !== undefined) {\n            this.width = source.width;\n        }\n        else {\n            throw new Error('width must be present in constructor argument');\n        }\n        if (source.maxByteSize !== undefined) {\n            this.maxByteSize = source.maxByteSize;\n        }\n        else {\n            throw new Error('maxByteSize must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            height: this.height,\n            width: this.width,\n            maxByteSize: this.maxByteSize,\n        };\n    }\n}\nexport const PathLoadModeValues = ['EAGER', 'LAZY', 'LAZY_WITH_COPY'];\nexport const BufferLoadModeValues = ['EAGER', 'LAZY'];\nexport const EncodingFormatValues = ['JPEG', 'PNG'];\nexport const EncryptionModeValues = ['REQUIRED', 'DISABLED', 'IF_AVAILABLE'];\n/**\nBasic options for loading image.\n*/\nexport class BasicImageLoadOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BasicImageLoadOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Region of interest.\n          */\n        this.roi = { x: 0, y: 0, width: 0, height: 0 };\n        if (source.roi !== undefined) {\n            this.roi = { x: source.roi.x, y: source.roi.y, width: source.roi.width, height: source.roi.height };\n        }\n    }\n}\n/**\nOptions for loading images that come from sensor.\n*/\nexport class RawImageLoadOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<RawImageLoadOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Region of interest.\n          */\n        this.roi = { x: 0, y: 0, width: 0, height: 0 };\n        /**\n          Rotation that should be applied to the image to recover correct orientation.\n          \n          Default is NONE\n          */\n        this.orientation = 'NONE';\n        if (source.roi !== undefined) {\n            this.roi = { x: source.roi.x, y: source.roi.y, width: source.roi.width, height: source.roi.height };\n        }\n        if (source.orientation !== undefined) {\n            this.orientation = source.orientation;\n        }\n    }\n}\n/**\nOptions for loading image from path.\n*/\nexport class PathImageLoadOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<PathImageLoadOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Region of interest.\n          */\n        this.roi = { x: 0, y: 0, width: 0, height: 0 };\n        /**\n          Load mode.\n          \n          Default is EAGER\n          */\n        this.loadMode = 'EAGER';\n        /**\n          Encryption mode.\n          \n          Default is IF_AVAILABLE\n          */\n        this.encryptionMode = 'IF_AVAILABLE';\n        if (source.roi !== undefined) {\n            this.roi = { x: source.roi.x, y: source.roi.y, width: source.roi.width, height: source.roi.height };\n        }\n        if (source.loadMode !== undefined) {\n            this.loadMode = source.loadMode;\n        }\n        if (source.encryptionMode !== undefined) {\n            this.encryptionMode = source.encryptionMode;\n        }\n    }\n}\n/**\nOptions for loading image from buffer.\n*/\nexport class BufferImageLoadOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BufferImageLoadOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Region of interest.\n          */\n        this.roi = { x: 0, y: 0, width: 0, height: 0 };\n        /**\n          Load mode.\n          \n          Default is EAGER\n          */\n        this.loadMode = 'EAGER';\n        if (source.roi !== undefined) {\n            this.roi = { x: source.roi.x, y: source.roi.y, width: source.roi.width, height: source.roi.height };\n        }\n        if (source.loadMode !== undefined) {\n            this.loadMode = source.loadMode;\n        }\n    }\n}\n/**\nOptions for saving image to a path.\n*/\nexport class SaveImageOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<SaveImageOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Quality parameter is for jpeg only and is in range 0 to 100. If -1, then settings from hibernation are used.\n          In case when the Image Ref was created with a lazy load mode and originally has the same format as the requested to save,\n          then setting quality to -1 leads to simply copying from source to destination,\n          which is time efficient and prevents quality loss caused by jpeg encoding/decoding.\n          \n          Default is -1\n          */\n        this.quality = -1;\n        /**\n          Encryption mode.\n          \n          Default is IF_AVAILABLE\n          */\n        this.encryptionMode = 'IF_AVAILABLE';\n        if (source.quality !== undefined) {\n            this.quality = source.quality;\n        }\n        if (source.encryptionMode !== undefined) {\n            this.encryptionMode = source.encryptionMode;\n        }\n    }\n}\n/**\nOptions for encoding image.\n*/\nexport class EncodeImageOptions extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<EncodeImageOptions>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Quality parameter is for jpeg only and is in range 0 to 100. If -1, then settings from hibernation are used.\n          In case when the Image Ref was created with a lazy load mode and originally has the same format as the requested to save,\n          then setting quality to -1 leads to simply copying from source to destination,\n          which is time efficient and prevents quality loss caused by jpeg encoding/decoding.\n          \n          Default is -1\n          */\n        this.quality = -1;\n        /**\n          Image format.\n          \n          Default is JPEG\n          */\n        this.format = 'JPEG';\n        if (source.quality !== undefined) {\n            this.quality = source.quality;\n        }\n        if (source.format !== undefined) {\n            this.format = source.format;\n        }\n    }\n}\nexport const ImageSourceTypeValues = ['API', 'PLATFORM_IMAGE', 'CAMERA', 'FILE', 'BUFFER', 'OTHER'];\n/**\nDescription of source from which the ImageRef was created.\n*/\nexport class ImageSource extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageSource>`} */\n    constructor(source = {}) {\n        super();\n        if (source.type !== undefined) {\n            this.type = source.type;\n        }\n        else {\n            throw new Error('type must be present in constructor argument');\n        }\n        if (source.filePath !== undefined) {\n            this.filePath = source.filePath != null ? source.filePath : null;\n        }\n        else {\n            throw new Error('filePath must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type,\n            filePath: this.filePath != null ? this.filePath : null,\n        };\n    }\n}\n/**\nImageRef profile part specific to image information.\n*/\nexport class ImageProfile extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageProfile>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Memory consumption of a memory-backed bitmap. Zero, if the image is hibernating.\n          \n          Default is 0\n          */\n        this.bitmapMemoryConsumption = 0;\n        /**\n          Memory consumption of the hibernation buffer. Zero, if the image is not hibernating, or is hibernated to a file.\n          \n          Default is 0\n          */\n        this.hibernationMemoryConsumption = 0;\n        if (source.bitmapMemoryConsumption !== undefined) {\n            this.bitmapMemoryConsumption = source.bitmapMemoryConsumption;\n        }\n        if (source.hibernationMemoryConsumption !== undefined) {\n            this.hibernationMemoryConsumption = source.hibernationMemoryConsumption;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            bitmapMemoryConsumption: this.bitmapMemoryConsumption,\n            hibernationMemoryConsumption: this.hibernationMemoryConsumption,\n        };\n    }\n}\n/**\nImageRef profile which provides detailed information about stored object.\n*/\nexport class ImageRefProfile extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageRefProfile>`} */\n    constructor(source = {}) {\n        super();\n        if (source.refInfo !== undefined) {\n            this.refInfo = new RefCountedObjectProfile(source.refInfo);\n        }\n        else {\n            throw new Error('refInfo must be present in constructor argument');\n        }\n        if (source.imageInfo !== undefined) {\n            this.imageInfo = new ImageProfile(source.imageInfo);\n        }\n        else {\n            throw new Error('imageInfo must be present in constructor argument');\n        }\n        if (source.imageSource !== undefined) {\n            this.imageSource = source.imageSource != null ? new ImageSource(source.imageSource) : null;\n        }\n        else {\n            throw new Error('imageSource must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            refInfo: this.refInfo.serialize(config),\n            imageInfo: this.imageInfo.serialize(config),\n            imageSource: this.imageSource != null ? this.imageSource.serialize(config) : null,\n        };\n    }\n}\n/**\nSnapshot of all alive ImageRefs.\n*/\nexport class ImageRefPoolSnapshot extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageRefPoolSnapshot>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Estimation of total memory consumption of ImageRefs.\n          \n          Default is 0\n          */\n        this.totalMemoryConsumption = 0;\n        if (source.imageRefProfiles !== undefined) {\n            this.imageRefProfiles = source.imageRefProfiles.map((it) => {\n                return new ImageRefProfile(it);\n            });\n        }\n        else {\n            throw new Error('imageRefProfiles must be present in constructor argument');\n        }\n        if (source.totalMemoryConsumption !== undefined) {\n            this.totalMemoryConsumption = source.totalMemoryConsumption;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            imageRefProfiles: this.imageRefProfiles.map((it) => {\n                return it.serialize(config);\n            }),\n            totalMemoryConsumption: this.totalMemoryConsumption,\n        };\n    }\n}\n/**\ndifference between two snapshots.\n*/\nexport class ImageRefPoolSnapshotsDiff extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ImageRefPoolSnapshotsDiff>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Difference between total memory consumption in two snapshots.\n          \n          Default is 0\n          */\n        this.totalMemoryConsumptionDiff = 0;\n        if (source.totalMemoryConsumptionDiff !== undefined) {\n            this.totalMemoryConsumptionDiff = source.totalMemoryConsumptionDiff;\n        }\n        if (source.removed !== undefined) {\n            this.removed = source.removed.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('removed must be present in constructor argument');\n        }\n        if (source.added !== undefined) {\n            this.added = source.added.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('added must be present in constructor argument');\n        }\n        if (source.modified !== undefined) {\n            this.modified = source.modified.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('modified must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            totalMemoryConsumptionDiff: this.totalMemoryConsumptionDiff,\n            removed: this.removed.map((it) => {\n                return it;\n            }),\n            added: this.added.map((it) => {\n                return it;\n            }),\n            modified: this.modified.map((it) => {\n                return it;\n            }),\n        };\n    }\n}\n//# sourceMappingURL=ImageRefTypes.js.map","import { ScanbotSDKInternal } from '../index';\nimport { mapPlainResult, PartiallyConstructible } from '../utils/utils';\nimport { BufferImageLoadOptions, EncodeImageOptions, ImageInfo, ImageRefPoolSnapshot, PathImageLoadOptions, SaveImageOptions, } from './ImageRefTypes';\nclass AutoReleasePool {\n    constructor() {\n        this.poolObjects = [];\n    }\n    releaseAll() {\n        for (const obj of this.poolObjects) {\n            if (!obj.isRetained()) {\n                obj.release();\n            }\n        }\n    }\n    addObject(obj) {\n        this.poolObjects.push(obj);\n    }\n}\nAutoReleasePool.globalPull = null;\nAutoReleasePool.globalPullReferences = 0;\nexport async function autorelease(computation) {\n    if (AutoReleasePool.globalPull === null) {\n        AutoReleasePool.globalPull = new AutoReleasePool();\n    }\n    AutoReleasePool.globalPullReferences++;\n    const releasePoolRef = () => {\n        AutoReleasePool.globalPullReferences--;\n        if (AutoReleasePool.globalPullReferences === 0) {\n            AutoReleasePool.globalPull.releaseAll();\n            AutoReleasePool.globalPull = null;\n        }\n    };\n    try {\n        return await computation();\n    }\n    finally {\n        releasePoolRef();\n    }\n}\nexport class AutoReleasable extends PartiallyConstructible {\n    constructor(uniqueId) {\n        super();\n        this.retained = false;\n        if (uniqueId) {\n            if (AutoReleasePool.globalPull === null) {\n                const errorMessage = 'Initializing an object that contains a ScanbotImage instance as REFERENCE must be wrapped inside an autorelease pool. For example:' +\n                    '\\n autorelease(()=>{' +\n                    '\\n  const barcodeItem = new BarcodeItem(source);' +\n                    '\\n });';\n                throw new Error(errorMessage);\n            }\n            AutoReleasePool.globalPull.addObject(this);\n        }\n    }\n    isRetained() {\n        return this.retained;\n    }\n    retain() {\n        this.retained = true;\n    }\n}\nexport class ImageRef extends AutoReleasable {\n    get buffer() {\n        return this._buffer;\n    }\n    constructor(uniqueId, buffer) {\n        super(uniqueId);\n        this.released = false;\n        this.uniqueId = uniqueId;\n        this._buffer = buffer;\n    }\n    static From(source) {\n        if (source.buffer) {\n            return new ImageRef(undefined, source.buffer);\n        }\n        else {\n            return ImageRef.deserialize(source);\n        }\n    }\n    static deserialize(serializedRef) {\n        if (!serializedRef.uniqueId) {\n            throw new Error('uniqueId must be present in serializedRef argument');\n        }\n        // The promise is intentionally not awaited here\n        ScanbotSDKInternal.imageRefDeserialize({\n            uniqueId: serializedRef.uniqueId,\n        })\n            .catch((error) => {\n            console.error(`Error while deserializing ImageRef with uniqueId ${serializedRef.uniqueId}: ${error}`);\n        })\n            .then((jsResultObject) => {\n            const success = mapPlainResult(jsResultObject);\n            if (!success) {\n                console.error(`Unsuccessful deserialization of ImageRef with uniqueId ${serializedRef.uniqueId}`);\n            }\n        });\n        return new ImageRef(serializedRef.uniqueId, undefined);\n    }\n    /**\n     * Converts the Image Ref to Json representation\n     */\n    async serialize(imageSerializationMode) {\n        if (imageSerializationMode === 'BUFFER') {\n            const encodedImage = await this.encodeImage();\n            if (encodedImage) {\n                return { buffer: encodedImage };\n            }\n            else {\n                return null;\n            }\n        }\n        else {\n            this.throwErrorIfUniqueIdIsMissing();\n            this.throwErrorIfReleased();\n            // The promise is intentionally not awaited here\n            ScanbotSDKInternal.imageRefSerialize({ uniqueId: this.uniqueId })\n                .catch((error) => {\n                console.error(`Error while serializing ImageRef with uniqueId ${this.uniqueId}: ${error}`);\n            })\n                .then((jsResultObject) => {\n                const success = mapPlainResult(jsResultObject);\n                if (!success) {\n                    console.error(`Unsuccessful serialization of ImageRef with uniqueId ${this.uniqueId}`);\n                }\n            });\n            return { uniqueId: this.uniqueId };\n        }\n    }\n    /**\n     * Creates ImageRef with uniqueId from the file uri to an image.\n     */\n    static async fromImageFileUri(uri, options = new PathImageLoadOptions()) {\n        try {\n            const serializedImageRefUniqueId = await ScanbotSDKInternal.imageRefFromImageFileUri({\n                uri: uri,\n                options: options,\n            }).then((jsResultObject) => mapPlainResult(jsResultObject));\n            return ImageRef.deserialize({ uniqueId: serializedImageRefUniqueId });\n        }\n        catch (error) {\n            console.error(error);\n            return null;\n        }\n    }\n    /**\n     * Creates ImageRef with uniqueId from base64 encoded buffer, e.g. from jpeg.\n     */\n    static async fromEncodedBuffer(buffer, options = new BufferImageLoadOptions()) {\n        try {\n            const serializedImageRefUniqueId = await ScanbotSDKInternal.imageRefFromEncodedBuffer({\n                buffer: buffer,\n                options: options,\n            }).then((jsResultObject) => mapPlainResult(jsResultObject));\n            return ImageRef.deserialize({ uniqueId: serializedImageRefUniqueId });\n        }\n        catch (error) {\n            console.error(error);\n            return null;\n        }\n    }\n    /**\n     * Creates a deep copy of the image.\n     * If uniqueId is not set or the image is already released, an exception will be thrown.\n     */\n    async clone() {\n        this.throwErrorIfUniqueIdIsMissing();\n        this.throwErrorIfReleased();\n        try {\n            const serializedImageRefUniqueId = await ScanbotSDKInternal.imageRefClone({\n                uniqueId: this.uniqueId,\n            }).then((jsResultObject) => mapPlainResult(jsResultObject));\n            return ImageRef.deserialize({ uniqueId: serializedImageRefUniqueId });\n        }\n        catch (error) {\n            console.error(error);\n            return null;\n        }\n    }\n    /**\n     * Compresses ImageRef and stores it either on disk or in memory according to global settings.\n     * If uniqueId is not set or the image is already released, an exception will be thrown.\n     */\n    async hibernate() {\n        this.throwErrorIfUniqueIdIsMissing();\n        this.throwErrorIfReleased();\n        try {\n            await ScanbotSDKInternal.imageRefHibernate({\n                uniqueId: this.uniqueId,\n            });\n        }\n        catch (error) {\n            console.error(error);\n        }\n    }\n    /**\n     * Releases native resources stored by the ref.\n     * If two different ImageRef objects have the same uniqueId both of them become cleared.\n     * If uniqueId is not set or the image is already released, an exception will be thrown.\n     */\n    async clear() {\n        this.throwErrorIfUniqueIdIsMissing();\n        this.throwErrorIfReleased();\n        try {\n            await ScanbotSDKInternal.imageRefClear({ uniqueId: this.uniqueId });\n        }\n        catch (error) {\n            console.error(error);\n        }\n    }\n    /**\n     * Information about stored image as reference.\n     * If uniqueId is not set or the image is already released, an exception will be thrown.\n     */\n    async info() {\n        this.throwErrorIfUniqueIdIsMissing();\n        this.throwErrorIfReleased();\n        try {\n            const imageInfo = await ScanbotSDKInternal.imageRefInfo({\n                uniqueId: this.uniqueId,\n            });\n            return new ImageInfo(imageInfo);\n        }\n        catch (error) {\n            console.error(error);\n            return null;\n        }\n    }\n    /**\n     * Saves the stored image with the given options.\n     * If uniqueId is not set or the image is already released, an exception will be thrown.\n     */\n    async saveImage(path, options = new SaveImageOptions()) {\n        this.throwErrorIfUniqueIdIsMissing();\n        this.throwErrorIfReleased();\n        try {\n            return await ScanbotSDKInternal.imageRefSaveImage({\n                uniqueId: this.uniqueId,\n                path: path,\n                options: options,\n            }).then((jsResultObject) => mapPlainResult(jsResultObject));\n        }\n        catch (error) {\n            console.error(error);\n            return false;\n        }\n    }\n    /**\n     * Encode image.\n     */\n    async encodeInPlace() {\n        if (this._buffer) {\n            // NO-OP, ImageRef is already converted.\n        }\n        else {\n            this.throwErrorIfUniqueIdIsMissing();\n            this.throwErrorIfReleased();\n            try {\n                const imageAsBuffer = await ScanbotSDKInternal.imageRefEncodeImage({\n                    uniqueId: this.uniqueId,\n                    options: new EncodeImageOptions(),\n                }).then((jsResultObject) => mapPlainResult(jsResultObject));\n                if (imageAsBuffer) {\n                    this._buffer = imageAsBuffer;\n                }\n            }\n            catch (error) {\n                console.error(error);\n            }\n        }\n    }\n    /**\n     * Returns the stored image as base64.\n     */\n    async encodeImage(options) {\n        if (this._buffer) {\n            if (options) {\n                throw new Error('EncodeImageOptions are not available when image is already encoded to base64');\n            }\n            return this._buffer;\n        }\n        else {\n            this.throwErrorIfUniqueIdIsMissing();\n            this.throwErrorIfReleased();\n            try {\n                return await ScanbotSDKInternal.imageRefEncodeImage({\n                    uniqueId: this.uniqueId,\n                    options: options !== null && options !== void 0 ? options : new EncodeImageOptions(),\n                }).then((jsResultObject) => mapPlainResult(jsResultObject));\n            }\n            catch (error) {\n                console.error(error);\n                return null;\n            }\n        }\n    }\n    /**\n     * Releases strong reference to the image.\n     * If uniqueId to the image is not set, an exception will be thrown.\n     */\n    release() {\n        this.throwErrorIfUniqueIdIsMissing();\n        if (!this.released) {\n            // The promise is intentionally not awaited here\n            ScanbotSDKInternal.imageRefRelease({\n                uniqueId: this.uniqueId,\n            }).catch((error) => {\n                console.error(`Error while releasing ImageRef with uniqueId ${this.uniqueId}: ${error}`);\n            });\n            this.released = true;\n        }\n    }\n    /**\n     * Returns a snapshot of all alive ImageRefs.\n     * The snapshot contains a list of ImageRefs with information such as in-memory size.\n     */\n    static async makeSnapshot() {\n        try {\n            const snapshot = await ScanbotSDKInternal.makeSnapshot();\n            return new ImageRefPoolSnapshot(snapshot);\n        }\n        catch (error) {\n            console.error(error);\n            return null;\n        }\n    }\n    /**\n     * Releases all alive images despite any existing references.\n     */\n    static releaseAll() {\n        // The promise is intentionally not awaited here\n        ScanbotSDKInternal.imageRefReleaseAll().catch(() => { });\n    }\n    throwErrorIfUniqueIdIsMissing() {\n        if (!this.uniqueId) {\n            throw new Error('uniqueId is missing');\n        }\n    }\n    throwErrorIfReleased() {\n        if (this.released) {\n            throw new Error(`ImageRef with uniqueId ${this.uniqueId} has been released`);\n        }\n    }\n}\n//# sourceMappingURL=image.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/GenericDocument.yaml\nimport { CommonFieldTypeValues } from '../documents/CommonFieldType';\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nResult of OCR text recognition.\n*/\nexport class OcrResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<OcrResult>`} */\n    constructor(source = {}) {\n        super();\n        if (source.text !== undefined) {\n            this.text = source.text;\n        }\n        else {\n            throw new Error('text must be present in constructor argument');\n        }\n        if (source.confidence !== undefined) {\n            this.confidence = source.confidence;\n        }\n        else {\n            throw new Error('confidence must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            text: this.text,\n            confidence: this.confidence,\n        };\n    }\n}\nexport const FieldValidationStatusValues = [\n    'INVALID',\n    'OBSTRUCTED',\n    'NONE',\n    'CONFIRMED',\n    'INFERRED',\n    'VALID',\n    'IGNORED',\n];\nexport const FieldDataFormatValues = [\n    'ISO_DATE',\n    'ISO_COUNTRY_ALPHA_2',\n    'ISO_COUNTRY_ALPHA_3',\n    'ISO_COUNTRY_NUMERIC',\n    'ISO_COUNTRY_NAME',\n    'GENDER',\n];\n/**\nParsed data.\n*/\nexport class FieldParsedData extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldParsedData>`} */\n    constructor(source = {}) {\n        super();\n        if (source.type !== undefined) {\n            this.type = source.type;\n        }\n        else {\n            throw new Error('type must be present in constructor argument');\n        }\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type,\n            value: this.value,\n        };\n    }\n}\n/**\nGeneric Document Type.\n*/\nexport class FieldType extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldType>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          A document can contain multiple fields of the same name, the property serves for storing natural order of such fields, null if multiple entries aren't allowed for this field.\n          */\n        this.listIndex = null;\n        if (source.name !== undefined) {\n            this.name = source.name;\n        }\n        else {\n            throw new Error('name must be present in constructor argument');\n        }\n        if (source.fullName !== undefined) {\n            this.fullName = source.fullName;\n        }\n        else {\n            throw new Error('fullName must be present in constructor argument');\n        }\n        if (source.normalizedName !== undefined) {\n            this.normalizedName = source.normalizedName;\n        }\n        else {\n            throw new Error('normalizedName must be present in constructor argument');\n        }\n        if (source.commonType !== undefined) {\n            this.commonType =\n                source.commonType != null\n                    ? CommonFieldTypeValues.includes(source.commonType)\n                        ? source.commonType\n                        : null\n                    : null;\n        }\n        else {\n            throw new Error('commonType must be present in constructor argument');\n        }\n        if (source.listIndex !== undefined) {\n            this.listIndex = source.listIndex != null ? source.listIndex : null;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            name: this.name,\n            fullName: this.fullName,\n            normalizedName: this.normalizedName,\n            commonType: this.commonType != null ? this.commonType : null,\n            listIndex: this.listIndex != null ? this.listIndex : null,\n        };\n    }\n}\n/**\nGeneric document field.\n*/\nexport class Field extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<Field>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Confidence weight.\n          \n          Default is 1.0\n          */\n        this.confidenceWeight = 1.0;\n        /**\n          Crop of the field.\n          */\n        this.image = null;\n        /**\n          Field validation status. Applicable only to fields that support some kind of validation.\n          \n          Default is NONE\n          */\n        this.validationStatus = 'NONE';\n        /**\n          Parsed data.\n          */\n        this.parsedData = [];\n        this._released = false;\n        if (source.type !== undefined) {\n            this.type = new FieldType(source.type);\n        }\n        else {\n            throw new Error('type must be present in constructor argument');\n        }\n        if (source.value !== undefined) {\n            this.value = source.value != null ? new OcrResult(source.value) : null;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n        if (source.confidenceWeight !== undefined) {\n            this.confidenceWeight = source.confidenceWeight;\n        }\n        if (source.image !== undefined) {\n            this.image = source.image != null ? ImageRef.From(source.image) : null;\n        }\n        if (source.polygonInRoot !== undefined) {\n            this.polygonInRoot = source.polygonInRoot.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('polygonInRoot must be present in constructor argument');\n        }\n        if (source.validationStatus !== undefined) {\n            this.validationStatus = source.validationStatus;\n        }\n        if (source.parsedData !== undefined) {\n            this.parsedData = source.parsedData.map((it) => {\n                return new FieldParsedData(it);\n            });\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type.serialize(config),\n            value: this.value != null ? this.value.serialize(config) : null,\n            confidenceWeight: this.confidenceWeight,\n            image: config.serializeImages\n                ? this.image != null\n                    ? await this.image.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n            polygonInRoot: this.polygonInRoot.map((it) => {\n                return it;\n            }),\n            validationStatus: this.validationStatus,\n            parsedData: this.parsedData.map((it) => {\n                return it.serialize(config);\n            }),\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.image != null) {\n                this.image.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.image != null) {\n            await this.image.encodeInPlace();\n        }\n    }\n}\n/**\nGeneric Document Type.\n*/\nexport class GenericDocumentType extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<GenericDocumentType>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          A document can contain multiple fields of the same name, the property serves for storing natural order of such fields, null if multiple entries aren't allowed for this field.\n          */\n        this.listIndex = null;\n        if (source.name !== undefined) {\n            this.name = source.name;\n        }\n        else {\n            throw new Error('name must be present in constructor argument');\n        }\n        if (source.fullName !== undefined) {\n            this.fullName = source.fullName;\n        }\n        else {\n            throw new Error('fullName must be present in constructor argument');\n        }\n        if (source.normalizedName !== undefined) {\n            this.normalizedName = source.normalizedName;\n        }\n        else {\n            throw new Error('normalizedName must be present in constructor argument');\n        }\n        if (source.listIndex !== undefined) {\n            this.listIndex = source.listIndex != null ? source.listIndex : null;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            name: this.name,\n            fullName: this.fullName,\n            normalizedName: this.normalizedName,\n            listIndex: this.listIndex != null ? this.listIndex : null,\n        };\n    }\n}\n/**\nGeneric document.\n*/\nexport class GenericDocument extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<GenericDocument>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Image crop of the document.\n          */\n        this.crop = null;\n        /**\n          The average confidence in the accuracy of the document recognition result.\n          \n          Default is 0\n          */\n        this.confidence = 0.0;\n        /**\n          The weight of the confidence. Can be used to calculate the weighted average confidence of two documents.\n          \n          Default is 0\n          */\n        this.confidenceWeight = 0.0;\n        this._released = false;\n        if (source.type !== undefined) {\n            this.type = new GenericDocumentType(source.type);\n        }\n        else {\n            throw new Error('type must be present in constructor argument');\n        }\n        if (source.fields !== undefined) {\n            this.fields = source.fields.map((it) => {\n                return new Field(it);\n            });\n        }\n        else {\n            throw new Error('fields must be present in constructor argument');\n        }\n        if (source.children !== undefined) {\n            this.children = source.children.map((it) => {\n                return new GenericDocument(it);\n            });\n        }\n        else {\n            throw new Error('children must be present in constructor argument');\n        }\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n        if (source.quadInRoot !== undefined) {\n            this.quadInRoot = source.quadInRoot.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quadInRoot must be present in constructor argument');\n        }\n        if (source.crop !== undefined) {\n            this.crop = source.crop != null ? ImageRef.From(source.crop) : null;\n        }\n        if (source.confidence !== undefined) {\n            this.confidence = source.confidence;\n        }\n        if (source.confidenceWeight !== undefined) {\n            this.confidenceWeight = source.confidenceWeight;\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type.serialize(config),\n            fields: await Promise.all(this.fields.map(async (it) => {\n                return await it.serialize(config);\n            })),\n            children: await Promise.all(this.children.map(async (it) => {\n                return await it.serialize(config);\n            })),\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n            quadInRoot: this.quadInRoot.map((it) => {\n                return it;\n            }),\n            crop: config.serializeImages\n                ? this.crop != null\n                    ? await this.crop.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n            confidence: this.confidence,\n            confidenceWeight: this.confidenceWeight,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        this.fields.forEach((it) => {\n            it.release();\n        });\n        this.children.forEach((it) => {\n            it.release();\n        });\n        {\n            if (this.crop != null) {\n                this.crop.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        await Promise.all(this.fields.map(async (it) => {\n            await it.encodeImages();\n        }));\n        await Promise.all(this.children.map(async (it) => {\n            await it.encodeImages();\n        }));\n        if (this.crop != null) {\n            await this.crop.encodeInPlace();\n        }\n    }\n}\n//# sourceMappingURL=GenericDocument.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/BarcodeScannerTypes.yaml\nimport { BarcodeFormatCommonConfiguration, BarcodeFormatConfigurationBase } from '../barcode/BarcodeConfigurationTypes';\nimport { RangeEncoding, StructuredAppendInfo } from '../barcode/BarcodeTypes';\nimport { GenericDocument } from '../documents/GenericDocument';\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nA single barcode found in the input image. Barcodes with the same content but different locations in the image are considered separate barcodes.\n*/\nexport class BarcodeItem extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeItem>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Barcode format.\n          \n          Default is NONE\n          */\n        this.format = 'NONE';\n        /**\n          True if this is a 1D barcode that is printed upside-down, that is, the barcode was scanned right-to-left.\n          \n          Default is false\n          */\n        this.isUpsideDown = false;\n        /**\n          A crop from the input image containing the barcode.\n          */\n        this.sourceImage = null;\n        /**\n          True if the barcode contains a GS1 message. Requires GS1 handling to be enabled in the decoding option.\n          \n          Default is false\n          */\n        this.isGS1Message = false;\n        /**\n          True if this result is the 2D part of a GS1 Composite barcode.\n          Can only happen if GS1_COMPOSITE scanning is disabled and a part of the composite (1D) or (2D) is scanned separately.\n          When GS1_COMPOSITE scanning is enabled, parts of the composite barcode are never returned separately, even if their respective\n          format is enabled in the decoding options.\n          \n          Default is false\n          */\n        this.isGS1CompositePart = false;\n        /**\n          The number of 1D stacks in the barcode. Applies only to DATABAR and DATABAR_EXPANDED barcodes.\n          \n          Default is 1\n          */\n        this.dataBarStackSize = 1;\n        /**\n          The size score is a floating point value between 0 and 1 that represents the relative size of the barcode in the input image.\n          Barcodes taking up a small portion of the input image will have a score close to 0, while barcodes that take a large portion will have a score close to 1.\n          \n          Default is 0\n          */\n        this.sizeScore = 0.0;\n        /**\n          The index of the barcode to uniquely identify it.\n          In case of frame accumulation, the index remains the same across frames.\n          \n          Default is -1\n          */\n        this.globalIndex = -1;\n        this._released = false;\n        if (source.text !== undefined) {\n            this.text = source.text;\n        }\n        else {\n            throw new Error('text must be present in constructor argument');\n        }\n        if (source.rawBytes !== undefined) {\n            this.rawBytes = source.rawBytes;\n        }\n        else {\n            throw new Error('rawBytes must be present in constructor argument');\n        }\n        if (source.rawBytesEncodings !== undefined) {\n            this.rawBytesEncodings = source.rawBytesEncodings.map((it) => {\n                return new RangeEncoding(it);\n            });\n        }\n        else {\n            throw new Error('rawBytesEncodings must be present in constructor argument');\n        }\n        if (source.structuredAppendInfo !== undefined) {\n            this.structuredAppendInfo =\n                source.structuredAppendInfo != null ? new StructuredAppendInfo(source.structuredAppendInfo) : null;\n        }\n        else {\n            throw new Error('structuredAppendInfo must be present in constructor argument');\n        }\n        if (source.format !== undefined) {\n            this.format = source.format;\n        }\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n        if (source.quadNormalized !== undefined) {\n            this.quadNormalized = source.quadNormalized.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quadNormalized must be present in constructor argument');\n        }\n        if (source.extendedQuad !== undefined) {\n            this.extendedQuad = source.extendedQuad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('extendedQuad must be present in constructor argument');\n        }\n        if (source.extendedQuadNormalized !== undefined) {\n            this.extendedQuadNormalized = source.extendedQuadNormalized.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('extendedQuadNormalized must be present in constructor argument');\n        }\n        if (source.isUpsideDown !== undefined) {\n            this.isUpsideDown = source.isUpsideDown;\n        }\n        if (source.sourceImage !== undefined) {\n            this.sourceImage = source.sourceImage != null ? ImageRef.From(source.sourceImage) : null;\n        }\n        if (source.upcEanExtension !== undefined) {\n            this.upcEanExtension = source.upcEanExtension;\n        }\n        else {\n            throw new Error('upcEanExtension must be present in constructor argument');\n        }\n        if (source.isGS1Message !== undefined) {\n            this.isGS1Message = source.isGS1Message;\n        }\n        if (source.isGS1CompositePart !== undefined) {\n            this.isGS1CompositePart = source.isGS1CompositePart;\n        }\n        if (source.dataBarStackSize !== undefined) {\n            this.dataBarStackSize = source.dataBarStackSize;\n        }\n        if (source.sizeScore !== undefined) {\n            this.sizeScore = source.sizeScore;\n        }\n        if (source.extractedDocument !== undefined) {\n            this.extractedDocument = source.extractedDocument != null ? new GenericDocument(source.extractedDocument) : null;\n        }\n        else {\n            throw new Error('extractedDocument must be present in constructor argument');\n        }\n        if (source.globalIndex !== undefined) {\n            this.globalIndex = source.globalIndex;\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            text: this.text,\n            rawBytes: this.rawBytes,\n            rawBytesEncodings: this.rawBytesEncodings.map((it) => {\n                return it.serialize(config);\n            }),\n            structuredAppendInfo: this.structuredAppendInfo != null ? this.structuredAppendInfo.serialize(config) : null,\n            format: this.format,\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n            quadNormalized: this.quadNormalized.map((it) => {\n                return it;\n            }),\n            extendedQuad: this.extendedQuad.map((it) => {\n                return it;\n            }),\n            extendedQuadNormalized: this.extendedQuadNormalized.map((it) => {\n                return it;\n            }),\n            isUpsideDown: this.isUpsideDown,\n            sourceImage: config.serializeImages\n                ? this.sourceImage != null\n                    ? await this.sourceImage.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n            upcEanExtension: this.upcEanExtension,\n            isGS1Message: this.isGS1Message,\n            isGS1CompositePart: this.isGS1CompositePart,\n            dataBarStackSize: this.dataBarStackSize,\n            sizeScore: this.sizeScore,\n            extractedDocument: this.extractedDocument != null ? await this.extractedDocument.serialize(config) : null,\n            globalIndex: this.globalIndex,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.sourceImage != null) {\n                this.sourceImage.release();\n            }\n        }\n        {\n            if (this.extractedDocument != null) {\n                this.extractedDocument.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.sourceImage != null) {\n            await this.sourceImage.encodeInPlace();\n        }\n        if (this.extractedDocument != null) {\n            await this.extractedDocument.encodeImages();\n        }\n    }\n}\nexport const BarcodeScannerEngineModeValues = [\n    'LEGACY',\n    'NEXT_GEN_LOW_POWER',\n    'NEXT_GEN',\n    'NEXT_GEN_LOW_POWER_FAR_DISTANCE',\n    'NEXT_GEN_FAR_DISTANCE',\n];\nexport const BarcodeAccumulationMethodValues = ['LAST_VISIBLE', 'INTERPOLATE_BY_CAMERA'];\n/**\nConfiguration for how to accumulate results.\n*/\nexport class BarcodeAccumulationConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeAccumulationConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The time in milliseconds to accumulate barcodes across multiple frames.\n          \n          Default is 500\n          */\n        this.accumulationTime = 500;\n        /**\n          If true, the results from previous frames that are not connected to results on the current frame will be removed.\n          This is should be enabled when large camera movements are expected.\n          For small camera movements, the option can be disabled.\n          \n          Default is true\n          */\n        this.removeUnconnectedResults = true;\n        /**\n          The method how to display barcodes from previous frames.\n          \n          Default is INTERPOLATE_BY_CAMERA\n          */\n        this.method = 'INTERPOLATE_BY_CAMERA';\n        if (source.accumulationTime !== undefined) {\n            this.accumulationTime = source.accumulationTime;\n        }\n        if (source.removeUnconnectedResults !== undefined) {\n            this.removeUnconnectedResults = source.removeUnconnectedResults;\n        }\n        if (source.method !== undefined) {\n            this.method = source.method;\n        }\n    }\n}\n/**\nConfiguration for the barcode scanner.\n*/\nexport class BarcodeScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Options for barcode decoding.\n          */\n        this.barcodeFormatConfigurations = [new BarcodeFormatCommonConfiguration({})];\n        /**\n          List of document formats to be extracted.\n          Barcodes that decode to one of the extracted document formats will have extractedDocument field in BarcodeItem populated with the parsed document.\n          By default all supported barcode document formats are accepted.\n          If empty, no barcodes will be parsed into documents.\n          To only accept the document formats listed in extractedDocumentFormats, the property onlyAcceptDocuments must be true.\n          */\n        this.extractedDocumentFormats = [\n            'AAMVA',\n            'BOARDING_PASS',\n            'DE_MEDICAL_PLAN',\n            'MEDICAL_CERTIFICATE',\n            'ID_CARD_PDF_417',\n            'SEPA',\n            'SWISS_QR',\n            'VCARD',\n            'GS1',\n            'HIBC',\n        ];\n        /**\n          If true and extractedDocumentFormats is not empty, then barcodes that don't decode to one of the extracted document formats will be ignored.\n          \n          Default is false\n          */\n        this.onlyAcceptDocuments = false;\n        /**\n          If true, the barcode image will be returned in the BarcodeItem.\n          \n          Default is false\n          */\n        this.returnBarcodeImage = false;\n        /**\n          The engine mode for barcode scanning.\n          \n          Default is NEXT_GEN\n          */\n        this.engineMode = 'NEXT_GEN';\n        /**\n          Configuration to accumulate barcodes across multiple frames in live mode.\n          */\n        this.accumulationConfig = new BarcodeAccumulationConfiguration({});\n        /**\n          If true, the quads of linear (1D) barcodes will be further refined to more closely match the barcode's outline in the input image.\n          This will also produce stabler barcode outlines across frames for use cases such as AR.\n          \n          Default is false\n          */\n        this.optimizedForOverlays = false;\n        if (source.barcodeFormatConfigurations !== undefined) {\n            this.barcodeFormatConfigurations = source.barcodeFormatConfigurations.map((it) => {\n                return BarcodeFormatConfigurationBase.From(it);\n            });\n        }\n        if (source.extractedDocumentFormats !== undefined) {\n            this.extractedDocumentFormats = source.extractedDocumentFormats.map((it) => {\n                return it;\n            });\n        }\n        if (source.onlyAcceptDocuments !== undefined) {\n            this.onlyAcceptDocuments = source.onlyAcceptDocuments;\n        }\n        if (source.returnBarcodeImage !== undefined) {\n            this.returnBarcodeImage = source.returnBarcodeImage;\n        }\n        if (source.engineMode !== undefined) {\n            this.engineMode = source.engineMode;\n        }\n        if (source.accumulationConfig !== undefined) {\n            this.accumulationConfig = new BarcodeAccumulationConfiguration(source.accumulationConfig);\n        }\n        if (source.optimizedForOverlays !== undefined) {\n            this.optimizedForOverlays = source.optimizedForOverlays;\n        }\n    }\n}\n/**\nThe result of barcode scanning.\n*/\nexport class BarcodeScannerResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeScannerResult>`} */\n    constructor(source = {}) {\n        super();\n        this._released = false;\n        if (source.barcodes !== undefined) {\n            this.barcodes = source.barcodes.map((it) => {\n                return new BarcodeItem(it);\n            });\n        }\n        else {\n            throw new Error('barcodes must be present in constructor argument');\n        }\n        if (source.success !== undefined) {\n            this.success = source.success;\n        }\n        else {\n            throw new Error('success must be present in constructor argument');\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            barcodes: await Promise.all(this.barcodes.map(async (it) => {\n                return await it.serialize(config);\n            })),\n            success: this.success,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        this.barcodes.forEach((it) => {\n            it.release();\n        });\n        this._released = true;\n    }\n    async encodeImages() {\n        await Promise.all(this.barcodes.map(async (it) => {\n            await it.encodeImages();\n        }));\n    }\n}\n//# sourceMappingURL=BarcodeScannerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/Geometry.yaml\nimport { ToJsonConfiguration } from '../../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../../utils/utils';\n/**\nRepresents a line segment in 2D space.\n*/\nexport class LineSegmentInt extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<LineSegmentInt>`} */\n    constructor(source = {}) {\n        super();\n        if (source.start !== undefined) {\n            this.start = { x: source.start.x, y: source.start.y };\n        }\n        else {\n            throw new Error('start must be present in constructor argument');\n        }\n        if (source.end !== undefined) {\n            this.end = { x: source.end.x, y: source.end.y };\n        }\n        else {\n            throw new Error('end must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            start: this.start,\n            end: this.end,\n        };\n    }\n}\n/**\nRepresents a line segment in 2D space.\n*/\nexport class LineSegmentFloat extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<LineSegmentFloat>`} */\n    constructor(source = {}) {\n        super();\n        if (source.start !== undefined) {\n            this.start = { x: source.start.x, y: source.start.y };\n        }\n        else {\n            throw new Error('start must be present in constructor argument');\n        }\n        if (source.end !== undefined) {\n            this.end = { x: source.end.x, y: source.end.y };\n        }\n        else {\n            throw new Error('end must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            start: this.start,\n            end: this.end,\n        };\n    }\n}\n/**\nAspect ratio is the ratio of the width to the height of an image or screen.\n*/\nexport class AspectRatio extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AspectRatio>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Width component of the aspect ratio.\n          \n          Default is 1.0\n          */\n        this.width = 1.0;\n        /**\n          Height component of the aspect ratio.\n          \n          Default is 1.0\n          */\n        this.height = 1.0;\n        if (source.width !== undefined) {\n            this.width = source.width;\n        }\n        if (source.height !== undefined) {\n            this.height = source.height;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            width: this.width,\n            height: this.height,\n        };\n    }\n}\n//# sourceMappingURL=Geometry.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/DocumentScannerTypes.yaml\nimport { AspectRatio, LineSegmentFloat, LineSegmentInt } from '../utils/geometry/Geometry';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const DocumentScannerEngineModeValues = ['ML', 'LEGACY'];\n/**\nParameters for the document scanner.\n*/\nexport class DocumentScannerParameters extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentScannerParameters>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The minimum score in percent (0 - 100) of the perspective distortion to accept a detected document.\n          Set lower values to accept more perspective distortion.\n          \n          Warning: Lower values result in more blurred document images.\n          \n          Default is 75\n          */\n        this.acceptedAngleScore = 75;\n        /**\n          The minimum size in percent (0 - 100) of the screen size to accept a detected document.\n          It is sufficient that height or width match the score.\n          \n          Warning: Lower values result in low resolution document images.\n          \n          Default is 80\n          */\n        this.acceptedSizeScore = 80;\n        /**\n          The minimum brightness value (0-255) to accept a detected document.\n          \n          Default is 0\n          */\n        this.acceptedBrightnessThreshold = 0;\n        /**\n          The minimum score in percent (0 - 100) that the aspect ratio of the document\n          must match one of the required aspect ratios (if any) to accept a detected document.\n          If acceptedAspectRatioScore is more than 0, then the document is only accepted if the aspect ratio\n          matches one of the given aspect ratios (if any), otherwise OK_BUT_BAD_ASPECT_RATIO is returned.\n          \n          Default is 85\n          */\n        this.acceptedAspectRatioScore = 85;\n        /**\n          The possible desired aspect ratios for the detected document.\n          A document matches if its aspect ratio matches any of the given aspect ratios.\n          If acceptedAspectRatioScore is more than 0, then the document is only accepted if the aspect ratio\n          matches one of the given aspect ratios, otherwise OK_BUT_BAD_ASPECT_RATIO is returned.\n          If empty, no aspect ratio is preferred.\n          */\n        this.aspectRatios = [];\n        /**\n          If false, the document scanner will return OK_BUT_ORIENTATION_MISMATCH if the\n          detected document orientation does not match the input image orientation,\n          e.g. if the document is detected as landscape but the input image is portrait.\n          If true, the document scanner will ignore orientation mismatches.\n          \n          Default is false\n          */\n        this.ignoreOrientationMismatch = false;\n        if (source.acceptedAngleScore !== undefined) {\n            this.acceptedAngleScore = source.acceptedAngleScore;\n        }\n        if (source.acceptedSizeScore !== undefined) {\n            this.acceptedSizeScore = source.acceptedSizeScore;\n        }\n        if (source.acceptedBrightnessThreshold !== undefined) {\n            this.acceptedBrightnessThreshold = source.acceptedBrightnessThreshold;\n        }\n        if (source.acceptedAspectRatioScore !== undefined) {\n            this.acceptedAspectRatioScore = source.acceptedAspectRatioScore;\n        }\n        if (source.aspectRatios !== undefined) {\n            this.aspectRatios = source.aspectRatios.map((it) => {\n                return new AspectRatio(it);\n            });\n        }\n        if (source.ignoreOrientationMismatch !== undefined) {\n            this.ignoreOrientationMismatch = source.ignoreOrientationMismatch;\n        }\n    }\n}\n/**\nConfiguration for the document scanner.\n*/\nexport class DocumentScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The engine to use for document scanning.\n          \n          Default is ML\n          */\n        this.engineMode = 'ML';\n        /**\n          Initial parameters for the document scanner.\n          */\n        this.parameters = new DocumentScannerParameters({});\n        if (source.engineMode !== undefined) {\n            this.engineMode = source.engineMode;\n        }\n        if (source.parameters !== undefined) {\n            this.parameters = new DocumentScannerParameters(source.parameters);\n        }\n    }\n}\nexport const DocumentDetectionStatusValues = [\n    'NOT_ACQUIRED',\n    'OK',\n    'OK_BUT_TOO_SMALL',\n    'OK_BUT_BAD_ANGLES',\n    'OK_BUT_BAD_ASPECT_RATIO',\n    'OK_BUT_ORIENTATION_MISMATCH',\n    'OK_BUT_OFF_CENTER',\n    'OK_BUT_TOO_DARK',\n    'ERROR_NOTHING_DETECTED',\n    'ERROR_TOO_DARK',\n    'ERROR_TOO_NOISY',\n];\n/**\nThe total and partial scores for the detected document contour.\n*/\nexport class DocumentDetectionScores extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDetectionScores>`} */\n    constructor(source = {}) {\n        super();\n        if (source.totalScore !== undefined) {\n            this.totalScore = source.totalScore;\n        }\n        else {\n            throw new Error('totalScore must be present in constructor argument');\n        }\n        if (source.distanceScore !== undefined) {\n            this.distanceScore = source.distanceScore;\n        }\n        else {\n            throw new Error('distanceScore must be present in constructor argument');\n        }\n        if (source.angleScore !== undefined) {\n            this.angleScore = source.angleScore;\n        }\n        else {\n            throw new Error('angleScore must be present in constructor argument');\n        }\n        if (source.sizeScore !== undefined) {\n            this.sizeScore = source.sizeScore;\n        }\n        else {\n            throw new Error('sizeScore must be present in constructor argument');\n        }\n        if (source.aspectRatioScore !== undefined) {\n            this.aspectRatioScore = source.aspectRatioScore;\n        }\n        else {\n            throw new Error('aspectRatioScore must be present in constructor argument');\n        }\n        if (source.lineCoverageScore !== undefined) {\n            this.lineCoverageScore = source.lineCoverageScore;\n        }\n        else {\n            throw new Error('lineCoverageScore must be present in constructor argument');\n        }\n        if (source.widthScore !== undefined) {\n            this.widthScore = source.widthScore;\n        }\n        else {\n            throw new Error('widthScore must be present in constructor argument');\n        }\n        if (source.heightScore !== undefined) {\n            this.heightScore = source.heightScore;\n        }\n        else {\n            throw new Error('heightScore must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            totalScore: this.totalScore,\n            distanceScore: this.distanceScore,\n            angleScore: this.angleScore,\n            sizeScore: this.sizeScore,\n            aspectRatioScore: this.aspectRatioScore,\n            lineCoverageScore: this.lineCoverageScore,\n            widthScore: this.widthScore,\n            heightScore: this.heightScore,\n        };\n    }\n}\n/**\nResult of the document contour detection.\n*/\nexport class DocumentDetectionResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDetectionResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Detection status.\n          \n          Default is NOT_ACQUIRED\n          */\n        this.status = 'NOT_ACQUIRED';\n        /**\n          Average brightness, calculated as the average\n          of the Value channel in the HSV color space of:\n          - the whole image, if no document was detected\n          - the document crop, if a document was detected\n          Ranges from 0 to 255.\n          \n          Default is 0\n          */\n        this.averageBrightness = 0;\n        if (source.status !== undefined) {\n            this.status = source.status;\n        }\n        if (source.detectionScores !== undefined) {\n            this.detectionScores = new DocumentDetectionScores(source.detectionScores);\n        }\n        else {\n            throw new Error('detectionScores must be present in constructor argument');\n        }\n        if (source.points !== undefined) {\n            this.points = source.points.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('points must be present in constructor argument');\n        }\n        if (source.horizontalLines !== undefined) {\n            this.horizontalLines = source.horizontalLines.map((it) => {\n                return new LineSegmentInt(it);\n            });\n        }\n        else {\n            throw new Error('horizontalLines must be present in constructor argument');\n        }\n        if (source.verticalLines !== undefined) {\n            this.verticalLines = source.verticalLines.map((it) => {\n                return new LineSegmentInt(it);\n            });\n        }\n        else {\n            throw new Error('verticalLines must be present in constructor argument');\n        }\n        if (source.pointsNormalized !== undefined) {\n            this.pointsNormalized = source.pointsNormalized.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('pointsNormalized must be present in constructor argument');\n        }\n        if (source.horizontalLinesNormalized !== undefined) {\n            this.horizontalLinesNormalized = source.horizontalLinesNormalized.map((it) => {\n                return new LineSegmentFloat(it);\n            });\n        }\n        else {\n            throw new Error('horizontalLinesNormalized must be present in constructor argument');\n        }\n        if (source.verticalLinesNormalized !== undefined) {\n            this.verticalLinesNormalized = source.verticalLinesNormalized.map((it) => {\n                return new LineSegmentFloat(it);\n            });\n        }\n        else {\n            throw new Error('verticalLinesNormalized must be present in constructor argument');\n        }\n        if (source.aspectRatio !== undefined) {\n            this.aspectRatio = source.aspectRatio;\n        }\n        else {\n            throw new Error('aspectRatio must be present in constructor argument');\n        }\n        if (source.averageBrightness !== undefined) {\n            this.averageBrightness = source.averageBrightness;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            status: this.status,\n            detectionScores: this.detectionScores.serialize(config),\n            points: this.points.map((it) => {\n                return it;\n            }),\n            horizontalLines: this.horizontalLines.map((it) => {\n                return it.serialize(config);\n            }),\n            verticalLines: this.verticalLines.map((it) => {\n                return it.serialize(config);\n            }),\n            pointsNormalized: this.pointsNormalized.map((it) => {\n                return it;\n            }),\n            horizontalLinesNormalized: this.horizontalLinesNormalized.map((it) => {\n                return it.serialize(config);\n            }),\n            verticalLinesNormalized: this.verticalLinesNormalized.map((it) => {\n                return it.serialize(config);\n            }),\n            aspectRatio: this.aspectRatio,\n            averageBrightness: this.averageBrightness,\n        };\n    }\n}\n//# sourceMappingURL=DocumentScannerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/CheckScannerTypes.yaml\nimport { DocumentDetectionResult } from '../document_scanner/DocumentScannerTypes';\nimport { GenericDocument } from '../documents/GenericDocument';\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const CheckDocumentDetectionModeValues = [\n    'DISABLED',\n    'DETECT_DOCUMENT',\n    'DETECT_AND_CROP_DOCUMENT',\n];\nexport const CheckMagneticInkStripScanningStatusValues = [\n    'SUCCESS',\n    'INCOMPLETE_VALIDATION',\n    'ERROR_NOTHING_FOUND',\n];\n/**\nThe result of check scanning.\n*/\nexport class CheckScanningResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CheckScanningResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Magnetic ink strip scanning status.\n          \n          Default is ERROR_NOTHING_FOUND\n          */\n        this.status = 'ERROR_NOTHING_FOUND';\n        /**\n          Crop of the check if documentDetectionMode is set to DETECT_AND_CROP_DOCUMENT. Will be non-empty, only if check recognition succeeded.\n          */\n        this.croppedImage = null;\n        this._released = false;\n        if (source.status !== undefined) {\n            this.status = source.status;\n        }\n        if (source.check !== undefined) {\n            this.check = source.check != null ? new GenericDocument(source.check) : null;\n        }\n        else {\n            throw new Error('check must be present in constructor argument');\n        }\n        if (source.documentDetectionResult !== undefined) {\n            this.documentDetectionResult =\n                source.documentDetectionResult != null ? new DocumentDetectionResult(source.documentDetectionResult) : null;\n        }\n        else {\n            throw new Error('documentDetectionResult must be present in constructor argument');\n        }\n        if (source.croppedImage !== undefined) {\n            this.croppedImage = source.croppedImage != null ? ImageRef.From(source.croppedImage) : null;\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            status: this.status,\n            check: this.check != null ? await this.check.serialize(config) : null,\n            documentDetectionResult: this.documentDetectionResult != null ? this.documentDetectionResult.serialize(config) : null,\n            croppedImage: config.serializeImages\n                ? this.croppedImage != null\n                    ? await this.croppedImage.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.check != null) {\n                this.check.release();\n            }\n        }\n        {\n            if (this.croppedImage != null) {\n                this.croppedImage.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.check != null) {\n            await this.check.encodeImages();\n        }\n        if (this.croppedImage != null) {\n            await this.croppedImage.encodeInPlace();\n        }\n    }\n}\nexport const CheckStandardValues = ['USA', 'FRA', 'KWT', 'AUS', 'IND', 'ISR', 'UAE', 'CAN'];\n/**\nConfiguration of the check scanner.\n*/\nexport class CheckScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CheckScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Document detection to be performed in addition to scanning the machine-readable data in the check.\n          \n          By default only the machine-readable data is extracted during check scanning. Optionally, the coordinates and a crop of the entire check document can be returned, in addition to the check data.\n          A check scan result may still be successful even if the whole document is not visible in the input image and the complete document could not be located.\n          \n          If cropping is enabled, check recognition will be performed on the cropped image of the check, which may improve recognition results.\n          \n          Default is DISABLED\n          */\n        this.documentDetectionMode = 'DISABLED';\n        /**\n          Accepted check standards. Optional, by default - all checks are accepted.\n          With an empty list no filter is applied and all checks are accepted.\n          */\n        this.acceptedCheckStandards = [];\n        if (source.documentDetectionMode !== undefined) {\n            this.documentDetectionMode = source.documentDetectionMode;\n        }\n        if (source.acceptedCheckStandards !== undefined) {\n            this.acceptedCheckStandards = source.acceptedCheckStandards.map((it) => {\n                return it;\n            });\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            documentDetectionMode: this.documentDetectionMode,\n            acceptedCheckStandards: this.acceptedCheckStandards.map((it) => {\n                return it;\n            }),\n        };\n    }\n}\n//# sourceMappingURL=CheckScannerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/FrameAccumulationTypes.yaml\nimport { PartiallyConstructible } from '../utils/utils';\nexport const ConfirmationMethodValues = ['EXACT', 'INTERPOLATE'];\n/**\nConfiguration for how to accumulate results.\n*/\nexport class ResultAccumulationConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ResultAccumulationConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Method used to confirm a result.\n          \n          Default is EXACT\n          */\n        this.confirmationMethod = 'EXACT';\n        /**\n          Number of confirmations required to consider a result confirmed (see ConfirmationMethod).\n          Requiring more confirmations will increase the reliability of the result but also the time to\n          gather enough confirmations.\n          \n          Default is 3\n          */\n        this.minConfirmations = 3;\n        /**\n          Minimum confidence required to consider a field confirmed.\n          \n          Default is 0.8\n          */\n        this.minConfidenceForStableField = 0.8;\n        /**\n          Will auto-clear the cache if this number of frames have been a different document type or empty.\n          \n          Default is 4\n          */\n        this.autoClearThreshold = 4;\n        if (source.confirmationMethod !== undefined) {\n            this.confirmationMethod = source.confirmationMethod;\n        }\n        if (source.minConfirmations !== undefined) {\n            this.minConfirmations = source.minConfirmations;\n        }\n        if (source.minConfidenceForStableField !== undefined) {\n            this.minConfidenceForStableField = source.minConfidenceForStableField;\n        }\n        if (source.autoClearThreshold !== undefined) {\n            this.autoClearThreshold = source.autoClearThreshold;\n        }\n    }\n}\n/**\nConfigure the frame accumulation process.\n*/\nexport class AccumulatedResultsVerifierConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AccumulatedResultsVerifierConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Maximum number of accumulated frames to inspect to verify a scan result.\n          \n          Default is 3\n          */\n        this.maximumNumberOfAccumulatedFrames = 3;\n        /**\n          Minimum number of accumulated frames that have an equal result in order for the result to be considered verified.\n          \n          Default is 2\n          */\n        this.minimumNumberOfRequiredFramesWithEqualScanningResult = 2;\n        if (source.maximumNumberOfAccumulatedFrames !== undefined) {\n            this.maximumNumberOfAccumulatedFrames = source.maximumNumberOfAccumulatedFrames;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualScanningResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualScanningResult =\n                source.minimumNumberOfRequiredFramesWithEqualScanningResult;\n        }\n    }\n}\n//# sourceMappingURL=FrameAccumulationTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/CreditCardTypes.yaml\nimport { GenericDocument } from '../documents/GenericDocument';\nimport { ResultAccumulationConfiguration } from '../frame_accumulation/FrameAccumulationTypes';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const CreditCardScanningStatusValues = [\n    'SUCCESS',\n    'ERROR_NOTHING_FOUND',\n    'INCOMPLETE',\n];\n/**\nContains the result of running the credit card scanner.\n*/\nexport class CreditCardScanningResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CreditCardScanningResult>`} */\n    constructor(source = {}) {\n        super();\n        this._released = false;\n        if (source.detectionStatus !== undefined) {\n            this.detectionStatus = source.detectionStatus;\n        }\n        else {\n            throw new Error('detectionStatus must be present in constructor argument');\n        }\n        if (source.scanningStatus !== undefined) {\n            this.scanningStatus = source.scanningStatus;\n        }\n        else {\n            throw new Error('scanningStatus must be present in constructor argument');\n        }\n        if (source.creditCard !== undefined) {\n            this.creditCard = source.creditCard != null ? new GenericDocument(source.creditCard) : null;\n        }\n        else {\n            throw new Error('creditCard must be present in constructor argument');\n        }\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n        if (source.quadNormalized !== undefined) {\n            this.quadNormalized = source.quadNormalized.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quadNormalized must be present in constructor argument');\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            detectionStatus: this.detectionStatus,\n            scanningStatus: this.scanningStatus,\n            creditCard: this.creditCard != null ? await this.creditCard.serialize(config) : null,\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n            quadNormalized: this.quadNormalized.map((it) => {\n                return it;\n            }),\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.creditCard != null) {\n                this.creditCard.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.creditCard != null) {\n            await this.creditCard.encodeImages();\n        }\n    }\n}\nexport const CreditCardScanningModeValues = ['LIVE', 'SINGLE_SHOT'];\n/**\nConfiguration for the credit card scanner.\n*/\nexport class CreditCardScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CreditCardScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          If true, the document detector will be used to find where the credit card is in the input image.\n          If false, the scanner will assume that the credit card has been pre-cropped and takes the entirety of the input image.\n          \n          Default is true\n          */\n        this.useDocumentDetector = true;\n        /**\n          The scanning mode.\n          \n          Default is LIVE\n          */\n        this.scanningMode = 'LIVE';\n        /**\n          Whether the expiry date is required for a successful scan.\n          \n          Default is true\n          */\n        this.requireExpiryDate = true;\n        /**\n          Whether the cardholder name is required for a successful scan.\n          \n          Default is true\n          */\n        this.requireCardholderName = true;\n        /**\n          Configuration for how to accumulate results.\n          */\n        this.resultAccumulationConfig = new ResultAccumulationConfiguration({});\n        /**\n          If true, the credit card image will be returned in creditCard field of CreditCardScanningResult.\n          \n          Default is false\n          */\n        this.returnCreditCardImage = false;\n        if (source.useDocumentDetector !== undefined) {\n            this.useDocumentDetector = source.useDocumentDetector;\n        }\n        if (source.scanningMode !== undefined) {\n            this.scanningMode = source.scanningMode;\n        }\n        if (source.requireExpiryDate !== undefined) {\n            this.requireExpiryDate = source.requireExpiryDate;\n        }\n        if (source.requireCardholderName !== undefined) {\n            this.requireCardholderName = source.requireCardholderName;\n        }\n        if (source.resultAccumulationConfig !== undefined) {\n            this.resultAccumulationConfig = new ResultAccumulationConfiguration(source.resultAccumulationConfig);\n        }\n        if (source.returnCreditCardImage !== undefined) {\n            this.returnCreditCardImage = source.returnCreditCardImage;\n        }\n    }\n}\n//# sourceMappingURL=CreditCardTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/DocumentDataExtractorConfigurationTypes.yaml\nimport { PartiallyConstructible } from '../utils/utils';\n/** @internal */\nexport var DocumentDataExtractorConfigurationElement;\n(function (DocumentDataExtractorConfigurationElement) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'DateValidationConfiguration':\n                return new DateValidationConfiguration(source);\n            case 'DeAddressParserConfiguration':\n                return new DeAddressParserConfiguration(source);\n            case 'EuropeanHealthInsuranceCardConfiguration':\n                return new EuropeanHealthInsuranceCardConfiguration(source);\n            case 'MRZFallbackConfiguration':\n                return new MrzFallbackConfiguration(source);\n            case 'AutoFocusConfiguration':\n                return new AutoFocusConfiguration(source);\n            case 'GlareDetectionConfiguration':\n                return new GlareDetectionConfiguration(source);\n            case 'DocumentDataExtractorCommonConfiguration':\n                return new DocumentDataExtractorCommonConfiguration(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    DocumentDataExtractorConfigurationElement.From = From;\n})(DocumentDataExtractorConfigurationElement || (DocumentDataExtractorConfigurationElement = {}));\n/**\nDate validation configuration.\nThis configuration element does not enable the scanning of any document types by itself.\nAdd to recognizer configuration to require date validation checks for specific document types.\n*/\nexport class DateValidationConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DateValidationConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'DateValidationConfiguration';\n        /**\n          Minimum year that is considered valid.\n          \n          Default is 0\n          */\n        this.minYear = 0;\n        /**\n          Maximum year that is considered valid.\n          \n          Default is 2999\n          */\n        this.maxYear = 2999;\n        if (source.minYear !== undefined) {\n            this.minYear = source.minYear;\n        }\n        if (source.maxYear !== undefined) {\n            this.maxYear = source.maxYear;\n        }\n        if (source.fieldTypeName !== undefined) {\n            this.fieldTypeName = source.fieldTypeName;\n        }\n        else {\n            throw new Error('fieldTypeName must be present in constructor argument');\n        }\n    }\n}\n/**\nGerman Address Field validation configuration.\nThis configuration does not enable the scanning of any document types by itself.\nAdd to recognizer configuration to require German Address validation checks for specific document types.\n*/\nexport class DeAddressParserConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DeAddressParserConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'DeAddressParserConfiguration';\n        /**\n          binary file with address database.\n          \n          Default is \"\"\n          */\n        this.binaryFileAddressDatabase = '';\n        if (source.documentTypes !== undefined) {\n            this.documentTypes = source.documentTypes.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('documentTypes must be present in constructor argument');\n        }\n        if (source.binaryFileAddressDatabase !== undefined) {\n            this.binaryFileAddressDatabase = source.binaryFileAddressDatabase;\n        }\n    }\n}\nexport const EuropeanHealthInsuranceCardIssuingCountryValues = [\n    'AUSTRIA',\n    'BELGIUM',\n    'BULGARIA',\n    'CROATIA',\n    'CYPRUS',\n    'CZECH_REPUBLIC',\n    'DENMARK',\n    'ESTONIA',\n    'FINLAND',\n    'FRANCE',\n    'GERMANY',\n    'GREECE',\n    'HUNGARY',\n    'IRELAND',\n    'ITALY',\n    'LATVIA',\n    'LITHUANIA',\n    'LUXEMBOURG',\n    'MALTA',\n    'NETHERLANDS',\n    'POLAND',\n    'PORTUGAL',\n    'ROMANIA',\n    'SLOVAKIA',\n    'SLOVENIA',\n    'SPAIN',\n    'SWEDEN',\n    'SWITZERLAND',\n];\n/**\nEuropean Health Insurance Card (EHIC) configuration element. Add to extractor configuration to scan EHICs.\n*/\nexport class EuropeanHealthInsuranceCardConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<EuropeanHealthInsuranceCardConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'EuropeanHealthInsuranceCardConfiguration';\n        /**\n          If an expected country is selected, validation rules for the given country are used,\n          and if the expected country cannot be inferred or the inferred country doesn't  match the given country,\n          the result of extract() will be IncompleteValidation.\n          */\n        this.expectedCountry = null;\n        if (source.expectedCountry !== undefined) {\n            this.expectedCountry =\n                source.expectedCountry != null\n                    ? EuropeanHealthInsuranceCardIssuingCountryValues.includes(source.expectedCountry)\n                        ? source.expectedCountry\n                        : null\n                    : null;\n        }\n    }\n}\n/**\nMRZ fallback configuration element.\nThis configuration element does not enable the scanning of any document types by itself.\nAdd to extractor configuration to enable recognizing the MRZ only, specifically for documents that are otherwise not supported.\nNote that this may enable scanning of documents that were not enabled through the accepted document types.\n*/\nexport class MrzFallbackConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MrzFallbackConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'MRZFallbackConfiguration';\n        /**\n          List of ISO 3166-1 alpha-3 country codes for which the MRZ fallback is enabled. (e.g. \"DEU\" for Germany).\n          */\n        this.acceptedCountries = [];\n        /**\n          List of MRZ document types for which MRZ fallback is enabled.\n          */\n        this.acceptedMRZTypes = [];\n        if (source.acceptedCountries !== undefined) {\n            this.acceptedCountries = source.acceptedCountries.map((it) => {\n                return it;\n            });\n        }\n        if (source.acceptedMRZTypes !== undefined) {\n            this.acceptedMRZTypes = source.acceptedMRZTypes.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n/**\nAuto-focus configuration.\nThe recognizer will ignore frames that are not focused. This option is enabled by default.\nThis configuration has no effect in SINGLE_SHOT mode.\n*/\nexport class AutoFocusConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<AutoFocusConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'AutoFocusConfiguration';\n        /**\n          Sensitivity threshold for detecting that autofocus is in progress.\n          The value should be in the range [0.0, 1.0].\n          The lower the value, the more frames might be discarded as not focused.\n          The higher the value, the earlier the focus might be considered as focused.\n          If set to 0.0, the feature is disabled.\n          \n          Default is 0.02\n          */\n        this.sensitivityThreshold = 0.02;\n        if (source.sensitivityThreshold !== undefined) {\n            this.sensitivityThreshold = source.sensitivityThreshold;\n        }\n    }\n}\n/**\nGlare detection configuration.\nThe recognizer will detect whether fields are obstructed by glare. This feature is enabled by default.\nThis configuration has no effect in SINGLE_SHOT mode.\n*/\nexport class GlareDetectionConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<GlareDetectionConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'GlareDetectionConfiguration';\n        /**\n          Glare detection threshold.\n          The value should be in the range [0.0, 1.0].\n          Determines how much glare is acceptable relative to the text size. So 0.5 means that the glare can be up to 50% of the text size.\n          If set to 0.0, the feature is disabled.\n          \n          Default is 0.5\n          */\n        this.glareDetectionThreshold = 0.5;\n        if (source.glareDetectionThreshold !== undefined) {\n            this.glareDetectionThreshold = source.glareDetectionThreshold;\n        }\n    }\n}\n/**\nConvenience configuration element for enabling the scanning of multiple document types with a common configuration.\nAdd to extractor configuration to enable the scanning of multiple document types.\n*/\nexport class DocumentDataExtractorCommonConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDataExtractorCommonConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'DocumentDataExtractorCommonConfiguration';\n        /**\n          List of document types to scan. By default, the list is empty.\n          */\n        this.acceptedDocumentTypes = [\n            'DeIdCardFront',\n            'DeIdCardBack',\n            'DeHealthInsuranceCardFront',\n            'DePassport',\n            'DeResidencePermitFront',\n            'DeResidencePermitBack',\n            'EuropeanHealthInsuranceCard',\n            'EuropeanDriverLicenseFront',\n            'EuropeanDriverLicenseBack',\n        ];\n        if (source.acceptedDocumentTypes !== undefined) {\n            this.acceptedDocumentTypes = source.acceptedDocumentTypes.map((it) => {\n                return it;\n            });\n        }\n    }\n}\n//# sourceMappingURL=DocumentDataExtractorConfigurationTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/DocumentDataExtractorTypes.yaml\nimport { DocumentDataExtractorCommonConfiguration, DocumentDataExtractorConfigurationElement, } from '../document_data_extractor/DocumentDataExtractorConfigurationTypes';\nimport { DocumentDetectionResult } from '../document_scanner/DocumentScannerTypes';\nimport { GenericDocument } from '../documents/GenericDocument';\nimport { ResultAccumulationConfiguration } from '../frame_accumulation/FrameAccumulationTypes';\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const DocumentDataExtractionStatusValues = [\n    'SUCCESS',\n    'ERROR_NOTHING_FOUND',\n    'ERROR_BAD_CROP',\n    'ERROR_UNKNOWN_DOCUMENT',\n    'ERROR_UNACCEPTABLE_DOCUMENT',\n    'ERROR_STILL_FOCUSSING',\n    'INCOMPLETE_VALIDATION',\n];\n/**\nContains the result of running the generic document extractor.\n*/\nexport class DocumentDataExtractionResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDataExtractionResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Crop of the document if it was detected.\n          */\n        this.croppedImage = null;\n        this._released = false;\n        if (source.status !== undefined) {\n            this.status = source.status;\n        }\n        else {\n            throw new Error('status must be present in constructor argument');\n        }\n        if (source.document !== undefined) {\n            this.document = source.document != null ? new GenericDocument(source.document) : null;\n        }\n        else {\n            throw new Error('document must be present in constructor argument');\n        }\n        if (source.documentDetectionResult !== undefined) {\n            this.documentDetectionResult = new DocumentDetectionResult(source.documentDetectionResult);\n        }\n        else {\n            throw new Error('documentDetectionResult must be present in constructor argument');\n        }\n        if (source.croppedImage !== undefined) {\n            this.croppedImage = source.croppedImage != null ? ImageRef.From(source.croppedImage) : null;\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            status: this.status,\n            document: this.document != null ? await this.document.serialize(config) : null,\n            documentDetectionResult: this.documentDetectionResult.serialize(config),\n            croppedImage: config.serializeImages\n                ? this.croppedImage != null\n                    ? await this.croppedImage.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.document != null) {\n                this.document.release();\n            }\n        }\n        {\n            if (this.croppedImage != null) {\n                this.croppedImage.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.document != null) {\n            await this.document.encodeImages();\n        }\n        if (this.croppedImage != null) {\n            await this.croppedImage.encodeInPlace();\n        }\n    }\n}\nexport const DocumentDataExtractionModeValues = ['LIVE', 'SINGLE_SHOT'];\n/**\nParameters for the extraction process.\n*/\nexport class DocumentDataFrameExtractionParameters extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDataFrameExtractionParameters>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The extraction mode.\n          \n          Default is LIVE\n          */\n        this.mode = 'LIVE';\n        if (source.mode !== undefined) {\n            this.mode = source.mode;\n        }\n    }\n}\nexport const DocumentTrustModeValues = ['TRUSTED', 'UNTRUSTED'];\n/**\nConfiguration for the document data extractor.\n*/\nexport class DocumentDataExtractorConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentDataExtractorConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Configuration for how to accumulate results.\n          */\n        this.resultAccumulationConfig = new ResultAccumulationConfiguration({});\n        /**\n          Normalized names of the fields to exclude from the result.\n          */\n        this.fieldExcludeList = [];\n        /**\n          List of configuration elements for the document data extractor.\n          */\n        this.configurations = [\n            new DocumentDataExtractorCommonConfiguration({}),\n        ];\n        /**\n          If true, crops of the detected documents and fields will be returned in the result.\n          \n          Default is false\n          */\n        this.returnCrops = false;\n        /**\n          Level of trust in the authenticity of the extracted document.\n          \n          Default is TRUSTED\n          */\n        this.documentTrustMode = 'TRUSTED';\n        if (source.resultAccumulationConfig !== undefined) {\n            this.resultAccumulationConfig = new ResultAccumulationConfiguration(source.resultAccumulationConfig);\n        }\n        if (source.fieldExcludeList !== undefined) {\n            this.fieldExcludeList = source.fieldExcludeList.map((it) => {\n                return it;\n            });\n        }\n        if (source.configurations !== undefined) {\n            this.configurations = source.configurations.map((it) => {\n                return DocumentDataExtractorConfigurationElement.From(it);\n            });\n        }\n        if (source.returnCrops !== undefined) {\n            this.returnCrops = source.returnCrops;\n        }\n        if (source.documentTrustMode !== undefined) {\n            this.documentTrustMode = source.documentTrustMode;\n        }\n    }\n}\nexport const ValueConsistencyValues = [\n    'OK',\n    'OK_PUNCTUATION_UPPER_CASE_CLEANED',\n    'OK_DEBURRED',\n    'OK_DEBURRED_EXTENDED',\n    'OK_TRUNCATED',\n    'INCONSISTENT',\n];\n/**\nReport of the field consistency verification.\n*/\nexport class FieldConsistencyVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldConsistencyVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.fieldType !== undefined) {\n            this.fieldType = source.fieldType;\n        }\n        else {\n            throw new Error('fieldType must be present in constructor argument');\n        }\n        if (source.consistency !== undefined) {\n            this.consistency = source.consistency;\n        }\n        else {\n            throw new Error('consistency must be present in constructor argument');\n        }\n        if (source.fieldFullNames !== undefined) {\n            this.fieldFullNames = source.fieldFullNames.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('fieldFullNames must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            fieldType: this.fieldType,\n            consistency: this.consistency,\n            fieldFullNames: this.fieldFullNames.map((it) => {\n                return it;\n            }),\n        };\n    }\n}\n/**\nReport of the document consistency verification. Shows whether information in the fields that correspond to the same logical field is consistent.\n*/\nexport class ConsistencyVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ConsistencyVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallConsistency !== undefined) {\n            this.overallConsistency = source.overallConsistency;\n        }\n        else {\n            throw new Error('overallConsistency must be present in constructor argument');\n        }\n        if (source.fieldDetails !== undefined) {\n            this.fieldDetails = source.fieldDetails.map((it) => {\n                return new FieldConsistencyVerificationReport(it);\n            });\n        }\n        else {\n            throw new Error('fieldDetails must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallConsistency: this.overallConsistency,\n            fieldDetails: this.fieldDetails.map((it) => {\n                return it.serialize(config);\n            }),\n        };\n    }\n}\nexport const ValueSemanticsValues = ['SKIPPED', 'VALID', 'INVALID'];\n/**\nReport of the field value semantics verification.\n*/\nexport class FieldValueSemantics extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldValueSemantics>`} */\n    constructor(source = {}) {\n        super();\n        if (source.fieldFullName !== undefined) {\n            this.fieldFullName = source.fieldFullName;\n        }\n        else {\n            throw new Error('fieldFullName must be present in constructor argument');\n        }\n        if (source.invalidSemantics !== undefined) {\n            this.invalidSemantics = source.invalidSemantics;\n        }\n        else {\n            throw new Error('invalidSemantics must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            fieldFullName: this.fieldFullName,\n            invalidSemantics: this.invalidSemantics,\n        };\n    }\n}\n/**\nReport of a logical field value semantics verification. If some logical field, e.g. expiry date is present in multiple places in the document, it can occur that some entries are semantically correct and some are semantically incorrect. This report shows the overall status of the logical field value semantics verification and details for each field that was verified.\n*/\nexport class CompositeFieldValueSemantics extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CompositeFieldValueSemantics>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallFieldValueSemantics !== undefined) {\n            this.overallFieldValueSemantics = source.overallFieldValueSemantics;\n        }\n        else {\n            throw new Error('overallFieldValueSemantics must be present in constructor argument');\n        }\n        if (source.fieldDetails !== undefined) {\n            this.fieldDetails = source.fieldDetails.map((it) => {\n                return new FieldValueSemantics(it);\n            });\n        }\n        else {\n            throw new Error('fieldDetails must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallFieldValueSemantics: this.overallFieldValueSemantics,\n            fieldDetails: this.fieldDetails.map((it) => {\n                return it.serialize(config);\n            }),\n        };\n    }\n}\n/**\nReport of the document value semantics verification.\n*/\nexport class SemanticsVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<SemanticsVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallInvalidSemantics !== undefined) {\n            this.overallInvalidSemantics = source.overallInvalidSemantics;\n        }\n        else {\n            throw new Error('overallInvalidSemantics must be present in constructor argument');\n        }\n        if (source.expiryDateSemantics !== undefined) {\n            this.expiryDateSemantics = new CompositeFieldValueSemantics(source.expiryDateSemantics);\n        }\n        else {\n            throw new Error('expiryDateSemantics must be present in constructor argument');\n        }\n        if (source.issueDateSemantics !== undefined) {\n            this.issueDateSemantics = new CompositeFieldValueSemantics(source.issueDateSemantics);\n        }\n        else {\n            throw new Error('issueDateSemantics must be present in constructor argument');\n        }\n        if (source.birthDateSemantics !== undefined) {\n            this.birthDateSemantics = new CompositeFieldValueSemantics(source.birthDateSemantics);\n        }\n        else {\n            throw new Error('birthDateSemantics must be present in constructor argument');\n        }\n        if (source.issueDateBeforeExpiryDate !== undefined) {\n            this.issueDateBeforeExpiryDate = source.issueDateBeforeExpiryDate;\n        }\n        else {\n            throw new Error('issueDateBeforeExpiryDate must be present in constructor argument');\n        }\n        if (source.birthDateBeforeIssueDate !== undefined) {\n            this.birthDateBeforeIssueDate = source.birthDateBeforeIssueDate;\n        }\n        else {\n            throw new Error('birthDateBeforeIssueDate must be present in constructor argument');\n        }\n        if (source.birthDateBeforeExpiryDate !== undefined) {\n            this.birthDateBeforeExpiryDate = source.birthDateBeforeExpiryDate;\n        }\n        else {\n            throw new Error('birthDateBeforeExpiryDate must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallInvalidSemantics: this.overallInvalidSemantics,\n            expiryDateSemantics: this.expiryDateSemantics.serialize(config),\n            issueDateSemantics: this.issueDateSemantics.serialize(config),\n            birthDateSemantics: this.birthDateSemantics.serialize(config),\n            issueDateBeforeExpiryDate: this.issueDateBeforeExpiryDate,\n            birthDateBeforeIssueDate: this.birthDateBeforeIssueDate,\n            birthDateBeforeExpiryDate: this.birthDateBeforeExpiryDate,\n        };\n    }\n}\n/**\nReport of the suspicious data field verification.\n*/\nexport class FieldSuspiciousDataVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldSuspiciousDataVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.fieldFullName !== undefined) {\n            this.fieldFullName = source.fieldFullName;\n        }\n        else {\n            throw new Error('fieldFullName must be present in constructor argument');\n        }\n        if (source.isSuspicious !== undefined) {\n            this.isSuspicious = source.isSuspicious;\n        }\n        else {\n            throw new Error('isSuspicious must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            fieldFullName: this.fieldFullName,\n            isSuspicious: this.isSuspicious,\n        };\n    }\n}\n/**\nReport of the suspicious data document verification.\n*/\nexport class SuspiciousDataVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<SuspiciousDataVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallSuspiciousData !== undefined) {\n            this.overallSuspiciousData = source.overallSuspiciousData;\n        }\n        else {\n            throw new Error('overallSuspiciousData must be present in constructor argument');\n        }\n        if (source.fieldDetails !== undefined) {\n            this.fieldDetails = source.fieldDetails.map((it) => {\n                return new FieldSuspiciousDataVerificationReport(it);\n            });\n        }\n        else {\n            throw new Error('fieldDetails must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallSuspiciousData: this.overallSuspiciousData,\n            fieldDetails: this.fieldDetails.map((it) => {\n                return it.serialize(config);\n            }),\n        };\n    }\n}\n/**\nReport which shows whether the data in the field that can be validated is valid.\n*/\nexport class FieldInvalidDataVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<FieldInvalidDataVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.fieldFullName !== undefined) {\n            this.fieldFullName = source.fieldFullName;\n        }\n        else {\n            throw new Error('fieldFullName must be present in constructor argument');\n        }\n        if (source.isInvalid !== undefined) {\n            this.isInvalid = source.isInvalid;\n        }\n        else {\n            throw new Error('isInvalid must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            fieldFullName: this.fieldFullName,\n            isInvalid: this.isInvalid,\n        };\n    }\n}\n/**\nReport of the field validation verification.\n*/\nexport class InvalidDataVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<InvalidDataVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallIsInvalid !== undefined) {\n            this.overallIsInvalid = source.overallIsInvalid;\n        }\n        else {\n            throw new Error('overallIsInvalid must be present in constructor argument');\n        }\n        if (source.fieldDetails !== undefined) {\n            this.fieldDetails = source.fieldDetails.map((it) => {\n                return new FieldInvalidDataVerificationReport(it);\n            });\n        }\n        else {\n            throw new Error('fieldDetails must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallIsInvalid: this.overallIsInvalid,\n            fieldDetails: this.fieldDetails.map((it) => {\n                return it.serialize(config);\n            }),\n        };\n    }\n}\nexport const DocumentVerificationStatusValues = ['OK', 'OK_WITH_WARNINGS', 'INVALID'];\n/**\nReport of the document verification.\n*/\nexport class DocumentVerificationReport extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentVerificationReport>`} */\n    constructor(source = {}) {\n        super();\n        if (source.overallVerificationStatus !== undefined) {\n            this.overallVerificationStatus = source.overallVerificationStatus;\n        }\n        else {\n            throw new Error('overallVerificationStatus must be present in constructor argument');\n        }\n        if (source.consistencyVerificationReport !== undefined) {\n            this.consistencyVerificationReport = new ConsistencyVerificationReport(source.consistencyVerificationReport);\n        }\n        else {\n            throw new Error('consistencyVerificationReport must be present in constructor argument');\n        }\n        if (source.semanticsVerificationReport !== undefined) {\n            this.semanticsVerificationReport = new SemanticsVerificationReport(source.semanticsVerificationReport);\n        }\n        else {\n            throw new Error('semanticsVerificationReport must be present in constructor argument');\n        }\n        if (source.suspiciousDataVerificationReport !== undefined) {\n            this.suspiciousDataVerificationReport = new SuspiciousDataVerificationReport(source.suspiciousDataVerificationReport);\n        }\n        else {\n            throw new Error('suspiciousDataVerificationReport must be present in constructor argument');\n        }\n        if (source.invalidDataVerificationReport !== undefined) {\n            this.invalidDataVerificationReport = new InvalidDataVerificationReport(source.invalidDataVerificationReport);\n        }\n        else {\n            throw new Error('invalidDataVerificationReport must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            overallVerificationStatus: this.overallVerificationStatus,\n            consistencyVerificationReport: this.consistencyVerificationReport.serialize(config),\n            semanticsVerificationReport: this.semanticsVerificationReport.serialize(config),\n            suspiciousDataVerificationReport: this.suspiciousDataVerificationReport.serialize(config),\n            invalidDataVerificationReport: this.invalidDataVerificationReport.serialize(config),\n        };\n    }\n}\n//# sourceMappingURL=DocumentDataExtractorTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from native/schemas/document/PageImageSource.yaml\nexport const PageImageSourceValues = [\n    'UNDEFINED',\n    'MANUAL_SNAP',\n    'AUTO_SNAP',\n    'CAMERA_FRAME',\n    'IMPORTED',\n];\n//# sourceMappingURL=PageImageSource.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/DocumentQualityAnalyzerTypes.yaml\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const DocumentQualityValues = ['VERY_POOR', 'POOR', 'REASONABLE', 'GOOD', 'EXCELLENT'];\n/**\nPoint in the quality-number of symbols space to separate quality levels.\n*/\nexport class DocumentQualityThreshold extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentQualityThreshold>`} */\n    constructor(source = {}) {\n        super();\n        if (source.symbolQuality !== undefined) {\n            this.symbolQuality = source.symbolQuality;\n        }\n        else {\n            throw new Error('symbolQuality must be present in constructor argument');\n        }\n        if (source.symbolRatio !== undefined) {\n            this.symbolRatio = source.symbolRatio;\n        }\n        else {\n            throw new Error('symbolRatio must be present in constructor argument');\n        }\n    }\n}\n/**\nDocument Quality Analyzer configuration.\n*/\nexport class DocumentQualityAnalyzerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentQualityAnalyzerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Quality thresholds to separate quality levels.\n          */\n        this.qualityThresholds = [\n            new DocumentQualityThreshold({ symbolQuality: 0.5, symbolRatio: 0.5 }),\n            new DocumentQualityThreshold({ symbolQuality: 0.7, symbolRatio: 0.3 }),\n            new DocumentQualityThreshold({ symbolQuality: 0.85, symbolRatio: 0.3 }),\n            new DocumentQualityThreshold({ symbolQuality: 0.9, symbolRatio: 0.1 }),\n        ];\n        /**\n          quality levels.\n          */\n        this.qualityIndices = ['VERY_POOR', 'POOR', 'REASONABLE', 'GOOD', 'EXCELLENT'];\n        /**\n          Enable orientation detection. Document orientation will be returned in `DocumentQualityAnalyzerResult.orientation`.\n          \n          Default is false\n          */\n        this.detectOrientation = false;\n        /**\n          Inspect small text (typically less than 12 pixels height) when analyzing the document quality.\n          If true, processing will be slower, but when the quality issue with a document is the low resolution of the text,\n          then the issue will be caught.\n          \n          Default is false\n          */\n        this.inspectSmallText = false;\n        /**\n          Maximum image size in pixels, if image is bigger, it will be resized.\n          \n          Default is 2000\n          */\n        this.maxImageSize = 2000;\n        /**\n          If estimated number of symbols is less than this value, return that document is not found.\n          \n          Default is 20\n          */\n        this.minEstimatedNumberOfSymbolsForDocument = 20;\n        /**\n          At least this fraction of the image will be processed, range is from 0 to 1.\n          \n          Default is 0\n          */\n        this.minProcessedFraction = 0.0;\n        /**\n          At most this fraction of the image will be processed, range is from 0 to 1.\n          \n          Default is 0.5\n          */\n        this.maxProcessedFraction = 0.5;\n        /**\n          If this number of symbols is found and minProcessedFraction of the image is processed, the processing stops.\n          \n          Default is 100\n          */\n        this.earlyStopIfNSymbolsFound = 100;\n        /**\n          Image will be processed in tiles of this size; will be ignored if image is small.\n          \n          Default is 300\n          */\n        this.tileSize = 300;\n        /**\n          If true, will return the quality heatmap as a part of the result.\n          In this case, the entire image will be processed and the minProcessedFraction will be ignored.\n          Useful for debugging situations where the returned quality doesn't appear to match the perceived quality.\n          \n          Default is false\n          */\n        this.returnQualityHeatmap = false;\n        if (source.qualityThresholds !== undefined) {\n            this.qualityThresholds = source.qualityThresholds.map((it) => {\n                return new DocumentQualityThreshold(it);\n            });\n        }\n        if (source.qualityIndices !== undefined) {\n            this.qualityIndices = source.qualityIndices.map((it) => {\n                return it;\n            });\n        }\n        if (source.detectOrientation !== undefined) {\n            this.detectOrientation = source.detectOrientation;\n        }\n        if (source.inspectSmallText !== undefined) {\n            this.inspectSmallText = source.inspectSmallText;\n        }\n        if (source.maxImageSize !== undefined) {\n            this.maxImageSize = source.maxImageSize;\n        }\n        if (source.minEstimatedNumberOfSymbolsForDocument !== undefined) {\n            this.minEstimatedNumberOfSymbolsForDocument = source.minEstimatedNumberOfSymbolsForDocument;\n        }\n        if (source.minProcessedFraction !== undefined) {\n            this.minProcessedFraction = source.minProcessedFraction;\n        }\n        if (source.maxProcessedFraction !== undefined) {\n            this.maxProcessedFraction = source.maxProcessedFraction;\n        }\n        if (source.earlyStopIfNSymbolsFound !== undefined) {\n            this.earlyStopIfNSymbolsFound = source.earlyStopIfNSymbolsFound;\n        }\n        if (source.tileSize !== undefined) {\n            this.tileSize = source.tileSize;\n        }\n        if (source.returnQualityHeatmap !== undefined) {\n            this.returnQualityHeatmap = source.returnQualityHeatmap;\n        }\n    }\n}\n/**\nResult of document quality analysis. It can be used to determine, e.g., if a document is good enough to be used for OCR processing.\n*/\nexport class DocumentQualityAnalyzerResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentQualityAnalyzerResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Quality heatmap.\n          Black marks areas of no detected text. Colors represent the quality of detected text,\n          with red meaning the lowest quality and yellow and green meaning progressively higher quality.\n          */\n        this.qualityHeatmap = null;\n        this._released = false;\n        if (source.documentFound !== undefined) {\n            this.documentFound = source.documentFound;\n        }\n        else {\n            throw new Error('documentFound must be present in constructor argument');\n        }\n        if (source.quality !== undefined) {\n            this.quality =\n                source.quality != null ? (DocumentQualityValues.includes(source.quality) ? source.quality : null) : null;\n        }\n        else {\n            throw new Error('quality must be present in constructor argument');\n        }\n        if (source.orientation !== undefined) {\n            this.orientation = source.orientation != null ? source.orientation : null;\n        }\n        else {\n            throw new Error('orientation must be present in constructor argument');\n        }\n        if (source.cumulativeQualityHistogram !== undefined) {\n            this.cumulativeQualityHistogram = source.cumulativeQualityHistogram.map((it) => {\n                return it;\n            });\n        }\n        else {\n            throw new Error('cumulativeQualityHistogram must be present in constructor argument');\n        }\n        if (source.qualityHeatmap !== undefined) {\n            this.qualityHeatmap = source.qualityHeatmap != null ? ImageRef.From(source.qualityHeatmap) : null;\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            documentFound: this.documentFound,\n            quality: this.quality != null ? this.quality : null,\n            orientation: this.orientation != null ? this.orientation : null,\n            cumulativeQualityHistogram: this.cumulativeQualityHistogram.map((it) => {\n                return it;\n            }),\n            qualityHeatmap: config.serializeImages\n                ? this.qualityHeatmap != null\n                    ? await this.qualityHeatmap.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.qualityHeatmap != null) {\n                this.qualityHeatmap.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.qualityHeatmap != null) {\n            await this.qualityHeatmap.encodeInPlace();\n        }\n    }\n}\n//# sourceMappingURL=DocumentQualityAnalyzerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/ParametricFilters.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const OutputModeValues = ['BINARY', 'ANTIALIASED'];\nexport const BinarizationFilterPresetValues = [\n    'PRESET_1',\n    'PRESET_2',\n    'PRESET_3',\n    'PRESET_4',\n    'PRESET_5',\n];\n/** @internal */\nexport var ParametricFilter;\n(function (ParametricFilter) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'ScanbotBinarizationFilter':\n                return new ScanbotBinarizationFilter(source);\n            case 'CustomBinarizationFilter':\n                return new CustomBinarizationFilter(source);\n            case 'ColorDocumentFilter':\n                return new ColorDocumentFilter(source);\n            case 'BrightnessFilter':\n                return new BrightnessFilter(source);\n            case 'ContrastFilter':\n                return new ContrastFilter(source);\n            case 'GrayscaleFilter':\n                return new GrayscaleFilter(source);\n            case 'LegacyFilter':\n                return new LegacyFilter(source);\n            case 'WhiteBlackPointFilter':\n                return new WhiteBlackPointFilter(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    ParametricFilter.From = From;\n})(ParametricFilter || (ParametricFilter = {}));\n/**\nAutomatic binarization filter. This filter is a good starting point for most use cases.\n*/\nexport class ScanbotBinarizationFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ScanbotBinarizationFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'ScanbotBinarizationFilter';\n        /**\n          Output mode of the filter. BINARY will return a black and white image, GRAYSCALE will return an antialiased grayscale image.\n          \n          Default is BINARY\n          */\n        this.outputMode = 'BINARY';\n        if (source.outputMode !== undefined) {\n            this.outputMode = source.outputMode;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            outputMode: this.outputMode,\n        };\n    }\n}\n/**\nAutomatic binarization filter. This filter is a good starting point for most use cases.\n*/\nexport class CustomBinarizationFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<CustomBinarizationFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'CustomBinarizationFilter';\n        /**\n          Output mode of the filter. BINARY will return a black and white image, GRAYSCALE will return an antialiased grayscale image.\n          \n          Default is BINARY\n          */\n        this.outputMode = 'BINARY';\n        /**\n          Value controlling the amount of noise removal. Value between 0 and 1.\n          Too little noise removal may result in a very noisy image, worsening readability.\n          Too much noise removal may result in the degradation of text, again, worsening readability.\n          \n          Default is 0.5\n          */\n        this.denoise = 0.5;\n        /**\n          Filter radius. The bigger the radius, the slower the filter and generally the less noise in the result.\n          The radius is used for both shadows removal and the calculation of local statistics in the main body of the filter.\n          Higher radius usually allows to cope better with regions of light text on dark background.\n          All the values larger than 127 are clamped to 127.\n          \n          Default is 32\n          */\n        this.radius = 32;\n        /**\n          Preset of binarization filter parameters that are found to perform well on different types of documents.\n          \n          Default is PRESET_4\n          */\n        this.preset = 'PRESET_4';\n        if (source.outputMode !== undefined) {\n            this.outputMode = source.outputMode;\n        }\n        if (source.denoise !== undefined) {\n            this.denoise = source.denoise;\n        }\n        if (source.radius !== undefined) {\n            this.radius = source.radius;\n        }\n        if (source.preset !== undefined) {\n            this.preset = source.preset;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            outputMode: this.outputMode,\n            denoise: this.denoise,\n            radius: this.radius,\n            preset: this.preset,\n        };\n    }\n}\n/**\nColor document filter. This filter is a good starting point for most use cases.\n*/\nexport class ColorDocumentFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ColorDocumentFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'ColorDocumentFilter';\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n        };\n    }\n}\n/**\nBrightness adjustment filter.\n*/\nexport class BrightnessFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BrightnessFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'BrightnessFilter';\n        /**\n          Brightness adjustment value in the range from -1 to 1. Negative values will make the image darker, positive values will make it brighter.\n          \n          Default is 0.0\n          */\n        this.brightness = 0.0;\n        if (source.brightness !== undefined) {\n            this.brightness = source.brightness;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            brightness: this.brightness,\n        };\n    }\n}\n/**\nContrast adjustment filter.\n*/\nexport class ContrastFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<ContrastFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'ContrastFilter';\n        /**\n          Contrast adjustment value in the range from -1 to 254 (inclusively). Negative values will decrease the contrast, positive values will increase it.\n          \n          Default is 0.0\n          */\n        this.contrast = 0.0;\n        if (source.contrast !== undefined) {\n            this.contrast = source.contrast;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            contrast: this.contrast,\n        };\n    }\n}\n/**\nConverts color images to grayscale and applies autocontrast.\n*/\nexport class GrayscaleFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<GrayscaleFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'GrayscaleFilter';\n        /**\n          Ignore this fraction of pixels at the edge of the image when calculating statistics.\n          Pixels at the edge of the image typically have poor statistics. Ignoring them\n          and using only the inner pixels when calculating certain statistics can\n          substantially improve the quality of the result.\n          The value must be less than 0.5 but usually good values are between 0 and 0.15.\n          \n          Default is 0.06\n          */\n        this.borderWidthFraction = 0.06;\n        /**\n          Clip this fraction of the darkest pixels in operations such as autocontrast.\n          Increasing the range of middle gray levels at the expense of the brightest and darkest levels\n          may improve the overall contrast and quality of the result.\n          Sum of blackOutliersFraction and whiteOutliersFraction must be less than 1 but usually\n          good values for the parameters do not exceed 0.05;.\n          \n          Default is 0.0\n          */\n        this.blackOutliersFraction = 0.0;\n        /**\n          Clip this fraction of the brightest pixels in operations such as autocontrast.\n          Increasing the range of middle gray levels at the expense of the brightest and darkest levels\n          may improve the overall contrast and quality of the result.\n          Sum of blackOutliersFraction and whiteOutliersFraction must be less than 1 but usually\n          good values for the parameters do not exceed 0.05;.\n          \n          Default is 0.02\n          */\n        this.whiteOutliersFraction = 0.02;\n        if (source.borderWidthFraction !== undefined) {\n            this.borderWidthFraction = source.borderWidthFraction;\n        }\n        if (source.blackOutliersFraction !== undefined) {\n            this.blackOutliersFraction = source.blackOutliersFraction;\n        }\n        if (source.whiteOutliersFraction !== undefined) {\n            this.whiteOutliersFraction = source.whiteOutliersFraction;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            borderWidthFraction: this.borderWidthFraction,\n            blackOutliersFraction: this.blackOutliersFraction,\n            whiteOutliersFraction: this.whiteOutliersFraction,\n        };\n    }\n}\n/**\nDeprecated image filters.\n*/\nexport class LegacyFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<LegacyFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'LegacyFilter';\n        /**\n          Id of filter to be applied.\n          \n          Default is 0\n          */\n        this.filterType = 0;\n        if (source.filterType !== undefined) {\n            this.filterType = source.filterType;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            filterType: this.filterType,\n        };\n    }\n    static fromImageFilterType(imageFilterType) {\n        let imageFilterTypeAsNumber;\n        switch (imageFilterType) {\n            default:\n            case 'NONE':\n                imageFilterTypeAsNumber = 0;\n                break;\n            case 'COLOR':\n                imageFilterTypeAsNumber = 1;\n                break;\n            case 'GRAYSCALE':\n                imageFilterTypeAsNumber = 2;\n                break;\n            case 'BINARIZED':\n                imageFilterTypeAsNumber = 3;\n                break;\n            case 'COLOR_DOCUMENT':\n                imageFilterTypeAsNumber = 4;\n                break;\n            case 'PURE_BINARIZED':\n                imageFilterTypeAsNumber = 11;\n                break;\n            case 'BACKGROUND_CLEAN':\n                imageFilterTypeAsNumber = 13;\n                break;\n            case 'BLACK_AND_WHITE':\n                imageFilterTypeAsNumber = 14;\n                break;\n            case 'OTSU_BINARIZATION':\n                imageFilterTypeAsNumber = 15;\n                break;\n            case 'DEEP_BINARIZATION':\n                imageFilterTypeAsNumber = 16;\n                break;\n            case 'EDGE_HIGHLIGHT':\n                imageFilterTypeAsNumber = 17;\n                break;\n            case 'LOW_LIGHT_BINARIZATION':\n                imageFilterTypeAsNumber = 18;\n                break;\n            case 'LOW_LIGHT_BINARIZATION_2':\n                imageFilterTypeAsNumber = 19;\n                break;\n            case 'PURE_GRAY':\n                imageFilterTypeAsNumber = 21;\n                break;\n        }\n        return new LegacyFilter({ filterType: imageFilterTypeAsNumber });\n    }\n}\n/**\nMaps image value channel so that all the pixels darker than the black point are set to 0,\nall the pixels brighter than the white point are set to 255, and the pixels in between\nare linearly scaled.\n*/\nexport class WhiteBlackPointFilter extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<WhiteBlackPointFilter>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'WhiteBlackPointFilter';\n        /**\n          Fraction of the value channel range that is set to 0. The value should be in the range from 0 to 1.\n          \n          Default is 0.0\n          */\n        this.blackPoint = 0.0;\n        /**\n          Fraction of the value channel range that is not set to 255. The value should be in the range from 0 to 1.\n          \n          Default is 1.0\n          */\n        this.whitePoint = 1.0;\n        if (source.blackPoint !== undefined) {\n            this.blackPoint = source.blackPoint;\n        }\n        if (source.whitePoint !== undefined) {\n            this.whitePoint = source.whitePoint;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            _type: this._type,\n            blackPoint: this.blackPoint,\n            whitePoint: this.whitePoint,\n        };\n    }\n}\n//# sourceMappingURL=ParametricFilters.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from native/schemas/document/PageData.yaml\nimport { DocumentDetectionStatusValues } from '../document_scanner/DocumentScannerTypes';\nimport { PageImageSourceValues } from '../document_scanner/PageImageSource';\nimport { DocumentQualityValues } from '../dqa/DocumentQualityAnalyzerTypes';\nimport { ParametricFilter } from '../image_filters/ParametricFilters';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nThe result of the health insurance card recognition.\n*/\nexport class PageData extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<PageData>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The list of filters applied to the page.\n          */\n        this.filters = null;\n        /**\n          The polygon of the page.\n          */\n        this.polygon = [];\n        /**\n          The detection status of the page.\n          */\n        this.documentDetectionStatus = null;\n        /**\n          The quality score of the page.\n          */\n        this.documentQuality = null;\n        /**\n          The source of the page image.\n          */\n        this.source = null;\n        /**\n          The URI of the document image.\n          */\n        this.documentImageURI = null;\n        /**\n          The URI of the unfiltered document image.\n          */\n        this.unfilteredDocumentImageURI = null;\n        /**\n          The URI of the document image preview.\n          */\n        this.documentImagePreviewURI = null;\n        if (source.uuid !== undefined) {\n            this.uuid = source.uuid;\n        }\n        else {\n            throw new Error('uuid must be present in constructor argument');\n        }\n        if (source.filters !== undefined) {\n            this.filters =\n                source.filters != null\n                    ? source.filters.map((it) => {\n                        return ParametricFilter.From(it);\n                    })\n                    : null;\n        }\n        if (source.polygon !== undefined) {\n            this.polygon = source.polygon.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        if (source.documentDetectionStatus !== undefined) {\n            this.documentDetectionStatus =\n                source.documentDetectionStatus != null\n                    ? DocumentDetectionStatusValues.includes(source.documentDetectionStatus)\n                        ? source.documentDetectionStatus\n                        : null\n                    : null;\n        }\n        if (source.documentQuality !== undefined) {\n            this.documentQuality =\n                source.documentQuality != null\n                    ? DocumentQualityValues.includes(source.documentQuality)\n                        ? source.documentQuality\n                        : null\n                    : null;\n        }\n        if (source.source !== undefined) {\n            this.source =\n                source.source != null ? (PageImageSourceValues.includes(source.source) ? source.source : null) : null;\n        }\n        if (source.originalImageURI !== undefined) {\n            this.originalImageURI = source.originalImageURI;\n        }\n        else {\n            throw new Error('originalImageURI must be present in constructor argument');\n        }\n        if (source.documentImageURI !== undefined) {\n            this.documentImageURI = source.documentImageURI != null ? source.documentImageURI : null;\n        }\n        if (source.unfilteredDocumentImageURI !== undefined) {\n            this.unfilteredDocumentImageURI =\n                source.unfilteredDocumentImageURI != null ? source.unfilteredDocumentImageURI : null;\n        }\n        if (source.documentImagePreviewURI !== undefined) {\n            this.documentImagePreviewURI = source.documentImagePreviewURI != null ? source.documentImagePreviewURI : null;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            uuid: this.uuid,\n            filters: this.filters != null\n                ? this.filters.map((it) => {\n                    return it.serialize(config);\n                })\n                : null,\n            polygon: this.polygon.map((it) => {\n                return it;\n            }),\n            documentDetectionStatus: this.documentDetectionStatus != null ? this.documentDetectionStatus : null,\n            documentQuality: this.documentQuality != null ? this.documentQuality : null,\n            source: this.source != null ? this.source : null,\n            originalImageURI: this.originalImageURI,\n            documentImageURI: this.documentImageURI != null ? this.documentImageURI : null,\n            unfilteredDocumentImageURI: this.unfilteredDocumentImageURI != null ? this.unfilteredDocumentImageURI : null,\n            documentImagePreviewURI: this.documentImagePreviewURI != null ? this.documentImagePreviewURI : null,\n        };\n    }\n}\n//# sourceMappingURL=PageData.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from native/schemas/document/DocumentData.yaml\nimport { PageData } from '../document_scanner/PageData';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nDocument Data.\n*/\nexport class DocumentData extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DocumentData>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          The maximum size of the document image.\n          \n          Default is 0\n          */\n        this.documentImageSizeLimit = 0;\n        if (source.uuid !== undefined) {\n            this.uuid = source.uuid;\n        }\n        else {\n            throw new Error('uuid must be present in constructor argument');\n        }\n        if (source.creationTimestamp !== undefined) {\n            this.creationTimestamp = source.creationTimestamp;\n        }\n        else {\n            throw new Error('creationTimestamp must be present in constructor argument');\n        }\n        if (source.pages !== undefined) {\n            this.pages = source.pages.map((it) => {\n                return new PageData(it);\n            });\n        }\n        else {\n            throw new Error('pages must be present in constructor argument');\n        }\n        if (source.documentImageSizeLimit !== undefined) {\n            this.documentImageSizeLimit = source.documentImageSizeLimit;\n        }\n        if (source.pdfURI !== undefined) {\n            this.pdfURI = source.pdfURI;\n        }\n        else {\n            throw new Error('pdfURI must be present in constructor argument');\n        }\n        if (source.tiffURI !== undefined) {\n            this.tiffURI = source.tiffURI;\n        }\n        else {\n            throw new Error('tiffURI must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            uuid: this.uuid,\n            creationTimestamp: this.creationTimestamp,\n            pages: this.pages.map((it) => {\n                return it.serialize(config);\n            }),\n            documentImageSizeLimit: this.documentImageSizeLimit,\n            pdfURI: this.pdfURI,\n            tiffURI: this.tiffURI,\n        };\n    }\n}\n//# sourceMappingURL=DocumentData.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/EuropeanHealthInsuranceCardTypes.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nThe result of the health insurance card recognition.\n*/\nexport class EuropeanHealthInsuranceCardRecognitionResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<EuropeanHealthInsuranceCardRecognitionResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Recognition status.\n          \n          Default is FAILED_DETECTION\n          */\n        this.status = 'FAILED_DETECTION';\n        if (source.fields !== undefined) {\n            this.fields = source.fields.map((it) => {\n                return new EuropeanHealthInsuranceCardRecognitionResult.Field(it);\n            });\n        }\n        else {\n            throw new Error('fields must be present in constructor argument');\n        }\n        if (source.status !== undefined) {\n            this.status = source.status;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            fields: this.fields.map((it) => {\n                return it.serialize(config);\n            }),\n            status: this.status,\n        };\n    }\n}\n(function (EuropeanHealthInsuranceCardRecognitionResult) {\n    EuropeanHealthInsuranceCardRecognitionResult.RecognitionStatusValues = ['SUCCESS', 'FAILED_DETECTION', 'INCOMPLETE_VALIDATION'];\n    /**\n      Health insurance card field.\n      */\n    class Field extends PartiallyConstructible {\n        /** @param source {@displayType `DeepPartial<Field>`} */\n        constructor(source = {}) {\n            super();\n            /**\n                Field validation status.\n                \n                Default is NOT_VALIDATED\n                */\n            this.validationStatus = 'NOT_VALIDATED';\n            if (source.type !== undefined) {\n                this.type = source.type;\n            }\n            else {\n                throw new Error('type must be present in constructor argument');\n            }\n            if (source.value !== undefined) {\n                this.value = source.value;\n            }\n            else {\n                throw new Error('value must be present in constructor argument');\n            }\n            if (source.confidence !== undefined) {\n                this.confidence = source.confidence;\n            }\n            else {\n                throw new Error('confidence must be present in constructor argument');\n            }\n            if (source.validationStatus !== undefined) {\n                this.validationStatus = source.validationStatus;\n            }\n        }\n        serialize(config = new ToJsonConfiguration()) {\n            return {\n                type: this.type,\n                value: this.value,\n                confidence: this.confidence,\n                validationStatus: this.validationStatus,\n            };\n        }\n    }\n    EuropeanHealthInsuranceCardRecognitionResult.Field = Field;\n    (function (Field) {\n        Field.ValidationStatusValues = ['NOT_VALIDATED', 'FAILURE', 'SUCCESS', 'CONFIRMED'];\n        Field.FieldTypeValues = [\n            'SURNAME',\n            'GIVEN_NAME',\n            'DATE_OF_BIRTH',\n            'PERSONAL_IDENTIFICATION_NUMBER',\n            'INSTITUTION_NUMBER',\n            'INSTITUTION_NAME',\n            'CARD_NUMBER',\n            'CARD_EXPIRATION_DATE',\n            'COUNTRY',\n        ];\n    })(Field = EuropeanHealthInsuranceCardRecognitionResult.Field || (EuropeanHealthInsuranceCardRecognitionResult.Field = {}));\n})(EuropeanHealthInsuranceCardRecognitionResult || (EuropeanHealthInsuranceCardRecognitionResult = {}));\n/**\nConfiguration for the European health insurance card (EHIC) recognizer.\n*/\nexport class EuropeanHealthInsuranceCardRecognizerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<EuropeanHealthInsuranceCardRecognizerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          List of allowed countries for the EHIC. If:\n          - single country: validation rules for the given country are used starting from the first\n                          frame. If the country cannot be inferred or the inferred country doesn't\n                          match the given country, the result of recognize() will be IncompleteValidation.\n          - multiple countries: the country is inferred from the card number first.\n                          Until the country is detected, the document fields are not OCR'd and\n                          accumulated. Once the country is inferred, the field accumulation starts\n                          and the inferred country validation rules are applied.\n                          If the country cannot be inferred or the inferred country doesn't match\n                          any of the countries in the list, the result status will be IncompleteValidation.\n          - empty list: same as \"multiple countries\" with one additional detail.\n          \n          If the country cannot be inferred within `maxCountryDetectionAttempts` successive frames in which the\n          part of the card number that stores the country code was successfully OCR'd, then the country is\n          inferred to be Unknown and no validation rules are applied. Field accumulation then proceeds normally.\n          In this case recognize() can eventually return Success and the document will have a CountryType of Unknown.\n          */\n        this.allowedCountries = [];\n        /**\n          Minimum year of birth.\n          \n          Default is 0\n          */\n        this.minBirthYear = 0;\n        /**\n          Maximum year of birth.\n          \n          Default is 2999\n          */\n        this.maxBirthYear = 2999;\n        /**\n          Minimum card expiration year.\n          \n          Default is 0\n          */\n        this.minExpirationYear = 0;\n        /**\n          Maximum card expiration year.\n          \n          Default is 2999\n          */\n        this.maxExpirationYear = 2999;\n        /**\n          Maximum number of attempts before giving up on country detection. After the specified number of\n          attempts, the country field is considered to be unknown and validation is skipped.\n          This option is ignored if allowedCountries is not empty.\n          \n          Default is 5\n          */\n        this.maxCountryDetectionAttempts = 5;\n        /**\n          Minimum number of accumulated frames that should have equal result for a field.\n          Once satisfied, the corresponding field is considered to be successfully-recognized and won't be considered in the subsequent frames.\n          \n          Default is 4\n          */\n        this.minEqualFrameCount = 4;\n        /**\n          Maximum number of partial frame results to keep in cache while waiting to gather minEqualFrameCount equal results.\n          \n          Default is 10\n          */\n        this.maxAccumulatedFrameCount = 10;\n        if (source.allowedCountries !== undefined) {\n            this.allowedCountries = source.allowedCountries.map((it) => {\n                return it;\n            });\n        }\n        if (source.minBirthYear !== undefined) {\n            this.minBirthYear = source.minBirthYear;\n        }\n        if (source.maxBirthYear !== undefined) {\n            this.maxBirthYear = source.maxBirthYear;\n        }\n        if (source.minExpirationYear !== undefined) {\n            this.minExpirationYear = source.minExpirationYear;\n        }\n        if (source.maxExpirationYear !== undefined) {\n            this.maxExpirationYear = source.maxExpirationYear;\n        }\n        if (source.maxCountryDetectionAttempts !== undefined) {\n            this.maxCountryDetectionAttempts = source.maxCountryDetectionAttempts;\n        }\n        if (source.minEqualFrameCount !== undefined) {\n            this.minEqualFrameCount = source.minEqualFrameCount;\n        }\n        if (source.maxAccumulatedFrameCount !== undefined) {\n            this.maxAccumulatedFrameCount = source.maxAccumulatedFrameCount;\n        }\n    }\n}\n//# sourceMappingURL=EuropeanHealthInsuranceCardTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/MedicalCertificateTypes.yaml\nimport { DocumentDetectionResult } from '../document_scanner/DocumentScannerTypes';\nimport { ImageRef } from '../imageRef/image';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nParameters for the medical certificate scanning. The scanner supports\nForm 1 (Arbeitsunfähigkeitsbescheinigung) and\nForm 21a (Ärztliche Bescheinigung für den Bezug von Krankengeld bei Erkrankung eines Kindes)\nfrom the KBV (Kassenärztliche Bundesvereinigung) list of forms.\n*/\nexport class MedicalCertificateScanningParameters extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificateScanningParameters>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Document will be detected and cropped before recognition.\n          If false, a cropped image of a document is assumed.\n          \n          Default is true\n          */\n        this.shouldCropDocument = true;\n        /**\n          All data in the patient info box will be extracted.\n          If false, the patient info box is ignored.\n          \n          Default is true\n          */\n        this.recognizePatientInfoBox = true;\n        /**\n          Some forms are printed with an extra barcode that encodes the same information as the document.\n          Reading the barcode is more reliable than OCR and is recommended when possible.\n          If false, the barcode will not be scanned.\n          \n          Default is true\n          */\n        this.recognizeBarcode = true;\n        /**\n          If true, cropped document image will be extracted and returned.\n          \n          Default is false\n          */\n        this.extractCroppedImage = false;\n        /**\n          If true, the image is sharpened before processing.\n          \n          Default is false\n          */\n        this.preprocessInput = false;\n        if (source.shouldCropDocument !== undefined) {\n            this.shouldCropDocument = source.shouldCropDocument;\n        }\n        if (source.recognizePatientInfoBox !== undefined) {\n            this.recognizePatientInfoBox = source.recognizePatientInfoBox;\n        }\n        if (source.recognizeBarcode !== undefined) {\n            this.recognizeBarcode = source.recognizeBarcode;\n        }\n        if (source.extractCroppedImage !== undefined) {\n            this.extractCroppedImage = source.extractCroppedImage;\n        }\n        if (source.preprocessInput !== undefined) {\n            this.preprocessInput = source.preprocessInput;\n        }\n    }\n}\nexport const MedicalCertificateCheckBoxTypeValues = [\n    'UNKNOWN',\n    'WORK_ACCIDENT',\n    'ASSIGNED_TO_ACCIDENT_INSURANCE_DOCTOR',\n    'INITIAL_CERTIFICATE',\n    'RENEWED_CERTIFICATE',\n    'INSURED_PAY_CASE',\n    'FINAL_CERTIFICATE',\n    'REQUIRES_CARE_YES',\n    'REQUIRES_CARE_NO',\n    'ACCIDENT_YES',\n    'ACCIDENT_NO',\n    'OTHER_ACCIDENT',\n    'ENTITLEMENT_TO_CONTINUED_PAYMENT_YES',\n    'ENTITLEMENT_TO_CONTINUED_PAYMENT_NO',\n    'SICK_PAY_WAS_CLAIMED_NO',\n    'SICK_PAY_WAS_CLAIMED_YES',\n    'SINGLE_PARENT_NO',\n    'SINGLE_PARENT_YES',\n];\n/**\nStructure to contain full information about found box.\n*/\nexport class MedicalCertificateCheckBox extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificateCheckBox>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Box type.\n          \n          Default is UNKNOWN\n          */\n        this.type = 'UNKNOWN';\n        /**\n          True if the box is checked.\n          \n          Default is false\n          */\n        this.checked = false;\n        /**\n          Confidence of the checked/unchecked prediction.\n          \n          Default is 0.0\n          */\n        this.checkedConfidence = 0.0;\n        if (source.type !== undefined) {\n            this.type = source.type;\n        }\n        if (source.checked !== undefined) {\n            this.checked = source.checked;\n        }\n        if (source.checkedConfidence !== undefined) {\n            this.checkedConfidence = source.checkedConfidence;\n        }\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type,\n            checked: this.checked,\n            checkedConfidence: this.checkedConfidence,\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n        };\n    }\n}\nexport const MedicalCertificateDateRecordTypeValues = [\n    'INCAPABLE_OF_WORK_SINCE',\n    'INCAPABLE_OF_WORK_UNTIL',\n    'DIAGNOSED_ON',\n    'DOCUMENT_DATE',\n    'BIRTH_DATE',\n    'CHILD_NEEDS_CARE_FROM',\n    'CHILD_NEEDS_CARE_UNTIL',\n    'UNDEFINED',\n];\n/**\nStructure to contain date record information.\n*/\nexport class MedicalCertificateDateRecord extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificateDateRecord>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Validated date string.\n          \n          Default is \"\"\n          */\n        this.value = '';\n        /**\n          Raw date string.\n          \n          Default is \"\"\n          */\n        this.rawString = '';\n        /**\n          Date type.\n          \n          Default is UNDEFINED\n          */\n        this.type = 'UNDEFINED';\n        /**\n          Confidence in the recognized value.\n          \n          Default is 0.0\n          */\n        this.recognitionConfidence = 0.0;\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        if (source.rawString !== undefined) {\n            this.rawString = source.rawString;\n        }\n        if (source.type !== undefined) {\n            this.type = source.type;\n        }\n        if (source.recognitionConfidence !== undefined) {\n            this.recognitionConfidence = source.recognitionConfidence;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n            value: this.value,\n            rawString: this.rawString,\n            type: this.type,\n            recognitionConfidence: this.recognitionConfidence,\n        };\n    }\n}\nexport const MedicalCertificatePatientInfoFieldTypeValues = [\n    'INSURANCE_PROVIDER',\n    'FIRST_NAME',\n    'LAST_NAME',\n    'ADDRESS_STRING1',\n    'ADDRESS_STRING2',\n    'DIAGNOSE',\n    'HEALTH_INSURANCE_NUMBER',\n    'INSURED_PERSON_NUMBER',\n    'STATUS',\n    'PLACE_OF_OPERATION_NUMBER',\n    'DOCTOR_NUMBER',\n    'UNDEFINED',\n];\n/**\nPatient information field.\n*/\nexport class MedicalCertificatePatientInfoField extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificatePatientInfoField>`} */\n    constructor(source = {}) {\n        super();\n        if (source.type !== undefined) {\n            this.type = source.type;\n        }\n        else {\n            throw new Error('type must be present in constructor argument');\n        }\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n        if (source.recognitionConfidence !== undefined) {\n            this.recognitionConfidence = source.recognitionConfidence;\n        }\n        else {\n            throw new Error('recognitionConfidence must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            type: this.type,\n            value: this.value,\n            recognitionConfidence: this.recognitionConfidence,\n        };\n    }\n}\n/**\nPatient information box.\n*/\nexport class MedicalCertificatePatientInfoBox extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificatePatientInfoBox>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Whether the patient info box has contents.\n          \n          Default is false\n          */\n        this.hasContents = false;\n        if (source.quad !== undefined) {\n            this.quad = source.quad.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('quad must be present in constructor argument');\n        }\n        if (source.fields !== undefined) {\n            this.fields = source.fields.map((it) => {\n                return new MedicalCertificatePatientInfoField(it);\n            });\n        }\n        else {\n            throw new Error('fields must be present in constructor argument');\n        }\n        if (source.hasContents !== undefined) {\n            this.hasContents = source.hasContents;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            quad: this.quad.map((it) => {\n                return it;\n            }),\n            fields: this.fields.map((it) => {\n                return it.serialize(config);\n            }),\n            hasContents: this.hasContents,\n        };\n    }\n}\nexport const MedicalCertificateFormTypeValues = [\n    'UNKNOWN',\n    'FORM_1A',\n    'FORM_1B',\n    'FORM_1C',\n    'FORM_1D',\n    'FORM_21A',\n    'FORM_21A_BACK',\n    'FORM_1B_CUSTOM',\n];\n/**\nThe result of the medical certificate scanning.\n*/\nexport class MedicalCertificateScanningResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MedicalCertificateScanningResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          True if scanning was successful.\n          \n          Default is false\n          */\n        this.scanningSuccessful = false;\n        /**\n          Form type.\n          \n          Default is UNKNOWN\n          */\n        this.formType = 'UNKNOWN';\n        /**\n          The number of 90-degree clockwise rotations that were applied to the original image.\n          The same number of counter-clockwise rotations are necessary to make the image upright again.\n          \n          Default is 0\n          */\n        this.clockwiseRotations = 0;\n        /**\n          The cropped image used for recognition.\n          */\n        this.croppedImage = null;\n        /**\n          The scale factor used to scale the image to the recognition size.\n          \n          Default is 1.0\n          */\n        this.scaleX = 1.0;\n        /**\n          The scale factor used to scale the image to the recognition size.\n          \n          Default is 1.0\n          */\n        this.scaleY = 1.0;\n        this._released = false;\n        if (source.scanningSuccessful !== undefined) {\n            this.scanningSuccessful = source.scanningSuccessful;\n        }\n        if (source.patientInfoBox !== undefined) {\n            this.patientInfoBox = new MedicalCertificatePatientInfoBox(source.patientInfoBox);\n        }\n        else {\n            throw new Error('patientInfoBox must be present in constructor argument');\n        }\n        if (source.checkBoxes !== undefined) {\n            this.checkBoxes = source.checkBoxes.map((it) => {\n                return new MedicalCertificateCheckBox(it);\n            });\n        }\n        else {\n            throw new Error('checkBoxes must be present in constructor argument');\n        }\n        if (source.dates !== undefined) {\n            this.dates = source.dates.map((it) => {\n                return new MedicalCertificateDateRecord(it);\n            });\n        }\n        else {\n            throw new Error('dates must be present in constructor argument');\n        }\n        if (source.formType !== undefined) {\n            this.formType = source.formType;\n        }\n        if (source.clockwiseRotations !== undefined) {\n            this.clockwiseRotations = source.clockwiseRotations;\n        }\n        if (source.croppedImage !== undefined) {\n            this.croppedImage = source.croppedImage != null ? ImageRef.From(source.croppedImage) : null;\n        }\n        if (source.scaleX !== undefined) {\n            this.scaleX = source.scaleX;\n        }\n        if (source.scaleY !== undefined) {\n            this.scaleY = source.scaleY;\n        }\n        if (source.documentDetectionResult !== undefined) {\n            this.documentDetectionResult =\n                source.documentDetectionResult != null ? new DocumentDetectionResult(source.documentDetectionResult) : null;\n        }\n        else {\n            throw new Error('documentDetectionResult must be present in constructor argument');\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            scanningSuccessful: this.scanningSuccessful,\n            patientInfoBox: this.patientInfoBox.serialize(config),\n            checkBoxes: this.checkBoxes.map((it) => {\n                return it.serialize(config);\n            }),\n            dates: this.dates.map((it) => {\n                return it.serialize(config);\n            }),\n            formType: this.formType,\n            clockwiseRotations: this.clockwiseRotations,\n            croppedImage: config.serializeImages\n                ? this.croppedImage != null\n                    ? await this.croppedImage.serialize(config.imageSerializationMode)\n                    : null\n                : undefined,\n            scaleX: this.scaleX,\n            scaleY: this.scaleY,\n            documentDetectionResult: this.documentDetectionResult != null ? this.documentDetectionResult.serialize(config) : null,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.croppedImage != null) {\n                this.croppedImage.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.croppedImage != null) {\n            await this.croppedImage.encodeInPlace();\n        }\n    }\n}\n//# sourceMappingURL=MedicalCertificateTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/MRZTypes.yaml\nimport { GenericDocument } from '../documents/GenericDocument';\nimport { AccumulatedResultsVerifierConfiguration } from '../frame_accumulation/FrameAccumulationTypes';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const MrzDocumentTypeValues = [\n    'UNKNOWN',\n    'CREW_MEMBER_CERTIFICATE',\n    'ID_CARD',\n    'PASSPORT',\n    'VISA',\n    'CH_DRIVING_LICENSE',\n];\n/**\nContainer for result of MRZ scanning attempt.\n*/\nexport class MrzScannerResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MrzScannerResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Scanning successful.\n          \n          Default is false\n          */\n        this.success = false;\n        this._released = false;\n        if (source.success !== undefined) {\n            this.success = source.success;\n        }\n        if (source.rawMRZ !== undefined) {\n            this.rawMRZ = source.rawMRZ;\n        }\n        else {\n            throw new Error('rawMRZ must be present in constructor argument');\n        }\n        if (source.document !== undefined) {\n            this.document = source.document != null ? new GenericDocument(source.document) : null;\n        }\n        else {\n            throw new Error('document must be present in constructor argument');\n        }\n    }\n    async serialize(config = new ToJsonConfiguration()) {\n        return {\n            success: this.success,\n            rawMRZ: this.rawMRZ,\n            document: this.document != null ? await this.document.serialize(config) : null,\n        };\n    }\n    release() {\n        if (this._released) {\n            return;\n        }\n        {\n            if (this.document != null) {\n                this.document.release();\n            }\n        }\n        this._released = true;\n    }\n    async encodeImages() {\n        if (this.document != null) {\n            await this.document.encodeImages();\n        }\n    }\n}\nexport const MrzIncompleteResultHandlingValues = ['ACCEPT', 'REJECT'];\nexport const MrzScanningModeValues = ['LIVE', 'SINGLE_SHOT'];\n/**\nConfiguration for MRZ scanner.\n*/\nexport class MrzScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<MrzScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Configure the frame accumulation process.\n          */\n        this.frameAccumulationConfiguration = new AccumulatedResultsVerifierConfiguration({});\n        /**\n          Enable MRZ detection. If disabled, the scanner skips the detection step and assumes that the input image is a crop of the MRZ area.\n          \n          Default is true\n          */\n        this.enableDetection = true;\n        /**\n          Defines how to handle incomplete MRZ results (e.g. caused by failed validation).\n          \n          Default is REJECT\n          */\n        this.incompleteResultHandling = 'REJECT';\n        /**\n          If true, crops of the detected MRZ and its fields will be returned in the result.\n          \n          Default is false\n          */\n        this.returnCrops = false;\n        if (source.frameAccumulationConfiguration !== undefined) {\n            this.frameAccumulationConfiguration = new AccumulatedResultsVerifierConfiguration(source.frameAccumulationConfiguration);\n        }\n        if (source.enableDetection !== undefined) {\n            this.enableDetection = source.enableDetection;\n        }\n        if (source.incompleteResultHandling !== undefined) {\n            this.incompleteResultHandling = source.incompleteResultHandling;\n        }\n        if (source.returnCrops !== undefined) {\n            this.returnCrops = source.returnCrops;\n        }\n    }\n}\n//# sourceMappingURL=MrzTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/TextPatternScannerTypes.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const PatternGrammarValues = ['WILDCARD', 'REGEX'];\n/**\nStructure containing recognized word text and bounds.\n*/\nexport class WordBox extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<WordBox>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Confidence of the recognition.\n          \n          Default is 0.0\n          */\n        this.recognitionConfidence = 0.0;\n        if (source.text !== undefined) {\n            this.text = source.text;\n        }\n        else {\n            throw new Error('text must be present in constructor argument');\n        }\n        if (source.boundingRect !== undefined) {\n            this.boundingRect = {\n                x: source.boundingRect.x,\n                y: source.boundingRect.y,\n                width: source.boundingRect.width,\n                height: source.boundingRect.height,\n            };\n        }\n        else {\n            throw new Error('boundingRect must be present in constructor argument');\n        }\n        if (source.recognitionConfidence !== undefined) {\n            this.recognitionConfidence = source.recognitionConfidence;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            text: this.text,\n            boundingRect: this.boundingRect,\n            recognitionConfidence: this.recognitionConfidence,\n        };\n    }\n}\n/**\nStructure containing recognized symbol text and bounds.\n*/\nexport class SymbolBox extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<SymbolBox>`} */\n    constructor(source = {}) {\n        super();\n        if (source.symbol !== undefined) {\n            this.symbol = source.symbol;\n        }\n        else {\n            throw new Error('symbol must be present in constructor argument');\n        }\n        if (source.boundingRect !== undefined) {\n            this.boundingRect = {\n                x: source.boundingRect.x,\n                y: source.boundingRect.y,\n                width: source.boundingRect.width,\n                height: source.boundingRect.height,\n            };\n        }\n        else {\n            throw new Error('boundingRect must be present in constructor argument');\n        }\n        if (source.recognitionConfidence !== undefined) {\n            this.recognitionConfidence = source.recognitionConfidence;\n        }\n        else {\n            throw new Error('recognitionConfidence must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            symbol: this.symbol,\n            boundingRect: this.boundingRect,\n            recognitionConfidence: this.recognitionConfidence,\n        };\n    }\n}\n/**\nThe result of the text line recognition.\n*/\nexport class TextPatternScannerResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<TextPatternScannerResult>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Confidence of the recognition.\n          \n          Default is 0.0\n          */\n        this.confidence = 0.0;\n        /**\n          Whether the validation was successful.\n          \n          Default is false\n          */\n        this.validationSuccessful = false;\n        if (source.rawText !== undefined) {\n            this.rawText = source.rawText;\n        }\n        else {\n            throw new Error('rawText must be present in constructor argument');\n        }\n        if (source.wordBoxes !== undefined) {\n            this.wordBoxes = source.wordBoxes.map((it) => {\n                return new WordBox(it);\n            });\n        }\n        else {\n            throw new Error('wordBoxes must be present in constructor argument');\n        }\n        if (source.symbolBoxes !== undefined) {\n            this.symbolBoxes = source.symbolBoxes.map((it) => {\n                return new SymbolBox(it);\n            });\n        }\n        else {\n            throw new Error('symbolBoxes must be present in constructor argument');\n        }\n        if (source.confidence !== undefined) {\n            this.confidence = source.confidence;\n        }\n        if (source.validationSuccessful !== undefined) {\n            this.validationSuccessful = source.validationSuccessful;\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            rawText: this.rawText,\n            wordBoxes: this.wordBoxes.map((it) => {\n                return it.serialize(config);\n            }),\n            symbolBoxes: this.symbolBoxes.map((it) => {\n                return it.serialize(config);\n            }),\n            confidence: this.confidence,\n            validationSuccessful: this.validationSuccessful,\n        };\n    }\n}\n/** @internal */\nexport var ContentValidator;\n(function (ContentValidator) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'DefaultContentValidator':\n                return new DefaultContentValidator(source);\n            case 'PatternContentValidator':\n                return new PatternContentValidator(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    ContentValidator.From = From;\n})(ContentValidator || (ContentValidator = {}));\n/**\nDefault content validator. Accepts only non-empty strings.\n*/\nexport class DefaultContentValidator extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<DefaultContentValidator>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'DefaultContentValidator';\n        /**\n          OCR whitelist. Empty string means no restriction.\n          \n          Default is \"\"\n          */\n        this.allowedCharacters = '';\n        if (source.allowedCharacters !== undefined) {\n            this.allowedCharacters = source.allowedCharacters;\n        }\n    }\n}\n/**\nPattern content validator.\n*/\nexport class PatternContentValidator extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<PatternContentValidator>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'PatternContentValidator';\n        /**\n          OCR whitelist. Empty string means no restriction.\n          \n          Default is \"\"\n          */\n        this.allowedCharacters = '';\n        /**\n          Whether the pattern should match the whole string or just a substring.\n          \n          Default is false\n          */\n        this.matchSubstring = false;\n        /**\n          Grammar of pattern matching.\n          \n          Default is WILDCARD\n          */\n        this.patternGrammar = 'WILDCARD';\n        if (source.allowedCharacters !== undefined) {\n            this.allowedCharacters = source.allowedCharacters;\n        }\n        if (source.pattern !== undefined) {\n            this.pattern = source.pattern;\n        }\n        else {\n            throw new Error('pattern must be present in constructor argument');\n        }\n        if (source.matchSubstring !== undefined) {\n            this.matchSubstring = source.matchSubstring;\n        }\n        if (source.patternGrammar !== undefined) {\n            this.patternGrammar = source.patternGrammar;\n        }\n    }\n}\n/**\nConfiguration for the text pattern scanner.\n*/\nexport class TextPatternScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<TextPatternScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Maximum image size (height or width) for OCR process. 0 - do not rescale.\n          \n          Default is 0\n          */\n        this.ocrResolutionLimit = 0;\n        /**\n          Maximum number of accumulated frames to inspect before actual result is returned.\n          \n          Default is 3\n          */\n        this.maximumNumberOfAccumulatedFrames = 3;\n        /**\n          Minimum number of accumulated frames that have equal result.\n          \n          Default is 2\n          */\n        this.minimumNumberOfRequiredFramesWithEqualScanningResult = 2;\n        /**\n          Content validator.\n          */\n        this.validator = new DefaultContentValidator({});\n        if (source.ocrResolutionLimit !== undefined) {\n            this.ocrResolutionLimit = source.ocrResolutionLimit;\n        }\n        if (source.maximumNumberOfAccumulatedFrames !== undefined) {\n            this.maximumNumberOfAccumulatedFrames = source.maximumNumberOfAccumulatedFrames;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualScanningResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualScanningResult =\n                source.minimumNumberOfRequiredFramesWithEqualScanningResult;\n        }\n        if (source.validator !== undefined) {\n            this.validator = ContentValidator.From(source.validator);\n        }\n    }\n}\n//# sourceMappingURL=TextPatternScannerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/VINScannerTypes.yaml\nimport { TextPatternScannerResult } from '../text_pattern_scanner/TextPatternScannerTypes';\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const VinBarcodeExtractionStatusValues = [\n    'SUCCESS',\n    'BARCODE_WITHOUT_VIN',\n    'NO_BARCODE_FOUND',\n    'BARCODE_EXTRACTION_DISABLED',\n];\n/**\nResult of the barcode scanner.\n*/\nexport class VinBarcodeResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<VinBarcodeResult>`} */\n    constructor(source = {}) {\n        super();\n        if (source.extractedVIN !== undefined) {\n            this.extractedVIN = source.extractedVIN;\n        }\n        else {\n            throw new Error('extractedVIN must be present in constructor argument');\n        }\n        if (source.rectangle !== undefined) {\n            this.rectangle = source.rectangle.map((it) => {\n                return { x: it.x, y: it.y };\n            });\n        }\n        else {\n            throw new Error('rectangle must be present in constructor argument');\n        }\n        if (source.status !== undefined) {\n            this.status = source.status;\n        }\n        else {\n            throw new Error('status must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            extractedVIN: this.extractedVIN,\n            rectangle: this.rectangle.map((it) => {\n                return it;\n            }),\n            status: this.status,\n        };\n    }\n}\n/**\nResult of the VIN scanner.\n*/\nexport class VinScannerResult extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<VinScannerResult>`} */\n    constructor(source = {}) {\n        super();\n        if (source.textResult !== undefined) {\n            this.textResult = new TextPatternScannerResult(source.textResult);\n        }\n        else {\n            throw new Error('textResult must be present in constructor argument');\n        }\n        if (source.barcodeResult !== undefined) {\n            this.barcodeResult = new VinBarcodeResult(source.barcodeResult);\n        }\n        else {\n            throw new Error('barcodeResult must be present in constructor argument');\n        }\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {\n            textResult: this.textResult.serialize(config),\n            barcodeResult: this.barcodeResult.serialize(config),\n        };\n    }\n}\n/**\nConfiguration for the VIN scanner.\n*/\nexport class VinScannerConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<VinScannerConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          If true, the VIN scanner will also extract VINs from barcodes.\n          Requires a license that allows barcode scanning in addition to VIN scanning.\n          \n          Default is false\n          */\n        this.extractVINFromBarcode = false;\n        /**\n          Maximum image size (height or width) for OCR process. 0 - do not rescale.\n          \n          Default is 0\n          */\n        this.ocrResolutionLimit = 0;\n        /**\n          Maximum number of accumulated frames to inspect before actual result is returned.\n          \n          Default is 3\n          */\n        this.maximumNumberOfAccumulatedFrames = 3;\n        /**\n          Minimum number of accumulated frames that have equal result.\n          \n          Default is 2\n          */\n        this.minimumNumberOfRequiredFramesWithEqualScanningResult = 2;\n        if (source.extractVINFromBarcode !== undefined) {\n            this.extractVINFromBarcode = source.extractVINFromBarcode;\n        }\n        if (source.ocrResolutionLimit !== undefined) {\n            this.ocrResolutionLimit = source.ocrResolutionLimit;\n        }\n        if (source.maximumNumberOfAccumulatedFrames !== undefined) {\n            this.maximumNumberOfAccumulatedFrames = source.maximumNumberOfAccumulatedFrames;\n        }\n        if (source.minimumNumberOfRequiredFramesWithEqualScanningResult !== undefined) {\n            this.minimumNumberOfRequiredFramesWithEqualScanningResult =\n                source.minimumNumberOfRequiredFramesWithEqualScanningResult;\n        }\n    }\n}\n//# sourceMappingURL=VinScannerTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/BarcodeDocumentTypes.yaml\nimport { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const BarcodeDocumentFormatValues = [\n    'AAMVA',\n    'BOARDING_PASS',\n    'DE_MEDICAL_PLAN',\n    'MEDICAL_CERTIFICATE',\n    'ID_CARD_PDF_417',\n    'SEPA',\n    'SWISS_QR',\n    'VCARD',\n    'GS1',\n    'HIBC',\n];\n/**\nBarcode document formats.\n*/\nexport class BarcodeDocumentFormats extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<BarcodeDocumentFormats>`} */\n    constructor(source = {}) {\n        super();\n    }\n    serialize(config = new ToJsonConfiguration()) {\n        return {};\n    }\n}\n(function (BarcodeDocumentFormats) {\n    /**\n      All barcode document formats.\n      */\n    BarcodeDocumentFormats.all = [\n        'AAMVA',\n        'BOARDING_PASS',\n        'DE_MEDICAL_PLAN',\n        'MEDICAL_CERTIFICATE',\n        'ID_CARD_PDF_417',\n        'SEPA',\n        'SWISS_QR',\n        'VCARD',\n        'GS1',\n        'HIBC',\n    ];\n    /**\n      Barcode types that are used to encode documents.\n      */\n    BarcodeDocumentFormats.documentBarcodeFormats = {\n        AAMVA: ['PDF_417'],\n        ID_CARD_PDF_417: ['PDF_417'],\n        SEPA: ['QR_CODE'],\n        MEDICAL_CERTIFICATE: ['PDF_417'],\n        DE_MEDICAL_PLAN: ['DATA_MATRIX'],\n        BOARDING_PASS: ['PDF_417', 'AZTEC', 'QR_CODE'],\n        VCARD: ['QR_CODE', 'DATA_MATRIX'],\n        SWISS_QR: ['QR_CODE'],\n        GS1: [\n            'CODE_128',\n            'AZTEC',\n            'DATA_MATRIX',\n            'DATABAR',\n            'DATABAR_EXPANDED',\n            'DATABAR_LIMITED',\n            'EAN_13',\n            'EAN_8',\n            'GS1_COMPOSITE',\n            'ITF',\n            'MICRO_PDF_417',\n            'PDF_417',\n            'QR_CODE',\n            'UPC_A',\n            'UPC_E',\n        ],\n        HIBC: ['CODE_39', 'CODE_128', 'AZTEC', 'DATA_MATRIX', 'MICRO_PDF_417', 'PDF_417', 'QR_CODE'],\n    };\n})(BarcodeDocumentFormats || (BarcodeDocumentFormats = {}));\n//# sourceMappingURL=BarcodeDocumentTypes.js.map","/// Auto-generated. Modifications will be overwritten.\n/// Generated from core/document-schemas/BarcodeDocumentModel.yaml\nexport const BoardingPassDocumentType = 'BoardingPass';\nexport const BoardingPassLegDocumentType = 'Leg';\nexport const SwissQRDocumentType = 'SwissQR';\nexport const DEMedicalPlanDocumentType = 'DEMedicalPlan';\nexport const DEMedicalPlanPatientDocumentType = 'Patient';\nexport const DEMedicalPlanDoctorDocumentType = 'Doctor';\nexport const DEMedicalPlanSubheadingDocumentType = 'Subheading';\nexport const DEMedicalPlanSubheadingMedicineDocumentType = 'Medicine';\nexport const DEMedicalPlanSubheadingMedicineSubstanceDocumentType = 'Substance';\nexport const DEMedicalPlanSubheadingPrescriptionDocumentType = 'Prescription';\nexport const IDCardPDF417DocumentType = 'IDCardPDF417';\nexport const GS1DocumentType = 'GS1';\nexport const GS1ElementDocumentType = 'Element';\nexport const GS1ElementValidationErrorDocumentType = 'ValidationError';\nexport const SEPADocumentType = 'SEPA';\nexport const MedicalCertificateDocumentType = 'MedicalCertificate';\nexport const VCardDocumentType = 'VCard';\nexport const VCardEntryDocumentType = 'Entry';\nexport const VCardVersionDocumentType = 'Version';\nexport const VCardSourceDocumentType = 'Source';\nexport const VCardKindDocumentType = 'Kind';\nexport const VCardXMLDocumentType = 'XML';\nexport const VCardNameDocumentType = 'Name';\nexport const VCardFormattedNameDocumentType = 'FormattedName';\nexport const VCardNicknameDocumentType = 'Nickname';\nexport const VCardBirthdayDocumentType = 'Birthday';\nexport const VCardAnniversaryDocumentType = 'Anniversary';\nexport const VCardGenderDocumentType = 'Gender';\nexport const VCardDeliveryAddressDocumentType = 'DeliveryAddress';\nexport const VCardLabelDocumentType = 'Label';\nexport const VCardPhotoDocumentType = 'Photo';\nexport const VCardTelephoneNumberDocumentType = 'TelephoneNumber';\nexport const VCardEmailDocumentType = 'Email';\nexport const VCardIMPPDocumentType = 'IMPP';\nexport const VCardLanguagesDocumentType = 'Languages';\nexport const VCardTimeZoneDocumentType = 'TimeZone';\nexport const VCardGeoLocationDocumentType = 'GeoLocation';\nexport const VCardTitleDocumentType = 'Title';\nexport const VCardRoleDocumentType = 'Role';\nexport const VCardLogoDocumentType = 'Logo';\nexport const VCardAgentDocumentType = 'Agent';\nexport const VCardOrganisationDocumentType = 'Organisation';\nexport const VCardMemberDocumentType = 'Member';\nexport const VCardRelatedDocumentType = 'Related';\nexport const VCardCategoriesDocumentType = 'Categories';\nexport const VCardNoteDocumentType = 'Note';\nexport const VCardProductIdDocumentType = 'ProductId';\nexport const VCardRevisionDocumentType = 'Revision';\nexport const VCardSoundDocumentType = 'Sound';\nexport const VCardUIDDocumentType = 'UID';\nexport const VCardClientPIDMapDocumentType = 'ClientPIDMap';\nexport const VCardURLDocumentType = 'URL';\nexport const VCardPublicKeyDocumentType = 'PublicKey';\nexport const VCardBusyTimeURLDocumentType = 'BusyTimeURL';\nexport const VCardCalendarURIForRequestsDocumentType = 'CalendarURIForRequests';\nexport const VCardCalendarURIDocumentType = 'CalendarURI';\nexport const VCardSortStringDocumentType = 'SortString';\nexport const VCardClassificationDocumentType = 'Classification';\nexport const VCardCustomDocumentType = 'Custom';\nexport const AAMVADocumentType = 'AAMVA';\nexport const AAMVATitleDataDocumentType = 'TitleData';\nexport const AAMVARegistrationDataDocumentType = 'RegistrationData';\nexport const AAMVAMotorCarrierDataDocumentType = 'MotorCarrierData';\nexport const AAMVARegistrantAndVehicleDataDocumentType = 'RegistrantAndVehicleData';\nexport const AAMVAVehicleOwnerDataDocumentType = 'VehicleOwnerData';\nexport const AAMVAVehicleDataDocumentType = 'VehicleData';\nexport const AAMVAVehicleSafetyInspectionDataDocumentType = 'VehicleSafetyInspectionData';\nexport const AAMVADLIDDocumentType = 'DLID';\nexport const AAMVADriverLicenseDocumentType = 'DriverLicense';\nexport const AAMVAIDCardDocumentType = 'IDCard';\nexport const AAMVAEnhancedDriverLicenseDocumentType = 'EnhancedDriverLicense';\nexport const AAMVARawDocumentDocumentType = 'RawDocument';\nexport const HIBCDocumentType = 'HIBC';\n/** Boarding Pass */\nexport class BoardingPass {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return BoardingPassDocumentType;\n    }\n    /** Electronic Ticket */\n    get electronicTicketIndicator() {\n        return this.document.fields.find((f) => f.type.name === 'ElectronicTicketIndicator');\n    }\n    /** Format Code. */\n    get formatCode() {\n        return this.document.fields.find((f) => f.type.name === 'FormatCode');\n    }\n    /** Number of encoded legs. */\n    get numberOfLegs() {\n        return this.document.fields.find((f) => f.type.name === 'NumberOfLegs');\n    }\n    /** Passenger Name */\n    get passengerName() {\n        return this.document.fields.find((f) => f.type.name === 'PassengerName');\n    }\n    /** Security Data */\n    get securityData() {\n        return this.document.fields.find((f) => f.type.name === 'SecurityData');\n    }\n    /** Security Data Type */\n    get securityDataType() {\n        return this.document.fields.find((f) => f.type.name === 'SecurityDataType');\n    }\n    /** An array of all children of type \"Leg\". */\n    get legs() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Leg')\n            .map((c) => new BoardingPass.Leg(c));\n    }\n}\n(function (BoardingPass) {\n    /** Leg of the journey */\n    class Leg {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return BoardingPassLegDocumentType;\n        }\n        /** Airline Designator Of Boarding Pass Issuer */\n        get airlineDesignatorOfBoardingPassIssuer() {\n            return this.document.fields.find((f) => f.type.name === 'AirlineDesignatorOfBoardingPassIssuer');\n        }\n        /** Airline Numeric Code */\n        get airlineNumericCode() {\n            return this.document.fields.find((f) => f.type.name === 'AirlineNumericCode');\n        }\n        /** Baggage Tag License Plate Numbers */\n        get baggageTagLicensePlateNumbers() {\n            return this.document.fields.find((f) => f.type.name === 'BaggageTagLicensePlateNumbers');\n        }\n        /** Check In Sequence Number */\n        get checkInSequenceNumber() {\n            return this.document.fields.find((f) => f.type.name === 'CheckInSequenceNumber');\n        }\n        /** Compartment Code */\n        get compartmentCode() {\n            return this.document.fields.find((f) => f.type.name === 'CompartmentCode');\n        }\n        /** Date Of Boarding Pass Issuance Julian */\n        get dateOfBoardingPassIssuanceJulian() {\n            return this.document.fields.find((f) => f.type.name === 'DateOfBoardingPassIssuanceJulian');\n        }\n        /** Date Of Flight Julian */\n        get dateOfFlightJulian() {\n            return this.document.fields.find((f) => f.type.name === 'DateOfFlightJulian');\n        }\n        /** Departure Airport Code */\n        get departureAirportCode() {\n            return this.document.fields.find((f) => f.type.name === 'DepartureAirportCode');\n        }\n        /** Destination Airport Code */\n        get destinationAirportCode() {\n            return this.document.fields.find((f) => f.type.name === 'DestinationAirportCode');\n        }\n        /** Document Form Serial Number */\n        get documentFormSerialNumber() {\n            return this.document.fields.find((f) => f.type.name === 'DocumentFormSerialNumber');\n        }\n        /** Document Type */\n        get documentType() {\n            return this.document.fields.find((f) => f.type.name === 'DocumentType');\n        }\n        /** Fast Track */\n        get fastTrack() {\n            return this.document.fields.find((f) => f.type.name === 'FastTrack');\n        }\n        /** First Non Consecutive Baggage Tag License Plate Number */\n        get firstNonConsecutiveBaggageTagLicensePlateNumber() {\n            return this.document.fields.find((f) => f.type.name === 'FirstNonConsecutiveBaggageTagLicensePlateNumber');\n        }\n        /** Flight Number */\n        get flightNumber() {\n            return this.document.fields.find((f) => f.type.name === 'FlightNumber');\n        }\n        /** For Individual Airline Use */\n        get forIndividualAirlineUse() {\n            return this.document.fields.find((f) => f.type.name === 'ForIndividualAirlineUse');\n        }\n        /** Free Baggage Allowance */\n        get freeBaggageAllowance() {\n            return this.document.fields.find((f) => f.type.name === 'FreeBaggageAllowance');\n        }\n        /** Frequent Flyer Airline Designator */\n        get frequentFlyerAirlineDesignator() {\n            return this.document.fields.find((f) => f.type.name === 'FrequentFlyerAirlineDesignator');\n        }\n        /** Frequent Flyer Number */\n        get frequentFlyerNumber() {\n            return this.document.fields.find((f) => f.type.name === 'FrequentFlyerNumber');\n        }\n        /** IDAD Indicator */\n        get idadIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'IDADIndicator');\n        }\n        /** International Documentation Verification */\n        get internationalDocumentationVerification() {\n            return this.document.fields.find((f) => f.type.name === 'InternationalDocumentationVerification');\n        }\n        /** Marketing Carrier Designator */\n        get marketingCarrierDesignator() {\n            return this.document.fields.find((f) => f.type.name === 'MarketingCarrierDesignator');\n        }\n        /** Operating Carrier Designator */\n        get operatingCarrierDesignator() {\n            return this.document.fields.find((f) => f.type.name === 'OperatingCarrierDesignator');\n        }\n        /** Operating Carrier PNR Code */\n        get operatingCarrierPNRCode() {\n            return this.document.fields.find((f) => f.type.name === 'OperatingCarrierPNRCode');\n        }\n        /** Passenger Description */\n        get passengerDescription() {\n            return this.document.fields.find((f) => f.type.name === 'PassengerDescription');\n        }\n        /** Passenger Status */\n        get passengerStatus() {\n            return this.document.fields.find((f) => f.type.name === 'PassengerStatus');\n        }\n        /** Seat Number */\n        get seatNumber() {\n            return this.document.fields.find((f) => f.type.name === 'SeatNumber');\n        }\n        /** Second Non Consecutive Baggage Tag License Plate Number */\n        get secondNonConsecutiveBaggageTagLicensePlateNumber() {\n            return this.document.fields.find((f) => f.type.name === 'SecondNonConsecutiveBaggageTagLicensePlateNumber');\n        }\n        /** Selectee Indicator */\n        get selecteeIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'SelecteeIndicator');\n        }\n        /** Source Of Boarding Pass Issuance */\n        get sourceOfBoardingPassIssuance() {\n            return this.document.fields.find((f) => f.type.name === 'SourceOfBoardingPassIssuance');\n        }\n        /** Source Of Check In */\n        get sourceOfCheckIn() {\n            return this.document.fields.find((f) => f.type.name === 'SourceOfCheckIn');\n        }\n        /** VersionNumber */\n        get versionNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VersionNumber');\n        }\n    }\n    BoardingPass.Leg = Leg;\n})(BoardingPass || (BoardingPass = {}));\n/** SwissQR */\nexport class SwissQR {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return SwissQRDocumentType;\n    }\n    /** Additional Billing Information */\n    get additionalBillingInformation() {\n        return this.document.fields.find((f) => f.type.name === 'AdditionalBillingInformation');\n    }\n    /** Additional Info Trailer */\n    get additionalInfoTrailer() {\n        return this.document.fields.find((f) => f.type.name === 'AdditionalInfoTrailer');\n    }\n    /** Additional Info Unstructured */\n    get additionalInfoUnstructured() {\n        return this.document.fields.find((f) => f.type.name === 'AdditionalInfoUnstructured');\n    }\n    /** Alternative Procedure Parameter */\n    get alternativeProcedureParameter() {\n        return this.document.fields.find((f) => f.type.name === 'AlternativeProcedureParameter');\n    }\n    /** Amount */\n    get amount() {\n        return this.document.fields.find((f) => f.type.name === 'Amount');\n    }\n    /** Currency */\n    get currency() {\n        return this.document.fields.find((f) => f.type.name === 'Currency');\n    }\n    /** Debtor Address Type */\n    get debtorAddressType() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorAddressType');\n    }\n    /** Debtor Building Or Address Line 2 */\n    get debtorBuildingOrAddressLine2() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorBuildingOrAddressLine2');\n    }\n    /** Debtor Country */\n    get debtorCountry() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorCountry');\n    }\n    /** Debtor Name */\n    get debtorName() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorName');\n    }\n    /** Debtor Place */\n    get debtorPlace() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorPlace');\n    }\n    /** Debtor Postal Code */\n    get debtorPostalCode() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorPostalCode');\n    }\n    /** Debtor Street Or Address Line 1 */\n    get debtorStreetOrAddressLine1() {\n        return this.document.fields.find((f) => f.type.name === 'DebtorStreetOrAddressLine1');\n    }\n    /** Due Date */\n    get dueDate() {\n        return this.document.fields.find((f) => f.type.name === 'DueDate');\n    }\n    /** Encoding */\n    get encoding() {\n        return this.document.fields.find((f) => f.type.name === 'Encoding');\n    }\n    /** Final Payee Address Type */\n    get finalPayeeAddressType() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeeAddressType');\n    }\n    /** Final Payee Building Or Address Line 2 */\n    get finalPayeeBuildingOrAddressLine2() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeeBuildingOrAddressLine2');\n    }\n    /** Final Payee Country */\n    get finalPayeeCountry() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeeCountry');\n    }\n    /** Final Payee Name */\n    get finalPayeeName() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeeName');\n    }\n    /** Final Payee Place */\n    get finalPayeePlace() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeePlace');\n    }\n    /** Final Payee Postal Code */\n    get finalPayeePostalCode() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeePostalCode');\n    }\n    /** Final Payee Street Or Address Line 1 */\n    get finalPayeeStreetOrAddressLine1() {\n        return this.document.fields.find((f) => f.type.name === 'FinalPayeeStreetOrAddressLine1');\n    }\n    /** IBAN */\n    get iban() {\n        return this.document.fields.find((f) => f.type.name === 'IBAN');\n    }\n    /** Major Version */\n    get majorVersion() {\n        return this.document.fields.find((f) => f.type.name === 'MajorVersion');\n    }\n    /** Payee Address Type */\n    get payeeAddressType() {\n        return this.document.fields.find((f) => f.type.name === 'PayeeAddressType');\n    }\n    /** Payee Building Or Address Line 2 */\n    get payeeBuildingOrAddressLine2() {\n        return this.document.fields.find((f) => f.type.name === 'PayeeBuildingOrAddressLine2');\n    }\n    /** Payee Country */\n    get payeeCountry() {\n        return this.document.fields.find((f) => f.type.name === 'PayeeCountry');\n    }\n    /** Payee Name */\n    get payeeName() {\n        return this.document.fields.find((f) => f.type.name === 'PayeeName');\n    }\n    /** Payee Place */\n    get payeePlace() {\n        return this.document.fields.find((f) => f.type.name === 'PayeePlace');\n    }\n    /** Payee Postal Code */\n    get payeePostalCode() {\n        return this.document.fields.find((f) => f.type.name === 'PayeePostalCode');\n    }\n    /** Payee Street Or Address Line 1 */\n    get payeeStreetOrAddressLine1() {\n        return this.document.fields.find((f) => f.type.name === 'PayeeStreetOrAddressLine1');\n    }\n    /** Payment Reference */\n    get paymentReference() {\n        return this.document.fields.find((f) => f.type.name === 'PaymentReference');\n    }\n    /** Payment Reference Type */\n    get paymentReferenceType() {\n        return this.document.fields.find((f) => f.type.name === 'PaymentReferenceType');\n    }\n}\n/** Medical Plan */\nexport class DEMedicalPlan {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DEMedicalPlanDocumentType;\n    }\n    /** Current Page */\n    get currentPage() {\n        return this.document.fields.find((f) => f.type.name === 'CurrentPage');\n    }\n    /** Document Version Number */\n    get documentVersionNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentVersionNumber');\n    }\n    /** GUID */\n    get guid() {\n        return this.document.fields.find((f) => f.type.name === 'GUID');\n    }\n    /** Language Country Code */\n    get languageCountryCode() {\n        return this.document.fields.find((f) => f.type.name === 'LanguageCountryCode');\n    }\n    /** Patch Version Number */\n    get patchVersionNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PatchVersionNumber');\n    }\n    /** Total Number Of Pages */\n    get totalNumberOfPages() {\n        return this.document.fields.find((f) => f.type.name === 'TotalNumberOfPages');\n    }\n    /** The child document of type \"Patient\". */\n    get patient() {\n        const child = this.document.children.find((c) => c.type.name === 'Patient');\n        return new DEMedicalPlan.Patient(child);\n    }\n    /** The child document of type \"Doctor\". */\n    get doctor() {\n        const child = this.document.children.find((c) => c.type.name === 'Doctor');\n        return new DEMedicalPlan.Doctor(child);\n    }\n    /** An array of all children of type \"Subheading\". */\n    get subheadings() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Subheading')\n            .map((c) => new DEMedicalPlan.Subheading(c));\n    }\n}\n(function (DEMedicalPlan) {\n    /** Patient */\n    class Patient {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return DEMedicalPlanPatientDocumentType;\n        }\n        /** Allergies And Intolerances */\n        get allergiesAndIntolerances() {\n            return this.document.fields.find((f) => f.type.name === 'AllergiesAndIntolerances');\n        }\n        /** Birth Date */\n        get birthDate() {\n            return this.document.fields.find((f) => f.type.name === 'BirthDate');\n        }\n        /** Breast Feeding */\n        get breastFeeding() {\n            return this.document.fields.find((f) => f.type.name === 'BreastFeeding');\n        }\n        /** Creatinine Value */\n        get creatinineValue() {\n            return this.document.fields.find((f) => f.type.name === 'CreatinineValue');\n        }\n        /** First Name */\n        get firstName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstName');\n        }\n        /** Gender */\n        get gender() {\n            return this.document.fields.find((f) => f.type.name === 'Gender');\n        }\n        /** Height */\n        get height() {\n            return this.document.fields.find((f) => f.type.name === 'Height');\n        }\n        /** Last Name */\n        get lastName() {\n            return this.document.fields.find((f) => f.type.name === 'LastName');\n        }\n        /** Patient Free Text */\n        get patientFreeText() {\n            return this.document.fields.find((f) => f.type.name === 'PatientFreeText');\n        }\n        /** Patient ID */\n        get patientID() {\n            return this.document.fields.find((f) => f.type.name === 'PatientID');\n        }\n        /** Pre Name */\n        get preName() {\n            return this.document.fields.find((f) => f.type.name === 'PreName');\n        }\n        /** Pregnant */\n        get pregnant() {\n            return this.document.fields.find((f) => f.type.name === 'Pregnant');\n        }\n        /** Name Suffix */\n        get suffix() {\n            return this.document.fields.find((f) => f.type.name === 'Suffix');\n        }\n        /** Title */\n        get title() {\n            return this.document.fields.find((f) => f.type.name === 'Title');\n        }\n        /** Weight */\n        get weight() {\n            return this.document.fields.find((f) => f.type.name === 'Weight');\n        }\n    }\n    DEMedicalPlan.Patient = Patient;\n    /** Doctor */\n    class Doctor {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return DEMedicalPlanDoctorDocumentType;\n        }\n        /** Doctor Number */\n        get doctorNumber() {\n            return this.document.fields.find((f) => f.type.name === 'DoctorNumber');\n        }\n        /** Email */\n        get email() {\n            return this.document.fields.find((f) => f.type.name === 'Email');\n        }\n        /** Hospital ID */\n        get hospitalID() {\n            return this.document.fields.find((f) => f.type.name === 'HospitalID');\n        }\n        /** Issuer Name */\n        get issuerName() {\n            return this.document.fields.find((f) => f.type.name === 'IssuerName');\n        }\n        /** Issuing Date And Time */\n        get issuingDateAndTime() {\n            return this.document.fields.find((f) => f.type.name === 'IssuingDateAndTime');\n        }\n        /** Pharmacy ID */\n        get pharmacyID() {\n            return this.document.fields.find((f) => f.type.name === 'PharmacyID');\n        }\n        /** Place */\n        get place() {\n            return this.document.fields.find((f) => f.type.name === 'Place');\n        }\n        /** Postal Code */\n        get postalCode() {\n            return this.document.fields.find((f) => f.type.name === 'PostalCode');\n        }\n        /** Street */\n        get street() {\n            return this.document.fields.find((f) => f.type.name === 'Street');\n        }\n        /** Telephone Number */\n        get telephoneNumber() {\n            return this.document.fields.find((f) => f.type.name === 'TelephoneNumber');\n        }\n    }\n    DEMedicalPlan.Doctor = Doctor;\n    /** Subheading */\n    class Subheading {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return DEMedicalPlanSubheadingDocumentType;\n        }\n        /** General Note */\n        get generalNotes() {\n            return this.document.fields.filter((f) => f.type.name === 'GeneralNote');\n        }\n        /** Key Words */\n        get keyWords() {\n            return this.document.fields.find((f) => f.type.name === 'KeyWords');\n        }\n        /** Subheading Free Text */\n        get subheadingFreeText() {\n            return this.document.fields.find((f) => f.type.name === 'SubheadingFreeText');\n        }\n        /** An array of all children of type \"Medicine\". */\n        get medicines() {\n            return this.document.children\n                .filter((c) => c.type.name === 'Medicine')\n                .map((c) => new DEMedicalPlan.Subheading.Medicine(c));\n        }\n        /** An array of all children of type \"Prescription\". */\n        get prescriptions() {\n            return this.document.children\n                .filter((c) => c.type.name === 'Prescription')\n                .map((c) => new DEMedicalPlan.Subheading.Prescription(c));\n        }\n    }\n    DEMedicalPlan.Subheading = Subheading;\n    (function (Subheading) {\n        /** Medicine */\n        class Medicine {\n            get document() {\n                return this._document;\n            }\n            constructor(document) {\n                if (document.type.name !== this.requiredDocumentType()) {\n                    throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n                }\n                this._document = document;\n            }\n            requiredDocumentType() {\n                return DEMedicalPlanSubheadingMedicineDocumentType;\n            }\n            /** Dosage Form */\n            get dosageForm() {\n                return this.document.fields.find((f) => f.type.name === 'DosageForm');\n            }\n            /** Dosage Form Free Text */\n            get dosageFormFreeText() {\n                return this.document.fields.find((f) => f.type.name === 'DosageFormFreeText');\n            }\n            /** Dosage Free Text */\n            get dosageFreeText() {\n                return this.document.fields.find((f) => f.type.name === 'DosageFreeText');\n            }\n            /** Dosing Unit */\n            get dosingUnit() {\n                return this.document.fields.find((f) => f.type.name === 'DosingUnit');\n            }\n            /** Dosing Unit Free Text */\n            get dosingUnitFreeText() {\n                return this.document.fields.find((f) => f.type.name === 'DosingUnitFreeText');\n            }\n            /** Drug Name */\n            get drugName() {\n                return this.document.fields.find((f) => f.type.name === 'DrugName');\n            }\n            /** Evening Intake Dose */\n            get evening() {\n                return this.document.fields.find((f) => f.type.name === 'Evening');\n            }\n            /** General Notes */\n            get generalNotes() {\n                return this.document.fields.find((f) => f.type.name === 'GeneralNotes');\n            }\n            /** Midday Intake Dose */\n            get midday() {\n                return this.document.fields.find((f) => f.type.name === 'Midday');\n            }\n            /** Morning Intake Dose */\n            get morning() {\n                return this.document.fields.find((f) => f.type.name === 'Morning');\n            }\n            /** Night Intake Dose */\n            get night() {\n                return this.document.fields.find((f) => f.type.name === 'Night');\n            }\n            /** Pharmaceutical Number */\n            get pharmaceuticalNumber() {\n                return this.document.fields.find((f) => f.type.name === 'PharmaceuticalNumber');\n            }\n            /** Reason For Treatment */\n            get reasonForTreatment() {\n                return this.document.fields.find((f) => f.type.name === 'ReasonForTreatment');\n            }\n            /** Relevant Info */\n            get relevantInfo() {\n                return this.document.fields.find((f) => f.type.name === 'RelevantInfo');\n            }\n            /** An array of all children of type \"Substance\". */\n            get substances() {\n                return this.document.children\n                    .filter((c) => c.type.name === 'Substance')\n                    .map((c) => new DEMedicalPlan.Subheading.Medicine.Substance(c));\n            }\n        }\n        Subheading.Medicine = Medicine;\n        (function (Medicine) {\n            /** Substance */\n            class Substance {\n                get document() {\n                    return this._document;\n                }\n                constructor(document) {\n                    if (document.type.name !== this.requiredDocumentType()) {\n                        throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n                    }\n                    this._document = document;\n                }\n                requiredDocumentType() {\n                    return DEMedicalPlanSubheadingMedicineSubstanceDocumentType;\n                }\n                /** Active Substance */\n                get activeSubstance() {\n                    return this.document.fields.find((f) => f.type.name === 'ActiveSubstance');\n                }\n                /** Potency */\n                get potency() {\n                    return this.document.fields.find((f) => f.type.name === 'Potency');\n                }\n            }\n            Medicine.Substance = Substance;\n        })(Medicine = Subheading.Medicine || (Subheading.Medicine = {}));\n        /** Prescription */\n        class Prescription {\n            get document() {\n                return this._document;\n            }\n            constructor(document) {\n                if (document.type.name !== this.requiredDocumentType()) {\n                    throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n                }\n                this._document = document;\n            }\n            requiredDocumentType() {\n                return DEMedicalPlanSubheadingPrescriptionDocumentType;\n            }\n            /** General Information */\n            get generalInformation() {\n                return this.document.fields.find((f) => f.type.name === 'GeneralInformation');\n            }\n            /** Prescription Free Text */\n            get prescriptionFreeText() {\n                return this.document.fields.find((f) => f.type.name === 'PrescriptionFreeText');\n            }\n        }\n        Subheading.Prescription = Prescription;\n    })(Subheading = DEMedicalPlan.Subheading || (DEMedicalPlan.Subheading = {}));\n})(DEMedicalPlan || (DEMedicalPlan = {}));\n/** ID Card */\nexport class IDCardPDF417 {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return IDCardPDF417DocumentType;\n    }\n    /** Birth Date. The format is ISO8601 with delimiters */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Date Expired. The format is ISO8601 with delimiters */\n    get dateExpired() {\n        return this.document.fields.find((f) => f.type.name === 'DateExpired');\n    }\n    /** Date Issued. The format is ISO8601 with delimiters */\n    get dateIssued() {\n        return this.document.fields.find((f) => f.type.name === 'DateIssued');\n    }\n    /** Document Code */\n    get documentCode() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentCode');\n    }\n    /** First Name */\n    get firstName() {\n        return this.document.fields.find((f) => f.type.name === 'FirstName');\n    }\n    /** Last Name */\n    get lastName() {\n        return this.document.fields.find((f) => f.type.name === 'LastName');\n    }\n    /** Optional */\n    get optional() {\n        return this.document.fields.find((f) => f.type.name === 'Optional');\n    }\n}\n/** GS1 */\nexport class GS1 {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return GS1DocumentType;\n    }\n    /** An array of all children of type \"Element\". */\n    get elements() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Element')\n            .map((c) => new GS1.Element(c));\n    }\n}\n(function (GS1) {\n    /** GS1 Element */\n    class Element {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return GS1ElementDocumentType;\n        }\n        /** Application Identifier */\n        get applicationIdentifier() {\n            return this.document.fields.find((f) => f.type.name === 'ApplicationIdentifier');\n        }\n        /** Data Title */\n        get dataTitle() {\n            return this.document.fields.find((f) => f.type.name === 'DataTitle');\n        }\n        /** Description */\n        get elementDescription() {\n            return this.document.fields.find((f) => f.type.name === 'ElementDescription');\n        }\n        /** Raw Value */\n        get rawValue() {\n            return this.document.fields.find((f) => f.type.name === 'RawValue');\n        }\n        /** An array of all children of type \"ValidationError\". */\n        get validationErrors() {\n            return this.document.children\n                .filter((c) => c.type.name === 'ValidationError')\n                .map((c) => new GS1.Element.ValidationError(c));\n        }\n    }\n    GS1.Element = Element;\n    (function (Element) {\n        /** Validation Errors */\n        class ValidationError {\n            get document() {\n                return this._document;\n            }\n            constructor(document) {\n                if (document.type.name !== this.requiredDocumentType()) {\n                    throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n                }\n                this._document = document;\n            }\n            requiredDocumentType() {\n                return GS1ElementValidationErrorDocumentType;\n            }\n            /** Error Code */\n            get code() {\n                return this.document.fields.find((f) => f.type.name === 'Code');\n            }\n            /** Reason */\n            get reason() {\n                return this.document.fields.find((f) => f.type.name === 'Reason');\n            }\n        }\n        Element.ValidationError = ValidationError;\n    })(Element = GS1.Element || (GS1.Element = {}));\n})(GS1 || (GS1 = {}));\n/** SEPA */\nexport class SEPA {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return SEPADocumentType;\n    }\n    /** Amount */\n    get amount() {\n        return this.document.fields.find((f) => f.type.name === 'Amount');\n    }\n    /** Character Set */\n    get characterSet() {\n        return this.document.fields.find((f) => f.type.name === 'CharacterSet');\n    }\n    /** Identification */\n    get identification() {\n        return this.document.fields.find((f) => f.type.name === 'Identification');\n    }\n    /** Information */\n    get information() {\n        return this.document.fields.find((f) => f.type.name === 'Information');\n    }\n    /** Amount */\n    get purpose() {\n        return this.document.fields.find((f) => f.type.name === 'Purpose');\n    }\n    /** Receiver BIC */\n    get receiverBIC() {\n        return this.document.fields.find((f) => f.type.name === 'ReceiverBIC');\n    }\n    /** Receiver IBAN */\n    get receiverIBAN() {\n        return this.document.fields.find((f) => f.type.name === 'ReceiverIBAN');\n    }\n    /** Receiver Name */\n    get receiverName() {\n        return this.document.fields.find((f) => f.type.name === 'ReceiverName');\n    }\n    /** Remittance */\n    get remittance() {\n        return this.document.fields.find((f) => f.type.name === 'Remittance');\n    }\n    /** Service Tag */\n    get serviceTag() {\n        return this.document.fields.find((f) => f.type.name === 'ServiceTag');\n    }\n    /** Version */\n    get version() {\n        return this.document.fields.find((f) => f.type.name === 'Version');\n    }\n}\n/** Medical Certificate */\nexport class MedicalCertificate {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return MedicalCertificateDocumentType;\n    }\n    /** Accident */\n    get accident() {\n        return this.document.fields.find((f) => f.type.name === 'Accident');\n    }\n    /** Assigned To Accident Insurance Doctor */\n    get assignedToAccidentInsuranceDoctor() {\n        return this.document.fields.find((f) => f.type.name === 'AssignedToAccidentInsuranceDoctor');\n    }\n    /** Birth Date. The format is ISO8601 with delimiters */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Child Needs Care From */\n    get childNeedsCareFrom() {\n        return this.document.fields.find((f) => f.type.name === 'ChildNeedsCareFrom');\n    }\n    /** Child Needs Care Until */\n    get childNeedsCareUntil() {\n        return this.document.fields.find((f) => f.type.name === 'ChildNeedsCareUntil');\n    }\n    /** Diagnose */\n    get diagnose() {\n        return this.document.fields.find((f) => f.type.name === 'Diagnose');\n    }\n    /** Diagnosed On. The format is ISO8601 with delimiters */\n    get diagnosedOn() {\n        return this.document.fields.find((f) => f.type.name === 'DiagnosedOn');\n    }\n    /** Doctor Number */\n    get doctorNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DoctorNumber');\n    }\n    /** Document Date. The format is ISO8601 with delimiters */\n    get documentDate() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentDate');\n    }\n    /** First Name */\n    get firstName() {\n        return this.document.fields.find((f) => f.type.name === 'FirstName');\n    }\n    /** Health Insurance Number */\n    get healthInsuranceNumber() {\n        return this.document.fields.find((f) => f.type.name === 'HealthInsuranceNumber');\n    }\n    /** Incapable Of Work Since. The format is ISO8601 with delimiters */\n    get incapableOfWorkSince() {\n        return this.document.fields.find((f) => f.type.name === 'IncapableOfWorkSince');\n    }\n    /** Incapable Of Work Until. The format is ISO8601 with delimiters */\n    get incapableOfWorkUntil() {\n        return this.document.fields.find((f) => f.type.name === 'IncapableOfWorkUntil');\n    }\n    /** Initial Certificate */\n    get initialCertificate() {\n        return this.document.fields.find((f) => f.type.name === 'InitialCertificate');\n    }\n    /** Insured Person Number */\n    get insuredPersonNumber() {\n        return this.document.fields.find((f) => f.type.name === 'InsuredPersonNumber');\n    }\n    /** Last Name */\n    get lastName() {\n        return this.document.fields.find((f) => f.type.name === 'LastName');\n    }\n    /** Place Of Operation Number */\n    get placeOfOperationNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfOperationNumber');\n    }\n    /** Renewed Certificate */\n    get renewedCertificate() {\n        return this.document.fields.find((f) => f.type.name === 'RenewedCertificate');\n    }\n    /** Requires Care */\n    get requiresCare() {\n        return this.document.fields.find((f) => f.type.name === 'RequiresCare');\n    }\n    /** Status */\n    get status() {\n        return this.document.fields.find((f) => f.type.name === 'Status');\n    }\n    /** Work Accident */\n    get workAccident() {\n        return this.document.fields.find((f) => f.type.name === 'WorkAccident');\n    }\n}\n/** VCard */\nexport class VCard {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return VCardDocumentType;\n    }\n    /** The child document of type \"Version\". */\n    get version() {\n        const child = this.document.children.find((c) => c.type.name === 'Version');\n        return new VCard.Version(child);\n    }\n    /** An array of all children of type \"Source\". */\n    get sources() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Source')\n            .map((c) => new VCard.Source(c));\n    }\n    /** The child document of type \"Kind\". */\n    get kind() {\n        const child = this.document.children.find((c) => c.type.name === 'Kind');\n        return child ? new VCard.Kind(child) : undefined;\n    }\n    /** An array of all children of type \"XML\". */\n    get xmls() {\n        return this.document.children\n            .filter((c) => c.type.name === 'XML')\n            .map((c) => new VCard.XML(c));\n    }\n    /** The child document of type \"Name\". */\n    get name() {\n        const child = this.document.children.find((c) => c.type.name === 'Name');\n        return child ? new VCard.Name(child) : undefined;\n    }\n    /** The child document of type \"FormattedName\". */\n    get formattedName() {\n        const child = this.document.children.find((c) => c.type.name === 'FormattedName');\n        return child ? new VCard.FormattedName(child) : undefined;\n    }\n    /** An array of all children of type \"Nickname\". */\n    get nicknames() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Nickname')\n            .map((c) => new VCard.Nickname(c));\n    }\n    /** The child document of type \"Birthday\". */\n    get birthday() {\n        const child = this.document.children.find((c) => c.type.name === 'Birthday');\n        return child ? new VCard.Birthday(child) : undefined;\n    }\n    /** The child document of type \"Anniversary\". */\n    get anniversary() {\n        const child = this.document.children.find((c) => c.type.name === 'Anniversary');\n        return child ? new VCard.Anniversary(child) : undefined;\n    }\n    /** The child document of type \"Gender\". */\n    get gender() {\n        const child = this.document.children.find((c) => c.type.name === 'Gender');\n        return child ? new VCard.Gender(child) : undefined;\n    }\n    /** An array of all children of type \"DeliveryAddress\". */\n    get deliveryAddresses() {\n        return this.document.children\n            .filter((c) => c.type.name === 'DeliveryAddress')\n            .map((c) => new VCard.DeliveryAddress(c));\n    }\n    /** An array of all children of type \"Label\". */\n    get labels() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Label')\n            .map((c) => new VCard.Label(c));\n    }\n    /** An array of all children of type \"Photo\". */\n    get photos() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Photo')\n            .map((c) => new VCard.Photo(c));\n    }\n    /** An array of all children of type \"TelephoneNumber\". */\n    get telephoneNumbers() {\n        return this.document.children\n            .filter((c) => c.type.name === 'TelephoneNumber')\n            .map((c) => new VCard.TelephoneNumber(c));\n    }\n    /** An array of all children of type \"Email\". */\n    get emails() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Email')\n            .map((c) => new VCard.Email(c));\n    }\n    /** An array of all children of type \"IMPP\". */\n    get impps() {\n        return this.document.children\n            .filter((c) => c.type.name === 'IMPP')\n            .map((c) => new VCard.IMPP(c));\n    }\n    /** An array of all children of type \"Languages\". */\n    get languageses() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Languages')\n            .map((c) => new VCard.Languages(c));\n    }\n    /** An array of all children of type \"TimeZone\". */\n    get timeZones() {\n        return this.document.children\n            .filter((c) => c.type.name === 'TimeZone')\n            .map((c) => new VCard.TimeZone(c));\n    }\n    /** An array of all children of type \"GeoLocation\". */\n    get geoLocations() {\n        return this.document.children\n            .filter((c) => c.type.name === 'GeoLocation')\n            .map((c) => new VCard.GeoLocation(c));\n    }\n    /** An array of all children of type \"Title\". */\n    get titles() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Title')\n            .map((c) => new VCard.Title(c));\n    }\n    /** An array of all children of type \"Role\". */\n    get roles() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Role')\n            .map((c) => new VCard.Role(c));\n    }\n    /** An array of all children of type \"Logo\". */\n    get logos() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Logo')\n            .map((c) => new VCard.Logo(c));\n    }\n    /** An array of all children of type \"Agent\". */\n    get agents() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Agent')\n            .map((c) => new VCard.Agent(c));\n    }\n    /** An array of all children of type \"Organisation\". */\n    get organisations() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Organisation')\n            .map((c) => new VCard.Organisation(c));\n    }\n    /** An array of all children of type \"Member\". */\n    get members() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Member')\n            .map((c) => new VCard.Member(c));\n    }\n    /** An array of all children of type \"Related\". */\n    get relateds() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Related')\n            .map((c) => new VCard.Related(c));\n    }\n    /** An array of all children of type \"Categories\". */\n    get categorieses() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Categories')\n            .map((c) => new VCard.Categories(c));\n    }\n    /** An array of all children of type \"Note\". */\n    get notes() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Note')\n            .map((c) => new VCard.Note(c));\n    }\n    /** The child document of type \"ProductId\". */\n    get productId() {\n        const child = this.document.children.find((c) => c.type.name === 'ProductId');\n        return child ? new VCard.ProductId(child) : undefined;\n    }\n    /** The child document of type \"Revision\". */\n    get revision() {\n        const child = this.document.children.find((c) => c.type.name === 'Revision');\n        return child ? new VCard.Revision(child) : undefined;\n    }\n    /** An array of all children of type \"Sound\". */\n    get sounds() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Sound')\n            .map((c) => new VCard.Sound(c));\n    }\n    /** The child document of type \"UID\". */\n    get uid() {\n        const child = this.document.children.find((c) => c.type.name === 'UID');\n        return child ? new VCard.UID(child) : undefined;\n    }\n    /** An array of all children of type \"ClientPIDMap\". */\n    get clientPIDMaps() {\n        return this.document.children\n            .filter((c) => c.type.name === 'ClientPIDMap')\n            .map((c) => new VCard.ClientPIDMap(c));\n    }\n    /** An array of all children of type \"URL\". */\n    get urls() {\n        return this.document.children\n            .filter((c) => c.type.name === 'URL')\n            .map((c) => new VCard.URL(c));\n    }\n    /** An array of all children of type \"PublicKey\". */\n    get publicKeys() {\n        return this.document.children\n            .filter((c) => c.type.name === 'PublicKey')\n            .map((c) => new VCard.PublicKey(c));\n    }\n    /** An array of all children of type \"BusyTimeURL\". */\n    get busyTimeURLS() {\n        return this.document.children\n            .filter((c) => c.type.name === 'BusyTimeURL')\n            .map((c) => new VCard.BusyTimeURL(c));\n    }\n    /** An array of all children of type \"CalendarURIForRequests\". */\n    get calendarURIForRequestss() {\n        return this.document.children\n            .filter((c) => c.type.name === 'CalendarURIForRequests')\n            .map((c) => new VCard.CalendarURIForRequests(c));\n    }\n    /** An array of all children of type \"CalendarURI\". */\n    get calendarURwe() {\n        return this.document.children\n            .filter((c) => c.type.name === 'CalendarURI')\n            .map((c) => new VCard.CalendarURI(c));\n    }\n    /** The child document of type \"SortString\". */\n    get sortString() {\n        const child = this.document.children.find((c) => c.type.name === 'SortString');\n        return child ? new VCard.SortString(child) : undefined;\n    }\n    /** The child document of type \"Classification\". */\n    get classification() {\n        const child = this.document.children.find((c) => c.type.name === 'Classification');\n        return child ? new VCard.Classification(child) : undefined;\n    }\n    /** An array of all children of type \"Custom\". */\n    get customs() {\n        return this.document.children\n            .filter((c) => c.type.name === 'Custom')\n            .map((c) => new VCard.Custom(c));\n    }\n}\n(function (VCard) {\n    /** VCard Entry */\n    class Entry {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        /** Raw Value */\n        get rawValue() {\n            return this.document.fields.find((f) => f.type.name === 'RawValue');\n        }\n        /** Type Modifier */\n        get typeModifiers() {\n            return this.document.fields.filter((f) => f.type.name === 'TypeModifier');\n        }\n        /** Value */\n        get values() {\n            return this.document.fields.filter((f) => f.type.name === 'Value');\n        }\n    }\n    VCard.Entry = Entry;\n    /** Version */\n    class Version extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardVersionDocumentType;\n        }\n    }\n    VCard.Version = Version;\n    /** Source */\n    class Source extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardSourceDocumentType;\n        }\n    }\n    VCard.Source = Source;\n    /** Kind */\n    class Kind extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardKindDocumentType;\n        }\n    }\n    VCard.Kind = Kind;\n    /** XML */\n    class XML extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardXMLDocumentType;\n        }\n    }\n    VCard.XML = XML;\n    /** Name */\n    class Name extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardNameDocumentType;\n        }\n    }\n    VCard.Name = Name;\n    /** Formatted Name */\n    class FormattedName extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardFormattedNameDocumentType;\n        }\n    }\n    VCard.FormattedName = FormattedName;\n    /** Nickname */\n    class Nickname extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardNicknameDocumentType;\n        }\n    }\n    VCard.Nickname = Nickname;\n    /** Birthday */\n    class Birthday extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardBirthdayDocumentType;\n        }\n    }\n    VCard.Birthday = Birthday;\n    /** Anniversary */\n    class Anniversary extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardAnniversaryDocumentType;\n        }\n    }\n    VCard.Anniversary = Anniversary;\n    /** Gender */\n    class Gender extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardGenderDocumentType;\n        }\n    }\n    VCard.Gender = Gender;\n    /** Delivery Address */\n    class DeliveryAddress extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardDeliveryAddressDocumentType;\n        }\n    }\n    VCard.DeliveryAddress = DeliveryAddress;\n    /** Label */\n    class Label extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardLabelDocumentType;\n        }\n    }\n    VCard.Label = Label;\n    /** Photo */\n    class Photo extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardPhotoDocumentType;\n        }\n    }\n    VCard.Photo = Photo;\n    /** Telephone Number */\n    class TelephoneNumber extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardTelephoneNumberDocumentType;\n        }\n    }\n    VCard.TelephoneNumber = TelephoneNumber;\n    /** Email */\n    class Email extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardEmailDocumentType;\n        }\n    }\n    VCard.Email = Email;\n    /** IMPP */\n    class IMPP extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardIMPPDocumentType;\n        }\n    }\n    VCard.IMPP = IMPP;\n    /** Languages */\n    class Languages extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardLanguagesDocumentType;\n        }\n    }\n    VCard.Languages = Languages;\n    /** Time Zone */\n    class TimeZone extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardTimeZoneDocumentType;\n        }\n    }\n    VCard.TimeZone = TimeZone;\n    /** Geo Location */\n    class GeoLocation extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardGeoLocationDocumentType;\n        }\n    }\n    VCard.GeoLocation = GeoLocation;\n    /** Title */\n    class Title extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardTitleDocumentType;\n        }\n    }\n    VCard.Title = Title;\n    /** Role */\n    class Role extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardRoleDocumentType;\n        }\n    }\n    VCard.Role = Role;\n    /** Logo */\n    class Logo extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardLogoDocumentType;\n        }\n    }\n    VCard.Logo = Logo;\n    /** Agent */\n    class Agent extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardAgentDocumentType;\n        }\n    }\n    VCard.Agent = Agent;\n    /** Organisation */\n    class Organisation extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardOrganisationDocumentType;\n        }\n    }\n    VCard.Organisation = Organisation;\n    /** Member */\n    class Member extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardMemberDocumentType;\n        }\n    }\n    VCard.Member = Member;\n    /** Related */\n    class Related extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardRelatedDocumentType;\n        }\n    }\n    VCard.Related = Related;\n    /** Categories */\n    class Categories extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardCategoriesDocumentType;\n        }\n    }\n    VCard.Categories = Categories;\n    /** Note */\n    class Note extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardNoteDocumentType;\n        }\n    }\n    VCard.Note = Note;\n    /** ProductId */\n    class ProductId extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardProductIdDocumentType;\n        }\n    }\n    VCard.ProductId = ProductId;\n    /** Revision */\n    class Revision extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardRevisionDocumentType;\n        }\n    }\n    VCard.Revision = Revision;\n    /** Sound */\n    class Sound extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardSoundDocumentType;\n        }\n    }\n    VCard.Sound = Sound;\n    /** UID */\n    class UID extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardUIDDocumentType;\n        }\n    }\n    VCard.UID = UID;\n    /** Client PID Map */\n    class ClientPIDMap extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardClientPIDMapDocumentType;\n        }\n    }\n    VCard.ClientPIDMap = ClientPIDMap;\n    /** URL */\n    class URL extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardURLDocumentType;\n        }\n    }\n    VCard.URL = URL;\n    /** Public Key */\n    class PublicKey extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardPublicKeyDocumentType;\n        }\n    }\n    VCard.PublicKey = PublicKey;\n    /** Busy Time URL */\n    class BusyTimeURL extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardBusyTimeURLDocumentType;\n        }\n    }\n    VCard.BusyTimeURL = BusyTimeURL;\n    /** Calendar URI For Requests */\n    class CalendarURIForRequests extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardCalendarURIForRequestsDocumentType;\n        }\n    }\n    VCard.CalendarURIForRequests = CalendarURIForRequests;\n    /** Calendar URI */\n    class CalendarURI extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardCalendarURIDocumentType;\n        }\n    }\n    VCard.CalendarURI = CalendarURI;\n    /** Sort String */\n    class SortString extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardSortStringDocumentType;\n        }\n    }\n    VCard.SortString = SortString;\n    /** Classification */\n    class Classification extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardClassificationDocumentType;\n        }\n    }\n    VCard.Classification = Classification;\n    /** Custom */\n    class Custom extends Entry {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return VCardCustomDocumentType;\n        }\n    }\n    VCard.Custom = Custom;\n})(VCard || (VCard = {}));\n/** AAMVA */\nexport class AAMVA {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return AAMVADocumentType;\n    }\n    /** Issuer Identification Number */\n    get issuerIdentificationNumber() {\n        return this.document.fields.find((f) => f.type.name === 'IssuerIdentificationNumber');\n    }\n    /** Jurisdiction Version Number */\n    get jurisdictionVersionNumber() {\n        return this.document.fields.find((f) => f.type.name === 'JurisdictionVersionNumber');\n    }\n    /** Version */\n    get version() {\n        return this.document.fields.find((f) => f.type.name === 'Version');\n    }\n    /** The child document of type \"TitleData\". */\n    get titleData() {\n        const child = this.document.children.find((c) => c.type.name === 'TitleData');\n        return child ? new AAMVA.TitleData(child) : undefined;\n    }\n    /** The child document of type \"RegistrationData\". */\n    get registrationData() {\n        const child = this.document.children.find((c) => c.type.name === 'RegistrationData');\n        return child ? new AAMVA.RegistrationData(child) : undefined;\n    }\n    /** The child document of type \"MotorCarrierData\". */\n    get motorCarrierData() {\n        const child = this.document.children.find((c) => c.type.name === 'MotorCarrierData');\n        return child ? new AAMVA.MotorCarrierData(child) : undefined;\n    }\n    /** The child document of type \"RegistrantAndVehicleData\". */\n    get registrantAndVehicleData() {\n        const child = this.document.children.find((c) => c.type.name === 'RegistrantAndVehicleData');\n        return child ? new AAMVA.RegistrantAndVehicleData(child) : undefined;\n    }\n    /** The child document of type \"VehicleOwnerData\". */\n    get vehicleOwnerData() {\n        const child = this.document.children.find((c) => c.type.name === 'VehicleOwnerData');\n        return child ? new AAMVA.VehicleOwnerData(child) : undefined;\n    }\n    /** The child document of type \"VehicleData\". */\n    get vehicleData() {\n        const child = this.document.children.find((c) => c.type.name === 'VehicleData');\n        return child ? new AAMVA.VehicleData(child) : undefined;\n    }\n    /** The child document of type \"VehicleSafetyInspectionData\". */\n    get vehicleSafetyInspectionData() {\n        const child = this.document.children.find((c) => c.type.name === 'VehicleSafetyInspectionData');\n        return child ? new AAMVA.VehicleSafetyInspectionData(child) : undefined;\n    }\n    /** The child document of type \"DriverLicense\". */\n    get driverLicense() {\n        const child = this.document.children.find((c) => c.type.name === 'DriverLicense');\n        return child ? new AAMVA.DriverLicense(child) : undefined;\n    }\n    /** The child document of type \"IDCard\". */\n    get idCard() {\n        const child = this.document.children.find((c) => c.type.name === 'IDCard');\n        return child ? new AAMVA.IDCard(child) : undefined;\n    }\n    /** The child document of type \"EnhancedDriverLicense\". */\n    get enhancedDriverLicense() {\n        const child = this.document.children.find((c) => c.type.name === 'EnhancedDriverLicense');\n        return child ? new AAMVA.EnhancedDriverLicense(child) : undefined;\n    }\n    /** The child document of type \"RawDocument\". */\n    get rawDocument() {\n        const child = this.document.children.find((c) => c.type.name === 'RawDocument');\n        return new AAMVA.RawDocument(child);\n    }\n}\n(function (AAMVA) {\n    /** Title Data. File type \"TD\". */\n    class TitleData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVATitleDataDocumentType;\n        }\n        /** Data element ID \"NAT\". City portion of the owner’s address. */\n        get addressCity() {\n            return this.document.fields.find((f) => f.type.name === 'AddressCity');\n        }\n        /** Data element ID \"NAU\". Jurisdiction portion of the owner’s address. */\n        get addressJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressJurisdictionCode');\n        }\n        /** Data element ID \"NAR\". Street portion of the owner’s address. */\n        get addressStreet() {\n            return this.document.fields.find((f) => f.type.name === 'AddressStreet');\n        }\n        /** Data element ID \"NAV\". The ZIP code or Postal code portion of the owner’s address. */\n        get addressZipCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressZipCode');\n        }\n        /** Data element ID \"BBC\". The name of business that owns the vehicle. */\n        get businessName() {\n            return this.document.fields.find((f) => f.type.name === 'BusinessName');\n        }\n        /** Data element ID \"NAA\". Family name (commonly called surname or last name) of the owner of the vehicle. */\n        get familyName() {\n            return this.document.fields.find((f) => f.type.name === 'FamilyName');\n        }\n        /** Data element ID \"LAF\". A code that uniquely identifies the first holder of a lien. */\n        get firstLienHolderId() {\n            return this.document.fields.find((f) => f.type.name === 'FirstLienHolderId');\n        }\n        /** Data element ID \"LAA\". Name of the first lien holder of the vehicle. */\n        get firstLienHolderName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstLienHolderName');\n        }\n        /** Data element ID \"NAE\". Given name or names (includes all of what are commonly referred to as first and middle names) of the owner of the vehicle. */\n        get givenName() {\n            return this.document.fields.find((f) => f.type.name === 'GivenName');\n        }\n        /** Data element ID \"TAW\". This code represents whether the vehicle/vessel is new or used. Note: jurisdictions’ definitions of these classifications may vary a little due to state regulations on demo vehicles, slates between dealers, application of state taxes, etc. N = New, U = Used. */\n        get newUsedIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'NewUsedIndicator');\n        }\n        /** Data element ID \"TAH\". The date the odometer reading was recorded by the jurisdiction. */\n        get odometerDate() {\n            return this.document.fields.find((f) => f.type.name === 'OdometerDate');\n        }\n        /** Data element ID \"TAG\". This is the federal odometer mileage disclosure. The mandatory information is: (1) Actual vehicle mileage; (2) Mileage exceeds mechanical limitations; (3) Not actual mileage; (4) Mileage disclosure not required. */\n        get odometerDisclosure() {\n            return this.document.fields.find((f) => f.type.name === 'OdometerDisclosure');\n        }\n        /** Data element ID \"TAI\". This is the odometer reading registered with the DMV either at the time of titling or registration renewal in kilometers. */\n        get odometerReadingKilometers() {\n            return this.document.fields.find((f) => f.type.name === 'OdometerReadingKilometers');\n        }\n        /** Data element ID \"TAF\". This is the odometer reading registered with the DMV either at the time of titling or registration renewal. */\n        get odometerReadingMileage() {\n            return this.document.fields.find((f) => f.type.name === 'OdometerReadingMileage');\n        }\n        /** Data element ID \"TAZ\". The title number assigned to the vehicle by the previous titling jurisdiction. */\n        get previousTitleNumber() {\n            return this.document.fields.find((f) => f.type.name === 'PreviousTitleNumber');\n        }\n        /** Data element ID \"TPJ\". The code for the jurisdiction (U.S., Canadian, or Mexican) that titled the vehicle immediately prior to the current titling jurisdiction. */\n        get previousTitlingJurisdiction() {\n            return this.document.fields.find((f) => f.type.name === 'PreviousTitlingJurisdiction');\n        }\n        /** Data element ID \"TAY\". Code providing information about the brand applied to the title. */\n        get titleBrand() {\n            return this.document.fields.find((f) => f.type.name === 'TitleBrand');\n        }\n        /** Data element ID \"TAV\". The date the jurisdiction’s titling authority issued a title to the owner of the vehicle. The format is CCYYMMDD. */\n        get titleIssueDate() {\n            return this.document.fields.find((f) => f.type.name === 'TitleIssueDate');\n        }\n        /** Data element ID \"TAA\". The date the jurisdiction’s titling authority issued a title to the owner of the vehicle. The format is CCYYMMDD. */\n        get titleNumber() {\n            return this.document.fields.find((f) => f.type.name === 'TitleNumber');\n        }\n        /** Data element ID \"TAC\". A unique set of alphanumeric characters assigned by the titling jurisdiction to the certificate of title of a vehicle. */\n        get titlingJurisdiction() {\n            return this.document.fields.find((f) => f.type.name === 'TitlingJurisdiction');\n        }\n        /** Data element ID \"VAO\". The general configuration or shape of a vehicle distinguished by characteristics such as number of doors, seats, windows, roofline, and type of top. The vehicle body type is 2-character alphanumeric. */\n        get vehicleBodyStyle() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleBodyStyle');\n        }\n        /** Data element ID \"VBD\". Where the vehicle/vessel is one color, this is the appropriate code describing that color. When the vehicle is two colors, this is the code for the top-most or front-most color. */\n        get vehicleColor() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleColor');\n        }\n        /** Data element ID \"VAD\". A unique combination of alphanumeric characters that identifies a specific vehicle or component. The VIN is affixed to the vehicle in specific locations and formulated by the manufacturer. State agencies under some controlled instances may assign a VIN to a vehicle. */\n        get vehicleIdentificationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleIdentificationNumber');\n        }\n        /** Data element ID \"VAK\". The distinctive (coded) name applied to a group of vehicles by a manufacturer. */\n        get vehicleMake() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleMake');\n        }\n        /** Data element ID \"VAM\". A code denoting a family of vehicles (within a make), which has a degree of similarity in construction, such as body, chassis, etc. The field does not necessarily contain a standard code; it may contain a value provided by the originator of the field. */\n        get vehicleModel() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModel');\n        }\n        /** Data element ID \"VAL\". The year that is assigned to a vehicle by the manufacturer. The format is CCYY. */\n        get vehicleModelYear() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModelYear');\n        }\n        /** Data element ID \"TAU\". The date a vehicle was purchased by the current owner. The format is ISO8601 with delimiters. */\n        get vehiclePurchaseDate() {\n            return this.document.fields.find((f) => f.type.name === 'VehiclePurchaseDate');\n        }\n    }\n    AAMVA.TitleData = TitleData;\n    /** Registration Data. File type \"RG\". */\n    class RegistrationData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVARegistrationDataDocumentType;\n        }\n        /** Data element ID \"RBK\". City portion of the owner’s address. */\n        get addressCity() {\n            return this.document.fields.find((f) => f.type.name === 'AddressCity');\n        }\n        /** Data element ID \"RBL\". Jurisdiction portion of the owner’s address. */\n        get addressJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressJurisdictionCode');\n        }\n        /** Data element ID \"RBI\". Street portion of the owner’s address. */\n        get addressStreet() {\n            return this.document.fields.find((f) => f.type.name === 'AddressStreet');\n        }\n        /** Data element ID \"RBM\". The Zip code or Postal code of the vehicle owner’s residence address. */\n        get addressZipCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressZipCode');\n        }\n        /** Data element ID \"VBC\". The number of common axles of rotation of one or more wheels of a vehicle, whether power driven or freely rotating. */\n        get axles() {\n            return this.document.fields.find((f) => f.type.name === 'Axles');\n        }\n        /** Data element ID \"BBC\". The business name of the first registrant of a vehicle. */\n        get businessName() {\n            return this.document.fields.find((f) => f.type.name === 'BusinessName');\n        }\n        /** Data element ID \"FUL\". The type of fuel used by the vehicle. In most cases, the fuel type would be diesel. */\n        get fuel() {\n            return this.document.fields.find((f) => f.type.name === 'Fuel');\n        }\n        /** Data element ID \"VAT\". The unladen weight of the vehicle (e.g., the single-unit truck, truck combination) plus the weight of the load being carried at a specific point in time. */\n        get grossVehicleWeight() {\n            return this.document.fields.find((f) => f.type.name === 'GrossVehicleWeight');\n        }\n        /** Data element ID \"RBD\". Family name (commonly called surname or last name) of the registered owner of a vehicle. */\n        get registrantFamilyName() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrantFamilyName');\n        }\n        /** Data element ID \"RBE\". Given name or names (includes all of what are commonly referred to as first and middle names) of the registered owner of a vehicle. */\n        get registrantGivenName() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrantGivenName');\n        }\n        /** Data element ID \"RAG\". The date in which the registration expired. The format is ISO8601 with delimiters. */\n        get registrationExpiryDate() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationExpiryDate');\n        }\n        /** Data element ID \"RBB\". The date in which the registration was issued. The format is ISO8601 with delimiters. */\n        get registrationIssueDate() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationIssueDate');\n        }\n        /** Data element ID \"RAM\". The characters assigned to a registration plate or tag affixed to the vehicle, assigned by the jurisdiction. */\n        get registrationPlateNumber() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationPlateNumber');\n        }\n        /** Data element ID \"RBU\". A unique number printed on the tab/decal and stored as part of the registration record. */\n        get registrationWindowStickerDecal() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationWindowStickerDecal');\n        }\n        /** Data element ID \"RBT\". The year of registration. */\n        get registrationYear() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationYear');\n        }\n        /** Data element ID \"VAO\". The general configuration or shape of a vehicle distinguished by characteristics such as number of doors, seats, windows, roofline, and type of top. The vehicle body type is 2-character alphanumeric. */\n        get vehicleBodyStyle() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleBodyStyle');\n        }\n        /** Data element ID \"VBD\". Where the vehicle is one color, this is the appropriate code describing that color. When the vehicle is two colors, this is the code for the top-most or front-most color. */\n        get vehicleColor() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleColor');\n        }\n        /** Data element ID \"VAD\". A unique combination of alphanumeric characters that identifies a specific vehicle or component. The VIN is affixed to the vehicle in specific locations and formulated by the manufacturer. State agencies under some controlled instances my assign a VIN to a vehicle. */\n        get vehicleIdentificationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleIdentificationNumber');\n        }\n        /** Data element ID \"VAK\". The distinctive (coded) name applied to a group of vehicles by a manufacturer. */\n        get vehicleMake() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleMake');\n        }\n        /** Data element ID \"VAM\". A code denoting a family of vehicles (within a make), which has a degree of similarity in construction, such as body, chassis, etc. The field does not necessarily contain a standard code; it may contain a value provided by the originator of the field. */\n        get vehicleModel() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModel');\n        }\n        /** Data element ID \"VAL\". The year which is assigned to a vehicle by the manufacturer. The format is CCYY. */\n        get vehicleModelYear() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModelYear');\n        }\n        /** Data element ID \"VPC\". Indicates the use of the vehicle. */\n        get vehicleUse() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleUse');\n        }\n    }\n    AAMVA.RegistrationData = RegistrationData;\n    /** Motor Carrier Data. File type \"MC\". */\n    class MotorCarrierData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVAMotorCarrierDataDocumentType;\n        }\n        /** Data element ID \"MAA\". The name of the carrier responsible for safety. This can be an individual, partnership or corporation responsible for the transportation of persons or property. This is the name that is recognized by law. */\n        get carrierName() {\n            return this.document.fields.find((f) => f.type.name === 'CarrierName');\n        }\n        /** Data element ID \"MAL\". This is the city for the mailing address of the individual carrier. This information is utilized by the base jurisdiction to send information to the carrier that purchased the IRP credentials. */\n        get city() {\n            return this.document.fields.find((f) => f.type.name === 'City');\n        }\n        /** Data element ID \"MAI\". This is the jurisdiction of the residential address of the individual carrier. This information is utilized by the base jurisdiction to send information to the carrier that purchased the IRP credentials. */\n        get jurisdiction() {\n            return this.document.fields.find((f) => f.type.name === 'Jurisdiction');\n        }\n        /** Data element ID \"MAK\". This is the mailing address of the individual carrier. This information is utilized by the base jurisdiction to send information to the carrier that purchased the IRP credentials. */\n        get streetAddress() {\n            return this.document.fields.find((f) => f.type.name === 'StreetAddress');\n        }\n        /** Data element ID \"MAN\". A unique identifier assigned to the carrier responsible for safety issued by the U.S. Department of Transportation – Federal Motor Carrier Safety Administration. */\n        get usdotNumber() {\n            return this.document.fields.find((f) => f.type.name === 'USDOTNumber');\n        }\n        /** Data element ID \"MAO\". The ZIP or Postal code of the resident address of the vehicle owner. */\n        get zip() {\n            return this.document.fields.find((f) => f.type.name === 'Zip');\n        }\n    }\n    AAMVA.MotorCarrierData = MotorCarrierData;\n    /** Registrant And Vehicle Data. File type \"IR\". */\n    class RegistrantAndVehicleData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVARegistrantAndVehicleDataDocumentType;\n        }\n        /** Data element ID \"RBI\". The first line of the registrant’s residence address. */\n        get address() {\n            return this.document.fields.find((f) => f.type.name === 'Address');\n        }\n        /** Data element ID \"RAU\". The declared base jurisdiction registration weight. */\n        get baseJurisdictionRegisteredWeight() {\n            return this.document.fields.find((f) => f.type.name === 'BaseJurisdictionRegisteredWeight');\n        }\n        /** Data element ID \"RBC\". The name of the first registrant of a vehicle. Registrant’s name may be a combined individual name or the name of a business */\n        get carrierNameRegistrant() {\n            return this.document.fields.find((f) => f.type.name === 'CarrierNameRegistrant');\n        }\n        /** Data element ID \"RBK\". The registrant’s residence city name. */\n        get city() {\n            return this.document.fields.find((f) => f.type.name === 'City');\n        }\n        /** Data element ID \"VAT\". The unladen weight of the vehicle (e.g., single-unit truck, truck combination) plus the weight of the maximum load for which vehicle registration fees have been paid within a particular jurisdiction. */\n        get grossVehicleWeight() {\n            return this.document.fields.find((f) => f.type.name === 'GrossVehicleWeight');\n        }\n        /** Data element ID \"RBL\". The state or province of the registrant’s residence address. */\n        get jurisdiction() {\n            return this.document.fields.find((f) => f.type.name === 'Jurisdiction');\n        }\n        /** Data element ID \"VAL\". The year which is assigned to a vehicle by the manufacturer. The format is YY. */\n        get modelYear() {\n            return this.document.fields.find((f) => f.type.name === 'ModelYear');\n        }\n        /** Data element IDs \"RAP\", \"VBC\". The seat capacity of a commercial vehicle designed for transportation of more than then passengers. The number of common axles of rotation of one or more wheels of a vehicle, whether power design or freely rotating. */\n        get numberOfSeats() {\n            return this.document.fields.find((f) => f.type.name === 'NumberOfSeats');\n        }\n        /** Data element ID \"RAD\". The number assigned to the registration decal in those jurisdictions that issue decals. */\n        get registrationDecalNumber() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationDecalNumber');\n        }\n        /** Data element ID \"RAF\". The registration enforcement date is the date that the current registration was enforced. This may or may not be the original registration date. The format is ISO8601 with delimiters */\n        get registrationEnforcementDate() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationEnforcementDate');\n        }\n        /** Data element ID \"RAG\". The date in which the registration expired. The format is ISO8601 with delimiters. */\n        get registrationExpirationDate() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationExpirationDate');\n        }\n        /** Data element ID \"IFJ\". The date in which the registration was issued. The format is ISO8601 with delimiters. */\n        get registrationIssueDate() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationIssueDate');\n        }\n        /** Data element ID \"RAM\". The characters assigned to a registration plate or tag affixed to the vehicle, assigned by the jurisdiction. */\n        get registrationPlateNumber() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationPlateNumber');\n        }\n        /** Data element ID \"RBT\". This field is the registration year assigned by the jurisdiction. The format is CCYY. */\n        get registrationYear() {\n            return this.document.fields.find((f) => f.type.name === 'RegistrationYear');\n        }\n        /** Data element ID \"VBB\". The type of vehicle operated for the transportation of persons or property in the furtherance of any commercial or industrial enterprise, for hire or not for hire. Not all states will use all values. */\n        get typeOfVehicle() {\n            return this.document.fields.find((f) => f.type.name === 'TypeOfVehicle');\n        }\n        /** Data element ID \"IEG\". A number, assigned by the registrant of the commercial vehicle or trailer, to identify the vehicle or trailer in the fleet. No two units in a fleet can have the same number. A.K.A vehicle unit number or owner’s equipment number. */\n        get unitNumber() {\n            return this.document.fields.find((f) => f.type.name === 'UnitNumber');\n        }\n        /** Data element ID \"VAD\". A unique combination of alphanumeric characters that identifies a specific vehicle or component. The VIN is affixed to the vehicle in specific locations and formulated by the manufacturer. State agencies under some controlled instances may assign a VIN to a vehicle. */\n        get vehicleIdentificationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleIdentificationNumber');\n        }\n        /** Data element ID \"VAK\". The distinctive (coded) name applied to a group of vehicles by a manufacturer. */\n        get vehicleMake() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleMake');\n        }\n        /** Data element ID \"RBM\". The ZIP or Postal code of the resident address of the registrant. */\n        get zipCode() {\n            return this.document.fields.find((f) => f.type.name === 'ZipCode');\n        }\n    }\n    AAMVA.RegistrantAndVehicleData = RegistrantAndVehicleData;\n    /** Vehicle Owner Data. File type \"OW\". */\n    class VehicleOwnerData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVAVehicleOwnerDataDocumentType;\n        }\n        /** Data element ID \"NAX\". The unique customer number/ID of the first vehicle owner. */\n        get firstOwnerIdNumber() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerIdNumber');\n        }\n        /** Data element ID \"NAB\". Last Name or Surname of the Owner. Hyphenated names acceptable, spaces between names acceptable, but no other use of special symbols. */\n        get firstOwnerLastName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerLastName');\n        }\n        /** Data element ID \"NBA\". The legal status of the first vehicle owner. This is only used when a vehicle has multiple owners. A legal status may be (\"AND\", \"OR\"). */\n        get firstOwnerLegalStatus() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerLegalStatus');\n        }\n        /** Data element ID \"NAD\". Middle Name(s) or Initial(s) of the Owner. Hyphenated names acceptable, spaces, between names acceptable, but no other use of special symbols. */\n        get firstOwnerMiddleName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerMiddleName');\n        }\n        /** Data element ID \"NAC\". First Name or Given Name of the Owner. Hyphenated names acceptable, but no other use of special symbols. */\n        get firstOwnerName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerName');\n        }\n        /** Data element ID \"NAA\". Name of the (or one of the) individual(s) who owns the Vehicle as defined in the ANSI D- 20 Data Element Dictionary. (Lastname@Firstname@MI@Suffix if any.) */\n        get firstOwnerTotalName() {\n            return this.document.fields.find((f) => f.type.name === 'FirstOwnerTotalName');\n        }\n        /** Data element ID \"NAR\". Street address line 1. (Mailing) */\n        get mailingAddress1() {\n            return this.document.fields.find((f) => f.type.name === 'MailingAddress1');\n        }\n        /** Data element ID \"NAS\". Street address line 2. (Mailing) */\n        get mailingAddress2() {\n            return this.document.fields.find((f) => f.type.name === 'MailingAddress2');\n        }\n        /** Data element ID \"NAT\". Name of city for mailing address. */\n        get mailingCity() {\n            return this.document.fields.find((f) => f.type.name === 'MailingCity');\n        }\n        /** Data element ID \"NAU\". Jurisdiction code for mailing address. Conforms to Canadian, Mexican and US jurisdictions as appropriate. Codes for provinces (Canada) and states (US and Mexico). */\n        get mailingJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'MailingJurisdictionCode');\n        }\n        /** Data element ID \"NAV\". The ZIP code or Postal code used for mailing. (As used by Canadian, Mexican and US jurisdictions.) */\n        get mailingZipCode() {\n            return this.document.fields.find((f) => f.type.name === 'MailingZipCode');\n        }\n        /** Data element ID \"NAM\". Street address line 1. (Mailing) */\n        get residenceAddress1() {\n            return this.document.fields.find((f) => f.type.name === 'ResidenceAddress1');\n        }\n        /** Data element ID \"NAN\". Street address line 2. (Mailing) */\n        get residenceAddress2() {\n            return this.document.fields.find((f) => f.type.name === 'ResidenceAddress2');\n        }\n        /** Data element ID \"NAO\". Name of city for mailing address. */\n        get residenceCity() {\n            return this.document.fields.find((f) => f.type.name === 'ResidenceCity');\n        }\n        /** Data element ID \"NAP\". Jurisdiction code for mailing address. Conforms to Canadian, Mexican and US jurisdictions as appropriate. Codes for provinces (Canada) and states (US and Mexico). */\n        get residenceJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'ResidenceJurisdictionCode');\n        }\n        /** Data element ID \"NAQ\". The ZIP code or Postal code used for mailing. (As used by Canadian, Mexican and US jurisdictions). */\n        get residenceZipCode() {\n            return this.document.fields.find((f) => f.type.name === 'ResidenceZipCode');\n        }\n        /** Data element ID \"NAY\". The unique customer number/ID of the second vehicle owner. */\n        get secondOwnerIdNumber() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerIdNumber');\n        }\n        /** Data element ID \"NAF\". Last Name or Surname of the Owner. Hyphenated names acceptable, spaces between names acceptable, but no other use of special symbols. */\n        get secondOwnerLastName() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerLastName');\n        }\n        /** Data element ID \"NBB\". The legal status of the second vehicle owner. This is only used when a vehicle has multiple owners. A legal status may be (\"AND\", \"OR\"). */\n        get secondOwnerLegalStatus() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerLegalStatus');\n        }\n        /** Data element ID \"NAH\". Middle Name(s) or Initial(s) of the Owner. Hyphenated names acceptable, spaces between names acceptable, but no other use of special symbols. */\n        get secondOwnerMiddleName() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerMiddleName');\n        }\n        /** Data element ID \"NAG\". First Name or Given Name of the Owner. Hyphenated names acceptable, but no other use of special symbols. */\n        get secondOwnerName() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerName');\n        }\n        /** Data element ID \"NAE\". Name of the (or one of the) individual(s) who owns the Vehicle as defined in the ANSI D- 20 Data Element Dictionary. (Lastname@Firstname@MI@Suffix if any.) */\n        get secondOwnerTotalName() {\n            return this.document.fields.find((f) => f.type.name === 'SecondOwnerTotalName');\n        }\n    }\n    AAMVA.VehicleOwnerData = VehicleOwnerData;\n    /** Vehicle Data. File type \"VH\". */\n    class VehicleData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVAVehicleDataDocumentType;\n        }\n        /** Data element ID \"VAO\". Vehicle manufacture body style. */\n        get bodyStyle() {\n            return this.document.fields.find((f) => f.type.name === 'BodyStyle');\n        }\n        /** Data element ID \"VAG\". Date vehicle reported junked. The format is ISO8601 with delimiters. */\n        get dateJunked() {\n            return this.document.fields.find((f) => f.type.name === 'DateJunked');\n        }\n        /** Data element ID \"VAJ\". Date vehicle reported recovered. The format is ISO8601 with delimiters. */\n        get dateRecovered() {\n            return this.document.fields.find((f) => f.type.name === 'DateRecovered');\n        }\n        /** Data element ID \"VAI\". Date vehicle reported stolen. The format is ISO8601 with delimiters. */\n        get dateStolen() {\n            return this.document.fields.find((f) => f.type.name === 'DateStolen');\n        }\n        /** Data element ID \"VAW\". Manufacturer’s rated engine displacement. */\n        get engineDisplacement() {\n            return this.document.fields.find((f) => f.type.name === 'EngineDisplacement');\n        }\n        /** Data element ID \"VAR\". The size of a vehicle’s engine. */\n        get engineSize() {\n            return this.document.fields.find((f) => f.type.name === 'EngineSize');\n        }\n        /** Data element ID \"VAN\". Type of fuel the vehicle utilizes. */\n        get fuelType() {\n            return this.document.fields.find((f) => f.type.name === 'FuelType');\n        }\n        /** Data element ID \"VAU\". Manufacturer’s rated horsepower. */\n        get horsepower() {\n            return this.document.fields.find((f) => f.type.name === 'Horsepower');\n        }\n        /** Data element ID \"VAY\". International fuel tax indicator */\n        get iftaIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'IFTAIndicator');\n        }\n        /** Data element ID \"VAX\". International registration plan indicator. */\n        get irpIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'IRPIndicator');\n        }\n        /** Data element ID \"VAF\". Vehicle has been junked. */\n        get junkedIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'JunkedIndicator');\n        }\n        /** Data element ID \"VAE\". Manufacturer’s Suggested Retail Price. No decimal places. Right Justified Zero or space fill. */\n        get msrp() {\n            return this.document.fields.find((f) => f.type.name === 'MSRP');\n        }\n        /** Data element ID \"VAA\". State to provide definition. */\n        get majorCode() {\n            return this.document.fields.find((f) => f.type.name === 'MajorCode');\n        }\n        /** Data element ID \"VAL\". Vehicle manufacture year. */\n        get makeYear() {\n            return this.document.fields.find((f) => f.type.name === 'MakeYear');\n        }\n        /** Data element ID \"VAT\". Manufacturer’s gross vehicle weight rating. */\n        get manufactureGrossWeight() {\n            return this.document.fields.find((f) => f.type.name === 'ManufactureGrossWeight');\n        }\n        /** Data element ID \"VAB\". State to provide definition. */\n        get minorCode() {\n            return this.document.fields.find((f) => f.type.name === 'MinorCode');\n        }\n        /** Data element ID \"VBC\". Number of axles the vehicle has. */\n        get numberOfAxles() {\n            return this.document.fields.find((f) => f.type.name === 'NumberOfAxles');\n        }\n        /** Data element ID \"VAQ\". Number of cylinders the vehicle has. */\n        get numberOfCylinders() {\n            return this.document.fields.find((f) => f.type.name === 'NumberOfCylinders');\n        }\n        /** Data element ID \"VAP\". Number of doors on the vehicle. */\n        get numberOfDoors() {\n            return this.document.fields.find((f) => f.type.name === 'NumberOfDoors');\n        }\n        /** Data element ID \"VAH\". Indicates stolen vehicle. */\n        get stolenIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'StolenIndicator');\n        }\n        /** Data element ID \"VAC\". Type of transmission the vehicle carries. */\n        get transmissionCode() {\n            return this.document.fields.find((f) => f.type.name === 'TransmissionCode');\n        }\n        /** Data element ID \"VAV\". Gross weight of the vehicle unloaded. */\n        get unladenWeight() {\n            return this.document.fields.find((f) => f.type.name === 'UnladenWeight');\n        }\n        /** Data element ID \"VAZ\". Vehicle license tax calculation from date of purchase. */\n        get vltClacFromDate() {\n            return this.document.fields.find((f) => f.type.name === 'VLTClacFromDate');\n        }\n        /** Data element ID \"VBA\". Unique number to identify the vehicle record. */\n        get vehicleIdNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleIdNumber');\n        }\n        /** Data element ID \"VAD\". A unique combination of alphanumeric characters that identifies a specific vehicle or component. The VIN is affixed to the vehicle in specific locations and formulated by the manufacturer. State agencies under some controlled instances may assign a VIN to a vehicle. */\n        get vehicleIdentificationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleIdentificationNumber');\n        }\n        /** Data element ID \"VAK\". The distinctive (coded) name applied to a group of vehicles by a manufacturer. */\n        get vehicleMake() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleMake');\n        }\n        /** Data element ID \"VAM\". Vehicle manufacture model. */\n        get vehicleModel() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModel');\n        }\n        /** Data element ID \"VAS\". This is the status of the vehicle (e.g., active, suspend, etc.) */\n        get vehicleStatusCode() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleStatusCode');\n        }\n        /** Data element ID \"VBB\". EPA vehicle classification. */\n        get vehicleTypeCode() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleTypeCode');\n        }\n    }\n    AAMVA.VehicleData = VehicleData;\n    /** Vehicle Safety Inspection Data. File type \"VS\". */\n    class VehicleSafetyInspectionData {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVAVehicleSafetyInspectionDataDocumentType;\n        }\n        /** Data element ID \"IAN\". The street name and number, city, state and zip code of the inspection facility. */\n        get inspectionAddress() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionAddress');\n        }\n        /** Data element ID \"IPD\". Identifies whether the pollution control devices meet the minimum inspection criteria. */\n        get inspectionAirPollutionDeviceConditions() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionAirPollutionDeviceConditions');\n        }\n        /** Data element ID \"IFI\". The unique number assigned to an inspection facility. */\n        get inspectionFacilityIdentifier() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionFacilityIdentifier');\n        }\n        /** Data element ID \"INC\". A unique number assigned to a current vehicle inspection form for identification purposes or a preprinted unique number on the motor vehicle inspection sticker currently issued to a motor vehicle which has passed inspection. */\n        get inspectionFormOrStickerNumberCurrent() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionFormOrStickerNumberCurrent');\n        }\n        /** Data element ID \"INP\". The number of the last inspection form excluding the current inspection or the certification number of the last inspection sticker, excluding the current inspection. */\n        get inspectionFormOrStickerNumberPrevious() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionFormOrStickerNumberPrevious');\n        }\n        /** Data element ID \"ISC\". An indicator that specifies whether or not the vehicle has a current smog certificate. */\n        get inspectionSmogCertificateIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionSmogCertificateIndicator');\n        }\n        /** Data element ID \"ISN\". Station number performing the inspection. */\n        get inspectionStationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'InspectionStationNumber');\n        }\n        /** Data element ID \"IIN\". A unique number assigned to each licensed vehicle inspector. */\n        get inspectorIdentificationNumber() {\n            return this.document.fields.find((f) => f.type.name === 'InspectorIdentificationNumber');\n        }\n        /** Data element ID \"ORI\". The vehicle’s odometer reading (to the nearest mile or kilometer) at the time of inspection. */\n        get odometerReadingAtInspection() {\n            return this.document.fields.find((f) => f.type.name === 'OdometerReadingAtInspection');\n        }\n        /** Data element ID \"VAO\". The general configuration or shape of a vehicle distinguished by characteristics such as number of doors, seats, windows, roofline, and type of top. The vehicle body type is 2- character alphanumeric. */\n        get vehicleBodyType() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleBodyType');\n        }\n        /** Data element ID \"VAK\". The distinctive (coded) name applied to a group of vehicles by a manufacturer. */\n        get vehicleMake() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleMake');\n        }\n        /** Data element ID \"VAL\". The year which is assigned to a vehicle by the manufacturer. The format is CCYY. */\n        get vehicleModelYear() {\n            return this.document.fields.find((f) => f.type.name === 'VehicleModelYear');\n        }\n    }\n    AAMVA.VehicleSafetyInspectionData = VehicleSafetyInspectionData;\n    /** Driver License Or ID Document */\n    class DLID {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        /** Data element ID \"DAI\". City portion of the cardholder address. */\n        get addressCity() {\n            return this.document.fields.find((f) => f.type.name === 'AddressCity');\n        }\n        /** Data element ID \"DAJ\". State portion of the cardholder address. */\n        get addressJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressJurisdictionCode');\n        }\n        /** Data element ID \"DAK\". Postal code portion of the cardholder address in the U.S. and Canada. If the trailing portion of the postal code in the U.S. is not known, zeros will be used to fill the trailing set of numbers up to nine (9) digits. */\n        get addressPostalCode() {\n            return this.document.fields.find((f) => f.type.name === 'AddressPostalCode');\n        }\n        /** Data element ID \"DAG\". Street portion of the cardholder address. */\n        get addressStreet1() {\n            return this.document.fields.find((f) => f.type.name === 'AddressStreet1');\n        }\n        /** Data element ID \"DAH\". Second line of street portion of the cardholder address. */\n        get addressStreet2() {\n            return this.document.fields.find((f) => f.type.name === 'AddressStreet2');\n        }\n        /** Data element ID \"DCJ\". A string of letters and/or numbers that identifies when, where, and by whom a driver license/ID card was made. If audit information is not used on the card or the MRT, it must be included in the driver record. */\n        get adultInformation() {\n            return this.document.fields.find((f) => f.type.name === 'AdultInformation');\n        }\n        /** Data element ID \"DBN\". Other family name by which cardholder is known. */\n        get aliasFamilyName() {\n            return this.document.fields.find((f) => f.type.name === 'AliasFamilyName');\n        }\n        /** Data element ID \"DBG\". Other given name by which cardholder is known. */\n        get aliasGivenName() {\n            return this.document.fields.find((f) => f.type.name === 'AliasGivenName');\n        }\n        /** Data element ID \"DBQ\". Other middle name by which cardholder is known. */\n        get aliasMiddleName() {\n            return this.document.fields.find((f) => f.type.name === 'AliasMiddleName');\n        }\n        /** Data element ID \"DBR\". Other prefix by which cardholder is known. */\n        get aliasPrefixName() {\n            return this.document.fields.find((f) => f.type.name === 'AliasPrefixName');\n        }\n        /** Data element ID \"DBS\". Other suffix by which cardholder is known. */\n        get aliasSuffixName() {\n            return this.document.fields.find((f) => f.type.name === 'AliasSuffixName');\n        }\n        /** Data element ID \"DDB\". DHS required field that indicates date of the most recent version change or modification to the visible format of the DL/ID. The format is ISO8601 with delimiters. */\n        get cardRevisionDate() {\n            return this.document.fields.find((f) => f.type.name === 'CardRevisionDate');\n        }\n        /** Data element ID \"DDA\". DHS required field that indicates compliance: \"F\" = compliant; and, \"N\" = non-compliant. */\n        get complianceType() {\n            return this.document.fields.find((f) => f.type.name === 'ComplianceType');\n        }\n        /** Data element ID \"DCG\". Country in which DL/ID is issued. U.S. = USA, Canada = CAN. */\n        get countryIdentification() {\n            return this.document.fields.find((f) => f.type.name === 'CountryIdentification');\n        }\n        /** Data element ID \"DCS\". Family name of the cardholder. (Family name is sometimes also called “last name” or “surname.”) Collect full name for record, print as many characters as possible on portrait side of DL/ID. */\n        get customerFamilyName() {\n            return this.document.fields.find((f) => f.type.name === 'CustomerFamilyName');\n        }\n        /** Data element ID \"DAC\". First name of the cardholder. */\n        get customerFirstName() {\n            return this.document.fields.find((f) => f.type.name === 'CustomerFirstName');\n        }\n        /** Data element ID \"DCT\". Given names of the cardholder. (Given names include all names other than the Family Name. This includes all those names sometimes also called “first” and “middle” names.) */\n        get customerGivenNames() {\n            return this.document.fields.find((f) => f.type.name === 'CustomerGivenNames');\n        }\n        /** Data element ID \"DAQ\". The number assigned or calculated by the issuing authority. */\n        get customerIdNumber() {\n            return this.document.fields.find((f) => f.type.name === 'CustomerIdNumber');\n        }\n        /** Data element ID \"DAD\". Middle name(s) of the cardholder. In the case of multiple middle names they shall be separated by a comma “,”. */\n        get customerMiddleName() {\n            return this.document.fields.find((f) => f.type.name === 'CustomerMiddleName');\n        }\n        /** Data element ID \"DBB\". Date on which the cardholder was born. The format is ISO8601 with delimiters. */\n        get dateOfBirth() {\n            return this.document.fields.find((f) => f.type.name === 'DateOfBirth');\n        }\n        /** Data element ID \"DCF\". Number must uniquely identify a particular document issued to that customer from others that may have been issued in the past. This number may serve multiple purposes of document discrimination, audit information number, and/or inventory control. */\n        get documentDiscriminator() {\n            return this.document.fields.find((f) => f.type.name === 'DocumentDiscriminator');\n        }\n        /** Data element ID \"DBA\". Date on which the driving and identification privileges granted by the document are no longer valid. The format is ISO8601 with delimtiers. */\n        get documentExpirationDate() {\n            return this.document.fields.find((f) => f.type.name === 'DocumentExpirationDate');\n        }\n        /** Data element ID \"DBD\". Date on which the document was issued. The format is ISO8601 with delimiters. */\n        get documentIssueDate() {\n            return this.document.fields.find((f) => f.type.name === 'DocumentIssueDate');\n        }\n        /** Data element ID \"DBL\". Alternative dates given as date of birth. */\n        get driverAliasDateOfBirthField() {\n            return this.document.fields.find((f) => f.type.name === 'DriverAliasDateOfBirthField');\n        }\n        /** Data element ID \"DBP\". Alternative fist name or given name of the individual holding the Driver License or ID. Hyphenated names acceptable, but no other use of special symbols. */\n        get driverAliasFirstName() {\n            return this.document.fields.find((f) => f.type.name === 'DriverAliasFirstName');\n        }\n        /** Data element ID \"DBO\". Alternative last name or surname of the individual holding the Driver License or ID. Hyphenated names acceptable, but no other use of special symbols. */\n        get driverAliasLastName() {\n            return this.document.fields.find((f) => f.type.name === 'DriverAliasLastName');\n        }\n        /** Data element ID \"DBM\". DriverAliasSocialSecurityNumber */\n        get driverAliasSocialSecurityNumber() {\n            return this.document.fields.find((f) => f.type.name === 'DriverAliasSocialSecurityNumber');\n        }\n        /** Data element ID \"DAB\". Last name or surname of the individual holding the Driver License or ID. Hyphenated names acceptable, but no other use of special symbols. */\n        get driverLastName() {\n            return this.document.fields.find((f) => f.type.name === 'DriverLastName');\n        }\n        /** Data element ID \"DAR\". A=Class A; B=Class B; C=Class C (Class A, B and C are defined by Federal Highway regulations); M=Class M motorcycle as defined by AAMVA; others are defined by DL Classification Code Standards. */\n        get driverLicenseClassificationCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverLicenseClassificationCode');\n        }\n        /** Data element ID \"DAT\". Any endorsements on a driver license which authorize the operation of specified types of vehicles or the operation of vehicles carrying specified loads. Endorsements shall be specific to classification of a driver license. */\n        get driverLicenseEndorsementsCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverLicenseEndorsementsCode');\n        }\n        /** Data element ID \"DAA\". Name of the individual holding the Driver License or ID as defined in ANSI D20 Data Dictionary. (Lastname@Firstname@MI@ suffix if any) (Machine, Mag Stripe uses ‘$’ and Bar Code uses ‘,’ in place of ‘@’) Firstname, Middle Initial, Lastname (Human) */\n        get driverLicenseName() {\n            return this.document.fields.find((f) => f.type.name === 'DriverLicenseName');\n        }\n        /** Data element ID \"DAS\". A restriction applicable to a driver license. */\n        get driverLicenseRestrictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverLicenseRestrictionCode');\n        }\n        /** Data element ID \"DAF\". Prefix to Driver Name. Not defined in ANSI D20. Freeform as defined by issuing jurisdiction. */\n        get driverNamePrefix() {\n            return this.document.fields.find((f) => f.type.name === 'DriverNamePrefix');\n        }\n        /** Data element ID \"DAE\". An affix occurring at the end of a word, e.g.; Sr., Jr., II, III, IV, etc. */\n        get driverNameSuffix() {\n            return this.document.fields.find((f) => f.type.name === 'DriverNameSuffix');\n        }\n        /** Data element ID \"PAA\". Identifies the type of permit as defined by ANSI D20. */\n        get driverPermitClassificationCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverPermitClassificationCode');\n        }\n        /** Data element ID \"PAF\". Permit endorsements as defined by ANSI D20. */\n        get driverPermitEndorsementCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverPermitEndorsementCode');\n        }\n        /** Data element ID \"PAD\".  Date permit was issued. The format is ISO8601 with delimiters. */\n        get driverPermitIssueDate() {\n            return this.document.fields.find((f) => f.type.name === 'DriverPermitIssueDate');\n        }\n        /** Data element ID \"PAE\". Permit restrictions as defined by ANSI D20. */\n        get driverPermitRestrictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverPermitRestrictionCode');\n        }\n        /** Data element ID \"DAN\". Name of city for mailing address. */\n        get driverResidenceCity() {\n            return this.document.fields.find((f) => f.type.name === 'DriverResidenceCity');\n        }\n        /** Data element ID \"DAO\". Jurisdiction code for mailing address. Conforms to Canadian, Mexican and US Jurisdictions as appropriate. Codes for provinces (Canada) and states (US and Mexico). */\n        get driverResidenceJurisdictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverResidenceJurisdictionCode');\n        }\n        /** Data element ID \"DAP\". Postal code of residence */\n        get driverResidencePostalCode() {\n            return this.document.fields.find((f) => f.type.name === 'DriverResidencePostalCode');\n        }\n        /** Data element ID \"DAL\". Street address line 1 (mailing). */\n        get driverResidenceStreetAddress1() {\n            return this.document.fields.find((f) => f.type.name === 'DriverResidenceStreetAddress1');\n        }\n        /** Data element ID \"DAM\". Street address line 2 (mailing). */\n        get driverResidenceStreetAddress2() {\n            return this.document.fields.find((f) => f.type.name === 'DriverResidenceStreetAddress2');\n        }\n        /** Data element ID \"DDE\". A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */\n        get familyNameTruncation() {\n            return this.document.fields.find((f) => f.type.name === 'FamilyNameTruncation');\n        }\n        /** Data element ID \"DCH\". Federal Commercial Vehicle Codes */\n        get federalCommercialVehicleCodes() {\n            return this.document.fields.find((f) => f.type.name === 'FederalCommercialVehicleCodes');\n        }\n        /** Data element ID \"DDF\". A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */\n        get firstNameTruncation() {\n            return this.document.fields.find((f) => f.type.name === 'FirstNameTruncation');\n        }\n        /** Data element ID \"DDC\". Date on which the hazardous material endorsement granted by the document is no longer valid. The format is ISO8601 with delimiters. */\n        get hazmatEndorsementExpirationDate() {\n            return this.document.fields.find((f) => f.type.name === 'HAZMATEndorsementExpirationDate');\n        }\n        /** Data element ID \"DAZ\". Color of cardholder's hair. ANSI D-20 codes converted to human readable format according to the ANSI D20 Data Dictionary. */\n        get hairColor() {\n            return this.document.fields.find((f) => f.type.name === 'HairColor');\n        }\n        /** Data element ID \"DAV\". Height in centimeters */\n        get height() {\n            return this.document.fields.find((f) => f.type.name === 'Height');\n        }\n        /** Data element ID \"DCK\". A string of letters and/or numbers that is affixed to the raw materials (card stock, laminate, etc.) used in producing driver licenses and ID cards. (DHS recommended field). */\n        get inventoryControlNumber() {\n            return this.document.fields.find((f) => f.type.name === 'InventoryControlNumber');\n        }\n        /** Data element ID \"DBE\". A string used by some jurisdictions to validate the document against their data base. */\n        get issueTimeStamp() {\n            return this.document.fields.find((f) => f.type.name === 'IssueTimeStamp');\n        }\n        /** Data element ID \"DCQ\". Text that explains the jurisdiction-specific code(s) that indicates additional driving privileges granted to the cardholder beyond the vehicle class. */\n        get jurisdictionSpecificEndorsementCodeDescription() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificEndorsementCodeDescription');\n        }\n        /** Data element ID \"DCD\". Jurisdiction-specific codes that represent additional privileges granted to the cardholder beyond the vehicle class (such as transportation of passengers, hazardous materials, operation of motorcycles, etc.). */\n        get jurisdictionSpecificEndorsementCodes() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificEndorsementCodes');\n        }\n        /** Data element ID \"DCR\". Text describing the jurisdiction-specific restriction code(s) that curtail driving privileges. */\n        get jurisdictionSpecificRestrictionCodeDescription() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificRestrictionCodeDescription');\n        }\n        /** Data element ID \"DCB\". Jurisdiction-specific codes that represent restrictions to driving privileges (such as airbrakes, automatic transmission, daylight only, etc.). */\n        get jurisdictionSpecificRestrictionCodes() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificRestrictionCodes');\n        }\n        /** Data element ID \"DCA\". Jurisdiction-specific vehicle class / group code, designating the type of vehicle the cardholder has privilege to drive. */\n        get jurisdictionSpecificVehicleClass() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificVehicleClass');\n        }\n        /** Data element ID \"DCP\". Text that explains the jurisdiction-specific code(s) for classifications of vehicles cardholder is authorized to drive. */\n        get jurisdictionSpecificVehicleClassificationDescription() {\n            return this.document.fields.find((f) => f.type.name === 'JurisdictionSpecificVehicleClassificationDescription');\n        }\n        /** Data element ID \"DDD\". DHS required field that indicates that the cardholder has temporary lawful status = \"1\". */\n        get limitedDurationDocumentIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'LimitedDurationDocumentIndicator');\n        }\n        /** Data element ID \"DDG\". A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */\n        get middleNameTruncation() {\n            return this.document.fields.find((f) => f.type.name === 'MiddleNameTruncation');\n        }\n        /** Data element ID \"DCU\". Name Suffix (If jurisdiction participates in systems requiring name suffix (PDPS, CDLIS, etc.), the suffix must be collected and displayed on the DL/ID and in the MRT). Collect full name for record, print as many characters as possible on portrait side of DL/ID. JR (Junior), SR (Senior), 1ST or I (First), 2ND or II (Second),  3RD or III (Third),  4TH or IV (Fourth), 5TH or V (Fifth), 6TH or VI (Sixth), 7TH or VII (Seventh), 8TH or VIII (Eighth), 9TH or IX (Ninth). */\n        get nameSuffix() {\n            return this.document.fields.find((f) => f.type.name === 'NameSuffix');\n        }\n        /** Data element ID \"DBI\". \"Y\"; Used by some jurisdictions to indicate holder of the document is a non-resident. */\n        get nonResidentIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'NonResidentIndicator');\n        }\n        /** Data element ID \"DBF\". Number of duplicate cards issued for a license or ID if any. */\n        get numberOfDuplicates() {\n            return this.document.fields.find((f) => f.type.name === 'NumberOfDuplicates');\n        }\n        /** Data element ID \"DBH\". Organ Donor */\n        get organDonor() {\n            return this.document.fields.find((f) => f.type.name === 'OrganDonor');\n        }\n        /** Data element ID \"DDK\". Field that indicates that the cardholder is an organ donor = \"1\". */\n        get organDonorIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'OrganDonorIndicator');\n        }\n        /** Data element ID \"PAB\". Date permit expires, The format is ISO8601 with delimiters. */\n        get permitExpirationDate() {\n            return this.document.fields.find((f) => f.type.name === 'PermitExpirationDate');\n        }\n        /** Data element ID \"PAC\". Type of permit. */\n        get permitIdentifier() {\n            return this.document.fields.find((f) => f.type.name === 'PermitIdentifier');\n        }\n        /** Data element ID \"DAY\". Color of cardholder's eyes. ANSI D-20 codes converted to human readable format according to the ANSI D20 Data Dictionary. */\n        get physicalDescriptionEyeColor() {\n            return this.document.fields.find((f) => f.type.name === 'PhysicalDescriptionEyeColor');\n        }\n        /** Data element ID \"DAU\". Height of cardholder. Inches (in): number of inches followed by \" in\" or Centimeters (cm): number of centimeters followed by \" cm.\" */\n        get physicalDescriptionHeight() {\n            return this.document.fields.find((f) => f.type.name === 'PhysicalDescriptionHeight');\n        }\n        /** Data element ID \"DBC\". Gender of the cardholder. \"Male\" or \"Female\". */\n        get physicalDescriptionSex() {\n            return this.document.fields.find((f) => f.type.name === 'PhysicalDescriptionSex');\n        }\n        /** Data element ID \"DCE\". Indicates the approximate weight range of the cardholder: 0 = up to 31 kg (up to 70 lbs), 1 = 32 – 45 kg (71 – 100 lbs), 2 = 46 - 59 kg (101 – 130 lbs), 3 = 60 - 70 kg (131 – 160 lbs), 4 = 71 - 86 kg (161 – 190 lbs), 5 = 87 - 100 kg (191 – 220 lbs), 6 = 101 - 113 kg (221 – 250 lbs), 7 = 114 - 127 kg (251 – 280 lbs), 8 = 128 – 145 kg (281 – 320 lbs), 9 = 146+ kg (321+ lbs). */\n        get physicalDescriptionWeightRange() {\n            return this.document.fields.find((f) => f.type.name === 'PhysicalDescriptionWeightRange');\n        }\n        /** Data element ID \"DCI\". Country and municipality and/or state/province. */\n        get placeOfBirth() {\n            return this.document.fields.find((f) => f.type.name === 'PlaceOfBirth');\n        }\n        /** Data element ID \"DCL\". Codes for race or ethnicity of the cardholder. ANSI D-20 codes converted to human readable format according to the ANSI D20 Data Dictionary. */\n        get raceEthnicity() {\n            return this.document.fields.find((f) => f.type.name === 'RaceEthnicity');\n        }\n        /** Data element ID \"DBK\". The number assigned to an individual by the Social Security Administration. */\n        get socialSecurityNumber() {\n            return this.document.fields.find((f) => f.type.name === 'SocialSecurityNumber');\n        }\n        /** Data element ID \"DCN\". Standard endorsement code(s) for cardholder. See codes in D20. This data element is a placeholder for future efforts to standardize endorsement codes. */\n        get standardEndorsementCode() {\n            return this.document.fields.find((f) => f.type.name === 'StandardEndorsementCode');\n        }\n        /** Data element ID \"DCO\". Standard restriction code(s) for cardholder. See codes in D20. This data element is a placeholder for future efforts to standardize restriction codes. */\n        get standardRestrictionCode() {\n            return this.document.fields.find((f) => f.type.name === 'StandardRestrictionCode');\n        }\n        /** Data element ID \"DCM\". Standard vehicle classification code(s) for cardholder. This data element is a placeholder for future efforts to standardize vehicle classifications. */\n        get standardVehicleClassification() {\n            return this.document.fields.find((f) => f.type.name === 'StandardVehicleClassification');\n        }\n        /** Data element ID \"DDH\". Date on which the cardholder turns 18 years old. The format is ISO8601 with delimiters. */\n        get under18Until() {\n            return this.document.fields.find((f) => f.type.name === 'Under18Until');\n        }\n        /** Data element ID \"DDI\". Date on which the cardholder turns 19 years old. The format is ISO8601 with delimiters. */\n        get under19Until() {\n            return this.document.fields.find((f) => f.type.name === 'Under19Until');\n        }\n        /** Data element ID \"DDJ\". Date on which the cardholder turns 21 years old. The format is ISO8601 with delimiters. */\n        get under21Until() {\n            return this.document.fields.find((f) => f.type.name === 'Under21Until');\n        }\n        /** Data element ID \"DBJ\". A number or alphanumeric string used by some jurisdictions to identify a \"customer\" across multiple data bases. */\n        get uniqueCustomerIdentifier() {\n            return this.document.fields.find((f) => f.type.name === 'UniqueCustomerIdentifier');\n        }\n        /** Data element ID \"DDL\". Field that indicates that the cardholder is a veteran = \"1\". */\n        get veteranIndicator() {\n            return this.document.fields.find((f) => f.type.name === 'VeteranIndicator');\n        }\n        /** Data element ID \"DAX\". Cardholder weight in kilograms Ex. 84 kg = \"084\" */\n        get weightKilograms() {\n            return this.document.fields.find((f) => f.type.name === 'WeightKilograms');\n        }\n        /** Data element ID \"DAW\". Cardholder weight in pounds Ex. 185 lb = \"185\" */\n        get weightPounds() {\n            return this.document.fields.find((f) => f.type.name === 'WeightPounds');\n        }\n    }\n    AAMVA.DLID = DLID;\n    /** Driver License. File type \"DL\". */\n    class DriverLicense extends DLID {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return AAMVADriverLicenseDocumentType;\n        }\n    }\n    AAMVA.DriverLicense = DriverLicense;\n    /** ID Card. File type \"ID\". */\n    class IDCard extends DLID {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return AAMVAIDCardDocumentType;\n        }\n    }\n    AAMVA.IDCard = IDCard;\n    /** Enhanced Driver License. File type \"EN\". */\n    class EnhancedDriverLicense extends DLID {\n        constructor(document) {\n            super(document);\n        }\n        requiredDocumentType() {\n            return AAMVAEnhancedDriverLicenseDocumentType;\n        }\n    }\n    AAMVA.EnhancedDriverLicense = EnhancedDriverLicense;\n    /** The raw document as was parsed from the barcode. The original field key names and field values as they appear in the barcode are left as-is. The mnemonic field keys from the AAMVA specification are not replaced with human-readable names. No field value normalization, like ISO 8601 date reformatting, etc., is done. */\n    class RawDocument {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return AAMVARawDocumentDocumentType;\n        }\n    }\n    AAMVA.RawDocument = RawDocument;\n})(AAMVA || (AAMVA = {}));\n/** HIBC */\nexport class HIBC {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return HIBCDocumentType;\n    }\n    /** Date of Manufacture */\n    get dateOfManufacture() {\n        return this.document.fields.find((f) => f.type.name === 'DateOfManufacture');\n    }\n    /** Expiry Date Day */\n    get expiryDateDay() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDateDay');\n    }\n    /** Expiry Date Hour */\n    get expiryDateHour() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDateHour');\n    }\n    /** Expiry Date Julian Day */\n    get expiryDateJulianDay() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDateJulianDay');\n    }\n    /** Expiry Date Month */\n    get expiryDateMonth() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDateMonth');\n    }\n    /** Expiry Date Year */\n    get expiryDateYear() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDateYear');\n    }\n    /** Information whether primary data is present. */\n    get hasPrimaryData() {\n        return this.document.fields.find((f) => f.type.name === 'HasPrimaryData');\n    }\n    /** Information whether secondary data is present. */\n    get hasSecondaryData() {\n        return this.document.fields.find((f) => f.type.name === 'HasSecondaryData');\n    }\n    /** Labeler Identification Code (LIC) */\n    get labelerIdentificationCode() {\n        return this.document.fields.find((f) => f.type.name === 'LabelerIdentificationCode');\n    }\n    /** Labelers Product or Catalog Number (PCN). Alphanumeric data. */\n    get labelersProductOrCatalogNumber() {\n        return this.document.fields.find((f) => f.type.name === 'LabelersProductOrCatalogNumber');\n    }\n    /** Link character to link standalone primary and secondary barcodes together. */\n    get linkCharacter() {\n        return this.document.fields.find((f) => f.type.name === 'LinkCharacter');\n    }\n    /** Lot Number */\n    get lotNumber() {\n        return this.document.fields.find((f) => f.type.name === 'LotNumber');\n    }\n    /** Quantity */\n    get quantity() {\n        return this.document.fields.find((f) => f.type.name === 'Quantity');\n    }\n    /** Serial Number */\n    get serialNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SerialNumber');\n    }\n    /** Unit of Measure ID, Numeric value only, 0 through 9, where 0 always represents\n  a single unit. 1 to 8 are used to indicate different packaging levels above the unit of use.\n  The value 9 is used for variable quantity containers when manual key entry or scan of\n  a secondary will be used to collect specific quantity data.\n  The labeler should ensure consistency in this field within their packaging process.\n   */\n    get unitOfMeasureID() {\n        return this.document.fields.find((f) => f.type.name === 'UnitOfMeasureID');\n    }\n}\n//# sourceMappingURL=BarcodeDocumentModel.js.map","/// Auto-generated. Modifications will be overwritten.\n/// Generated from core/document-schemas/CheckDocumentModel.yaml\nexport const CheckDocumentType = 'Check';\nexport const USACheckDocumentType = 'USACheck';\nexport const UAECheckDocumentType = 'UAECheck';\nexport const FRACheckDocumentType = 'FRACheck';\nexport const ISRCheckDocumentType = 'ISRCheck';\nexport const KWTCheckDocumentType = 'KWTCheck';\nexport const AUSCheckDocumentType = 'AUSCheck';\nexport const INDCheckDocumentType = 'INDCheck';\nexport const CANCheckDocumentType = 'CANCheck';\nexport const UnknownCheckDocumentType = 'UnknownCheck';\n/** Check Document */\nexport class Check {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    /** type of check font */\n    get fontType() {\n        return this.document.fields.find((f) => f.type.name === 'FontType');\n    }\n    /** Detected raw string */\n    get rawString() {\n        return this.document.fields.find((f) => f.type.name === 'RawString');\n    }\n}\n/** A check compatible with the ASC X9 standard used in the USA */\nexport class USACheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return USACheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Auxiliary On-Us field. For business checks this is often the serial number of the check. */\n    get auxiliaryOnUs() {\n        return this.document.fields.find((f) => f.type.name === 'AuxiliaryOnUs');\n    }\n    /** This field is often the check number, though it cannot be guaranteed as it is up to the discretion of the\n  issuing bank.\n   */\n    get checkNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CheckNumber');\n    }\n    /** Transit number */\n    get transitNumber() {\n        return this.document.fields.find((f) => f.type.name === 'TransitNumber');\n    }\n}\n/** A check format commonly used in the United Arab Emirates */\nexport class UAECheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return UAECheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Cheque number */\n    get chequeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ChequeNumber');\n    }\n    /** Routing number */\n    get routingNumber() {\n        return this.document.fields.find((f) => f.type.name === 'RoutingNumber');\n    }\n}\n/** A check format commonly used in France */\nexport class FRACheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return FRACheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Cheque number */\n    get chequeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ChequeNumber');\n    }\n    /** Routing number */\n    get routingNumber() {\n        return this.document.fields.find((f) => f.type.name === 'RoutingNumber');\n    }\n}\n/** A check format commonly used in Israel */\nexport class ISRCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return ISRCheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Bank number */\n    get bankNumber() {\n        return this.document.fields.find((f) => f.type.name === 'BankNumber');\n    }\n    /** Branch number */\n    get branchNumber() {\n        return this.document.fields.find((f) => f.type.name === 'BranchNumber');\n    }\n    /** Cheque number */\n    get chequeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ChequeNumber');\n    }\n}\n/** A check format commonly used in Kuwait */\nexport class KWTCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return KWTCheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Cheque number */\n    get chequeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ChequeNumber');\n    }\n    /** Sort code */\n    get sortCode() {\n        return this.document.fields.find((f) => f.type.name === 'SortCode');\n    }\n}\n/** A check compatible with the Australian Paper Clearing System cheque standard */\nexport class AUSCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return AUSCheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Auxiliary domestic */\n    get auxDomestic() {\n        return this.document.fields.find((f) => f.type.name === 'AuxDomestic');\n    }\n    /** BSB */\n    get bsb() {\n        return this.document.fields.find((f) => f.type.name === 'BSB');\n    }\n    /** Extra auxiliary domestic */\n    get extraAuxDomestic() {\n        return this.document.fields.find((f) => f.type.name === 'ExtraAuxDomestic');\n    }\n    /** Transaction code */\n    get transactionCode() {\n        return this.document.fields.find((f) => f.type.name === 'TransactionCode');\n    }\n}\n/** A check compatible with the CTS-2010 standard issued by the Reserve Bank of India in 2012 */\nexport class INDCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return INDCheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Serial number */\n    get serialNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SerialNumber');\n    }\n    /** Sort number */\n    get sortNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SortNumber');\n    }\n    /** Transaction code */\n    get transactionCode() {\n        return this.document.fields.find((f) => f.type.name === 'TransactionCode');\n    }\n}\n/** A check format commonly used in Canada */\nexport class CANCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return CANCheckDocumentType;\n    }\n    /** Account number */\n    get accountNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AccountNumber');\n    }\n    /** Bank number */\n    get bankNumber() {\n        return this.document.fields.find((f) => f.type.name === 'BankNumber');\n    }\n    /** Cheque number */\n    get chequeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ChequeNumber');\n    }\n    /** Designation number */\n    get designationNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DesignationNumber');\n    }\n    /** Transaction code */\n    get transactionCode() {\n        return this.document.fields.find((f) => f.type.name === 'TransactionCode');\n    }\n    /** Transit number */\n    get transitNumber() {\n        return this.document.fields.find((f) => f.type.name === 'TransitNumber');\n    }\n}\n/** A check that doesn't conform to any supported standard */\nexport class UnknownCheck extends Check {\n    constructor(document) {\n        super(document);\n    }\n    requiredDocumentType() {\n        return UnknownCheckDocumentType;\n    }\n}\n//# sourceMappingURL=CheckDocumentModel.js.map","/// Auto-generated. Modifications will be overwritten.\n/// Generated from core/document-schemas/CreditCardDocumentModel.yaml\nexport const CreditCardDocumentType = 'CreditCard';\n/** Credit Card Document */\nexport class CreditCard {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return CreditCardDocumentType;\n    }\n    /** The card number of the recognized credit card */\n    get cardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CardNumber');\n    }\n    /** The cardholder name of the recognized credit card */\n    get cardholderName() {\n        return this.document.fields.find((f) => f.type.name === 'CardholderName');\n    }\n    /** The expiry date of the recognized credit card */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n}\n//# sourceMappingURL=CreditCardDocumentModel.js.map","/// Auto-generated. Modifications will be overwritten.\n/// Generated from core/document-schemas/DocumentsModel.yaml\nexport const MRZDocumentType = 'MRZ';\nexport const ParsedDeAddressDocumentType = 'ParsedDeAddress';\nexport const DeIdCardFrontDocumentType = 'DeIdCardFront';\nexport const DeIdCardBackDocumentType = 'DeIdCardBack';\nexport const DePassportDocumentType = 'DePassport';\nexport const EuropeanDriverLicenseFrontDocumentType = 'EuropeanDriverLicenseFront';\nexport const EuropeanDriverLicenseBackDocumentType = 'EuropeanDriverLicenseBack';\nexport const EuropeanDriverLicenseBackCategoryDocumentType = 'Category';\nexport const EuropeanDriverLicenseBackCategoriesDocumentType = 'Categories';\nexport const EuropeanDriverLicenseBackCategoriesADocumentType = 'A';\nexport const EuropeanDriverLicenseBackCategoriesA1DocumentType = 'A1';\nexport const EuropeanDriverLicenseBackCategoriesA2DocumentType = 'A2';\nexport const EuropeanDriverLicenseBackCategoriesAMDocumentType = 'AM';\nexport const EuropeanDriverLicenseBackCategoriesBDocumentType = 'B';\nexport const EuropeanDriverLicenseBackCategoriesB1DocumentType = 'B1';\nexport const EuropeanDriverLicenseBackCategoriesBEDocumentType = 'BE';\nexport const EuropeanDriverLicenseBackCategoriesCDocumentType = 'C';\nexport const EuropeanDriverLicenseBackCategoriesC1DocumentType = 'C1';\nexport const EuropeanDriverLicenseBackCategoriesC1EDocumentType = 'C1E';\nexport const EuropeanDriverLicenseBackCategoriesCEDocumentType = 'CE';\nexport const EuropeanDriverLicenseBackCategoriesDDocumentType = 'D';\nexport const EuropeanDriverLicenseBackCategoriesD1DocumentType = 'D1';\nexport const EuropeanDriverLicenseBackCategoriesD1EDocumentType = 'D1E';\nexport const EuropeanDriverLicenseBackCategoriesDEDocumentType = 'DE';\nexport const EuropeanDriverLicenseBackCategoriesLDocumentType = 'L';\nexport const EuropeanDriverLicenseBackCategoriesTDocumentType = 'T';\nexport const DeResidencePermitFrontDocumentType = 'DeResidencePermitFront';\nexport const DeResidencePermitBackDocumentType = 'DeResidencePermitBack';\nexport const EuropeanHealthInsuranceCardDocumentType = 'EuropeanHealthInsuranceCard';\nexport const DeHealthInsuranceCardFrontDocumentType = 'DeHealthInsuranceCardFront';\nexport const BrIdCardFrontDocumentType = 'BrIdCardFront';\nexport const BrIdCardBackDocumentType = 'BrIdCardBack';\nexport const BrIdCardFrontPhotoOnlyDocumentType = 'BrIdCardFrontPhotoOnly';\nexport const CnEntryAndExitPermitBackDocumentType = 'CnEntryAndExitPermitBack';\nexport const CnEntryAndExitPermitFrontDocumentType = 'CnEntryAndExitPermitFront';\nexport const CnPermanentResidentCardFrontDocumentType = 'CnPermanentResidentCardFront';\nexport const HkIdentityCardFrontDocumentType = 'HkIdentityCardFront';\nexport const TwEntryAndExitPermitDocumentType = 'TwEntryAndExitPermit';\nexport const MoIdentityCardBackDocumentType = 'MoIdentityCardBack';\nexport const MoIdentityCardFrontDocumentType = 'MoIdentityCardFront';\n/** MRZ part of the document */\nexport class MRZ {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return MRZDocumentType;\n    }\n    /** Birth date */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Check digit birth date */\n    get checkDigitBirthDate() {\n        return this.document.fields.find((f) => f.type.name === 'CheckDigitBirthDate');\n    }\n    /** Check digit document number */\n    get checkDigitDocumentNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CheckDigitDocumentNumber');\n    }\n    /** Check digit expiry date */\n    get checkDigitExpiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'CheckDigitExpiryDate');\n    }\n    /** Check  digit general */\n    get checkDigitGeneral() {\n        return this.document.fields.find((f) => f.type.name === 'CheckDigitGeneral');\n    }\n    /** Check digit personal number */\n    get checkDigitPersonalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CheckDigitPersonalNumber');\n    }\n    /** Date of issuance */\n    get dateOfIssuance() {\n        return this.document.fields.find((f) => f.type.name === 'DateOfIssuance');\n    }\n    /** Document number */\n    get documentNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentNumber');\n    }\n    /** Document type from the DocumentType enum */\n    get documentType() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentType');\n    }\n    /** Document type code */\n    get documentTypeCode() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentTypeCode');\n    }\n    /** Expiry date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Issuing authority */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Language code */\n    get languageCode() {\n        return this.document.fields.find((f) => f.type.name === 'LanguageCode');\n    }\n    /** Nationality */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Office of issuance */\n    get officeOfIssuance() {\n        return this.document.fields.find((f) => f.type.name === 'OfficeOfIssuance');\n    }\n    /** TD1 Optional field (line 2) */\n    get optional1() {\n        return this.document.fields.find((f) => f.type.name === 'Optional1');\n    }\n    /** TD1 Optional field (line 3) */\n    get optional2() {\n        return this.document.fields.find((f) => f.type.name === 'Optional2');\n    }\n    /** PIN code */\n    get pinCode() {\n        return this.document.fields.find((f) => f.type.name === 'PINCode');\n    }\n    /** Personal number */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n    /** Travel document type */\n    get travelDocType() {\n        return this.document.fields.find((f) => f.type.name === 'TravelDocType');\n    }\n    /** Travel document type variant */\n    get travelDocTypeVariant() {\n        return this.document.fields.find((f) => f.type.name === 'TravelDocTypeVariant');\n    }\n    /** Unknown */\n    get unknown() {\n        return this.document.fields.find((f) => f.type.name === 'Unknown');\n    }\n    /** Version number */\n    get versionNumber() {\n        return this.document.fields.find((f) => f.type.name === 'VersionNumber');\n    }\n    /** MRV-A/MRV-B (Travel Visa) Optional field */\n    get visaOptional() {\n        return this.document.fields.find((f) => f.type.name === 'VisaOptional');\n    }\n}\n/** Parsed German Address part of the document */\nexport class ParsedDeAddress {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return ParsedDeAddressDocumentType;\n    }\n    /** District or city area corresponding to postal code */\n    get district() {\n        return this.document.fields.find((f) => f.type.name === 'District');\n    }\n    /** Additional information to district or city area (e.g. Ortsteil, Stadtteil) */\n    get districtAddition() {\n        return this.document.fields.find((f) => f.type.name === 'DistrictAddition');\n    }\n    /** House number */\n    get houseNumber() {\n        return this.document.fields.find((f) => f.type.name === 'HouseNumber');\n    }\n    /** postal code */\n    get postalCode() {\n        return this.document.fields.find((f) => f.type.name === 'PostalCode');\n    }\n    /** Street name */\n    get streetName() {\n        return this.document.fields.find((f) => f.type.name === 'StreetName');\n    }\n}\n/** German ID card, front side */\nexport class DeIdCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DeIdCardFrontDocumentType;\n    }\n    /** Birth date */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Six digit card access number */\n    get cardAccessNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CardAccessNumber');\n    }\n    /** Expiry date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Document ID number (in the top-right corner) */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Maiden name */\n    get maidenName() {\n        return this.document.fields.find((f) => f.type.name === 'MaidenName');\n    }\n    /** Nationality */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Photo image */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Series of the document. The format is YYMM. */\n    get series() {\n        return this.document.fields.find((f) => f.type.name === 'Series');\n    }\n    /** Signature image */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n}\n/** German ID card, back side */\nexport class DeIdCardBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DeIdCardBackDocumentType;\n    }\n    /** Raw Address text value */\n    get address() {\n        return this.document.fields.find((f) => f.type.name === 'Address');\n    }\n    /** Eye color */\n    get eyeColor() {\n        return this.document.fields.find((f) => f.type.name === 'EyeColor');\n    }\n    /** Height */\n    get height() {\n        return this.document.fields.find((f) => f.type.name === 'Height');\n    }\n    /** Issue date */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Issuing authority */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Pseudonym */\n    get pseudonym() {\n        return this.document.fields.find((f) => f.type.name === 'Pseudonym');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Series of the document. The format is YYMM. */\n    get series() {\n        return this.document.fields.find((f) => f.type.name === 'Series');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n    /** The child document of type \"ParsedDeAddress\". */\n    get parsedDeAddress() {\n        const child = this.document.children.find((c) => c.type.name === 'ParsedDeAddress');\n        return new ParsedDeAddress(child);\n    }\n}\n/** German travel passport (Reisepass) */\nexport class DePassport {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DePassportDocumentType;\n    }\n    /** Birth date */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Country code */\n    get countryCode() {\n        return this.document.fields.find((f) => f.type.name === 'CountryCode');\n    }\n    /** Expiry date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Document ID number (in the top-right corner) */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Issue date */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Issuing authority */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Maiden name */\n    get maidenName() {\n        return this.document.fields.find((f) => f.type.name === 'MaidenName');\n    }\n    /** Nationality */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Passport type */\n    get passportType() {\n        return this.document.fields.find((f) => f.type.name === 'PassportType');\n    }\n    /** Photo image */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Signature image */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** European driver license, front side */\nexport class EuropeanDriverLicenseFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return EuropeanDriverLicenseFrontDocumentType;\n    }\n    /** Address (Field 8.) */\n    get address() {\n        return this.document.fields.find((f) => f.type.name === 'Address');\n    }\n    /** Administrative number (Field 10.) */\n    get administrativeNumber() {\n        return this.document.fields.find((f) => f.type.name === 'AdministrativeNumber');\n    }\n    /** Barcode */\n    get barcode() {\n        return this.document.fields.find((f) => f.type.name === 'Barcode');\n    }\n    /** Birth date (Field 3.) */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace (Field 3.) */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Citizenship (Field 4f.) */\n    get citizenship() {\n        return this.document.fields.find((f) => f.type.name === 'Citizenship');\n    }\n    /** Country of the driver license */\n    get country() {\n        return this.document.fields.find((f) => f.type.name === 'Country');\n    }\n    /** Expiry date (Field 4b.) */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Gender (Field 4e.) */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given names (Field 2.) */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Document ID number (in the top-right corner, Field 5.) */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Issue date (Field 4a.) */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Issuing authority (Field 4c.) */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Driver's license categories (Field 9.) */\n    get licenseCategories() {\n        return this.document.fields.find((f) => f.type.name === 'LicenseCategories');\n    }\n    /** MRZ part of the document */\n    get mrz() {\n        return this.document.fields.find((f) => f.type.name === 'MRZ');\n    }\n    /** Photo image */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Restrictions applied for the driver's license (Field 12.) */\n    get restrictions() {\n        return this.document.fields.find((f) => f.type.name === 'Restrictions');\n    }\n    /** Serial number (Field 5b. on Driver Qualification Card) */\n    get serialNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SerialNumber');\n    }\n    /** Signature image (Field 7.) */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname (Field 1.) */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n}\n/** European driver license, back side */\nexport class EuropeanDriverLicenseBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return EuropeanDriverLicenseBackDocumentType;\n    }\n    /** Country of the driver license */\n    get country() {\n        return this.document.fields.find((f) => f.type.name === 'Country');\n    }\n    /** Restrictions applied for the driver's license (Field 12.) */\n    get restrictions() {\n        return this.document.fields.find((f) => f.type.name === 'Restrictions');\n    }\n    /** The child document of type \"Categories\". */\n    get categories() {\n        const child = this.document.children.find((c) => c.type.name === 'Categories');\n        return new EuropeanDriverLicenseBack.Categories(child);\n    }\n}\n(function (EuropeanDriverLicenseBack) {\n    /** A category row from the categories table */\n    class Category {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        /** Restrictions (Column 12.) */\n        get restrictions() {\n            return this.document.fields.find((f) => f.type.name === 'Restrictions');\n        }\n        /** Valid from (Column 10.) */\n        get validFrom() {\n            return this.document.fields.find((f) => f.type.name === 'ValidFrom');\n        }\n        /** Valid until (Column 11.) */\n        get validUntil() {\n            return this.document.fields.find((f) => f.type.name === 'ValidUntil');\n        }\n    }\n    EuropeanDriverLicenseBack.Category = Category;\n    /** Categories table row container */\n    class Categories {\n        get document() {\n            return this._document;\n        }\n        constructor(document) {\n            if (document.type.name !== this.requiredDocumentType()) {\n                throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n            }\n            this._document = document;\n        }\n        requiredDocumentType() {\n            return EuropeanDriverLicenseBackCategoriesDocumentType;\n        }\n        /** The child document of type \"A\". */\n        get a() {\n            const child = this.document.children.find((c) => c.type.name === 'A');\n            return new EuropeanDriverLicenseBack.Categories.A(child);\n        }\n        /** The child document of type \"A1\". */\n        get a1() {\n            const child = this.document.children.find((c) => c.type.name === 'A1');\n            return new EuropeanDriverLicenseBack.Categories.A1(child);\n        }\n        /** The child document of type \"A2\". */\n        get a2() {\n            const child = this.document.children.find((c) => c.type.name === 'A2');\n            return new EuropeanDriverLicenseBack.Categories.A2(child);\n        }\n        /** The child document of type \"AM\". */\n        get am() {\n            const child = this.document.children.find((c) => c.type.name === 'AM');\n            return new EuropeanDriverLicenseBack.Categories.AM(child);\n        }\n        /** The child document of type \"B\". */\n        get b() {\n            const child = this.document.children.find((c) => c.type.name === 'B');\n            return new EuropeanDriverLicenseBack.Categories.B(child);\n        }\n        /** The child document of type \"B1\". */\n        get b1() {\n            const child = this.document.children.find((c) => c.type.name === 'B1');\n            return child ? new EuropeanDriverLicenseBack.Categories.B1(child) : undefined;\n        }\n        /** The child document of type \"BE\". */\n        get be() {\n            const child = this.document.children.find((c) => c.type.name === 'BE');\n            return new EuropeanDriverLicenseBack.Categories.BE(child);\n        }\n        /** The child document of type \"C\". */\n        get c() {\n            const child = this.document.children.find((c) => c.type.name === 'C');\n            return new EuropeanDriverLicenseBack.Categories.C(child);\n        }\n        /** The child document of type \"C1\". */\n        get c1() {\n            const child = this.document.children.find((c) => c.type.name === 'C1');\n            return new EuropeanDriverLicenseBack.Categories.C1(child);\n        }\n        /** The child document of type \"C1E\". */\n        get c1E() {\n            const child = this.document.children.find((c) => c.type.name === 'C1E');\n            return new EuropeanDriverLicenseBack.Categories.C1E(child);\n        }\n        /** The child document of type \"CE\". */\n        get ce() {\n            const child = this.document.children.find((c) => c.type.name === 'CE');\n            return new EuropeanDriverLicenseBack.Categories.CE(child);\n        }\n        /** The child document of type \"D\". */\n        get d() {\n            const child = this.document.children.find((c) => c.type.name === 'D');\n            return new EuropeanDriverLicenseBack.Categories.D(child);\n        }\n        /** The child document of type \"D1\". */\n        get d1() {\n            const child = this.document.children.find((c) => c.type.name === 'D1');\n            return new EuropeanDriverLicenseBack.Categories.D1(child);\n        }\n        /** The child document of type \"D1E\". */\n        get d1E() {\n            const child = this.document.children.find((c) => c.type.name === 'D1E');\n            return new EuropeanDriverLicenseBack.Categories.D1E(child);\n        }\n        /** The child document of type \"DE\". */\n        get de() {\n            const child = this.document.children.find((c) => c.type.name === 'DE');\n            return new EuropeanDriverLicenseBack.Categories.DE(child);\n        }\n        /** The child document of type \"L\". */\n        get l() {\n            const child = this.document.children.find((c) => c.type.name === 'L');\n            return new EuropeanDriverLicenseBack.Categories.L(child);\n        }\n        /** The child document of type \"T\". */\n        get t() {\n            const child = this.document.children.find((c) => c.type.name === 'T');\n            return new EuropeanDriverLicenseBack.Categories.T(child);\n        }\n    }\n    EuropeanDriverLicenseBack.Categories = Categories;\n    (function (Categories) {\n        /** EuropeanDriverLicenseBack.Categories.A */\n        class A extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesADocumentType;\n            }\n        }\n        Categories.A = A;\n        /** EuropeanDriverLicenseBack.Categories.A1 */\n        class A1 extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesA1DocumentType;\n            }\n        }\n        Categories.A1 = A1;\n        /** EuropeanDriverLicenseBack.Categories.A2 */\n        class A2 extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesA2DocumentType;\n            }\n        }\n        Categories.A2 = A2;\n        /** EuropeanDriverLicenseBack.Categories.AM */\n        class AM extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesAMDocumentType;\n            }\n        }\n        Categories.AM = AM;\n        /** EuropeanDriverLicenseBack.Categories.B */\n        class B extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesBDocumentType;\n            }\n        }\n        Categories.B = B;\n        /** EuropeanDriverLicenseBack.Categories.B1 */\n        class B1 extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesB1DocumentType;\n            }\n        }\n        Categories.B1 = B1;\n        /** EuropeanDriverLicenseBack.Categories.BE */\n        class BE extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesBEDocumentType;\n            }\n        }\n        Categories.BE = BE;\n        /** EuropeanDriverLicenseBack.Categories.C */\n        class C extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesCDocumentType;\n            }\n        }\n        Categories.C = C;\n        /** EuropeanDriverLicenseBack.Categories.C1 */\n        class C1 extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesC1DocumentType;\n            }\n        }\n        Categories.C1 = C1;\n        /** EuropeanDriverLicenseBack.Categories.C1E */\n        class C1E extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesC1EDocumentType;\n            }\n        }\n        Categories.C1E = C1E;\n        /** EuropeanDriverLicenseBack.Categories.CE */\n        class CE extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesCEDocumentType;\n            }\n        }\n        Categories.CE = CE;\n        /** EuropeanDriverLicenseBack.Categories.D */\n        class D extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesDDocumentType;\n            }\n        }\n        Categories.D = D;\n        /** EuropeanDriverLicenseBack.Categories.D1 */\n        class D1 extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesD1DocumentType;\n            }\n        }\n        Categories.D1 = D1;\n        /** EuropeanDriverLicenseBack.Categories.D1E */\n        class D1E extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesD1EDocumentType;\n            }\n        }\n        Categories.D1E = D1E;\n        /** EuropeanDriverLicenseBack.Categories.DE */\n        class DE extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesDEDocumentType;\n            }\n        }\n        Categories.DE = DE;\n        /** EuropeanDriverLicenseBack.Categories.L */\n        class L extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesLDocumentType;\n            }\n        }\n        Categories.L = L;\n        /** EuropeanDriverLicenseBack.Categories.T */\n        class T extends Category {\n            constructor(document) {\n                super(document);\n            }\n            requiredDocumentType() {\n                return EuropeanDriverLicenseBackCategoriesTDocumentType;\n            }\n        }\n        Categories.T = T;\n    })(Categories = EuropeanDriverLicenseBack.Categories || (EuropeanDriverLicenseBack.Categories = {}));\n})(EuropeanDriverLicenseBack || (EuropeanDriverLicenseBack = {}));\n/** German Residence Permit (Aufenthaltstitel), Front side */\nexport class DeResidencePermitFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DeResidencePermitFrontDocumentType;\n    }\n    /** Birth date (Geburtsdatum) */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Six digit card access number */\n    get cardAccessNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CardAccessNumber');\n    }\n    /** Expiry date (Gültig bis) */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Gender (Geschlecht) */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Document ID number (in the top-right corner) */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Nationality (Staatsangehörigkeit) */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Photo image */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Place of issue (Ausstellungsort) */\n    get placeOfIssue() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfIssue');\n    }\n    /** Remarks (Anmerkungen) */\n    get remarks() {\n        return this.document.fields.find((f) => f.type.name === 'Remarks');\n    }\n    /** Signature image */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n    /** Title type (Art des Titels) */\n    get titleType() {\n        return this.document.fields.find((f) => f.type.name === 'TitleType');\n    }\n    /** Valid from date (Gültig ab) */\n    get validFrom() {\n        return this.document.fields.find((f) => f.type.name === 'ValidFrom');\n    }\n}\n/** German Residence Permit (Aufenthaltstitel), Back side */\nexport class DeResidencePermitBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DeResidencePermitBackDocumentType;\n    }\n    /** Address (Anschrift) */\n    get address() {\n        return this.document.fields.find((f) => f.type.name === 'Address');\n    }\n    /** Birth date (Geburtsdatum) */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace (Geburtsort) */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Eye color (Augenfarbe) */\n    get eyeColor() {\n        return this.document.fields.find((f) => f.type.name === 'EyeColor');\n    }\n    /** Gender (Geschlecht) */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Height (Größe) */\n    get height() {\n        return this.document.fields.find((f) => f.type.name === 'Height');\n    }\n    /** Issuing authority (Ausländerbehörde) */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Nationality (Staatsangehörigkeit) */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Remarks (Anmerkungen) */\n    get remarks() {\n        return this.document.fields.find((f) => f.type.name === 'Remarks');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n    /** The child document of type \"ParsedDeAddress\". */\n    get parsedDeAddress() {\n        const child = this.document.children.find((c) => c.type.name === 'ParsedDeAddress');\n        return new ParsedDeAddress(child);\n    }\n}\n/** European Health Insurance Card (EHIC). Supports formats with both four and five lines of data.\n */\nexport class EuropeanHealthInsuranceCard {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return EuropeanHealthInsuranceCardDocumentType;\n    }\n    /** Barcode image (only present in some formats) */\n    get barcode() {\n        return this.document.fields.find((f) => f.type.name === 'Barcode');\n    }\n    /** Birth date */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Card number */\n    get cardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CardNumber');\n    }\n    /** Country code (ISO 3166-1 alpha-2) */\n    get countryCode() {\n        return this.document.fields.find((f) => f.type.name === 'CountryCode');\n    }\n    /** Expiry date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Issuer name */\n    get issuerName() {\n        return this.document.fields.find((f) => f.type.name === 'IssuerName');\n    }\n    /** Issuer number */\n    get issuerNumber() {\n        return this.document.fields.find((f) => f.type.name === 'IssuerNumber');\n    }\n    /** Personal number */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n    /** Signature image */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n}\n/** Front side of the German health insurance card (elektronische Gesundheitskarte).\nFor the backside, see EuropeanHealthInsuranceCard.\n */\nexport class DeHealthInsuranceCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return DeHealthInsuranceCardFrontDocumentType;\n    }\n    /** Six digit card access number */\n    get cardAccessNumber() {\n        return this.document.fields.find((f) => f.type.name === 'CardAccessNumber');\n    }\n    /** Issuer name */\n    get issuerName() {\n        return this.document.fields.find((f) => f.type.name === 'IssuerName');\n    }\n    /** Issuer number (Versicherung bzw. Kennnummer des Trägers) */\n    get issuerNumber() {\n        return this.document.fields.find((f) => f.type.name === 'IssuerNumber');\n    }\n    /** Full name with title */\n    get name() {\n        return this.document.fields.find((f) => f.type.name === 'Name');\n    }\n    /** Personal number (Versichertennummer) */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n}\n/** Brazilian National Identity Card (Registro Geral) */\nexport class BrIdCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return BrIdCardFrontDocumentType;\n    }\n    /** Código de Barras - Barcode */\n    get barcode() {\n        return this.document.fields.find((f) => f.type.name === 'Barcode');\n    }\n    /** Birth date */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Tipo Sanguíneo/Fator RH - Blood type and RH factor */\n    get bloodType() {\n        return this.document.fields.find((f) => f.type.name === 'BloodType');\n    }\n    /** Dados do Registro Civil - Civil Registry Details */\n    get civilRegistryDetails() {\n        return this.document.fields.find((f) => f.type.name === 'CivilRegistryDetails');\n    }\n    /** CNH (Carteira Nacional de Habilitação) - Driver’s license number */\n    get driverLicenseNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DriverLicenseNumber');\n    }\n    /** Expiry date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Polegar Direito - Right thumbprint */\n    get fingerprint() {\n        return this.document.fields.find((f) => f.type.name === 'Fingerprint');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** CNS (Cartão Nacional de Saúde) - National Health Card number */\n    get healthCardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'HealthCardNumber');\n    }\n    /** DNI (Documento Nacional de Identidade) - National Identity Document number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Data de Expedição - Date the document was issued */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Órgão Expedidor - Issuing Authority */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Assinatura do Diretor - Signature of the issuing authority */\n    get issuingAuthoritySignature() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthoritySignature');\n    }\n    /** Certificado Militar - Military certificate number */\n    get militaryCertificateNumber() {\n        return this.document.fields.find((f) => f.type.name === 'MilitaryCertificateNumber');\n    }\n    /** Nacionalidade - Nationality */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Observações - Observations */\n    get observations() {\n        return this.document.fields.find((f) => f.type.name === 'Observations');\n    }\n    /** Pais - Parents */\n    get parents() {\n        return this.document.fields.find((f) => f.type.name === 'Parents');\n    }\n    /** Registro Geral (RG) - General Registration number, main ID number */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n    /** Photo image */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Local de Emissão - Place of Issue */\n    get placeOfIssue() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfIssue');\n    }\n    /** Identidade Profissional - Professional identity number */\n    get professionalIdentityNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ProfessionalIdentityNumber');\n    }\n    /** Assinatura - Signature */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** NIS/PIS/PASEP - Social Security and Employment benefits number */\n    get socialSecurityNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SocialSecurityNumber');\n    }\n    /** UF - Brazilian state code for the Work Card */\n    get stateCode() {\n        return this.document.fields.find((f) => f.type.name === 'StateCode');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n    /** CPF (Cadastro de Pessoas Físicas) - Brazilian taxpayer number */\n    get taxpayerNumber() {\n        return this.document.fields.find((f) => f.type.name === 'TaxpayerNumber');\n    }\n    /** Título de Eleitor - Voter registration number */\n    get voterRegistrationNumber() {\n        return this.document.fields.find((f) => f.type.name === 'VoterRegistrationNumber');\n    }\n    /** CTPS (Carteira de Trabalho e Previdência Social) - Work Card number */\n    get workCardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'WorkCardNumber');\n    }\n    /** Série - Series number associated with the Work Card */\n    get workCardSeries() {\n        return this.document.fields.find((f) => f.type.name === 'WorkCardSeries');\n    }\n}\n/** Brazilian National Identity Card (Registro Geral), back side */\nexport class BrIdCardBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return BrIdCardBackDocumentType;\n    }\n    /** Barcode */\n    get barcode() {\n        return this.document.fields.find((f) => f.type.name === 'Barcode');\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Birthplace */\n    get birthplace() {\n        return this.document.fields.find((f) => f.type.name === 'Birthplace');\n    }\n    /** Dados do Registro Civil - Civil Registry Details */\n    get civilRegistryDetails() {\n        return this.document.fields.find((f) => f.type.name === 'CivilRegistryDetails');\n    }\n    /** CNH (Carteira Nacional de Habilitação) - Driver’s license number */\n    get driverLicenseNumber() {\n        return this.document.fields.find((f) => f.type.name === 'DriverLicenseNumber');\n    }\n    /** Expiry Date */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Fingerprint */\n    get fingerprint() {\n        return this.document.fields.find((f) => f.type.name === 'Fingerprint');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** CNS (Cartão Nacional de Saúde) - National Health Card number */\n    get healthCardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'HealthCardNumber');\n    }\n    /** DNI (Documento Nacional de Identidade) - National Identity Document number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Issue Date */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Órgão Expedidor - Issuing Authority */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Certificado Militar - Military certificate number */\n    get militaryCertificateNumber() {\n        return this.document.fields.find((f) => f.type.name === 'MilitaryCertificateNumber');\n    }\n    /** Page Number of the document */\n    get pageNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PageNumber');\n    }\n    /** Filiação - Parents */\n    get parents() {\n        return this.document.fields.find((f) => f.type.name === 'Parents');\n    }\n    /** Registro Geral (RG) - General Registration number, main ID number */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Local de Emissão - Place where the identity card was issued */\n    get placeOfIssue() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfIssue');\n    }\n    /** Naturalidade - Place of Origin */\n    get placeOfOrigin() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfOrigin');\n    }\n    /** Identidade Profissional - Professional identity number */\n    get professionalIdentityNumber() {\n        return this.document.fields.find((f) => f.type.name === 'ProfessionalIdentityNumber');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Assinatura - Signature */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** NIS/PIS/PASEP - Social Security and Employment benefits number */\n    get socialSecurityNumber() {\n        return this.document.fields.find((f) => f.type.name === 'SocialSecurityNumber');\n    }\n    /** UF - Brazilian state code related to the Work Card */\n    get stateCode() {\n        return this.document.fields.find((f) => f.type.name === 'StateCode');\n    }\n    /** CPF (Cadastro de Pessoas Físicas) - Brazilian taxpayer number */\n    get taxpayerNumber() {\n        return this.document.fields.find((f) => f.type.name === 'TaxpayerNumber');\n    }\n    /** Título de Eleitor - Voter registration number */\n    get voterRegistrationNumber() {\n        return this.document.fields.find((f) => f.type.name === 'VoterRegistrationNumber');\n    }\n    /** CTPS (Carteira de Trabalho e Previdência Social) - Work Card number */\n    get workCardNumber() {\n        return this.document.fields.find((f) => f.type.name === 'WorkCardNumber');\n    }\n    /** Série - Series number associated with the Work Card */\n    get workCardSeries() {\n        return this.document.fields.find((f) => f.type.name === 'WorkCardSeries');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** BrIdCardFrontPhotoOnly */\nexport class BrIdCardFrontPhotoOnly {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return BrIdCardFrontPhotoOnlyDocumentType;\n    }\n    /** Fingerprint */\n    get fingerprint() {\n        return this.document.fields.find((f) => f.type.name === 'Fingerprint');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n}\n/** CnEntryAndExitPermitBack */\nexport class CnEntryAndExitPermitBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return CnEntryAndExitPermitBackDocumentType;\n    }\n    /** Barcode on the bottom of the document */\n    get barcodeBottom() {\n        return this.document.fields.find((f) => f.type.name === 'BarcodeBottom');\n    }\n    /** Barcode on the top of the document */\n    get barcodeTop() {\n        return this.document.fields.find((f) => f.type.name === 'BarcodeTop');\n    }\n    /** Hong Kong Valid From Date */\n    get hongKongValidFrom() {\n        return this.document.fields.find((f) => f.type.name === 'HongKongValidFrom');\n    }\n    /** Hong Kong Valid Until Date */\n    get hongKongValidUntil() {\n        return this.document.fields.find((f) => f.type.name === 'HongKongValidUntil');\n    }\n    /** Macao Valid From Date */\n    get macaoValidFrom() {\n        return this.document.fields.find((f) => f.type.name === 'MacaoValidFrom');\n    }\n    /** Macao Valid Until Date */\n    get macaoValidUntil() {\n        return this.document.fields.find((f) => f.type.name === 'MacaoValidUntil');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Taiwan Identification Number */\n    get taiwanIDNumber() {\n        return this.document.fields.find((f) => f.type.name === 'TaiwanIDNumber');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** CnEntryAndExitPermitFront */\nexport class CnEntryAndExitPermitFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return CnEntryAndExitPermitFrontDocumentType;\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Business Type */\n    get business() {\n        return this.document.fields.find((f) => f.type.name === 'Business');\n    }\n    /** Destinations */\n    get destinations() {\n        return this.document.fields.find((f) => f.type.name === 'Destinations');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Identity Document Number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Date when the permit was issued */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** MRZ text value */\n    get mrzLine() {\n        return this.document.fields.find((f) => f.type.name === 'MRZLine');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Place where the permit was issued */\n    get placeOfIssue() {\n        return this.document.fields.find((f) => f.type.name === 'PlaceOfIssue');\n    }\n    /** Ports where the cardholder can enter or exit */\n    get portsOfExitAndEntry() {\n        return this.document.fields.find((f) => f.type.name === 'PortsOfExitAndEntry');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Number of times the cardholder has exited or entered */\n    get timesOfExitAndEntry() {\n        return this.document.fields.find((f) => f.type.name === 'TimesOfExitAndEntry');\n    }\n    /** Start date of the permit validity */\n    get validFrom() {\n        return this.document.fields.find((f) => f.type.name === 'ValidFrom');\n    }\n    /** End date of the permit validity */\n    get validUntil() {\n        return this.document.fields.find((f) => f.type.name === 'ValidUntil');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** CnPermanentResidentCardFront */\nexport class CnPermanentResidentCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return CnPermanentResidentCardFrontDocumentType;\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Identity Document Number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Authority issuing the card */\n    get issuingAuthority() {\n        return this.document.fields.find((f) => f.type.name === 'IssuingAuthority');\n    }\n    /** Nationality */\n    get nationality() {\n        return this.document.fields.find((f) => f.type.name === 'Nationality');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Start date of the validity of the card */\n    get validFrom() {\n        return this.document.fields.find((f) => f.type.name === 'ValidFrom');\n    }\n    /** End date of the validity of the card */\n    get validUntil() {\n        return this.document.fields.find((f) => f.type.name === 'ValidUntil');\n    }\n}\n/** HkIdentityCardFront */\nexport class HkIdentityCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return HkIdentityCardFrontDocumentType;\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Given Names represented in Chinese code */\n    get givenNamesInChineseCode() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNamesInChineseCode');\n    }\n    /** Identity Document Number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** ID Symbols */\n    get idSymbols() {\n        return this.document.fields.find((f) => f.type.name === 'IDSymbols');\n    }\n    /** Date when the cardholder was initially registered */\n    get initialRegistrationDate() {\n        return this.document.fields.find((f) => f.type.name === 'InitialRegistrationDate');\n    }\n    /** Date when the identity card was issued */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n}\n/** TwEntryAndExitPermit */\nexport class TwEntryAndExitPermit {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return TwEntryAndExitPermitDocumentType;\n    }\n    /** Barcode on the left of the document */\n    get barcodeLeft() {\n        return this.document.fields.find((f) => f.type.name === 'BarcodeLeft');\n    }\n    /** Barcode on the right of the document */\n    get barcodeRight() {\n        return this.document.fields.find((f) => f.type.name === 'BarcodeRight');\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Country Code */\n    get countryCode() {\n        return this.document.fields.find((f) => f.type.name === 'CountryCode');\n    }\n    /** Country of Residency */\n    get countryOfResidency() {\n        return this.document.fields.find((f) => f.type.name === 'CountryOfResidency');\n    }\n    /** Document Type */\n    get documentType() {\n        return this.document.fields.find((f) => f.type.name === 'DocumentType');\n    }\n    /** Entry inspection information */\n    get entryInspection() {\n        return this.document.fields.find((f) => f.type.name === 'EntryInspection');\n    }\n    /** Exit inspection information */\n    get exitInspection() {\n        return this.document.fields.find((f) => f.type.name === 'ExitInspection');\n    }\n    /** Expiry Date of the permit */\n    get expiryDate() {\n        return this.document.fields.find((f) => f.type.name === 'ExpiryDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Identity Document Number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Date when the permit was issued */\n    get issueDate() {\n        return this.document.fields.find((f) => f.type.name === 'IssueDate');\n    }\n    /** Passport Number */\n    get passportNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PassportNumber');\n    }\n    /** Personal number */\n    get personalNumber() {\n        return this.document.fields.find((f) => f.type.name === 'PersonalNumber');\n    }\n    /** Photograph */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Remarks section of the permit */\n    get remarks() {\n        return this.document.fields.find((f) => f.type.name === 'Remarks');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** MoIdentityCardBack */\nexport class MoIdentityCardBack {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return MoIdentityCardBackDocumentType;\n    }\n    /** Raw MRZ text value */\n    get rawMRZ() {\n        return this.document.fields.find((f) => f.type.name === 'RawMRZ');\n    }\n    /** Validation Photo */\n    get validationPhoto() {\n        return this.document.fields.find((f) => f.type.name === 'ValidationPhoto');\n    }\n    /** The child document of type \"MRZ\". */\n    get mrz() {\n        const child = this.document.children.find((c) => c.type.name === 'MRZ');\n        return new MRZ(child);\n    }\n}\n/** MoIdentityCardFront */\nexport class MoIdentityCardFront {\n    get document() {\n        return this._document;\n    }\n    constructor(document) {\n        if (document.type.name !== this.requiredDocumentType()) {\n            throw new Error(`Expected document type ${this.requiredDocumentType()}, got ${document.type.name}`);\n        }\n        this._document = document;\n    }\n    requiredDocumentType() {\n        return MoIdentityCardFrontDocumentType;\n    }\n    /** Date of Birth */\n    get birthDate() {\n        return this.document.fields.find((f) => f.type.name === 'BirthDate');\n    }\n    /** Gender */\n    get gender() {\n        return this.document.fields.find((f) => f.type.name === 'Gender');\n    }\n    /** Given Names */\n    get givenNames() {\n        return this.document.fields.find((f) => f.type.name === 'GivenNames');\n    }\n    /** Identity Document Number */\n    get id() {\n        return this.document.fields.find((f) => f.type.name === 'ID');\n    }\n    /** Photo */\n    get photo() {\n        return this.document.fields.find((f) => f.type.name === 'Photo');\n    }\n    /** Signature */\n    get signature() {\n        return this.document.fields.find((f) => f.type.name === 'Signature');\n    }\n    /** Surname */\n    get surname() {\n        return this.document.fields.find((f) => f.type.name === 'Surname');\n    }\n    /** Start date of the card validity */\n    get validFrom() {\n        return this.document.fields.find((f) => f.type.name === 'ValidFrom');\n    }\n    /** End date of the card validity */\n    get validUntil() {\n        return this.document.fields.find((f) => f.type.name === 'ValidUntil');\n    }\n    /** Validation photo */\n    get validationPhoto() {\n        return this.document.fields.find((f) => f.type.name === 'ValidationPhoto');\n    }\n}\n//# sourceMappingURL=DocumentsModel.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/ImageTypes.yaml\nexport const ImageRotationValues = ['NONE', 'CLOCKWISE_90', 'CLOCKWISE_180', 'COUNTERCLOCKWISE_90'];\n//# sourceMappingURL=ImageTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/PDFConfigurationTypes.yaml\nimport { PartiallyConstructible } from '../utils/utils';\n/**\nPDF attributes.\n*/\nexport class PdfAttributes extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<PdfAttributes>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Author.\n          \n          Default is \"Created with Scanbot SDK\"\n          */\n        this.author = 'Created with Scanbot SDK';\n        /**\n          Creator.\n          \n          Default is \"\"\n          */\n        this.creator = '';\n        /**\n          Title.\n          \n          Default is \"\"\n          */\n        this.title = '';\n        /**\n          Subject.\n          \n          Default is \"\"\n          */\n        this.subject = '';\n        /**\n          Keywords.\n          \n          Default is \"\"\n          */\n        this.keywords = '';\n        if (source.author !== undefined) {\n            this.author = source.author;\n        }\n        if (source.creator !== undefined) {\n            this.creator = source.creator;\n        }\n        if (source.title !== undefined) {\n            this.title = source.title;\n        }\n        if (source.subject !== undefined) {\n            this.subject = source.subject;\n        }\n        if (source.keywords !== undefined) {\n            this.keywords = source.keywords;\n        }\n    }\n}\nexport const PageSizeValues = [\n    'LETTER',\n    'LEGAL',\n    'A3',\n    'A4',\n    'A5',\n    'B4',\n    'B5',\n    'EXECUTIVE',\n    'US4x6',\n    'US4x8',\n    'US5x7',\n    'COMM10',\n    'CUSTOM',\n];\nexport const PageDirectionValues = ['PORTRAIT', 'LANDSCAPE', 'AUTO'];\nexport const PageFitValues = ['FIT_IN', 'FILL_IN', 'STRETCH', 'NONE'];\nexport const ResamplingMethodValues = ['NONE', 'NEAREST', 'LINEAR', 'CUBIC', 'LANCZOS4', 'AREA'];\n/**\nThe parameters `pageSize`, `pageFit`, `dpi` and `resamplingMethod` interact in a complex way\nwhen adding bitmap images (JPEG, PNG, or raw) to the PDF.\nThere are three cases to consider:\n1. `pageSize` is `CUSTOM`:\n   in this case `dpi` is used as the conversion ratio to calculate both the physical page and\n   image sizes in inches from the bitmap dimensions. `resamplingMethod` is ignored.\n2. `pageSize` is not `CUSTOM` AND `pageFit` is `NONE`:\n   in this case `dpi` is used as the conversion ratio to calculate only the physical image\n   size in inches from the bitmap dimensions. The image is centered onto the page.\n   `resamplingMethod` is ignored.\n3. `pageSize` is not `CUSTOM` AND `pageFit` is not `NONE`:\n   in this case the page has a pre-determined physical size and we want to stretch the image to\n   fit the page in one of the ways described by `pageFit`. The image DPI is automatically\n   calculated for each image from the given physical page size, page fit setting and image\n   dimensions. There are two sub-cases to consider:\n   a. `resamplingMethod` is NONE OR the calculated DPI is less than or equal to `dpi`:\n      in this case the image is added to the PDF without resampling, which means that the image\n      rectangle is simply rescaled to fit into the page as specified by `pageFit` and\n      `pageSize`.\n   b. `resamplingMethod` is not NONE AND the calculated DPI is greater than `dpi`:\n      in this case the bitmap of the image is resampled to match `dpi` using the selected method\n      before adding it to the PDF. This will result in a bitmap that is smaller than the\n      original image and hence, the resulting PDF will be smaller in size.\n*/\nexport class PdfConfiguration extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<PdfConfiguration>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Attributes.\n          */\n        this.attributes = new PdfAttributes({});\n        /**\n          Physical size of the page. If CUSTOM, the page size will be set as the image size at given dpi.\n          \n          Default is A4\n          */\n        this.pageSize = 'A4';\n        /**\n          Page direction.\n          \n          Default is PORTRAIT\n          */\n        this.pageDirection = 'PORTRAIT';\n        /**\n          How to fit the image into the page. Only used if `pageSize` is not `CUSTOM`.\n          The image can either be stretched to fill the page,\n          in one of three ways, or centered on the page without stretching.\n          \n          Default is FIT_IN\n          */\n        this.pageFit = 'FIT_IN';\n        /**\n          The `dpi` parameter has two different meanings depending on the value of `pageSize` and\n          `pageFit`. If pageSize is CUSTOM or pageFit is NONE, then `dpi` is the conversion ratio used\n          to convert from units of pixels to physical inches when adding bitmap images (JPEG, PNG, or\n          raw) to the PDF. Otherwise, if `resamplingMethod` is not NONE, then the image is downscaled\n          if necessary (if the image after being fit to the page has a higher calculated DPI than\n          `dpi`) to match `dpi` before adding it to the PDF. Otherwise, the setting is ignored and the\n          calculated image DPI is used instead.\n          \n          Default is 72\n          */\n        this.dpi = 72;\n        /**\n          JPEG quality for images.\n          Applies if an image is added as a cv::Mat and therefore needs to be encoded.\n          Also applies if `resamplingMethod` not NONE and the image being added needs to be\n          downscaled. Otherwise, when adding JPEG files to the PDF, the files are copied directly into\n          the PDF and not re-encoded, which is many times faster and also preserves the quality of the\n          original.\n          \n          Default is 80\n          */\n        this.jpegQuality = 80;\n        /**\n          Resampling method.\n          \n          Default is NONE\n          */\n        this.resamplingMethod = 'NONE';\n        if (source.attributes !== undefined) {\n            this.attributes = new PdfAttributes(source.attributes);\n        }\n        if (source.pageSize !== undefined) {\n            this.pageSize = source.pageSize;\n        }\n        if (source.pageDirection !== undefined) {\n            this.pageDirection = source.pageDirection;\n        }\n        if (source.pageFit !== undefined) {\n            this.pageFit = source.pageFit;\n        }\n        if (source.dpi !== undefined) {\n            this.dpi = source.dpi;\n        }\n        if (source.jpegQuality !== undefined) {\n            this.jpegQuality = source.jpegQuality;\n        }\n        if (source.resamplingMethod !== undefined) {\n            this.resamplingMethod = source.resamplingMethod;\n        }\n    }\n}\n//# sourceMappingURL=PdfConfigurationTypes.js.map","/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.\n/// Generated from core/schemas/TIFFTypes.yaml\nimport { ParametricFilter } from '../image_filters/ParametricFilters';\nimport { PartiallyConstructible } from '../utils/utils';\nexport const CompressionModeValues = [\n    'NONE',\n    'CCITTRLE',\n    'CCITT_T4',\n    'CCITT_T6',\n    'LZW',\n    'JPEG',\n    'CCITTRLEW',\n    'PACKBITS',\n    'DEFLATE',\n    'ADOBE_DEFLATE',\n];\nexport const BinarizationValues = ['DISABLED', 'ENABLED', 'ENABLED_IF_BINARIZATION_FILTER_SET'];\n/** @internal */\nexport var UserFieldValue;\n(function (UserFieldValue) {\n    /** @internal */\n    function From(source) {\n        const _type = source['_type'];\n        switch (_type) {\n            case 'UserFieldDoubleValue':\n                return new UserFieldDoubleValue(source);\n            case 'UserFieldStringValue':\n                return new UserFieldStringValue(source);\n            case 'UserFieldIntValue':\n                return new UserFieldIntValue(source);\n            default:\n                throw `Unknown child class name: ${_type}`;\n        }\n    }\n    UserFieldValue.From = From;\n})(UserFieldValue || (UserFieldValue = {}));\n/**\nDouble value (TIFF_DOUBLE).\n*/\nexport class UserFieldDoubleValue extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<UserFieldDoubleValue>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'UserFieldDoubleValue';\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n    }\n}\n/**\nASCII string value (TIFF_ASCII).\n*/\nexport class UserFieldStringValue extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<UserFieldStringValue>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'UserFieldStringValue';\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n    }\n}\n/**\n32-bit int value (TIFF_LONG).\n*/\nexport class UserFieldIntValue extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<UserFieldIntValue>`} */\n    constructor(source = {}) {\n        super();\n        this._type = 'UserFieldIntValue';\n        if (source.value !== undefined) {\n            this.value = source.value;\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n    }\n}\n/**\nUser-defined TIFF field.\n*/\nexport class UserField extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<UserField>`} */\n    constructor(source = {}) {\n        super();\n        if (source.tag !== undefined) {\n            this.tag = source.tag;\n        }\n        else {\n            throw new Error('tag must be present in constructor argument');\n        }\n        if (source.name !== undefined) {\n            this.name = source.name;\n        }\n        else {\n            throw new Error('name must be present in constructor argument');\n        }\n        if (source.value !== undefined) {\n            this.value = UserFieldValue.From(source.value);\n        }\n        else {\n            throw new Error('value must be present in constructor argument');\n        }\n    }\n}\n/**\nTIFF generator parameters.\n*/\nexport class TiffGeneratorParameters extends PartiallyConstructible {\n    /** @param source {@displayType `DeepPartial<TiffGeneratorParameters>`} */\n    constructor(source = {}) {\n        super();\n        /**\n          Compression.\n          \n          Default is LZW\n          */\n        this.compression = 'LZW';\n        /**\n          JPEG quality (TIFFTAG_JPEGQUALITY). Values range from 0 to 100.\n          \n          Default is 80\n          */\n        this.jpegQuality = 80;\n        /**\n          ZIP/Deflate compression level (TIFFTAG_ZIPQUALITY). Values range from 1 to 9.\n          \n          Default is 6\n          */\n        this.zipCompressionLevel = 6;\n        /**\n          DPI value.\n          \n          Default is 72\n          */\n        this.dpi = 72;\n        /**\n          User-defined fields.\n          */\n        this.userFields = [];\n        /**\n          Filter to apply to the input image when adding pages with binarization.\n          If set, the filter is applied to the input image and the resulting image is stored as a 1-bit TIFF.\n          When storing documents it's typically best to use the BINARY_DOCUMENT_OPTIMIZED_COMPRESSION compression mode (CCITT_T6)\n          instead of the default, as it tends to produce the smallest file sizes.\n          If not set, simple thresholding is applied to the image, instead.\n          */\n        this.binarizationFilter = null;\n        if (source.compression !== undefined) {\n            this.compression = source.compression;\n        }\n        if (source.jpegQuality !== undefined) {\n            this.jpegQuality = source.jpegQuality;\n        }\n        if (source.zipCompressionLevel !== undefined) {\n            this.zipCompressionLevel = source.zipCompressionLevel;\n        }\n        if (source.dpi !== undefined) {\n            this.dpi = source.dpi;\n        }\n        if (source.userFields !== undefined) {\n            this.userFields = source.userFields.map((it) => {\n                return new UserField(it);\n            });\n        }\n        if (source.binarizationFilter !== undefined) {\n            this.binarizationFilter =\n                source.binarizationFilter != null ? ParametricFilter.From(source.binarizationFilter) : null;\n        }\n    }\n}\n(function (TiffGeneratorParameters) {\n    /**\n      Default compression.\n      \n      Default is LZW\n      */\n    TiffGeneratorParameters.defaultCompression = 'LZW';\n    /**\n      Compression mode typically producing the smallest file sizes for binary (1-bit) document images.\n      \n      Default is CCITT_T6\n      */\n    TiffGeneratorParameters.binaryDocumentOptimizedCompression = 'CCITT_T6';\n})(TiffGeneratorParameters || (TiffGeneratorParameters = {}));\n//# sourceMappingURL=TiffTypes.js.map","import { registerPlugin } from '@capacitor/core';\nimport { AnalyticsEvent } from './analytics/Analytics';\nimport { BarcodeScannerResult } from './barcode/BarcodeScannerTypes';\nimport { CheckScanningResult } from './check/CheckScannerTypes';\nimport { CreditCardScanningResult } from './credit_card/CreditCardTypes';\nimport { DocumentDataExtractionResult, DocumentVerificationReport, } from './document_data_extractor/DocumentDataExtractorTypes';\nimport { DocumentData } from './document_scanner/DocumentData';\nimport { DocumentQualityAnalyzerResult } from './dqa/DocumentQualityAnalyzerTypes';\nimport { EuropeanHealthInsuranceCardRecognitionResult, } from './ehic/EuropeanHealthInsuranceCardTypes';\nimport { MedicalCertificateScanningResult } from './medical_certificate/MedicalCertificateTypes';\nimport { MrzScannerResult } from './mrz/MrzTypes';\nimport { mapRTUUIResult } from './utils/utils';\nimport { VinScannerResult } from './vin/VinScannerTypes';\nconst _registeredPlugin = registerPlugin('ScanbotSDKCapacitor', {});\n/** @internal */\nexport const _ScanbotSDKInternalUiV2 = _registeredPlugin;\n/** @internal */\nexport const ScanbotSDKInternal = _registeredPlugin;\nconst ScanbotDocument = {\n    /**\n     * Create a new document.\n     */\n    createDocument(params) {\n        return ScanbotSDKInternal.createDocument(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Create a new document from legacy pages.\n     */\n    createDocumentFromLegacyPages(params) {\n        return ScanbotSDKInternal.createDocumentFromLegacyPages(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Create a new document from a PDF file.\n     */\n    createDocumentFromPDF(params) {\n        return ScanbotSDKInternal.createDocumentFromPDF(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Check if a document with the given ID exists.\n     */\n    documentExists(params) {\n        return ScanbotSDKInternal.documentExists(params);\n    },\n    /**\n     * Load a document by its ID.\n     */\n    loadDocument(params) {\n        return ScanbotSDKInternal.loadDocument(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Gets all stored document IDs.\n     */\n    storedDocumentIDs() {\n        return ScanbotSDKInternal.storedDocumentIDs();\n    },\n    /**\n     * Clone a document by its ID.\n     */\n    cloneDocument(params) {\n        return ScanbotSDKInternal.cloneDocument(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Delete a document by its ID.\n     */\n    deleteDocument(params) {\n        return ScanbotSDKInternal.deleteDocument(params);\n    },\n    /**\n     * Delete all documents.\n     */\n    deleteAllDocuments() {\n        return ScanbotSDKInternal.deleteAllDocuments();\n    },\n    /**\n     * Creates a PDF for the given document.\n     * Please check the extra options that are part of the input params to modify the created PDF file per your needs.\n     */\n    createPDF(params) {\n        return ScanbotSDKInternal.createPDFForDocument(params);\n    },\n    /**\n     * Creates a TIFF for the given document.\n     * Please check the extra options that are part of the input params to modify the created TIFF file per your needs.\n     */\n    createTIFF(params) {\n        return ScanbotSDKInternal.createTIFF(params);\n    },\n    /**\n     * Add a new page to a document and return the updated document.\n     */\n    addPage(params) {\n        return ScanbotSDKInternal.addPage(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Move a page in a document and return the updated document.\n     */\n    movePage(params) {\n        return ScanbotSDKInternal.movePage(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Modify a page in a document and return the updated document.\n     */\n    modifyPage(params) {\n        return ScanbotSDKInternal.modifyPage(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Remove a page from a document.\n     */\n    removePage(params) {\n        return ScanbotSDKInternal.removePageFromDocument(params).then((result) => new DocumentData(result));\n    },\n    /**\n     * Remove all pages from a document in one batch operation.\n     */\n    removeAllPages(params) {\n        return ScanbotSDKInternal.removeAllPages(params).then((result) => new DocumentData(result));\n    },\n};\nexport const ScanbotSDK = {\n    Document: ScanbotDocument,\n    /**\n     * Opens the Ready-To-Use UI Document Scanner screen with the desired configuration.\n     *\n     * @deprecated Use ***startDocumentScanner*** from ***'capacitor-plugin-scanbot-sdk/ui_v2'*** instead.\n     */\n    startDocumentScanner(configuration) {\n        return ScanbotSDKInternal.startDocumentScanner(configuration);\n    },\n    /**\n     * Forces the Ready-To-Use UI Document Scanner screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeDocumentScanner() {\n        return ScanbotSDKInternal.closeDocumentScanner();\n    },\n    /**\n     * Opens the Ready-To-Use UI Finder Document Scanner screen with the desired configuration.\n     *\n     * @deprecated Use ***startDocumentScanner*** from ***'capacitor-plugin-scanbot-sdk/ui_v2'*** instead.\n     */\n    startFinderDocumentScanner(configuration) {\n        return ScanbotSDKInternal.startFinderDocumentScanner(configuration);\n    },\n    /**\n     * Forces the Ready-To-Use UI Finder Document Scanner screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeFinderDocumentScanner() {\n        return ScanbotSDKInternal.closeFinderDocumentScanner();\n    },\n    /**\n     * Opens the Ready-To-Use UI Cropping screen with the desired configuration.\n     *\n     * @deprecated Use ***startCroppingScreen*** from ***'capacitor-plugin-scanbot-sdk/ui_v2'*** instead.\n     */\n    startCroppingScreen(params) {\n        return ScanbotSDKInternal.startCroppingScreen(params);\n    },\n    /**\n     * Forces the Ready-To-Use UI Cropping screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeCroppingScreen() {\n        return ScanbotSDKInternal.closeCroppingScreen();\n    },\n    /**\n     * Opens the Ready-To-Use UI European Health Insurance Card Scanner screen with the desired configuration.\n     *\n     * @deprecated Use ***startDocumentDataExtractor*** instead and enable ***DE_HEALTH_INSURANCE_CARD_FRONT*** and ***EU_HEALTH_INSURANCE_CARD*** document formats.\n     */\n    async startEHICScanner(configuration) {\n        return ScanbotSDKInternal.startEHICScanner(configuration).then((result) => mapRTUUIResult(result, EuropeanHealthInsuranceCardRecognitionResult));\n    },\n    /**\n     * Forces the Ready-To-Use UI European Health Insurance Card Scanner screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeEHICScanner() {\n        return ScanbotSDKInternal.closeEHICScanner();\n    },\n    /**\n     * Opens the Ready-To-Use UI Medical Certificate Scanner screen with the desired configuration.\n     */\n    async startMedicalCertificateScanner(configuration) {\n        return ScanbotSDKInternal.startMedicalCertificateScanner(configuration).then((result) => mapRTUUIResult(result, MedicalCertificateScanningResult));\n    },\n    /**\n     * Forces the Ready-To-Use UI Medical Certificate Scanner screen to close while it is running.\n     */\n    closeMedicalCertificateScanner() {\n        return ScanbotSDKInternal.closeMedicalCertificateScanner();\n    },\n    /**\n     * Opens the Ready-To-Use UI Check Scanner screen with the desired configuration.\n     *\n     * @deprecated Use ***startCheckScanner*** from ***'capacitor-plugin-scanbot-sdk/ui_v2'*** instead.\n     */\n    async startCheckScanner(configuration) {\n        return ScanbotSDKInternal.startCheckScanner(configuration).then((result) => mapRTUUIResult(result, CheckScanningResult));\n    },\n    /**\n     * Forces the Ready-To-Use UI Check Scanner screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeCheckScanner() {\n        return ScanbotSDKInternal.closeCheckScanner();\n    },\n    /**\n     * Opens the Ready-To-Use UI VIN Scanner screen with the desired configuration.\n     *\n     * @deprecated Use ***startVINScanner*** from ***'capacitor-plugin-scanbot-sdk/ui_v2'*** instead.\n     */\n    startVinScanner(configuration) {\n        return ScanbotSDKInternal.startVinScanner(configuration).then((result) => mapRTUUIResult(result, VinScannerResult));\n    },\n    /**\n     * Forces the Ready-To-Use UI VIN Scanner screen to close while it is running.\n     *\n     * @deprecated\n     */\n    closeVinScanner() {\n        return ScanbotSDKInternal.closeVinScanner();\n    },\n    /**\n     * Initializes the Scanbot SDK with the preferred configuration.\n     */\n    initializeSDK(config) {\n        return ScanbotSDKInternal.initializeSDK(config);\n    },\n    /**\n     * Provides complete information about the current license status.\n     */\n    getLicenseInfo() {\n        return ScanbotSDKInternal.getLicenseInfo();\n    },\n    /**\n     * Detects barcodes on the image represented by the file URI.\n     */\n    async detectBarcodesOnImage(imageFileUri, configuration) {\n        return ScanbotSDKInternal.detectBarcodesOnImage({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new BarcodeScannerResult(result));\n    },\n    /**\n     * Applies the given filters to the given image, and returns its URI.\n     */\n    applyImageFilters(params) {\n        return ScanbotSDKInternal.applyImageFilters(params);\n    },\n    /**\n     * Applies the given filters to the given page.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document.modifyPage} instead.\n     */\n    applyImageFiltersOnPage(params) {\n        return ScanbotSDKInternal.applyImageFiltersOnPage(params);\n    },\n    /**\n     * Returns the BASE64 Image Data for the given image.\n     */\n    getImageData(params) {\n        return ScanbotSDKInternal.getImageData(params);\n    },\n    /**\n     * Rotates the given image by the specified degrees.\n     */\n    rotateImage(params) {\n        return ScanbotSDKInternal.rotateImage(params);\n    },\n    /**\n     * Creates a page with the image located at the given URI.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document.createDocument} instead.\n     */\n    createPage(params) {\n        return ScanbotSDKInternal.createPage(params);\n    },\n    /**\n     * Removes the given page from the storage.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document.removePage} instead.\n     */\n    removePage(params) {\n        return ScanbotSDKInternal.removePage(params);\n    },\n    /**\n     * Rotates the given page for the number of 90 degree counterclockwise rotations. Negative values will rotate clockwise.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document.modifyPage} instead.\n     */\n    rotatePage(params) {\n        return ScanbotSDKInternal.rotatePage(params);\n    },\n    /**\n     * Applies the given image to the desired page.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document} instead.\n     */\n    setDocumentImage(params) {\n        return ScanbotSDKInternal.setDocumentImage(params);\n    },\n    /**\n     * Detects a document on the given image and returns the result.\n     */\n    detectDocument(params) {\n        return ScanbotSDKInternal.detectDocument(params);\n    },\n    /**\n     * Detects a document on the given page and returns the result.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document} instead.\n     */\n    detectDocumentOnPage(params) {\n        return ScanbotSDKInternal.detectDocumentOnPage(params);\n    },\n    /**\n     * Detects the quality of the document on a still image.\n     */\n    async documentQualityAnalyzer(imageFileUri, configuration) {\n        return ScanbotSDKInternal.documentQualityAnalyzer({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new DocumentQualityAnalyzerResult(result));\n    },\n    /**\n     * Extracts images from a PDF represented by the file URL. The PDF file URL is part of the input params.\n     */\n    extractImagesFromPdf(params) {\n        return ScanbotSDKInternal.extractImagesFromPdf(params);\n    },\n    /**\n     * Extracts images from a PDF represented by the file URL, creates pages from them and returns the created pages.\n     * The PDF file URL is part of the input params.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document.createDocumentFromPDF} instead.\n     */\n    extractPagesFromPdf(params) {\n        return ScanbotSDKInternal.extractPagesFromPdf(params);\n    },\n    /**\n     * Recognizes a check in the given image using the preferred configuration.\n     */\n    async recognizeCheck(imageFileUri, configuration) {\n        return ScanbotSDKInternal.recognizeCheck({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new CheckScanningResult(result));\n    },\n    /**\n     * Recognizes an MRZ on the given image.\n     */\n    async recognizeMrz(imageFileUri, configuration) {\n        return ScanbotSDKInternal.recognizeMrz({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new MrzScannerResult(result));\n    },\n    /**\n     * Recognizes a Medical Certificate on the given image.\n     * Modify the result with extra options that are part of the input params.\n     */\n    async recognizeMedicalCertificate(imageFileUri, configuration) {\n        return ScanbotSDKInternal.recognizeMedicalCertificate({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new MedicalCertificateScanningResult(result));\n    },\n    /**\n     * Recognizes a European Health Insurance Card (EHIC) on the given image.\n     *\n     * @deprecated Use {@link documentDataExtractor} instead and enable ***EuropeanHealthInsuranceCardConfiguration*** configuration element.\n     */\n    async recognizeEHIC(imageFileUri, configuration) {\n        return ScanbotSDKInternal.recognizeEHIC({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new EuropeanHealthInsuranceCardRecognitionResult(result));\n    },\n    /**\n     * Recognizes a Credit Card on the given image.\n     * Modify the result with extra options that are part of the configuration.\n     */\n    async recognizeCreditCard(imageFileUri, configuration) {\n        return ScanbotSDKInternal.recognizeCreditCard({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new CreditCardScanningResult(result));\n    },\n    /**\n     * Extract data on the given image.\n     * Set the expected document formats or leave it empty/undefined to recognize all supported document formats.\n     */\n    async documentDataExtractor(imageFileUri, configuration) {\n        return ScanbotSDKInternal.documentDataExtractor({\n            imageFileUri: imageFileUri,\n            configuration: configuration,\n        }).then((result) => new DocumentDataExtractionResult(result));\n    },\n    /**\n     * Recreates the given pages to refresh the Image URIs.\n     *\n     * @deprecated Use {@link ScanbotSDK.Document} instead.\n     */\n    refreshImageUris(params) {\n        return ScanbotSDKInternal.refreshImageUris(params);\n    },\n    /**\n     * Returns the available OCR configs.\n     */\n    getOCRConfigs() {\n        return ScanbotSDKInternal.getOCRConfigs();\n    },\n    /**\n     * Removes all files generated by this plugin.\n     */\n    cleanup() {\n        return ScanbotSDKInternal.cleanup();\n    },\n    /**\n     * Performs OCR on given images. Set preferred ***ocrConfiguration*** engine, or leave it undefined to use the default one which is ***OCRScanbotEngineConfiguration***.\n     * If ***OCRTesseractConfiguration*** is used, the expected ***languages*** need to be set.\n     */\n    performOCR(params) {\n        return ScanbotSDKInternal.performOCR(params);\n    },\n    /**\n     * Creates a PDF using the given list of image file URIs.\n     * Please check the extra options that are part of the input params to modify the created PDF file per your needs.\n     */\n    createPDF(params) {\n        return ScanbotSDKInternal.createPDF(params);\n    },\n    /**\n     * Creates a TIFF using the given list of image file URIs.\n     * Please check the extra options that are part of the input params to modify the created TIFF file per your needs.\n     */\n    writeTIFF(params) {\n        return ScanbotSDKInternal.writeTIFF(params);\n    },\n    /**\n     * Verifies the given document parts using the DocumentDataExtractorConfiguration.\n     */\n    async verifyDocument(documentParts, configuration) {\n        return ScanbotSDKInternal.verifyDocument({ documentParts, configuration }).then((result) => new DocumentVerificationReport(result));\n    },\n    /**\n     * Register analytics service callback to receive analytics events.\n     */\n    setAnalyticsSubscriber(subscriber) {\n        if (subscriber === null) {\n            return ScanbotSDKInternal.removeAnalyticsServiceCallback();\n        }\n        else {\n            return ScanbotSDKInternal.setAnalyticsServiceCallback({}, (event) => {\n                if (event) {\n                    subscriber(new AnalyticsEvent(event));\n                }\n            });\n        }\n    },\n    /**\n     * Mock camera preview by using static images as a frame source.\n     * This is useful for testing purposes.\n     */\n    mockCamera(params) {\n        return ScanbotSDKInternal.mockCamera(params);\n    },\n};\nexport * from './analytics/index';\nexport * from './barcode/index';\nexport * from './base/index';\nexport * from './check/CheckScannerTypes';\nexport * from './credit_card/CreditCardTypes';\nexport * from './document_data_extractor/index';\nexport * from './document_scanner/index';\nexport * from './documents/index';\nexport * from './dqa/DocumentQualityAnalyzerTypes';\nexport * from './ehic/EuropeanHealthInsuranceCardTypes';\nexport * from './frame_accumulation/FrameAccumulationTypes';\nexport * from './image_filters/ParametricFilters';\nexport * from './imageRef/index';\nexport * from './medical_certificate/MedicalCertificateTypes';\nexport * from './mrz/MrzTypes';\nexport * from './ocr_renderer/PdfConfigurationTypes';\nexport * from './text_pattern_scanner/TextPatternScannerTypes';\nexport * from './tiff_wrapper/TiffTypes';\nexport * from './utils/index';\nexport * from './vin/VinScannerTypes';\n//# sourceMappingURL=index.js.map"]}