import type { Prettify, Rect } from "@scandit/web-datacapture-core"; import type { AnyDataCaptureActionMessage as CoreAnyDataCaptureActionMessage, CaptureModeDeserializerInstance, DataCaptureActionMessageKey as CoreDataCaptureActionMessageKey, DataCaptureCallbackMessage as CoreDataCaptureCallbackMessage, DataCaptureCallbackMessageKeys as CoreDataCaptureCallbackMessageKeys, EmscriptenClassHandle, Module as CoreModule, WorkerResponse as CoreWorkerResponse } from "@scandit/web-datacapture-core/build/js/worker/index"; import type { IdCaptureSettingsJSON } from "../IdCaptureSettings"; import type { CapturedIdCommonFieldsJSON, AamvaBarcodeVerificationResultJSON, CapturedIdJSON, DrivingLicenseDetailsJSON, CapturedIdJSONWithRawImageInfo } from "../SerializedTypes"; import type { ShutterButtonState } from "scandit-web-datacapture-id-private"; /** * MESSAGES (ACTIONS) SENT TO THE WORKER */ export type DataCaptureActionMessageKey = CoreDataCaptureActionMessageKey | "idCaptureApplySettings" | "idCaptureBarcodeVerifyAamvaCapture" | "idCaptureParse" | "idCaptureReset" | "idCaptureSetLastDetectionIssue" | "idCaptureSetLastError" | "idCaptureSetLastLocalizedId" | "idCaptureSetLastResult" | "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData" | "getIdOpenSourceSoftwareLicenseInfo"; export interface IdCaptureParseResponse { result: ParseResult | null; } export interface IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataResponse { result: DrivingLicenseDetailsJSON; } export interface IdCaptureBarcodeVerifyAamvaCaptureResponse { result: AamvaBarcodeVerificationResultJSON & { error: string; serverResponseJSON: string; isSuccess: boolean; }; } export interface GetIdOpenSourceSoftwareLicenseInfoResponse { licenseText: string; } export type WorkerResponse = C extends "idCaptureBarcodeVerifyAamvaCapture" ? IdCaptureBarcodeVerifyAamvaCaptureResponse : C extends "idCaptureParse" ? IdCaptureParseResponse : C extends "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData" ? IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataResponse : C extends "getIdOpenSourceSoftwareLicenseInfo" ? GetIdOpenSourceSoftwareLicenseInfoResponse : CoreWorkerResponse; interface DataCaptureActionMessage { command: DataCaptureActionMessageKey; id: number; } export interface IdCaptureSetLastResultDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureSetLastResult"; result: string; } export interface IdCaptureSetLastErrorDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureSetLastError"; error: string; } export interface IdCaptureSetLastLocalizedIdDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureSetLastLocalizedId"; localizedId: string; } export interface IdCaptureSetLastDetectionIssueDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureSetLastDetectionIssue"; issue: string; } export interface IdCaptureResetDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureReset"; } export interface IdCaptureApplySettingsDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureApplySettings"; settings: IdCaptureSettingsJSON; } export interface IdCaptureParseDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureParse"; code: string; } export interface IdCaptureBarcodeVerifyAamvaCaptureDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureBarcodeVerifyAamvaCapture"; capturedId: CapturedIdJSON; } export interface IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataDataCaptureAction extends DataCaptureActionMessage { command: "idCaptureDrivingLicenseDetailsCreateWithBlinkIdData"; details: { vehicleClass: string; restrictions: string; endorsements: string; }; } export interface GetIdOpenSourceSoftwareLicenseInfoAction extends DataCaptureActionMessage { command: "getIdOpenSourceSoftwareLicenseInfo"; } export type AnyDataCaptureActionMessage = CoreAnyDataCaptureActionMessage | IdCaptureApplySettingsDataCaptureAction | IdCaptureBarcodeVerifyAamvaCaptureDataCaptureAction | IdCaptureParseDataCaptureAction | IdCaptureResetDataCaptureAction | IdCaptureSetLastDetectionIssueDataCaptureAction | IdCaptureSetLastErrorDataCaptureAction | IdCaptureSetLastLocalizedIdDataCaptureAction | IdCaptureSetLastResultDataCaptureAction | IdCaptureDrivingLicenseDetailsCreateWithBlinkIdDataDataCaptureAction | GetIdOpenSourceSoftwareLicenseInfoAction; export type MessagePayloadByCommand = { [key in AnyDataCaptureActionMessage["command"]]: Prettify, "command" | "id">>; }; export type WorkerCall = (command: C, payload: Prettify) => Promise>; /** * MESSAGES EMITTED BY THE WORKER */ type DataCaptureCallbackMessageKeys = CoreDataCaptureCallbackMessageKeys | "idCaptureBackendReset" | "idCaptureDetectionOnlyMode" | "idCaptureDidCaptureId" | "idCaptureDidLocalizeId" | "idCaptureDidRejectId" | "idCaptureDidShutterButtonPositionChanged" | "idCaptureDidShutterButtonStateChanged" | "idCaptureDidTimedOut" | "idCaptureDidUpdateSession" | "idCaptureIdCapturedFeedback" | "idCaptureIdRejectedFeedback" | "IdCaptureProcessFrameWithCentaurus"; interface BaseDataCaptureCallbackMessage { type: DataCaptureCallbackMessageKeys; } interface IdCaptureDidCapture extends BaseDataCaptureCallbackMessage { type: "idCaptureDidCaptureId"; payload: { capturedId: CapturedIdJSONWithRawImageInfo; }; } interface IdCaptureDidReject extends BaseDataCaptureCallbackMessage { type: "idCaptureDidRejectId"; payload: { capturedId: CapturedIdJSONWithRawImageInfo | null; rejectionReason: string; }; } interface IdCaptureDidShutterButtonPositionChanged extends BaseDataCaptureCallbackMessage { type: "idCaptureDidShutterButtonPositionChanged"; payload: { position: Rect; }; } interface IdCaptureDidShutterButtonStateChanged extends BaseDataCaptureCallbackMessage { type: "idCaptureDidShutterButtonStateChanged"; payload: { state: ShutterButtonState; }; } interface IdCaptureIdCapturedFeedback extends BaseDataCaptureCallbackMessage { type: "idCaptureIdCapturedFeedback"; } interface IdCaptureIdRejectedFeedback extends BaseDataCaptureCallbackMessage { type: "idCaptureIdRejectedFeedback"; } interface IdCaptureBackendReset extends BaseDataCaptureCallbackMessage { type: "idCaptureBackendReset"; } interface IdCaptureDetectionOnlyMode extends BaseDataCaptureCallbackMessage { type: "idCaptureDetectionOnlyMode"; payload: { detectionOnlyMode: boolean; }; } export type DataCaptureCallbackMessage = CoreDataCaptureCallbackMessage | IdCaptureBackendReset | IdCaptureDetectionOnlyMode | IdCaptureDidCapture | IdCaptureDidReject | IdCaptureDidShutterButtonPositionChanged | IdCaptureDidShutterButtonStateChanged | IdCaptureIdCapturedFeedback | IdCaptureIdRejectedFeedback; export type CapturedIdJSONWithoutCommonFieldsJSON = Omit; export type ParseResult = { status: "success"; capturedId: CapturedIdJSONWithRawImageInfo; } | { status: "error"; error: string; }; /** * OTHERS */ export type PayloadForCommand = A extends { command: C; } ? A : never; export interface DataCaptureWorker extends Omit { onmessage: ((this: Worker, event_: MessageEvent & { data: unknown; }) => void) | null; postMessage: (message: PayloadForCommand, transfer?: Transferable[]) => void; } export declare enum IdCaptureBackendErrorType { Undefined = "Undefined", InitializationError = "InitializationError", ParsingError = "ParsingError" } export interface IdCaptureBackendError { type: IdCaptureBackendErrorType; message: string; } export interface CapturedIdCommonFieldsGetters extends Pick { getFirstName: () => OptionalValueHolder; getLastName: () => OptionalValueHolder; getSecondaryLastName: () => OptionalValueHolder; getFullName: () => string; getSex: () => OptionalValueHolder; getAge: () => OptionalValueHolder; isExpired: () => OptionalValueHolder; getNationality: () => OptionalValueHolder; getAddress: () => OptionalValueHolder; getIssuingCountry: () => OptionalValueHolder; getIssuingCountryIso: () => OptionalValueHolder; getDocumentNumber: () => OptionalValueHolder; getDocumentAdditionalNumber: () => OptionalValueHolder; getDateOfBirth: () => OptionalValueHolder; getDateOfExpiry: () => OptionalValueHolder; getDateOfIssue: () => OptionalValueHolder; getDocumentType: () => OptionalValueHolder; getDocumentSubtype: () => OptionalValueHolder; toJson: () => string; } interface CapturedIdImages extends EmscriptenClassHandle { getFace: () => OptionalValueHolder; getFrameFront: () => WasmFrameData | null; getFrameBack: () => WasmFrameData | null; getCroppedDocumentFront: () => OptionalValueHolder; getCroppedDocumentBack: () => OptionalValueHolder; } export interface WasmFrameData extends EmscriptenClassHandle { getFrameData: () => Uint8Array; getWidth: () => number; getHeight: () => number; getMirrorAxis: () => { value: number; }; getOrientation: () => number; } export interface WasmCaptureId extends CapturedIdCommonFieldsGetters { toJson: () => string; getImages: () => CapturedIdImages; } interface ResultOk { ok: () => true; value: () => T; } interface ResultFail { ok: () => false; error: () => E; } export type FailableResult = ResultFail | ResultOk; interface HasValueHolder { has_value: () => true; value: () => T; } interface HasNoValueHolder { has_value: () => false; } export type OptionalValueHolder = HasNoValueHolder | HasValueHolder; export interface IdCaptureSessionHolder { getCapturedId: () => OptionalValueHolder; getLocalizedOnlyId: () => OptionalValueHolder; getNewlyRejectedId: () => OptionalValueHolder; toJson: () => string; } export interface CapturedIdHolder extends CapturedIdCommonFieldsGetters { toJson: () => string; } export interface SDCIdCaptureMode extends EmscriptenClassHandle { reset: () => void; applySettings: (settings: string) => void; addListener: (listener: unknown) => void; setFeedbacks: (idCaptured: unknown, idRejected: unknown) => void; parse: (code: string) => FailableResult; } interface BarcodeVerificationResponse { isSuccess: boolean; allChecksPassed: boolean; error: string; serverResponseJson: string; } interface IdCaptureModule { IdCaptureDeserializer: new (helper: unknown) => CaptureModeDeserializerInstance; IdCaptureListener: { extend: (target: "IdCaptureListener", parameters: { onSessionUpdated: () => void; onIdCaptured: (idCapture: unknown, capturedId: WasmCaptureId) => void; onIdRejected: (idCapture: unknown, capturedId: WasmCaptureId, rejectionReason: string) => void; onShutterButtonPositionChanged: (position: string) => void; onShutterButtonStateChanged: (state: string) => void; }) => new () => EmscriptenClassHandle; }; IdCaptureDeserializerListener: { extend: (target: "IdCaptureDeserializerListener", parameters: { onModeDeserializationStarted: (deserializer: unknown, mode: SDCIdCaptureMode, json: unknown) => void; onModeDeserializationFinished: (deserializer: unknown, mode: SDCIdCaptureMode, json: unknown) => void; onSettingsDeserializationStarted: (deserializer: unknown, settings: unknown, json: unknown) => void; onSettingsDeserializationFinished: (deserializer: unknown, settings: unknown, json: unknown) => void; }) => new () => EmscriptenClassHandle; }; IdCaptureBackend: { extend: (target: "IdCaptureBackend", parameters: { getLastError: () => string; getLastResult: () => string; getLocalizedOnlyId: () => string; getLastIssue: () => string; processFrame: (data: Uint8ClampedArray, width: number, height: number, format: unknown) => void; reset: () => void; setDetectionOnlyMode: (detectionOnly: boolean) => void; }) => new () => { delete: () => void; }; }; IdCaptureDeserializerHelper: { extend: (target: "IdCaptureDeserializerHelper", parameters: { createMode: (context: unknown, settings: unknown) => SDCIdCaptureMode; }) => new () => EmscriptenClassHandle; }; IdCapture: new (context: unknown, idCaptureBackend: unknown, settings: unknown, idCaptureImageHighlighter: unknown) => SDCIdCaptureMode; AamvaBarcodeVerifier: { extend: (target: "AamvaBarcodeVerifier", parameters: { verificationEnded: () => void; retriggerVerificationIn: (timeInMilliseconds: number) => void; }) => new () => EmscriptenClassHandle & { initialize: (context: unknown) => void; startVerification: (capturedId: string) => void; getBarcodeVerificationResponse: () => BarcodeVerificationResponse; }; }; DrivingLicenseDetails: { createWithBlinkIdData: (vehicleClass: string, restrictions: string, endorsements: string) => string; }; IdOpenSourceSoftwareLicenseInfo: { getLicenseText(): string; }; } export interface Module extends CoreModule, IdCaptureModule { } export declare function getValueFromFailable(holder: FailableResult, defaultValue: U): T | U; export declare function getErrorFromFailable(holder: FailableResult, defaultValue: U): E | U; export declare function getValueFromOptional(holder: OptionalValueHolder, defaultValue: U): T | U; export type EngineWorkerResponse = WorkerResponse extends Promise | void ? Promise | void : { payload: WorkerResponse; transferables?: Transferable[]; }; export type AugmentedWorker = Worker & { Module: Module; OffscreenCanvas: new (w: number, h: number) => OffscreenCanvas; }; export {};