@smileid/usesmileid 12.0.2 → 12.1.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 (1270) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +65 -39
  3. package/dist/camera/camera_configuration.d.ts +0 -1
  4. package/dist/camera/camera_configuration.js +1 -2
  5. package/dist/camera/camera_defaults.d.ts +1 -2
  6. package/dist/camera/camera_defaults.js +1 -26
  7. package/dist/camera/camera_lens.d.ts +1 -5
  8. package/dist/camera/camera_lens.js +1 -12
  9. package/dist/camera/camera_permissions.d.ts +2 -7
  10. package/dist/camera/camera_permissions.js +1 -23
  11. package/dist/camera/document_image_pipeline.d.ts +0 -1
  12. package/dist/camera/document_image_pipeline.js +1 -70
  13. package/dist/camera/document_resize_target.d.ts +0 -1
  14. package/dist/camera/document_resize_target.js +1 -17
  15. package/dist/camera/focus_state.d.ts +0 -1
  16. package/dist/camera/focus_state.js +1 -13
  17. package/dist/camera/kamera_config_factory.d.ts +8 -0
  18. package/dist/camera/kamera_config_factory.js +1 -0
  19. package/dist/camera/kamera_error_mapping.d.ts +11 -0
  20. package/dist/camera/kamera_error_mapping.js +1 -0
  21. package/dist/camera/use_kamera_camera_permission.d.ts +8 -0
  22. package/dist/camera/use_kamera_camera_permission.js +1 -0
  23. package/dist/camera/use_kamera_orientation.d.ts +9 -0
  24. package/dist/camera/use_kamera_orientation.js +1 -0
  25. package/dist/camera/use_smile_id_frame_stream.d.ts +0 -1
  26. package/dist/camera/use_smile_id_frame_stream.js +1 -93
  27. package/dist/camera/use_smile_id_kamera_camera_system.d.ts +64 -0
  28. package/dist/camera/use_smile_id_kamera_camera_system.js +1 -0
  29. package/dist/camera/use_smile_id_kamera_preview.d.ts +12 -0
  30. package/dist/camera/use_smile_id_kamera_preview.js +1 -0
  31. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts +0 -1
  32. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js +1 -17
  33. package/dist/core/exception/builder_validation_exception.d.ts +0 -1
  34. package/dist/core/exception/builder_validation_exception.js +1 -37
  35. package/dist/core/exception/capture_validation_exceptions.d.ts +0 -1
  36. package/dist/core/exception/capture_validation_exceptions.js +1 -10
  37. package/dist/core/exception/consent_validation_exceptions.d.ts +0 -1
  38. package/dist/core/exception/consent_validation_exceptions.js +1 -8
  39. package/dist/core/exception/duplicate_screen_type_exception.d.ts +0 -1
  40. package/dist/core/exception/duplicate_screen_type_exception.js +1 -20
  41. package/dist/core/exception/empty_screens_block_exception.d.ts +0 -1
  42. package/dist/core/exception/empty_screens_block_exception.js +1 -17
  43. package/dist/core/exception/flow_exceptions.d.ts +0 -1
  44. package/dist/core/exception/flow_exceptions.js +1 -38
  45. package/dist/core/exception/index.d.ts +3 -2
  46. package/dist/core/exception/index.js +1 -54
  47. package/dist/core/exception/invalid_consent_config_exception.d.ts +0 -1
  48. package/dist/core/exception/invalid_consent_config_exception.js +1 -18
  49. package/dist/core/exception/invalid_consent_information_exception.d.ts +0 -1
  50. package/dist/core/exception/invalid_consent_information_exception.js +1 -19
  51. package/dist/core/exception/invalid_document_capture_config_exception.d.ts +0 -1
  52. package/dist/core/exception/invalid_document_capture_config_exception.js +1 -20
  53. package/dist/core/exception/invalid_field_value_exception.d.ts +0 -1
  54. package/dist/core/exception/invalid_field_value_exception.js +1 -20
  55. package/dist/core/exception/invalid_job_type_screen_config_exception.d.ts +1 -1
  56. package/dist/core/exception/invalid_job_type_screen_config_exception.js +1 -61
  57. package/dist/core/exception/invalid_missing_capture_type_exception.d.ts +0 -1
  58. package/dist/core/exception/invalid_missing_capture_type_exception.js +1 -17
  59. package/dist/core/exception/invalid_screen_order_exception.d.ts +0 -1
  60. package/dist/core/exception/invalid_screen_order_exception.js +1 -22
  61. package/dist/core/exception/invalid_selfie_capture_config_exception.d.ts +0 -1
  62. package/dist/core/exception/invalid_selfie_capture_config_exception.js +1 -20
  63. package/dist/core/exception/issue_severity.d.ts +0 -1
  64. package/dist/core/exception/issue_severity.js +1 -13
  65. package/dist/core/exception/job_validation_exceptions.d.ts +0 -1
  66. package/dist/core/exception/job_validation_exceptions.js +1 -12
  67. package/dist/core/exception/liveness_frame_count_exception.d.ts +0 -1
  68. package/dist/core/exception/liveness_frame_count_exception.js +1 -19
  69. package/dist/core/exception/missing_capture_for_preview_exception.d.ts +0 -1
  70. package/dist/core/exception/missing_capture_for_preview_exception.js +1 -22
  71. package/dist/core/exception/missing_job_type_exception.d.ts +0 -1
  72. package/dist/core/exception/missing_job_type_exception.js +1 -15
  73. package/dist/core/exception/missing_ml_configuration_block_exception.d.ts +0 -1
  74. package/dist/core/exception/missing_ml_configuration_block_exception.js +1 -19
  75. package/dist/core/exception/missing_network_configuration_block_exception.d.ts +0 -1
  76. package/dist/core/exception/missing_network_configuration_block_exception.js +1 -19
  77. package/dist/core/exception/missing_partner_config_exception.d.ts +4 -1
  78. package/dist/core/exception/missing_partner_config_exception.js +1 -35
  79. package/dist/core/exception/missing_required_field_exception.d.ts +0 -1
  80. package/dist/core/exception/missing_required_field_exception.js +1 -18
  81. package/dist/core/exception/screen_config_validation_exceptions.d.ts +0 -1
  82. package/dist/core/exception/screen_config_validation_exceptions.js +1 -11
  83. package/dist/core/exception/unused_job_params_exception.d.ts +16 -0
  84. package/dist/core/exception/unused_job_params_exception.js +1 -0
  85. package/dist/core/exception/use_smile_id_attestation_exception.d.ts +0 -1
  86. package/dist/core/exception/use_smile_id_attestation_exception.js +1 -12
  87. package/dist/core/exception/use_smile_id_builder_exception.d.ts +0 -1
  88. package/dist/core/exception/use_smile_id_builder_exception.js +1 -19
  89. package/dist/core/exception/use_smile_id_camera_exception.d.ts +0 -1
  90. package/dist/core/exception/use_smile_id_camera_exception.js +1 -13
  91. package/dist/core/exception/use_smile_id_camera_surface_exception.d.ts +15 -0
  92. package/dist/core/exception/use_smile_id_camera_surface_exception.js +1 -0
  93. package/dist/core/exception/use_smile_id_error_code.d.ts +8 -1
  94. package/dist/core/exception/use_smile_id_error_code.js +1 -71
  95. package/dist/core/exception/use_smile_id_exception.d.ts +0 -1
  96. package/dist/core/exception/use_smile_id_exception.js +1 -39
  97. package/dist/core/exception/use_smile_id_general_exception.d.ts +0 -1
  98. package/dist/core/exception/use_smile_id_general_exception.js +1 -13
  99. package/dist/core/exception/use_smile_id_network_exception.d.ts +0 -1
  100. package/dist/core/exception/use_smile_id_network_exception.js +1 -203
  101. package/dist/core/exception/use_smile_id_validation_exception.d.ts +0 -1
  102. package/dist/core/exception/use_smile_id_validation_exception.js +1 -13
  103. package/dist/core/models/config.d.ts +8 -1
  104. package/dist/core/models/config.js +1 -2
  105. package/dist/core/models/document_capture_mode.d.ts +0 -1
  106. package/dist/core/models/document_capture_mode.js +1 -47
  107. package/dist/core/models/document_type.d.ts +5 -1
  108. package/dist/core/models/document_type.js +1 -47
  109. package/dist/core/models/flow_step.d.ts +0 -1
  110. package/dist/core/models/flow_step.js +1 -16
  111. package/dist/core/models/global_privacy_control.d.ts +0 -1
  112. package/dist/core/models/global_privacy_control.js +1 -39
  113. package/dist/core/models/head_turn_direction.d.ts +0 -1
  114. package/dist/core/models/head_turn_direction.js +1 -14
  115. package/dist/core/models/job_type.d.ts +0 -1
  116. package/dist/core/models/job_type.js +1 -43
  117. package/dist/core/models/ml_config.d.ts +0 -1
  118. package/dist/core/models/ml_config.js +1 -27
  119. package/dist/core/models/network_config.d.ts +0 -1
  120. package/dist/core/models/network_config.js +1 -41
  121. package/dist/core/models/params.d.ts +0 -1
  122. package/dist/core/models/params.js +1 -5
  123. package/dist/core/models/result.d.ts +0 -1
  124. package/dist/core/models/result.js +1 -17
  125. package/dist/data/api/auth/token_holder.d.ts +0 -1
  126. package/dist/data/api/auth/token_holder.js +1 -67
  127. package/dist/data/api/interceptors/gzip_interceptor.d.ts +0 -1
  128. package/dist/data/api/interceptors/gzip_interceptor.js +1 -29
  129. package/dist/data/api/interceptors/logging_interceptor.d.ts +0 -1
  130. package/dist/data/api/interceptors/logging_interceptor.js +1 -108
  131. package/dist/data/api/interceptors/sensitive_headers.d.ts +0 -1
  132. package/dist/data/api/interceptors/sensitive_headers.js +1 -42
  133. package/dist/data/api/interceptors/smile_auth_interceptor.d.ts +0 -1
  134. package/dist/data/api/interceptors/smile_auth_interceptor.js +1 -57
  135. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +0 -1
  136. package/dist/data/api/interceptors/smile_integrity_interceptor.js +1 -79
  137. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +0 -1
  138. package/dist/data/api/interceptors/smile_request_mac_interceptor.js +1 -77
  139. package/dist/data/api/interceptors/token_refresh_interceptor.d.ts +0 -1
  140. package/dist/data/api/interceptors/token_refresh_interceptor.js +1 -58
  141. package/dist/data/api/smile_id_api.d.ts +0 -1
  142. package/dist/data/api/smile_id_api.js +1 -374
  143. package/dist/data/compression/compressible_asset.d.ts +0 -1
  144. package/dist/data/compression/compressible_asset.js +1 -34
  145. package/dist/data/compression/payload_compression_config.d.ts +0 -1
  146. package/dist/data/compression/payload_compression_config.js +1 -52
  147. package/dist/data/compression/payload_compression_runner.d.ts +8 -1
  148. package/dist/data/compression/payload_compression_runner.js +1 -55
  149. package/dist/data/compression/payload_compressor.d.ts +0 -1
  150. package/dist/data/compression/payload_compressor.js +1 -126
  151. package/dist/data/compression/uri_compressible_asset.d.ts +0 -1
  152. package/dist/data/compression/uri_compressible_asset.js +1 -77
  153. package/dist/data/dsl/builder/cache_config_builder.d.ts +0 -1
  154. package/dist/data/dsl/builder/cache_config_builder.js +1 -24
  155. package/dist/data/dsl/builder/config_builder.d.ts +0 -1
  156. package/dist/data/dsl/builder/config_builder.js +1 -137
  157. package/dist/data/dsl/builder/interceptor_config_builder.d.ts +0 -1
  158. package/dist/data/dsl/builder/interceptor_config_builder.js +1 -71
  159. package/dist/data/dsl/builder/retry_config_builder.d.ts +0 -1
  160. package/dist/data/dsl/builder/retry_config_builder.js +1 -46
  161. package/dist/data/dsl/builder/timeout_config_builder.d.ts +0 -1
  162. package/dist/data/dsl/builder/timeout_config_builder.js +1 -26
  163. package/dist/data/dsl/use_smile_id_network_builder.d.ts +0 -1
  164. package/dist/data/dsl/use_smile_id_network_builder.js +1 -83
  165. package/dist/data/factory/networking_factory.d.ts +0 -1
  166. package/dist/data/factory/networking_factory.js +1 -174
  167. package/dist/data/model/image_dimensions.d.ts +0 -1
  168. package/dist/data/model/image_dimensions.js +1 -2
  169. package/dist/data/model/job_request.d.ts +4 -6
  170. package/dist/data/model/job_request.js +1 -2
  171. package/dist/data/model/job_submission_response.d.ts +0 -1
  172. package/dist/data/model/job_submission_response.js +1 -2
  173. package/dist/data/model/sdk_config.d.ts +0 -1
  174. package/dist/data/model/sdk_config.js +1 -68
  175. package/dist/data/model/sdk_config_capture.d.ts +0 -1
  176. package/dist/data/model/sdk_config_capture.js +1 -69
  177. package/dist/data/model/sdk_config_source.d.ts +0 -1
  178. package/dist/data/model/sdk_config_source.js +1 -24
  179. package/dist/data/model/token_payload.d.ts +0 -1
  180. package/dist/data/model/token_payload.js +1 -132
  181. package/dist/data/model/user_details_payload.d.ts +0 -1
  182. package/dist/data/model/user_details_payload.js +1 -53
  183. package/dist/data/repository/use_smile_id_repository.d.ts +2 -2
  184. package/dist/data/repository/use_smile_id_repository.js +1 -2
  185. package/dist/data/repository/use_smile_id_repository_impl.d.ts +2 -2
  186. package/dist/data/repository/use_smile_id_repository_impl.js +1 -149
  187. package/dist/data/security/request_canonicalizer.d.ts +0 -1
  188. package/dist/data/security/request_canonicalizer.js +1 -132
  189. package/dist/data/security/request_timestamp.d.ts +0 -1
  190. package/dist/data/security/request_timestamp.js +1 -13
  191. package/dist/data/security/security_policy.d.ts +0 -1
  192. package/dist/data/security/security_policy.js +1 -61
  193. package/dist/data/security/signing_crypto.d.ts +0 -1
  194. package/dist/data/security/signing_crypto.js +1 -145
  195. package/dist/data/security/smile_id_crypto_error.d.ts +0 -1
  196. package/dist/data/security/smile_id_crypto_error.js +1 -14
  197. package/dist/data/security/smile_id_crypto_manager.d.ts +0 -1
  198. package/dist/data/security/smile_id_crypto_manager.js +1 -40
  199. package/dist/data/smile_id_urls.d.ts +0 -1
  200. package/dist/data/smile_id_urls.js +1 -14
  201. package/dist/data/util/retry_util.d.ts +0 -1
  202. package/dist/data/util/retry_util.js +1 -74
  203. package/dist/data/util/use_smile_id_token_decoder.d.ts +0 -1
  204. package/dist/data/util/use_smile_id_token_decoder.js +1 -148
  205. package/dist/index.d.ts +3 -6
  206. package/dist/index.js +1 -142
  207. package/dist/l10n/strings_en.d.ts +18 -14
  208. package/dist/l10n/strings_en.js +2 -145
  209. package/dist/l10n/use_smile_id_localizations.d.ts +14 -10
  210. package/dist/l10n/use_smile_id_localizations.js +1 -546
  211. package/dist/l10n/use_smile_id_localizations_provider.d.ts +0 -1
  212. package/dist/l10n/use_smile_id_localizations_provider.js +1 -53
  213. package/dist/metadata/builder_configuration.d.ts +0 -1
  214. package/dist/metadata/builder_configuration.js +1 -35
  215. package/dist/metadata/captured_image_properties.d.ts +0 -1
  216. package/dist/metadata/captured_image_properties.js +1 -11
  217. package/dist/metadata/device_orientation_collector.d.ts +0 -1
  218. package/dist/metadata/device_orientation_collector.js +1 -66
  219. package/dist/metadata/document_image_origin.d.ts +0 -1
  220. package/dist/metadata/document_image_origin.js +1 -19
  221. package/dist/metadata/geolocation.d.ts +0 -1
  222. package/dist/metadata/geolocation.js +1 -40
  223. package/dist/metadata/metadata_configuration_mappers.d.ts +0 -1
  224. package/dist/metadata/metadata_configuration_mappers.js +1 -178
  225. package/dist/metadata/model_configuration.d.ts +0 -1
  226. package/dist/metadata/model_configuration.js +1 -44
  227. package/dist/metadata/optional_native_modules.d.ts +0 -1
  228. package/dist/metadata/optional_native_modules.js +1 -206
  229. package/dist/metadata/use_smile_id_metadata.d.ts +0 -1
  230. package/dist/metadata/use_smile_id_metadata.js +1 -188
  231. package/dist/metadata/use_smile_id_metadata_factory.d.ts +11 -1
  232. package/dist/metadata/use_smile_id_metadata_factory.js +1 -501
  233. package/dist/presentation/assets/si_document_green_book_hero_animation.json +4740 -0
  234. package/dist/presentation/assets/si_document_hero_animation.json +4870 -0
  235. package/dist/presentation/assets/si_document_hero_back_animation.json +2122 -0
  236. package/dist/presentation/assets/si_document_passport_hero_animation.json +14540 -0
  237. package/dist/presentation/assets/si_ess_all_directions_hero_animation.json +5906 -0
  238. package/dist/presentation/assets/si_ess_animation_all_directions.json +5906 -0
  239. package/dist/presentation/assets/si_selfie_hero_animation.json +1468 -0
  240. package/dist/presentation/assets/si_smile_to_capture_animation.json +1412 -0
  241. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +0 -1
  242. package/dist/presentation/assets/svg/document_shimmer_strings.js +1 -14
  243. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +0 -1
  244. package/dist/presentation/assets/svg/instruction_svg_strings.js +1 -32
  245. package/dist/presentation/assets/svg/svg_strings.d.ts +0 -1
  246. package/dist/presentation/assets/svg/svg_strings.js +15 -46
  247. package/dist/presentation/components/face_oval_defaults.d.ts +0 -1
  248. package/dist/presentation/components/face_oval_defaults.js +1 -41
  249. package/dist/presentation/components/helpers/animated_lottie_view.d.ts +0 -1
  250. package/dist/presentation/components/helpers/animated_lottie_view.js +1 -9
  251. package/dist/presentation/components/helpers/capture_instruction_animation_spec.d.ts +2 -1
  252. package/dist/presentation/components/helpers/capture_instruction_animation_spec.js +1 -47
  253. package/dist/presentation/components/helpers/captured_document_image_fit.d.ts +6 -0
  254. package/dist/presentation/components/helpers/captured_document_image_fit.js +1 -0
  255. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -1
  256. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +1 -44
  257. package/dist/presentation/components/helpers/scaled_oval_geometry.d.ts +0 -1
  258. package/dist/presentation/components/helpers/scaled_oval_geometry.js +1 -29
  259. package/dist/presentation/components/icons/index.d.ts +0 -1
  260. package/dist/presentation/components/icons/index.js +1 -117
  261. package/dist/presentation/components/status_indicator_state.d.ts +0 -1
  262. package/dist/presentation/components/status_indicator_state.js +1 -19
  263. package/dist/presentation/components/use_smile_id_attribution.d.ts +2 -1
  264. package/dist/presentation/components/use_smile_id_attribution.js +1 -25
  265. package/dist/presentation/components/use_smile_id_back_button.d.ts +2 -1
  266. package/dist/presentation/components/use_smile_id_back_button.js +1 -38
  267. package/dist/presentation/components/use_smile_id_button.d.ts +0 -1
  268. package/dist/presentation/components/use_smile_id_button.js +1 -69
  269. package/dist/presentation/components/use_smile_id_capture_content.d.ts +0 -1
  270. package/dist/presentation/components/use_smile_id_capture_content.js +1 -137
  271. package/dist/presentation/components/use_smile_id_capture_instruction_animation.d.ts +3 -4
  272. package/dist/presentation/components/use_smile_id_capture_instruction_animation.js +1 -50
  273. package/dist/presentation/components/use_smile_id_capture_spinner.d.ts +0 -1
  274. package/dist/presentation/components/use_smile_id_capture_spinner.js +1 -30
  275. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +4 -5
  276. package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -39
  277. package/dist/presentation/components/use_smile_id_captured_image_oval.d.ts +0 -1
  278. package/dist/presentation/components/use_smile_id_captured_image_oval.js +1 -63
  279. package/dist/presentation/components/use_smile_id_card_surface.d.ts +0 -1
  280. package/dist/presentation/components/use_smile_id_card_surface.js +1 -37
  281. package/dist/presentation/components/use_smile_id_confirmation_buttons.d.ts +0 -1
  282. package/dist/presentation/components/use_smile_id_confirmation_buttons.js +1 -48
  283. package/dist/presentation/components/use_smile_id_consent_row.d.ts +0 -1
  284. package/dist/presentation/components/use_smile_id_consent_row.js +1 -32
  285. package/dist/presentation/components/use_smile_id_content_card.d.ts +0 -1
  286. package/dist/presentation/components/use_smile_id_content_card.js +1 -41
  287. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +0 -1
  288. package/dist/presentation/components/use_smile_id_document_capture_controls.js +1 -120
  289. package/dist/presentation/components/use_smile_id_document_overlay.d.ts +0 -1
  290. package/dist/presentation/components/use_smile_id_document_overlay.js +1 -158
  291. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +0 -1
  292. package/dist/presentation/components/use_smile_id_document_shimmer.js +1 -23
  293. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts +0 -1
  294. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +1 -77
  295. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_direction_animation.d.ts +0 -1
  296. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_direction_animation.js +1 -21
  297. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_full_animation.d.ts +0 -1
  298. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_full_animation.js +1 -14
  299. package/dist/presentation/components/use_smile_id_expandable_icon.d.ts +0 -1
  300. package/dist/presentation/components/use_smile_id_expandable_icon.js +1 -55
  301. package/dist/presentation/components/use_smile_id_face_oval_image.d.ts +0 -1
  302. package/dist/presentation/components/use_smile_id_face_oval_image.js +1 -41
  303. package/dist/presentation/components/use_smile_id_face_overlay.d.ts +0 -1
  304. package/dist/presentation/components/use_smile_id_face_overlay.js +1 -194
  305. package/dist/presentation/components/use_smile_id_failed_content.d.ts +0 -1
  306. package/dist/presentation/components/use_smile_id_failed_content.js +1 -44
  307. package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts +0 -1
  308. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +1 -179
  309. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +0 -1
  310. package/dist/presentation/components/use_smile_id_instructions_hero.js +1 -164
  311. package/dist/presentation/components/use_smile_id_learn_more_content.d.ts +0 -1
  312. package/dist/presentation/components/use_smile_id_learn_more_content.js +1 -70
  313. package/dist/presentation/components/use_smile_id_loading_content.d.ts +0 -1
  314. package/dist/presentation/components/use_smile_id_loading_content.js +1 -31
  315. package/dist/presentation/components/use_smile_id_loading_indicator.d.ts +0 -1
  316. package/dist/presentation/components/use_smile_id_loading_indicator.js +1 -48
  317. package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts +0 -1
  318. package/dist/presentation/components/use_smile_id_oval_border_palette.js +1 -49
  319. package/dist/presentation/components/use_smile_id_partner_icon.d.ts +3 -1
  320. package/dist/presentation/components/use_smile_id_partner_icon.js +1 -34
  321. package/dist/presentation/components/use_smile_id_processing_center_indicator.d.ts +0 -1
  322. package/dist/presentation/components/use_smile_id_processing_center_indicator.js +1 -44
  323. package/dist/presentation/components/use_smile_id_rounded_checkbox.d.ts +0 -1
  324. package/dist/presentation/components/use_smile_id_rounded_checkbox.js +1 -41
  325. package/dist/presentation/components/use_smile_id_status_indicator.d.ts +0 -1
  326. package/dist/presentation/components/use_smile_id_status_indicator.js +1 -22
  327. package/dist/presentation/components/use_smile_id_success_content.d.ts +0 -1
  328. package/dist/presentation/components/use_smile_id_success_content.js +1 -39
  329. package/dist/presentation/flow/analytics/use_smile_id_analytics_event.d.ts +0 -1
  330. package/dist/presentation/flow/analytics/use_smile_id_analytics_event.js +1 -71
  331. package/dist/presentation/flow/config/attribution_resolver.d.ts +17 -0
  332. package/dist/presentation/flow/config/attribution_resolver.js +1 -0
  333. package/dist/presentation/flow/config/flow_configuration.d.ts +0 -1
  334. package/dist/presentation/flow/config/flow_configuration.js +1 -2
  335. package/dist/presentation/flow/dsl/builder/config_builder.d.ts +5 -1
  336. package/dist/presentation/flow/dsl/builder/config_builder.js +1 -50
  337. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +0 -1
  338. package/dist/presentation/flow/dsl/builder/ml_builder.js +1 -164
  339. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +0 -21
  340. package/dist/presentation/flow/dsl/builder/screens_builder.js +1 -215
  341. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +0 -1
  342. package/dist/presentation/flow/dsl/builder/theme_builder.js +1 -83
  343. package/dist/presentation/flow/dsl/flow_build_result.d.ts +0 -1
  344. package/dist/presentation/flow/dsl/flow_build_result.js +1 -2
  345. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +0 -1
  346. package/dist/presentation/flow/dsl/use_smile_id_builder.js +1 -49
  347. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +0 -1
  348. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +1 -356
  349. package/dist/presentation/flow/flow_navigation_context.d.ts +0 -1
  350. package/dist/presentation/flow/flow_navigation_context.js +1 -34
  351. package/dist/presentation/flow/flow_navigation_manager.d.ts +2 -1
  352. package/dist/presentation/flow/flow_navigation_manager.js +1 -935
  353. package/dist/presentation/flow/graph/screen_renderer.d.ts +0 -1
  354. package/dist/presentation/flow/graph/screen_renderer.js +1 -31
  355. package/dist/presentation/flow/graph/screen_transition.d.ts +8 -0
  356. package/dist/presentation/flow/graph/screen_transition.js +1 -0
  357. package/dist/presentation/flow/job_submission_state.d.ts +0 -1
  358. package/dist/presentation/flow/job_submission_state.js +1 -2
  359. package/dist/presentation/flow/model/instruction_guideline.d.ts +0 -1
  360. package/dist/presentation/flow/model/instruction_guideline.js +1 -2
  361. package/dist/presentation/flow/model/instructions_defaults.d.ts +0 -1
  362. package/dist/presentation/flow/model/instructions_defaults.js +1 -130
  363. package/dist/presentation/flow/screen/helpers/analyzer_lifecycle.d.ts +18 -0
  364. package/dist/presentation/flow/screen/helpers/analyzer_lifecycle.js +1 -0
  365. package/dist/presentation/flow/screen/helpers/face_session_config.d.ts +0 -1
  366. package/dist/presentation/flow/screen/helpers/face_session_config.js +1 -65
  367. package/dist/presentation/flow/screen/helpers/failure_message.d.ts +3 -0
  368. package/dist/presentation/flow/screen/helpers/failure_message.js +1 -0
  369. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts +0 -1
  370. package/dist/presentation/flow/screen/orchestrated_capture_screen.js +1 -237
  371. package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts +0 -1
  372. package/dist/presentation/flow/screen/orchestrated_consent_screen.js +1 -49
  373. package/dist/presentation/flow/screen/orchestrated_instructions_screen.d.ts +0 -1
  374. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -47
  375. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts +0 -1
  376. package/dist/presentation/flow/screen/orchestrated_preview_screen.js +1 -34
  377. package/dist/presentation/flow/screen/orchestrated_processing_screen.d.ts +0 -1
  378. package/dist/presentation/flow/screen/orchestrated_processing_screen.js +1 -79
  379. package/dist/presentation/flow/screen/use_smile_id_orchestrated_screen_host.d.ts +0 -1
  380. package/dist/presentation/flow/screen/use_smile_id_orchestrated_screen_host.js +1 -22
  381. package/dist/presentation/flow/screen/validation_error_screen.d.ts +0 -1
  382. package/dist/presentation/flow/screen/validation_error_screen.js +1 -87
  383. package/dist/presentation/flow/use_smile_id_flow.d.ts +1 -2
  384. package/dist/presentation/flow/use_smile_id_flow.js +1 -297
  385. package/dist/presentation/flow/validation/flow_validator.d.ts +2 -13
  386. package/dist/presentation/flow/validation/flow_validator.js +1 -300
  387. package/dist/presentation/flow/validation/job_type_validator.d.ts +3 -1
  388. package/dist/presentation/flow/validation/job_type_validator.js +1 -459
  389. package/dist/presentation/flow/validation/user_details_validator.d.ts +0 -1
  390. package/dist/presentation/flow/validation/user_details_validator.js +1 -40
  391. package/dist/presentation/flow/validation/validation_state.d.ts +3 -4
  392. package/dist/presentation/flow/validation/validation_state.js +1 -23
  393. package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts +0 -1
  394. package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -135
  395. package/dist/presentation/screen/helpers/capture_ui_state.d.ts +0 -1
  396. package/dist/presentation/screen/helpers/capture_ui_state.js +1 -179
  397. package/dist/presentation/screen/helpers/consent_screen_helpers.d.ts +0 -1
  398. package/dist/presentation/screen/helpers/consent_screen_helpers.js +1 -68
  399. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts +0 -1
  400. package/dist/presentation/screen/helpers/ess_turn_haptics.js +1 -53
  401. package/dist/presentation/screen/helpers/feedback_debouncer.d.ts +0 -1
  402. package/dist/presentation/screen/helpers/feedback_debouncer.js +1 -77
  403. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +0 -3
  404. package/dist/presentation/screen/helpers/instructions_screen_helpers.js +1 -54
  405. package/dist/presentation/screen/helpers/preview_screen_helpers.d.ts +0 -1
  406. package/dist/presentation/screen/helpers/preview_screen_helpers.js +1 -27
  407. package/dist/presentation/screen/helpers/processing_screen_helpers.d.ts +0 -1
  408. package/dist/presentation/screen/helpers/processing_screen_helpers.js +1 -12
  409. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts +7 -1
  410. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +1 -107
  411. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts +0 -1
  412. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js +1 -79
  413. package/dist/presentation/screen/helpers/use_debounced_feedback_key.d.ts +0 -1
  414. package/dist/presentation/screen/helpers/use_debounced_feedback_key.js +1 -44
  415. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +8 -11
  416. package/dist/presentation/screen/use_smile_id_capture_screen.js +1 -640
  417. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts +0 -1
  418. package/dist/presentation/screen/use_smile_id_consent_screen.js +1 -176
  419. package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts +6 -1
  420. package/dist/presentation/screen/use_smile_id_document_back_instructions.js +1 -43
  421. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +0 -1
  422. package/dist/presentation/screen/use_smile_id_document_preview_screen.js +1 -69
  423. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +0 -1
  424. package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -66
  425. package/dist/presentation/screen/use_smile_id_permission_screen.d.ts +0 -1
  426. package/dist/presentation/screen/use_smile_id_permission_screen.js +1 -28
  427. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +0 -1
  428. package/dist/presentation/screen/use_smile_id_preview_screen.js +1 -71
  429. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +0 -1
  430. package/dist/presentation/screen/use_smile_id_processing_screen.js +1 -85
  431. package/dist/presentation/state/processing_state.d.ts +0 -1
  432. package/dist/presentation/state/processing_state.js +1 -2
  433. package/dist/presentation/state/use_smile_id_overlay_state.d.ts +1 -3
  434. package/dist/presentation/state/use_smile_id_overlay_state.js +1 -56
  435. package/dist/presentation/theme/theme.d.ts +0 -1
  436. package/dist/presentation/theme/theme.js +1 -226
  437. package/dist/presentation/theme/theme_context.d.ts +0 -1
  438. package/dist/presentation/theme/theme_context.js +1 -31
  439. package/dist/presentation/theme/use_smile_id_motion.d.ts +0 -1
  440. package/dist/presentation/theme/use_smile_id_motion.js +1 -13
  441. package/dist/presentation/theme/use_use_smile_id_fonts.d.ts +0 -1
  442. package/dist/presentation/theme/use_use_smile_id_fonts.js +1 -64
  443. package/dist/presentation/utils/force_max_brightness.d.ts +0 -1
  444. package/dist/presentation/utils/force_max_brightness.js +1 -105
  445. package/dist/presentation/utils/locale_utils.d.ts +0 -1
  446. package/dist/presentation/utils/locale_utils.js +1 -74
  447. package/dist/presentation/utils/use_reduced_motion.d.ts +0 -1
  448. package/dist/presentation/utils/use_reduced_motion.js +1 -24
  449. package/dist/testing/fake_face_analyzer.d.ts +6 -1
  450. package/dist/testing/fake_face_analyzer.js +1 -52
  451. package/dist/testing/index.d.ts +0 -1
  452. package/dist/testing/index.js +1 -7
  453. package/dist/testing/scenario_expectations.d.ts +0 -1
  454. package/dist/testing/scenario_expectations.js +1 -65
  455. package/dist/testing/scenario_loader.d.ts +0 -1
  456. package/dist/testing/scenario_loader.js +1 -64
  457. package/dist/testing/scripted_scan_results.d.ts +3 -2
  458. package/dist/testing/scripted_scan_results.js +1 -52
  459. package/package.json +28 -30
  460. package/dist/camera/camera_configuration.d.ts.map +0 -1
  461. package/dist/camera/camera_configuration.js.map +0 -1
  462. package/dist/camera/camera_defaults.d.ts.map +0 -1
  463. package/dist/camera/camera_defaults.js.map +0 -1
  464. package/dist/camera/camera_lens.d.ts.map +0 -1
  465. package/dist/camera/camera_lens.js.map +0 -1
  466. package/dist/camera/camera_permissions.d.ts.map +0 -1
  467. package/dist/camera/camera_permissions.js.map +0 -1
  468. package/dist/camera/camera_preview_image.d.ts +0 -18
  469. package/dist/camera/camera_preview_image.d.ts.map +0 -1
  470. package/dist/camera/camera_preview_image.js +0 -8
  471. package/dist/camera/camera_preview_image.js.map +0 -1
  472. package/dist/camera/document_image_pipeline.d.ts.map +0 -1
  473. package/dist/camera/document_image_pipeline.js.map +0 -1
  474. package/dist/camera/document_resize_target.d.ts.map +0 -1
  475. package/dist/camera/document_resize_target.js.map +0 -1
  476. package/dist/camera/focus_state.d.ts.map +0 -1
  477. package/dist/camera/focus_state.js.map +0 -1
  478. package/dist/camera/orientation_degrees.d.ts +0 -10
  479. package/dist/camera/orientation_degrees.d.ts.map +0 -1
  480. package/dist/camera/orientation_degrees.js +0 -20
  481. package/dist/camera/orientation_degrees.js.map +0 -1
  482. package/dist/camera/use_smile_id_camera_preview.d.ts +0 -64
  483. package/dist/camera/use_smile_id_camera_preview.d.ts.map +0 -1
  484. package/dist/camera/use_smile_id_camera_preview.js +0 -141
  485. package/dist/camera/use_smile_id_camera_preview.js.map +0 -1
  486. package/dist/camera/use_smile_id_camera_system.d.ts +0 -97
  487. package/dist/camera/use_smile_id_camera_system.d.ts.map +0 -1
  488. package/dist/camera/use_smile_id_camera_system.js +0 -185
  489. package/dist/camera/use_smile_id_camera_system.js.map +0 -1
  490. package/dist/camera/use_smile_id_frame_stream.d.ts.map +0 -1
  491. package/dist/camera/use_smile_id_frame_stream.js.map +0 -1
  492. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts.map +0 -1
  493. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js.map +0 -1
  494. package/dist/core/exception/builder_validation_exception.d.ts.map +0 -1
  495. package/dist/core/exception/builder_validation_exception.js.map +0 -1
  496. package/dist/core/exception/capture_validation_exceptions.d.ts.map +0 -1
  497. package/dist/core/exception/capture_validation_exceptions.js.map +0 -1
  498. package/dist/core/exception/consent_validation_exceptions.d.ts.map +0 -1
  499. package/dist/core/exception/consent_validation_exceptions.js.map +0 -1
  500. package/dist/core/exception/duplicate_screen_type_exception.d.ts.map +0 -1
  501. package/dist/core/exception/duplicate_screen_type_exception.js.map +0 -1
  502. package/dist/core/exception/empty_screens_block_exception.d.ts.map +0 -1
  503. package/dist/core/exception/empty_screens_block_exception.js.map +0 -1
  504. package/dist/core/exception/flow_exceptions.d.ts.map +0 -1
  505. package/dist/core/exception/flow_exceptions.js.map +0 -1
  506. package/dist/core/exception/index.d.ts.map +0 -1
  507. package/dist/core/exception/index.js.map +0 -1
  508. package/dist/core/exception/invalid_consent_config_exception.d.ts.map +0 -1
  509. package/dist/core/exception/invalid_consent_config_exception.js.map +0 -1
  510. package/dist/core/exception/invalid_consent_information_exception.d.ts.map +0 -1
  511. package/dist/core/exception/invalid_consent_information_exception.js.map +0 -1
  512. package/dist/core/exception/invalid_document_capture_config_exception.d.ts.map +0 -1
  513. package/dist/core/exception/invalid_document_capture_config_exception.js.map +0 -1
  514. package/dist/core/exception/invalid_field_value_exception.d.ts.map +0 -1
  515. package/dist/core/exception/invalid_field_value_exception.js.map +0 -1
  516. package/dist/core/exception/invalid_job_type_screen_config_exception.d.ts.map +0 -1
  517. package/dist/core/exception/invalid_job_type_screen_config_exception.js.map +0 -1
  518. package/dist/core/exception/invalid_missing_capture_type_exception.d.ts.map +0 -1
  519. package/dist/core/exception/invalid_missing_capture_type_exception.js.map +0 -1
  520. package/dist/core/exception/invalid_screen_order_exception.d.ts.map +0 -1
  521. package/dist/core/exception/invalid_screen_order_exception.js.map +0 -1
  522. package/dist/core/exception/invalid_selfie_capture_config_exception.d.ts.map +0 -1
  523. package/dist/core/exception/invalid_selfie_capture_config_exception.js.map +0 -1
  524. package/dist/core/exception/issue_severity.d.ts.map +0 -1
  525. package/dist/core/exception/issue_severity.js.map +0 -1
  526. package/dist/core/exception/job_validation_exceptions.d.ts.map +0 -1
  527. package/dist/core/exception/job_validation_exceptions.js.map +0 -1
  528. package/dist/core/exception/liveness_frame_count_exception.d.ts.map +0 -1
  529. package/dist/core/exception/liveness_frame_count_exception.js.map +0 -1
  530. package/dist/core/exception/missing_capture_for_preview_exception.d.ts.map +0 -1
  531. package/dist/core/exception/missing_capture_for_preview_exception.js.map +0 -1
  532. package/dist/core/exception/missing_job_type_exception.d.ts.map +0 -1
  533. package/dist/core/exception/missing_job_type_exception.js.map +0 -1
  534. package/dist/core/exception/missing_ml_configuration_block_exception.d.ts.map +0 -1
  535. package/dist/core/exception/missing_ml_configuration_block_exception.js.map +0 -1
  536. package/dist/core/exception/missing_network_configuration_block_exception.d.ts.map +0 -1
  537. package/dist/core/exception/missing_network_configuration_block_exception.js.map +0 -1
  538. package/dist/core/exception/missing_partner_config_exception.d.ts.map +0 -1
  539. package/dist/core/exception/missing_partner_config_exception.js.map +0 -1
  540. package/dist/core/exception/missing_required_field_exception.d.ts.map +0 -1
  541. package/dist/core/exception/missing_required_field_exception.js.map +0 -1
  542. package/dist/core/exception/screen_config_validation_exceptions.d.ts.map +0 -1
  543. package/dist/core/exception/screen_config_validation_exceptions.js.map +0 -1
  544. package/dist/core/exception/use_smile_id_attestation_exception.d.ts.map +0 -1
  545. package/dist/core/exception/use_smile_id_attestation_exception.js.map +0 -1
  546. package/dist/core/exception/use_smile_id_builder_exception.d.ts.map +0 -1
  547. package/dist/core/exception/use_smile_id_builder_exception.js.map +0 -1
  548. package/dist/core/exception/use_smile_id_camera_exception.d.ts.map +0 -1
  549. package/dist/core/exception/use_smile_id_camera_exception.js.map +0 -1
  550. package/dist/core/exception/use_smile_id_error_code.d.ts.map +0 -1
  551. package/dist/core/exception/use_smile_id_error_code.js.map +0 -1
  552. package/dist/core/exception/use_smile_id_exception.d.ts.map +0 -1
  553. package/dist/core/exception/use_smile_id_exception.js.map +0 -1
  554. package/dist/core/exception/use_smile_id_general_exception.d.ts.map +0 -1
  555. package/dist/core/exception/use_smile_id_general_exception.js.map +0 -1
  556. package/dist/core/exception/use_smile_id_network_exception.d.ts.map +0 -1
  557. package/dist/core/exception/use_smile_id_network_exception.js.map +0 -1
  558. package/dist/core/exception/use_smile_id_validation_exception.d.ts.map +0 -1
  559. package/dist/core/exception/use_smile_id_validation_exception.js.map +0 -1
  560. package/dist/core/models/config.d.ts.map +0 -1
  561. package/dist/core/models/config.js.map +0 -1
  562. package/dist/core/models/document_capture_mode.d.ts.map +0 -1
  563. package/dist/core/models/document_capture_mode.js.map +0 -1
  564. package/dist/core/models/document_type.d.ts.map +0 -1
  565. package/dist/core/models/document_type.js.map +0 -1
  566. package/dist/core/models/flow_step.d.ts.map +0 -1
  567. package/dist/core/models/flow_step.js.map +0 -1
  568. package/dist/core/models/global_privacy_control.d.ts.map +0 -1
  569. package/dist/core/models/global_privacy_control.js.map +0 -1
  570. package/dist/core/models/head_turn_direction.d.ts.map +0 -1
  571. package/dist/core/models/head_turn_direction.js.map +0 -1
  572. package/dist/core/models/job_type.d.ts.map +0 -1
  573. package/dist/core/models/job_type.js.map +0 -1
  574. package/dist/core/models/ml_config.d.ts.map +0 -1
  575. package/dist/core/models/ml_config.js.map +0 -1
  576. package/dist/core/models/network_config.d.ts.map +0 -1
  577. package/dist/core/models/network_config.js.map +0 -1
  578. package/dist/core/models/params.d.ts.map +0 -1
  579. package/dist/core/models/params.js.map +0 -1
  580. package/dist/core/models/result.d.ts.map +0 -1
  581. package/dist/core/models/result.js.map +0 -1
  582. package/dist/data/api/auth/token_holder.d.ts.map +0 -1
  583. package/dist/data/api/auth/token_holder.js.map +0 -1
  584. package/dist/data/api/interceptors/gzip_interceptor.d.ts.map +0 -1
  585. package/dist/data/api/interceptors/gzip_interceptor.js.map +0 -1
  586. package/dist/data/api/interceptors/logging_interceptor.d.ts.map +0 -1
  587. package/dist/data/api/interceptors/logging_interceptor.js.map +0 -1
  588. package/dist/data/api/interceptors/sensitive_headers.d.ts.map +0 -1
  589. package/dist/data/api/interceptors/sensitive_headers.js.map +0 -1
  590. package/dist/data/api/interceptors/smile_auth_interceptor.d.ts.map +0 -1
  591. package/dist/data/api/interceptors/smile_auth_interceptor.js.map +0 -1
  592. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +0 -1
  593. package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +0 -1
  594. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +0 -1
  595. package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +0 -1
  596. package/dist/data/api/interceptors/token_refresh_interceptor.d.ts.map +0 -1
  597. package/dist/data/api/interceptors/token_refresh_interceptor.js.map +0 -1
  598. package/dist/data/api/smile_id_api.d.ts.map +0 -1
  599. package/dist/data/api/smile_id_api.js.map +0 -1
  600. package/dist/data/compression/compressible_asset.d.ts.map +0 -1
  601. package/dist/data/compression/compressible_asset.js.map +0 -1
  602. package/dist/data/compression/payload_compression_config.d.ts.map +0 -1
  603. package/dist/data/compression/payload_compression_config.js.map +0 -1
  604. package/dist/data/compression/payload_compression_runner.d.ts.map +0 -1
  605. package/dist/data/compression/payload_compression_runner.js.map +0 -1
  606. package/dist/data/compression/payload_compressor.d.ts.map +0 -1
  607. package/dist/data/compression/payload_compressor.js.map +0 -1
  608. package/dist/data/compression/uri_compressible_asset.d.ts.map +0 -1
  609. package/dist/data/compression/uri_compressible_asset.js.map +0 -1
  610. package/dist/data/dsl/builder/cache_config_builder.d.ts.map +0 -1
  611. package/dist/data/dsl/builder/cache_config_builder.js.map +0 -1
  612. package/dist/data/dsl/builder/config_builder.d.ts.map +0 -1
  613. package/dist/data/dsl/builder/config_builder.js.map +0 -1
  614. package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +0 -1
  615. package/dist/data/dsl/builder/interceptor_config_builder.js.map +0 -1
  616. package/dist/data/dsl/builder/retry_config_builder.d.ts.map +0 -1
  617. package/dist/data/dsl/builder/retry_config_builder.js.map +0 -1
  618. package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +0 -1
  619. package/dist/data/dsl/builder/timeout_config_builder.js.map +0 -1
  620. package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +0 -1
  621. package/dist/data/dsl/use_smile_id_network_builder.js.map +0 -1
  622. package/dist/data/factory/networking_factory.d.ts.map +0 -1
  623. package/dist/data/factory/networking_factory.js.map +0 -1
  624. package/dist/data/model/image_dimensions.d.ts.map +0 -1
  625. package/dist/data/model/image_dimensions.js.map +0 -1
  626. package/dist/data/model/job_request.d.ts.map +0 -1
  627. package/dist/data/model/job_request.js.map +0 -1
  628. package/dist/data/model/job_submission_response.d.ts.map +0 -1
  629. package/dist/data/model/job_submission_response.js.map +0 -1
  630. package/dist/data/model/sdk_config.d.ts.map +0 -1
  631. package/dist/data/model/sdk_config.js.map +0 -1
  632. package/dist/data/model/sdk_config_capture.d.ts.map +0 -1
  633. package/dist/data/model/sdk_config_capture.js.map +0 -1
  634. package/dist/data/model/sdk_config_source.d.ts.map +0 -1
  635. package/dist/data/model/sdk_config_source.js.map +0 -1
  636. package/dist/data/model/token_payload.d.ts.map +0 -1
  637. package/dist/data/model/token_payload.js.map +0 -1
  638. package/dist/data/model/user_details_payload.d.ts.map +0 -1
  639. package/dist/data/model/user_details_payload.js.map +0 -1
  640. package/dist/data/repository/use_smile_id_repository.d.ts.map +0 -1
  641. package/dist/data/repository/use_smile_id_repository.js.map +0 -1
  642. package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +0 -1
  643. package/dist/data/repository/use_smile_id_repository_impl.js.map +0 -1
  644. package/dist/data/security/request_canonicalizer.d.ts.map +0 -1
  645. package/dist/data/security/request_canonicalizer.js.map +0 -1
  646. package/dist/data/security/request_timestamp.d.ts.map +0 -1
  647. package/dist/data/security/request_timestamp.js.map +0 -1
  648. package/dist/data/security/security_policy.d.ts.map +0 -1
  649. package/dist/data/security/security_policy.js.map +0 -1
  650. package/dist/data/security/signing_crypto.d.ts.map +0 -1
  651. package/dist/data/security/signing_crypto.js.map +0 -1
  652. package/dist/data/security/smile_id_crypto_error.d.ts.map +0 -1
  653. package/dist/data/security/smile_id_crypto_error.js.map +0 -1
  654. package/dist/data/security/smile_id_crypto_manager.d.ts.map +0 -1
  655. package/dist/data/security/smile_id_crypto_manager.js.map +0 -1
  656. package/dist/data/smile_id_urls.d.ts.map +0 -1
  657. package/dist/data/smile_id_urls.js.map +0 -1
  658. package/dist/data/util/retry_util.d.ts.map +0 -1
  659. package/dist/data/util/retry_util.js.map +0 -1
  660. package/dist/data/util/use_smile_id_token_decoder.d.ts.map +0 -1
  661. package/dist/data/util/use_smile_id_token_decoder.js.map +0 -1
  662. package/dist/index.d.ts.map +0 -1
  663. package/dist/index.js.map +0 -1
  664. package/dist/l10n/strings_en.d.ts.map +0 -1
  665. package/dist/l10n/strings_en.js.map +0 -1
  666. package/dist/l10n/use_smile_id_localizations.d.ts.map +0 -1
  667. package/dist/l10n/use_smile_id_localizations.js.map +0 -1
  668. package/dist/l10n/use_smile_id_localizations_provider.d.ts.map +0 -1
  669. package/dist/l10n/use_smile_id_localizations_provider.js.map +0 -1
  670. package/dist/metadata/builder_configuration.d.ts.map +0 -1
  671. package/dist/metadata/builder_configuration.js.map +0 -1
  672. package/dist/metadata/captured_image_properties.d.ts.map +0 -1
  673. package/dist/metadata/captured_image_properties.js.map +0 -1
  674. package/dist/metadata/device_orientation_collector.d.ts.map +0 -1
  675. package/dist/metadata/device_orientation_collector.js.map +0 -1
  676. package/dist/metadata/document_image_origin.d.ts.map +0 -1
  677. package/dist/metadata/document_image_origin.js.map +0 -1
  678. package/dist/metadata/geolocation.d.ts.map +0 -1
  679. package/dist/metadata/geolocation.js.map +0 -1
  680. package/dist/metadata/metadata_configuration_mappers.d.ts.map +0 -1
  681. package/dist/metadata/metadata_configuration_mappers.js.map +0 -1
  682. package/dist/metadata/model_configuration.d.ts.map +0 -1
  683. package/dist/metadata/model_configuration.js.map +0 -1
  684. package/dist/metadata/optional_native_modules.d.ts.map +0 -1
  685. package/dist/metadata/optional_native_modules.js.map +0 -1
  686. package/dist/metadata/use_smile_id_metadata.d.ts.map +0 -1
  687. package/dist/metadata/use_smile_id_metadata.js.map +0 -1
  688. package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +0 -1
  689. package/dist/metadata/use_smile_id_metadata_factory.js.map +0 -1
  690. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +0 -1
  691. package/dist/presentation/assets/svg/document_shimmer_strings.js.map +0 -1
  692. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +0 -1
  693. package/dist/presentation/assets/svg/instruction_svg_strings.js.map +0 -1
  694. package/dist/presentation/assets/svg/svg_strings.d.ts.map +0 -1
  695. package/dist/presentation/assets/svg/svg_strings.js.map +0 -1
  696. package/dist/presentation/components/face_oval_defaults.d.ts.map +0 -1
  697. package/dist/presentation/components/face_oval_defaults.js.map +0 -1
  698. package/dist/presentation/components/helpers/animated_lottie_view.d.ts.map +0 -1
  699. package/dist/presentation/components/helpers/animated_lottie_view.js.map +0 -1
  700. package/dist/presentation/components/helpers/capture_instruction_animation_spec.d.ts.map +0 -1
  701. package/dist/presentation/components/helpers/capture_instruction_animation_spec.js.map +0 -1
  702. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +0 -1
  703. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +0 -1
  704. package/dist/presentation/components/helpers/scaled_oval_geometry.d.ts.map +0 -1
  705. package/dist/presentation/components/helpers/scaled_oval_geometry.js.map +0 -1
  706. package/dist/presentation/components/icons/index.d.ts.map +0 -1
  707. package/dist/presentation/components/icons/index.js.map +0 -1
  708. package/dist/presentation/components/status_indicator_state.d.ts.map +0 -1
  709. package/dist/presentation/components/status_indicator_state.js.map +0 -1
  710. package/dist/presentation/components/use_smile_id_attribution.d.ts.map +0 -1
  711. package/dist/presentation/components/use_smile_id_attribution.js.map +0 -1
  712. package/dist/presentation/components/use_smile_id_back_button.d.ts.map +0 -1
  713. package/dist/presentation/components/use_smile_id_back_button.js.map +0 -1
  714. package/dist/presentation/components/use_smile_id_button.d.ts.map +0 -1
  715. package/dist/presentation/components/use_smile_id_button.js.map +0 -1
  716. package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +0 -1
  717. package/dist/presentation/components/use_smile_id_capture_content.js.map +0 -1
  718. package/dist/presentation/components/use_smile_id_capture_instruction_animation.d.ts.map +0 -1
  719. package/dist/presentation/components/use_smile_id_capture_instruction_animation.js.map +0 -1
  720. package/dist/presentation/components/use_smile_id_capture_spinner.d.ts.map +0 -1
  721. package/dist/presentation/components/use_smile_id_capture_spinner.js.map +0 -1
  722. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +0 -1
  723. package/dist/presentation/components/use_smile_id_captured_document_image.js.map +0 -1
  724. package/dist/presentation/components/use_smile_id_captured_image_oval.d.ts.map +0 -1
  725. package/dist/presentation/components/use_smile_id_captured_image_oval.js.map +0 -1
  726. package/dist/presentation/components/use_smile_id_card_surface.d.ts.map +0 -1
  727. package/dist/presentation/components/use_smile_id_card_surface.js.map +0 -1
  728. package/dist/presentation/components/use_smile_id_confirmation_buttons.d.ts.map +0 -1
  729. package/dist/presentation/components/use_smile_id_confirmation_buttons.js.map +0 -1
  730. package/dist/presentation/components/use_smile_id_consent_row.d.ts.map +0 -1
  731. package/dist/presentation/components/use_smile_id_consent_row.js.map +0 -1
  732. package/dist/presentation/components/use_smile_id_content_card.d.ts.map +0 -1
  733. package/dist/presentation/components/use_smile_id_content_card.js.map +0 -1
  734. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +0 -1
  735. package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +0 -1
  736. package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +0 -1
  737. package/dist/presentation/components/use_smile_id_document_overlay.js.map +0 -1
  738. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +0 -1
  739. package/dist/presentation/components/use_smile_id_document_shimmer.js.map +0 -1
  740. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +0 -1
  741. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +0 -1
  742. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_direction_animation.d.ts.map +0 -1
  743. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_direction_animation.js.map +0 -1
  744. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_full_animation.d.ts.map +0 -1
  745. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_full_animation.js.map +0 -1
  746. package/dist/presentation/components/use_smile_id_expandable_icon.d.ts.map +0 -1
  747. package/dist/presentation/components/use_smile_id_expandable_icon.js.map +0 -1
  748. package/dist/presentation/components/use_smile_id_face_oval_image.d.ts.map +0 -1
  749. package/dist/presentation/components/use_smile_id_face_oval_image.js.map +0 -1
  750. package/dist/presentation/components/use_smile_id_face_overlay.d.ts.map +0 -1
  751. package/dist/presentation/components/use_smile_id_face_overlay.js.map +0 -1
  752. package/dist/presentation/components/use_smile_id_failed_content.d.ts.map +0 -1
  753. package/dist/presentation/components/use_smile_id_failed_content.js.map +0 -1
  754. package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +0 -1
  755. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +0 -1
  756. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +0 -1
  757. package/dist/presentation/components/use_smile_id_instructions_hero.js.map +0 -1
  758. package/dist/presentation/components/use_smile_id_learn_more_content.d.ts.map +0 -1
  759. package/dist/presentation/components/use_smile_id_learn_more_content.js.map +0 -1
  760. package/dist/presentation/components/use_smile_id_loading_content.d.ts.map +0 -1
  761. package/dist/presentation/components/use_smile_id_loading_content.js.map +0 -1
  762. package/dist/presentation/components/use_smile_id_loading_indicator.d.ts.map +0 -1
  763. package/dist/presentation/components/use_smile_id_loading_indicator.js.map +0 -1
  764. package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +0 -1
  765. package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +0 -1
  766. package/dist/presentation/components/use_smile_id_partner_icon.d.ts.map +0 -1
  767. package/dist/presentation/components/use_smile_id_partner_icon.js.map +0 -1
  768. package/dist/presentation/components/use_smile_id_processing_center_indicator.d.ts.map +0 -1
  769. package/dist/presentation/components/use_smile_id_processing_center_indicator.js.map +0 -1
  770. package/dist/presentation/components/use_smile_id_rounded_checkbox.d.ts.map +0 -1
  771. package/dist/presentation/components/use_smile_id_rounded_checkbox.js.map +0 -1
  772. package/dist/presentation/components/use_smile_id_status_indicator.d.ts.map +0 -1
  773. package/dist/presentation/components/use_smile_id_status_indicator.js.map +0 -1
  774. package/dist/presentation/components/use_smile_id_success_content.d.ts.map +0 -1
  775. package/dist/presentation/components/use_smile_id_success_content.js.map +0 -1
  776. package/dist/presentation/flow/analytics/use_smile_id_analytics_event.d.ts.map +0 -1
  777. package/dist/presentation/flow/analytics/use_smile_id_analytics_event.js.map +0 -1
  778. package/dist/presentation/flow/config/flow_configuration.d.ts.map +0 -1
  779. package/dist/presentation/flow/config/flow_configuration.js.map +0 -1
  780. package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +0 -1
  781. package/dist/presentation/flow/dsl/builder/config_builder.js.map +0 -1
  782. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +0 -1
  783. package/dist/presentation/flow/dsl/builder/ml_builder.js.map +0 -1
  784. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +0 -1
  785. package/dist/presentation/flow/dsl/builder/screens_builder.js.map +0 -1
  786. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +0 -1
  787. package/dist/presentation/flow/dsl/builder/theme_builder.js.map +0 -1
  788. package/dist/presentation/flow/dsl/flow_build_result.d.ts.map +0 -1
  789. package/dist/presentation/flow/dsl/flow_build_result.js.map +0 -1
  790. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +0 -1
  791. package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +0 -1
  792. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +0 -1
  793. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +0 -1
  794. package/dist/presentation/flow/flow_navigation_context.d.ts.map +0 -1
  795. package/dist/presentation/flow/flow_navigation_context.js.map +0 -1
  796. package/dist/presentation/flow/flow_navigation_manager.d.ts.map +0 -1
  797. package/dist/presentation/flow/flow_navigation_manager.js.map +0 -1
  798. package/dist/presentation/flow/graph/screen_renderer.d.ts.map +0 -1
  799. package/dist/presentation/flow/graph/screen_renderer.js.map +0 -1
  800. package/dist/presentation/flow/job_submission_state.d.ts.map +0 -1
  801. package/dist/presentation/flow/job_submission_state.js.map +0 -1
  802. package/dist/presentation/flow/model/instruction_guideline.d.ts.map +0 -1
  803. package/dist/presentation/flow/model/instruction_guideline.js.map +0 -1
  804. package/dist/presentation/flow/model/instructions_defaults.d.ts.map +0 -1
  805. package/dist/presentation/flow/model/instructions_defaults.js.map +0 -1
  806. package/dist/presentation/flow/screen/helpers/face_session_config.d.ts.map +0 -1
  807. package/dist/presentation/flow/screen/helpers/face_session_config.js.map +0 -1
  808. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +0 -1
  809. package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +0 -1
  810. package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts.map +0 -1
  811. package/dist/presentation/flow/screen/orchestrated_consent_screen.js.map +0 -1
  812. package/dist/presentation/flow/screen/orchestrated_instructions_screen.d.ts.map +0 -1
  813. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +0 -1
  814. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +0 -1
  815. package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +0 -1
  816. package/dist/presentation/flow/screen/orchestrated_processing_screen.d.ts.map +0 -1
  817. package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +0 -1
  818. package/dist/presentation/flow/screen/use_smile_id_orchestrated_screen_host.d.ts.map +0 -1
  819. package/dist/presentation/flow/screen/use_smile_id_orchestrated_screen_host.js.map +0 -1
  820. package/dist/presentation/flow/screen/validation_error_screen.d.ts.map +0 -1
  821. package/dist/presentation/flow/screen/validation_error_screen.js.map +0 -1
  822. package/dist/presentation/flow/use_smile_id_flow.d.ts.map +0 -1
  823. package/dist/presentation/flow/use_smile_id_flow.js.map +0 -1
  824. package/dist/presentation/flow/validation/flow_validator.d.ts.map +0 -1
  825. package/dist/presentation/flow/validation/flow_validator.js.map +0 -1
  826. package/dist/presentation/flow/validation/job_type_validator.d.ts.map +0 -1
  827. package/dist/presentation/flow/validation/job_type_validator.js.map +0 -1
  828. package/dist/presentation/flow/validation/user_details_validator.d.ts.map +0 -1
  829. package/dist/presentation/flow/validation/user_details_validator.js.map +0 -1
  830. package/dist/presentation/flow/validation/validation_state.d.ts.map +0 -1
  831. package/dist/presentation/flow/validation/validation_state.js.map +0 -1
  832. package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +0 -1
  833. package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +0 -1
  834. package/dist/presentation/screen/helpers/capture_ui_state.d.ts.map +0 -1
  835. package/dist/presentation/screen/helpers/capture_ui_state.js.map +0 -1
  836. package/dist/presentation/screen/helpers/consent_screen_helpers.d.ts.map +0 -1
  837. package/dist/presentation/screen/helpers/consent_screen_helpers.js.map +0 -1
  838. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts.map +0 -1
  839. package/dist/presentation/screen/helpers/ess_turn_haptics.js.map +0 -1
  840. package/dist/presentation/screen/helpers/feedback_debouncer.d.ts.map +0 -1
  841. package/dist/presentation/screen/helpers/feedback_debouncer.js.map +0 -1
  842. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +0 -1
  843. package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +0 -1
  844. package/dist/presentation/screen/helpers/preview_screen_helpers.d.ts.map +0 -1
  845. package/dist/presentation/screen/helpers/preview_screen_helpers.js.map +0 -1
  846. package/dist/presentation/screen/helpers/processing_screen_helpers.d.ts.map +0 -1
  847. package/dist/presentation/screen/helpers/processing_screen_helpers.js.map +0 -1
  848. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts.map +0 -1
  849. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +0 -1
  850. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts.map +0 -1
  851. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js.map +0 -1
  852. package/dist/presentation/screen/helpers/use_debounced_feedback_key.d.ts.map +0 -1
  853. package/dist/presentation/screen/helpers/use_debounced_feedback_key.js.map +0 -1
  854. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +0 -1
  855. package/dist/presentation/screen/use_smile_id_capture_screen.js.map +0 -1
  856. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts.map +0 -1
  857. package/dist/presentation/screen/use_smile_id_consent_screen.js.map +0 -1
  858. package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts.map +0 -1
  859. package/dist/presentation/screen/use_smile_id_document_back_instructions.js.map +0 -1
  860. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +0 -1
  861. package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +0 -1
  862. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +0 -1
  863. package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +0 -1
  864. package/dist/presentation/screen/use_smile_id_permission_screen.d.ts.map +0 -1
  865. package/dist/presentation/screen/use_smile_id_permission_screen.js.map +0 -1
  866. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +0 -1
  867. package/dist/presentation/screen/use_smile_id_preview_screen.js.map +0 -1
  868. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +0 -1
  869. package/dist/presentation/screen/use_smile_id_processing_screen.js.map +0 -1
  870. package/dist/presentation/state/processing_state.d.ts.map +0 -1
  871. package/dist/presentation/state/processing_state.js.map +0 -1
  872. package/dist/presentation/state/use_smile_id_overlay_state.d.ts.map +0 -1
  873. package/dist/presentation/state/use_smile_id_overlay_state.js.map +0 -1
  874. package/dist/presentation/theme/theme.d.ts.map +0 -1
  875. package/dist/presentation/theme/theme.js.map +0 -1
  876. package/dist/presentation/theme/theme_context.d.ts.map +0 -1
  877. package/dist/presentation/theme/theme_context.js.map +0 -1
  878. package/dist/presentation/theme/use_smile_id_motion.d.ts.map +0 -1
  879. package/dist/presentation/theme/use_smile_id_motion.js.map +0 -1
  880. package/dist/presentation/theme/use_use_smile_id_fonts.d.ts.map +0 -1
  881. package/dist/presentation/theme/use_use_smile_id_fonts.js.map +0 -1
  882. package/dist/presentation/utils/force_max_brightness.d.ts.map +0 -1
  883. package/dist/presentation/utils/force_max_brightness.js.map +0 -1
  884. package/dist/presentation/utils/locale_utils.d.ts.map +0 -1
  885. package/dist/presentation/utils/locale_utils.js.map +0 -1
  886. package/dist/presentation/utils/use_reduced_motion.d.ts.map +0 -1
  887. package/dist/presentation/utils/use_reduced_motion.js.map +0 -1
  888. package/dist/testing/fake_face_analyzer.d.ts.map +0 -1
  889. package/dist/testing/fake_face_analyzer.js.map +0 -1
  890. package/dist/testing/index.d.ts.map +0 -1
  891. package/dist/testing/index.js.map +0 -1
  892. package/dist/testing/scenario_expectations.d.ts.map +0 -1
  893. package/dist/testing/scenario_expectations.js.map +0 -1
  894. package/dist/testing/scenario_loader.d.ts.map +0 -1
  895. package/dist/testing/scenario_loader.js.map +0 -1
  896. package/dist/testing/scripted_scan_results.d.ts.map +0 -1
  897. package/dist/testing/scripted_scan_results.js.map +0 -1
  898. package/src/__tests__/dsl.test.ts +0 -1165
  899. package/src/__tests__/enum_parity.test.ts +0 -84
  900. package/src/__tests__/react_native_mock.tsx +0 -240
  901. package/src/__tests__/setup_react_native.ts +0 -368
  902. package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +0 -5267
  903. package/src/__tests__/snapshots/screens_structural.test.tsx +0 -230
  904. package/src/__tests__/theme.test.ts +0 -156
  905. package/src/camera/__tests__/camera_defaults.test.ts +0 -28
  906. package/src/camera/__tests__/camera_lens.test.ts +0 -18
  907. package/src/camera/__tests__/camera_permissions.test.ts +0 -72
  908. package/src/camera/__tests__/camera_system_focus.test.ts +0 -173
  909. package/src/camera/__tests__/document_resize_target.test.ts +0 -44
  910. package/src/camera/__tests__/focus_state.test.ts +0 -48
  911. package/src/camera/__tests__/orientation_degrees.test.ts +0 -21
  912. package/src/camera/__tests__/use_smile_id_camera_preview.test.tsx +0 -461
  913. package/src/camera/__tests__/use_smile_id_camera_system.test.ts +0 -103
  914. package/src/camera/__tests__/use_smile_id_frame_stream.test.ts +0 -227
  915. package/src/camera/__tests__/use_smile_id_frame_stream_hook.test.tsx +0 -229
  916. package/src/camera/camera_configuration.ts +0 -32
  917. package/src/camera/camera_defaults.ts +0 -28
  918. package/src/camera/camera_lens.ts +0 -13
  919. package/src/camera/camera_permissions.ts +0 -36
  920. package/src/camera/camera_preview_image.ts +0 -19
  921. package/src/camera/document_image_pipeline.ts +0 -101
  922. package/src/camera/document_resize_target.ts +0 -22
  923. package/src/camera/focus_state.ts +0 -26
  924. package/src/camera/orientation_degrees.ts +0 -21
  925. package/src/camera/use_smile_id_camera_preview.tsx +0 -256
  926. package/src/camera/use_smile_id_camera_system.ts +0 -236
  927. package/src/camera/use_smile_id_frame_stream.ts +0 -189
  928. package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +0 -81
  929. package/src/core/exception/__tests__/network_exception_mapper.test.ts +0 -179
  930. package/src/core/exception/agent_mode_with_enhanced_liveness_exception.ts +0 -20
  931. package/src/core/exception/builder_validation_exception.ts +0 -40
  932. package/src/core/exception/capture_validation_exceptions.ts +0 -9
  933. package/src/core/exception/consent_validation_exceptions.ts +0 -7
  934. package/src/core/exception/duplicate_screen_type_exception.ts +0 -22
  935. package/src/core/exception/empty_screens_block_exception.ts +0 -19
  936. package/src/core/exception/flow_exceptions.test.ts +0 -49
  937. package/src/core/exception/flow_exceptions.ts +0 -43
  938. package/src/core/exception/index.ts +0 -74
  939. package/src/core/exception/invalid_consent_config_exception.ts +0 -20
  940. package/src/core/exception/invalid_consent_information_exception.ts +0 -21
  941. package/src/core/exception/invalid_document_capture_config_exception.ts +0 -22
  942. package/src/core/exception/invalid_field_value_exception.ts +0 -21
  943. package/src/core/exception/invalid_job_type_screen_config_exception.ts +0 -70
  944. package/src/core/exception/invalid_missing_capture_type_exception.ts +0 -19
  945. package/src/core/exception/invalid_screen_order_exception.ts +0 -28
  946. package/src/core/exception/invalid_selfie_capture_config_exception.ts +0 -22
  947. package/src/core/exception/issue_severity.ts +0 -14
  948. package/src/core/exception/job_validation_exceptions.ts +0 -11
  949. package/src/core/exception/liveness_frame_count_exception.ts +0 -21
  950. package/src/core/exception/missing_capture_for_preview_exception.ts +0 -24
  951. package/src/core/exception/missing_job_type_exception.ts +0 -18
  952. package/src/core/exception/missing_ml_configuration_block_exception.ts +0 -21
  953. package/src/core/exception/missing_network_configuration_block_exception.ts +0 -22
  954. package/src/core/exception/missing_partner_config_exception.ts +0 -38
  955. package/src/core/exception/missing_required_field_exception.ts +0 -19
  956. package/src/core/exception/screen_config_validation_exceptions.ts +0 -10
  957. package/src/core/exception/use_smile_id_attestation_exception.ts +0 -11
  958. package/src/core/exception/use_smile_id_builder_exception.ts +0 -18
  959. package/src/core/exception/use_smile_id_camera_exception.ts +0 -12
  960. package/src/core/exception/use_smile_id_error_code.ts +0 -84
  961. package/src/core/exception/use_smile_id_exception.ts +0 -52
  962. package/src/core/exception/use_smile_id_general_exception.ts +0 -12
  963. package/src/core/exception/use_smile_id_network_exception.ts +0 -279
  964. package/src/core/exception/use_smile_id_validation_exception.ts +0 -12
  965. package/src/core/models/__tests__/document_capture_mode.test.ts +0 -43
  966. package/src/core/models/__tests__/document_type.test.ts +0 -66
  967. package/src/core/models/__tests__/flow_models.test.ts +0 -26
  968. package/src/core/models/__tests__/job_type.test.ts +0 -48
  969. package/src/core/models/config.ts +0 -58
  970. package/src/core/models/document_capture_mode.ts +0 -73
  971. package/src/core/models/document_type.ts +0 -79
  972. package/src/core/models/flow_step.ts +0 -17
  973. package/src/core/models/global_privacy_control.ts +0 -45
  974. package/src/core/models/head_turn_direction.ts +0 -15
  975. package/src/core/models/job_type.ts +0 -53
  976. package/src/core/models/ml_config.ts +0 -47
  977. package/src/core/models/network_config.ts +0 -138
  978. package/src/core/models/params.ts +0 -98
  979. package/src/core/models/result.test.ts +0 -20
  980. package/src/core/models/result.ts +0 -33
  981. package/src/data/api/__tests__/smile_id_api.test.ts +0 -1471
  982. package/src/data/api/auth/token_holder.ts +0 -72
  983. package/src/data/api/interceptors/__tests__/credential_header_redaction.test.ts +0 -144
  984. package/src/data/api/interceptors/__tests__/gzip_interceptor.test.ts +0 -83
  985. package/src/data/api/interceptors/__tests__/logging_interceptor.test.ts +0 -252
  986. package/src/data/api/interceptors/__tests__/sensitive_headers.test.ts +0 -29
  987. package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +0 -192
  988. package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +0 -156
  989. package/src/data/api/interceptors/__tests__/token_refresh_interceptor.test.ts +0 -173
  990. package/src/data/api/interceptors/gzip_interceptor.ts +0 -31
  991. package/src/data/api/interceptors/logging_interceptor.ts +0 -155
  992. package/src/data/api/interceptors/sensitive_headers.ts +0 -46
  993. package/src/data/api/interceptors/smile_auth_interceptor.ts +0 -73
  994. package/src/data/api/interceptors/smile_integrity_interceptor.ts +0 -99
  995. package/src/data/api/interceptors/smile_request_mac_interceptor.ts +0 -106
  996. package/src/data/api/interceptors/token_refresh_interceptor.ts +0 -122
  997. package/src/data/api/smile_id_api.ts +0 -475
  998. package/src/data/compression/__tests__/payload_compressor.test.ts +0 -200
  999. package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +0 -226
  1000. package/src/data/compression/compressible_asset.ts +0 -62
  1001. package/src/data/compression/payload_compression_config.ts +0 -53
  1002. package/src/data/compression/payload_compression_runner.ts +0 -102
  1003. package/src/data/compression/payload_compressor.ts +0 -164
  1004. package/src/data/compression/uri_compressible_asset.ts +0 -85
  1005. package/src/data/dsl/__tests__/use_smile_id_network_builder.test.ts +0 -157
  1006. package/src/data/dsl/builder/__tests__/config_builders.test.ts +0 -62
  1007. package/src/data/dsl/builder/__tests__/interceptor_config_builder.test.ts +0 -173
  1008. package/src/data/dsl/builder/cache_config_builder.ts +0 -28
  1009. package/src/data/dsl/builder/config_builder.ts +0 -156
  1010. package/src/data/dsl/builder/interceptor_config_builder.ts +0 -83
  1011. package/src/data/dsl/builder/retry_config_builder.ts +0 -57
  1012. package/src/data/dsl/builder/timeout_config_builder.ts +0 -31
  1013. package/src/data/dsl/use_smile_id_network_builder.ts +0 -86
  1014. package/src/data/factory/__tests__/networking_factory_order.test.ts +0 -201
  1015. package/src/data/factory/__tests__/retry_gzip_mac_composition.test.ts +0 -163
  1016. package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +0 -110
  1017. package/src/data/factory/networking_factory.ts +0 -201
  1018. package/src/data/model/__tests__/sdk_config.test.ts +0 -85
  1019. package/src/data/model/__tests__/sdk_config_capture.test.ts +0 -140
  1020. package/src/data/model/__tests__/token_payload.test.ts +0 -224
  1021. package/src/data/model/__tests__/user_details_payload.test.ts +0 -100
  1022. package/src/data/model/image_dimensions.ts +0 -15
  1023. package/src/data/model/job_request.ts +0 -165
  1024. package/src/data/model/job_submission_response.ts +0 -17
  1025. package/src/data/model/sdk_config.ts +0 -74
  1026. package/src/data/model/sdk_config_capture.ts +0 -78
  1027. package/src/data/model/sdk_config_source.ts +0 -26
  1028. package/src/data/model/token_payload.ts +0 -182
  1029. package/src/data/model/user_details_payload.ts +0 -84
  1030. package/src/data/repository/__tests__/network_retries.test.ts +0 -117
  1031. package/src/data/repository/__tests__/repository_dispatch.test.ts +0 -366
  1032. package/src/data/repository/__tests__/use_smile_id_repository.test.ts +0 -118
  1033. package/src/data/repository/use_smile_id_repository.ts +0 -19
  1034. package/src/data/repository/use_smile_id_repository_impl.ts +0 -181
  1035. package/src/data/security/__tests__/request_canonicalizer.test.ts +0 -132
  1036. package/src/data/security/__tests__/security_policy.test.ts +0 -96
  1037. package/src/data/security/__tests__/signing_crypto.test.ts +0 -203
  1038. package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +0 -176
  1039. package/src/data/security/request_canonicalizer.ts +0 -161
  1040. package/src/data/security/request_timestamp.ts +0 -12
  1041. package/src/data/security/security_policy.ts +0 -70
  1042. package/src/data/security/signing_crypto.ts +0 -219
  1043. package/src/data/security/smile_id_crypto_error.ts +0 -13
  1044. package/src/data/security/smile_id_crypto_manager.ts +0 -46
  1045. package/src/data/smile_id_urls.ts +0 -13
  1046. package/src/data/util/__tests__/retry_util.test.ts +0 -182
  1047. package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +0 -430
  1048. package/src/data/util/retry_util.ts +0 -81
  1049. package/src/data/util/use_smile_id_token_decoder.ts +0 -207
  1050. package/src/index.ts +0 -514
  1051. package/src/l10n/__tests__/use_smile_id_localizations.test.ts +0 -244
  1052. package/src/l10n/__tests__/use_smile_id_localizations_provider.test.tsx +0 -112
  1053. package/src/l10n/__tests__/use_smile_id_localizations_surface.test.ts +0 -231
  1054. package/src/l10n/strings_en.ts +0 -176
  1055. package/src/l10n/use_smile_id_localizations.ts +0 -768
  1056. package/src/l10n/use_smile_id_localizations_provider.tsx +0 -71
  1057. package/src/metadata/__tests__/device_orientation_collector.test.ts +0 -15
  1058. package/src/metadata/__tests__/device_orientation_sampling.test.ts +0 -165
  1059. package/src/metadata/__tests__/geolocation.test.ts +0 -150
  1060. package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +0 -254
  1061. package/src/metadata/__tests__/metadata_configuration_objects.test.ts +0 -86
  1062. package/src/metadata/__tests__/metadata_device_context.test.ts +0 -147
  1063. package/src/metadata/__tests__/metadata_device_os_android.test.ts +0 -18
  1064. package/src/metadata/__tests__/metadata_golden_fixture.json +0 -13
  1065. package/src/metadata/__tests__/metadata_payload_golden.test.ts +0 -193
  1066. package/src/metadata/__tests__/optional_native_modules.test.ts +0 -234
  1067. package/src/metadata/__tests__/use_smile_id_metadata.test.ts +0 -430
  1068. package/src/metadata/__tests__/use_smile_id_metadata_factory.test.ts +0 -615
  1069. package/src/metadata/builder_configuration.ts +0 -69
  1070. package/src/metadata/captured_image_properties.ts +0 -10
  1071. package/src/metadata/device_orientation_collector.ts +0 -75
  1072. package/src/metadata/document_image_origin.ts +0 -22
  1073. package/src/metadata/geolocation.ts +0 -46
  1074. package/src/metadata/metadata_configuration_mappers.ts +0 -248
  1075. package/src/metadata/model_configuration.ts +0 -68
  1076. package/src/metadata/optional_native_modules.ts +0 -274
  1077. package/src/metadata/use_smile_id_metadata.ts +0 -305
  1078. package/src/metadata/use_smile_id_metadata_factory.ts +0 -580
  1079. package/src/presentation/assets/si_document_green_book_hero_animation.json +0 -1
  1080. package/src/presentation/assets/si_document_hero_animation.json +0 -1
  1081. package/src/presentation/assets/si_document_hero_back_animation.json +0 -1
  1082. package/src/presentation/assets/si_document_passport_hero_animation.json +0 -1
  1083. package/src/presentation/assets/si_ess_all_directions_hero_animation.json +0 -1
  1084. package/src/presentation/assets/si_ess_animation_all_directions.json +0 -1
  1085. package/src/presentation/assets/si_selfie_hero_animation.json +0 -1
  1086. package/src/presentation/assets/si_smile_to_capture_animation.json +0 -1
  1087. package/src/presentation/assets/svg/document_shimmer_strings.ts +0 -17
  1088. package/src/presentation/assets/svg/instruction_svg_strings.ts +0 -54
  1089. package/src/presentation/assets/svg/svg_strings.ts +0 -158
  1090. package/src/presentation/components/__tests__/capture_instruction_animation_spec.test.ts +0 -49
  1091. package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +0 -89
  1092. package/src/presentation/components/__tests__/use_smile_id_capture_content.test.tsx +0 -348
  1093. package/src/presentation/components/__tests__/use_smile_id_confirmation_buttons.test.tsx +0 -131
  1094. package/src/presentation/components/__tests__/use_smile_id_content_card.test.tsx +0 -112
  1095. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +0 -256
  1096. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_direction_animation.test.tsx +0 -138
  1097. package/src/presentation/components/__tests__/use_smile_id_face_oval_image.test.tsx +0 -190
  1098. package/src/presentation/components/__tests__/use_smile_id_face_overlay.test.tsx +0 -211
  1099. package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +0 -112
  1100. package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +0 -150
  1101. package/src/presentation/components/__tests__/use_smile_id_learn_more_content.test.tsx +0 -159
  1102. package/src/presentation/components/__tests__/use_smile_id_loading_indicator.test.tsx +0 -45
  1103. package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +0 -103
  1104. package/src/presentation/components/__tests__/use_smile_id_processing_center_indicator.test.tsx +0 -88
  1105. package/src/presentation/components/face_oval_defaults.ts +0 -51
  1106. package/src/presentation/components/helpers/__tests__/scaled_oval_geometry.test.ts +0 -69
  1107. package/src/presentation/components/helpers/animated_lottie_view.ts +0 -9
  1108. package/src/presentation/components/helpers/capture_instruction_animation_spec.ts +0 -77
  1109. package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -64
  1110. package/src/presentation/components/helpers/scaled_oval_geometry.ts +0 -44
  1111. package/src/presentation/components/icons/index.tsx +0 -334
  1112. package/src/presentation/components/status_indicator_state.ts +0 -21
  1113. package/src/presentation/components/use_smile_id_attribution.tsx +0 -48
  1114. package/src/presentation/components/use_smile_id_back_button.tsx +0 -59
  1115. package/src/presentation/components/use_smile_id_button.tsx +0 -98
  1116. package/src/presentation/components/use_smile_id_capture_content.tsx +0 -368
  1117. package/src/presentation/components/use_smile_id_capture_instruction_animation.tsx +0 -84
  1118. package/src/presentation/components/use_smile_id_capture_spinner.tsx +0 -63
  1119. package/src/presentation/components/use_smile_id_captured_document_image.tsx +0 -81
  1120. package/src/presentation/components/use_smile_id_captured_image_oval.tsx +0 -151
  1121. package/src/presentation/components/use_smile_id_card_surface.tsx +0 -54
  1122. package/src/presentation/components/use_smile_id_confirmation_buttons.tsx +0 -123
  1123. package/src/presentation/components/use_smile_id_consent_row.tsx +0 -58
  1124. package/src/presentation/components/use_smile_id_content_card.tsx +0 -65
  1125. package/src/presentation/components/use_smile_id_document_capture_controls.tsx +0 -219
  1126. package/src/presentation/components/use_smile_id_document_overlay.tsx +0 -335
  1127. package/src/presentation/components/use_smile_id_document_shimmer.tsx +0 -51
  1128. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +0 -155
  1129. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_direction_animation.tsx +0 -46
  1130. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_full_animation.tsx +0 -29
  1131. package/src/presentation/components/use_smile_id_expandable_icon.tsx +0 -102
  1132. package/src/presentation/components/use_smile_id_face_oval_image.tsx +0 -90
  1133. package/src/presentation/components/use_smile_id_face_overlay.tsx +0 -387
  1134. package/src/presentation/components/use_smile_id_failed_content.tsx +0 -94
  1135. package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +0 -263
  1136. package/src/presentation/components/use_smile_id_instructions_hero.tsx +0 -296
  1137. package/src/presentation/components/use_smile_id_learn_more_content.tsx +0 -115
  1138. package/src/presentation/components/use_smile_id_loading_content.tsx +0 -54
  1139. package/src/presentation/components/use_smile_id_loading_indicator.tsx +0 -81
  1140. package/src/presentation/components/use_smile_id_oval_border_palette.ts +0 -64
  1141. package/src/presentation/components/use_smile_id_partner_icon.tsx +0 -56
  1142. package/src/presentation/components/use_smile_id_processing_center_indicator.tsx +0 -77
  1143. package/src/presentation/components/use_smile_id_rounded_checkbox.tsx +0 -67
  1144. package/src/presentation/components/use_smile_id_status_indicator.tsx +0 -44
  1145. package/src/presentation/components/use_smile_id_success_content.tsx +0 -76
  1146. package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +0 -484
  1147. package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +0 -1534
  1148. package/src/presentation/flow/__tests__/use_smile_id_flow.test.tsx +0 -651
  1149. package/src/presentation/flow/analytics/__tests__/use_smile_id_analytics_event.test.ts +0 -105
  1150. package/src/presentation/flow/analytics/use_smile_id_analytics_event.ts +0 -83
  1151. package/src/presentation/flow/config/flow_configuration.ts +0 -12
  1152. package/src/presentation/flow/dsl/__tests__/use_smile_id_builder_component.test.tsx +0 -120
  1153. package/src/presentation/flow/dsl/builder/__tests__/config_builder.test.ts +0 -25
  1154. package/src/presentation/flow/dsl/builder/__tests__/ml_builder.test.ts +0 -161
  1155. package/src/presentation/flow/dsl/builder/__tests__/theme_builder.test.ts +0 -102
  1156. package/src/presentation/flow/dsl/builder/config_builder.ts +0 -57
  1157. package/src/presentation/flow/dsl/builder/ml_builder.ts +0 -210
  1158. package/src/presentation/flow/dsl/builder/screens_builder.ts +0 -276
  1159. package/src/presentation/flow/dsl/builder/theme_builder.ts +0 -119
  1160. package/src/presentation/flow/dsl/flow_build_result.ts +0 -37
  1161. package/src/presentation/flow/dsl/use_smile_id_builder.tsx +0 -125
  1162. package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +0 -454
  1163. package/src/presentation/flow/flow_navigation_context.tsx +0 -50
  1164. package/src/presentation/flow/flow_navigation_manager.ts +0 -1166
  1165. package/src/presentation/flow/graph/__tests__/screen_renderer.test.tsx +0 -102
  1166. package/src/presentation/flow/graph/screen_renderer.tsx +0 -35
  1167. package/src/presentation/flow/job_submission_state.ts +0 -17
  1168. package/src/presentation/flow/model/instruction_guideline.ts +0 -21
  1169. package/src/presentation/flow/model/instructions_defaults.ts +0 -198
  1170. package/src/presentation/flow/screen/__tests__/orchestrated_capture_screen.test.tsx +0 -836
  1171. package/src/presentation/flow/screen/__tests__/orchestrated_consent_screen.test.tsx +0 -165
  1172. package/src/presentation/flow/screen/__tests__/orchestrated_instructions_screen.test.tsx +0 -163
  1173. package/src/presentation/flow/screen/__tests__/orchestrated_preview_screen.test.tsx +0 -224
  1174. package/src/presentation/flow/screen/__tests__/orchestrated_processing_screen.test.tsx +0 -338
  1175. package/src/presentation/flow/screen/helpers/__tests__/face_session_config.test.ts +0 -115
  1176. package/src/presentation/flow/screen/helpers/face_session_config.ts +0 -77
  1177. package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +0 -344
  1178. package/src/presentation/flow/screen/orchestrated_consent_screen.tsx +0 -71
  1179. package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +0 -103
  1180. package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +0 -62
  1181. package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +0 -148
  1182. package/src/presentation/flow/screen/use_smile_id_orchestrated_screen_host.tsx +0 -39
  1183. package/src/presentation/flow/screen/validation_error_screen.tsx +0 -147
  1184. package/src/presentation/flow/use_smile_id_flow.tsx +0 -389
  1185. package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +0 -616
  1186. package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +0 -968
  1187. package/src/presentation/flow/validation/flow_validator.ts +0 -461
  1188. package/src/presentation/flow/validation/job_type_validator.ts +0 -703
  1189. package/src/presentation/flow/validation/user_details_validator.ts +0 -53
  1190. package/src/presentation/flow/validation/validation_state.ts +0 -65
  1191. package/src/presentation/screen/__tests__/capture_screen_helpers.test.ts +0 -112
  1192. package/src/presentation/screen/__tests__/capture_ui_state.test.ts +0 -398
  1193. package/src/presentation/screen/__tests__/consent_screen_helpers.test.ts +0 -63
  1194. package/src/presentation/screen/__tests__/ess_turn_haptics.test.ts +0 -82
  1195. package/src/presentation/screen/__tests__/feedback_copy_table.test.ts +0 -145
  1196. package/src/presentation/screen/__tests__/feedback_debouncer.test.ts +0 -111
  1197. package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +0 -154
  1198. package/src/presentation/screen/__tests__/preview_screen_helpers.test.ts +0 -53
  1199. package/src/presentation/screen/__tests__/processing_screen_helpers.test.ts +0 -39
  1200. package/src/presentation/screen/__tests__/scan_state_to_overlay_state.test.ts +0 -223
  1201. package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +0 -1128
  1202. package/src/presentation/screen/__tests__/use_smile_id_consent_screen.test.tsx +0 -288
  1203. package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +0 -138
  1204. package/src/presentation/screen/__tests__/use_smile_id_instructions_screen.test.tsx +0 -245
  1205. package/src/presentation/screen/__tests__/use_smile_id_permission_screen.test.tsx +0 -68
  1206. package/src/presentation/screen/__tests__/use_smile_id_preview_screen.test.tsx +0 -193
  1207. package/src/presentation/screen/__tests__/use_smile_id_processing_screen.test.tsx +0 -333
  1208. package/src/presentation/screen/helpers/__tests__/use_capture_orientation_lock.test.tsx +0 -212
  1209. package/src/presentation/screen/helpers/capture_screen_helpers.ts +0 -153
  1210. package/src/presentation/screen/helpers/capture_ui_state.ts +0 -298
  1211. package/src/presentation/screen/helpers/consent_screen_helpers.ts +0 -106
  1212. package/src/presentation/screen/helpers/ess_turn_haptics.ts +0 -67
  1213. package/src/presentation/screen/helpers/feedback_debouncer.ts +0 -89
  1214. package/src/presentation/screen/helpers/instructions_screen_helpers.ts +0 -113
  1215. package/src/presentation/screen/helpers/preview_screen_helpers.ts +0 -41
  1216. package/src/presentation/screen/helpers/processing_screen_helpers.ts +0 -27
  1217. package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +0 -131
  1218. package/src/presentation/screen/helpers/use_capture_orientation_lock.ts +0 -108
  1219. package/src/presentation/screen/helpers/use_debounced_feedback_key.ts +0 -52
  1220. package/src/presentation/screen/use_smile_id_capture_screen.tsx +0 -912
  1221. package/src/presentation/screen/use_smile_id_consent_screen.tsx +0 -393
  1222. package/src/presentation/screen/use_smile_id_document_back_instructions.tsx +0 -125
  1223. package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +0 -152
  1224. package/src/presentation/screen/use_smile_id_instructions_screen.tsx +0 -198
  1225. package/src/presentation/screen/use_smile_id_permission_screen.tsx +0 -52
  1226. package/src/presentation/screen/use_smile_id_preview_screen.tsx +0 -127
  1227. package/src/presentation/screen/use_smile_id_processing_screen.tsx +0 -223
  1228. package/src/presentation/state/__tests__/use_smile_id_overlay_state.test.ts +0 -30
  1229. package/src/presentation/state/processing_state.ts +0 -19
  1230. package/src/presentation/state/use_smile_id_overlay_state.ts +0 -70
  1231. package/src/presentation/theme/__tests__/use_use_smile_id_fonts.test.tsx +0 -166
  1232. package/src/presentation/theme/theme.ts +0 -401
  1233. package/src/presentation/theme/theme_context.tsx +0 -45
  1234. package/src/presentation/theme/use_smile_id_motion.ts +0 -12
  1235. package/src/presentation/theme/use_use_smile_id_fonts.ts +0 -71
  1236. package/src/presentation/utils/__tests__/force_max_brightness.test.tsx +0 -237
  1237. package/src/presentation/utils/__tests__/locale_utils.test.ts +0 -78
  1238. package/src/presentation/utils/force_max_brightness.tsx +0 -113
  1239. package/src/presentation/utils/locale_utils.ts +0 -80
  1240. package/src/presentation/utils/use_reduced_motion.ts +0 -26
  1241. package/src/testing/__tests__/fake_face_analyzer.test.ts +0 -42
  1242. package/src/testing/__tests__/scenario_expectations.test.ts +0 -110
  1243. package/src/testing/__tests__/scenario_loader.test.ts +0 -64
  1244. package/src/testing/fake_face_analyzer.ts +0 -82
  1245. package/src/testing/index.ts +0 -15
  1246. package/src/testing/scenario_expectations.ts +0 -87
  1247. package/src/testing/scenario_loader.ts +0 -83
  1248. package/src/testing/scripted_scan_results.ts +0 -66
  1249. /package/{src → dist}/presentation/assets/fonts/DMSans-Bold.ttf +0 -0
  1250. /package/{src → dist}/presentation/assets/fonts/DMSans-ExtraBold.ttf +0 -0
  1251. /package/{src → dist}/presentation/assets/fonts/DMSans-Medium.ttf +0 -0
  1252. /package/{src → dist}/presentation/assets/fonts/DMSans-Regular.ttf +0 -0
  1253. /package/{src → dist}/presentation/assets/fonts/DMSans-SemiBold.ttf +0 -0
  1254. /package/{src → dist}/presentation/assets/fonts/OFL.txt +0 -0
  1255. /package/{src → dist}/presentation/assets/si_dark_lighting_animation.json +0 -0
  1256. /package/{src → dist}/presentation/assets/si_device_orientation_animation.json +0 -0
  1257. /package/{src → dist}/presentation/assets/svg/si_attribution.svg +0 -0
  1258. /package/{src → dist}/presentation/assets/svg/si_attribution_dark.svg +0 -0
  1259. /package/{src → dist}/presentation/assets/svg/si_checkbox_check.svg +0 -0
  1260. /package/{src → dist}/presentation/assets/svg/si_consent_biometric.svg +0 -0
  1261. /package/{src → dist}/presentation/assets/svg/si_consent_biometric_dark.svg +0 -0
  1262. /package/{src → dist}/presentation/assets/svg/si_consent_contact.svg +0 -0
  1263. /package/{src → dist}/presentation/assets/svg/si_consent_contact_dark.svg +0 -0
  1264. /package/{src → dist}/presentation/assets/svg/si_consent_device.svg +0 -0
  1265. /package/{src → dist}/presentation/assets/svg/si_consent_device_dark.svg +0 -0
  1266. /package/{src → dist}/presentation/assets/svg/si_consent_personal.svg +0 -0
  1267. /package/{src → dist}/presentation/assets/svg/si_consent_personal_dark.svg +0 -0
  1268. /package/{src → dist}/presentation/assets/svg/si_expand_more.svg +0 -0
  1269. /package/{src → dist}/presentation/assets/svg/si_plus.svg +0 -0
  1270. /package/{src → dist}/presentation/assets/svg/si_smile_consent_icon.svg +0 -0
@@ -1,1534 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import {
3
- FlowNavigationManager,
4
- type CapturedArtifacts,
5
- type FlowExitReason,
6
- type FlowExitHandler,
7
- } from "../flow_navigation_manager";
8
- import {
9
- CaptureType,
10
- ScreensBuilder,
11
- type ScreensConfig,
12
- } from "../dsl/builder/screens_builder";
13
- import type { FlowConfigurationSnapshot } from "../dsl/use_smile_id_flow_builder";
14
- import type { JobRequest } from "../../../data/model/job_request";
15
- import type { UseSmileIDRepository } from "../../../data/repository/use_smile_id_repository";
16
- import type { JobSubmissionResponse } from "../../../data/model/job_submission_response";
17
- import {
18
- failure,
19
- success,
20
- type UseSmileIDResult,
21
- } from "../../../core/models/result";
22
- import { JobType } from "../../../core/models/job_type";
23
- import { DocumentType } from "../../../core/models/document_type";
24
- import { GlobalPrivacyControl } from "../../../core/models/global_privacy_control";
25
- import {
26
- MissingJobTypeException,
27
- MissingRequiredFieldException,
28
- UseSmileIDErrorCode,
29
- } from "../../../core/exception";
30
- import type { UseSmileIDAnalyticsEvent } from "../analytics/use_smile_id_analytics_event";
31
-
32
- function buildScreens(block: (s: ScreensBuilder) => void): ScreensConfig {
33
- const sb = new ScreensBuilder();
34
- block(sb);
35
- return sb.build();
36
- }
37
-
38
- function buildConfig(
39
- screens: ScreensConfig,
40
- overrides: Partial<FlowConfigurationSnapshot> = {},
41
- ): FlowConfigurationSnapshot {
42
- return {
43
- screens,
44
- onResult: () => {},
45
- ...overrides,
46
- };
47
- }
48
-
49
- function makeManager(
50
- screens: ScreensConfig,
51
- onExit: FlowExitHandler = vi.fn(),
52
- extra: Partial<FlowConfigurationSnapshot> = {},
53
- repository?: UseSmileIDRepository,
54
- ): FlowNavigationManager {
55
- return new FlowNavigationManager({
56
- configuration: buildConfig(screens, extra),
57
- onExit,
58
- ...(repository ? { repository } : {}),
59
- });
60
- }
61
-
62
- const consentInfo = Object.freeze({
63
- granted: true,
64
- grantedAt: "2026-04-30T00:00:00.000Z",
65
- noticeLanguage: "EN",
66
- noticePrivacyPolicyUrl: "https://example.test/privacy",
67
- });
68
-
69
- const SAMPLE_USER_DETAILS = Object.freeze({
70
- givenNames: "Jane",
71
- lastName: "Doe",
72
- email: "jane@example.test",
73
- phoneNumber: "+2348000000000",
74
- });
75
-
76
- describe("FlowNavigationManager — navigation primitives", () => {
77
- it("seeds the path with the first configured screen", () => {
78
- const manager = makeManager(
79
- buildScreens((screens) => {
80
- screens.instructions();
81
- screens.capture((c) => {
82
- c.captureType = CaptureType.selfie;
83
- });
84
- }),
85
- );
86
- expect(manager.currentDepth).toBe(0);
87
- expect(manager.navigationPath.length).toBe(1);
88
- expect(manager.currentScreen?.kind).toBe("instructions");
89
- expect(manager.isFirstScreen).toBe(true);
90
- expect(manager.isLastScreen).toBe(false);
91
- });
92
-
93
- it("navigateToNext() pushes the next configured screen onto the path and notifies subscribers", () => {
94
- const onExit = vi.fn();
95
- const listener = vi.fn();
96
- const manager = makeManager(
97
- buildScreens((screens) => {
98
- screens.instructions();
99
- screens.preview();
100
- screens.processing();
101
- }),
102
- onExit,
103
- );
104
- manager.subscribe(listener);
105
-
106
- manager.navigateToNext();
107
- expect(manager.currentDepth).toBe(1);
108
- expect(manager.navigationPath.length).toBe(2);
109
- expect(manager.currentScreen?.kind).toBe("preview");
110
- expect(listener).toHaveBeenCalledTimes(1);
111
-
112
- manager.navigateToNext();
113
- expect(manager.currentDepth).toBe(2);
114
- expect(manager.navigationPath.length).toBe(3);
115
- expect(manager.currentScreen?.kind).toBe("processing");
116
- expect(listener).toHaveBeenCalledTimes(2);
117
-
118
- expect(onExit).not.toHaveBeenCalled();
119
- });
120
-
121
- it("navigateToNext() from the last screen calls onExit with completed reason", () => {
122
- // Concrete scenario: partner taps "Continue" on the processing
123
- // screen (the last screen). The orchestrator submits + notifies
124
- // via onResult — pinned via the `completed` exit reason here.
125
- const onExit = vi.fn<(reason: FlowExitReason) => void>();
126
- const manager = makeManager(
127
- buildScreens((screens) => {
128
- screens.instructions();
129
- }),
130
- onExit,
131
- );
132
- manager.navigateToNext();
133
- // No submission in this flow → empty fields on the carrier; the
134
- // exit reason still marks the flow as completed.
135
- expect(onExit).toHaveBeenCalledWith({
136
- kind: "completed",
137
- job: { userId: "", jobId: "", status: "", message: "" },
138
- });
139
- // Path stays at the last screen — the orchestrator drives
140
- // unmount, the manager just notifies.
141
- expect(manager.currentDepth).toBe(0);
142
- expect(manager.navigationPath.length).toBe(1);
143
- expect(manager.currentScreen?.kind).toBe("instructions");
144
- });
145
-
146
- it("navigateBack() pops the path and notifies subscribers", () => {
147
- const manager = makeManager(
148
- buildScreens((screens) => {
149
- screens.instructions();
150
- screens.preview();
151
- }),
152
- );
153
- const listener = vi.fn();
154
- manager.subscribe(listener);
155
-
156
- manager.navigateToNext(); // path: [instructions, preview]
157
- listener.mockClear();
158
- manager.navigateBack();
159
-
160
- expect(manager.currentDepth).toBe(0);
161
- expect(manager.navigationPath.length).toBe(1);
162
- expect(manager.currentScreen?.kind).toBe("instructions");
163
- expect(listener).toHaveBeenCalledTimes(1);
164
- });
165
-
166
- it("navigateBack() from the first screen calls onExit with cancelled reason", () => {
167
- // Concrete scenario: partner presses Android hardware back on
168
- // the first screen. The orchestrator pops out of the flow with
169
- // a cancelled result — partner-app router takes over.
170
- const onExit = vi.fn<(reason: FlowExitReason) => void>();
171
- const manager = makeManager(
172
- buildScreens((screens) => {
173
- screens.instructions();
174
- screens.capture((c) => {
175
- c.captureType = CaptureType.selfie;
176
- });
177
- }),
178
- onExit,
179
- );
180
- manager.navigateBack();
181
- expect(onExit).toHaveBeenCalledWith({ kind: "cancelled" });
182
- // Path is the source of truth — back at root must leave the path
183
- // intact (single-element, depth 0). The orchestrator drives
184
- // unmount; the manager must not pop the path empty.
185
- expect(manager.currentDepth).toBe(0);
186
- expect(manager.navigationPath.length).toBe(1);
187
- expect(manager.currentScreen?.kind).toBe("instructions");
188
- });
189
-
190
- it("navigateToStart() collapses the path to just the first configured screen", () => {
191
- // Concrete scenario: a terminal failure prompts the partner to
192
- // restart the flow without tearing down the manager (e.g. retry
193
- // selfie capture from the beginning). The path must reset to a
194
- // single-element stack pointing at the first configured screen,
195
- // regardless of how deep the user was.
196
- const manager = makeManager(
197
- buildScreens((screens) => {
198
- screens.instructions();
199
- screens.preview();
200
- screens.processing();
201
- }),
202
- );
203
- manager.navigateToNext(); // path: [instructions, preview]
204
- manager.navigateToNext(); // path: [instructions, preview, processing]
205
- expect(manager.currentDepth).toBe(2);
206
-
207
- const listener = vi.fn();
208
- manager.subscribe(listener);
209
- manager.navigateToStart();
210
-
211
- expect(manager.currentDepth).toBe(0);
212
- expect(manager.navigationPath.length).toBe(1);
213
- expect(manager.currentScreen?.kind).toBe("instructions");
214
- expect(listener).toHaveBeenCalledTimes(1);
215
- });
216
-
217
- it("navigateToStart() from the first screen is a no-op on path state", () => {
218
- // Already at the start — calling navigateToStart() must keep the
219
- // path at a single-element stack pointing at the first screen.
220
- const manager = makeManager(
221
- buildScreens((screens) => {
222
- screens.instructions();
223
- screens.preview();
224
- }),
225
- );
226
- manager.navigateToStart();
227
- expect(manager.currentDepth).toBe(0);
228
- expect(manager.navigationPath.length).toBe(1);
229
- expect(manager.currentScreen?.kind).toBe("instructions");
230
- });
231
-
232
- it("exit() calls onExit immediately with the supplied reason", () => {
233
- const onExit = vi.fn<(reason: FlowExitReason) => void>();
234
- const manager = makeManager(
235
- buildScreens((screens) => {
236
- screens.processing();
237
- }),
238
- onExit,
239
- );
240
- const error = new Error("submission failed");
241
- manager.exit({ kind: "failed", error });
242
- expect(onExit).toHaveBeenCalledWith({ kind: "failed", error });
243
- });
244
-
245
- it("exit() with no argument defaults to cancelled", () => {
246
- const onExit = vi.fn<(reason: FlowExitReason) => void>();
247
- const manager = makeManager(
248
- buildScreens((screens) => {
249
- screens.instructions();
250
- }),
251
- onExit,
252
- );
253
- manager.exit();
254
- expect(onExit).toHaveBeenCalledWith({ kind: "cancelled" });
255
- });
256
- });
257
-
258
- describe("FlowNavigationManager — captured artifacts", () => {
259
- it("starts with empty livenessPaths and no other artifacts", () => {
260
- const manager = makeManager(
261
- buildScreens((screens) => screens.instructions()),
262
- );
263
- expect(manager.captured).toEqual<CapturedArtifacts>({
264
- livenessPaths: [],
265
- });
266
- });
267
-
268
- it("records selfie + liveness paths atomically and freezes the array", () => {
269
- // Concrete scenario: a future refactor that mutates
270
- // `livenessPaths` after capture would silently change the
271
- // submitted images mid-flow. The frozen array is the contract
272
- // — the orchestrator sees a stable snapshot.
273
- const manager = makeManager(
274
- buildScreens((screens) =>
275
- screens.capture((c) => {
276
- c.captureType = CaptureType.selfie;
277
- }),
278
- ),
279
- );
280
- const liveness = ["file:///a.jpg", "file:///b.jpg"];
281
- manager.setCapturedSelfie("file:///selfie.jpg", liveness);
282
- expect(manager.captured.selfiePath).toBe("file:///selfie.jpg");
283
- expect(manager.captured.livenessPaths).toEqual(liveness);
284
- expect(Object.isFrozen(manager.captured.livenessPaths)).toBe(true);
285
- });
286
-
287
- it("records front + back document paths separately", () => {
288
- const manager = makeManager(
289
- buildScreens((screens) =>
290
- screens.capture((c) => {
291
- c.captureType = CaptureType.document;
292
- }),
293
- ),
294
- );
295
- manager.setCapturedFrontDocument("file:///front.jpg");
296
- expect(manager.captured.frontDocumentPath).toBe("file:///front.jpg");
297
- expect(manager.captured.backDocumentPath).toBeUndefined();
298
- manager.setCapturedBackDocument("file:///back.jpg");
299
- expect(manager.captured.backDocumentPath).toBe("file:///back.jpg");
300
- // Front not clobbered.
301
- expect(manager.captured.frontDocumentPath).toBe("file:///front.jpg");
302
- });
303
-
304
- it("records consent without affecting other artifacts", () => {
305
- const manager = makeManager(buildScreens((screens) => screens.consent()));
306
- manager.setCapturedSelfie("file:///selfie.jpg", []);
307
- manager.setConsent(consentInfo);
308
- expect(manager.captured.consentInformation).toEqual(consentInfo);
309
- expect(manager.captured.selfiePath).toBe("file:///selfie.jpg");
310
- });
311
-
312
- it("notifies subscribers on each artifact recording", () => {
313
- const manager = makeManager(
314
- buildScreens((screens) =>
315
- screens.capture((c) => {
316
- c.captureType = CaptureType.selfie;
317
- }),
318
- ),
319
- );
320
- const listener = vi.fn();
321
- manager.subscribe(listener);
322
- manager.setCapturedSelfie("file:///s.jpg", []);
323
- manager.setCapturedFrontDocument("file:///f.jpg");
324
- manager.setConsent(consentInfo);
325
- expect(listener).toHaveBeenCalledTimes(3);
326
- });
327
- });
328
-
329
- describe("FlowNavigationManager — subscribe / dispose", () => {
330
- it("subscribe() returns an unsubscribe function", () => {
331
- const manager = makeManager(
332
- buildScreens((screens) => {
333
- screens.instructions();
334
- screens.processing();
335
- }),
336
- );
337
- const listener = vi.fn();
338
- const unsubscribe = manager.subscribe(listener);
339
- manager.navigateToNext();
340
- expect(listener).toHaveBeenCalledTimes(1);
341
- unsubscribe();
342
- manager.navigateBack();
343
- // Listener should NOT fire after unsubscribe.
344
- expect(listener).toHaveBeenCalledTimes(1);
345
- });
346
-
347
- it("dispose() drops all listeners and makes navigation methods no-op", () => {
348
- // Concrete scenario: the orchestrator unmounts mid-flow (partner
349
- // navigated away). After dispose, any in-flight async path
350
- // (camera frame, network response) trying to call `navigateToNext()`
351
- // must not fire listeners against a stale manager.
352
- const onExit = vi.fn();
353
- const manager = makeManager(
354
- buildScreens((screens) => {
355
- screens.instructions();
356
- screens.processing();
357
- }),
358
- onExit,
359
- );
360
- const listener = vi.fn();
361
- manager.subscribe(listener);
362
- manager.dispose();
363
-
364
- manager.navigateToNext();
365
- manager.navigateBack();
366
- manager.exit();
367
- manager.setCapturedSelfie("file:///s.jpg", []);
368
-
369
- expect(listener).not.toHaveBeenCalled();
370
- expect(onExit).not.toHaveBeenCalled();
371
- });
372
-
373
- it("listener errors do not break the dispatch chain", () => {
374
- // Concrete scenario: a partner-supplied listener (custom screen
375
- // hook) throws on a particular state. The remaining listeners
376
- // (including the orchestrator's re-render trigger) must still
377
- // fire so the flow keeps running.
378
- const manager = makeManager(
379
- buildScreens((screens) => {
380
- screens.instructions();
381
- screens.preview();
382
- }),
383
- );
384
- const buggy = vi.fn(() => {
385
- throw new Error("partner listener bug");
386
- });
387
- const healthy = vi.fn();
388
- manager.subscribe(buggy);
389
- manager.subscribe(healthy);
390
- expect(() => manager.navigateToNext()).not.toThrow();
391
- expect(buggy).toHaveBeenCalledTimes(1);
392
- expect(healthy).toHaveBeenCalledTimes(1);
393
- });
394
- });
395
-
396
- // Submission lifecycle ---------------------------------------------------
397
-
398
- const RESPONSE: JobSubmissionResponse = Object.freeze({
399
- jobId: "job-1",
400
- userId: "user-1",
401
- status: "completed",
402
- message: "Job completed successfully",
403
- });
404
-
405
- class StubRepository implements UseSmileIDRepository {
406
- readonly received: JobRequest[] = [];
407
- result: UseSmileIDResult<JobSubmissionResponse> = success(RESPONSE);
408
- /** Pending promise so tests can drive the async state transition. */
409
- private _resolver:
410
- | ((r: UseSmileIDResult<JobSubmissionResponse>) => void)
411
- | null = null;
412
- /** When true, `submit` returns a manual-resolve promise instead of `result`. */
413
- manual = false;
414
-
415
- submit(
416
- request: JobRequest,
417
- ): Promise<UseSmileIDResult<JobSubmissionResponse>> {
418
- this.received.push(request);
419
- if (this.manual) {
420
- return new Promise((resolve) => {
421
- this._resolver = resolve;
422
- });
423
- }
424
- return Promise.resolve(this.result);
425
- }
426
-
427
- resolve(result: UseSmileIDResult<JobSubmissionResponse>): void {
428
- if (!this._resolver) throw new Error("no pending submit to resolve");
429
- const resolver = this._resolver;
430
- this._resolver = null;
431
- resolver(result);
432
- }
433
- }
434
-
435
- describe("FlowNavigationManager — submission lifecycle", () => {
436
- it("starts in notAttempted state", () => {
437
- const manager = makeManager(
438
- buildScreens((screens) => screens.processing()),
439
- );
440
- expect(manager.jobSubmissionState.kind).toBe("notAttempted");
441
- });
442
-
443
- it("beginSubmissionIfNeeded fails with a configured-message when no repository was supplied", async () => {
444
- // Concrete scenario: partner mounts <UseSmileIDBuilder> for a
445
- // capture-only smoke test (no `b.network(...)`). The processing
446
- // screen surfaces the configuration gap rather than spinning
447
- // forever.
448
- const manager = makeManager(
449
- buildScreens((screens) => screens.processing()),
450
- );
451
- manager.beginSubmissionIfNeeded();
452
- await flushMicrotasks();
453
- expect(manager.jobSubmissionState.kind).toBe("failure");
454
- if (manager.jobSubmissionState.kind === "failure") {
455
- expect(manager.jobSubmissionState.error.message).toMatch(
456
- /not configured/i,
457
- );
458
- }
459
- });
460
-
461
- it("beginSubmissionIfNeeded transitions notAttempted → loading → success", async () => {
462
- const repository = new StubRepository();
463
- repository.manual = true;
464
- const manager = makeManager(
465
- buildScreens((screens) => screens.processing()),
466
- vi.fn(),
467
- {
468
- enhancedKYCParams: {
469
- idType: "PASSPORT",
470
- idNumber: "X123",
471
- country: "NG",
472
- },
473
- userDetails: SAMPLE_USER_DETAILS,
474
- network: {
475
- config: {
476
- jobType: JobType.enhancedKyc,
477
- token: "k",
478
- partnerConfig: {
479
- partnerId: "p",
480
- callbackUrl: "",
481
- useSandbox: true,
482
- },
483
- },
484
- },
485
- },
486
- repository,
487
- );
488
-
489
- manager.beginSubmissionIfNeeded();
490
- // Synchronous transition to loading happens inside the
491
- // microtask-triggering `_submit` before the first await.
492
- await flushMicrotasks();
493
- expect(manager.jobSubmissionState.kind).toBe("loading");
494
-
495
- repository.resolve(success(RESPONSE));
496
- await flushMicrotasks();
497
-
498
- expect(manager.jobSubmissionState.kind).toBe("success");
499
- expect(repository.received).toHaveLength(1);
500
- expect(repository.received[0]?.jobType).toBe(JobType.enhancedKyc);
501
- });
502
-
503
- it("transitions loading → failure on repository error", async () => {
504
- const repository = new StubRepository();
505
- repository.result = failure(new Error("[503] service unavailable"));
506
- const manager = makeManager(
507
- buildScreens((screens) => screens.processing()),
508
- vi.fn(),
509
- {
510
- enhancedKYCParams: {
511
- idType: "BVN",
512
- idNumber: "1",
513
- country: "NG",
514
- },
515
- userDetails: SAMPLE_USER_DETAILS,
516
- network: {
517
- config: {
518
- jobType: JobType.enhancedKyc,
519
- token: "k",
520
- partnerConfig: {
521
- partnerId: "p",
522
- callbackUrl: "",
523
- useSandbox: true,
524
- },
525
- },
526
- },
527
- },
528
- repository,
529
- );
530
-
531
- manager.beginSubmissionIfNeeded();
532
- await flushMicrotasks();
533
- expect(manager.jobSubmissionState.kind).toBe("failure");
534
- });
535
-
536
- it("an unrecognised jobType fails submission with the typed builder exception", async () => {
537
- const repository = new StubRepository();
538
- const manager = makeManager(
539
- buildScreens((screens) => screens.processing()),
540
- vi.fn(),
541
- {
542
- userDetails: SAMPLE_USER_DETAILS,
543
- network: {
544
- config: {
545
- jobType: 99 as JobType,
546
- token: "k",
547
- partnerConfig: {
548
- partnerId: "p",
549
- callbackUrl: "",
550
- useSandbox: true,
551
- },
552
- },
553
- },
554
- },
555
- repository,
556
- );
557
-
558
- manager.beginSubmissionIfNeeded();
559
- await flushMicrotasks();
560
- expect(manager.jobSubmissionState.kind).toBe("failure");
561
- if (manager.jobSubmissionState.kind === "failure") {
562
- expect(manager.jobSubmissionState.error).toBeInstanceOf(
563
- MissingJobTypeException,
564
- );
565
- expect(
566
- (manager.jobSubmissionState.error as MissingJobTypeException).errorCode,
567
- ).toBe(UseSmileIDErrorCode.Builder.MissingJobType);
568
- }
569
- });
570
-
571
- it("beginSubmissionIfNeeded is idempotent — second call while loading is a no-op", async () => {
572
- const repository = new StubRepository();
573
- repository.manual = true;
574
- const manager = makeManager(
575
- buildScreens((screens) => screens.processing()),
576
- vi.fn(),
577
- {
578
- enhancedKYCParams: {
579
- idType: "BVN",
580
- idNumber: "1",
581
- country: "NG",
582
- },
583
- userDetails: SAMPLE_USER_DETAILS,
584
- network: {
585
- config: {
586
- jobType: JobType.enhancedKyc,
587
- token: "k",
588
- partnerConfig: {
589
- partnerId: "p",
590
- callbackUrl: "",
591
- useSandbox: true,
592
- },
593
- },
594
- },
595
- },
596
- repository,
597
- );
598
-
599
- manager.beginSubmissionIfNeeded();
600
- manager.beginSubmissionIfNeeded(); // second call must be ignored
601
- await flushMicrotasks();
602
- expect(repository.received).toHaveLength(1);
603
- });
604
-
605
- it("retrySubmission resets state and re-fires the request", async () => {
606
- const repository = new StubRepository();
607
- repository.result = failure(new Error("transient"));
608
- const manager = makeManager(
609
- buildScreens((screens) => screens.processing()),
610
- vi.fn(),
611
- {
612
- enhancedKYCParams: {
613
- idType: "BVN",
614
- idNumber: "1",
615
- country: "NG",
616
- },
617
- userDetails: SAMPLE_USER_DETAILS,
618
- network: {
619
- config: {
620
- jobType: JobType.enhancedKyc,
621
- token: "k",
622
- partnerConfig: {
623
- partnerId: "p",
624
- callbackUrl: "",
625
- useSandbox: true,
626
- },
627
- },
628
- },
629
- },
630
- repository,
631
- );
632
-
633
- manager.beginSubmissionIfNeeded();
634
- await flushMicrotasks();
635
- expect(manager.jobSubmissionState.kind).toBe("failure");
636
-
637
- repository.result = success(RESPONSE);
638
- manager.retrySubmission();
639
- await flushMicrotasks();
640
-
641
- expect(repository.received).toHaveLength(2);
642
- expect(manager.jobSubmissionState.kind).toBe("success");
643
- });
644
-
645
- it("retrySubmission double-trigger fires exactly one new submission", async () => {
646
- // Concrete scenario: the processing screen's retry button is
647
- // double-tapped after a failed submission. The second tap must not
648
- // reset the in-flight `loading` latch and launch a duplicate job.
649
- const repository = new StubRepository();
650
- repository.result = failure(new Error("transient"));
651
- const manager = makeManager(
652
- buildScreens((screens) => screens.processing()),
653
- vi.fn(),
654
- {
655
- enhancedKYCParams: {
656
- idType: "BVN",
657
- idNumber: "1",
658
- country: "NG",
659
- },
660
- userDetails: SAMPLE_USER_DETAILS,
661
- network: {
662
- config: {
663
- jobType: JobType.enhancedKyc,
664
- token: "k",
665
- partnerConfig: {
666
- partnerId: "p",
667
- callbackUrl: "",
668
- useSandbox: true,
669
- },
670
- },
671
- },
672
- },
673
- repository,
674
- );
675
-
676
- // Initial attempt fails, leaving the retry affordance visible.
677
- manager.beginSubmissionIfNeeded();
678
- await flushMicrotasks();
679
- expect(manager.jobSubmissionState.kind).toBe("failure");
680
- expect(repository.received).toHaveLength(1);
681
-
682
- // The retried submission stays in flight so both taps land while
683
- // the request is loading.
684
- repository.manual = true;
685
- manager.retrySubmission();
686
- manager.retrySubmission(); // double-tap — ignored while in flight
687
-
688
- await flushMicrotasks();
689
- expect(manager.jobSubmissionState.kind).toBe("loading");
690
- // Exactly one new submission: the initial failure plus one retry.
691
- expect(repository.received).toHaveLength(2);
692
- });
693
-
694
- it("does not update state if the manager is disposed mid-submission", async () => {
695
- const repository = new StubRepository();
696
- repository.manual = true;
697
- const manager = makeManager(
698
- buildScreens((screens) => screens.processing()),
699
- vi.fn(),
700
- {
701
- enhancedKYCParams: {
702
- idType: "BVN",
703
- idNumber: "1",
704
- country: "NG",
705
- },
706
- userDetails: SAMPLE_USER_DETAILS,
707
- network: {
708
- config: {
709
- jobType: JobType.enhancedKyc,
710
- token: "k",
711
- partnerConfig: {
712
- partnerId: "p",
713
- callbackUrl: "",
714
- useSandbox: true,
715
- },
716
- },
717
- },
718
- },
719
- repository,
720
- );
721
-
722
- manager.beginSubmissionIfNeeded();
723
- await flushMicrotasks();
724
- expect(manager.jobSubmissionState.kind).toBe("loading");
725
-
726
- manager.dispose();
727
- repository.resolve(success(RESPONSE));
728
- await flushMicrotasks();
729
- // State frozen at loading — no use-after-dispose write.
730
- expect(manager.jobSubmissionState.kind).toBe("loading");
731
- });
732
-
733
- it("transitions to failure when the configured job type is unset", async () => {
734
- const repository = new StubRepository();
735
- const manager = makeManager(
736
- buildScreens((screens) => screens.processing()),
737
- vi.fn(),
738
- {
739
- // network present (so repository is wired) but jobType omitted
740
- network: {
741
- config: {
742
- token: "k",
743
- partnerConfig: {
744
- partnerId: "p",
745
- callbackUrl: "",
746
- useSandbox: true,
747
- },
748
- },
749
- },
750
- },
751
- repository,
752
- );
753
- manager.beginSubmissionIfNeeded();
754
- await flushMicrotasks();
755
- expect(manager.jobSubmissionState.kind).toBe("failure");
756
- expect(repository.received).toHaveLength(0);
757
- });
758
- });
759
-
760
- describe("FlowNavigationManager — request assembly per JobType", () => {
761
- function assembleRequest(
762
- jobType: JobType,
763
- extraConfig: Partial<FlowConfigurationSnapshot> = {},
764
- seedManager: (m: FlowNavigationManager) => void = () => {},
765
- ): JobRequest {
766
- const repository = new StubRepository();
767
- const manager = makeManager(
768
- buildScreens((screens) => screens.processing()),
769
- vi.fn(),
770
- {
771
- ...extraConfig,
772
- network: {
773
- config: {
774
- jobType,
775
- token: "k",
776
- partnerConfig: {
777
- partnerId: "p",
778
- callbackUrl: "",
779
- useSandbox: true,
780
- },
781
- },
782
- },
783
- },
784
- repository,
785
- );
786
- seedManager(manager);
787
- manager.beginSubmissionIfNeeded();
788
- return repository.received[0]!;
789
- }
790
-
791
- it("smartSelfieEnrollment uses captured selfie + liveness", () => {
792
- const request = assembleRequest(
793
- JobType.smartSelfieEnrollment,
794
- { userDetails: SAMPLE_USER_DETAILS },
795
- (m) => {
796
- m.setCapturedSelfie("file:///selfie.jpg", ["file:///l1.jpg"]);
797
- m.setConsent(consentInfo);
798
- },
799
- );
800
- expect(request.jobType).toBe(JobType.smartSelfieEnrollment);
801
- if (request.jobType === JobType.smartSelfieEnrollment) {
802
- expect(request.selfieImage).toBe("file:///selfie.jpg");
803
- expect(request.livenessImages).toEqual(["file:///l1.jpg"]);
804
- expect(request.consent).toEqual(consentInfo);
805
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
806
- }
807
- });
808
-
809
- it("smartSelfieAuthentication uses captured selfie + liveness", () => {
810
- const request = assembleRequest(
811
- JobType.smartSelfieAuthentication,
812
- { userDetails: SAMPLE_USER_DETAILS, userId: "prior-enrollment-user-id" },
813
- (m) => m.setCapturedSelfie("file:///s.jpg", []),
814
- );
815
- expect(request.jobType).toBe(JobType.smartSelfieAuthentication);
816
- if (request.jobType === JobType.smartSelfieAuthentication) {
817
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
818
- expect(request.userId).toBe("prior-enrollment-user-id");
819
- }
820
- });
821
-
822
- it("documentVerification carries front + back paths, country, idType, and userDetails", () => {
823
- const request = assembleRequest(
824
- JobType.documentVerification,
825
- {
826
- documentVerificationParams: { country: "KE", idType: "NATIONAL_ID" },
827
- userDetails: SAMPLE_USER_DETAILS,
828
- },
829
- (m) => {
830
- m.setCapturedSelfie("file:///s.jpg", []);
831
- m.setCapturedFrontDocument("file:///front.jpg");
832
- m.setCapturedBackDocument("file:///back.jpg");
833
- },
834
- );
835
- expect(request.jobType).toBe(JobType.documentVerification);
836
- if (request.jobType === JobType.documentVerification) {
837
- expect(request.frontDocument).toBe("file:///front.jpg");
838
- expect(request.backDocument).toBe("file:///back.jpg");
839
- expect(request.country).toBe("KE");
840
- expect(request.idType).toBe("NATIONAL_ID");
841
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
842
- }
843
- });
844
-
845
- it("documentVerification omits idType when the params leave it unset", () => {
846
- const request = assembleRequest(
847
- JobType.documentVerification,
848
- {
849
- documentVerificationParams: { country: "KE" },
850
- userDetails: SAMPLE_USER_DETAILS,
851
- },
852
- (m) => {
853
- m.setCapturedSelfie("file:///s.jpg", []);
854
- m.setCapturedFrontDocument("file:///front.jpg");
855
- },
856
- );
857
- expect(request.jobType).toBe(JobType.documentVerification);
858
- if (request.jobType === JobType.documentVerification) {
859
- expect(request.idType).toBeUndefined();
860
- expect(request.country).toBe("KE");
861
- }
862
- });
863
-
864
- it("enhancedDocumentVerification produces a distinct request kind with required idType", () => {
865
- // Parity with Android / iOS / Flutter — the enhanced variant lands
866
- // on its own JobRequest kind (and its own repository dispatch case)
867
- // rather than discriminating via a boolean flag on the base kind.
868
- const request = assembleRequest(
869
- JobType.enhancedDocumentVerification,
870
- {
871
- enhancedDocumentVerificationParams: {
872
- country: "ZA",
873
- idType: "PASSPORT",
874
- },
875
- userDetails: SAMPLE_USER_DETAILS,
876
- },
877
- (m) => {
878
- m.setCapturedSelfie("file:///s.jpg", []);
879
- m.setCapturedFrontDocument("file:///front.jpg");
880
- },
881
- );
882
- expect(request.jobType).toBe(JobType.enhancedDocumentVerification);
883
- if (request.jobType === JobType.enhancedDocumentVerification) {
884
- expect(request.frontDocument).toBe("file:///front.jpg");
885
- expect(request.backDocument).toBeUndefined();
886
- expect(request.country).toBe("ZA");
887
- expect(request.idType).toBe("PASSPORT");
888
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
889
- }
890
- });
891
-
892
- it("biometricKyc carries id fields and top-level userDetails", () => {
893
- const request = assembleRequest(
894
- JobType.biometricKyc,
895
- {
896
- biometricKYCParams: {
897
- idType: "PASSPORT",
898
- idNumber: "P1",
899
- country: "NG",
900
- useEnrolledImage: false,
901
- },
902
- userDetails: {
903
- givenNames: "Jane",
904
- lastName: "Doe",
905
- email: "jane@example.test",
906
- phoneNumber: "+2348000000000",
907
- },
908
- },
909
- (m) => m.setCapturedSelfie("file:///s.jpg", []),
910
- );
911
- expect(request.jobType).toBe(JobType.biometricKyc);
912
- if (request.jobType === JobType.biometricKyc) {
913
- expect(request.params.idNumber).toBe("P1");
914
- expect(request.params.country).toBe("NG");
915
- expect(request.userDetails.givenNames).toBe("Jane");
916
- expect(request.userDetails.email).toBe("jane@example.test");
917
- }
918
- });
919
-
920
- it("enhancedKyc carries enhancedKYCParams plus top-level userDetails", () => {
921
- const request = assembleRequest(JobType.enhancedKyc, {
922
- enhancedKYCParams: {
923
- idType: "PASSPORT",
924
- idNumber: "X1",
925
- country: "NG",
926
- },
927
- userDetails: SAMPLE_USER_DETAILS,
928
- });
929
- expect(request.jobType).toBe(JobType.enhancedKyc);
930
- if (request.jobType === JobType.enhancedKyc) {
931
- expect(request.params.idType).toBe("PASSPORT");
932
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
933
- }
934
- });
935
-
936
- it("bvn dispatches through a dedicated `bvn` request variant", () => {
937
- // Concrete scenario: BVN no longer auto-maps onto the
938
- // `/v3/enhanced_kyc` endpoint. The flow navigation manager now
939
- // emits a dedicated `bvn` request kind; the repository rejects it
940
- // with "BVN submission is not yet supported" until the dedicated
941
- // endpoint lands.
942
- const request = assembleRequest(JobType.bvn, {
943
- enhancedKYCParams: {
944
- idType: "BVN",
945
- idNumber: "12345678901",
946
- country: "NG",
947
- },
948
- userDetails: SAMPLE_USER_DETAILS,
949
- });
950
- expect(request.jobType).toBe(JobType.bvn);
951
- if (request.jobType === JobType.bvn) {
952
- expect(request.params.idType).toBe("BVN");
953
- expect(request.params.country).toBe("NG");
954
- }
955
- });
956
-
957
- it("captured consent wins over configuration-supplied consent", () => {
958
- const configured = Object.freeze({
959
- granted: false,
960
- grantedAt: "2026-01-01T00:00:00.000Z",
961
- noticeLanguage: "FR",
962
- noticePrivacyPolicyUrl: "https://configured.test/privacy",
963
- });
964
- const request = assembleRequest(
965
- JobType.enhancedKyc,
966
- {
967
- consentInformation: configured,
968
- enhancedKYCParams: {
969
- idType: "BVN",
970
- idNumber: "1",
971
- country: "NG",
972
- },
973
- userDetails: SAMPLE_USER_DETAILS,
974
- },
975
- (m) => m.setConsent(consentInfo),
976
- );
977
- expect(request.consent).toEqual(consentInfo);
978
- });
979
- });
980
-
981
- describe("FlowNavigationManager — token-provided user details & consent (assembly)", () => {
982
- // Mint a structurally valid JWT with a caller-supplied payload — only
983
- // the base64url-encoded middle segment is decoded.
984
- function makeJwt(payload: Record<string, unknown>): string {
985
- const payloadSegment = Buffer.from(JSON.stringify(payload)).toString(
986
- "base64url",
987
- );
988
- return `eyJhbGciOiJub25lIn0.${payloadSegment}.stub-sig`;
989
- }
990
-
991
- const completeConsentClaim = {
992
- granted: true,
993
- granted_at: "2026-01-01T09:00:00.000Z",
994
- notice_language: "EN",
995
- notice_privacy_policy_url: "https://partner.test/privacy",
996
- } as const;
997
-
998
- const fullBindingToken = makeJwt({
999
- payload: {
1000
- given_names: "pii_abc",
1001
- last_name: "pii_def",
1002
- email: "pii_ghi",
1003
- phone_number: "pii_jkl",
1004
- consent: completeConsentClaim,
1005
- },
1006
- });
1007
-
1008
- // Real tokens minted by the /v3/token deployment (same fixtures as
1009
- // use_smile_id_token_decoder.test.ts): ES256-signed, expired minutes
1010
- // after minting, PII values as opaque vault references. Decoded through
1011
- // the production decoder so the whole flow — decode, screen skip,
1012
- // assembly reduction — runs exactly as in production.
1013
- const MINTED_FULL_BINDING_TOKEN =
1014
- "eyJhbGciOiJFUzI1NiIsImtpZCI6ImtleV8wMWtibWd6bXczZXloOW5jdjlqcG1kNDlqZiIsInR5cCI6IkpXVCJ9." +
1015
- "eyJhcGlfdXJsIjoiaHR0cHM6Ly92My10b2tlbi1jb25zZW50LXBheWxvYWQuYXBpLnNtaWxlaWQuY28vdjMiLCJrZXlfaWQiOiIyY2NjOWMyMy01Y2U3LTRkMGUtYWRkYy1lN2I1NGQ4YjkxZGQiLCJwYXlsb2FkIjp7ImNvbnNlbnQiOnsiZ3JhbnRlZCI6dHJ1ZSwiZ3JhbnRlZF9hdCI6IjIwMjYtMDEtMDFUMDk6MDA6MDAuMDAwWiIsIm5vdGljZV9sYW5ndWFnZSI6IkVOIiwibm90aWNlX3ByaXZhY3lfcG9saWN5X3VybCI6Imh0dHBzOi8vanVtYS5wcml2YWN5LXBvbGljeS5jb20ifSwiY291bnRyeSI6Ik5HIiwiaWRfdHlwZSI6Ik5JTl9WMiIsImVtYWlsIjoicGlpXzAxa3Azczl0NzhmZXg5MXFoNDZ5cDg3cmpxIiwiZ2l2ZW5fbmFtZXMiOiJwaWlfMDFrenJtMTcwdGY2OXJxOTUzOHJ6Z2V0eXoiLCJpZF9udW1iZXIiOiJwaWlfMDFra2dhYTliNWZ2Z2EyMnllZXM1ZjRyNnQiLCJsYXN0X25hbWUiOiJwaWlfMDFrcDNzOXQ3cmU4aHI2ZGVyOXEzbnB6N2MiLCJwaG9uZV9udW1iZXIiOiJwaWlfMDFrenJtdHdkeGZlenJ0dGRmOXQzc3Rzem4iLCJjYWxsYmFja191cmwiOiJjYWxsYmFja18wMWt6cm10d2VmZTV5YWgzbmR2NW03MDc3ZyJ9LCJwYXJ0bmVyX2lkIjoiMTQ4MyIsInBvbGljeSI6MTUsImF1ZCI6InNtaWxlaWQtYXBpIiwiZXhwIjoxNzg2NDYwNzEyLCJpYXQiOjE3ODY0NTk4MTIsImlzcyI6InNtaWxlaWQtYXV0aCJ9." +
1016
- "cuZgo64eEt5vNvND_RvCVpJyTv4rqax9ebkLV4i4uI4raz6fBhazxspbaoErYC0wxwRmn5EhPAdAdDnNKI6tEQ";
1017
-
1018
- const MINTED_NAMES_AND_EMAIL_TOKEN =
1019
- "eyJhbGciOiJFUzI1NiIsImtpZCI6ImtleV8wMWtibWd6bXczZXloOW5jdjlqcG1kNDlqZiIsInR5cCI6IkpXVCJ9." +
1020
- "eyJhcGlfdXJsIjoiaHR0cHM6Ly92My10b2tlbi1jb25zZW50LXBheWxvYWQuYXBpLnNtaWxlaWQuY28vdjMiLCJrZXlfaWQiOiIyY2NjOWMyMy01Y2U3LTRkMGUtYWRkYy1lN2I1NGQ4YjkxZGQiLCJwYXlsb2FkIjp7ImNvbnNlbnQiOnsiZ3JhbnRlZCI6dHJ1ZSwiZ3JhbnRlZF9hdCI6IjIwMjYtMDEtMDFUMDk6MDA6MDAuMDAwWiIsIm5vdGljZV9sYW5ndWFnZSI6IkVOIiwibm90aWNlX3ByaXZhY3lfcG9saWN5X3VybCI6Imh0dHBzOi8vanVtYS5wcml2YWN5LXBvbGljeS5jb20ifSwiZW1haWwiOiJwaWlfMDFrcDNzOXQ3OGZleDkxcWg0NnlwODdyanEiLCJnaXZlbl9uYW1lcyI6InBpaV8wMWt6cm0xNzB0ZjY5cnE5NTM4cnpnZXR5eiIsImxhc3RfbmFtZSI6InBpaV8wMWtwM3M5dDdyZThocjZkZXI5cTNucHo3YyJ9LCJwYXJ0bmVyX2lkIjoiMTQ4MyIsInBvbGljeSI6MTUsImF1ZCI6InNtaWxlaWQtYXBpIiwiZXhwIjoxNzg2NDU5ODcxLCJpYXQiOjE3ODY0NTg5NzEsImlzcyI6InNtaWxlaWQtYXV0aCJ9." +
1021
- "s5BFthU2B1aKxYDYyyWYDmRpLoHibH34r2Lk4OS-wZQC8pmYROjWBiORx6n2_0srmxz_SA2eZo_FHyAr-ew_Zg";
1022
-
1023
- function assemble(
1024
- token: string,
1025
- extraConfig: Partial<FlowConfigurationSnapshot> = {},
1026
- seedManager: (m: FlowNavigationManager) => void = () => {},
1027
- ): {
1028
- readonly repository: StubRepository;
1029
- readonly manager: FlowNavigationManager;
1030
- } {
1031
- const repository = new StubRepository();
1032
- const manager = makeManager(
1033
- buildScreens((screens) => screens.processing()),
1034
- vi.fn(),
1035
- {
1036
- enhancedKYCParams: {
1037
- idType: "PASSPORT",
1038
- idNumber: "X1",
1039
- country: "NG",
1040
- },
1041
- ...extraConfig,
1042
- network: {
1043
- config: {
1044
- jobType: JobType.enhancedKyc,
1045
- token,
1046
- partnerConfig: {
1047
- partnerId: "p",
1048
- callbackUrl: "",
1049
- useSandbox: true,
1050
- },
1051
- },
1052
- },
1053
- },
1054
- repository,
1055
- );
1056
- seedManager(manager);
1057
- manager.beginSubmissionIfNeeded();
1058
- return { repository, manager };
1059
- }
1060
-
1061
- it("assembles without userDetails when the token binds names + a contact field", () => {
1062
- const { repository } = assemble(fullBindingToken);
1063
- expect(repository.received).toHaveLength(1);
1064
- const request = repository.received[0]!;
1065
- expect(request.userDetails).toBeUndefined();
1066
- });
1067
-
1068
- it("omits the consent record when token consent is complete and no local source exists", () => {
1069
- // The DEFAULT_CONSENT granted:false placeholder must NOT be emitted
1070
- // on the token-complete path — the server injects the token's consent.
1071
- const { repository } = assemble(fullBindingToken, {
1072
- userDetails: SAMPLE_USER_DETAILS,
1073
- });
1074
- const request = repository.received[0]!;
1075
- expect(request.consent).toBeUndefined();
1076
- });
1077
-
1078
- it("still throws MissingRequiredFieldException(userDetails) when the token binds names only", async () => {
1079
- const namesOnlyToken = makeJwt({
1080
- payload: { given_names: "pii_abc", last_name: "pii_def" },
1081
- });
1082
- const { repository, manager } = assemble(namesOnlyToken);
1083
- await flushMicrotasks();
1084
- expect(repository.received).toHaveLength(0);
1085
- const state = manager.jobSubmissionState;
1086
- expect(state.kind).toBe("failure");
1087
- if (state.kind === "failure") {
1088
- expect(state.error).toBeInstanceOf(MissingRequiredFieldException);
1089
- expect(
1090
- (state.error as MissingRequiredFieldException).errorDetails,
1091
- ).toEqual({ fieldName: "userDetails" });
1092
- }
1093
- });
1094
-
1095
- it("keeps the granted:false placeholder when token consent is only partial", () => {
1096
- const partialConsentToken = makeJwt({
1097
- payload: {
1098
- given_names: "pii_abc",
1099
- last_name: "pii_def",
1100
- email: "pii_ghi",
1101
- consent: { granted: true, granted_at: "2026-01-01T09:00:00.000Z" },
1102
- },
1103
- });
1104
- const { repository } = assemble(partialConsentToken);
1105
- const request = repository.received[0]!;
1106
- expect(request.consent).toEqual({
1107
- granted: false,
1108
- grantedAt: "",
1109
- noticeLanguage: "",
1110
- noticePrivacyPolicyUrl: "",
1111
- });
1112
- });
1113
-
1114
- it("a complete token consent omits the consent record even when a local one exists", () => {
1115
- // Token data always wins: even a captured local consent is not sent —
1116
- // the part is omitted and the server injects the token's record.
1117
- const { repository } = assemble(
1118
- fullBindingToken,
1119
- { userDetails: SAMPLE_USER_DETAILS },
1120
- (m) => m.setConsent(consentInfo),
1121
- );
1122
- const request = repository.received[0]!;
1123
- expect(request.consent).toBeUndefined();
1124
- });
1125
-
1126
- it("a complete token consent drops the consent screen from the flow", () => {
1127
- const repository = new StubRepository();
1128
- const manager = makeManager(
1129
- buildScreens((screens) => {
1130
- screens.consent((c) => {
1131
- c.partnerName = "Acme";
1132
- c.partnerPrivacyPolicyUrl = "https://example.test/privacy";
1133
- });
1134
- screens.capture((c) => {
1135
- c.captureType = CaptureType.selfie;
1136
- });
1137
- }),
1138
- vi.fn(),
1139
- {
1140
- userDetails: SAMPLE_USER_DETAILS,
1141
- network: {
1142
- config: {
1143
- jobType: JobType.smartSelfieEnrollment,
1144
- token: fullBindingToken,
1145
- partnerConfig: {
1146
- partnerId: "p",
1147
- callbackUrl: "",
1148
- useSandbox: true,
1149
- },
1150
- },
1151
- },
1152
- },
1153
- repository,
1154
- );
1155
- expect(manager.currentScreen?.kind).toBe("capture");
1156
- expect(manager.navigationPath.some((step) => step.kind === "consent")).toBe(
1157
- false,
1158
- );
1159
- });
1160
-
1161
- it("a preset consentInformation is still sent in full when token consent is partial", () => {
1162
- const partialConsentToken = makeJwt({
1163
- payload: { consent: { granted: true } },
1164
- });
1165
- const { repository } = assemble(partialConsentToken, {
1166
- userDetails: SAMPLE_USER_DETAILS,
1167
- consentInformation: consentInfo,
1168
- });
1169
- const request = repository.received[0]!;
1170
- expect(request.consent).toEqual(consentInfo);
1171
- });
1172
-
1173
- it("the minted full-binding token drives the flow end to end with nothing local", () => {
1174
- const repository = new StubRepository();
1175
- const manager = makeManager(
1176
- buildScreens((screens) => {
1177
- screens.consent((c) => {
1178
- c.partnerName = "Acme";
1179
- c.partnerPrivacyPolicyUrl = "https://example.test/privacy";
1180
- });
1181
- screens.capture((c) => {
1182
- c.captureType = CaptureType.selfie;
1183
- });
1184
- screens.processing();
1185
- }),
1186
- vi.fn(),
1187
- {
1188
- network: {
1189
- config: {
1190
- jobType: JobType.smartSelfieEnrollment,
1191
- token: MINTED_FULL_BINDING_TOKEN,
1192
- partnerConfig: {
1193
- partnerId: "p",
1194
- callbackUrl: "",
1195
- useSandbox: true,
1196
- },
1197
- },
1198
- },
1199
- },
1200
- repository,
1201
- );
1202
-
1203
- expect(manager.currentScreen?.kind).toBe("capture");
1204
- expect(manager.navigationPath.some((step) => step.kind === "consent")).toBe(
1205
- false,
1206
- );
1207
-
1208
- manager.setCapturedSelfie("file:///selfie.jpg", ["file:///l1.jpg"]);
1209
- manager.beginSubmissionIfNeeded();
1210
-
1211
- expect(repository.received).toHaveLength(1);
1212
- const request = repository.received[0]!;
1213
- expect(request.userDetails).toBeUndefined();
1214
- expect(request.consent).toBeUndefined();
1215
- });
1216
-
1217
- it("the minted names-and-email token reduces builder details to the unbound phone number", () => {
1218
- const { repository } = assemble(MINTED_NAMES_AND_EMAIL_TOKEN, {
1219
- userDetails: SAMPLE_USER_DETAILS,
1220
- });
1221
- const request = repository.received[0]!;
1222
- expect(request.userDetails).toEqual({ phoneNumber: "+2348000000000" });
1223
- expect(request.consent).toBeUndefined();
1224
- });
1225
-
1226
- it("regression: without a payload claim the request carries userDetails and the placeholder consent", () => {
1227
- const legacyToken = makeJwt({ sdk_config: { livenessImageCount: 5 } });
1228
- const { repository } = assemble(legacyToken, {
1229
- userDetails: SAMPLE_USER_DETAILS,
1230
- });
1231
- const request = repository.received[0]!;
1232
- expect(request.userDetails).toEqual(SAMPLE_USER_DETAILS);
1233
- expect(request.tokenPayload).toBeUndefined();
1234
- expect(request.consent).toEqual({
1235
- granted: false,
1236
- grantedAt: "",
1237
- noticeLanguage: "",
1238
- noticePrivacyPolicyUrl: "",
1239
- });
1240
- });
1241
-
1242
- it("allowOfflineMode skips the token decode — strict legacy assembly applies", async () => {
1243
- const { repository, manager } = assemble(fullBindingToken, {
1244
- config: {
1245
- enableCrashReporting: false,
1246
- enableDebugMode: false,
1247
- allowOfflineMode: true,
1248
- globalPrivacyControl: GlobalPrivacyControl.OptOut,
1249
- },
1250
- });
1251
- await flushMicrotasks();
1252
- // Token binds everything, but offline mode never reads it — the
1253
- // missing builder userDetails still fails assembly.
1254
- expect(repository.received).toHaveLength(0);
1255
- const state = manager.jobSubmissionState;
1256
- expect(state.kind).toBe("failure");
1257
- if (state.kind === "failure") {
1258
- expect(state.error).toBeInstanceOf(MissingRequiredFieldException);
1259
- }
1260
- });
1261
- });
1262
-
1263
- describe("FlowNavigationManager — typed missing-field validation (parity)", () => {
1264
- // Drives a submission to its failure state and returns the surfaced
1265
- // error so we can assert the typed `MissingRequiredFieldException`
1266
- // (with the right `fieldName`) reaches `onResult.failure` — matching
1267
- // the native SDKs, which throw the typed class for every missing field.
1268
- async function failureError(
1269
- jobType: JobType,
1270
- extraConfig: Partial<FlowConfigurationSnapshot> = {},
1271
- seedManager: (m: FlowNavigationManager) => void = () => {},
1272
- ): Promise<unknown> {
1273
- const repository = new StubRepository();
1274
- const manager = makeManager(
1275
- buildScreens((screens) => screens.processing()),
1276
- vi.fn(),
1277
- {
1278
- ...extraConfig,
1279
- network: {
1280
- config: {
1281
- jobType,
1282
- token: "k",
1283
- partnerConfig: {
1284
- partnerId: "p",
1285
- callbackUrl: "",
1286
- useSandbox: true,
1287
- },
1288
- },
1289
- },
1290
- },
1291
- repository,
1292
- );
1293
- seedManager(manager);
1294
- manager.beginSubmissionIfNeeded();
1295
- await flushMicrotasks();
1296
- const state = manager.jobSubmissionState;
1297
- if (state.kind !== "failure") {
1298
- throw new Error(`expected failure state, got ${state.kind}`);
1299
- }
1300
- expect(repository.received).toHaveLength(0);
1301
- return state.error;
1302
- }
1303
-
1304
- it("missing enhancedKYCParams → MissingRequiredFieldException(enhancedKYCParams)", async () => {
1305
- const error = await failureError(JobType.enhancedKyc, {
1306
- userDetails: SAMPLE_USER_DETAILS,
1307
- });
1308
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1309
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1310
- fieldName: "enhancedKYCParams",
1311
- });
1312
- });
1313
-
1314
- it("missing userDetails → MissingRequiredFieldException(userDetails)", async () => {
1315
- const error = await failureError(JobType.enhancedKyc, {
1316
- enhancedKYCParams: { idType: "PASSPORT", idNumber: "X1", country: "NG" },
1317
- });
1318
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1319
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1320
- fieldName: "userDetails",
1321
- });
1322
- });
1323
-
1324
- it("missing selfie → MissingRequiredFieldException(selfieImage)", async () => {
1325
- const error = await failureError(JobType.biometricKyc, {
1326
- biometricKYCParams: {
1327
- idType: "PASSPORT",
1328
- idNumber: "P1",
1329
- country: "NG",
1330
- useEnrolledImage: false,
1331
- },
1332
- userDetails: SAMPLE_USER_DETAILS,
1333
- });
1334
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1335
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1336
- fieldName: "selfieImage",
1337
- });
1338
- });
1339
-
1340
- it("missing front document → MissingRequiredFieldException(frontDocument)", async () => {
1341
- const error = await failureError(JobType.documentVerification, {}, (m) =>
1342
- m.setCapturedSelfie("file:///s.jpg", []),
1343
- );
1344
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1345
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1346
- fieldName: "frontDocument",
1347
- });
1348
- });
1349
-
1350
- it("missing documentVerificationParams → MissingRequiredFieldException(documentVerificationParams)", async () => {
1351
- const error = await failureError(
1352
- JobType.documentVerification,
1353
- { userDetails: SAMPLE_USER_DETAILS },
1354
- (m) => {
1355
- m.setCapturedSelfie("file:///s.jpg", []);
1356
- m.setCapturedFrontDocument("file:///front.jpg");
1357
- },
1358
- );
1359
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1360
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1361
- fieldName: "documentVerificationParams",
1362
- });
1363
- });
1364
-
1365
- it("missing enhancedDocumentVerificationParams → MissingRequiredFieldException(enhancedDocumentVerificationParams)", async () => {
1366
- const error = await failureError(
1367
- JobType.enhancedDocumentVerification,
1368
- { userDetails: SAMPLE_USER_DETAILS },
1369
- (m) => {
1370
- m.setCapturedSelfie("file:///s.jpg", []);
1371
- m.setCapturedFrontDocument("file:///front.jpg");
1372
- },
1373
- );
1374
- expect(error).toBeInstanceOf(MissingRequiredFieldException);
1375
- expect((error as MissingRequiredFieldException).errorDetails).toEqual({
1376
- fieldName: "enhancedDocumentVerificationParams",
1377
- });
1378
- });
1379
- });
1380
-
1381
- describe("FlowNavigationManager — analytics (parity)", () => {
1382
- function captureEvents(): {
1383
- readonly events: UseSmileIDAnalyticsEvent[];
1384
- readonly manager: FlowNavigationManager;
1385
- } {
1386
- const events: UseSmileIDAnalyticsEvent[] = [];
1387
- const manager = makeManager(
1388
- buildScreens((screens) => {
1389
- screens.instructions();
1390
- screens.capture((c) => {
1391
- c.captureType = CaptureType.selfie;
1392
- });
1393
- screens.processing();
1394
- }),
1395
- vi.fn(),
1396
- { onAnalyticsEvent: (event) => events.push(event) },
1397
- );
1398
- return { events, manager };
1399
- }
1400
-
1401
- it("emits flow_started then screen_viewed on construction, each with session_id + timestamp", () => {
1402
- const { events } = captureEvents();
1403
- expect(events.map((e) => e.type)).toEqual([
1404
- "flow_started",
1405
- "screen_viewed",
1406
- ]);
1407
- expect(events[0]?.extras.job_type).toBeDefined();
1408
- expect(events[1]?.extras.screen_name).toBe("instructions");
1409
- for (const event of events) {
1410
- expect(event.extras.session_id).toBeTruthy();
1411
- expect(event.extras.timestamp).toBeTruthy();
1412
- }
1413
- });
1414
-
1415
- it("emits consent_captured / selfie_captured / screen_viewed at the lifecycle points", () => {
1416
- const { events, manager } = captureEvents();
1417
- events.length = 0;
1418
-
1419
- manager.setConsent({
1420
- granted: true,
1421
- grantedAt: "2026-01-01T00:00:00.000Z",
1422
- noticeLanguage: "EN",
1423
- noticePrivacyPolicyUrl: "",
1424
- });
1425
- manager.setCapturedSelfie("file:///s.jpg", [
1426
- "file:///l1.jpg",
1427
- "file:///l2.jpg",
1428
- ]);
1429
- manager.navigateToNext();
1430
-
1431
- const consent = events.find((e) => e.type === "consent_captured");
1432
- expect(consent?.extras.decision).toBe("granted");
1433
- const selfie = events.find((e) => e.type === "selfie_captured");
1434
- expect(selfie?.extras.liveness_image_count).toBe("2");
1435
- const viewed = events.find(
1436
- (e) => e.type === "screen_viewed" && e.extras.screen_name === "capture",
1437
- );
1438
- expect(viewed).toBeDefined();
1439
- });
1440
-
1441
- it("emits flow_completed=failure with error_message on a failed exit", () => {
1442
- const { events, manager } = captureEvents();
1443
- events.length = 0;
1444
- manager.exit({ kind: "failed", error: new Error("boom") });
1445
- const completed = events.find((e) => e.type === "flow_completed");
1446
- expect(completed?.extras.result).toBe("failure");
1447
- expect(completed?.extras.error_message).toBe("boom");
1448
- });
1449
-
1450
- it("emits flow_completed=success with job_id on a completed exit", () => {
1451
- const { events, manager } = captureEvents();
1452
- events.length = 0;
1453
- manager.exit({
1454
- kind: "completed",
1455
- job: { userId: "u", jobId: "job-9", status: "ok", message: "" },
1456
- });
1457
- const completed = events.find((e) => e.type === "flow_completed");
1458
- expect(completed?.extras.result).toBe("success");
1459
- expect(completed?.extras.job_id).toBe("job-9");
1460
- });
1461
-
1462
- it("emits no flow_completed on a cancelled exit (parity with native)", () => {
1463
- const { events, manager } = captureEvents();
1464
- events.length = 0;
1465
- manager.exit({ kind: "cancelled" });
1466
- expect(events.some((e) => e.type === "flow_completed")).toBe(false);
1467
- });
1468
- });
1469
-
1470
- // Microtask flusher — vitest's default scheduler runs Promise.resolve()
1471
- // jobs synchronously when awaited. Two passes covers chains like
1472
- // `_submit` (sets loading → awaits repo → sets success), so by the
1473
- // second flush both transitions have committed.
1474
- async function flushMicrotasks(): Promise<void> {
1475
- await Promise.resolve();
1476
- await Promise.resolve();
1477
- }
1478
-
1479
- describe("FlowNavigationManager.enhancedLivenessEnabled", () => {
1480
- it("is false when no selfie capture step enables enhanced liveness", () => {
1481
- const manager = makeManager(
1482
- buildScreens((s) => {
1483
- s.instructions();
1484
- s.capture((c) => c.selfie(() => {}));
1485
- }),
1486
- );
1487
- expect(manager.enhancedLivenessEnabled).toBe(false);
1488
- });
1489
-
1490
- it("is true when a selfie capture step enables enhanced liveness", () => {
1491
- const manager = makeManager(
1492
- buildScreens((s) => {
1493
- s.capture((c) =>
1494
- c.selfie((selfie) => {
1495
- selfie.enableEnhancedLiveness = true;
1496
- }),
1497
- );
1498
- }),
1499
- );
1500
- expect(manager.enhancedLivenessEnabled).toBe(true);
1501
- });
1502
-
1503
- it("is false for a document-only flow", () => {
1504
- const manager = makeManager(
1505
- buildScreens((s) => {
1506
- s.capture((c) => c.document(() => {}));
1507
- }),
1508
- );
1509
- expect(manager.enhancedLivenessEnabled).toBe(false);
1510
- });
1511
-
1512
- it("documentType reflects the document capture step's configured type", () => {
1513
- const manager = makeManager(
1514
- buildScreens((s) => {
1515
- s.capture((c) => {
1516
- c.captureType = CaptureType.document;
1517
- c.document((d) => {
1518
- d.documentType = DocumentType.SouthAfricaGreenBook;
1519
- });
1520
- });
1521
- }),
1522
- );
1523
- expect(manager.documentType).toBe(DocumentType.SouthAfricaGreenBook);
1524
- });
1525
-
1526
- it("documentType is undefined for a selfie-only flow", () => {
1527
- const manager = makeManager(
1528
- buildScreens((s) => {
1529
- s.capture((c) => c.selfie(() => {}));
1530
- }),
1531
- );
1532
- expect(manager.documentType).toBeUndefined();
1533
- });
1534
- });