import { finalizer } from 'comlink'; import { OverrideProperties } from 'type-fest'; import { ProxyMarked } from 'comlink'; import { Remote } from 'comlink'; import type { SetOptional } from 'type-fest'; import type { Simplify } from 'type-fest'; /** Contains detailed address information */ export declare type AddressDetailedInfo = { /** The address street portion of the document owner */ street: string; /** The address postal code portion of the document owner */ postalCode: string; /** The address city portion of the document owner */ city: string; /** The address jurisdiction code portion of the document owner */ jurisdiction: string; }; export declare type AddressDetailedInfoCompleteness = { street?: StringCompleteness; postalCode?: StringCompleteness; city?: StringCompleteness; jurisdiction?: StringCompleteness; }; declare type AlertType = "InvalidLicenseKey" | "NetworkError" | "DocumentClassNotAllowed" | "StepTimeout" | "DocumentNotSupported" | "InactivityTimeout" | "UnsupportedBarcodeTimeout"; /** Represents a string result for a specific alphabet */ export declare type AlphabetStringResult = { /** The value of the string result. */ value: string; /** The location of the string result. */ location?: Rectangle; /** The side of the string result. */ side?: ScanningSide; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the type of the alphabet used in the document. */ export declare type AlphabetType = "latin" | "arabic" | "cyrillic" | "greek"; /** * Analytic service * Provides a clean interface for tracking user interactions and events */ export declare class AnalyticService { #private; constructor({ pingFn, sendPingletsFn, }: { pingFn: (ping: Ping) => Promise; sendPingletsFn: () => Promise; }); /** * Safely send queued pinglets, handling errors gracefully */ sendPinglets(): Promise; logCameraStartedEvent(): Promise; logCameraClosedEvent(): Promise; logHelpOpenedEvent(): Promise; logHelpClosedEvent(contentFullyViewed: boolean): Promise; logHelpTooltipDisplayedEvent(): Promise; logCloseButtonClickedEvent(): Promise; logOnboardingDisplayedEvent(): Promise; logAlertDisplayedEvent(alertType: NonNullable): Promise; logErrorMessageEvent(errorMessageType: PingUxEventData["errorMessageType"]): Promise; logAppMovedToBackgroundEvent(): Promise; logStepTimeoutEvent(): Promise; logInactivityTimeoutEvent(): Promise; logUnsupportedBarcodeTimeout(): Promise; logCameraInputInfo(pingData: PingCameraInputInfoData): Promise; logHardwareCameraInfo(cameras: PingCameraHardwareInfoData["availableCameras"]): Promise; logCameraPermissionCheck(granted: boolean): Promise; logCameraPermissionRequest(): Promise; logCameraPermissionUserResponse(granted: boolean): Promise; logDeviceOrientation(orientation: PingScanningConditionsData["deviceOrientation"]): Promise; logFlashlightState(flashlightOn: boolean): Promise; logDeviceInfo(pingData: PingBrowserDeviceInfoData): Promise; logWarning(logMessage: string): Promise; logInfo(logMessage: string): Promise; logErrorEvent({ origin, error, errorType, sessionNumber, }: { origin: string; error: unknown; errorType: PingErrorData["errorType"]; sessionNumber?: number; }): Promise; } declare type AvailableCamerasItem = { deviceId: string; cameraFacing: CameraFacing; focus?: Focus; availableResolutions?: AvailableResolutionsItem[]; }; declare type AvailableResolutionsItem = { width: number; height: number; }; export declare type BarcodeCompleteness = { status: ExtractionStatus; attribute: ExtractionAttribute; failureReason?: ExtractionFailureReason; fields?: BarcodeFieldsCompleteness; parsed: boolean; parsingSupported: boolean; barcodeType?: BarcodeType; }; /** Data extracted from barcode. */ export declare type BarcodeData = { /** Format of recognized barcode. */ barcodeType: BarcodeType; /** * True if returned result is uncertain, i.e. if scanned barcode was * incomplete (has parts of it missing). */ uncertain: boolean; /** String representation of data inside barcode. */ stringData: string; /** The raw bytes contained inside barcode. */ rawData: Uint8Array; }; export declare type BarcodeDriverLicenseDetailedInfoCompleteness = DriverLicenseDetailedInfoInfo; /** Represents a key-value pair of a barcode element. */ export declare type BarcodeElement = { /** The key of the barcode element. */ key: BarcodeElementKey; /** The value of the barcode element. */ value: string; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * BarcodeElementKey defines additional fields present in the barcode. * Currently, this is only used for AAMVACompliant documents. */ export declare type BarcodeElementKey = /** * Mandatory on all driver's licenses. All barcodes which are using 3-track * magnetic stripe encoding used in the interest of smoothing a transition * from legacy documents shall be designated as "Magnetic". All barcodes which * are using compact encoding compliant with ISO/IEC 18013-2 shall be * designated as "Compact". All barcodes (majority) compliant with Mandatory * PDF417 Bar Code of the American Association of Motor Vehicle Administrators * (AAMVA) Card Design Standard from AAMVA DL/ID-2000 standard to DL/ID-2013 * shall be designated as "AAMVA". */ "document-type" /** * Mandatory on all driver's licenses. * * AAMVA Version Number: This is a decimal value between 0 and 99 that * specifies the version level of the PDF417 bar code format. Version "0" and "00" * is reserved for bar codes printed to the specification of the American Association * of Motor Vehicle Administrators (AAMVA) prior to the adoption of the AAMVA DL/ID-2000 * standard. * * - All barcodes compliant with AAMVA DL/ID-2000 standard shall be designated Version "01." * - All barcodes compliant with AAMVA Card Design Specification version 1.0, dated 09-2003 * shall be designated Version "02." * - All barcodes compliant with AAMVA Card Design Specification version 2.0, dated 03-2005 * shall be designated Version "03." * - All barcodes compliant with AAMVA Card Design Standard version 1.0, dated 07-2009 * shall be designated Version "04." * - All barcodes compliant with AAMVA Card Design Standard version 1.0, dated 07-2010 * shall be designated Version "05." * - All barcodes compliant with AAMVA Card Design Standard version 1.0, dated 07-2011 * shall be designated Version "06". * - All barcodes compliant with AAMVA Card Design Standard version 1.0, dated 06-2012 * shall be designated Version "07". * - All barcodes compliant with this current AAMVA standard shall be designated "08". * * Should a need arise requiring major revision to the format, this field provides the * means to accommodate additional revision. * * If the document type is not "AAMVA", this field defines the version number of the * given document type's standard. */ | "standard-version-number" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * 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. */ | "customer-family-name" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * First name of the cardholder. */ | "customer-first-name" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * Full name of the individual holding the Driver's License or ID. * * The Name field contains up to four portions, separated with the "," delimiter: * Last Name (required) * , (required) * First Name (required) * , (required if other name portions follow, otherwise optional) * Middle Name(s) (optional) * , (required if other name portions follow, otherwise optional) * Suffix (optional) * , (optional) * * If the individual has more than one middle name they are separated with space. */ | "customer-full-name" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * Date on which the cardholder was born. (MMDDCCYY format) */ | "date-of-birth" /** * Mandatory on all AAMVA, Magnetic barcodes. Optional on Compact barcodes. * * Gender of the cardholder. 1 = male, 2 = female. */ | "sex" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 barcodes. Optional on AAMVA * 01, Magnetic and Compact barcodes. * * Color of cardholder's eyes. (ANSI D-20 codes) * * Code Description * BLK Black * BLU Blue * BRO Brown * GRY Gray * GRN Green * HAZ Hazel * MAR Maroon * PNK Pink * DIC Dichromatic * UNK Unknown */ | "eye-color" /** * Mandatory on all AAMVA and Magnetic barcodes. * * On compact barcodes, use kFullAddress. * * Street portion of the cardholder address. * The place where the registered driver of a vehicle (individual or corporation) * may be contacted such as a house number, street address, etc. */ | "address-street" /** * Mandatory on all AAMVA and Magnetic barcodes. * * On compact barcodes, use kFullAddress. * * City portion of the cardholder address. */ | "address-city" /** * Mandatory on all AAMVA and Magnetic barcodes. * * On compact barcodes, use kFullAddress. * * State portion of the cardholder address. */ | "address-jurisdiction-code" /** * Mandatory on all AAMVA and Magnetic barcodes. * * On compact barcodes, use kFullAddress. * * 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 can be used * to fill the trailing set of numbers up to nine (9) digits. */ | "address-postal-code" /** * Mandatory on all AAMVA and Magnetic barcodes. Optional on Compact barcodes. * * Full address of the individual holding the Driver's License or ID. * * The full address field contains up to four portions, separated with the "," delimiter: * Street Address (required) * , (required if other address portions follow, otherwise optional) * City (optional) * , (required if other address portions follow, otherwise optional) * Jurisdiction Code (optional) * , (required if other address portions follow, otherwise optional) * ZIP - Postal Code (optional) */ | "full-address" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * Optional on AAMVA 01 and Magnetic barcodes. * * Height of cardholder, either in Inches or in Centimeters. * * Inches (in): number of inches followed by " in" * example: 6'1'' = "73 in" * * Centimeters (cm): number of centimeters followed by " cm" * example: 181 centimeters = "181 cm" */ | "height" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * Optional on AAMVA 01 and Magnetic barcodes. * * Height of cardholder in Inches. * Example: 5'9'' = "69". */ | "height-in" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 Compact barcodes. Optional on * AAMVA 01 and Magnetic barcodes. * * Height of cardholder in Centimeters. * Example: 180 Centimeters = "180". */ | "height-cm" /** * Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. Optional on AAMVA 01, 02, * 03, Magnetic and Compact barcodes. * * Middle name(s) of the cardholder. In the case of multiple middle names they * shall be separated by space " ". */ | "customer-middle-name" /** * Optional on all AAMVA, Magnetic and Compact barcodes. * * Bald, black, blonde, brown, gray, red/auburn, sandy, white, unknown. If the issuing * jurisdiction wishes to abbreviate colors, the three-character codes provided in ANSI D20 must be * used. * * Code Description * BAL Bald * BLK Black * BLN Blond * BRO Brown * GRY Grey * RED Red/Auburn * SDY Sandy * WHI White * UNK Unknown */ | "hair-color" /** * Mandatory on AAMVA 02 barcodes. Optional on AAMVA 01, 03, 04, 05, 06, 07, * 08, Magnetic and Compact barcodes. * * 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). * - 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) */ | "name-suffix" /** * Optional on all AAMVA and Compact barcodes. * * Other name by which the cardholder is known. ALTERNATIVE NAME(S) of the individual * holding the Driver License or ID. * * The Name field contains up to four portions, separated with the "," delimiter: * AKA Last Name (required) * , (required) * AKA First Name (required) * , (required if other name portions follow, otherwise optional) * AKA Middle Name(s) (optional) * , (required if other name portions follow, otherwise optional) * AKA Suffix (optional) * , (optional) * * If the individual has more than one AKA middle name they are separated with space. */ | "aka-full-name" /** * Optional on all AAMVA and Compact barcodes. * * Other family name by which the cardholder is known. */ | "aka-family-name" /** * Optional on all AAMVA and Compact barcodes. * * Other given name by which the cardholder is known */ | "aka-given-name" /** * Optional on all AAMVA and Compact barcodes. * * Other suffix by which the cardholder is known. * * The Suffix Code Portion, if submitted, can contain only the Suffix Codes shown in the following table (e.g., Andrew Johnson, III = JOHNSON@ANDREW@@3RD): * * Suffix Meaning or Synonym * JR Junior * SR Senior or Esquire 1ST First * 2ND Second * 3RD Third * 4TH Fourth * 5TH Fifth * 6TH Sixth * 7TH Seventh * 8TH Eighth * 9TH Ninth */ | "aka-suffix-name" /** * Mandatory on AAMVA 02 barcodes. Optional on AAMVA 01, 03, 04, 05, 06, 07, * 08, Magnetic and Compact barcodes. * * 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) */ | "weight-range" /** * Mandatory on AAMVA 02 barcodes. Optional on AAMVA 01, 03, 04, 05, 06, 07, * 08, Magnetic and Compact barcodes. * * Cardholder weight in pounds Example: 185 lb = "185" */ | "weight-pounds" /** * Mandatory on AAMVA 02 barcodes. Optional on AAMVA 01, 03, 04, 05, 06, 07, * 08, Magnetic and Compact barcodes. * * Cardholder weight in kilograms Example: 84 kg = "084" */ | "weight-kilograms" /** * Mandatory on all AAMVA and Compact barcodes. * * The number assigned or calculated by the issuing authority. */ | "customer-id-number" /** * Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. Optional on Compact * barcodes. * * A code that indicates whether a field has been truncated (T), has not been * truncated (N), or – unknown whether truncated (U). */ | "family-name-truncation" /** * Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. Optional on Compact * barcodes. * * A code that indicates whether a field has been truncated (T), has not been * truncated (N), or – unknown whether truncated (U). */ | "first-name-truncation" /** * Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. * * A code that indicates whether a field has been truncated (T), has not been * truncated (N), or – unknown whether truncated (U). */ | "middle-name-truncation" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Country and municipality and/or state/province. */ | "place-of-birth" /** * Optional on all AAMVA barcodes. * * On Compact barcodes, use kFullAddress. * * Second line of street portion of the cardholder address. */ | "address-street-2" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Codes for race or ethnicity of the cardholder, as defined in ANSI D20. * * Race: * Code Description * AI Alaskan or American Indian (Having Origins in Any of The Original Peoples of * North America, and Maintaining Cultural Identification Through Tribal * Affiliation of Community Recognition) * AP Asian or Pacific Islander (Having Origins in Any of the Original Peoples of * the Far East, Southeast Asia, or Pacific Islands. This Includes China, India, * Japan, Korea, the Philippines Islands, and Samoa) * BK Black (Having Origins in Any of the Black Racial Groups of Africa) * W White (Having Origins in Any of The Original Peoples of Europe, North Africa, * or the Middle East) * * Ethnicity: * Code Description * H Hispanic Origin (A Person of Mexican, Puerto Rican, Cuban, Central or South * American or Other Spanish Culture or Origin, Regardless of Race) * O Not of Hispanic Origin (Any Person Other Than Hispanic) * U Unknown */ | "race-ethnicity" /** * Optional on AAMVA 01 barcodes. * * PREFIX to Driver Name. Freeform as defined by issuing jurisdiction. */ | "name-prefix" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Country in which DL/ID is issued. U.S. = USA, Canada = CAN. */ | "country-identification" /** * Optional on AAMVA version 01. * * Driver Residence Street Address 1. */ | "residence-street-address" /** * Optional on AAMVA version 01. * * Driver Residence Street Address 2. */ | "residence-street-address-2" /** * Optional on AAMVA version 01. * * Driver Residence City */ | "residence-city" /** * Optional on AAMVA version 01. * * Driver Residence Jurisdiction Code. */ | "residence-jurisdiction-code" /** * Optional on AAMVA 01 barcodes. * * Driver Residence Postal Code. */ | "residence-postal-code" /** * Optional on AAMVA 01 barcodes. * * Full residence address of the individual holding the Driver's License or ID. * * The full address field contains up to four portions, separated with the "," delimiter: * Residence Street Address (required) * , (required if other address portions follow, otherwise optional) * Residence City (optional) * , (required if other address portions follow, otherwise optional) * Residence Jurisdiction Code (optional) * , (required if other address portions follow, otherwise optional) * Residence ZIP - Residence Postal Code (optional) */ | "residence-full-address" /** * Optional on AAMVA 05, 06, 07, 08 barcodes. * * Date on which the cardholder turns 18 years old. (MMDDCCYY format) */ | "under-18" /** * Optional on AAMVA 05, 06, 07, 08 barcodes. * * Date on which the cardholder turns 19 years old. (MMDDCCYY format) */ | "under-19" /** * Optional on AAMVA 05, 06, 07, 08 barcodes. * * Date on which the cardholder turns 21 years old. (MMDDCCYY format) */ | "under-21" /** * Optional on AAMVA version 01. * * The number assigned to the individual by the Social Security Administration. */ | "social-security-number" /** * Optional on AAMVA version 01. * * Driver "AKA" Social Security Number. FORMAT SAME AS DRIVER SOC SEC NUM. ALTERNATIVE NUMBERS(S) used as SS NUM. */ | "aka-social-security-number" /** * Optional on AAMVA 01 barcodes. * * ALTERNATIVE MIDDLE NAME(s) or INITIALS of the individual holding the Driver License or ID. * Hyphenated names acceptable, spaces between names acceptable, but no other * use of special symbols. */ | "aka-middle-name" /** * Optional on AAMVA 01 barcodes. * * ALTERNATIVE PREFIX to Driver Name. Freeform as defined by issuing jurisdiction. */ | "aka-prefix-name" /** * Optional on AAMVA 01, 06, 07, 08 barcodes. * * Field that indicates that the cardholder is an organ donor = "1". */ | "organ-donor" /** * Optional on AAMVA 07, 08 barcodes. * * Field that indicates that the cardholder is a veteran = "1" */ | "veteran" /** * Optional on AAMVA 01. (MMDDCCYY format) * * ALTERNATIVE DATES(S) given as date of birth. */ | "aka-date-of-birth" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * This number uniquely identifies the issuing jurisdiction and can * be obtained by contacting the ISO Issuing Authority (AAMVA) */ | "issuer-identification-number" /** * Mandatory on all AAMVA, Magnetic and Compact barcodes. * * If the document is non expiring then "Non expiring" is written in this field. * * Date on which the driving and identification privileges granted by the document are * no longer valid. (MMDDCCYY format) */ | "document-expiration-date" /** * Mandatory on all AAMVA and Compact barcodes. Optional on Magnetic barcodes. * * Jurisdiction Version Number: This is a decimal value between 0 and 99 that * specifies the jurisdiction version level of the PDF417 barcode format. * Notwithstanding iterations of this standard, jurisdictions implement incremental * changes to their barcodes, including new jurisdiction-specific data, compression * algorithms for digitized images, digital signatures, or new truncation * conventions used for names and addresses. Each change to the barcode format * within each AAMVA version (above) must be noted, beginning with Jurisdiction * Version 00. */ | "jurisdiction-version-number" /** * Mandatory on all AAMVA and Magnetic barcodes. * * Jurisdiction-specific vehicle class / group code, designating the type * of vehicle the cardholder has privilege to drive. */ | "jurisdiction-vehicle-class" /** * Mandatory on all AAMVA barcodes. Optional on Magnetic barcodes. * * Jurisdiction-specific codes that represent restrictions to driving * privileges (such as airbrakes, automatic transmission, daylight only, etc.). */ | "jurisdiction-restriction-codes" /** * Mandatory on all AAMVA barcodes. Optional on Magnetic barcodes. * * 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.). */ | "jurisdiction-endorsement-codes" /** * Mandatory on all AAMVA and Compact barcodes. * * Date on which the document was issued. (MMDDCCYY format) */ | "document-issue-date" /** * Mandatory on AAMVA versions 02 and 03. * * Federally established codes for vehicle categories, endorsements, and restrictions * that are generally applicable to commercial motor vehicles. If the vehicle is not a * commercial vehicle, "NONE" is to be entered. */ | "federal-commercial-vehicle-codes" /** * Optional on all AAMVA barcodes. Mandatory on Compact barcodes. * * Jurisdictions may define a subfile to contain jurisdiction-specific information. * These subfiles are designated with the first character of “Z” and the second * character is the first letter of the jurisdiction's name. For example, "ZC" would * be the designator for a California or Colorado jurisdiction-defined subfile, "ZQ" * would be the designator for a Quebec jurisdiction-defined subfile. In the case of * a jurisdiction-defined subfile that has a first letter that could be more than * one jurisdiction (e.g. California, Colorado, Connecticut) then other data, like * the IIN or address, must be examined to determine the jurisdiction. */ | "issuing-jurisdiction" /** * Optional on all AAMVA barcodes. Mandatory on Compact barcodes. * * Standard vehicle classification code(s) for cardholder. This data element is a * placeholder for future efforts to standardize vehicle classifications. */ | "standard-vehicle-classification" /** * Optional on all AAMVA and Magnetic barcodes. * * Name of issuing jurisdiction, for example: Alabama, Alaska ... */ | "issuing-jurisdiction-name" /** * Optional on all AAMVA barcodes. * * Standard endorsement code(s) for cardholder. See codes in D20. This data element is a * placeholder for future efforts to standardize endorsement codes. * * Code Description * H Hazardous Material - This endorsement is required for the operation of any vehicle * transporting hazardous materials requiring placarding, as defined by U.S. * Department of Transportation regulations. * L Motorcycles – Including Mopeds/Motorized Bicycles. * N Tank - This endorsement is required for the operation of any vehicle transporting, * as its primary cargo, any liquid or gaseous material within a tank attached to the vehicle. * O Other Jurisdiction Specific Endorsement(s) - This code indicates one or more * additional jurisdiction assigned endorsements. * P Passenger - This endorsement is required for the operation of any vehicle used for * transportation of sixteen or more occupants, including the driver. * S School Bus - This endorsement is required for the operation of a school bus. School bus means a * CMV used to transport pre-primary, primary, or secondary school students from home to school, * from school to home, or to and from school sponsored events. School bus does not include a * bus used as common carrier (49 CRF 383.5). * T Doubles/Triples - This endorsement is required for the operation of any vehicle that would be * referred to as a double or triple. * X Combined Tank/HAZ-MAT - This endorsement may be issued to any driver who qualifies for * both the N and H endorsements. */ | "standard-endorsement-code" /** * Optional on all AAMVA barcodes. * * Standard restriction code(s) for cardholder. See codes in D20. This data element is a placeholder * for future efforts to standardize restriction codes. * * Code Description * B Corrective Lenses * C Mechanical Devices (Special Brakes, Hand Controls, or Other Adaptive Devices) * D Prosthetic Aid * E Automatic Transmission * F Outside Mirror * G Limit to Daylight Only * H Limit to Employment * I Limited Other * J Other * K CDL Intrastate Only * L Vehicles without air brakes * M Except Class A bus * N Except Class A and Class B bus * O Except Tractor-Trailer * V Medical Variance Documentation Required * W Farm Waiver */ | "standard-restriction-code" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Text that explains the jurisdiction-specific code(s) for classifications * of vehicles cardholder is authorized to drive. */ | "jurisdiction-vehicle-classification-description" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Text that explains the jurisdiction-specific code(s) that indicates additional * driving privileges granted to the cardholder beyond the vehicle class. */ | "jurisdiction-endorsement-code-description" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * Text describing the jurisdiction-specific restriction code(s) that curtail driving privileges. */ | "jurisdiction-restriction-code-description" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 barcodes. * * A string of letters and/or numbers that is affixed to the raw materials (card stock, * laminate, etc.) used in producing driver's licenses and ID cards. (DHS recommended field) */ | "inventory-control-number" /** * Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes. * * DHS required field that indicates date of the most recent version change or * modification to the visible format of the DL/ID. (MMDDCCYY format) */ | "card-revision-date" /** * Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Magnetic barcodes. * Optional and Compact barcodes. * * 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. */ | "document-discriminator" /** * Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes. * * DHS required field that indicates that the cardholder has temporary lawful status = "1". */ | "limited-duration-document" /** * Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. * * A string of letters and/or numbers that identifies when, where, and by whom a driver's * 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. */ | "audit-information" /** * Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes. * * DHS required field that indicates compliance: "M" = materially compliant, * "F" = fully compliant, and, "N" = non-compliant. */ | "compliance-type" /** * Optional on AAMVA version 01 barcodes. * * Issue Timestamp. A string used by some jurisdictions to validate the document against their database. */ | "issue-timestamp" /** * Optional on AAMVA version 01 barcodes. * * Driver Permit Expiration Date. MMDDCCYY format. Date permit expires. */ | "permit-expiration-date" /** * Optional on AAMVA version 01 barcodes. * * Type of permit. */ | "permit-identifier" /** * Optional on AAMVA version 01 barcodes. * * Driver Permit Issue Date. MMDDCCYY format. Date permit was issued. */ | "permit-issue-date" /** * Optional on AAMVA version 01. * * Number of duplicate cards issued for a license or ID if any. */ | "number-of-duplicates" /** * Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes. * * Date on which the hazardous material endorsement granted by the document is * no longer valid. (MMDDCCYY format) */ | "hazmat-expiration-date" /** * Optional on AAMVA version 01. * * Medical Indicator/Codes. * STATE SPECIFIC. Freeform, Standard "TBD" */ | "medical-indicator" /** * Optional on AAMVA version 01. * * Non-Resident Indicator. "Y". Used by some jurisdictions to indicate holder of the document is a non-resident. */ | "non-resident" /** * Optional on AAMVA version 01. * * A number or alphanumeric string used by some jurisdictions to identify a "customer" across multiple data bases. */ | "unique-customer-id" /** * Optional on compact barcodes. * * Document discriminator. */ | "data-discriminator" /** * Optional on Magnetic barcodes. * * Month on which the driving and identification privileges granted by the document are * no longer valid. (MMYY format) */ | "document-expiration-month" /** * Optional on Magnetic barcodes. * * Field that indicates that the driving and identification privileges granted by the * document are nonexpiring = "1". */ | "document-nonexpiring" /** * Optional on Magnetic barcodes. * * Security version being used. */ | "security-version" /** * SubField Designator extracted from barcode, to support proper document * classification based on the standard. subfield designator is a 2-character * code that specifies the type of document, typically DL or ID. It is located * immediately after the IIN and the variable metadata structure in the PDF417 * barcode data structure. for example: ANSI * 636010090002DL00410267ZF03080067DLDAQS1234567812300000000000000 ^^ | | | * +-- SubField Designator (DL, ID, EN, etc.) +----- IIN (636010) * * Mandatory on all AAMVA barcodes. */ | "sub-field-designator"; export declare type BarcodeFieldsCompleteness = { firstName?: StringCompleteness; middleName?: StringCompleteness; lastName?: StringCompleteness; fullName?: StringCompleteness; additionalNameInformation?: StringCompleteness; address?: StringCompleteness; placeOfBirth?: StringCompleteness; nationality?: StringCompleteness; race?: StringCompleteness; religion?: StringCompleteness; profession?: StringCompleteness; maritalStatus?: StringCompleteness; residentialStatus?: StringCompleteness; employer?: StringCompleteness; sex?: StringCompleteness; dateOfBirth?: DateCompleteness; dateOfIssue?: DateCompleteness; dateOfExpiry?: DateCompleteness; documentNumber?: StringCompleteness; personalIdNumber?: StringCompleteness; documentAdditionalNumber?: StringCompleteness; issuingAuthority?: StringCompleteness; addressDetailedInfo?: AddressDetailedInfoCompleteness; driverLicenseDetailedInfo?: BarcodeDriverLicenseDetailedInfoCompleteness; extendedElements?: BarcodeElementKey[]; }; /** * Settings for the barcode extraction module. * * This module manages the detection and data extraction from various 1D and 2D * barcode formats (such as PDF417, QR codes, and various retail codes). * * If barcode is present on the document, an extraction becomes mandatory if * supported. * * For supported documents, the requirement for its presence is determined by * document rules. For unsupported documents, presence is optional. * * This setting can function independently of document capture module. If * enabled and document capture module is disabled session will be set to * extract barcode immediately at the initialization. */ export declare type BarcodeModuleSettings = { /** * If set to true, barcode presence becomes mandatory for the scanned * document. * * For Single ScanningMode, the barcode must be present on the scanned side. * For Automatic ScanningMode, the barcode must be present on one of the * scanned sides. * * In case of a timeout and advancement to the next step in the scanning flow, * if a barcode is detected on the scanned side but cannot be extracted, the * presence requirement is considered fulfilled. As a result, barcode * extraction will no longer be a requirement to complete the scan on next * side. * * @default false */ presenceMandatory: boolean; /** * Indicates whether the barcode image should be returned in the result. * * The DPI setting and the extension factor do not affect returned barcode * image. * * @default false */ barcodeImageReturnEnabled: boolean; /** * Enables the scanning and processing of Pdf417 barcodes. * * The current analyzer model flags a barcode as "present" if either a * `PDF417` or a `QR` code is detected. Because the model does not distinguish * between the two types at this stage, a conflict can occur: if `PDF417` is * enabled but `QR` is disabled, the analyzer may trigger for a `QR` code, * causing the process to hang. * * To prevent this, `pdf417ScanningEnabled` and `qrScanningEnabled` must be * enabled together. * * @default true */ pdf417ScanningEnabled: boolean; /** * Enables the scanning and processing of QR barcodes. * * The current analyzer model flags a barcode as "present" if either a * `PDF417` or a `QR` code is detected. Because the model does not distinguish * between the two types at this stage, a conflict can occur: if `PDF417` is * enabled but `QR` is disabled, the analyzer may trigger for a `QR` code, * causing the process to hang. * * To prevent this, `qrScanningEnabled` and `pdf417ScanningEnabled` must be * enabled together. * * @default true */ qrScanningEnabled: boolean; /** * Enables the scanning and processing of UPC-E barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ upceScanningEnabled: boolean; /** * Enables the scanning and processing of UPC-A barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ upcaScanningEnabled: boolean; /** * Enables the scanning and processing of Code-128 barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ code128ScanningEnabled: boolean; /** * Enables the scanning and processing of Code-39 barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ code39ScanningEnabled: boolean; /** * Enables the scanning and processing of EAN-8 barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ ean8ScanningEnabled: boolean; /** * Enables the scanning and processing of EAN-13 barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ ean13ScanningEnabled: boolean; /** * Enables the scanning and processing of ITF barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ itfScanningEnabled: boolean; /** * Enables the scanning and processing of DataMatrix barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ dataMatrixScanningEnabled: boolean; /** * Enables the scanning and processing of Aztec barcodes. * * This setting can be enabled only if `documentCaptureEnabled` is disabled. * * @default false */ aztecScanningEnabled: boolean; }; /** * Contains data extracted from the barcode * * - In case of uncertain results, some of the properties may not be available. * Their values will be set to `BARCODE_FIELD_UNREADABLE` */ export declare type BarcodeResult = { /** The raw, unparsed barcode data. */ barcodeData: BarcodeData; /** * Whether the raw barcode data was successfully parsed into structured * information. */ parsed: boolean; /** The first name of the document owner. */ firstName: string; /** The middle name of the document owner. */ middleName: string; /** The last name of the document owner. */ lastName: string; /** The full name of the document owner. */ fullName: string; /** The additional name information of the document owner. */ additionalNameInformation: string; /** The address of the document owner. */ address: string; /** The place of birth of the document owner. */ placeOfBirth: string; /** The nationality of the document owner. */ nationality: string; /** The race of the document owner. */ race: string; /** The religion of the document owner. */ religion: string; /** The profession of the document owner. */ profession: string; /** The marital status of the document owner. */ maritalStatus: string; /** The residential status of the document owner. */ residentialStatus: string; /** The employer of the document owner. */ employer: string; /** The sex of the document owner. */ sex: string; /** The date of birth of the document owner. */ dateOfBirth: DateResult; /** The date of issue of the document. */ dateOfIssue: DateResult; /** The date of expiry of the document. */ dateOfExpiry: DateResult; /** The document number. */ documentNumber: string; /** The personal identification number. */ personalIdNumber: string; /** The additional number of the document. */ documentAdditionalNumber: string; /** The issuing authority of the document. */ issuingAuthority: string; /** The details about the address of the document owner. */ addressDetailedInfo: AddressDetailedInfo; /** The driver license detailed info. */ driverLicenseDetailedInfo: DriverLicenceDetailedInfo; /** Document specific extended elements that contain all barcode fields */ extendedElements: Array; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the type of scanned barcode */ export declare type BarcodeType = /** Indicates that QR code has been detected. */ "qr-code" /** Indicates that Data Matrix 2D barcode has been detected. */ | "data-matrix" /** Indicates that UPC E 1D barcode has been detected. */ | "upc-e" /** Indicates that UPC A 1D barcode has been detected. */ | "upc-a" /** Indicates that EAN 8 1D barcode has been detected. */ | "ean-8" /** Indicates that EAN 13 1D barcode has been detected. */ | "ean-13" /** Indicates that Code 128 1D barcode has been detected. */ | "code-128" /** Indicates that Code 39 1D barcode has been detected. */ | "code-39" /** Indicates that ITF 1D barcode has been detected. */ | "itf" /** Indicates that Aztec 2D barcode has been detected. */ | "aztec-barcode" /** Indicates that PDF417 2D barcode has been detected. */ | "pdf417-barcode"; /** * Base interface for a scanning session. * All SDK scanning sessions must implement this interface to work with the proxy worker. */ declare interface BaseScanningSession { /** * Processes an image frame and returns a result. * @param image - The image data to process * @returns The processing result (type varies by SDK) */ process: (image: ImageData) => unknown; } /** * Base interface for an SDK worker proxy. * All SDK worker proxies must implement this interface to work with the auto-transfer wrapper. * * Note: The return type can be sync or async (Promise) because Comlink wraps synchronous * methods as async when accessed remotely. */ declare interface BaseSdkWorkerProxy { /** * Creates a new scanning session. * @param args - Session configuration arguments (varies by SDK) * @returns A scanning session (sync or Promise-wrapped) */ createScanningSession: (...args: never[]) => BaseScanningSession | Promise; } /** * The BlinkID bindings. * * @ignore */ export declare interface BlinkIdBindings extends WasmBindings { } /** * Represents the BlinkID core instance. * * This type extends the Remote type from Comlink, which is used to proxy calls to the BlinkID worker. * It simplifies the type to remove unnecessary complexity. */ export declare type BlinkIdCore = Simplify>; /** * Options applied by BlinkID Worker when creating a scanning session. */ export declare type BlinkIdCreateScanningSessionOptions = { /** * Resolves custom result redaction settings for the classified document. * * Returning `null` or `undefined` keeps the SDK default redaction behavior. */ redactionSettingsResolver?: RedactionSettingsResolver; }; /** * Configuration options for initializing the BlinkID core. * * This type extends the BlinkIdWorkerInitSettings type by making the userId and useLightweightBuild properties optional. * It allows for partial configuration of the initialization settings. */ export declare type BlinkIdInitSettings = SetOptional; export declare type BlinkIdOtaResourceSettings = { /** * Check the OTA provider for newer resources during SDK initialization. * * The hosted baseline resources are always loaded. * * @defaultValue `true` */ checkForUpdates?: boolean; /** * Fail SDK initialization when OTA resolve or download fails. * * @defaultValue `false` */ strict?: boolean; /** * Base URL of the OTA resource provider service. * * Use this when the SDK should ask an OTA API service for the current * resource download URLs. * * @defaultValue `"https://blinkid-ota.microblink.com"` */ otaResourceProviderUrl?: string; /** * Base URL where the baseline OTA resource files are hosted. * * When omitted, the worker loads them from the SDK's * `resources/ota-resources` directory. */ resourcesLocation?: string; /** * @default 20_000 * OTA resource download timeout. * * If strict is @true the SDK will throw TimeoutError DOMException on initialization if the download times out. */ timeoutMilis?: number; }; /** * Represents the overall result of the document processing pipeline. * * This structure combines the results of input image analysis and processing, * including detection, document image quality analysis, along with information * about the completeness of the extraction process for the document. */ export declare type BlinkIdProcessResult = { /** Result of the processing and analysis of the input image. */ inputImageAnalysisResult: InputImageAnalysisResult; /** Completeness of the extraction process. */ resultCompleteness: ResultCompleteness; }; /** Represents the final complete result of the scanning process. */ export declare type BlinkIdScanningResult = { /** * The document class information. * * Absent when the document could not be classified (for example, for * unsupported documents without any extracted class info). */ documentClassInfo?: DocumentClassInfo; /** Info on whether the data extracted from multiple sides matches */ dataMatchResult: DataMatchResult | undefined; /** The additional address information of the document owner */ additionalAddressInformation: StringResult | undefined; /** The additional name information of the document owner */ additionalNameInformation: StringResult | undefined; /** Additional optional address information of the document owner */ additionalOptionalAddressInformation: StringResult | undefined; /** The additional personal identification number */ additionalPersonalIdNumber: StringResult | undefined; /** The address of the document owner */ address: StringResult | undefined; /** The blood type of the document owner */ bloodType: StringResult | undefined; /** * Numeric code used to establish secure electronic access to the embedded * contactless chip. */ cardAccessNumber: StringResult | undefined; /** The certificate number of the document owner */ certificateNumber: StringResult | undefined; /** The country code of the document owner */ countryCode: StringResult | undefined; /** The date of birth of the document owner */ dateOfBirth: DateResult | undefined; /** The date of entry of the document owner */ dateOfEntry: DateResult | undefined; /** The date of expiry of the document */ dateOfExpiry: DateResult | undefined; /** The date of issue of the document */ dateOfIssue: DateResult | undefined; /** The dependents info */ dependentsInfo: DependentInfo[] | undefined; /** The additional number of the document */ documentAdditionalNumber: StringResult | undefined; /** The document number */ documentNumber: StringResult | undefined; /** Additional optional number of the document */ documentOptionalAdditionalNumber: StringResult | undefined; /** The document subtype transcription */ documentSubtype: StringResult | undefined; /** The driver license detailed info */ driverLicenseDetailedInfo: DriverLicenceDetailedInfo | undefined; /** The effective date of the document */ effectiveDate: DateResult | undefined; /** The eligibility category */ eligibilityCategory: StringResult | undefined; /** The employer of the document owner */ employer: StringResult | undefined; /** The ethnicity of the document owner */ ethnicity: StringResult | undefined; /** The father's name of the document owner */ fathersName: StringResult | undefined; /** The first name of the document owner */ firstName: StringResult | undefined; /** The full name of the document owner */ fullName: StringResult | undefined; /** The husband name of the document owner */ husbandName: StringResult | undefined; /** The issuing authority of the document */ issuingAuthority: StringResult | undefined; /** The last name of the document owner */ lastName: StringResult | undefined; /** The legal status of the document owner */ legalStatus: StringResult | undefined; /** The locality code of the document owner */ localityCode: StringResult | undefined; /** The maiden name of the document owner */ maidenName: StringResult | undefined; /** The manufacturing year */ manufacturingYear: StringResult | undefined; /** The marital status of the document owner */ maritalStatus: StringResult | undefined; /** The mother's name of the document owner */ mothersName: StringResult | undefined; /** The municipality code of the document owner */ municipalityCode: StringResult | undefined; /** The municipality of registration of the document owner */ municipalityOfRegistration: StringResult | undefined; /** The national insurance number of the document owner */ nationalInsuranceNumber: StringResult | undefined; /** The nationality of the document owner */ nationality: StringResult | undefined; /** The parents info */ parentsInfo: { firstName: StringResult | undefined; lastName: StringResult | undefined; fullName: StringResult | undefined; }[] | undefined; /** The personal identification number */ personalIdNumber: StringResult | undefined; /** The place of birth of the document owner */ placeOfBirth: StringResult | undefined; /** The polling station code of the document owner */ pollingStationCode: StringResult | undefined; /** The profession of the document owner */ profession: StringResult | undefined; /** The race of the document owner */ race: StringResult | undefined; /** The registration center code of the document owner */ registrationCenterCode: StringResult | undefined; /** The religion of the document owner */ religion: StringResult | undefined; /** The remarks on the residence permit */ remarks: StringResult | undefined; /** The residence permit type */ residencePermitType: StringResult | undefined; /** The residential status of the document owner */ residentialStatus: StringResult | undefined; /** The section code of the document owner */ sectionCode: StringResult | undefined; /** The sex of the document owner */ sex: StringResult | undefined; /** The social security status of the document owner */ socialSecurityStatus: StringResult | undefined; /** The specific document validity */ specificDocumentValidity: StringResult | undefined; /** The sponsor of the document owner. */ sponsor: StringResult | undefined; /** The state code of the document owner */ stateCode: StringResult | undefined; /** The state of the document owner */ stateName: StringResult | undefined; /** The vehicle owner */ vehicleOwner: StringResult | undefined; /** The vehicle type */ vehicleType: StringResult | undefined; /** The visa type of the document */ visaType: StringResult | undefined; /** The work restriction of the document owner */ workRestriction: StringResult | undefined; /** Determines if date of expiry is permanent */ dateOfExpiryPermanent: boolean | undefined; /** The localized name of the document owner */ localizedName: StringResult | undefined; /** Scanning sides matching input image indexes in `subResults`. */ inputImagesScanningSide: ScanningSide[] | undefined; /** Scanning sides matching document image indexes in `subResults`. */ documentImagesScanningSide: ScanningSide[] | undefined; /** Scanning side matching the returned face image. */ faceImageScanningSide: ScanningSide | undefined; /** Scanning side matching the returned signature image. */ signatureImageScanningSide: ScanningSide | undefined; /** Scanning side matching the returned barcode image. */ barcodeImageScanningSide: ScanningSide | undefined; /** The results of scanning each side of the document */ subResults: SingleSideScanningResult[]; }; /** Represents the scanning session for BlinkID */ export declare type BlinkIdScanningSession = EmbindObject<{ /** Resets the scanning session to initial state. */ reset: () => void; /** Resolves the current step and advances the session when possible. */ resolveCurrentStep: () => void; /** * Processes the input camera frame * * @param image The frame to process * @returns The `BlinkIdProcessResult`. */ process: (image: ImageData) => BlinkIdProcessResult; /** * Returns the result of the scanning session. * * @param redactionSettings - The redaction settings to apply to the result. * If not provided, the default redaction settings will be used. * @returns The `BlinkIdScanningResult` */ getResult: (redactionSettings?: RedactionSettings) => BlinkIdScanningResult; /** Returns session settings used to create this session. */ getSettings: () => BlinkIdSessionSettings; /** Returns the resolved settings used to configure the recognizer. */ getResolvedSessionSettings: () => BlinkIdSessionSettings; /** Returns the session ID. */ getSessionId: () => string; /** Returns the session number. */ getSessionNumber: () => number; /** Returns the scanning status. */ getScanningStatus: () => ScanningStatus; }>; /** * Represents the error returned from `BlinkIdScanningSession.process` and * `BlinkIdScanningSession.reset` / `resolveCurrentStep`. */ export declare type BlinkIdSessionError = { /** The error type. */ error: BlinkIdSessionErrorType; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the error statuses returned from the `BlinkIDScanningSession`. */ export declare type BlinkIdSessionErrorType = "document-scanned" | "result-retrieved"; export declare type BlinkIdSessionErrorWithBuffer = BlinkIdSessionError & { arrayBuffer: ArrayBuffer; }; /** * Represents the configuration settings for a scanning session. * * This structure holds the settings related to the resources initialization, * input image source, scanning mode, and specific scanning configurations that * define how the scanning session should behave. * * The settings control various aspects of the scanning process including: * * - Input source (video stream or single photo) * - Scanning mode (single or multiple sides) * - Document detection and quality analysis * - Image processing and result extraction * * @public */ export declare type BlinkIdSessionSettings = { /** * The type of image source for the scanning session. * * Defines whether the images are sourced from a video stream or a single * photo, as defined by `InputImageSource`. The default is set to `video` for * real-time scanning through a camera feed. * * - `video` - Uses continuous camera feed for scanning * - `photo` - Uses a single captured photo for scanning * * @defaultValue `video` */ inputImageSource: InputImageSource; /** * The scanning mode to be used during the scanning session. * * Specifies whether the scanning is for a single side of a document or * multiple sides, as defined in `ScanningMode`. The default is set to * `automatic`, which automatically determines the number of sides to scan * based on the detected document type. * * - `automatic` - Automatically determines required sides * - `single` - Scans only one side * * @defaultValue `automatic` */ scanningMode: ScanningMode; /** * The specific scanning settings for the scanning session. * * Defines various parameters that control the scanning process including: * * - Document detection and quality thresholds * - Image processing options * - Result extraction and validation rules * - Document-specific scanning behaviors * * @see `ScanningSettings` for detailed configuration options */ scanningSettings: ScanningSettings; }; export declare type BlinkIdSessionSettingsInput = OverrideProperties, { scanningSettings?: PartialScanningSettingsInput; }>; /** * The BlinkID Wasm module. * * @ignore */ export declare interface BlinkIdWasmModule extends BlinkIdBindings, EmscriptenModule, MemFSModule { getDefaultRedactionSettings: (documentType: DocumentClassInfo) => RedactionSettings; getRecognizerVersion: () => string; } /** * The BlinkID worker. */ export declare class BlinkIdWorker { #private; /** * The progress status callback. */ progressStatusCallback?: ProgressStatusCallback; constructor(); reportPinglet(pinglet: Ping): void; sendPinglets(): void; /** * This method initializes everything. */ initBlinkId(settings: BlinkIdWorkerInitSettings, progressCallback?: ProgressStatusCallback): Promise; /** * This method creates a BlinkID scanning session. * * @param sessionSettings - The options for the session. * @returns The session. */ createScanningSession(sessionSettings?: BlinkIdSessionSettingsInput, options?: BlinkIdCreateScanningSessionOptions): WorkerScanningSession & ProxyMarked; getDefaultRedactionSettings(documentType: DocumentClassInfo): RedactionSettings; /** * This method is called when the worker is terminated. */ [finalizer](): void; /** * Terminates the workers and the Wasm runtime. */ terminate(): Promise; } /** * Initialization settings for the BlinkID worker. * * These settings control how the BlinkID worker is initialized and configured, * including resource locations, memory allocation, and build variants. */ export declare type BlinkIdWorkerInitSettings = { /** * The license key required to unlock and use the BlinkID SDK. * This must be a valid license key obtained from Microblink. */ licenseKey: string; /** * The URL of the Microblink proxy server. This proxy handles requests to Microblink's Baltazar and Ping servers. * * **Requirements:** * - Must be a valid HTTPS URL * - The proxy server must implement the expected Microblink API endpoints * - This feature is only available if explicitly permitted by your license * * **Endpoints:** * - Ping: `{proxyUrl}/ping` * - Baltazar: `{proxyUrl}/api/v2/status/check` * * @example "https://your-proxy.example.com" */ microblinkProxyUrl?: string; /** * The parent directory where the `/resources` directory is hosted. * Defaults to `window.location.href`, at the root of the current page. */ resourcesLocation?: string; /** * Optional browser-only OTA resource settings. * * Hosted baseline resources are always loaded. Provider update checks are * enabled by default; set `checkForUpdates` to `false` to skip the provider. */ otaResources?: BlinkIdOtaResourceSettings; /** * A unique identifier for the user/session. * Used for analytics and tracking purposes. */ userId: string; /** * The WebAssembly module variant to use. * Different variants may offer different performance/size tradeoffs. */ wasmVariant?: WasmVariant; /** * The initial memory allocation for the Wasm module, in megabytes. * Larger values may improve performance but increase memory usage. */ initialMemory?: number; /** * Whether to use the lightweight build of the SDK. * Lightweight builds have reduced size but may have limited functionality. */ useLightweightBuild: boolean; }; /** * The BlinkID worker proxy. */ export declare type BlinkIdWorkerProxy = Omit; declare type BrandsItem = { brand: string; version: string; }; declare type Browser = { brand: string; version: string; }; export declare type BrowserStorageSupport = { cookieEnabled: boolean; localStorageEnabled: boolean; }; declare type BrowserStorageSupport_2 = { cookieEnabled: boolean; localStorageEnabled: boolean; }; declare type CameraFacing = "Front" | "Back" | "Unknown"; declare type CameraFacing_2 = "Front" | "Back" | "Unknown"; /** * Options for a C call. * * @ignore */ export declare interface CCallOpts { async?: boolean | undefined; } /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents countries */ export declare type Country = "albania" | "algeria" | "argentina" | "australia" | "austria" | "azerbaijan" | "bahrain" | "bangladesh" | "belgium" | "bosnia-and-herzegovina" | "brunei" | "bulgaria" | "cambodia" | "canada" | "chile" | "colombia" | "costa-rica" | "croatia" | "cyprus" | "czechia" | "denmark" | "dominican-republic" | "egypt" | "estonia" | "finland" | "france" | "georgia" | "germany" | "ghana" | "greece" | "guatemala" | "hong-kong" | "hungary" | "india" | "indonesia" | "ireland" | "israel" | "italy" | "jordan" | "kazakhstan" | "kenya" | "kosovo" | "kuwait" | "latvia" | "lithuania" | "malaysia" | "maldives" | "malta" | "mauritius" | "mexico" | "morocco" | "netherlands" | "new-zealand" | "nigeria" | "pakistan" | "panama" | "paraguay" | "philippines" | "poland" | "portugal" | "puerto-rico" | "qatar" | "romania" | "russia" | "saudi-arabia" | "serbia" | "singapore" | "slovakia" | "slovenia" | "south-africa" | "spain" | "sweden" | "switzerland" | "taiwan" | "thailand" | "tunisia" | "turkey" | "uae" | "uganda" | "uk" | "ukraine" | "usa" | "vietnam" | "brazil" | "norway" | "oman" | "ecuador" | "el-salvador" | "sri-lanka" | "peru" | "uruguay" | "bahamas" | "bermuda" | "bolivia" | "china" | "european-union" | "haiti" | "honduras" | "iceland" | "japan" | "luxembourg" | "montenegro" | "nicaragua" | "south-korea" | "venezuela" | "afghanistan" | "aland-islands" | "american-samoa" | "andorra" | "angola" | "anguilla" | "antarctica" | "antigua-and-barbuda" | "armenia" | "aruba" | "bailiwick-of-guernsey" | "bailiwick-of-jersey" | "barbados" | "belarus" | "belize" | "benin" | "bhutan" | "bonaire-saint-eustatius-and-saba" | "botswana" | "bouvet-island" | "british-indian-ocean-territory" | "burkina-faso" | "burundi" | "cameroon" | "cape-verde" | "caribbean-netherlands" | "cayman-islands" | "central-african-republic" | "chad" | "christmas-island" | "cocos-islands" | "comoros" | "congo" | "cook-islands" | "cuba" | "curacao" | "democratic-republic-of-the-congo" | "djibouti" | "dominica" | "east-timor" | "equatorial-guinea" | "eritrea" | "ethiopia" | "falkland-islands" | "faroe-islands" | "federated-states-of-micronesia" | "fiji" | "french-guiana" | "french-polynesia" | "french-southern-territories" | "gabon" | "gambia" | "gibraltar" | "greenland" | "grenada" | "guadeloupe" | "guam" | "guinea" | "guinea-bissau" | "guyana" | "heard-island-and-mcdonald-islands" | "iran" | "iraq" | "isle-of-man" | "ivory-coast" | "jamaica" | "kiribati" | "kyrgyzstan" | "laos" | "lebanon" | "lesotho" | "liberia" | "libya" | "liechtenstein" | "macau" | "madagascar" | "malawi" | "mali" | "marshall-islands" | "martinique" | "mauritania" | "mayotte" | "moldova" | "monaco" | "mongolia" | "montserrat" | "mozambique" | "myanmar" | "namibia" | "nauru" | "nepal" | "new-caledonia" | "niger" | "niue" | "norfolk-island" | "northern-cyprus" | "northern-mariana-islands" | "north-korea" | "north-macedonia" | "palau" | "palestine" | "papua-new-guinea" | "pitcairn" | "reunion" | "rwanda" | "saint-barthelemy" | "saint-helena-ascension-and-tristian-da-cunha" | "saint-kitts-and-nevis" | "saint-lucia" | "saint-martin" | "saint-pierre-and-miquelon" | "saint-vincent-and-the-grenadines" | "samoa" | "san-marino" | "sao-tome-and-principe" | "senegal" | "seychelles" | "sierra-leone" | "sint-maarten" | "solomon-islands" | "somalia" | "south-georgia-and-the-south-sandwich-islands" | "south-sudan" | "sudan" | "suriname" | "svalbard-and-jan-mayen" | "eswatini" | "syria" | "tajikistan" | "tanzania" | "togo" | "tokelau" | "tonga" | "trinidad-and-tobago" | "turkmenistan" | "turks-and-caicos-islands" | "tuvalu" | "united-states-minor-outlying-islands" | "uzbekistan" | "vanuatu" | "vatican-city" | "virgin-islands-british" | "wallis-and-futuna" | "western-sahara" | "yemen" | "yugoslavia" | "zambia" | "zimbabwe" | "schengen-area" | "saint-thomas-and-prince" | "virgin-islands-of-the-united-states"; export declare function createDerivedDeviceInfo(userAgent: string, userAgentData?: UADataValues): DerivedDeviceInfo; /** * Creates a Comlink-proxied Web Worker (generic) with automatic ImageData buffer transfer. * * This function wraps the worker proxy to automatically transfer ImageData buffers when calling * `session.process()`, eliminating ~8MB copy per frame during scanning. * * The wrapper intercepts `createScanningSession` and wraps the returned session to auto-transfer * ImageData buffers when `process()` is called. This pattern is common across all Microblink SDKs. * * @param resourcesLocation - Where the "resources" directory is placed. * @param workerScriptName - The worker script filename. * @returns A promise that resolves with a Comlink-proxied instance of the Web Worker. */ export declare function createProxyWorker(resourcesLocation: string, workerScriptName: string): Promise>; /** Represents the state of the data match per field. */ export declare type DataMatchFieldState = { /** Represents the type of the field used in data match. */ fieldType: DataMatchFieldType; /** Represents the state of the data match on the specified field. */ state: DataMatchState; }; /** Represents the type of the field used in data match. */ export declare type DataMatchFieldType = "date-of-birth" | "date-of-expiry" | "document-number" | "document-additional-number" | "document-optional-additional-number" | "personal-id-number"; /** Represents the result of the data match algorithm. */ export declare type DataMatchResult = { /** Info on whether the data extracted from multiple sides matches */ statePerField: DataMatchFieldState[]; /** The overall state of the data match. */ overallState: DataMatchState; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the state of the data match. */ export declare type DataMatchState = "not-performed" | "failed" | "success"; export declare type DateCompleteness = { parsed: boolean; originalString: StringCompleteness; }; /** * Smart date result structure. * * @template S - The type of the string result. */ export declare type DateResult = { /** Day in month [1-31] */ day?: number; /** Month in year [1-12] */ month?: number; /** Four digit year */ year?: number; /** Original date time string */ originalString?: S; /** * Indicates whether this Date object is filled by internal domain knowledge. * If it is, successfullyParsed flag is set to false and originalString is set * to empty. */ filledByDomainKnowledge: boolean; /** Indicates whether this Date object is successfully parsed from string. */ successfullyParsed?: boolean; }; export declare type DateResultCompleteness = { parsed: boolean; originalString: StringResultCompleteness; }; export declare const DEFAULT_BLINK_ID_OTA_RESOURCE_PROVIDER_URL = "https://blinkid-ota.microblink.com"; /** * Default redaction settings used when @type {RedactionSettingsResolver} returns a partial/incomplete setting */ export declare const DEFAULT_REDACTION_SETTINGS: { readonly fields: []; readonly mode: "full-result"; readonly redactBarcode: false; readonly redactMrz: false; }; /** The additional information on the document owner's dependents. */ export declare type DependentInfo = { /** The date of birth of the dependent */ dateOfBirth?: DateResult; /** The sex or gender of the dependent */ sex?: StringResult; /** The document number of the dependent */ documentNumber?: StringResult; /** The full name of the dependent */ fullName?: StringResult; }; export declare type DependentInfoCompleteness = { dateOfBirth?: DateResultCompleteness; sex?: StringResultCompleteness; documentNumber?: StringResultCompleteness; fullName?: StringResultCompleteness; }; export declare type DependentsInfoCompleteness = { dependentsInfo?: DependentInfoCompleteness[]; }; export declare type DerivedDeviceInfo = { model: string; formFactors: FormFactor[]; platform: string; browser: { brand: string; version: string; }; }; declare type DerivedDeviceInfo_2 = { model: string; formFactors: FormFactorsItem[]; platform: string; browser: Browser; }; /** * Represents the result of the image crop transformation with additional * details. */ export declare type DetailedCroppedImageResult = { /** The image data. */ image: ImageData; /** The location of the image. */ location?: Rectangle; /** The side of the image. */ side?: ScanningSide; }; /** Represents the detailed field type. */ export declare type DetailedFieldType = { /** The field type. */ fieldType: FieldType; /** The alphabet type. */ alphabetType: AlphabetType; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the status of the document detection process. * * This type represents all possible states that can occur during document * detection: * * - `failed` * * - Detection has failed * - `success` * * - Document has been successfully detected * - `camera-too-far` * * - Camera is positioned too far from the document * - `camera-too-close` * * - Camera is positioned too close to the document * - `camera-angle-too-steep` * * - Camera angle relative to the document is too steep * - `document-too-close-to-camera-edge` * * - Document is positioned too close to the edge of camera view * - `document-partially-visible` * * - Only part of the document is visible in camera view */ export declare type DetectionStatus = "failed" | "success" | "camera-too-far" | "camera-too-close" | "camera-angle-too-steep" | "document-too-close-to-camera-edge" | "document-partially-visible"; export declare type DeviceInfo = { userAgentData?: UADataValues; userAgent: string; threads: number; memory?: number; gpu?: GpuInfo; screen: DeviceScreenInfo; browserStorageSupport: BrowserStorageSupport; derivedDeviceInfo: DerivedDeviceInfo; }; declare type DeviceOrientation = "Portrait" | "LandscapeRight" | "LandscapeLeft" | "PortraitUpside"; export declare type DeviceScreenInfo = { screenWidth: number; screenHeight: number; devicePixelRatio: number; physicalScreenWidth: number; physicalScreenHeight: number; maxTouchPoints: number; }; /** * Settings for the document capture module. * * This module is responsible for the initial document detection, image * extraction (such as face and document images), and image quality validation * (blur, glare, and lighting checks). * * For Automatic ScanningMode, when scanning a supported document, the front * side must be captured first, followed by the back side. When scanning an * unsupported document, the capture order is flexible; since the side cannot be * identified, either side can be scanned first. * * This setting must be turned on for Viz and Mrz extraction to work correctly. * * If enabled, session will start with document detection step at the * initialization. */ export declare type DocumentCaptureModuleSettings = { /** * Specifies whether the input image is already cropped, likely cropped, or * not cropped. * * When set to `"cropped"`, the input image must consist solely of the already * cropped and corrected document. * * When set to `"unknown"`, the recognizer first attempts extraction as if the * image is cropped, then falls back to the regular localization pipeline if * extraction fails. * * `"cropped"` and `"unknown"` are applicable only to `Photo` sources and will * cause a validation error for `Video`. * * @default "not-cropped" */ cropType: InputImageCropType; /** * Enables the scanning and processing of unsupported document types. * * A document is considered unsupported if its classification result is * `OTHER`. * * @default false */ unsupportedDocumentsAllowed: boolean; /** * Indicates whether the back side scan should be skipped if that side * supports image capture only (no MRZ, Barcode, etc.). * * Some documents have a back side that is supported for capture but contains * no extractable data. These sides can be captured only. * * When `true`, processing stops after the front side for these documents. * When `false`, the back side is captured even if no data is extracted. * * Default value is `true`. * * Note for `ScanningMode`: * * - `Automatic`: Can be toggled as needed to optimize the flow. * - `Single`: This must remain `true`. Since only one side is captured in this * mode, setting this to `false` will result in a settings validation * failure. * * @default true */ secondSideWithNoExtractableDataSkipped: boolean; /** * Indicates whether only the passport data page (the page containing the MRZ) * should be scanned. * * If set to `false`, the scanning process will require a second page scan for * certain passport types that support it. * * Default value is `true`. * * Note for `ScanningMode`: * * - `Automatic`: Can be toggled as needed. * - `Single`: This must remain `true`. Since only one side is captured in this * mode, setting this to `false` will result in a settings validation * failure. * * @default true */ passportDataPageScanOnly: boolean; /** * Enables the extraction of the document's face image. * * If face image is present on the document, an extraction becomes mandatory * for supported documents. The requirement for its presence is determined by * document rules. * * For unsupported documents, presence is optional. * * @default false */ faceImageExtractionEnabled: boolean; /** * If set to true, face image presence will be mandatory for the scanned * document. * * For `Automatic` scanning mode, document side with the face image must be * scanned first. * * In case of a timeout and advancement to the next step in the scanning flow, * if a face image is detected on the scanned side but cannot be extracted, * the presence requirement is considered fulfilled. As a result, face image * extraction will no longer be a requirement to complete the scan on next * side. * * @default false */ faceImagePresenceMandatory: boolean; /** * Indicates whether input images should be returned in the result. * * Save the input images at the moment of the data extraction or timeout. This * significantly increases memory consumption. The scanning performance is not * affected. * * @default false */ inputImageReturnEnabled: boolean; /** * Indicates whether the document image should be returned. * * @default false */ documentImageReturnEnabled: boolean; /** * Defines the minimum required margin between the document and the edge of * the input image, expressed as a percentage of the image dimensions. * * This setting ensures compliance with regulations in certain countries that * mandate documents be stored with adequate visual margins. * * This setting is only applicable for the 'Video' input source Providing this * setting for 'Photo' will result in a settings validation failure. * * Allowed values range is [0.0, 1.0]. * * Defaults to '0.02f' for `Video` mode (recommended). * * @default 0.02 */ inputImageMargin: number; /** * The DPI value for the cropped document, face and signature image. * * Allowed values range is [100, 400]. * * @default 250 */ dotsPerInch: number; /** * The extension factor for the cropped document image. Applicable only to * document images. * * Allowed values range is [0.0, 1.0]. * * @default 0.0 */ extensionFactor: number; /** * The sensitivity of blur detection in the document image. * * Defines the severity of blur detected in the document image, as defined in * `SensitivityLevel`. Values range from `Off` (detection NotAvailable) to * higher sensitivity levels of blur detection. Low – less sensitive to blur; * if something is detected as blur, it is almost certainly actual blur, but * some amount of blur may not be detected at all. High – highly sensitive to * blur; it may detect as blur even something that only resembles blur. * * @default "mid" */ blurSensitivityLevel: SensitivityLevel; /** * Indicates whether images with detected blur should be rejected. * * A value of `true` means images with detected blur will be excluded from * further processing. If glare is detected, `ProcessingStatus` will be * `ImagePreprocessingFailed`. * * A value of `false` means images will be processed even if blur is detected, * and the blur status will be reported in the `ProcessResult`. * * Default behavior depends on `blurSensitivityLevel`: * * - `Low`, `Mid`, `High`: Defaults to `true`. * - `Off`: Defaults to `false`. This setting is not applicable if sensitivity * level is `Off` and setting it to `true` will result in a settings * validation failure. * * @default true */ imageWithBlurRejected: boolean; /** * The sensitivity of glare detection in the document image. * * Defines the severity of glare detected in the document image, as defined in * `SensitivityLevel`. Values range from `Off` (detection NotAvailable) to * higher sensitivity levels of glare detection. Low – less sensitive to * glare; if something is detected as glare, it is almost certainly actual * glare, but some amount of glare may not be detected at all. High – highly * sensitive to glare; it may detect as glare even something that only * resembles glare. * * @default "mid" */ glareSensitivityLevel: SensitivityLevel; /** * Indicates whether images with detected glare should be rejected. * * A value of `true` means images with detected glare will be excluded from * further processing. If glare is detected, `ProcessingStatus` will be * `ImagePreprocessingFailed`. * * A value of `false` means images will be processed even if glare is * detected, and the glare status will be reported in the `ProcessResult`. * * Default behavior depends on `glareSensitivityLevel`: * * - `Low`, `Mid`, `High`: Defaults to `true`. * - `Off`: Defaults to `false`. This setting is not applicable if sensitivity * level is `Off` and Setting it to `true` will result in a settings * validation failure. * * @default true */ imageWithGlareRejected: boolean; /** * The sensitivity of allowed detected tilt of the document in the image. * * Defines the severity of allowed detected tilt of the document in the image, * as defined in `SensitivityLevel`. Values range from `Off` (detection * NotAvailable) to higher sensitivity levels of allowed tilt. Low – less * sensitive to tilt. High – highly sensitive to tilt. * * @default "mid" */ tiltSensitivityLevel: SensitivityLevel; /** * Indicates whether images with poor lighting conditions should be rejected. * * Poor lighting conditions are represented as either `TooBright` or `TooDark` * document images, as defined in the `ImageAnalysisLightingStatus` type. * * A value of `true` means images with poor lighting conditions will be * excluded from further processing to prevent images with inadequate lighting * from being used. * * If poor light conditions are detected, `ProcessingStatus` will be * `ImagePreprocessingFailed` and lighting status will be reported in the * `ProcessResult`. * * @default true */ imageWithPoorLightingRejected: boolean; /** * Indicates whether images occluded by hand should be rejected. * * When set to `true`, images where a hand is detected covering parts of the * document will be excluded from further processing. If occlusion is * detected, `ProcessingStatus` will be `ImagePreprocessingFailed` and hand * occlusion status will be reported in the `ProcessResult`. * * Default behavior depends on `cropType`: * * - `"cropped"`: Defaults to `false`. This setting is not applicable. Setting * this to `true` while `cropType` is `"cropped"` will result in a settings * validation failure. * - `"not-cropped"` and `"unknown"`: Defaults to `true`. Images with hand * occlusion are rejected. * * @default true */ imageWithHandOcclusionRejected: boolean; /** * Represents the strategy used to select the best input image from a pool of * stable input images. * * Available strategies are `"single-image"`, `"optimize-for-speed"`, * `"default"`, and `"optimize-for-quality"`. The `"default"` strategy * represents a trade-off between speed and quality, while * `"optimize-for-speed"` and `"optimize-for-quality"` are optimized for speed * and quality respectively. * * This setting is only applicable for the `Video` input image source. * * @default "default" */ inputImageSelectionStrategy: InputImageSelectionStrategy; }; /** * A single document classification component. * * `id` is present when the classification maps to a value known at build time. * `rawValue` always carries the raw classification token from the document * knowledge database, including OTA-delivered classes unknown at build time. */ export declare type DocumentClassComponent = { /** Strongly-typed identifier, when known at build time. */ id?: TId; /** Raw classification value (document knowledge database format). */ rawValue: string; }; /** The document country classification. */ export declare type DocumentClassCountry = DocumentClassComponent; /** The document type classification. */ export declare type DocumentClassDocumentType = DocumentClassComponent; /** Represents the document class information. */ export declare type DocumentClassInfo = { /** The document country. */ country: DocumentClassCountry | undefined; /** The document region. */ region: DocumentClassRegion | undefined; /** The type of the scanned document. */ documentType: DocumentClassDocumentType | undefined; /** The name of the country that issued the scanned document. */ countryName?: string; /** The ISO numeric code of the country that issued the scanned document. */ isoNumericCountryCode?: string; /** The 2-letter ISO code of the country that issued the scanned document. */ isoAlpha2CountryCode?: string; /** The 3-letter ISO code of the country that issued the scanned document. */ isoAlpha3CountryCode?: string; }; /** The document region classification. */ export declare type DocumentClassRegion = DocumentClassComponent; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * DocumentImageColor defines possible color statuses determined from scanned * image. * * - `not-available` Determining image color status was not performed. * - `black-and-white` Black-and-white image scanned. * - `color` Color image scanned. */ export declare type DocumentImageColor = "not-available" | "black-and-white" | "color"; /** Represents the document number redaction settings. */ export declare type DocumentNumberRedactionSettings = { /** * Defines how many digits at the beginning of the document number remain * visible after redaction. Allowed values are `0` to `255`. * * @default 0 */ prefixDigitsVisible: number; /** * Defines how many digits at the end of the document number remain visible * after redaction. Allowed values are `0` to `255`. * * @default 0 */ suffixDigitsVisible: number; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * DocumentOrientation defines possible card orientations. * * - `not-available` Detection was not performed. * - `horizontal` Horizontal document orientation. * - `vertical` Vertical document orientation. */ export declare type DocumentOrientation = "not-available" | "horizontal" | "vertical"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the rotation of the document. * * - `not-available` The rotation is not available. * - `zero` The rotation is zero. * - `clockwise-90` The rotation is clockwise 90 degrees. * - `counter-clockwise-90` The rotation is counter clockwise 90 degrees. * - `upside-down` The rotation is upside down. */ export declare type DocumentRotation = "not-available" | "zero" | "clockwise-90" | "counter-clockwise-90" | "upside-down"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents document class types */ declare type DocumentType_2 = "consular-id" | "dl" | "dl-public-services-card" | "employment-pass" | "fin-card" | "id" | "multipurpose-id" | "mykad" | "mykid" | "mypr" | "mytentera" | "pan-card" | "professional-id" | "public-services-card" | "residence-permit" | "resident-id" | "temporary-residence-permit" | "voter-id" | "work-permit" | "ikad" | "military-id" | "mykas" | "social-security-card" | "health-insurance-card" | "passport" | "s-pass" | "address-card" | "alien-id" | "alien-passport" | "green-card" | "minors-id" | "postal-id" | "professional-dl" | "tax-id" | "weapon-permit" | "visa" | "border-crossing-card" | "driver-card" | "global-entry-card" | "mypolis" | "nexus-card" | "passport-card" | "proof-of-age-card" | "refugee-id" | "tribal-id" | "veteran-id" | "citizenship-certificate" | "my-number-card" | "consular-passport" | "minors-passport" | "minors-public-services-card" | "driving-privilege-card" | "asylum-request" | "driver-qualification-card" | "provisional-dl" | "refugee-passport" | "special-id" | "uniformed-services-id" | "immigrant-visa" | "consular-voter-id" | "twic-card" | "exit-entry-permit" | "mainland-travel-permit-taiwan" | "nbi-clearance" | "proof-of-registration" | "temporary-protection-permit" | "afghan-citizen-card" | "eid" | "pass" | "sis-id" | "asic-card" | "bidoon-card" | "interim-health-insurance-card" | "non-voter-id" | "reciprocal-health-insurance-card" | "vehicle-registration" | "esaad-card" | "registration-certificate" | "medical-marijuana-id" | "non-card-tribal-id" | "diplomatic-id" | "emergency-passport" | "temporary-passport" | "metis-federation-card" | "adr-certificate" | "nin-card" | "mysss-card" | "gendarmerie-id" | "police-id" | "origin-card"; export { DocumentType_2 as DocumentType } /** * Progress reported during a resource download. */ export declare type DownloadProgress = { loaded: number; contentLength: number; progress: number; finished: boolean; }; /** * Represents detailed information from a driver's license. * * @template S - The type of the string result. */ export declare type DriverLicenceDetailedInfo = { /** * The restrictions to driving privileges for the United States driver license * owner */ restrictions?: S; /** The additional privileges granted to the US driver license owner */ endorsements?: S; /** The type of vehicle the driver license owner has privilege to drive */ vehicleClass?: S; /** The driver license conditions */ conditions?: S; /** The additional information on vehicle class */ vehicleClassesInfo?: VehicleClassInfo[]; }; export declare type DriverLicenseDetailedInfoCompleteness = DriverLicenseDetailedInfoInfo; export declare type DriverLicenseDetailedInfoInfo = { restrictions?: S; endorsements?: S; vehicleClass?: S; conditions?: S; vehicleClassesInfo?: VehicleClassInfoCompleteness[]; }; /** * Specifies an abstract object placed on the WebAssembly heap. Objects placed * on the WebAssembly heap are not cleaned up by the garbage collector of the * JavaScript engine. The memory used by the object must be cleaned up manually * by calling the delete() method. * * @ignore * @see https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html#memory-management for more details. */ export declare type EmbindObject = T & { delete: () => void; isDeleted: () => boolean; deleteLater: () => void; isAliasOf: (other: any) => boolean; }; /** * The main EmscriptenModule interface. * * @ignore */ export declare interface EmscriptenModule { print(str: string): void; printErr(str: string): void; arguments: string[]; environment: EnvironmentType; preInit: Array<{ (): void; }>; preRun: Array<{ (): void; }>; postRun: Array<{ (): void; }>; onAbort: { (what: any): void; }; onRuntimeInitialized: { (): void; }; preinitializedWebGLContext: WebGLRenderingContext; noInitialRun: boolean; noExitRuntime: boolean; logReadFiles: boolean; filePackagePrefixURL: string; wasmBinary: ArrayBuffer; mainScriptUrlOrBlob?: string; setStatus: (text: string) => void; /** * Allows you to provide your own WebAssembly.Memory to use as the memory. The * properties used to initialize the memory should match the compiler options. * For example, if you set INITIAL_MEMORY to 8MB without memory growth, then * the wasmMemory you provide (if any) should have both the 'initial' and * 'maximum' set to 128 (due to WASM page sizes being 64KB). */ wasmMemory: WebAssembly.Memory; destroy(object: object): void; getPreloadedPackage(remotePackageName: string, remotePackageSize: number): ArrayBuffer; instantiateWasm(imports: WebAssembly.Imports, successCallback: (module: WebAssembly.Instance) => void): WebAssembly.Exports | undefined; locateFile(url: string, scriptDirectory: string): string; onCustomMessage(event: MessageEvent): void; HEAP: Int32Array; IHEAP: Int32Array; FHEAP: Float64Array; HEAP8: Int8Array; HEAP16: Int16Array; HEAP32: Int32Array; HEAPU8: Uint8Array; HEAPU16: Uint16Array; HEAPU32: Uint32Array; HEAPF32: Float32Array; HEAPF64: Float64Array; HEAP64: BigInt64Array; HEAPU64: BigUint64Array; TOTAL_STACK: number; TOTAL_MEMORY: number; FAST_MEMORY: number; addOnPreRun(cb: () => any): void; addOnInit(cb: () => any): void; addOnPreMain(cb: () => any): void; addOnExit(cb: () => any): void; addOnPostRun(cb: () => any): void; preloadedImages: any; preloadedAudios: any; _malloc(size: number): number; _free(ptr: number): void; } /** * A factory function is generated when setting the `MODULARIZE` build option to * `1` in your Emscripten build. It return a Promise that resolves to an * initialized, ready-to-call `EmscriptenModule` instance. * * By default, the factory function will be named `Module`. It's recommended to * use the `EXPORT_ES6` option, in which the factory function will be the * default export. If used without `EXPORT_ES6`, the factory function will be a * global variable. You can rename the variable using the `EXPORT_NAME` build * option. It's left to you to declare any global variables as needed in your * application's types. * * @ignore * @param moduleOverrides Default properties for the initialized module. */ export declare type EmscriptenModuleFactory = (moduleOverrides?: Partial) => Promise; /** * The environment type. * * @ignore */ export declare type EnvironmentType = "WEB" | "NODE" | "SHELL" | "WORKER"; declare type ErrorMessageType = "MoveCloser" | "MoveFarther" | "KeepVisible" | "FlipSide" | "AlignDocument" | "MoveFromEdge" | "IncreaseLighting" | "DecreaseLighting" | "EliminateBlur" | "EliminateGlare"; declare type ErrorType = "NonFatal" | "Crash"; declare type EventType = "CameraPermissionCheck" | "CameraPermissionRequest" | "CameraPermissionUserResponse"; declare type EventType_2 = "CameraStarted" | "CameraClosed" | "OnboardingInfoDisplayed" | "CloseButtonClicked" | "HelpTooltipDisplayed" | "HelpOpened" | "HelpClosed" | "AlertDisplayed" | "ErrorMessage" | "StepTimeout" | "AppMovedToBackground" | "InactivityTimeout" | "UnsupportedBarcodeTimeout"; /** * Extracts the barcode input image from the scanning result. * * @param blinkIdScanningResult - The scanning result. * @returns The barcode input image. */ export declare function extractBarcodeImage(blinkIdScanningResult: BlinkIdScanningResult): ImageData | null; /** * Extracts the face image from the scanning result. * * @param blinkIdScanningResult - The scanning result. * @returns The face image. */ export declare function extractFaceImage(blinkIdScanningResult: BlinkIdScanningResult): ImageData | null; export declare type ExtractionAttribute = "optional" | "mandatory" | "blacklisted"; export declare type ExtractionFailureReason = "character-validation" | "detection" | "parsing" | "decoding"; export declare type ExtractionStatus = "not-extracted" | "failed" | "extracted"; /** * Extracts the document image for a given side from the scanning result. * * @param blinkIdScanningResult - The scanning result. * @param side - The side to extract the document image for. * @returns The document image for the given side. */ export declare function extractSideDocumentImage(blinkIdScanningResult: BlinkIdScanningResult, side: ScanningSide): ImageData | null; /** * Extracts the input image for a given side from the scanning result. * * @param blinkIdScanningResult - The scanning result. * @param side - The side to extract the input image for. * @returns The input image for the given side. */ export declare function extractSideInputImage(blinkIdScanningResult: BlinkIdScanningResult, side: ScanningSide): ImageData | null; /** * Extracts the signature image from the scanning result. * * @param blinkIdScanningResult - The scanning result. * @returns The signature image. */ export declare function extractSignatureImage(blinkIdScanningResult: BlinkIdScanningResult): ImageData | null; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents all possible field types that can be extracted from the document. */ export declare type FieldType = "localizedName" | "additionalAddressInformation" | "additionalNameInformation" | "additionalOptionalAddressInformation" | "additionalPersonalIdNumber" | "address" | "bloodType" | "classEffectiveDate" | "classExpiryDate" | "conditions" | "dateOfBirth" | "dateOfExpiry" | "dateOfIssue" | "documentAdditionalNumber" | "documentNumber" | "documentOptionalAdditionalNumber" | "employer" | "endorsements" | "fathersName" | "firstName" | "fullName" | "issuingAuthority" | "lastName" | "licenceType" | "maritalStatus" | "mothersName" | "mrz" | "nationality" | "personalIdNumber" | "placeOfBirth" | "profession" | "race" | "religion" | "residentialStatus" | "restrictions" | "sex" | "sponsor" | "vehicleClass" | "visaType" | "dependentDateOfBirth" | "dependentDocumentNumber" | "dependentFullName" | "dependentSex" | "documentSubtype" | "eligibilityCategory" | "manufacturingYear" | "remarks" | "residencePermitType" | "specificDocumentValidity" | "vehicleOwner" | "vehicleType" | "nationalInsuranceNumber" | "countryCode" | "certificateNumber" | "municipalityOfRegistration" | "localityCode" | "maidenName" | "stateCode" | "dateOfEntry" | "municipalityCode" | "pollingStationCode" | "sectionCode" | "registrationCenterCode" | "stateName" | "effectiveDate" | "parentsLastName" | "workRestriction" | "parentsFirstName" | "socialSecurityStatus" | "legalStatus" | "husbandName" | "cardAccessNumber" | "parentFullName" | "ethnicity"; declare type Focus = "Auto" | "Fixed"; /** * Common form-factor values as per spec. * * @see https://wicg.github.io/ua-client-hints/#sec-ch-ua-form-factors */ export declare type FormFactor = "Desktop" | "Automotive" | "Mobile" | "Tablet" | "XR" | "EInk" | "Watch"; declare type FormFactorsItem = "Desktop" | "Automotive" | "Mobile" | "Tablet" | "XR" | "EInk" | "Watch"; declare type FullVersionListItem = { brand: string; version: string; }; /** * Gets a cross-origin worker URL as a data URL or blob URL. If the URL is same-origin, it will return the original URL. * * @param originalWorkerUrl - The original worker URL. * @param _options - The options for the worker. * @returns A promise that resolves with the cross-origin worker URL. */ export declare const getCrossOriginWorkerURL: (originalWorkerUrl: string, _options?: Options) => Promise; export declare type GetDefaultRedactionSettingsOptions = Omit; export declare function getDeviceInfo(): Promise; /** * Get granular device info from `navigator.userAgentData.getHighEntropyValues` * @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues */ export declare function getUserAgentData(): Promise; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Gets the user id from local storage, or generates a new one. * * This is a workaround for the lack of a user id in the worker scope. * * @param storageKey - The localStorage key to use for persisting the user id. * @returns a unique user id */ export declare function getUserId(storageKey: string): string; declare type Gpu = { renderer: string; shadingLanguageVersion: string; vendor: string; version: string; }; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParameter */ export declare type GpuInfo = { renderer: string; shadingLanguageVersion: string; vendor: string; version: string; }; declare type HelpCloseType = "ContentSkipped" | "ContentFullyViewed"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * ImageAnalysisDetectionStatus defines possible states of detection. * * - `not-available` Detection was not performed. * - `not-detected` Not detected on input image. * - `detected` Detected on input image. */ export declare type ImageAnalysisDetectionStatus = "not-available" | "not-detected" | "detected"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * ImageAnalysisLightingStatus defines possible lighting statuses. * * - `not-available` status is not available. * - `too-bright` status is when the document lighting is too bright. * - `too-dark` status is when the document lighting is too dark. * - `normal` status is when the document lighting is normal. */ export declare type ImageAnalysisLightingStatus = "not-available" | "too-bright" | "too-dark" | "normal"; export declare type ImageCompleteness = { status: ExtractionStatus; attribute: ExtractionAttribute; failureReason?: ExtractionFailureReason; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the types of images that can be extracted from the document. */ export declare type ImageExtractionType = "face" | "signature" | "document"; /** * Represents the results of processing and analyzing an input image. * * This structure contains the status of the processing, along with detailed * results from detection, document quality, and information about the document * analysis performed on the input image. */ export declare type InputImageAnalysisResult = { /** Status of the processing */ processingStatus: ProcessingStatus; /** List of fields that were expected on the document but were missing */ missingMandatoryFields: FieldType[]; /** List of fields that were extracted from the document */ extractedFields: FieldType[]; /** * List of fields that contained characters which were not expected in that * field */ invalidCharacterFields: FieldType[]; /** List of fields that weren't expected on the document but were present */ extraPresentFields: FieldType[]; /** List of failed image extractions */ imageExtractionFailures: ImageExtractionType[]; /** * Type or availability status of VIZ extraction for this input image. * * The value is `"not-available"` until a document is scanned. */ vizExtractionType: VizExtractionType; /** Side of the document being scanned */ scanningSide: ScanningSide; /** The status of the document detection */ documentDetectionStatus: DetectionStatus; /** The location of the detected document within an image */ documentLocation?: Quadrilateral; /** * Information about the document class. * * Absent when the document could not be classified (for example, for * unsupported documents without any extracted class info). */ documentClassInfo?: DocumentClassInfo; /** The status of blur detection */ blurDetectionStatus: ImageAnalysisDetectionStatus; /** The status of glare detection */ glareDetectionStatus: ImageAnalysisDetectionStatus; /** The color status of the document image */ documentColorStatus: DocumentImageColor; /** The status of moire pattern detection in the document image */ documentMoireStatus: ImageAnalysisDetectionStatus; /** The status of face detection */ faceDetectionStatus: ImageAnalysisDetectionStatus; /** The status of MRZ detection */ mrzDetectionStatus: ImageAnalysisDetectionStatus; /** The status of barcode detection */ barcodeDetectionStatus: ImageAnalysisDetectionStatus; /** The status of real ID detection */ realIDDetectionStatus: ImageAnalysisDetectionStatus; /** The status of lighting conditions in the document image */ documentLightingStatus: ImageAnalysisLightingStatus; /** The status of hand occlusion detection in the document image */ documentHandOcclusionStatus: ImageAnalysisDetectionStatus; /** The orientation of the document */ documentOrientation: DocumentOrientation; /** The rotation of the document in the frame */ documentRotation: DocumentRotation; /** * Records the conclusion drawn about whether the input image was already * cropped and perspective-corrected. * * Only meaningful when the document capture module `cropType` was set to * `"unknown"` and the input source is `Photo`; otherwise always * `"not-available"`. */ inputImageCropAnalysis: InputImageCropAnalysis; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Describes the conclusion drawn about whether the input image was already * cropped and perspective-corrected prior to being submitted for recognition. * * This analysis is only performed when the document capture module `cropType` * is set to `"unknown"` and the input source is `Photo`. In all other cases the * value is `"not-available"`. * * - `"not-cropped"`: The first attempt (treating the image as pre-cropped) did * not yield a valid result, so the standard detection-and-perspective- * correction pipeline was executed as a fallback and succeeded. Conclusion: * the input image was likely not pre-cropped. * - `"cropped"`: The first attempt (treating the image as pre-cropped) yielded a * valid result without running the document detector. Conclusion: the input * image was likely already cropped and perspective-corrected. * - `"not-available"`: The two-attempt analysis was not performed because * `cropType` was `"cropped"` or `"not-cropped"`, or the input source was * `Video`. * - `"undetermined"`: The analysis does not allow for a conclusion to be drawn * because a valid stage could not be reached, neither considering the image * as cropped nor as not cropped. */ export declare type InputImageCropAnalysis = "not-cropped" | "cropped" | "not-available" | "undetermined"; /** * Specifies whether the input image is already cropped, likely cropped, or not * cropped. * * - `"not-cropped"`: The image is considered raw and goes through document * detection and perspective correction. * - `"unknown"`: The image may already be cropped. The recognizer first tries * cropped processing and falls back to detection if extraction fails. * - `"cropped"`: The input image must contain only the cropped and * perspective-corrected document. */ export declare type InputImageCropType = "not-cropped" | "unknown" | "cropped"; /** * Represents the strategy used to select the best input image from a pool of * stable input images. * * Before selecting the best-quality image, a sequence of stable input images * must be collected. From this pool, the one with the highest quality is * selected. An input image is considered stable when the image analysis results * are consistent across a consecutive stream of input images. * * A larger pool size increases the likelihood of capturing a high-quality image * but may introduce a slight delay, as more stable input images need to be * collected. * * - `"single-image"`: Selects the first acceptable stable input image. * - `"optimize-for-speed"`: Faster processing, but may select a lower-quality * image because a smaller pool of stable input images is considered. * - `"default"`: Trade-off between quality and speed. * - `"optimize-for-quality"`: Slower processing in order to select a high-quality * input image, because a larger pool of stable input images is considered. */ export declare type InputImageSelectionStrategy = "single-image" | "optimize-for-speed" | "balanced" | "optimize-for-quality"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the source type of an image. * * This type is used to indicate whether an image was obtained from a video * stream or a single-source input such as a standalone photo. */ export declare type InputImageSource = "video" | "photo"; /** The license request. */ export declare type LicenseRequest = Readonly<{ /** The license id. */ licenseId: string; /** The licensee. */ licensee: string; /** The application ids. */ applicationIds: Array; /** The package name. */ packageName: string; /** The platform. */ platform: string; /** The sdk name. */ sdkName: string; /** The sdk version. */ sdkVersion: string; }>; /** The license token state. */ export declare type LicenseTokenState = "invalid" | "requires-server-permission" | "valid"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** The license unlock result. */ export declare type LicenseUnlockResult = Readonly<{ /** Whether the license is a trial license. */ isTrial: boolean; /** Whether the license has ping enabled. */ hasPing: boolean; /** The license id. */ licenseId: string; /** The licensee. */ licensee: string; /** The application ids. */ applicationIds: Array; /** The package name. */ packageName: string; /** The sdk name. */ sdkName: string; /** The sdk version. */ sdkVersion: string; /** The unlock result. */ unlockResult: LicenseTokenState; /** The license error. */ licenseError: string; /** Whether to show the demo overlay. */ showDemoOverlay: boolean; /** Whether to show the production overlay. */ showProductionOverlay: boolean; /** Whether to allow baltazar proxy. */ allowBaltazarProxy: boolean; /** Whether to allow ping proxy. */ allowPingProxy: boolean; }>; /** * Creates and initializes a BlinkID core instance. * * @param settings - Configuration for BlinkID initialization including license key and resources location * @param progressCallback - Optional callback for tracking resource download progress (WASM, data files) * @returns Promise that resolves with initialized BlinkID core instance * @throws Error if initialization fails */ export declare function loadBlinkIdCore(settings: BlinkIdInitSettings, progressCallback?: ProgressStatusCallback): Promise; /** * The load Wasm params. */ export declare type LoadWasmParams = { resourceUrl: string; wasmVariant: WasmVariant; featureVariant: "full" | "lightweight"; initialMemory?: number; }; declare type LogLevel = "Info" | "Warning"; export declare interface MemFSModule { FS?: { mkdirTree?(path: string): void; writeFile?(path: string, data: Uint8Array): void; readdir?(path: string): string[]; readFile?(path: string): Uint8Array; stat?(path: string): { size: number; }; }; FS_createPath?: (parent: string, path: string, canRead: boolean, canWrite: boolean) => void; FS_createDataFile?: (parent: string, name: string, data: Uint8Array, canRead: boolean, canWrite: boolean, canOwn?: boolean) => void; FS_unlink?: (path: string) => void; } export declare type MrzCompleteness = { status: ExtractionStatus; attribute: ExtractionAttribute; failureReason?: ExtractionFailureReason; fields?: MrzFieldsCompleteness; verified: boolean; }; /** Types of documents that can contain MRZ */ export declare type MrzDocumentType = "unknown" | "identity-card" | "passport" | "visa" | "green-card" | "mys-pass-imm13p" | "driver-license" | "internal-travel-document" | "border-crossing-card"; export declare type MrzFieldsCompleteness = { rawMRZString: StringCompleteness; documentNumber: StringCompleteness; documentCode: StringCompleteness; issuer: StringCompleteness; opt1: StringCompleteness; opt2: StringCompleteness; gender: StringCompleteness; nationality: StringCompleteness; primaryId: StringCompleteness; secondaryId: StringCompleteness; issuerName: StringCompleteness; nationalityName: StringCompleteness; dateOfBirth: DateResultCompleteness; dateOfExpiry: DateResultCompleteness; }; /** * Settings for the MRZ (Machine Readable Zone) extraction module. * * This module is dedicated to the detection and parsing of machine-readable * zone typically found on passports, visas, and identity cards. * * If Mrz is present on the document, an extraction becomes mandatory if * supported. * * For supported documents, the requirement for its presence is determined by * document rules. For unsupported documents, presence is optional. * * This setting requires document capture module to be enabled. Disabling * document document capture module will result in a settings validation * failure. */ export declare type MrzModuleSettings = { /** * If set to true, Mrz presence becomes mandatory for the scanned document * regardless of the document rules. * * For Single ScanningMode, the Mrz must be present on the scanned side. For * Automatic ScanningMode, the Mrz must be present on one of the scanned * sides. * * In case of a timeout and advancement to the next step in the scanning flow, * if a Mrz is detected on the scanned side but cannot be extracted, the * presence requirement is considered fulfilled. As a result, Mrz extraction * will no longer be a requirement to complete the scan on next side. * * @default false */ presenceMandatory: boolean; }; /** Result of Machine Readable Zone extraction */ export declare type MrzResult = { /** The entire Machine Readable Zone text */ rawMrzString: string; /** The document code from MRZ */ documentCode: string; /** The document issuer from MRZ */ issuer: string; /** The document number from MRZ */ documentNumber: string; /** The first optional data field from MRZ */ opt1: string; /** The second optional data field from MRZ */ opt2: string; /** The gender/sex from MRZ */ gender: string; /** The nationality code from MRZ */ nationality: string; /** The primary identifier from MRZ */ primaryId: string; /** The secondary identifier from MRZ */ secondaryId: string; /** The full name of the issuing authority */ issuerName: string; /** The full nationality name */ nationalityName: string; /** Whether all check digits are valid */ verified: boolean; /** The date of birth from MRZ */ dateOfBirth: DateResult; /** The date of expiry from MRZ */ dateOfExpiry: DateResult; /** The type of the document */ documentType: MrzDocumentType; /** The opt1 field without padding characters */ sanitizedOpt1: string; /** The opt2 field without padding characters */ sanitizedOpt2: string; /** The nationality code without padding characters */ sanitizedNationality: string; /** The issuer code without padding characters */ sanitizedIssuer: string; /** The document code without padding characters */ sanitizedDocumentCode: string; /** The document number without padding characters */ sanitizedDocumentNumber: string; }; /** * @see https://wicg.github.io/ua-client-hints/#dictdef-navigatoruabrandversion */ declare interface NavigatorUABrandVersion { readonly brand: string; readonly version: string; } /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Options for the getCrossOriginWorkerURL function. * * @param skipSameOrigin - If true, the function will return the original URL if it is same-origin. * @param useBlob - If true, the function will return a blob URL. */ declare type Options = { /** If true, the function will return the original URL if it is same-origin. */ skipSameOrigin?: boolean; /** If true, the function will return a blob URL if not same-origin. */ useBlob?: boolean; }; export declare type ParentInfoCompleteness = { firstName?: StringResultCompleteness; lastName?: StringResultCompleteness; }; export declare type ParentsInfoCompleteness = { parentsInfo?: ParentInfoCompleteness[]; }; /** * Partial scanning settings input. Used when passing partial settings to the * Wasm module. All fields are optional; the C++ layer merges with defaults. * * @see `ScanningSettings` for detailed configuration options */ export declare type PartialScanningSettingsInput = Partial; barcodeModule: Partial; mrzModule: Partial; vizModule: Partial; }>>; export declare type Ping = PingBrowserDeviceInfo | PingError | PingCameraHardwareInfo | PingLog | PingCameraInputInfo | PingCameraPermission | PingSdkInitStart | PingScanningConditions | PingUxEvent | PingWrapperProductInfo; /** Generated base structure for a ping event. */ export declare interface PingBase { schemaName: TSchemaName; schemaVersion: TSchemaVersion; data: TData; sessionNumber?: TSessionNumber; } /** * Ping type for ping.browser.device.info */ export declare type PingBrowserDeviceInfo = PingBase<"ping.browser.device.info", "1.0.0", PingBrowserDeviceInfoData>; export declare type PingBrowserDeviceInfoData = { userAgentData?: UserAgentData; userAgent: string; threads: number; memory?: number; gpu?: Gpu; screen: Screen_2; browserStorageSupport: BrowserStorageSupport_2; derivedDeviceInfo: DerivedDeviceInfo_2; }; /** * Ping type for ping.hardware.camera.info */ export declare type PingCameraHardwareInfo = PingBase<"ping.hardware.camera.info", "1.0.3", PingCameraHardwareInfoData>; export declare type PingCameraHardwareInfoData = { availableCameras: AvailableCamerasItem[]; }; /** * Ping type for ping.sdk.camera.input.info */ export declare type PingCameraInputInfo = PingBase<"ping.sdk.camera.input.info", "1.0.2", PingCameraInputInfoData>; export declare type PingCameraInputInfoData = { deviceId: string; cameraFacing: CameraFacing_2; cameraFrameWidth: number; cameraFrameHeight: number; roiWidth: number; roiHeight: number; viewPortAspectRatio: number; }; /** * Ping type for ping.sdk.camera.permission */ export declare type PingCameraPermission = PingBase<"ping.sdk.camera.permission", "1.0.0", PingCameraPermissionData>; export declare type PingCameraPermissionData = { eventType: EventType; cameraPermissionGranted?: boolean; }; /** * Ping type for ping.error */ export declare type PingError = PingBase<"ping.error", "1.0.0", PingErrorData>; export declare type PingErrorData = { errorType: ErrorType; errorMessage: string; stackTrace?: string; }; /** * Ping type for ping.log */ export declare type PingLog = PingBase<"ping.log", "1.0.0", PingLogData>; export declare type PingLogData = { logLevel: LogLevel; logMessage: string; }; /** * Ping type for ping.sdk.scan.conditions */ export declare type PingScanningConditions = PingBase<"ping.sdk.scan.conditions", "1.0.0", PingScanningConditionsData>; export declare type PingScanningConditionsData = { updateType: UpdateType; deviceOrientation?: DeviceOrientation; flashlightOn?: boolean; }; /** * Ping type for ping.sdk.init.start */ export declare type PingSdkInitStart = PingBase<"ping.sdk.init.start", "2.0.0", PingSdkInitStartData>; export declare type PingSdkInitStartData = { product: Product; platform: Platform; platformDetails?: PlatformDetails; packageName: string; userId: string; pingProxyEnabled: boolean; baltazarProxyEnabled: boolean; }; /** * Ping type for ping.sdk.ux.event */ export declare type PingUxEvent = PingBase<"ping.sdk.ux.event", "1.2.0", PingUxEventData>; export declare type PingUxEventData = { eventType: EventType_2; errorMessageType?: ErrorMessageType; alertType?: AlertType; helpCloseType?: HelpCloseType; }; /** * Ping type for ping.sdk.wrapper.product */ export declare type PingWrapperProductInfo = PingBase<"ping.sdk.wrapper.product", "1.0.0", PingWrapperProductInfoData>; export declare type PingWrapperProductInfoData = { wrapperProduct: WrapperProduct; correlationId?: string; }; declare type Platform = "iOS" | "Android" | "Emscripten" | "MacOS" | "Linux" | "Windows"; declare type PlatformDetails = "basic" | "advanced" | "advanced-threads" | "full-basic" | "full-advanced" | "full-advanced-threads" | "lightweight-basic" | "lightweight-advanced" | "lightweight-advanced-threads"; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents a 2D point. */ export declare type Point = { /** X-coordinate of the point. */ x: number; /** Y-coordinate of the point. */ y: number; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the status of the document processing. * * ProcessingStatus defines various statuses that can occur during the * processing of a document, indicating the success or failure of different * stages of the recognition and extraction process. * * - `success` The document was fully scanned and data was extracted as expected. * - `detection-failed` The document was not found on the image. * - `image-preprocessing-failed` Preprocessing of the input image has failed. * - `stability-test-failed` Stability is achieved when the same document is * provided on consecutive frames, resulting in a consistent recognition * between frames prior to data extraction. Valid only for video feed. * - `scanning-wrong-side` The wrong side of the document is scanned. Front side * scan is completed and back side is expected, but not provided by the * end-user. Possible also if front is expected at the start of the scanning * process and back is presented first by the end-user. * - `field-identification-failed` Unexpected fields are present on the document * and removed from the final result. * - `mandatory-field-missing` Fields expected to appear on the scanned document * have not been found. * - `invalid-characters-found` One of the extracted fields contains a character * which does not satisfy the rule defined for that specific field. This * processing status can only occur if characterValidationEnabled setting is * set to true. * - `image-return-failed` Failed to return a requested image. * - `barcode-recognition-failed` Reading or parsing of the barcode has failed. * - `mrz-parsing-failed` Parsing of the MRZ has failed. * - `unsupported-document` Document currently not supported by the recognizer. * - `awaiting-other-side` Front side recognition has completed successfully, and * recognizer is waiting for the other side to be scanned. * - `not-scanned` If front side recognition has not completed successfully, the * back side is not scanned. * - `barcode-detection-failed` The barcode was not found on the image. This * processing status can only occur if document has mandatory barcode. * - `mrz-detection-failed` The MRZ was not found on the image. This processing * status can only occur if document has mandatory MRZ. * - `input-image-not-focused` Input image is not focused. * - `awaiting-more-stable-input-images` More stable input images are required to * proceed to data and image extraction. Available only for `Video` input * source. An input image is stable if it passed the stability test. * - `canceled` Scanning was terminated by cancel delegate. */ export declare type ProcessingStatus = "success" | "detection-failed" | "image-preprocessing-failed" | "stability-test-failed" | "scanning-wrong-side" | "field-identification-failed" | "mandatory-field-missing" | "invalid-characters-found" | "image-return-failed" | "barcode-recognition-failed" | "mrz-parsing-failed" | "unsupported-document" | "awaiting-other-side" | "not-scanned" | "barcode-detection-failed" | "mrz-detection-failed" | "input-image-not-focused" | "awaiting-more-stable-input-images" | "canceled"; /** * The process result with buffer. */ export declare type ProcessResultWithBuffer = BlinkIdProcessResult & { arrayBuffer: ArrayBuffer; }; declare type Product = "BlinkCard" | "BlinkID" | "BlinkInput" | "Capture" | "DocumentVerification" | "Pdf417Mobi" | "PhotoPay" | "Biometrics"; /** * The progress status callback. */ export declare type ProgressStatusCallback = (progress: DownloadProgress) => void; /** Represents a quadrilateral shape with signed integer coordinates. */ export declare type Quadrilateral = { /** Upper left point of the quadrilateral. */ upperLeft: Point; /** Upper right point of the quadrilateral. */ upperRight: Point; /** Lower right point of the quadrilateral. */ lowerRight: Point; /** Lower left point of the quadrilateral. */ lowerLeft: Point; }; /** Represents a rectangle. */ export declare type Rectangle = { /** X coordinate of the top-left corner of the rectangle. */ x: number; /** Y coordinate of the top-left corner of the rectangle. */ y: number; /** Width of the rectangle. */ width: number; /** Height of the rectangle. */ height: number; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * RedactionMode is used to define level of redaction performed on recognizer * result. */ export declare type RedactionMode = /** Redaction will not be performed. */ "none" /** DocumentImage is redacted with black boxes covering sensitive data. */ | "image-only" /** Result fields containing sensitive data are removed from result. */ | "result-fields-only" /** This mode is combination of ImageOnly and ResultFieldsOnly modes. */ | "full-result"; export declare type RedactionSettings = { mode: RedactionMode; /** * Fields to be redacted. * * Using this member to redact MRZ is deprecated. Use `redactMrz` instead. * * @default [ ] */ fields: FieldType[]; /** * Document number redaction settings. * * @default undefined */ documentNumberRedactionSettings?: DocumentNumberRedactionSettings; /** * If true, the whole MRZ will be redacted. * * This is the recommended way to redact MRZ (replacing the use of `fields`). * This setting uses the `mode` member to determine what will be redacted * (e.g., full result, image only, etc.). * * @default false */ redactMrz: boolean; /** * If true, the whole Barcode result will be redacted. * * This will redact the barcode result data and remove the 'barcodeImage' from * the subresults. * * This setting uses the `mode` member to determine what will be redacted * (e.g., full result, barcode image only, etc.). * * @default false */ redactBarcode: boolean; }; /** * Resolves custom result redaction settings for a classified document. * * Return `null` to keep the SDK default redaction behavior. */ export declare type RedactionSettingsResolver = (classInfo: DocumentClassInfo, getDefaultRedactionSettings: (options: GetDefaultRedactionSettingsOptions) => Promise) => RedactionSettingsResolverReturn | null | Promise; declare type RedactionSettingsResolverReturn = Partial; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents regions */ export declare type Region = "alabama" | "alaska" | "alberta" | "arizona" | "arkansas" | "australian-capital-territory" | "british-columbia" | "california" | "colorado" | "connecticut" | "delaware" | "district-of-columbia" | "florida" | "georgia" | "hawaii" | "idaho" | "illinois" | "indiana" | "iowa" | "kansas" | "kentucky" | "louisiana" | "maine" | "manitoba" | "maryland" | "massachusetts" | "michigan" | "minnesota" | "mississippi" | "missouri" | "montana" | "nebraska" | "nevada" | "new-brunswick" | "new-hampshire" | "new-jersey" | "new-mexico" | "new-south-wales" | "new-york" | "northern-territory" | "north-carolina" | "north-dakota" | "nova-scotia" | "ohio" | "oklahoma" | "ontario" | "oregon" | "pennsylvania" | "quebec" | "queensland" | "rhode-island" | "saskatchewan" | "south-australia" | "south-carolina" | "south-dakota" | "tasmania" | "tennessee" | "texas" | "utah" | "vermont" | "victoria" | "virginia" | "washington" | "western-australia" | "west-virginia" | "wisconsin" | "wyoming" | "yukon" | "ciudad-de-mexico" | "jalisco" | "newfoundland-and-labrador" | "nuevo-leon" | "baja-california" | "chihuahua" | "guanajuato" | "guerrero" | "mexico" | "michoacan" | "new-york-city" | "tamaulipas" | "veracruz" | "chiapas" | "coahuila" | "durango" | "guerrero-cocula" | "guerrero-juchitan" | "guerrero-tepecoacuilco" | "guerrero-tlacoapa" | "gujarat" | "hidalgo" | "karnataka" | "kerala" | "khyber-pakhtunkhwa" | "madhya-pradesh" | "maharashtra" | "morelos" | "nayarit" | "oaxaca" | "puebla" | "punjab" | "queretaro" | "san-luis-potosi" | "sinaloa" | "sonora" | "tabasco" | "tamil-nadu" | "yucatan" | "zacatecas" | "aguascalientes" | "baja-california-sur" | "campeche" | "colima" | "quintana-roo-benito-juarez" | "quintana-roo" | "quintana-roo-solidaridad" | "tlaxcala" | "quintana-roo-cozumel" | "sao-paolo" | "rio-de-janeiro" | "rio-grande-do-sul" | "northwest-territories" | "nunavut" | "prince-edward-island" | "distrito-federal" | "maranhao" | "mato-grosso" | "minas-gerais" | "para" | "parana" | "pernambuco" | "santa-catarina" | "andhra-pradesh" | "ceara" | "goias" | "guerrero-acapulco-de-juarez" | "haryana" | "sergipe" | "alagoas" | "bangsamoro" | "telangana" | "acre" | "espirito-santo" | "mato-grosso-do-sul" | "paraiba" | "piaui" | "rio-grande-do-norte" | "tocantins" | "odisha" | "uttarakhand"; /** Represents a remote scanning session. */ export declare type RemoteScanningSession = Remote; /** * Removes the internals of an Embind object. * * @ignore * @param T - The type of the object to remove the internals from. * @returns The object with the internals removed. */ export declare type RemoveEmbindInternals = Omit; export declare type ResourceFileType = (typeof resourceFileTypes)[number]; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ export declare const resourceFileTypes: readonly ["wasm", "data"]; /** * Represents the completeness of the extraction process for a scanned document. * * This structure tracks the status of the scanning process and indicates * whether specific components of the document, such as the specific fields from * the VIZ, MRZ, and barcode, have been successfully extracted. */ export declare type ResultCompleteness = { /** Rich per-module completeness for VIZ side results. */ viz: (VizCompleteness | null)[] | undefined; /** Rich completeness for MRZ extraction. */ mrz: MrzCompleteness | undefined; /** Rich completeness for barcode extraction. */ barcode: BarcodeCompleteness | undefined; /** Rich completeness for face image extraction. */ faceImage: ImageCompleteness | undefined; /** Rich completeness for signature image extraction. */ signatureImage: ImageCompleteness | undefined; /** Rich completeness for barcode image extraction. */ barcodeImage: ImageCompleteness | undefined; /** Rich completeness for document image extraction. */ documentImages: ImageCompleteness[] | undefined; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the mode of document scanning. * * ScanningMode defines whether the scanning process is limited to a single side * of the document or includes multiple sides, automatically identifying how * many sides need to be scanned. */ export declare type ScanningMode = "single" | "automatic"; /** * Represents the configurable settings for scanning a document. * * This structure allows for the granular configuration of different extraction * modules, enabling or disabling specific features based on the scanning use * case. */ export declare type ScanningSettings = { /** * Settings for the document capture module. * * This module is responsible for the initial document detection, image * extraction (such as face and document images), and image quality validation * (blur, glare, and lighting checks). * * For Automatic ScanningMode, when scanning a supported document, the front * side must be captured first, followed by the back side. When scanning an * unsupported document, the capture order is flexible; since the side cannot * be identified, either side can be scanned first. * * This setting must be turned on for Viz and Mrz extraction to work * correctly. * * If enabled, session will start with document detection step at the * initialization. */ documentCaptureModule: DocumentCaptureModuleSettings | null; /** * Settings for the barcode extraction module. * * This module manages the detection and data extraction from various 1D and * 2D barcode formats (such as PDF417, QR codes, and various retail codes). * * If barcode is present on the document, an extraction becomes mandatory if * supported. * * For supported documents, the requirement for its presence is determined by * document rules. For unsupported documents, presence is optional. * * This setting can function independently of document capture module. If * enabled and document capture module is disabled session will be set to * extract barcode immediately at the initialization. */ barcodeModule: BarcodeModuleSettings | null; /** * Settings for the MRZ (Machine Readable Zone) extraction module. * * This module is dedicated to the detection and parsing of machine-readable * zone typically found on passports, visas, and identity cards. * * If Mrz is present on the document, an extraction becomes mandatory if * supported. * * For supported documents, the requirement for its presence is determined by * document rules. For unsupported documents, presence is optional. * * This setting requires document capture module to be enabled. Disabling * document document capture module will result in a settings validation * failure. */ mrzModule: MrzModuleSettings | null; /** * Settings for the VIZ (Visual Inspection Zone) extraction module. * * This module is responsible for extracting data from the document's visual * fields. * * It supports features such as character validation for increased accuracy, * signature image extraction, and data aggregation across multiple video * frames. * * Viz consists of various fields whose presence requirements are determined * by document rules. Successful VIZ extraction is only achieved once all * mandatory fields have been extracted (this doesn't imply that all optional * fields have been extracted) * * If Viz is present on the document, an extraction becomes mandatory if * supported. * * Scanning the back side only is insufficient as it lacks the necessary * context for data validation; in such cases, the Viz will be treated as not * present. * * The Viz extraction must always initiate with the front side of the * document. * * This setting requires document capture module to be enabled. Disabling * document document capture module will result in a settings validation * failure. */ vizModule: VizModuleSettings | null; /** * The maximum allowed mismatches per field during data matching. * * Configures the maximum number of characters per field that can be * inconsistent during data matching. By default, no mismatches are allowed. */ maxAllowedMismatchesPerField: number; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** Represents the side of the document being scanned. */ export declare type ScanningSide = "first" | "second"; /** * Converts a scanning side to an index. * * @param side - The scanning side. * @returns The index. */ export declare function scanningSideToIndex(side: ScanningSide): number; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the different states of a scanning process. * * This type defines the possible statuses that can occur during the scanning * operation, specifically for managing the progress of scanning sides and the * entire document. */ export declare type ScanningStatus = "scanning-side-in-progress" | "scanning-barcode-in-progress" | "side-scanned" | "document-scanned" | "cancelled"; export declare type SchemaName = Ping["schemaName"]; declare type Screen_2 = { screenWidth: number; screenHeight: number; devicePixelRatio: number; physicalScreenWidth: number; physicalScreenHeight: number; maxTouchPoints: number; }; declare type Semver = `${number}.${number}.${number}` | `${number}.${number}.${number}-${string}`; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Represents the sensitivity levels for document quality analysis. * * This type is used to configure detection sensitivity thresholds and enable or * disable detection functionality. The levels range from turning detection off * completely to setting various levels of sensitivity (Low, Mid, High). */ export declare type SensitivityLevel = "off" | "low" | "mid" | "high"; /** The server permission error. */ export declare type ServerPermissionErrorReason = "network-error" | "remote-lock" | "permission-expired" | "payload-corrupted" | "payload-signature-verification-failed" | "incorrect-token-state" | "detected-skewed-clock"; /** The server permission submit error. */ export declare type ServerPermissionSubmitError = Readonly<{ /** The error. */ error: ServerPermissionErrorReason; /** The lease. */ lease: number; /** The network error description. */ networkErrorDescription?: string; }>; export declare type SingleSideScanningResult = { /** The data extracted from the Visual Inspection Zone. */ viz: VizResult | undefined; /** The data extracted from the Machine Readable Zone. */ mrz: MrzResult | undefined; /** The data extracted from the barcode. */ barcode: BarcodeResult | undefined; /** The input image. */ inputImage: ImageData | undefined; /** The input image containing parsable barcode. */ barcodeImage: ImageData | undefined; /** The cropped document image. */ documentImage: ImageData | undefined; /** The cropped face image. */ faceImage: DetailedCroppedImageResult | undefined; /** The cropped signature image. */ signatureImage: DetailedCroppedImageResult | undefined; }; export declare type StringCompleteness = { status: ExtractionStatus; attribute: ExtractionAttribute; failureReason?: ExtractionFailureReason; }; /** Represents multi string results with mandatory entries for all alphabets */ export declare type StringResult = { [key in AlphabetType]: AlphabetStringResult; }; export declare type StringResultCompleteness = { [key in AlphabetType]?: StringCompleteness; }; /** * @see https://wicg.github.io/ua-client-hints/#dictdef-uadatavalues */ export declare interface UADataValues { readonly brands?: NavigatorUABrandVersion[]; readonly mobile?: boolean; readonly platform?: string; readonly architecture?: string; readonly bitness?: string; readonly formFactors?: FormFactor[]; readonly model?: string; readonly platformVersion?: string; /** @deprecated in favour of fullVersionList */ readonly uaFullVersion?: string; readonly fullVersionList?: NavigatorUABrandVersion[]; readonly wow64?: boolean; } declare type UpdateType = "DeviceOrientation" | "FlashlightState"; declare type UserAgentData = { brands?: BrandsItem[]; mobile?: boolean; platform?: string; architecture?: string; bitness?: string; formFactors?: FormFactorsItem[]; model?: string; platformVersion?: string; fullVersionList?: FullVersionListItem[]; wow64?: boolean; }; /** * Represents the information about the vehicle class. * * @template S - The type of the string result. */ export declare type VehicleClassInfo = { /** The type of vehicle the driver license owner has privilege to drive. */ vehicleClass?: S; /** The type of driver licence. */ licenceType?: S; /** The date since licence is effective. */ effectiveDate?: DateResult; /** The date of expiry of licence. */ expiryDate?: DateResult; }; export declare type VehicleClassInfoCompleteness = { vehicleClass?: S; licenceType?: S; effectiveDate?: D; expiryDate?: D; }; export declare type VizCompleteness = { attribute: ExtractionAttribute; fields?: VizFieldsCompleteness; }; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * Describes whether VIZ extraction was available for the processed input image * and which extraction path was selected. * * - `"not-available"`: VIZ extraction has not been evaluated yet. * - `"segmentation"`: VIZ data was extracted using segmentation. * - `"templating"`: VIZ data was extracted using a document template. * - `"unsupported"`: VIZ extraction is not supported for the processed image. */ export declare type VizExtractionType = "not-available" | "segmentation" | "templating" | "unsupported"; export declare type VizFieldsCompleteness = { additionalAddressInformation?: StringResultCompleteness; additionalNameInformation?: StringResultCompleteness; additionalOptionalAddressInformation?: StringResultCompleteness; additionalPersonalIdNumber?: StringResultCompleteness; address?: StringResultCompleteness; bloodType?: StringResultCompleteness; dateOfBirth?: DateResultCompleteness; dateOfExpiry?: DateResultCompleteness; dateOfIssue?: DateResultCompleteness; documentAdditionalNumber?: StringResultCompleteness; documentNumber?: StringResultCompleteness; documentOptionalAdditionalNumber?: StringResultCompleteness; driverLicenseDetailedInfo?: DriverLicenseDetailedInfoCompleteness; employer?: StringResultCompleteness; fathersName?: StringResultCompleteness; firstName?: StringResultCompleteness; fullName?: StringResultCompleteness; issuingAuthority?: StringResultCompleteness; lastName?: StringResultCompleteness; maritalStatus?: StringResultCompleteness; mothersName?: StringResultCompleteness; nationality?: StringResultCompleteness; personalIdNumber?: StringResultCompleteness; placeOfBirth?: StringResultCompleteness; profession?: StringResultCompleteness; race?: StringResultCompleteness; religion?: StringResultCompleteness; residentialStatus?: StringResultCompleteness; sex?: StringResultCompleteness; sponsor?: StringResultCompleteness; visaType?: StringResultCompleteness; cardAccessNumber?: StringResultCompleteness; certificateNumber?: StringResultCompleteness; countryCode?: StringResultCompleteness; dateOfEntry?: DateResultCompleteness; dependentsInfo?: DependentsInfoCompleteness; documentSubtype?: StringResultCompleteness; effectiveDate?: DateResultCompleteness; eligibilityCategory?: StringResultCompleteness; ethnicity?: StringResultCompleteness; husbandName?: StringResultCompleteness; legalStatus?: StringResultCompleteness; localityCode?: StringResultCompleteness; maidenName?: StringResultCompleteness; manufacturingYear?: StringResultCompleteness; municipalityCode?: StringResultCompleteness; municipalityOfRegistration?: StringResultCompleteness; nationalInsuranceNumber?: StringResultCompleteness; parentsInfo?: ParentsInfoCompleteness; pollingStationCode?: StringResultCompleteness; registrationCenterCode?: StringResultCompleteness; remarks?: StringResultCompleteness; residencePermitType?: StringResultCompleteness; sectionCode?: StringResultCompleteness; socialSecurityStatus?: StringResultCompleteness; specificDocumentValidity?: StringResultCompleteness; stateCode?: StringResultCompleteness; stateName?: StringResultCompleteness; vehicleOwner?: StringResultCompleteness; vehicleType?: StringResultCompleteness; workRestriction?: StringResultCompleteness; localizedName?: StringResultCompleteness; }; /** * Settings for the VIZ (Visual Inspection Zone) extraction module. * * This module is responsible for extracting data from the document's visual * fields. * * It supports features such as character validation for increased accuracy, * signature image extraction, and data aggregation across multiple video * frames. * * Viz consists of various fields whose presence requirements are determined by * document rules. Successful VIZ extraction is only achieved once all mandatory * fields have been extracted (this doesn't imply that all optional fields have * been extracted) * * If Viz is present on the document, an extraction becomes mandatory if * supported. * * Scanning the back side only is insufficient as it lacks the necessary context * for data validation; in such cases, the Viz will be treated as not present. * * The Viz extraction must always initiate with the front side of the document. * * This setting requires document capture module to be enabled. Disabling * document document capture module will result in a settings validation * failure. */ export declare type VizModuleSettings = { /** * If set to true, Viz presence becomes mandatory for the scanned document. * * For Single ScanningMode, the Viz must be present on the scanned side. Only * the front side of supported documents can be scanned. For Automatic * ScanningMode, this setting won't affect the default behaviour; front side * must be scanned first followed by the back side. * * In case of a timeout and advancement to the next step in the scanning flow, * if a Viz was not extracted fully from a front side, we'll proceed to * extract Viz from the back side, if present. * * @default false */ presenceMandatory: boolean; /** * Enables the extraction of the document's signature image if supported. * * For supported documents, signature image extraction is determined by * document rules. For unsupported documents, extraction won't be performed. * * @default false */ signatureImageExtractionEnabled: boolean; /** * Indicates whether character validation is enabled. * * Allow only results containing expected characters for a given field. Each * field is validated against a set of rules. All fields have to be * successfully validated in order to successfully scan a document. Setting is * used to improve scanning accuracy. * * If set to `true`, when an invalid character is detected * `ProcessingStatus::InvalidCharactersFound` is returned. * * @default true */ characterValidationEnabled: boolean; /** * Indicates whether the aggregation of data from multiple input images is * enabled. * * Disabling this setting will yield higher-quality captured images, but it * may slow down the scanning process due to the additional effort required to * find the optimal image. * * Enabling this setting will simplify the extraction process, but the * extracted data will be aggregated from multiple images instead of being * sourced from a single image. * * This setting is only applicable to the 'Video' input source. For 'Video', * it defaults to 'true'. Providing this setting for a 'Photo' source will * result in a settings validation failure. * * @default true for 'Video' input source, false for 'Photo' input source */ resultAggregationEnabled: boolean; }; /** VizResult contains data extracted from the Visual Inspection Zone. */ export declare type VizResult = { /** The additional address information of the document owner */ additionalAddressInformation: StringResult | null; /** The additional name information of the document owner */ additionalNameInformation: StringResult | null; /** Additional optional address information of the document owner */ additionalOptionalAddressInformation: StringResult | null; /** The additional personal identification number */ additionalPersonalIdNumber: StringResult | null; /** The address of the document owner */ address: StringResult | null; /** The blood type of the document owner */ bloodType: StringResult | null; /** The date of birth of the document owner */ dateOfBirth: DateResult | null; /** The date of expiry of the document */ dateOfExpiry: DateResult | null; /** The date of issue of the document */ dateOfIssue: DateResult | null; /** The additional number of the document */ documentAdditionalNumber: StringResult | null; /** The document number */ documentNumber: StringResult | null; /** Additional optional number of the document */ documentOptionalAdditionalNumber: StringResult | null; /** The driver license detailed info */ driverLicenseDetailedInfo: DriverLicenceDetailedInfo | null; /** The employer of the document owner */ employer: StringResult | null; /** The father's name of the document owner */ fathersName: StringResult | null; /** The first name of the document owner */ firstName: StringResult | null; /** The full name of the document owner */ fullName: StringResult | null; /** The issuing authority of the document */ issuingAuthority: StringResult | null; /** The last name of the document owner */ lastName: StringResult | null; /** The marital status of the document owner */ maritalStatus: StringResult | null; /** The mother's name of the document owner */ mothersName: StringResult | null; /** The nationality of the document owner */ nationality: StringResult | null; /** The personal identification number */ personalIdNumber: StringResult | null; /** The place of birth of the document owner */ placeOfBirth: StringResult | null; /** The profession of the document owner */ profession: StringResult | null; /** The race of the document owner */ race: StringResult | null; /** The religion of the document owner */ religion: StringResult | null; /** The residential status of the document owner */ residentialStatus: StringResult | null; /** The sex of the document owner */ sex: StringResult | null; /** The sponsor of the document owner */ sponsor: StringResult | null; /** The visa type of the document */ visaType: StringResult | null; /** The card access number of the document owner */ cardAccessNumber: StringResult | null; /** The certificate number of the document owner */ certificateNumber: StringResult | null; /** The country code of the document owner */ countryCode: StringResult | null; /** The date of entry of the document owner */ dateOfEntry: DateResult | null; /** The dependents info */ dependentsInfo: DependentInfo[] | null; /** The transcription of the document subtype */ documentSubtype: StringResult | null; /** The effective date of the document */ effectiveDate: DateResult | null; /** The eligibility category */ eligibilityCategory: StringResult | null; /** The ethnicity of the document owner */ ethnicity: StringResult | null; /** The husband's name of the document owner */ husbandName: StringResult | null; /** The legal status of the document owner */ legalStatus: StringResult | null; /** The locality code of the document owner */ localityCode: StringResult | null; /** The maiden name of the document owner */ maidenName: StringResult | null; /** The manufacturing year */ manufacturingYear: StringResult | null; /** The municipality code of the document owner */ municipalityCode: StringResult | null; /** The municipality of registration of the document owner */ municipalityOfRegistration: StringResult | null; /** The national insurance number of the document owner */ nationalInsuranceNumber: StringResult | null; /** The parents info */ parentsInfo: { firstName: StringResult | null; lastName: StringResult | null; fullName: StringResult | null; }[] | null; /** The polling station code of the document owner */ pollingStationCode: StringResult | null; /** The registration center code of the document owner */ registrationCenterCode: StringResult | null; /** The remarks on the residence permit */ remarks: StringResult | null; /** The residence permit type */ residencePermitType: StringResult | null; /** The section code of the document owner */ sectionCode: StringResult | null; /** The social security status of the document owner */ socialSecurityStatus: StringResult | null; /** The specific document validity */ specificDocumentValidity: StringResult | null; /** The state code of the document owner */ stateCode: StringResult | null; /** The state of the document owner */ stateName: StringResult | null; /** The vehicle owner */ vehicleOwner: StringResult | null; /** The vehicle type */ vehicleType: StringResult | null; /** The work restriction of the document owner */ workRestriction: StringResult | null; /** Determines if date of expiry is permanent */ dateOfExpiryPermanent: boolean; /** The localized name of the document owner */ localizedName: StringResult | null; }; export declare interface WasmBindings { createScanningSession: (sessionSettings: TSessionSettings, userId: string) => TScanningSession; initializeWithLicenseKey: (licenceKey: string, userId: string, allowHelloMessage: boolean) => LicenseUnlockResult; submitServerPermission: (serverPermission: string) => ServerPermissionSubmitError | undefined; getActiveLicenseTokenInfo: () => LicenseUnlockResult; setPingProxyUrl: (url: string) => void; initializeSdk: (userId: string) => void; terminateSdk: () => void; sendPinglets: () => void; arePingRequestsInProgress: () => boolean; queuePinglet: (data: string, schemaName: string, schemaVersion: string, sessionNumber: number) => void; isPingEnabled: () => boolean; } export declare type WasmBuildType = (typeof wasmBuildTypes)[number]; export declare const wasmBuildTypes: readonly ["full", "lightweight"]; export declare interface WasmModule extends WasmBindings, EmscriptenModule { } export declare type WasmVariant = (typeof wasmVariants)[number]; export declare const wasmVariants: readonly ["simd", "simd-threads"]; /** * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ /** * The WebAssembly module, for compatibility. * * @ignore */ export declare interface WebAssemblyModule { } /** * The worker scanning session. */ export declare type WorkerScanningSession = Omit & { process: (image: ImageData) => ProcessResultWithBuffer | BlinkIdSessionErrorWithBuffer; /** * Returns the result of the scanning session. * * Applies resolved redaction settings when a resolver is configured and the * document class info is available. Otherwise, SDK defaults apply. * * @returns The scanning result. */ getResult: () => BlinkIdScanningResult | Promise; /** * Gets the scanning status. * * @returns The scanning status. */ getScanningStatus: () => ScanningStatus; /** * Gets the settings. * * @returns The settings. */ getSettings: () => BlinkIdSessionSettings; /** * Gets the resolved settings used to configure the recognizer. * * @returns The resolved settings. */ getResolvedSessionSettings: () => BlinkIdSessionSettings; /** * Shows the demo overlay. * * @returns Whether the demo overlay is shown. */ showDemoOverlay: () => boolean; /** * Shows the production overlay. * * @returns Whether the production overlay is shown. */ showProductionOverlay: () => boolean; ping: BlinkIdWorker["reportPinglet"]; sendPinglets: BlinkIdWorker["sendPinglets"]; }; declare type WrapperProduct = "CrossplatformFlutter" | "CrossplatformReactNative" | "IdentityVerification"; export { }