idmission-web-sdk 1.0.401 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/components/common/debug.d.ts +6 -3
  2. package/dist/components/customer_flows/CustomerIdAndBiometricsEnrollment.d.ts +2 -2
  3. package/dist/components/customer_flows/IdAndFaceValidation.d.ts +2 -2
  4. package/dist/components/customer_flows/IdValidation.d.ts +4 -0
  5. package/dist/components/id_capture/CapturedDocuments.d.ts +5 -3
  6. package/dist/components/id_capture/DocumentDetectionModelProvider.d.ts +29 -0
  7. package/dist/components/id_capture/FocusModelProvider.d.ts +22 -0
  8. package/dist/components/id_capture/IdCapture.d.ts +6 -6
  9. package/dist/components/id_capture/IdCaptureModelsProvider.d.ts +21 -35
  10. package/dist/components/id_capture/IdCaptureStateProvider.d.ts +7 -3
  11. package/dist/components/id_capture/IdCaptureWizard.d.ts +2 -2
  12. package/dist/components/selfie_capture/SelfieCapture.d.ts +1 -1
  13. package/dist/components/selfie_capture/SelfieGuidanceModelsProvider.d.ts +21 -3
  14. package/dist/contexts/SubmissionContext.d.ts +2 -1
  15. package/dist/lib/barcode/Scan.d.ts +2 -1
  16. package/dist/lib/models/CapabilityProbing.d.ts +14 -0
  17. package/dist/lib/models/DocumentDetection.d.ts +64 -25
  18. package/dist/lib/models/FaceDetection.d.ts +33 -4
  19. package/dist/lib/models/Focus.d.ts +33 -9
  20. package/dist/lib/models/FrameLoop.d.ts +7 -0
  21. package/dist/lib/models/VisionRuntime.d.ts +2 -0
  22. package/dist/lib/models/helpers.d.ts +9 -0
  23. package/dist/lib/models/preloadModels.d.ts +9 -2
  24. package/dist/lib/utils/cropping.d.ts +3 -2
  25. package/dist/lib/utils/isMobile.d.ts +1 -0
  26. package/dist/lib/utils/logger.d.ts +2 -0
  27. package/dist/sdk2.cjs.development.js +2085 -8352
  28. package/dist/sdk2.cjs.development.js.map +1 -1
  29. package/dist/sdk2.cjs.production.js +1 -1
  30. package/dist/sdk2.cjs.production.js.map +1 -1
  31. package/dist/sdk2.esm.js +2086 -8352
  32. package/dist/sdk2.esm.js.map +1 -1
  33. package/dist/sdk2.umd.development.js +2089 -8357
  34. package/dist/sdk2.umd.development.js.map +1 -1
  35. package/dist/sdk2.umd.production.js +1 -1
  36. package/dist/sdk2.umd.production.js.map +1 -1
  37. package/dist/stories/Components/HighPerformanceFaceDetection/Minimal.stories.d.ts +12 -12
  38. package/dist/stories/CustomerFlows/IdAndFaceValidation.stories.d.ts +1 -0
  39. package/dist/stories/CustomerFlows/IdValidation.stories.d.ts +18 -9
  40. package/dist/stories/{models/DocumentDetection.stories.d.ts → Experiments/SpeedTest.stories.d.ts} +2 -2
  41. package/dist/stories/Experiments/VideoCapture.stories.d.ts +1 -1
  42. package/dist/stories/models/FocusModel.stories.d.ts +1 -1
  43. package/dist/version.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/dist/components/id_capture/HighPerformanceObjectDetectionModelsProvider.d.ts +0 -36
  46. package/dist/components/selfie_capture/HighPerformanceSelfieGuidanceModelsProvider.d.ts +0 -42
  47. package/dist/contexts/SelfieGuidanceModelsContext.d.ts +0 -15
  48. package/dist/stories/Components/HighPerformanceFaceDetection/Original.stories.d.ts +0 -8
  49. package/dist/stories/Experiments/BarcodeReader.stories.d.ts +0 -7
@@ -1,7 +1,10 @@
1
1
  import React, { ReactElement, ReactNode } from 'react';
2
2
  import { DetectedObject } from '../../lib/models/DocumentDetection';
3
- import { Face, FaceKeypoint } from '../selfie_capture/HighPerformanceSelfieGuidanceModelsProvider';
4
- export declare const DebugStatsPane: import("styled-components").IStyledComponent<"web", {
3
+ import { Face, FaceKeypoint } from '../../lib/models/FaceDetection';
4
+ export declare function DebugStatsPane({ children }: {
5
+ children: ReactNode;
6
+ }): React.JSX.Element;
7
+ export declare const DebugStatsPaneDiv: import("styled-components").IStyledComponent<"web", {
5
8
  ref?: React.LegacyRef<HTMLSpanElement> | undefined;
6
9
  key?: React.Key | null | undefined;
7
10
  defaultChecked?: boolean | undefined;
@@ -313,7 +316,7 @@ export type DetectedObjectDebugBoxProps = {
313
316
  flipX?: boolean;
314
317
  color?: string;
315
318
  };
316
- export declare function IdCaptureDetectedObjectDebugBox({ obj, flipX, color, }: DetectedObjectDebugBoxProps): ReactElement;
319
+ export declare function IdCaptureDetectedObjectDebugBox({ obj, flipX, color, scaling, }: DetectedObjectDebugBoxProps): ReactElement;
317
320
  export type SelfieCaptureFaceDebugBoxProps = {
318
321
  face: Face;
319
322
  scaling: DebugScalingDetails;
@@ -95,10 +95,10 @@ export interface CustomerEnrollmentProps extends PropsWithChildren {
95
95
  idAutoCaptureEnabled?: boolean;
96
96
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for ID cards. Defaults to 0.8. */
97
97
  idCardAutoCaptureScoreThreshold?: number;
98
- /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for Machine Readable Zones. Defaults to 0.5. */
99
- mrzDetectionScoreThreshold?: number;
100
98
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for passports. Defaults to 0.75. */
101
99
  passportAutoCaptureScoreThreshold?: number;
100
+ /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for Machine Readable Zones. Defaults to 0.5. */
101
+ mrzDetectionScoreThreshold?: number;
102
102
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for ID cards. Defaults to 0.3. */
103
103
  idCardFocusScoreThreshold?: number;
104
104
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for passports. Defaults to 0.3. */
@@ -92,10 +92,10 @@ export interface IdAndFaceValidationProps extends PropsWithChildren {
92
92
  idAutoCaptureEnabled?: boolean;
93
93
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for ID cards. Defaults to 0.8. */
94
94
  idCardAutoCaptureScoreThreshold?: number;
95
- /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for Machine Readable Zones. Defaults to 0.5. */
96
- mrzDetectionScoreThreshold?: number;
97
95
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for passports. Defaults to 0.75. */
98
96
  passportAutoCaptureScoreThreshold?: number;
97
+ /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for Machine Readable Zones. Defaults to 0.5. */
98
+ mrzDetectionScoreThreshold?: number;
99
99
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for ID cards. Defaults to 0.3. */
100
100
  idCardFocusScoreThreshold?: number;
101
101
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for passports. Defaults to 0.3. */
@@ -75,12 +75,16 @@ export interface IdValidationProps extends PropsWithChildren {
75
75
  loadingOverlayMode?: IdCaptureLoadingOverlayMode;
76
76
  /** String to indicate which types of documents should be captured. Valid values: `idCard`, `passport`, `idCardOrPassport`, `idCardAndPassport`. Default is `idCardOrPassport`. */
77
77
  idCaptureRequirement?: IdCaptureRequirementOption;
78
+ /** Boolean to indicate whether the success screen should be shown in after the ID card front is captured, rather than the flip animation. Defaults to `false`. */
79
+ separateIdCardCaptureSequence?: boolean;
78
80
  /** Boolean to indicate whether photos should be captured automatically when guidance conditions are met. Default is `true`. */
79
81
  idAutoCaptureEnabled?: boolean;
80
82
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for ID cards. Defaults to 0.8. */
81
83
  idCardAutoCaptureScoreThreshold?: number;
82
84
  /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for passports. Defaults to 0.75. */
83
85
  passportAutoCaptureScoreThreshold?: number;
86
+ /** Number between 0 and 1 at which document detection guidance score condition is considered to be met for Machine Readable Zones. Defaults to 0.5. */
87
+ mrzDetectionScoreThreshold?: number;
84
88
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for ID cards. Defaults to 0.3. */
85
89
  idCardFocusScoreThreshold?: number;
86
90
  /** Number between 0 and 1 at which focus guidance score condition is considered to be met for passports. Defaults to 0.3. */
@@ -1,11 +1,13 @@
1
+ import { DetectedObjectBox } from '../../lib/models/DocumentDetection';
2
+ export declare const CapturedDocumentTypeValues: readonly ["idCardFront", "idCardBack", "passport", "selfie"];
3
+ export type CapturedDocumentType = (typeof CapturedDocumentTypeValues)[number];
1
4
  export type CapturedDocument = {
2
5
  imageData: string;
3
6
  width: number;
4
7
  height: number;
5
- boundingBox?: number[];
8
+ boundingBox?: DetectedObjectBox;
9
+ documentType: CapturedDocumentType;
6
10
  };
7
- export declare const CapturedDocumentTypeValues: readonly ["idCardFront", "idCardBack", "passport", "selfie"];
8
- export type CapturedDocumentType = (typeof CapturedDocumentTypeValues)[number];
9
11
  export type CapturedDocuments = {
10
12
  [k in CapturedDocumentType]?: CapturedDocument;
11
13
  };
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { MutableRefObject, ReactElement, ReactNode } from 'react';
3
+ import { DocumentDetectionPrediction, DocumentDetectionThresholds } from '../../lib/models/DocumentDetection';
4
+ type PredictionHandler = (prediction: DocumentDetectionPrediction) => Promise<void>;
5
+ type DocumentDetectionModelState = {
6
+ startDocumentDetection: () => void;
7
+ stopDocumentDetection: () => void;
8
+ documentDetectionModelReady: boolean;
9
+ documentDetectionModelDownloadProgress: number;
10
+ documentDetectionModelError: Error | null;
11
+ onDocumentDetected: (handler: PredictionHandler) => void;
12
+ detectionTime: number;
13
+ documentDetectionThresholds: DocumentDetectionThresholds;
14
+ setDocumentDetectionThresholds: (value: DocumentDetectionThresholds) => void;
15
+ documentDetectionLastPredictionCanvas: MutableRefObject<HTMLCanvasElement | null>;
16
+ clearDocumentDetectionLastPredictionCanvas: () => void;
17
+ };
18
+ export declare const DocumentDetectionModelContext: React.Context<DocumentDetectionModelState>;
19
+ export type DocumentDetectionModelProviderProps = {
20
+ autoStart?: boolean;
21
+ children: ReactNode;
22
+ throttleMs?: number;
23
+ documentDetectionModelPath?: string;
24
+ documentDetectionModelScoreThreshold?: number;
25
+ documentDetectionModelLoadTimeoutMs?: number;
26
+ onDocumentDetectionModelError?: (error: Error) => void;
27
+ };
28
+ export declare function DocumentDetectionModelProvider({ autoStart, children, throttleMs, documentDetectionModelPath, documentDetectionModelScoreThreshold, documentDetectionModelLoadTimeoutMs, onDocumentDetectionModelError, }: DocumentDetectionModelProviderProps): ReactElement;
29
+ export {};
@@ -0,0 +1,22 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { Frame } from '../../lib/utils/getFrameDimensions';
3
+ import { FocusPrediction, FocusThresholds } from '../../lib/models/Focus';
4
+ import { DetectedObjectBox } from '../../lib/models/DocumentDetection';
5
+ type FocusModelState = {
6
+ focusModelReady: boolean;
7
+ focusModelDownloadProgress: number;
8
+ focusModelError: Error | null;
9
+ focusThresholds: FocusThresholds;
10
+ setFocusThresholds: (value: FocusThresholds) => void;
11
+ makeFocusPrediction: (image: Frame, box?: DetectedObjectBox) => FocusPrediction | null;
12
+ focusPredictionTime: number;
13
+ };
14
+ export declare const FocusModelContext: React.Context<FocusModelState>;
15
+ export type FocusModelProviderProps = {
16
+ children: ReactNode;
17
+ focusModelPath?: string;
18
+ focusModelLoadTimeoutMs?: number;
19
+ onFocusModelError?: (error: Error) => void;
20
+ };
21
+ export declare function FocusModelProvider({ children, focusModelPath, focusModelLoadTimeoutMs, onFocusModelError, }: FocusModelProviderProps): React.JSX.Element;
22
+ export {};
@@ -40,24 +40,24 @@ export type IdCaptureVerbiage = {
40
40
  export type IdCaptureProps = {
41
41
  requiredDocumentType?: CapturedDocumentType;
42
42
  autoCaptureEnabled?: boolean;
43
- autoCaptureScoreThreshold?: number;
44
- autoCaptureGoodFramesRequired?: number;
43
+ idCardDetectionThreshold?: number;
44
+ passportDetectionThreshold?: number;
45
45
  autoCaptureBarcodeRequired?: boolean | 'mobile';
46
46
  mrzDetectionScoreThreshold?: number;
47
- passportPageDetectionThreshold?: number;
48
47
  pdf417DetectionThreshold?: number;
49
48
  barcodeScanningEnabled?: boolean;
50
49
  maxBarcodeScanAttempts?: number;
51
- focusScoreThreshold?: number;
50
+ idCardFocusScoreThreshold?: number;
51
+ passportFocusScoreThreshold?: number;
52
52
  guidanceMessage?: string;
53
53
  guidanceSatisfied?: boolean;
54
54
  onPrediction?: (prediction: IdCapturePrediction) => void;
55
55
  onBarcodeScanned?: (result: PDF417DetectionResult) => void;
56
- onCapture?: (frame: string, width: number, height: number, metadata: CaptureAttemptMetadata) => void;
56
+ onCapture?: (frame: string, width: number, height: number, documentType: CapturedDocumentType, metadata: CaptureAttemptMetadata) => void;
57
57
  assets?: IdCaptureAssets;
58
58
  classNames?: IdCaptureClassNames;
59
59
  colors?: IdCaptureColors;
60
60
  verbiage?: IdCaptureVerbiage;
61
61
  debugMode?: boolean;
62
62
  };
63
- export declare const IdCapture: ({ requiredDocumentType, autoCaptureEnabled, autoCaptureScoreThreshold, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, mrzDetectionScoreThreshold, passportPageDetectionThreshold, pdf417DetectionThreshold, focusScoreThreshold, barcodeScanningEnabled, maxBarcodeScanAttempts, guidanceMessage, guidanceSatisfied, onPrediction, onBarcodeScanned, onCapture, assets, classNames, colors, verbiage: rawVerbiage, debugMode, }: IdCaptureProps) => React.ReactElement;
63
+ export declare const IdCapture: ({ requiredDocumentType, autoCaptureEnabled, autoCaptureBarcodeRequired, idCardDetectionThreshold, passportDetectionThreshold, mrzDetectionScoreThreshold, pdf417DetectionThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, barcodeScanningEnabled, maxBarcodeScanAttempts, guidanceMessage, guidanceSatisfied, onPrediction, onCapture, assets, classNames, colors, verbiage: rawVerbiage, debugMode, }: IdCaptureProps) => React.ReactElement;
@@ -1,7 +1,8 @@
1
- import React, { MutableRefObject, ReactElement, ReactNode } from 'react';
2
- import { DetectedObject, DocumentType } from '../../lib/models/DocumentDetection';
3
- import { FocusPrediction } from '../../lib/models/Focus';
4
- import { Frame } from '../../lib/utils/getFrameDimensions';
1
+ import React, { ReactElement, ReactNode } from 'react';
2
+ import { DetectedObject, DetectedObjectBox, DocumentDetectionThresholds, DocumentType } from '../../lib/models/DocumentDetection';
3
+ import { DocumentDetectionModelProviderProps } from './DocumentDetectionModelProvider';
4
+ import { FocusModelProviderProps } from './FocusModelProvider';
5
+ import { FocusThresholds } from '../../lib/models/Focus';
5
6
  export type IdCapturePrediction = {
6
7
  detectedObjects: DetectedObject[];
7
8
  detectionTime: number;
@@ -14,7 +15,7 @@ export type IdCapturePrediction = {
14
15
  mrzDetectionThresholdMet: boolean;
15
16
  pdf417DetectionScore: number;
16
17
  pdf417DetectionThresholdMet: boolean;
17
- bestDocumentOrPassport: DetectedObject | undefined;
18
+ bestDocument: DetectedObject | undefined;
18
19
  bestMrz: DetectedObject | undefined;
19
20
  bestPdf417: DetectedObject | undefined;
20
21
  documentInBounds: boolean;
@@ -26,55 +27,40 @@ export type IdCapturePrediction = {
26
27
  frameHeight: number;
27
28
  allZero: boolean;
28
29
  };
29
- export type IdCaptureThresholds = {
30
- document?: number;
31
- passport?: number;
32
- mrz?: number;
33
- pdf417?: number;
34
- focus?: {
35
- desktop?: number;
36
- mobile?: number;
37
- };
30
+ export type IdCaptureThresholds = DocumentDetectionThresholds & {
31
+ focus?: FocusThresholds;
38
32
  };
39
- export type BestFrame = {
40
- canvas: HTMLCanvasElement;
41
- boundingBox?: number[];
33
+ export type BestFrameDetails = {
34
+ boundingBox?: DetectedObjectBox;
35
+ documentType: DocumentType;
42
36
  detectionScore: number;
43
37
  focusScore: number;
44
38
  };
39
+ export type BestFrame = BestFrameDetails & {
40
+ canvas: HTMLCanvasElement;
41
+ };
45
42
  export type IdCaptureModelsState = {
46
43
  ready: boolean;
44
+ start: () => void;
45
+ stop: () => void;
47
46
  modelDownloadProgress: number;
48
- working: MutableRefObject<boolean>;
49
- idModelError: Error | null;
47
+ modelError: Error | null;
50
48
  thresholds: IdCaptureThresholds;
51
49
  setThresholds: (value: IdCaptureThresholds) => void;
52
- makePrediction: (frame: Frame) => void;
53
50
  onPredictionMade: (handler: (prediction: IdCapturePrediction) => void) => void;
54
51
  detectionTime: number;
55
52
  focusPredictionTime: number;
56
- getBestFrame: () => Promise<BestFrame | null>;
53
+ bestFrameDetails: BestFrameDetails | null;
54
+ getBestFrame: () => BestFrame | null;
57
55
  resetBestFrame: () => void;
58
- bestFrameDetectionScore: number;
59
- bestFrameFocusScore: number;
60
56
  };
61
57
  export declare const IdCaptureModelsContext: React.Context<IdCaptureModelsState>;
62
58
  export type IdCaptureModelsProviderProps = {
63
59
  children: ReactNode;
64
60
  documentDetectionModelUrl?: string | undefined;
65
61
  focusModelUrl?: string | undefined;
66
- logPredictions?: boolean;
67
62
  onModelError?: (error: Error) => void;
68
63
  modelLoadTimeoutMs?: number;
69
64
  };
70
- export declare const defaultDocumentDetectionModelUrl: string;
71
- export declare const defaultFocusModelUrl: string;
72
- export declare const defaultIdCaptureModelLoadTimeoutMs = 45000;
73
- export declare const IdCaptureModelsProvider: ({ children, documentDetectionModelUrl, focusModelUrl, logPredictions, onModelError, modelLoadTimeoutMs, }: IdCaptureModelsProviderProps) => ReactElement;
74
- type Canvases = {
75
- lastPredictionCanvas: HTMLCanvasElement;
76
- cropCanvas: HTMLCanvasElement;
77
- rotateCanvas: HTMLCanvasElement;
78
- };
79
- export declare function makeFocusPrediction(imageData: Frame, canvases: Canvases, bbox?: number[], logPredictions?: boolean): Promise<[FocusPrediction, number]>;
80
- export {};
65
+ export declare function IdCaptureModelsProviderInner({ children, onModelError, }: IdCaptureModelsProviderProps): ReactElement;
66
+ export declare function IdCaptureModelsProvider({ children, ...props }: IdCaptureModelsProviderProps & DocumentDetectionModelProviderProps & FocusModelProviderProps): React.JSX.Element;
@@ -51,7 +51,6 @@ export type IdCaptureState = {
51
51
  lastFrameCapturedAt: Date | null;
52
52
  frameCaptureRate: number;
53
53
  capturing: boolean;
54
- captured: boolean;
55
54
  captureFailed: boolean;
56
55
  imageUrl: string | null;
57
56
  captureState: CaptureState;
@@ -60,6 +59,8 @@ export type IdCaptureState = {
60
59
  requestedDocumentType: CapturedDocumentType;
61
60
  detectedDocumentType: DocumentType;
62
61
  differentDocumentTypeDetections: number;
62
+ operationStartedAt: Date | null;
63
+ captureStartedAt: Date | null;
63
64
  };
64
65
  export type IdCaptureAction = {
65
66
  type: 'configureWizard';
@@ -70,12 +71,13 @@ export type IdCaptureAction = {
70
71
  } | {
71
72
  type: 'configureCapture';
72
73
  payload: {
73
- requiredDocumentType?: CapturedDocumentType;
74
- goodFramesThreshold: number;
75
74
  autoCaptureBarcodeRequired: boolean | 'mobile';
76
75
  barcodeScanningEnabled: boolean;
77
76
  maxBarcodeScanAttempts: number;
78
77
  };
78
+ } | {
79
+ type: 'setRequiredDocumentType';
80
+ payload: CapturedDocumentType;
79
81
  } | {
80
82
  type: 'redrawRequested';
81
83
  } | {
@@ -101,6 +103,8 @@ export type IdCaptureAction = {
101
103
  width: number;
102
104
  height: number;
103
105
  };
106
+ } | {
107
+ type: 'captureStarted';
104
108
  } | {
105
109
  type: 'capturing';
106
110
  } | {
@@ -53,8 +53,8 @@ export type IdCaptureWizardProps = {
53
53
  modelLoadTimeoutMs?: number;
54
54
  precapturedDocuments?: CapturedDocuments;
55
55
  captureRequirement?: IdCaptureRequirementOption;
56
+ separateIdCardCaptureSequence?: boolean;
56
57
  autoCaptureEnabled?: boolean;
57
- autoCaptureGoodFramesRequired?: number;
58
58
  autoCaptureBarcodeRequired?: 'mobile' | boolean;
59
59
  barcodeScanningEnabled?: boolean;
60
60
  idCardAutoCaptureScoreThreshold?: number;
@@ -75,4 +75,4 @@ export type IdCaptureWizardProps = {
75
75
  verbiage?: IdCaptureWizardVerbiage;
76
76
  debugMode?: boolean;
77
77
  };
78
- export declare const IdCaptureWizard: ({ onSuccess, onExitCapture, onUserCancel, loadingOverlayMode, precapturedDocuments, captureRequirement, autoCaptureEnabled, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, instructions, releaseCameraAccessOnExit, guideType, portraitGuidesOnMobile, rotateLoadingOverlayImageWhenPortrait, silentFallback, assets, classNames, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
78
+ export declare const IdCaptureWizard: ({ onSuccess, onExitCapture, onUserCancel, loadingOverlayMode, precapturedDocuments, captureRequirement, separateIdCardCaptureSequence, autoCaptureEnabled, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, instructions, releaseCameraAccessOnExit, guideType, portraitGuidesOnMobile, rotateLoadingOverlayImageWhenPortrait, silentFallback, assets, classNames, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
@@ -1,8 +1,8 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { FaceCaptureGuideOverlayClassNames } from '../face_liveness/FaceCaptureGuideOverlay';
3
- import { Face } from './HighPerformanceSelfieGuidanceModelsProvider';
4
3
  import { CustomerSuppliedVerbiage } from '../../lib/locales';
5
4
  import { SelfieCaptureFallbackClassNames } from '../fallback_flows/SelfieCapture';
5
+ import { Face } from '../../lib/models/FaceDetection';
6
6
  export type SelfieCaptureClassNames = {
7
7
  container?: string;
8
8
  cameraFeed?: string;
@@ -1,5 +1,23 @@
1
- import { ReactElement } from 'react';
1
+ import * as React from 'react';
2
+ import { MutableRefObject, ReactElement, ReactNode } from 'react';
3
+ import { Face } from '../../lib/models/FaceDetection';
4
+ type PredictionHandler = (prediction: Face[]) => void;
5
+ type SelfieGuidanceModelsState = {
6
+ start: () => void;
7
+ stop: () => void;
8
+ onPredictionMade: (handler: PredictionHandler) => void;
9
+ canvasRef: MutableRefObject<HTMLCanvasElement | null>;
10
+ ready: boolean;
11
+ error: Error | null;
12
+ modelDownloadProgress: number;
13
+ };
14
+ export declare const SelfieGuidanceModelsContext: React.Context<SelfieGuidanceModelsState>;
2
15
  export type SelfieGuidanceModelsProviderProps = {
3
- children: ReactElement;
16
+ autoStart?: boolean;
17
+ children: ReactNode;
18
+ throttleMs?: number;
19
+ onModelError?: (error: Error) => void;
20
+ modelLoadTimeoutMs?: number;
4
21
  };
5
- export declare const SelfieGuidanceModelsProvider: ({ children, }: SelfieGuidanceModelsProviderProps) => ReactElement;
22
+ export declare function SelfieGuidanceModelsProvider({ autoStart, children, throttleMs, onModelError, modelLoadTimeoutMs, }: SelfieGuidanceModelsProviderProps): ReactElement;
23
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { UploadedDocument } from '../components/additional_document_capture/AdditionalDocumentCapture';
2
+ import { DetectedObjectBox } from '../lib/models/DocumentDetection';
2
3
  export declare enum SubmissionAction {
3
4
  NONE = "NONE",
4
5
  ENROLL = "ENROLL",
@@ -81,7 +82,7 @@ export type CaptureAttemptMetadata = {
81
82
  operationTime?: number;
82
83
  bestDetectionScore?: number;
83
84
  bestFocusScore?: number;
84
- boundingBox?: number[];
85
+ boundingBox?: DetectedObjectBox;
85
86
  };
86
87
  export type PersonalData = {
87
88
  uniqueNumber?: string;
@@ -1,3 +1,4 @@
1
1
  import { PDF417DetectionResult } from './Native';
2
+ import { DetectedObjectBox } from '../models/DocumentDetection';
2
3
  export declare function supportsNativeBarcodeScanning(): boolean;
3
- export declare function scanBarcode(blob: Blob, bbox?: number[]): Promise<PDF417DetectionResult | null>;
4
+ export declare function scanBarcode(blob: Blob, box?: DetectedObjectBox): Promise<PDF417DetectionResult | null>;
@@ -0,0 +1,14 @@
1
+ type ProbeState = 'notProbed' | 'probing' | 'probed';
2
+ export type NetworkTier = 'untested' | 'unusable' | 'slow' | 'medium' | 'fast';
3
+ type ModelCapabilities = {
4
+ probeState: ProbeState;
5
+ delegate: 'GPU' | 'CPU' | 'NONE';
6
+ networkTier: NetworkTier;
7
+ networkSpeed: number;
8
+ networkTestTime: number;
9
+ };
10
+ export declare const defaultImageSegmenterModelPath = "https://websdk-cdn-dev.idmission.com/assets/models/selfiesegmenter20240524/selfie_segmenter.tflite";
11
+ export declare let modelCapabilities: ModelCapabilities;
12
+ export declare function probeModelCapabilities(): Promise<void>;
13
+ export declare function resetModelCapabilityProbe(): void;
14
+ export {};
@@ -1,30 +1,69 @@
1
- import * as tf from '@tensorflow/tfjs';
1
+ /// <reference types="react" />
2
+ import { ObjectDetector, ObjectDetectorResult } from '@mediapipe/tasks-vision';
3
+ export declare const defaultDocumentDetectorModelPath = "https://websdk-cdn-dev.idmission.com/assets/models/docdetectmp20240611/model_fp16.tflite";
4
+ export declare const defaultDocumentDetectionScoreThreshold = 0.1;
5
+ export declare const defaultDocumentDetectionModelLoadTimeoutMs = 45000;
6
+ export declare const defaultDocumentDetectionThresholds: DocumentDetectionThresholds;
2
7
  export type DocumentType = 'none' | 'idCard' | 'passport';
3
- export interface DocumentDetectionModel extends tf.GraphModel {
4
- outputPositions: {
5
- boxes: number;
6
- scores: number;
7
- labels: number;
8
- };
9
- }
10
- export declare let documentDetectionModel: DocumentDetectionModel | null;
11
- export declare function loadDocumentDetectionModel(url: string): Promise<DocumentDetectionModel>;
12
- export declare function unloadDocumentDetectionModel(): void;
13
- export type RawEdgeDetectionResult = tf.Tensor<tf.Rank>[];
14
- export declare function makeDocumentDetectionPredictions(model: tf.GraphModel, image: ImageBitmap | ImageData | HTMLImageElement): Promise<[RawEdgeDetectionResult, () => void]>;
15
- export type DocumentDetectionResults = {
16
- boxes: number[][];
17
- scores: number[];
18
- labels: number[];
8
+ export type Label = 'Document' | 'MRZ' | 'PDF417' | 'Primary face' | 'Secondary face' | 'Glare' | 'Punch Hole' | 'Passport page';
9
+ export type DetectedObjectBox = {
10
+ xMin: number;
11
+ xMax: number;
12
+ yMin: number;
13
+ yMax: number;
14
+ width: number;
15
+ height: number;
19
16
  };
20
- export declare const labelMap: {
21
- [id: number]: Label;
22
- };
23
- export type Label = 'Document' | 'MRZ' | 'PDF417' | 'Primary face' | 'Secondary face' | 'Glare' | 'Punch Hole' | 'Passport Page';
24
- export declare function runDocumentDetection(model: tf.GraphModel, image: ImageBitmap | ImageData | HTMLImageElement): Promise<DocumentDetectionResults>;
25
17
  export type DetectedObject = {
26
- score: number;
27
- bbox: number[];
18
+ box: DetectedObjectBox;
28
19
  label: Label;
20
+ score: number;
21
+ };
22
+ export type DocumentDetectionThresholds = {
23
+ idCard?: number;
24
+ passport?: number;
25
+ mrz?: number;
26
+ pdf417?: number;
27
+ };
28
+ export declare function loadDocumentDetector(modelAssetPath?: string, scoreThreshold?: number): Promise<ObjectDetector>;
29
+ export declare function useLoadDocumentDetector({ modelPath, modelLoadTimeoutMs, scoreThreshold, onModelError, }: {
30
+ modelPath?: string;
31
+ modelLoadTimeoutMs?: number;
32
+ scoreThreshold?: number;
33
+ onModelError?: (error: Error) => void;
34
+ }): {
35
+ detector: import("react").MutableRefObject<ObjectDetector | null>;
36
+ ready: boolean;
37
+ modelDownloadProgress: number;
38
+ modelError: Error | null;
39
+ setModelError: import("react").Dispatch<import("react").SetStateAction<Error | null>>;
40
+ };
41
+ export type DocumentDetectionPrediction = {
42
+ detectedObjects: DetectedObject[];
43
+ detectionTime: number;
44
+ detectionScore: number;
45
+ detectionThresholdMet: boolean;
46
+ detectedDocumentType: DocumentType;
47
+ passportDetectionScore: number;
48
+ passportDetectionThresholdMet: boolean;
49
+ mrzDetectionScore: number;
50
+ mrzDetectionThresholdMet: boolean;
51
+ pdf417DetectionScore: number;
52
+ pdf417DetectionThresholdMet: boolean;
53
+ bestDocument: DetectedObject | undefined;
54
+ bestMrz: DetectedObject | undefined;
55
+ bestPdf417: DetectedObject | undefined;
56
+ documentInBounds: boolean;
57
+ documentTooClose: boolean;
58
+ frameWidth: number;
59
+ frameHeight: number;
60
+ allZero: boolean;
61
+ frameId?: number;
62
+ };
63
+ export type ObjectDetectorPrediction = ObjectDetectorResult & {
64
+ time: number;
65
+ frameWidth: number;
66
+ frameHeight: number;
29
67
  };
30
- export declare function bboxToDetectedObjectUnscaled(box: number[], score: number, label: number): DetectedObject;
68
+ export declare function makeDocumentDetectorPrediction(detector: ObjectDetector, frame: HTMLCanvasElement): Promise<ObjectDetectorPrediction | null>;
69
+ export declare function processDocumentDetectorPrediction(prediction: ObjectDetectorPrediction, thresholds: DocumentDetectionThresholds): DocumentDetectionPrediction;
@@ -1,6 +1,35 @@
1
- import * as faceDetection from '@tensorflow-models/face-detection';
1
+ /// <reference types="react" />
2
2
  import '@mediapipe/face_detection';
3
+ import { FaceDetector, FaceDetectorResult } from '@mediapipe/tasks-vision';
3
4
  import { Frame } from '../utils/getFrameDimensions';
4
- export type FaceDetectionModel = faceDetection.FaceDetector;
5
- export declare function loadFaceDetectionModel(): Promise<FaceDetectionModel>;
6
- export declare function makeFaceDetectionPrediction(model: FaceDetectionModel, imageData: Frame): Promise<[faceDetection.Face[], number]>;
5
+ export declare const defaultFaceDetectorModelPath = "https://websdk-cdn-dev.idmission.com/assets/models/blazeface20240207/blaze_face_short_range.tflite";
6
+ export declare const defaultSelfieCaptureModelLoadTimeoutMs = 45000;
7
+ export type FaceKeypoint = {
8
+ x: number;
9
+ y: number;
10
+ name: string;
11
+ };
12
+ export type Face = {
13
+ keypoints: FaceKeypoint[];
14
+ box: {
15
+ xMin: number;
16
+ xMax: number;
17
+ yMin: number;
18
+ yMax: number;
19
+ width: number;
20
+ height: number;
21
+ };
22
+ };
23
+ export declare function loadFaceDetector(): Promise<FaceDetector>;
24
+ export declare function useLoadFaceDetector({ onModelError, modelLoadTimeoutMs, }: {
25
+ onModelError?: (error: Error) => void;
26
+ modelLoadTimeoutMs?: number;
27
+ }): {
28
+ detector: import("react").MutableRefObject<FaceDetector | null>;
29
+ ready: boolean;
30
+ modelDownloadProgress: number;
31
+ modelError: Error | null;
32
+ };
33
+ export declare function makeFaceDetectorPrediction(model: FaceDetector, imageData: Frame): FaceDetectorResult & {
34
+ faces: Face[];
35
+ };
@@ -1,9 +1,33 @@
1
- import * as tf from '@tensorflow/tfjs';
2
- export declare let focusModel: tf.LayersModel | null;
3
- export declare function loadFocusModel(url: string): Promise<tf.LayersModel>;
4
- export declare function unloadFocusModel(): void;
5
- type BlurScore = number;
6
- type FocusScore = number;
7
- export type FocusPrediction = [BlurScore, FocusScore];
8
- export declare function makeFocusPrediction(model: tf.LayersModel, imageData: ImageBitmap | ImageData): Promise<[FocusPrediction, () => void]>;
9
- export {};
1
+ /// <reference types="react" />
2
+ import { ImageClassifier } from '@mediapipe/tasks-vision';
3
+ import { Frame } from '../utils/getFrameDimensions';
4
+ import { DetectedObjectBox } from './DocumentDetection';
5
+ export declare const defaultFocusModelPath = "https://websdk-cdn-dev.idmission.com/assets/models/focusmp20240523/model_float16.tflite";
6
+ export declare const defaultFocusModelLoadTimeoutMs = 45000;
7
+ export type FocusPrediction = {
8
+ score: number;
9
+ predictionTime: number;
10
+ };
11
+ export type FocusThresholds = {
12
+ idCard?: {
13
+ desktop?: number;
14
+ mobile?: number;
15
+ };
16
+ passport?: {
17
+ desktop?: number;
18
+ mobile?: number;
19
+ };
20
+ };
21
+ export declare const defaultFocusThresholds: FocusThresholds;
22
+ export declare function loadFocusModel(modelAssetPath: string): Promise<ImageClassifier>;
23
+ export declare function useLoadFocusModel({ modelPath, modelLoadTimeoutMs, onModelError, }: {
24
+ modelPath?: string;
25
+ modelLoadTimeoutMs?: number;
26
+ onModelError?: (error: Error) => void;
27
+ }): {
28
+ model: import("react").MutableRefObject<ImageClassifier | null>;
29
+ ready: boolean;
30
+ modelDownloadProgress: number;
31
+ modelError: Error | null;
32
+ };
33
+ export declare function makeFocusModelPrediction(model: ImageClassifier, imageData: Frame, cropCanvas: HTMLCanvasElement, rotateCanvas: HTMLCanvasElement, box?: DetectedObjectBox): FocusPrediction;
@@ -0,0 +1,7 @@
1
+ export declare function useFrameLoop(fn: (frameId: number) => Promise<void>, { throttleMs, autoStart }: {
2
+ throttleMs?: number | undefined;
3
+ autoStart?: boolean | undefined;
4
+ }): {
5
+ start: () => void;
6
+ stop: () => void;
7
+ };
@@ -0,0 +1,2 @@
1
+ export declare const visionTasksBasePath = "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.7/wasm";
2
+ export declare function preloadVisionRuntime(): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { BoundingBox } from '@mediapipe/tasks-vision';
2
+ export declare function convertBoundingBox(box?: BoundingBox): {
3
+ xMin: number;
4
+ xMax: number;
5
+ yMin: number;
6
+ yMax: number;
7
+ width: number;
8
+ height: number;
9
+ };
@@ -7,8 +7,15 @@ export type PreloadProgress = {
7
7
  loaded: number;
8
8
  total: number;
9
9
  };
10
+ export declare const progressByUseCase: {
11
+ visionRuntime: PreloadProgress;
12
+ documentDetection: PreloadProgress;
13
+ focus: PreloadProgress;
14
+ faceDetection: PreloadProgress;
15
+ };
10
16
  export declare function preloadDependency(url: string): Promise<unknown>;
11
- export declare function preloadIdCaptureDependencies(): Promise<void>;
17
+ export declare function preloadDocumentDetectorDependencies(): Promise<void>;
18
+ export declare function preloadFocusModelDependencies(): Promise<void>;
12
19
  export declare function preloadFaceDetectorDependencies(): Promise<void>;
13
- export declare function getTfjsModelDependencies(url: string): Promise<string[]>;
14
20
  export declare function progressToPercentage(progress: PreloadProgress): number;
21
+ export declare function sumUpProgressForDependencies(dependencies: string[]): PreloadProgress;
@@ -1,4 +1,5 @@
1
- import { Face } from '@tensorflow-models/face-detection';
2
1
  import { Frame } from './getFrameDimensions';
2
+ import { DetectedObjectBox } from '../models/DocumentDetection';
3
+ import { Face } from '../models/FaceDetection';
3
4
  export declare function cropToShoulders(rawCanvas: HTMLCanvasElement | null, cropCanvas: HTMLCanvasElement | null, frame: ImageData, face: Face): string;
4
- export declare function cropToBoundingBox(frame: Frame, bbox: number[], canvas?: HTMLCanvasElement): HTMLCanvasElement;
5
+ export declare function cropToDetectedObjectBox(frame: Frame, box: DetectedObjectBox, canvas?: HTMLCanvasElement): HTMLCanvasElement;
@@ -0,0 +1 @@
1
+ export declare function isMobile(nav?: Navigator): any;