@smileid/usesmileid 12.0.0 → 12.0.1

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 (255) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts +11 -0
  3. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts.map +1 -0
  4. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js +17 -0
  5. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js.map +1 -0
  6. package/dist/core/exception/capture_validation_exceptions.d.ts +1 -0
  7. package/dist/core/exception/capture_validation_exceptions.d.ts.map +1 -1
  8. package/dist/core/exception/capture_validation_exceptions.js +1 -0
  9. package/dist/core/exception/capture_validation_exceptions.js.map +1 -1
  10. package/dist/core/exception/index.d.ts +1 -0
  11. package/dist/core/exception/index.d.ts.map +1 -1
  12. package/dist/core/exception/index.js +1 -0
  13. package/dist/core/exception/index.js.map +1 -1
  14. package/dist/core/exception/use_smile_id_error_code.d.ts +1 -0
  15. package/dist/core/exception/use_smile_id_error_code.d.ts.map +1 -1
  16. package/dist/core/exception/use_smile_id_error_code.js +1 -0
  17. package/dist/core/exception/use_smile_id_error_code.js.map +1 -1
  18. package/dist/core/models/config.d.ts +19 -0
  19. package/dist/core/models/config.d.ts.map +1 -1
  20. package/dist/core/models/document_type.d.ts +1 -1
  21. package/dist/core/models/document_type.d.ts.map +1 -1
  22. package/dist/core/models/document_type.js +2 -2
  23. package/dist/core/models/document_type.js.map +1 -1
  24. package/dist/core/models/global_privacy_control.d.ts +36 -0
  25. package/dist/core/models/global_privacy_control.d.ts.map +1 -0
  26. package/dist/core/models/global_privacy_control.js +39 -0
  27. package/dist/core/models/global_privacy_control.js.map +1 -0
  28. package/dist/core/models/network_config.d.ts +2 -2
  29. package/dist/core/models/network_config.js +2 -2
  30. package/dist/data/api/interceptors/smile_auth_interceptor.d.ts.map +1 -1
  31. package/dist/data/api/interceptors/smile_auth_interceptor.js +3 -17
  32. package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
  33. package/dist/data/api/smile_id_api.d.ts +1 -1
  34. package/dist/data/api/smile_id_api.d.ts.map +1 -1
  35. package/dist/data/dsl/builder/retry_config_builder.d.ts +4 -4
  36. package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
  37. package/dist/data/dsl/builder/retry_config_builder.js +6 -6
  38. package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
  39. package/dist/data/smile_id_urls.d.ts +1 -1
  40. package/dist/data/smile_id_urls.js +1 -1
  41. package/dist/data/smile_id_urls.js.map +1 -1
  42. package/dist/data/util/retry_util.d.ts +1 -1
  43. package/dist/data/util/retry_util.d.ts.map +1 -1
  44. package/dist/data/util/retry_util.js +5 -0
  45. package/dist/data/util/retry_util.js.map +1 -1
  46. package/dist/index.d.ts +2 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +2 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/metadata/builder_configuration.d.ts +5 -0
  51. package/dist/metadata/builder_configuration.d.ts.map +1 -1
  52. package/dist/metadata/builder_configuration.js +1 -0
  53. package/dist/metadata/builder_configuration.js.map +1 -1
  54. package/dist/metadata/metadata_configuration_mappers.d.ts +2 -3
  55. package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -1
  56. package/dist/metadata/metadata_configuration_mappers.js +13 -6
  57. package/dist/metadata/metadata_configuration_mappers.js.map +1 -1
  58. package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
  59. package/dist/metadata/use_smile_id_metadata_factory.js +14 -5
  60. package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
  61. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts +5 -2
  62. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
  63. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +8 -3
  64. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
  65. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
  66. package/dist/presentation/components/use_smile_id_instructions_hero.js +8 -3
  67. package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
  68. package/dist/presentation/flow/dsl/builder/config_builder.d.ts +16 -0
  69. package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
  70. package/dist/presentation/flow/dsl/builder/config_builder.js +18 -0
  71. package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
  72. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +3 -6
  73. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
  74. package/dist/presentation/flow/dsl/builder/screens_builder.js +3 -6
  75. package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
  76. package/dist/presentation/flow/flow_navigation_manager.d.ts +5 -1
  77. package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
  78. package/dist/presentation/flow/flow_navigation_manager.js +7 -1
  79. package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
  80. package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
  81. package/dist/presentation/flow/model/instructions_defaults.js +1 -1
  82. package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
  83. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
  84. package/dist/presentation/flow/screen/orchestrated_capture_screen.js +13 -3
  85. package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
  86. package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts.map +1 -1
  87. package/dist/presentation/flow/screen/orchestrated_consent_screen.js +3 -1
  88. package/dist/presentation/flow/screen/orchestrated_consent_screen.js.map +1 -1
  89. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
  90. package/dist/presentation/flow/screen/orchestrated_preview_screen.js +0 -8
  91. package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
  92. package/dist/presentation/flow/use_smile_id_flow.d.ts.map +1 -1
  93. package/dist/presentation/flow/use_smile_id_flow.js +10 -4
  94. package/dist/presentation/flow/use_smile_id_flow.js.map +1 -1
  95. package/dist/presentation/flow/validation/flow_validator.d.ts.map +1 -1
  96. package/dist/presentation/flow/validation/flow_validator.js +42 -20
  97. package/dist/presentation/flow/validation/flow_validator.js.map +1 -1
  98. package/dist/presentation/screen/helpers/capture_ui_state.d.ts +6 -6
  99. package/dist/presentation/screen/helpers/capture_ui_state.d.ts.map +1 -1
  100. package/dist/presentation/screen/helpers/capture_ui_state.js +19 -19
  101. package/dist/presentation/screen/helpers/capture_ui_state.js.map +1 -1
  102. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts +2 -2
  103. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts.map +1 -1
  104. package/dist/presentation/screen/helpers/ess_turn_haptics.js +6 -6
  105. package/dist/presentation/screen/helpers/ess_turn_haptics.js.map +1 -1
  106. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts +5 -5
  107. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts.map +1 -1
  108. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +11 -11
  109. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
  110. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts +13 -3
  111. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts.map +1 -1
  112. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js +48 -6
  113. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js.map +1 -1
  114. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +4 -2
  115. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
  116. package/dist/presentation/screen/use_smile_id_capture_screen.js +36 -15
  117. package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
  118. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts +7 -0
  119. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts.map +1 -1
  120. package/dist/presentation/screen/use_smile_id_consent_screen.js +6 -5
  121. package/dist/presentation/screen/use_smile_id_consent_screen.js.map +1 -1
  122. package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts.map +1 -1
  123. package/dist/presentation/screen/use_smile_id_document_back_instructions.js +5 -13
  124. package/dist/presentation/screen/use_smile_id_document_back_instructions.js.map +1 -1
  125. package/dist/presentation/screen/use_smile_id_document_preview_screen.js +1 -1
  126. package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
  127. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +1 -21
  128. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
  129. package/dist/presentation/screen/use_smile_id_preview_screen.js +3 -14
  130. package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
  131. package/dist/presentation/screen/use_smile_id_processing_screen.js +1 -1
  132. package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
  133. package/dist/presentation/utils/locale_utils.d.ts +10 -4
  134. package/dist/presentation/utils/locale_utils.d.ts.map +1 -1
  135. package/dist/presentation/utils/locale_utils.js +13 -5
  136. package/dist/presentation/utils/locale_utils.js.map +1 -1
  137. package/dist/testing/fake_face_analyzer.d.ts +43 -0
  138. package/dist/testing/fake_face_analyzer.d.ts.map +1 -0
  139. package/dist/testing/fake_face_analyzer.js +52 -0
  140. package/dist/testing/fake_face_analyzer.js.map +1 -0
  141. package/dist/testing/index.d.ts +5 -0
  142. package/dist/testing/index.d.ts.map +1 -0
  143. package/dist/testing/index.js +7 -0
  144. package/dist/testing/index.js.map +1 -0
  145. package/dist/testing/scenario_expectations.d.ts +28 -0
  146. package/dist/testing/scenario_expectations.d.ts.map +1 -0
  147. package/dist/testing/scenario_expectations.js +65 -0
  148. package/dist/testing/scenario_expectations.js.map +1 -0
  149. package/dist/testing/scenario_loader.d.ts +11 -0
  150. package/dist/testing/scenario_loader.d.ts.map +1 -0
  151. package/dist/testing/scenario_loader.js +64 -0
  152. package/dist/testing/scenario_loader.js.map +1 -0
  153. package/dist/testing/scripted_scan_results.d.ts +17 -0
  154. package/dist/testing/scripted_scan_results.d.ts.map +1 -0
  155. package/dist/testing/scripted_scan_results.js +52 -0
  156. package/dist/testing/scripted_scan_results.js.map +1 -0
  157. package/package.json +11 -4
  158. package/src/__tests__/dsl.test.ts +51 -1
  159. package/src/__tests__/setup_react_native.ts +17 -2
  160. package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +5261 -0
  161. package/src/__tests__/snapshots/screens_structural.test.tsx +230 -0
  162. package/src/camera/__tests__/use_smile_id_camera_system.test.ts +103 -0
  163. package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +67 -0
  164. package/src/core/exception/agent_mode_with_enhanced_liveness_exception.ts +20 -0
  165. package/src/core/exception/capture_validation_exceptions.ts +1 -0
  166. package/src/core/exception/index.ts +1 -0
  167. package/src/core/exception/use_smile_id_error_code.ts +1 -0
  168. package/src/core/models/__tests__/document_type.test.ts +2 -2
  169. package/src/core/models/__tests__/flow_models.test.ts +26 -0
  170. package/src/core/models/config.ts +22 -0
  171. package/src/core/models/document_type.ts +2 -2
  172. package/src/core/models/global_privacy_control.ts +45 -0
  173. package/src/core/models/network_config.ts +2 -2
  174. package/src/data/api/__tests__/smile_id_api.test.ts +1 -1
  175. package/src/data/api/interceptors/__tests__/gzip_interceptor.test.ts +83 -0
  176. package/src/data/api/interceptors/smile_auth_interceptor.ts +3 -18
  177. package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +6 -2
  178. package/src/data/dsl/builder/__tests__/config_builders.test.ts +62 -0
  179. package/src/data/dsl/builder/retry_config_builder.ts +6 -6
  180. package/src/data/factory/__tests__/retry_gzip_mac_composition.test.ts +163 -0
  181. package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +1 -1
  182. package/src/data/repository/__tests__/network_retries.test.ts +1 -1
  183. package/src/data/repository/__tests__/use_smile_id_repository.test.ts +1 -1
  184. package/src/data/security/__tests__/request_canonicalizer.test.ts +132 -0
  185. package/src/data/smile_id_urls.ts +1 -1
  186. package/src/data/util/__tests__/retry_util.test.ts +25 -0
  187. package/src/data/util/retry_util.ts +9 -1
  188. package/src/index.ts +6 -4
  189. package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +39 -0
  190. package/src/metadata/__tests__/metadata_configuration_objects.test.ts +2 -1
  191. package/src/metadata/__tests__/metadata_device_context.test.ts +3 -3
  192. package/src/metadata/__tests__/metadata_device_os_android.test.ts +18 -0
  193. package/src/metadata/__tests__/metadata_golden_fixture.json +1 -1
  194. package/src/metadata/__tests__/metadata_payload_golden.test.ts +4 -4
  195. package/src/metadata/__tests__/use_smile_id_metadata.test.ts +1 -1
  196. package/src/metadata/builder_configuration.ts +6 -0
  197. package/src/metadata/metadata_configuration_mappers.ts +21 -7
  198. package/src/metadata/use_smile_id_metadata_factory.ts +17 -6
  199. package/src/presentation/assets/si_document_green_book_hero_animation.json +1 -4668
  200. package/src/presentation/assets/si_document_hero_animation.json +1 -4799
  201. package/src/presentation/assets/si_document_hero_back_animation.json +1 -2039
  202. package/src/presentation/assets/si_document_passport_hero_animation.json +1 -14491
  203. package/src/presentation/assets/si_ess_all_directions_hero_animation.json +1 -0
  204. package/src/presentation/assets/si_ess_animation_all_directions.json +1 -6589
  205. package/src/presentation/assets/si_selfie_hero_animation.json +1 -1439
  206. package/src/presentation/assets/si_smile_to_capture_animation.json +1 -1439
  207. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +9 -4
  208. package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +44 -0
  209. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +9 -3
  210. package/src/presentation/components/use_smile_id_instructions_hero.tsx +10 -0
  211. package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +3 -3
  212. package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +49 -0
  213. package/src/presentation/flow/dsl/builder/__tests__/config_builder.test.ts +25 -0
  214. package/src/presentation/flow/dsl/builder/config_builder.ts +21 -0
  215. package/src/presentation/flow/dsl/builder/screens_builder.ts +3 -6
  216. package/src/presentation/flow/flow_navigation_manager.ts +6 -1
  217. package/src/presentation/flow/model/instructions_defaults.ts +1 -1
  218. package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +18 -3
  219. package/src/presentation/flow/screen/orchestrated_consent_screen.tsx +5 -0
  220. package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +0 -12
  221. package/src/presentation/flow/use_smile_id_flow.tsx +11 -4
  222. package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +61 -1
  223. package/src/presentation/flow/validation/flow_validator.ts +55 -26
  224. package/src/presentation/screen/__tests__/capture_ui_state.test.ts +66 -47
  225. package/src/presentation/screen/__tests__/ess_turn_haptics.test.ts +15 -11
  226. package/src/presentation/screen/__tests__/scan_state_to_overlay_state.test.ts +47 -27
  227. package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +176 -14
  228. package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +1 -1
  229. package/src/presentation/screen/__tests__/use_smile_id_preview_screen.test.tsx +10 -40
  230. package/src/presentation/screen/helpers/__tests__/use_capture_orientation_lock.test.tsx +212 -0
  231. package/src/presentation/screen/helpers/capture_ui_state.ts +27 -27
  232. package/src/presentation/screen/helpers/ess_turn_haptics.ts +9 -9
  233. package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +13 -13
  234. package/src/presentation/screen/helpers/use_capture_orientation_lock.ts +69 -7
  235. package/src/presentation/screen/use_smile_id_capture_screen.tsx +47 -19
  236. package/src/presentation/screen/use_smile_id_consent_screen.tsx +16 -5
  237. package/src/presentation/screen/use_smile_id_document_back_instructions.tsx +14 -23
  238. package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +1 -1
  239. package/src/presentation/screen/use_smile_id_preview_screen.tsx +13 -45
  240. package/src/presentation/screen/use_smile_id_processing_screen.tsx +1 -1
  241. package/src/presentation/utils/__tests__/locale_utils.test.ts +46 -5
  242. package/src/presentation/utils/locale_utils.ts +13 -4
  243. package/src/testing/__tests__/fake_face_analyzer.test.ts +42 -0
  244. package/src/testing/__tests__/scenario_expectations.test.ts +110 -0
  245. package/src/testing/__tests__/scenario_loader.test.ts +64 -0
  246. package/src/testing/fake_face_analyzer.ts +82 -0
  247. package/src/testing/index.ts +15 -0
  248. package/src/testing/scenario_expectations.ts +87 -0
  249. package/src/testing/scenario_loader.ts +83 -0
  250. package/src/testing/scripted_scan_results.ts +66 -0
  251. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts +0 -15
  252. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts.map +0 -1
  253. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js +0 -19
  254. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js.map +0 -1
  255. package/src/presentation/components/use_smile_id_face_silhouette_overlay.tsx +0 -27
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import type { ScanState } from "@smileid/usesmileid_bridge";
3
- import { ScanStateType } from "@smileid/usesmileid_bridge";
2
+ import type { UseSmileIDScanState } from "@smileid/usesmileid_bridge";
3
+ import { UseSmileIDScanStateType } from "@smileid/usesmileid_bridge";
4
4
  import { CaptureType } from "../../../core/models/ml_config";
5
5
  import { UseSmileIDOverlayState } from "../../state/use_smile_id_overlay_state";
6
6
  import {
@@ -16,7 +16,10 @@ import {
16
16
 
17
17
  describe("mapSelfieUiState — standard flow", () => {
18
18
  it("maps initial to the standard primer", () => {
19
- const ui = mapSelfieUiState({ type: ScanStateType.Initial }, false);
19
+ const ui = mapSelfieUiState(
20
+ { type: UseSmileIDScanStateType.Initial },
21
+ false,
22
+ );
20
23
  expect(ui.overlayState).toBe(UseSmileIDOverlayState.INSTRUCTION);
21
24
  expect(ui.feedbackKey).toBe("si_capture_initial_instruction");
22
25
  expect(ui.captureProgress).toBe(0);
@@ -26,7 +29,7 @@ describe("mapSelfieUiState — standard flow", () => {
26
29
  it("passes the analyzer feedback key through on found", () => {
27
30
  const ui = mapSelfieUiState(
28
31
  {
29
- type: ScanStateType.Found,
32
+ type: UseSmileIDScanStateType.Found,
30
33
  feedback: "si_capture_move_left",
31
34
  captureProgress: 0.4,
32
35
  },
@@ -40,10 +43,13 @@ describe("mapSelfieUiState — standard flow", () => {
40
43
  it("shows the in-capture copy on found-default and satisfied", () => {
41
44
  // All checks passing means frames are being collected — the
42
45
  // guidance reads "Capturing…", never the pre-start instruction.
43
- const found = mapSelfieUiState({ type: ScanStateType.Found }, false);
46
+ const found = mapSelfieUiState(
47
+ { type: UseSmileIDScanStateType.Found },
48
+ false,
49
+ );
44
50
  expect(found.feedbackKey).toBe("si_capturing");
45
51
  const satisfied = mapSelfieUiState(
46
- { type: ScanStateType.Satisfied },
52
+ { type: UseSmileIDScanStateType.Satisfied },
47
53
  false,
48
54
  );
49
55
  expect(satisfied.feedbackKey).toBe("si_capturing");
@@ -54,14 +60,20 @@ describe("mapSelfieUiState — standard flow", () => {
54
60
  });
55
61
 
56
62
  it("maps finished through the shared terminal snapshot", () => {
57
- const ui = mapSelfieUiState({ type: ScanStateType.Finished }, false);
63
+ const ui = mapSelfieUiState(
64
+ { type: UseSmileIDScanStateType.Finished },
65
+ false,
66
+ );
58
67
  expect(ui).toEqual(scannedUiState(false));
59
68
  expect(ui.feedbackKey).toBe("si_selfie_capture_complete");
60
69
  expect(ui.captureProgress).toBe(1);
61
70
  });
62
71
 
63
72
  it("maps timeout to idle with the timeout copy", () => {
64
- const ui = mapSelfieUiState({ type: ScanStateType.Timeout }, false);
73
+ const ui = mapSelfieUiState(
74
+ { type: UseSmileIDScanStateType.Timeout },
75
+ false,
76
+ );
65
77
  expect(ui.overlayState).toBe(UseSmileIDOverlayState.IDLE);
66
78
  expect(ui.feedbackKey).toBe("si_capture_timeout");
67
79
  });
@@ -69,15 +81,18 @@ describe("mapSelfieUiState — standard flow", () => {
69
81
 
70
82
  describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
71
83
  it("swaps the initial primer for the head-turn instruction", () => {
72
- const ui = mapSelfieUiState({ type: ScanStateType.Initial }, true);
84
+ const ui = mapSelfieUiState(
85
+ { type: UseSmileIDScanStateType.Initial },
86
+ true,
87
+ );
73
88
  expect(ui.feedbackKey).toBe("si_ess_capture_initial_instruction");
74
89
  });
75
90
 
76
91
  it("shows hold-still through active capture (found-default / satisfied)", () => {
77
92
  for (const scanState of [
78
- { type: ScanStateType.Found },
79
- { type: ScanStateType.Satisfied },
80
- ] satisfies ScanState[]) {
93
+ { type: UseSmileIDScanStateType.Found },
94
+ { type: UseSmileIDScanStateType.Satisfied },
95
+ ] satisfies UseSmileIDScanState[]) {
81
96
  expect(mapSelfieUiState(scanState, true).feedbackKey).toBe(
82
97
  "si_ess_hold_still",
83
98
  );
@@ -85,24 +100,25 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
85
100
  // Finished shows the completion copy in both modes; only the oval
86
101
  // fill differs under Enhanced Smart Selfie.
87
102
  expect(
88
- mapSelfieUiState({ type: ScanStateType.Finished }, true).feedbackKey,
103
+ mapSelfieUiState({ type: UseSmileIDScanStateType.Finished }, true)
104
+ .feedbackKey,
89
105
  ).toBe("si_selfie_capture_complete");
90
106
  });
91
107
 
92
108
  it("zeroes captureProgress everywhere — the oval never fills under ESS", () => {
93
109
  for (const scanState of [
94
- { type: ScanStateType.Found, captureProgress: 0.6 },
95
- { type: ScanStateType.Satisfied },
96
- { type: ScanStateType.Finished },
97
- { type: ScanStateType.HeadTurn, currentDirection: "left" },
98
- ] satisfies ScanState[]) {
110
+ { type: UseSmileIDScanStateType.Found, captureProgress: 0.6 },
111
+ { type: UseSmileIDScanStateType.Satisfied },
112
+ { type: UseSmileIDScanStateType.Finished },
113
+ { type: UseSmileIDScanStateType.HeadTurn, currentDirection: "left" },
114
+ ] satisfies UseSmileIDScanState[]) {
99
115
  expect(mapSelfieUiState(scanState, true).captureProgress).toBe(0);
100
116
  }
101
117
  });
102
118
 
103
119
  it("keeps explicit guidance keys ahead of hold-still during found", () => {
104
120
  const ui = mapSelfieUiState(
105
- { type: ScanStateType.Found, feedback: "si_capture_too_close" },
121
+ { type: UseSmileIDScanStateType.Found, feedback: "si_capture_too_close" },
106
122
  true,
107
123
  );
108
124
  expect(ui.feedbackKey).toBe("si_capture_too_close");
@@ -116,7 +132,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
116
132
  ] as const;
117
133
  for (const [direction, expectedKey] of directions) {
118
134
  const ui = mapSelfieUiState(
119
- { type: ScanStateType.HeadTurn, currentDirection: direction },
135
+ { type: UseSmileIDScanStateType.HeadTurn, currentDirection: direction },
120
136
  true,
121
137
  );
122
138
  expect(ui.overlayState).toBe(UseSmileIDOverlayState.HEAD_TURN);
@@ -127,7 +143,10 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
127
143
  });
128
144
 
129
145
  it("falls back to hold-steady when headTurn arrives without a direction", () => {
130
- const ui = mapSelfieUiState({ type: ScanStateType.HeadTurn }, true);
146
+ const ui = mapSelfieUiState(
147
+ { type: UseSmileIDScanStateType.HeadTurn },
148
+ true,
149
+ );
131
150
  expect(ui.feedbackKey).toBe("si_capture_hold_steady");
132
151
  expect(ui.animationDirection).toBeNull();
133
152
  });
@@ -135,7 +154,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
135
154
  it("threads poseMatched into the head-turn state (drives grey→green)", () => {
136
155
  const matched = mapSelfieUiState(
137
156
  {
138
- type: ScanStateType.HeadTurn,
157
+ type: UseSmileIDScanStateType.HeadTurn,
139
158
  currentDirection: "left",
140
159
  poseMatched: true,
141
160
  },
@@ -145,7 +164,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
145
164
  expect(matched.poseMatched).toBe(true);
146
165
 
147
166
  const pending = mapSelfieUiState(
148
- { type: ScanStateType.HeadTurn, currentDirection: "left" },
167
+ { type: UseSmileIDScanStateType.HeadTurn, currentDirection: "left" },
149
168
  true,
150
169
  );
151
170
  expect(pending.poseMatched).toBe(false);
@@ -159,7 +178,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
159
178
  ] as const) {
160
179
  const ui = mapSelfieUiState(
161
180
  {
162
- type: ScanStateType.HeadTurn,
181
+ type: UseSmileIDScanStateType.HeadTurn,
163
182
  currentDirection: "left",
164
183
  feedback,
165
184
  poseMatched: true,
@@ -182,7 +201,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
182
201
  ] as const) {
183
202
  const ui = mapSelfieUiState(
184
203
  {
185
- type: ScanStateType.HeadTurn,
204
+ type: UseSmileIDScanStateType.HeadTurn,
186
205
  currentDirection: "up",
187
206
  feedback,
188
207
  poseMatched: true,
@@ -203,7 +222,7 @@ describe("mapSelfieUiState — Enhanced Smart Selfie", () => {
203
222
  ] as const) {
204
223
  const ui = mapSelfieUiState(
205
224
  {
206
- type: ScanStateType.HeadTurn,
225
+ type: UseSmileIDScanStateType.HeadTurn,
207
226
  currentDirection: "right",
208
227
  feedback,
209
228
  poseMatched: true,
@@ -241,7 +260,7 @@ describe("withEnhancedLivenessPolicy", () => {
241
260
 
242
261
  describe("document mapping", () => {
243
262
  it("maps finished through the shared document terminal snapshot", () => {
244
- const ui = mapDocumentUiState({ type: ScanStateType.Finished });
263
+ const ui = mapDocumentUiState({ type: UseSmileIDScanStateType.Finished });
245
264
  expect(ui).toEqual(scannedDocumentUiState());
246
265
  expect(ui.feedbackKey).toBe("si_document_capture_complete");
247
266
  expect(ui.captureProgress).toBe(1);
@@ -249,7 +268,7 @@ describe("document mapping", () => {
249
268
 
250
269
  it("passes document feedback keys through on found", () => {
251
270
  const ui = mapDocumentUiState({
252
- type: ScanStateType.Found,
271
+ type: UseSmileIDScanStateType.Found,
253
272
  feedback: "si_document_too_far",
254
273
  });
255
274
  expect(ui.overlayState).toBe(UseSmileIDOverlayState.DOCUMENT_TOO_FAR);
@@ -257,7 +276,7 @@ describe("document mapping", () => {
257
276
  });
258
277
 
259
278
  it("treats a degenerate headTurn as the pre-capture instruction", () => {
260
- const ui = mapDocumentUiState({ type: ScanStateType.HeadTurn });
279
+ const ui = mapDocumentUiState({ type: UseSmileIDScanStateType.HeadTurn });
261
280
  expect(ui.overlayState).toBe(UseSmileIDOverlayState.INSTRUCTION);
262
281
  expect(ui.feedbackKey).toBe("si_document_initial_instruction");
263
282
  });
@@ -287,14 +306,14 @@ describe("mapCaptureUiState dispatch", () => {
287
306
  it("routes by capture type", () => {
288
307
  expect(
289
308
  mapCaptureUiState(
290
- { type: ScanStateType.Initial },
309
+ { type: UseSmileIDScanStateType.Initial },
291
310
  CaptureType.selfie,
292
311
  true,
293
312
  ).feedbackKey,
294
313
  ).toBe("si_ess_capture_initial_instruction");
295
314
  expect(
296
315
  mapCaptureUiState(
297
- { type: ScanStateType.Initial },
316
+ { type: UseSmileIDScanStateType.Initial },
298
317
  CaptureType.document,
299
318
  // ESS is a selfie-only concept; the flag must not leak into
300
319
  // the document mapping.
@@ -308,8 +327,8 @@ describe("isSessionBoundary", () => {
308
327
  it("returns true for unsatisfied → found (leaving unsatisfied is a boundary)", () => {
309
328
  expect(
310
329
  isSessionBoundary(
311
- { type: ScanStateType.Unsatisfied },
312
- { type: ScanStateType.Found },
330
+ { type: UseSmileIDScanStateType.Unsatisfied },
331
+ { type: UseSmileIDScanStateType.Found },
313
332
  ),
314
333
  ).toBe(true);
315
334
  });
@@ -317,8 +336,8 @@ describe("isSessionBoundary", () => {
317
336
  it("returns true for unsatisfied → initial", () => {
318
337
  expect(
319
338
  isSessionBoundary(
320
- { type: ScanStateType.Unsatisfied },
321
- { type: ScanStateType.Initial },
339
+ { type: UseSmileIDScanStateType.Unsatisfied },
340
+ { type: UseSmileIDScanStateType.Initial },
322
341
  ),
323
342
  ).toBe(true);
324
343
  });
@@ -326,8 +345,8 @@ describe("isSessionBoundary", () => {
326
345
  it("returns true for timeout → initial (session restart)", () => {
327
346
  expect(
328
347
  isSessionBoundary(
329
- { type: ScanStateType.Timeout },
330
- { type: ScanStateType.Initial },
348
+ { type: UseSmileIDScanStateType.Timeout },
349
+ { type: UseSmileIDScanStateType.Initial },
331
350
  ),
332
351
  ).toBe(true);
333
352
  });
@@ -335,8 +354,8 @@ describe("isSessionBoundary", () => {
335
354
  it("returns true for finished → initial (session restart)", () => {
336
355
  expect(
337
356
  isSessionBoundary(
338
- { type: ScanStateType.Finished },
339
- { type: ScanStateType.Initial },
357
+ { type: UseSmileIDScanStateType.Finished },
358
+ { type: UseSmileIDScanStateType.Initial },
340
359
  ),
341
360
  ).toBe(true);
342
361
  });
@@ -344,8 +363,8 @@ describe("isSessionBoundary", () => {
344
363
  it("returns false for found → unsatisfied (entering unsatisfied, not leaving)", () => {
345
364
  expect(
346
365
  isSessionBoundary(
347
- { type: ScanStateType.Found },
348
- { type: ScanStateType.Unsatisfied },
366
+ { type: UseSmileIDScanStateType.Found },
367
+ { type: UseSmileIDScanStateType.Unsatisfied },
349
368
  ),
350
369
  ).toBe(false);
351
370
  });
@@ -353,8 +372,8 @@ describe("isSessionBoundary", () => {
353
372
  it("returns false for same-type transition (found → found)", () => {
354
373
  expect(
355
374
  isSessionBoundary(
356
- { type: ScanStateType.Found },
357
- { type: ScanStateType.Found },
375
+ { type: UseSmileIDScanStateType.Found },
376
+ { type: UseSmileIDScanStateType.Found },
358
377
  ),
359
378
  ).toBe(false);
360
379
  });
@@ -362,8 +381,8 @@ describe("isSessionBoundary", () => {
362
381
  it("returns false for initial → found (normal forward progression)", () => {
363
382
  expect(
364
383
  isSessionBoundary(
365
- { type: ScanStateType.Initial },
366
- { type: ScanStateType.Found },
384
+ { type: UseSmileIDScanStateType.Initial },
385
+ { type: UseSmileIDScanStateType.Found },
367
386
  ),
368
387
  ).toBe(false);
369
388
  });
@@ -371,8 +390,8 @@ describe("isSessionBoundary", () => {
371
390
  it("returns false for timeout → found (only initial restarts after a terminal state)", () => {
372
391
  expect(
373
392
  isSessionBoundary(
374
- { type: ScanStateType.Timeout },
375
- { type: ScanStateType.Found },
393
+ { type: UseSmileIDScanStateType.Timeout },
394
+ { type: UseSmileIDScanStateType.Found },
376
395
  ),
377
396
  ).toBe(false);
378
397
  });
@@ -1,16 +1,16 @@
1
1
  import { describe, expect, it, vi, beforeEach } from "vitest";
2
2
  import * as Haptics from "expo-haptics";
3
- import type { ScanState } from "@smileid/usesmileid_bridge";
4
- import { ScanStateType } from "@smileid/usesmileid_bridge";
3
+ import type { UseSmileIDScanState } from "@smileid/usesmileid_bridge";
4
+ import { UseSmileIDScanStateType } from "@smileid/usesmileid_bridge";
5
5
  import {
6
6
  essTurnHaptic,
7
7
  triggerEssTurnHaptic,
8
8
  } from "../helpers/ess_turn_haptics";
9
9
 
10
- const headTurn = (direction?: "left" | "right" | "up"): ScanState =>
10
+ const headTurn = (direction?: "left" | "right" | "up"): UseSmileIDScanState =>
11
11
  direction === undefined
12
- ? { type: ScanStateType.HeadTurn }
13
- : { type: ScanStateType.HeadTurn, currentDirection: direction };
12
+ ? { type: UseSmileIDScanStateType.HeadTurn }
13
+ : { type: UseSmileIDScanStateType.HeadTurn, currentDirection: direction };
14
14
 
15
15
  describe("essTurnHaptic", () => {
16
16
  it("fires intermediate when the requested direction advances", () => {
@@ -24,9 +24,9 @@ describe("essTurnHaptic", () => {
24
24
 
25
25
  it("fires final when leaving the head-turn phase toward capture", () => {
26
26
  for (const next of [
27
- ScanStateType.Found,
28
- ScanStateType.Satisfied,
29
- ScanStateType.Finished,
27
+ UseSmileIDScanStateType.Found,
28
+ UseSmileIDScanStateType.Satisfied,
29
+ UseSmileIDScanStateType.Finished,
30
30
  ] as const) {
31
31
  expect(essTurnHaptic(headTurn("up"), { type: next })).toBe("final");
32
32
  }
@@ -34,10 +34,14 @@ describe("essTurnHaptic", () => {
34
34
 
35
35
  it("never fires on a reset (head turn abandoned to initial / timeout)", () => {
36
36
  expect(
37
- essTurnHaptic(headTurn("left"), { type: ScanStateType.Initial }),
37
+ essTurnHaptic(headTurn("left"), {
38
+ type: UseSmileIDScanStateType.Initial,
39
+ }),
38
40
  ).toBeNull();
39
41
  expect(
40
- essTurnHaptic(headTurn("left"), { type: ScanStateType.Timeout }),
42
+ essTurnHaptic(headTurn("left"), {
43
+ type: UseSmileIDScanStateType.Timeout,
44
+ }),
41
45
  ).toBeNull();
42
46
  });
43
47
 
@@ -48,7 +52,7 @@ describe("essTurnHaptic", () => {
48
52
  it("does not fire when the previous state was not a directed head turn", () => {
49
53
  // Entering a head turn is not completing one.
50
54
  expect(
51
- essTurnHaptic({ type: ScanStateType.Found }, headTurn("left")),
55
+ essTurnHaptic({ type: UseSmileIDScanStateType.Found }, headTurn("left")),
52
56
  ).toBeNull();
53
57
  // A head turn with no direction yet has nothing to complete.
54
58
  expect(essTurnHaptic(headTurn(), headTurn("left"))).toBeNull();
@@ -1,13 +1,13 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { ScanStateType } from "@smileid/usesmileid_bridge";
3
- import type { ScanState } from "@smileid/usesmileid_bridge";
2
+ import { UseSmileIDScanStateType } from "@smileid/usesmileid_bridge";
3
+ import type { UseSmileIDScanState } from "@smileid/usesmileid_bridge";
4
4
  import { mapScanStateToOverlayState } from "../helpers/scan_state_to_overlay_state";
5
5
  import { UseSmileIDOverlayState } from "../../state/use_smile_id_overlay_state";
6
6
  import { CaptureType } from "../../../core/models/ml_config";
7
7
 
8
8
  /**
9
9
  * Pure-logic tests for the helper that translates the analyzer's
10
- * `ScanState` machine into the SDK's visual overlay enum. These cover
10
+ * `UseSmileIDScanState` machine into the SDK's visual overlay enum. These cover
11
11
  * what the legacy screen tests pinned via the now-removed
12
12
  * `overlayState=` prop — the screen now derives overlay state from
13
13
  * `scanState` per frame, so testing the mapping in isolation gives the
@@ -15,14 +15,18 @@ import { CaptureType } from "../../../core/models/ml_config";
15
15
  */
16
16
  describe("mapScanStateToOverlayState", () => {
17
17
  it("maps the initial state to INSTRUCTION for selfie", () => {
18
- const state: ScanState = { type: ScanStateType.Initial };
18
+ const state: UseSmileIDScanState = {
19
+ type: UseSmileIDScanStateType.Initial,
20
+ };
19
21
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
20
22
  UseSmileIDOverlayState.INSTRUCTION,
21
23
  );
22
24
  });
23
25
 
24
26
  it("maps the initial state to INSTRUCTION for document", () => {
25
- const state: ScanState = { type: ScanStateType.Initial };
27
+ const state: UseSmileIDScanState = {
28
+ type: UseSmileIDScanStateType.Initial,
29
+ };
26
30
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
27
31
  UseSmileIDOverlayState.INSTRUCTION,
28
32
  );
@@ -32,7 +36,9 @@ describe("mapScanStateToOverlayState", () => {
32
36
  // READY drives the bottom-to-top fill animation on the face oval —
33
37
  // the analyzer signalling "satisfied" means the pipeline is about
34
38
  // to emit captured frames.
35
- const state: ScanState = { type: ScanStateType.Satisfied };
39
+ const state: UseSmileIDScanState = {
40
+ type: UseSmileIDScanStateType.Satisfied,
41
+ };
36
42
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
37
43
  UseSmileIDOverlayState.READY,
38
44
  );
@@ -42,21 +48,27 @@ describe("mapScanStateToOverlayState", () => {
42
48
  // CAPTURING is the yellow-solid state — the analyzer has emitted
43
49
  // its captured artifacts and the orchestrator is about to call
44
50
  // flush().
45
- const state: ScanState = { type: ScanStateType.Finished };
51
+ const state: UseSmileIDScanState = {
52
+ type: UseSmileIDScanStateType.Finished,
53
+ };
46
54
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
47
55
  UseSmileIDOverlayState.CAPTURING,
48
56
  );
49
57
  });
50
58
 
51
59
  it("maps the headTurn state to HEAD_TURN", () => {
52
- const state: ScanState = { type: ScanStateType.HeadTurn };
60
+ const state: UseSmileIDScanState = {
61
+ type: UseSmileIDScanStateType.HeadTurn,
62
+ };
53
63
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
54
64
  UseSmileIDOverlayState.HEAD_TURN,
55
65
  );
56
66
  });
57
67
 
58
68
  it("maps timeout back to IDLE so the overlay returns to the gray pre-capture state", () => {
59
- const state: ScanState = { type: ScanStateType.Timeout };
69
+ const state: UseSmileIDScanState = {
70
+ type: UseSmileIDScanStateType.Timeout,
71
+ };
60
72
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
61
73
  UseSmileIDOverlayState.IDLE,
62
74
  );
@@ -87,8 +99,8 @@ describe("mapScanStateToOverlayState", () => {
87
99
 
88
100
  for (const [feedbackKey, expected] of cases) {
89
101
  it(`maps found+${feedbackKey} to ${expected}`, () => {
90
- const state: ScanState = {
91
- type: ScanStateType.Found,
102
+ const state: UseSmileIDScanState = {
103
+ type: UseSmileIDScanStateType.Found,
92
104
  feedback: feedbackKey,
93
105
  };
94
106
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
@@ -98,7 +110,9 @@ describe("mapScanStateToOverlayState", () => {
98
110
  }
99
111
 
100
112
  it("falls back to FACE_DETECTED when found has no feedback key", () => {
101
- const state: ScanState = { type: ScanStateType.Found };
113
+ const state: UseSmileIDScanState = {
114
+ type: UseSmileIDScanStateType.Found,
115
+ };
102
116
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
103
117
  UseSmileIDOverlayState.FACE_DETECTED,
104
118
  );
@@ -109,8 +123,8 @@ describe("mapScanStateToOverlayState", () => {
109
123
  // si_capture_* key the JS side hasn't been updated for. The
110
124
  // overlay should stay alive (green-solid) rather than throwing
111
125
  // or rendering an empty state.
112
- const state: ScanState = {
113
- type: ScanStateType.Found,
126
+ const state: UseSmileIDScanState = {
127
+ type: UseSmileIDScanStateType.Found,
114
128
  feedback: "si_capture_future_feedback_key",
115
129
  };
116
130
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
@@ -121,8 +135,8 @@ describe("mapScanStateToOverlayState", () => {
121
135
 
122
136
  describe("unsatisfied + reason (selfie)", () => {
123
137
  it("uses the reason key to drive the orange-solid overlay", () => {
124
- const state: ScanState = {
125
- type: ScanStateType.Unsatisfied,
138
+ const state: UseSmileIDScanState = {
139
+ type: UseSmileIDScanStateType.Unsatisfied,
126
140
  reason: "si_capture_too_close",
127
141
  };
128
142
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
@@ -131,7 +145,9 @@ describe("mapScanStateToOverlayState", () => {
131
145
  });
132
146
 
133
147
  it("falls back to FACE_NOT_CENTERED on a missing reason key", () => {
134
- const state: ScanState = { type: ScanStateType.Unsatisfied };
148
+ const state: UseSmileIDScanState = {
149
+ type: UseSmileIDScanStateType.Unsatisfied,
150
+ };
135
151
  expect(mapScanStateToOverlayState(state, CaptureType.selfie)).toBe(
136
152
  UseSmileIDOverlayState.FACE_NOT_CENTERED,
137
153
  );
@@ -140,15 +156,17 @@ describe("mapScanStateToOverlayState", () => {
140
156
 
141
157
  describe("document capture mappings", () => {
142
158
  it("maps found+document key to DOCUMENT_READY by default", () => {
143
- const state: ScanState = { type: ScanStateType.Found };
159
+ const state: UseSmileIDScanState = {
160
+ type: UseSmileIDScanStateType.Found,
161
+ };
144
162
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
145
163
  UseSmileIDOverlayState.DOCUMENT_READY,
146
164
  );
147
165
  });
148
166
 
149
167
  it("maps the si_document_too_close key to DOCUMENT_TOO_CLOSE", () => {
150
- const state: ScanState = {
151
- type: ScanStateType.Found,
168
+ const state: UseSmileIDScanState = {
169
+ type: UseSmileIDScanStateType.Found,
152
170
  feedback: "si_document_too_close",
153
171
  };
154
172
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
@@ -161,8 +179,8 @@ describe("mapScanStateToOverlayState", () => {
161
179
  // si_document_* key or the shared si_capture_* one. Map both
162
180
  // to the document overlay enum so the bottom-feedback bubble
163
181
  // stays accurate either way.
164
- const state: ScanState = {
165
- type: ScanStateType.Found,
182
+ const state: UseSmileIDScanState = {
183
+ type: UseSmileIDScanStateType.Found,
166
184
  feedback: "si_capture_too_close",
167
185
  };
168
186
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
@@ -171,15 +189,17 @@ describe("mapScanStateToOverlayState", () => {
171
189
  });
172
190
 
173
191
  it("maps unsatisfied+missing reason to DOCUMENT_NOT_CENTERED", () => {
174
- const state: ScanState = { type: ScanStateType.Unsatisfied };
192
+ const state: UseSmileIDScanState = {
193
+ type: UseSmileIDScanStateType.Unsatisfied,
194
+ };
175
195
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
176
196
  UseSmileIDOverlayState.DOCUMENT_NOT_CENTERED,
177
197
  );
178
198
  });
179
199
 
180
200
  it("maps si_document_hold_still to DOCUMENT_HOLD_STILL", () => {
181
- const state: ScanState = {
182
- type: ScanStateType.Found,
201
+ const state: UseSmileIDScanState = {
202
+ type: UseSmileIDScanStateType.Found,
183
203
  feedback: "si_document_hold_still",
184
204
  };
185
205
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(
@@ -191,8 +211,8 @@ describe("mapScanStateToOverlayState", () => {
191
211
  // `si_document_center` is the key the native side actually emits
192
212
  // for an off-centre document (the former `si_document_not_centered`
193
213
  // was never emitted).
194
- const state: ScanState = {
195
- type: ScanStateType.Found,
214
+ const state: UseSmileIDScanState = {
215
+ type: UseSmileIDScanStateType.Found,
196
216
  feedback: "si_document_center",
197
217
  };
198
218
  expect(mapScanStateToOverlayState(state, CaptureType.document)).toBe(