@microblink/blinkid-ux-manager 7.6.3 → 7.7.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 (176) hide show
  1. package/README.md +48 -3
  2. package/dist/blinkid-ux-manager.js +2704 -2209
  3. package/package.json +5 -5
  4. package/types/core/BlinkIdProcessingError.d.ts +2 -2
  5. package/types/core/BlinkIdProcessingError.d.ts.map +1 -1
  6. package/types/core/BlinkIdUxManager.d.ts +72 -36
  7. package/types/core/BlinkIdUxManager.d.ts.map +1 -1
  8. package/types/core/BlinkIdUxManager.integration.test.d.ts +5 -0
  9. package/types/core/BlinkIdUxManager.integration.test.d.ts.map +1 -0
  10. package/types/core/BlinkIdUxManager.test.d.ts +1 -1
  11. package/types/core/DocumentClassFilter.d.ts +1 -1
  12. package/types/core/__testdata/blankProcessResult.d.ts +3 -3
  13. package/types/core/__testdata/blankProcessResult.d.ts.map +1 -1
  14. package/types/core/__testdata/blinkidTestFixtures.d.ts +20 -0
  15. package/types/core/__testdata/blinkidTestFixtures.d.ts.map +1 -0
  16. package/types/core/blinkid-ui-state.d.ts +96 -9
  17. package/types/core/blinkid-ui-state.d.ts.map +1 -1
  18. package/types/core/blinkid-ui-state.test.d.ts +1 -1
  19. package/types/core/createBlinkIdUxManager.d.ts +23 -0
  20. package/types/core/createBlinkIdUxManager.d.ts.map +1 -0
  21. package/types/core/getChainedUiStateKey.d.ts +18 -0
  22. package/types/core/getChainedUiStateKey.d.ts.map +1 -0
  23. package/types/core/getChainedUiStateKey.test.d.ts +5 -0
  24. package/types/core/getChainedUiStateKey.test.d.ts.map +1 -0
  25. package/types/core/test-helpers.integration.d.ts +65 -0
  26. package/types/core/test-helpers.integration.d.ts.map +1 -0
  27. package/types/core/ui-state-utils.d.ts +51 -0
  28. package/types/core/ui-state-utils.d.ts.map +1 -0
  29. package/types/core/uxAnalyticsMappers.d.ts +17 -0
  30. package/types/core/uxAnalyticsMappers.d.ts.map +1 -0
  31. package/types/index.d.ts +7 -6
  32. package/types/index.d.ts.map +1 -1
  33. package/types/index.rollup.d.ts +292 -64
  34. package/types/ui/BlinkIdFeedbackUi.d.ts +1 -1
  35. package/types/ui/BlinkIdFeedbackUi.d.ts.map +1 -1
  36. package/types/ui/BlinkIdUiStoreContext.d.ts +10 -5
  37. package/types/ui/BlinkIdUiStoreContext.d.ts.map +1 -1
  38. package/types/ui/LocalizationContext.d.ts +1 -1
  39. package/types/ui/UiFeedbackOverlay.d.ts +2 -1
  40. package/types/ui/UiFeedbackOverlay.d.ts.map +1 -1
  41. package/types/ui/createBlinkIdFeedbackUi.d.ts +16 -3
  42. package/types/ui/createBlinkIdFeedbackUi.d.ts.map +1 -1
  43. package/types/ui/dialogs/ErrorModal.d.ts +1 -1
  44. package/types/ui/dialogs/ErrorModal.d.ts.map +1 -1
  45. package/types/ui/dialogs/HelpModal.d.ts +4 -2
  46. package/types/ui/dialogs/HelpModal.d.ts.map +1 -1
  47. package/types/ui/dialogs/OnboardingGuideModal.d.ts +4 -2
  48. package/types/ui/dialogs/OnboardingGuideModal.d.ts.map +1 -1
  49. package/types/ui/feedbackMessages.d.ts +2 -2
  50. package/types/ui/feedbackMessages.d.ts.map +1 -1
  51. package/types/ui/locales/ak.d.ts +18 -2
  52. package/types/ui/locales/ak.d.ts.map +1 -1
  53. package/types/ui/locales/am.d.ts +18 -2
  54. package/types/ui/locales/am.d.ts.map +1 -1
  55. package/types/ui/locales/ar.d.ts +21 -5
  56. package/types/ui/locales/ar.d.ts.map +1 -1
  57. package/types/ui/locales/bn.d.ts +18 -2
  58. package/types/ui/locales/bn.d.ts.map +1 -1
  59. package/types/ui/locales/cs.d.ts +19 -3
  60. package/types/ui/locales/cs.d.ts.map +1 -1
  61. package/types/ui/locales/da.d.ts +18 -2
  62. package/types/ui/locales/da.d.ts.map +1 -1
  63. package/types/ui/locales/de.d.ts +19 -3
  64. package/types/ui/locales/de.d.ts.map +1 -1
  65. package/types/ui/locales/el.d.ts +19 -3
  66. package/types/ui/locales/el.d.ts.map +1 -1
  67. package/types/ui/locales/en.d.ts +16 -3
  68. package/types/ui/locales/en.d.ts.map +1 -1
  69. package/types/ui/locales/en_GB.d.ts +18 -2
  70. package/types/ui/locales/en_GB.d.ts.map +1 -1
  71. package/types/ui/locales/es.d.ts +20 -4
  72. package/types/ui/locales/es.d.ts.map +1 -1
  73. package/types/ui/locales/es_MX.d.ts +18 -2
  74. package/types/ui/locales/es_MX.d.ts.map +1 -1
  75. package/types/ui/locales/fa-latn.d.ts +18 -2
  76. package/types/ui/locales/fa-latn.d.ts.map +1 -1
  77. package/types/ui/locales/fi.d.ts +18 -2
  78. package/types/ui/locales/fi.d.ts.map +1 -1
  79. package/types/ui/locales/fil.d.ts +18 -2
  80. package/types/ui/locales/fil.d.ts.map +1 -1
  81. package/types/ui/locales/fr.d.ts +19 -3
  82. package/types/ui/locales/fr.d.ts.map +1 -1
  83. package/types/ui/locales/fr_CA.d.ts +18 -2
  84. package/types/ui/locales/fr_CA.d.ts.map +1 -1
  85. package/types/ui/locales/ha.d.ts +18 -2
  86. package/types/ui/locales/ha.d.ts.map +1 -1
  87. package/types/ui/locales/he.d.ts +18 -2
  88. package/types/ui/locales/he.d.ts.map +1 -1
  89. package/types/ui/locales/hi.d.ts +18 -2
  90. package/types/ui/locales/hi.d.ts.map +1 -1
  91. package/types/ui/locales/hr.d.ts +25 -9
  92. package/types/ui/locales/hr.d.ts.map +1 -1
  93. package/types/ui/locales/hu.d.ts +19 -3
  94. package/types/ui/locales/hu.d.ts.map +1 -1
  95. package/types/ui/locales/id.d.ts +19 -3
  96. package/types/ui/locales/id.d.ts.map +1 -1
  97. package/types/ui/locales/index.d.ts +3 -3
  98. package/types/ui/locales/index.d.ts.map +1 -1
  99. package/types/ui/locales/is.d.ts +18 -2
  100. package/types/ui/locales/is.d.ts.map +1 -1
  101. package/types/ui/locales/it.d.ts +21 -5
  102. package/types/ui/locales/it.d.ts.map +1 -1
  103. package/types/ui/locales/ja.d.ts +18 -2
  104. package/types/ui/locales/ja.d.ts.map +1 -1
  105. package/types/ui/locales/ka_GE.d.ts +18 -2
  106. package/types/ui/locales/ka_GE.d.ts.map +1 -1
  107. package/types/ui/locales/kk.d.ts +18 -2
  108. package/types/ui/locales/kk.d.ts.map +1 -1
  109. package/types/ui/locales/km_KH.d.ts +18 -2
  110. package/types/ui/locales/km_KH.d.ts.map +1 -1
  111. package/types/ui/locales/ko.d.ts +18 -2
  112. package/types/ui/locales/ko.d.ts.map +1 -1
  113. package/types/ui/locales/lv.d.ts +18 -2
  114. package/types/ui/locales/lv.d.ts.map +1 -1
  115. package/types/ui/locales/ms.d.ts +22 -6
  116. package/types/ui/locales/ms.d.ts.map +1 -1
  117. package/types/ui/locales/ne.d.ts +18 -2
  118. package/types/ui/locales/ne.d.ts.map +1 -1
  119. package/types/ui/locales/nl.d.ts +19 -3
  120. package/types/ui/locales/nl.d.ts.map +1 -1
  121. package/types/ui/locales/no.d.ts +18 -2
  122. package/types/ui/locales/no.d.ts.map +1 -1
  123. package/types/ui/locales/pl.d.ts +18 -2
  124. package/types/ui/locales/pl.d.ts.map +1 -1
  125. package/types/ui/locales/ps_AF.d.ts +18 -2
  126. package/types/ui/locales/ps_AF.d.ts.map +1 -1
  127. package/types/ui/locales/pt.d.ts +21 -5
  128. package/types/ui/locales/pt.d.ts.map +1 -1
  129. package/types/ui/locales/pt_BR.d.ts +18 -2
  130. package/types/ui/locales/pt_BR.d.ts.map +1 -1
  131. package/types/ui/locales/ro.d.ts +19 -3
  132. package/types/ui/locales/ro.d.ts.map +1 -1
  133. package/types/ui/locales/ru.d.ts +18 -2
  134. package/types/ui/locales/ru.d.ts.map +1 -1
  135. package/types/ui/locales/si.d.ts +18 -2
  136. package/types/ui/locales/si.d.ts.map +1 -1
  137. package/types/ui/locales/sk.d.ts +19 -3
  138. package/types/ui/locales/sk.d.ts.map +1 -1
  139. package/types/ui/locales/sl.d.ts +20 -4
  140. package/types/ui/locales/sl.d.ts.map +1 -1
  141. package/types/ui/locales/sr.d.ts +19 -3
  142. package/types/ui/locales/sr.d.ts.map +1 -1
  143. package/types/ui/locales/sv.d.ts +19 -3
  144. package/types/ui/locales/sv.d.ts.map +1 -1
  145. package/types/ui/locales/sw.d.ts +18 -2
  146. package/types/ui/locales/sw.d.ts.map +1 -1
  147. package/types/ui/locales/th.d.ts +18 -2
  148. package/types/ui/locales/th.d.ts.map +1 -1
  149. package/types/ui/locales/tr.d.ts +19 -3
  150. package/types/ui/locales/tr.d.ts.map +1 -1
  151. package/types/ui/locales/uk.d.ts +18 -2
  152. package/types/ui/locales/uk.d.ts.map +1 -1
  153. package/types/ui/locales/ur.d.ts +19 -3
  154. package/types/ui/locales/ur.d.ts.map +1 -1
  155. package/types/ui/locales/uz.d.ts +18 -2
  156. package/types/ui/locales/uz.d.ts.map +1 -1
  157. package/types/ui/locales/vi.d.ts +19 -3
  158. package/types/ui/locales/vi.d.ts.map +1 -1
  159. package/types/ui/locales/yo.d.ts +18 -2
  160. package/types/ui/locales/yo.d.ts.map +1 -1
  161. package/types/ui/locales/zh_CN.d.ts +19 -3
  162. package/types/ui/locales/zh_CN.d.ts.map +1 -1
  163. package/types/ui/locales/zh_TW.d.ts +18 -2
  164. package/types/ui/locales/zh_TW.d.ts.map +1 -1
  165. package/types/core/HapticFeedback.d.ts +0 -57
  166. package/types/core/HapticFeedback.d.ts.map +0 -1
  167. package/types/core/HapticFeedback.test.d.ts +0 -5
  168. package/types/core/HapticFeedback.test.d.ts.map +0 -1
  169. package/types/core/ping-camera-utils.d.ts +0 -16
  170. package/types/core/ping-camera-utils.d.ts.map +0 -1
  171. package/types/core/utils.d.ts +0 -25
  172. package/types/core/utils.d.ts.map +0 -1
  173. package/types/shared/ping-implementations.d.ts +0 -60
  174. package/types/shared/ping-implementations.d.ts.map +0 -1
  175. package/types/shared/uiEventFeedbackMapper.d.ts +0 -7
  176. package/types/shared/uiEventFeedbackMapper.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microblink/blinkid-ux-manager",
3
- "version": "7.6.3",
3
+ "version": "7.7.0",
4
4
  "author": "Microblink",
5
5
  "type": "module",
6
6
  "main": "./dist/blinkid-ux-manager.js",
@@ -11,17 +11,17 @@
11
11
  "types"
12
12
  ],
13
13
  "dependencies": {
14
- "@microblink/blinkid-core": "^7.6.3",
15
- "@microblink/camera-manager": "^7.2.7",
14
+ "@microblink/blinkid-core": "^7.7.0",
15
+ "@microblink/camera-manager": "^7.3.0",
16
16
  "type-fest": "^4.35.0"
17
17
  },
18
18
  "access": "public",
19
19
  "registry": "https://registry.npmjs.org/",
20
20
  "types": "./types/index.rollup.d.ts",
21
- "homepage": "https://github.com/BlinkID/blinkid-web",
21
+ "homepage": "https://github.com/microblink/web-sdks",
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "git+https://github.com/BlinkID/blinkid-web.git"
24
+ "url": "git+https://github.com/microblink/web-sdks.git"
25
25
  },
26
26
  "exports": {
27
27
  ".": {
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
4
  /**
5
5
  * BlinkID processing error. These errors are usually unrecoverable and require
6
6
  * the user to retry the scanning process.
7
7
  */
8
- export type BlinkIdProcessingError = "timeout" | "unsupported_document" | "unknown";
8
+ export type BlinkIdProcessingError = "timeout" | "unsupported_document" | "result_retrieval_failed" | "unknown";
9
9
  /**
10
10
  * BlinkID Init errors are not something that should be handled by the end user
11
11
  * therefore we don't need to display them in the UI. Camera permission errors
@@ -1 +1 @@
1
- {"version":3,"file":"BlinkIdProcessingError.d.ts","sourceRoot":"","sources":["../../src/core/BlinkIdProcessingError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAE9B,SAAS,GACT,sBAAsB,GAGtB,SAAS,CAAC;AAEd;;;;GAIG"}
1
+ {"version":3,"file":"BlinkIdProcessingError.d.ts","sourceRoot":"","sources":["../../src/core/BlinkIdProcessingError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAE9B,SAAS,GACT,sBAAsB,GAGtB,yBAAyB,GAGzB,SAAS,CAAC;AAEd;;;;GAIG"}
@@ -1,13 +1,15 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
- import { BlinkIdScanningResult, BlinkIdSessionSettings, DocumentClassInfo, ProcessResultWithBuffer, RemoteScanningSession } from "@microblink/blinkid-core";
4
+ import { AnalyticService } from "@microblink/analytics/AnalyticService";
5
+ import { DeviceInfo, type BlinkIdScanningResult, type BlinkIdSessionSettings, type DocumentClassInfo, type ProcessResultWithBuffer, type RemoteScanningSession } from "@microblink/blinkid-core";
5
6
  import type { CameraManager } from "@microblink/camera-manager";
6
7
  import { FeedbackStabilizer } from "@microblink/feedback-stabilizer";
8
+ import { HapticFeedbackManager } from "@microblink/ux-common/hapticFeedback";
9
+ import { BlinkIdUiState, BlinkIdUiStateKey, BlinkIdUiStateMap } from "./blinkid-ui-state";
7
10
  import { BlinkIdProcessingError } from "./BlinkIdProcessingError";
11
+ import { BlinkIdUxManagerOptions } from "./createBlinkIdUxManager";
8
12
  import { DocumentClassFilter } from "./DocumentClassFilter";
9
- import { HapticFeedbackManager } from "./HapticFeedback";
10
- import { BlinkIdUiState, BlinkIdUiStateKey, blinkIdUiStateMap } from "./blinkid-ui-state";
11
13
  /**
12
14
  * The BlinkIdUxManager class. This is the main class that manages the UX of
13
15
  * the BlinkID SDK. It is responsible for handling the UI state, the timeout,
@@ -16,48 +18,60 @@ import { BlinkIdUiState, BlinkIdUiStateKey, blinkIdUiStateMap } from "./blinkid-
16
18
  export declare class BlinkIdUxManager {
17
19
  #private;
18
20
  /** The camera manager. */
19
- cameraManager: CameraManager;
21
+ readonly cameraManager: CameraManager;
20
22
  /** The scanning session. */
21
- scanningSession: RemoteScanningSession;
22
- /** Whether the demo overlay should be shown. */
23
- showDemoOverlay: boolean;
24
- /** Whether the production overlay should be shown. */
25
- showProductionOverlay: boolean;
26
- /** The current UI state. */
27
- uiState: BlinkIdUiState;
28
- /** The raw UI state key. */
29
- rawUiStateKey: BlinkIdUiStateKey;
30
- /** The feedback stabilizer. */
31
- feedbackStabilizer: FeedbackStabilizer<typeof blinkIdUiStateMap>;
32
- /** The session settings. */
33
- sessionSettings: BlinkIdSessionSettings;
23
+ readonly scanningSession: RemoteScanningSession;
24
+ /**
25
+ * The current UI state. Updated internally by the RAF update loop.
26
+ * Read externally once at UI mount to seed the initial Solid signal value;
27
+ * subsequent updates are delivered via {@link addOnUiStateChangedCallback}.
28
+ */
29
+ get uiState(): BlinkIdUiState;
30
+ /**
31
+ * The feedback stabilizer. Public to allow UI components to read scores,
32
+ * event queues, and call restartCurrentStateTimer() for help-tooltip resets.
33
+ */
34
+ readonly feedbackStabilizer: FeedbackStabilizer<BlinkIdUiStateMap>;
35
+ /** The session settings. Populated asynchronously from the scanning session. */
36
+ readonly sessionSettings: BlinkIdSessionSettings;
37
+ /** Whether the demo overlay should be shown. Populated asynchronously from the scanning session. */
38
+ readonly showDemoOverlay: boolean;
39
+ /** Whether the production overlay should be shown. Populated asynchronously from the scanning session. */
40
+ readonly showProductionOverlay: boolean;
41
+ /** The device info. */
42
+ readonly deviceInfo: DeviceInfo;
34
43
  /**
35
44
  * The constructor for the BlinkIdUxManager class.
36
45
  *
37
46
  * @param cameraManager - The camera manager.
38
47
  * @param scanningSession - The scanning session.
48
+ * @param options - Optional manager configuration.
39
49
  */
40
- constructor(cameraManager: CameraManager, scanningSession: RemoteScanningSession);
41
- /**
42
- * Indicates whether the UI should display the demo overlay. Controlled by the
43
- * license property.
44
- */
45
- getShowDemoOverlay(): boolean;
50
+ constructor(cameraManager: CameraManager, scanningSession: RemoteScanningSession, options: BlinkIdUxManagerOptions | undefined, sessionSettings: BlinkIdSessionSettings, showDemoOverlay: boolean, showProductionOverlay: boolean, deviceInfo: DeviceInfo);
51
+ /** The currently applied UI state key. */
52
+ get uiStateKey(): BlinkIdUiStateKey;
53
+ /** Latest mapped candidate key before stabilization. */
54
+ get mappedUiStateKey(): BlinkIdUiStateKey;
46
55
  /**
47
- * Indicates whether the UI should display the production overlay. Controlled by
48
- * the license property.
56
+ * @deprecated Use `mappedUiStateKey` (internal/debug) or `uiStateKey` (displayed state).
49
57
  */
50
- getShowProductionOverlay(): boolean;
58
+ get rawUiStateKey(): BlinkIdUiStateKey;
59
+ startUiUpdateLoop(): void;
60
+ stopUiUpdateLoop(): void;
51
61
  /**
52
62
  * Returns the timeout duration in ms. Null if timeout won't be triggered ever.
53
63
  */
54
64
  getTimeoutDuration(): number | null;
55
65
  /**
56
66
  * Returns the time in ms before the help tooltip is shown. Null if tooltip won't be auto shown.
67
+ *
68
+ * @deprecated This option will be removed in a future release. Use `helpTooltipShowDelay` in `FeedbackUiOptions` instead.
57
69
  */
58
70
  getHelpTooltipShowDelay(): number | null;
59
71
  /**
60
72
  * Returns the time in ms before the help tooltip is hidden. Null if tooltip won't be auto hidden.
73
+ *
74
+ * @deprecated This option will be removed in a future release. Use `helpTooltipHideDelay` in `FeedbackUiOptions` instead.
61
75
  */
62
76
  getHelpTooltipHideDelay(): number | null;
63
77
  /**
@@ -84,6 +98,12 @@ export declare class BlinkIdUxManager {
84
98
  * @returns true if haptic feedback is supported
85
99
  */
86
100
  isHapticFeedbackSupported(): boolean;
101
+ /**
102
+ * Gets the analytics service for tracking UX events.
103
+ *
104
+ * @returns The UX analytics service
105
+ */
106
+ get analytics(): AnalyticService;
87
107
  /**
88
108
  * Adds a callback function to be executed when the UI state changes.
89
109
  *
@@ -205,6 +225,8 @@ export declare class BlinkIdUxManager {
205
225
  * shown. If null, tooltip won't be auto shown.
206
226
  * @throws {Error} Throws an error if duration is less than or equal to 0 when
207
227
  * not null.
228
+ *
229
+ * @deprecated This option will be removed in a future release. Use `helpTooltipShowDelay` in `FeedbackUiOptions` instead.
208
230
  */
209
231
  setHelpTooltipShowDelay(duration: number | null): void;
210
232
  /**
@@ -215,25 +237,31 @@ export declare class BlinkIdUxManager {
215
237
  * hidden. If null, tooltip won't be auto hidden.
216
238
  * @throws {Error} Throws an error if duration is less than or equal to 0 when
217
239
  * not null.
240
+ *
241
+ * @deprecated This option will be removed in a future release. Use `helpTooltipHideDelay` in `FeedbackUiOptions` instead.
218
242
  */
219
243
  setHelpTooltipHideDelay(duration: number | null): void;
244
+ /**
245
+ * Returns the initial UI state key used when resetting UX state.
246
+ */
247
+ getInitialUiStateKey(): BlinkIdUiStateKey;
248
+ /**
249
+ * Overrides the initial UI state key.
250
+ *
251
+ * @param uiStateKey - The UI state key to use as manager initial state.
252
+ * @param applyImmediately - If true, immediately applies and emits this state.
253
+ */
254
+ setInitialUiStateKey(uiStateKey: BlinkIdUiStateKey, applyImmediately?: boolean): void;
220
255
  /**
221
256
  * Clears the scanning session timeout.
222
257
  */
223
- clearScanTimeout: () => void;
258
+ clearScanTimeout(): void;
224
259
  /**
225
260
  * Gets the result from the scanning session.
226
261
  *
227
- * @param deleteSession - Whether to delete the session after getting the result. Note that
228
- * it is not possible to get the result a second time after the document has been fully captured,
229
- * so in this case we should delete the scanning session since it is no longer needed.
230
262
  * @returns The result.
231
263
  */
232
- getSessionResult(deleteSession?: boolean): Promise<BlinkIdScanningResult>;
233
- /**
234
- * Safely deletes the scanning session.
235
- */
236
- safelyDeleteScanningSession(): Promise<void>;
264
+ getSessionResult(): Promise<BlinkIdScanningResult>;
237
265
  /**
238
266
  * Resets the scanning session.
239
267
  *
@@ -248,5 +276,13 @@ export declare class BlinkIdUxManager {
248
276
  * Does not reset the camera manager or the scanning session.
249
277
  */
250
278
  reset(): void;
279
+ /**
280
+ * Fully tears down the BlinkIdUxManager. Stops frame processing, cancels the
281
+ * scan timeout, removes all subscriptions and the RAF loop, and clears all
282
+ * registered callbacks. Should be called when the manager is no longer needed.
283
+ *
284
+ * Does not stop the camera stream or delete the scanning session.
285
+ */
286
+ destroy(): void;
251
287
  }
252
288
  //# sourceMappingURL=BlinkIdUxManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlinkIdUxManager.d.ts","sourceRoot":"","sources":["../../src/core/BlinkIdUxManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlinkIdUxManager.d.ts","sourceRoot":"","sources":["../../src/core/BlinkIdUxManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=BlinkIdUxManager.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlinkIdUxManager.integration.test.d.ts","sourceRoot":"","sources":["../../src/core/BlinkIdUxManager.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
4
  export {};
5
5
  //# sourceMappingURL=BlinkIdUxManager.test.d.ts.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
4
  import { DocumentClassInfo } from "@microblink/blinkid-core";
5
5
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
- import { BlinkIdProcessResult } from "@microblink/blinkid-core";
5
- export declare const blankProcessResult: BlinkIdProcessResult;
4
+ import { ProcessResultWithBuffer } from "@microblink/blinkid-core";
5
+ export declare const blankProcessResult: ProcessResultWithBuffer;
6
6
  //# sourceMappingURL=blankProcessResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blankProcessResult.d.ts","sourceRoot":"","sources":["../../../src/core/__testdata/blankProcessResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,oBAsChC,CAAC"}
1
+ {"version":3,"file":"blankProcessResult.d.ts","sourceRoot":"","sources":["../../../src/core/__testdata/blankProcessResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,eAAO,MAAM,kBAAkB,EAAE,uBA0ChC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ import type { BlinkIdScanningResult, BlinkIdSessionSettings, ProcessResultWithBuffer, ScanningSettings } from "@microblink/blinkid-core";
5
+ import { type PartialDeep } from "type-fest";
6
+ export declare const defaultScanningSettings: ScanningSettings;
7
+ export declare const getMergedSettings: (overrides?: PartialDeep<ScanningSettings>) => ScanningSettings;
8
+ export declare const createSessionSettings: (settingsOverrides?: PartialDeep<ScanningSettings>) => BlinkIdSessionSettings;
9
+ export declare const createScanningResult: (overrides?: Partial<BlinkIdScanningResult>) => BlinkIdScanningResult;
10
+ /**
11
+ * Utility function to create a BlinkIdProcessResult with specified overrides.
12
+ *
13
+ * Important defaults to take note of:
14
+ * - `documentDetectionStatus` is set to "failed"
15
+ * - `processingStatus` is set to "detection-failed"
16
+ * - `scanningStatus` is set to "scanning-side-in-progress"
17
+ * - `scanningSide` is set to "first"
18
+ */
19
+ export declare const createProcessResult: (overrides?: PartialDeep<ProcessResultWithBuffer>) => ProcessResultWithBuffer;
20
+ //# sourceMappingURL=blinkidTestFixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blinkidTestFixtures.d.ts","sourceRoot":"","sources":["../../../src/core/__testdata/blinkidTestFixtures.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,eAAO,MAAM,uBAAuB,EAAE,gBACG,CAAC;AAE1C,eAAO,MAAM,iBAAiB,GAC5B,YAAW,WAAW,CAAC,gBAAgB,CAAM,KAC5C,gBAEF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,oBAAmB,WAAW,CAAC,gBAAgB,CAAM,KACpD,sBAKF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAW,OAAO,CAAC,qBAAqB,CAAM,KAC7C,qBAIF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAW,WAAW,CAAC,uBAAuB,CAAM,KACnD,uBAEF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
4
  import { InputImageAnalysisResult, ResultCompleteness, ScanningSettings } from "@microblink/blinkid-core";
5
5
  import { UiState } from "@microblink/feedback-stabilizer";
@@ -7,10 +7,103 @@ import { UiState } from "@microblink/feedback-stabilizer";
7
7
  * The type of reticle to display.
8
8
  */
9
9
  export type BlinkIdReticleType = "searching" | "processing" | "error" | "done" | "flip" | "move_top" | "move_left" | "move_right";
10
+ /**
11
+ * Intro state keys for BlinkID UI.
12
+ *
13
+ * @remarks
14
+ * These states display introductory screens that guide users to scan the correct
15
+ * side or page of their document. Most intro states are automatically reached
16
+ * during the scanning flow, but `INTRO_DATA_PAGE` requires manual initialization.
17
+ *
18
+ * **Default behavior:**
19
+ * The UX manager defaults to `INTRO_FRONT_PAGE`, assuming users will scan
20
+ * non-passport documents (ID cards, driver's licenses, etc.).
21
+ *
22
+ * **Automatically reachable states:**
23
+ * After capturing a page, the flow automatically transitions through appropriate
24
+ * intro states:
25
+ * - `INTRO_BACK_PAGE` - After flipping an ID card (`FLIP_CARD`)
26
+ * - `INTRO_TOP_PAGE` - After moving to passport top page (`MOVE_TOP`)
27
+ * - `INTRO_LEFT_PAGE` - After moving to passport left page (`MOVE_LEFT`)
28
+ * - `INTRO_RIGHT_PAGE` - After moving to passport right page (`MOVE_RIGHT`)
29
+ * - `INTRO_LAST_PAGE` - After moving to passport barcode page (`MOVE_LAST_PAGE`)
30
+ *
31
+ * **Manual initialization required:**
32
+ * - `INTRO_DATA_PAGE` - Only reachable by overriding the UX manager initial
33
+ * state. Use this when restricting scanning to passport documents only,
34
+ * as the SDK assumes non-passport documents by default.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Limit scanning to passport documents only
39
+ * const uxManager = new BlinkIdUxManager(cameraManager, session);
40
+ * uxManager.setInitialUiStateKey("INTRO_DATA_PAGE", true);
41
+ * ```
42
+ *
43
+ * @see {@link BlinkIdUiIntroStateKey} for the union type of these keys
44
+ * @see {@link getChainedUiStateKey} for the automatic state transition logic
45
+ */
46
+ export declare const blinkIdUiIntroStateKeys: readonly ["INTRO_FRONT_PAGE", "INTRO_BACK_PAGE", "INTRO_DATA_PAGE", "INTRO_TOP_PAGE", "INTRO_LEFT_PAGE", "INTRO_RIGHT_PAGE", "INTRO_LAST_PAGE"];
47
+ /**
48
+ * Union type of all intro state keys.
49
+ *
50
+ * @see {@link blinkIdUiIntroStateKeys} for detailed documentation on each state
51
+ */
52
+ export type BlinkIdUiIntroStateKey = (typeof blinkIdUiIntroStateKeys)[number];
53
+ /**
54
+ * Page transition state keys for BlinkID UI.
55
+ *
56
+ * @remarks
57
+ * These states display transition animations and instructions between scanning
58
+ * different document pages or sides. They are automatically triggered after
59
+ * successfully capturing a page (`PAGE_CAPTURED`) and cannot be manually set.
60
+ *
61
+ * Each transition state corresponds to a specific document type and guides the
62
+ * user to position the document for the next scan:
63
+ * - `FLIP_CARD` - Instructs user to flip ID card to scan the back side
64
+ * - `MOVE_LAST_PAGE` - Instructs user to move to passport's last page (barcode)
65
+ * - `MOVE_TOP` - Instructs user to rotate passport to top orientation (0°)
66
+ * - `MOVE_RIGHT` - Instructs user to rotate passport 90° clockwise
67
+ * - `MOVE_LEFT` - Instructs user to rotate passport 90° counter-clockwise
68
+ *
69
+ * **Automatic flow:**
70
+ * After a transition animation completes, the UI automatically advances to the
71
+ * corresponding intro state to begin scanning the next page:
72
+ * - `FLIP_CARD` → `INTRO_BACK_PAGE`
73
+ * - `MOVE_LAST_PAGE` → `INTRO_LAST_PAGE`
74
+ * - `MOVE_TOP` → `INTRO_TOP_PAGE`
75
+ * - `MOVE_RIGHT` → `INTRO_RIGHT_PAGE`
76
+ * - `MOVE_LEFT` → `INTRO_LEFT_PAGE`
77
+ *
78
+ * @see {@link BlinkIdPageTransitionKey} for the union type of these keys
79
+ * @see {@link getChainedUiStateKey} for the automatic state transition logic
80
+ * @see {@link blinkIdUiIntroStateKeys} for the intro states that follow transitions
81
+ */
82
+ export declare const blinkIdPageTransitionKeys: readonly ["FLIP_CARD", "MOVE_TOP", "MOVE_LEFT", "MOVE_RIGHT", "MOVE_LAST_PAGE"];
83
+ /**
84
+ * Union type of all page transition state keys.
85
+ *
86
+ * @see {@link blinkIdPageTransitionKeys} for detailed documentation on each state
87
+ */
88
+ export type BlinkIdPageTransitionKey = (typeof blinkIdPageTransitionKeys)[number];
89
+ /**
90
+ * The error states for BlinkID. Mappable from `ProcessResult`.
91
+ */
92
+ export declare const blinkIdUiErrorStateKeys: readonly ["FRONT_PAGE_NOT_IN_FRAME", "BACK_PAGE_NOT_IN_FRAME", "DATA_PAGE_NOT_IN_FRAME", "TOP_PAGE_NOT_IN_FRAME", "LEFT_PAGE_NOT_IN_FRAME", "RIGHT_PAGE_NOT_IN_FRAME", "LAST_PAGE_NOT_IN_FRAME", "BARCODE_NOT_IN_FRAME", "DOCUMENT_FRAMING_CAMERA_TOO_FAR", "DOCUMENT_FRAMING_CAMERA_TOO_CLOSE", "DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP", "DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE", "BLUR_DETECTED", "GLARE_DETECTED", "TOO_DARK", "TOO_BRIGHT", "OCCLUDED", "FACE_PHOTO_OCCLUDED", "WRONG_SIDE", "WRONG_TOP_PAGE", "WRONG_LEFT_PAGE", "WRONG_RIGHT_PAGE", "WRONG_LAST_PAGE", "UNSUPPORTED_DOCUMENT"];
93
+ export type BlinkIdUiErrorStateKey = (typeof blinkIdUiErrorStateKeys)[number];
94
+ /**
95
+ * These keys represent successful steps in the BlinkID scanning process.
96
+ */
97
+ export declare const blinkIdUiStepSuccessKeys: readonly ["PAGE_CAPTURED", "DOCUMENT_CAPTURED"];
98
+ export type BlinkIdUiStepSuccessKey = (typeof blinkIdUiStepSuccessKeys)[number];
99
+ /**
100
+ * These keys are directly mappable from a `ProcessResult`
101
+ */
102
+ export type BlinkIdUiMappableKey = BlinkIdUiErrorStateKey | BlinkIdUiStepSuccessKey | "PROCESSING_BARCODE";
10
103
  /**
11
104
  * The key of the UI state.
12
105
  */
13
- export type BlinkIdUiStateKey = "FLIP_CARD" | "DOCUMENT_CAPTURED" | "SENSING_FRONT" | "SENSING_BACK" | "SENSING_DATA_PAGE" | "SENSING_TOP_PAGE" | "SENSING_LEFT_PAGE" | "SENSING_RIGHT_PAGE" | "SENSING_LAST_PAGE" | "MOVE_TOP" | "MOVE_LEFT" | "MOVE_RIGHT" | "MOVE_LAST_PAGE" | "DOCUMENT_FRAMING_CAMERA_TOO_FAR" | "DOCUMENT_FRAMING_CAMERA_TOO_CLOSE" | "DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP" | "DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE" | "BLUR_DETECTED" | "GLARE_DETECTED" | "TOO_DARK" | "TOO_BRIGHT" | "OCCLUDED" | "FACE_PHOTO_OCCLUDED" | "UNSUPPORTED_DOCUMENT" | "SCAN_BARCODE" | "WRONG_TOP_PAGE" | "WRONG_LEFT_PAGE" | "WRONG_RIGHT_PAGE" | "WRONG_LAST_PAGE" | "WRONG_SIDE";
106
+ export type BlinkIdUiStateKey = BlinkIdUiIntroStateKey | BlinkIdPageTransitionKey | BlinkIdUiMappableKey;
14
107
  /**
15
108
  * Extended UI state for BlinkID.
16
109
  *
@@ -32,12 +125,6 @@ export type BlinkIdUiState = BlinkIdUiStateMap[keyof BlinkIdUiStateMap];
32
125
  * The UI state map of BlinkID.
33
126
  */
34
127
  export declare const blinkIdUiStateMap: BlinkIdUiStateMap;
35
- /**
36
- * The states that are captured when the first side is captured.
37
- */
38
- export declare const firstSideCapturedUiStateKeys: BlinkIdUiStateKey[];
39
- /** The error UI state keys. */
40
- export declare const errorUiStateKeys: BlinkIdUiStateKey[];
41
128
  /**
42
129
  * The partial process result.
43
130
  */
@@ -61,5 +148,5 @@ export type PartialProcessResult = {
61
148
  * selection.
62
149
  * @returns The UI state key representing what should be shown to the user.
63
150
  */
64
- export declare function getUiStateKey(frameProcessResult: PartialProcessResult, settings?: Partial<ScanningSettings>): BlinkIdUiStateKey;
151
+ export declare function getUiStateKey(frameProcessResult: PartialProcessResult, settings?: Partial<ScanningSettings>): BlinkIdUiMappableKey | undefined;
65
152
  //# sourceMappingURL=blinkid-ui-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blinkid-ui-state.d.ts","sourceRoot":"","sources":["../../src/core/blinkid-ui-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAG1D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,YAAY,GACZ,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,iCAAiC,GACjC,mCAAmC,GACnC,yCAAyC,GACzC,kCAAkC,GAClC,eAAe,GACf,gBAAgB,GAChB,UAAU,GACV,YAAY,GACZ,UAAU,GACV,qBAAqB,GACrB,sBAAsB,GACtB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,iBAAiB,GAAG,OAAO,GAAG;QAClC,+BAA+B;QAC/B,GAAG,EAAE,CAAC,CAAC;QACP,+BAA+B;QAC/B,WAAW,EAAE,kBAAkB,CAAC;KACjC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAgKtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,EAQlD,CAAC;AAEX,+BAA+B;AAC/B,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAIpB,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,uCAAuC;IACvC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5D,+BAA+B;IAC/B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjD,CAAC;AAyBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,oBAAoB,EACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,qBAmYrC"}
1
+ {"version":3,"file":"blinkid-ui-state.d.ts","sourceRoot":"","sources":["../../src/core/blinkid-ui-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAS1D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,YAAY,GACZ,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,uBAAuB,iJAQ1B,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,yBAAyB,iFAM5B,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,uBAAuB,mkBA6B1B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,wBAAwB,iDAG3B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GAEtB,uBAAuB,GAEvB,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAEzB,sBAAsB,GAEtB,wBAAwB,GAExB,oBAAoB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,iBAAiB,GAAG,OAAO,GAAG;QAClC,+BAA+B;QAC/B,GAAG,EAAE,CAAC,CAAC;QACP,+BAA+B;QAC/B,WAAW,EAAE,kBAAkB,CAAC;KACjC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAOxE;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBA8NtB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,uCAAuC;IACvC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5D,+BAA+B;IAC/B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,oBAAoB,EACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,oCA2WrC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2025 Microblink Ltd. All rights reserved.
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
3
  */
4
4
  export {};
5
5
  //# sourceMappingURL=blinkid-ui-state.test.d.ts.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ import { type RemoteScanningSession } from "@microblink/blinkid-core";
5
+ import { CameraManager } from "@microblink/camera-manager";
6
+ import { BlinkIdUxManager } from "./BlinkIdUxManager";
7
+ import { BlinkIdUiStateKey } from "./blinkid-ui-state";
8
+ export type BlinkIdUxManagerOptions = {
9
+ /**
10
+ * Initial UI state key used by the manager/stabilizer reset flow.
11
+ * Defaults to `INTRO_FRONT_PAGE`.
12
+ */
13
+ initialUiStateKey?: BlinkIdUiStateKey;
14
+ };
15
+ /**
16
+ * Creates a BlinkIdUxManager.
17
+ *
18
+ * @param cameraManager - The camera manager.
19
+ * @param scanningSession - The scanning session.
20
+ * @returns The BlinkIdUxManager instance.
21
+ */
22
+ export declare const createBlinkIdUxManager: (cameraManager: CameraManager, scanningSession: RemoteScanningSession, options?: BlinkIdUxManagerOptions) => Promise<BlinkIdUxManager>;
23
+ //# sourceMappingURL=createBlinkIdUxManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBlinkIdUxManager.d.ts","sourceRoot":"","sources":["../../src/core/createBlinkIdUxManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,eAAe,aAAa,EAC5B,iBAAiB,qBAAqB,EACtC,UAAS,uBAA4B,KACpC,OAAO,CAAC,gBAAgB,CAkB1B,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ import { DocumentRotation } from "@microblink/blinkid-core";
5
+ import { BlinkIdUiStateKey } from "./blinkid-ui-state";
6
+ import { DocumentPagination } from "./ui-state-utils";
7
+ export type ChainedUiStateProps = {
8
+ previousUiStateKey: BlinkIdUiStateKey;
9
+ paginationType: DocumentPagination;
10
+ rotation?: DocumentRotation;
11
+ };
12
+ /**
13
+ * Handles chaining of UI states based on the current state, pagination type, and rotation.
14
+ * @param chainedUiStateProps The properties including current UI state key, pagination type, and optional rotation.
15
+ * @returns The next chained UI state key, or undefined if there is no chained state.
16
+ */
17
+ export declare function getChainedUiStateKey(chainedUiStateProps: ChainedUiStateProps): BlinkIdUiStateKey | undefined;
18
+ //# sourceMappingURL=getChainedUiStateKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getChainedUiStateKey.d.ts","sourceRoot":"","sources":["../../src/core/getChainedUiStateKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,cAAc,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,mBAAmB,GACvC,iBAAiB,GAAG,SAAS,CAkG/B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=getChainedUiStateKey.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getChainedUiStateKey.test.d.ts","sourceRoot":"","sources":["../../src/core/getChainedUiStateKey.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Copyright (c) 2026 Microblink Ltd. All rights reserved.
3
+ */
4
+ import type { BlinkIdScanningResult, BlinkIdSessionSettings, RemoteScanningSession, ScanningSettings } from "@microblink/blinkid-core";
5
+ import type { CameraManager } from "@microblink/camera-manager";
6
+ import { type FakeScanningSession, FakeCameraManager } from "@microblink/test-utils";
7
+ import type { BlinkIdUxManager } from "./BlinkIdUxManager";
8
+ import { createProcessResult } from "./__testdata/blinkidTestFixtures";
9
+ import { type BlinkIdUxManagerOptions } from "./createBlinkIdUxManager";
10
+ export type CameraInputState = {
11
+ selectedCamera?: {
12
+ name: string;
13
+ facingMode?: "front" | "back";
14
+ };
15
+ videoResolution?: {
16
+ width: number;
17
+ height: number;
18
+ };
19
+ extractionArea?: {
20
+ x: number;
21
+ y: number;
22
+ width: number;
23
+ height: number;
24
+ };
25
+ };
26
+ export type BlinkIdCameraHarness = {
27
+ cameraManager: CameraManager;
28
+ fakeCameraManager: FakeCameraManager;
29
+ emitPlaybackState: (playbackState: "idle" | "playback" | "capturing") => void;
30
+ emitFrame: (imageData: ImageData) => Promise<ArrayBufferLike | void>;
31
+ emitCameraState: (nextState: Partial<CameraInputState>) => void;
32
+ setIsActive: (value: boolean) => void;
33
+ stopFrameCapture: FakeCameraManager["stopFrameCapture"];
34
+ startFrameCapture: FakeCameraManager["startFrameCapture"];
35
+ startCameraStream: FakeCameraManager["startCameraStream"];
36
+ };
37
+ export declare const createBlinkIdCameraHarness: (fakeCameraOptions?: ConstructorParameters<typeof FakeCameraManager>[0]) => BlinkIdCameraHarness;
38
+ export type BlinkIdSessionMock = FakeScanningSession<ReturnType<typeof createProcessResult>, BlinkIdSessionSettings, BlinkIdScanningResult>;
39
+ export type BlinkIdUnitSessionMock = FakeScanningSession<ReturnType<typeof createProcessResult>, {
40
+ scanningSettings: Partial<ScanningSettings>;
41
+ }, unknown>;
42
+ export type CreateBlinkIdIntegrationContextOptions = {
43
+ sessionSettings?: BlinkIdSessionSettings;
44
+ showDemoOverlay?: boolean;
45
+ showProductionOverlay?: boolean;
46
+ fakeCameraOptions?: ConstructorParameters<typeof FakeCameraManager>[0];
47
+ sessionOverrides?: Partial<BlinkIdSessionMock>;
48
+ };
49
+ export type BlinkIdIntegrationContext = {
50
+ manager: BlinkIdUxManager;
51
+ fakeCameraManager: FakeCameraManager;
52
+ scanningSession: BlinkIdSessionMock;
53
+ };
54
+ type CreateBlinkIdSessionMockOptions = {
55
+ sessionSettings?: BlinkIdSessionSettings;
56
+ showDemoOverlay?: boolean;
57
+ showProductionOverlay?: boolean;
58
+ sessionOverrides?: Partial<BlinkIdSessionMock>;
59
+ };
60
+ export declare const createBlinkIdSessionMock: (options?: CreateBlinkIdSessionMockOptions) => BlinkIdSessionMock;
61
+ export declare const createBlinkIdUnitSessionMock: (overrideSettings?: Partial<ScanningSettings>) => BlinkIdUnitSessionMock;
62
+ export declare const createBlinkIdManager: (cameraManager: CameraManager, scanningSession: BlinkIdSessionMock | RemoteScanningSession, options?: BlinkIdUxManagerOptions) => Promise<BlinkIdUxManager>;
63
+ export declare const createBlinkIdIntegrationContext: (options?: CreateBlinkIdIntegrationContextOptions) => Promise<BlinkIdIntegrationContext>;
64
+ export {};
65
+ //# sourceMappingURL=test-helpers.integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.integration.d.ts","sourceRoot":"","sources":["../../src/core/test-helpers.integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAEL,KAAK,mBAAmB,EACxB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EAEpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC;IACjE,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,cAAc,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC;IAC9E,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACrE,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxD,iBAAiB,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,iBAAiB,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,oBAAoB,qBAAqB,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,KACrE,oBAgBF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAClD,UAAU,CAAC,OAAO,mBAAmB,CAAC,EACtC,sBAAsB,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CACtD,UAAU,CAAC,OAAO,mBAAmB,CAAC,EACtC;IAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAAE,EAC/C,OAAO,CACR,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,UAAS,+BAAoC,KAC5C,kBAUC,CAAC;AAEL,eAAO,MAAM,4BAA4B,GACvC,mBAAmB,OAAO,CAAC,gBAAgB,CAAC,KAC3C,sBASC,CAAC;AAEL,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,iBAAiB,kBAAkB,GAAG,qBAAqB,EAC3D,UAAU,uBAAuB,KAChC,OAAO,CAAC,gBAAgB,CAKxB,CAAC;AAEJ,eAAO,MAAM,+BAA+B,GAC1C,UAAS,sCAA2C,KACnD,OAAO,CAAC,yBAAyB,CAkBnC,CAAC"}