@smileid/usesmileid 12.0.0-beta01 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +701 -89
  3. package/dist/camera/camera_defaults.d.ts +14 -9
  4. package/dist/camera/camera_defaults.d.ts.map +1 -1
  5. package/dist/camera/camera_defaults.js +11 -9
  6. package/dist/camera/camera_defaults.js.map +1 -1
  7. package/dist/camera/orientation_degrees.d.ts +5 -6
  8. package/dist/camera/orientation_degrees.d.ts.map +1 -1
  9. package/dist/camera/orientation_degrees.js +5 -6
  10. package/dist/camera/orientation_degrees.js.map +1 -1
  11. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts +11 -0
  12. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts.map +1 -0
  13. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js +17 -0
  14. package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js.map +1 -0
  15. package/dist/core/exception/capture_validation_exceptions.d.ts +1 -0
  16. package/dist/core/exception/capture_validation_exceptions.d.ts.map +1 -1
  17. package/dist/core/exception/capture_validation_exceptions.js +1 -0
  18. package/dist/core/exception/capture_validation_exceptions.js.map +1 -1
  19. package/dist/core/exception/index.d.ts +1 -0
  20. package/dist/core/exception/index.d.ts.map +1 -1
  21. package/dist/core/exception/index.js +1 -0
  22. package/dist/core/exception/index.js.map +1 -1
  23. package/dist/core/exception/use_smile_id_error_code.d.ts +1 -0
  24. package/dist/core/exception/use_smile_id_error_code.d.ts.map +1 -1
  25. package/dist/core/exception/use_smile_id_error_code.js +1 -0
  26. package/dist/core/exception/use_smile_id_error_code.js.map +1 -1
  27. package/dist/core/models/config.d.ts +19 -0
  28. package/dist/core/models/config.d.ts.map +1 -1
  29. package/dist/core/models/document_capture_mode.d.ts +8 -0
  30. package/dist/core/models/document_capture_mode.d.ts.map +1 -1
  31. package/dist/core/models/document_capture_mode.js +24 -0
  32. package/dist/core/models/document_capture_mode.js.map +1 -1
  33. package/dist/core/models/document_type.d.ts +2 -2
  34. package/dist/core/models/document_type.d.ts.map +1 -1
  35. package/dist/core/models/document_type.js +7 -5
  36. package/dist/core/models/document_type.js.map +1 -1
  37. package/dist/core/models/global_privacy_control.d.ts +36 -0
  38. package/dist/core/models/global_privacy_control.d.ts.map +1 -0
  39. package/dist/core/models/global_privacy_control.js +39 -0
  40. package/dist/core/models/global_privacy_control.js.map +1 -0
  41. package/dist/core/models/network_config.d.ts +2 -2
  42. package/dist/core/models/network_config.js +2 -2
  43. package/dist/core/models/result.d.ts +9 -8
  44. package/dist/core/models/result.d.ts.map +1 -1
  45. package/dist/core/models/result.js +5 -6
  46. package/dist/core/models/result.js.map +1 -1
  47. package/dist/data/api/interceptors/smile_auth_interceptor.d.ts.map +1 -1
  48. package/dist/data/api/interceptors/smile_auth_interceptor.js +3 -17
  49. package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
  50. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
  51. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
  52. package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
  53. package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
  54. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
  55. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
  56. package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
  57. package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
  58. package/dist/data/api/smile_id_api.d.ts +1 -1
  59. package/dist/data/api/smile_id_api.d.ts.map +1 -1
  60. package/dist/data/compression/compressible_asset.d.ts +41 -0
  61. package/dist/data/compression/compressible_asset.d.ts.map +1 -0
  62. package/dist/data/compression/compressible_asset.js +34 -0
  63. package/dist/data/compression/compressible_asset.js.map +1 -0
  64. package/dist/data/compression/payload_compression_config.d.ts +36 -0
  65. package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
  66. package/dist/data/compression/payload_compression_config.js +52 -0
  67. package/dist/data/compression/payload_compression_config.js.map +1 -0
  68. package/dist/data/compression/payload_compression_runner.d.ts +29 -0
  69. package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
  70. package/dist/data/compression/payload_compression_runner.js +55 -0
  71. package/dist/data/compression/payload_compression_runner.js.map +1 -0
  72. package/dist/data/compression/payload_compressor.d.ts +40 -0
  73. package/dist/data/compression/payload_compressor.d.ts.map +1 -0
  74. package/dist/data/compression/payload_compressor.js +126 -0
  75. package/dist/data/compression/payload_compressor.js.map +1 -0
  76. package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
  77. package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
  78. package/dist/data/compression/uri_compressible_asset.js +77 -0
  79. package/dist/data/compression/uri_compressible_asset.js.map +1 -0
  80. package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
  81. package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
  82. package/dist/data/dsl/builder/cache_config_builder.js +2 -1
  83. package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
  84. package/dist/data/dsl/builder/config_builder.d.ts +40 -14
  85. package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
  86. package/dist/data/dsl/builder/config_builder.js +40 -14
  87. package/dist/data/dsl/builder/config_builder.js.map +1 -1
  88. package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
  89. package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
  90. package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
  91. package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
  92. package/dist/data/dsl/builder/retry_config_builder.d.ts +19 -4
  93. package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
  94. package/dist/data/dsl/builder/retry_config_builder.js +21 -6
  95. package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
  96. package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
  97. package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
  98. package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
  99. package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
  100. package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
  101. package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
  102. package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
  103. package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
  104. package/dist/data/factory/networking_factory.d.ts.map +1 -1
  105. package/dist/data/factory/networking_factory.js +11 -1
  106. package/dist/data/factory/networking_factory.js.map +1 -1
  107. package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
  108. package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
  109. package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
  110. package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
  111. package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
  112. package/dist/data/security/request_canonicalizer.js +14 -2
  113. package/dist/data/security/request_canonicalizer.js.map +1 -1
  114. package/dist/data/security/security_policy.d.ts +43 -0
  115. package/dist/data/security/security_policy.d.ts.map +1 -0
  116. package/dist/data/security/security_policy.js +61 -0
  117. package/dist/data/security/security_policy.js.map +1 -0
  118. package/dist/data/smile_id_urls.d.ts +1 -1
  119. package/dist/data/smile_id_urls.js +1 -1
  120. package/dist/data/smile_id_urls.js.map +1 -1
  121. package/dist/data/util/retry_util.d.ts +2 -2
  122. package/dist/data/util/retry_util.d.ts.map +1 -1
  123. package/dist/data/util/retry_util.js +7 -1
  124. package/dist/data/util/retry_util.js.map +1 -1
  125. package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
  126. package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
  127. package/dist/data/util/use_smile_id_token_decoder.js +58 -24
  128. package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
  129. package/dist/index.d.ts +2 -2
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +2 -2
  132. package/dist/index.js.map +1 -1
  133. package/dist/l10n/strings_en.d.ts +2 -1
  134. package/dist/l10n/strings_en.d.ts.map +1 -1
  135. package/dist/l10n/strings_en.js +2 -1
  136. package/dist/l10n/strings_en.js.map +1 -1
  137. package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
  138. package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
  139. package/dist/l10n/use_smile_id_localizations.js +3 -0
  140. package/dist/l10n/use_smile_id_localizations.js.map +1 -1
  141. package/dist/metadata/builder_configuration.d.ts +44 -0
  142. package/dist/metadata/builder_configuration.d.ts.map +1 -0
  143. package/dist/metadata/builder_configuration.js +35 -0
  144. package/dist/metadata/builder_configuration.js.map +1 -0
  145. package/dist/metadata/captured_image_properties.d.ts +11 -0
  146. package/dist/metadata/captured_image_properties.d.ts.map +1 -0
  147. package/dist/metadata/captured_image_properties.js +11 -0
  148. package/dist/metadata/captured_image_properties.js.map +1 -0
  149. package/dist/metadata/device_orientation_collector.d.ts +17 -0
  150. package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
  151. package/dist/metadata/device_orientation_collector.js +66 -0
  152. package/dist/metadata/device_orientation_collector.js.map +1 -0
  153. package/dist/metadata/geolocation.d.ts +20 -0
  154. package/dist/metadata/geolocation.d.ts.map +1 -0
  155. package/dist/metadata/geolocation.js +40 -0
  156. package/dist/metadata/geolocation.js.map +1 -0
  157. package/dist/metadata/metadata_configuration_mappers.d.ts +47 -0
  158. package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
  159. package/dist/metadata/metadata_configuration_mappers.js +178 -0
  160. package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
  161. package/dist/metadata/model_configuration.d.ts +41 -0
  162. package/dist/metadata/model_configuration.d.ts.map +1 -0
  163. package/dist/metadata/model_configuration.js +44 -0
  164. package/dist/metadata/model_configuration.js.map +1 -0
  165. package/dist/metadata/optional_native_modules.d.ts +79 -3
  166. package/dist/metadata/optional_native_modules.d.ts.map +1 -1
  167. package/dist/metadata/optional_native_modules.js +108 -3
  168. package/dist/metadata/optional_native_modules.js.map +1 -1
  169. package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
  170. package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
  171. package/dist/metadata/use_smile_id_metadata.js +85 -13
  172. package/dist/metadata/use_smile_id_metadata.js.map +1 -1
  173. package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
  174. package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
  175. package/dist/metadata/use_smile_id_metadata_factory.js +197 -16
  176. package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
  177. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
  178. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
  179. package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
  180. package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
  181. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
  182. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
  183. package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
  184. package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
  185. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
  186. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
  187. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
  188. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
  189. package/dist/presentation/components/icons/index.d.ts +24 -8
  190. package/dist/presentation/components/icons/index.d.ts.map +1 -1
  191. package/dist/presentation/components/icons/index.js +31 -11
  192. package/dist/presentation/components/icons/index.js.map +1 -1
  193. package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
  194. package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
  195. package/dist/presentation/components/use_smile_id_button.js +4 -4
  196. package/dist/presentation/components/use_smile_id_button.js.map +1 -1
  197. package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
  198. package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
  199. package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
  200. package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
  201. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
  202. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
  203. package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
  204. package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
  205. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
  206. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
  207. package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
  208. package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
  209. package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
  210. package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
  211. package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
  212. package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
  213. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
  214. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
  215. package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
  216. package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
  217. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts +5 -2
  218. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
  219. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +9 -6
  220. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
  221. package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
  222. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
  223. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
  224. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
  225. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
  226. package/dist/presentation/components/use_smile_id_instructions_hero.js +25 -5
  227. package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
  228. package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
  229. package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
  230. package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
  231. package/dist/presentation/flow/dsl/builder/config_builder.d.ts +28 -0
  232. package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
  233. package/dist/presentation/flow/dsl/builder/config_builder.js +30 -0
  234. package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
  235. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
  236. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
  237. package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
  238. package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
  239. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +110 -12
  240. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
  241. package/dist/presentation/flow/dsl/builder/screens_builder.js +110 -12
  242. package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
  243. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
  244. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
  245. package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
  246. package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
  247. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
  248. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
  249. package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
  250. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
  251. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
  252. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
  253. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
  254. package/dist/presentation/flow/flow_navigation_manager.d.ts +44 -5
  255. package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
  256. package/dist/presentation/flow/flow_navigation_manager.js +148 -11
  257. package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
  258. package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
  259. package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
  260. package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
  261. package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
  262. package/dist/presentation/flow/model/instructions_defaults.js +74 -26
  263. package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
  264. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
  265. package/dist/presentation/flow/screen/orchestrated_capture_screen.js +48 -14
  266. package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
  267. package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts.map +1 -1
  268. package/dist/presentation/flow/screen/orchestrated_consent_screen.js +3 -1
  269. package/dist/presentation/flow/screen/orchestrated_consent_screen.js.map +1 -1
  270. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
  271. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
  272. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
  273. package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -9
  274. package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
  275. package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
  276. package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
  277. package/dist/presentation/flow/use_smile_id_flow.d.ts.map +1 -1
  278. package/dist/presentation/flow/use_smile_id_flow.js +10 -4
  279. package/dist/presentation/flow/use_smile_id_flow.js.map +1 -1
  280. package/dist/presentation/flow/validation/flow_validator.d.ts.map +1 -1
  281. package/dist/presentation/flow/validation/flow_validator.js +42 -20
  282. package/dist/presentation/flow/validation/flow_validator.js.map +1 -1
  283. package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
  284. package/dist/presentation/flow/validation/job_type_validator.js +14 -0
  285. package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
  286. package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
  287. package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
  288. package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
  289. package/dist/presentation/screen/helpers/capture_ui_state.d.ts +6 -6
  290. package/dist/presentation/screen/helpers/capture_ui_state.d.ts.map +1 -1
  291. package/dist/presentation/screen/helpers/capture_ui_state.js +19 -19
  292. package/dist/presentation/screen/helpers/capture_ui_state.js.map +1 -1
  293. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts +2 -2
  294. package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts.map +1 -1
  295. package/dist/presentation/screen/helpers/ess_turn_haptics.js +6 -6
  296. package/dist/presentation/screen/helpers/ess_turn_haptics.js.map +1 -1
  297. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
  298. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
  299. package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
  300. package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
  301. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts +5 -5
  302. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts.map +1 -1
  303. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +14 -11
  304. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
  305. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts +13 -3
  306. package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts.map +1 -1
  307. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js +48 -6
  308. package/dist/presentation/screen/helpers/use_capture_orientation_lock.js.map +1 -1
  309. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +21 -3
  310. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
  311. package/dist/presentation/screen/use_smile_id_capture_screen.js +188 -32
  312. package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
  313. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts +7 -0
  314. package/dist/presentation/screen/use_smile_id_consent_screen.d.ts.map +1 -1
  315. package/dist/presentation/screen/use_smile_id_consent_screen.js +6 -5
  316. package/dist/presentation/screen/use_smile_id_consent_screen.js.map +1 -1
  317. package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts.map +1 -1
  318. package/dist/presentation/screen/use_smile_id_document_back_instructions.js +5 -13
  319. package/dist/presentation/screen/use_smile_id_document_back_instructions.js.map +1 -1
  320. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
  321. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
  322. package/dist/presentation/screen/use_smile_id_document_preview_screen.js +17 -12
  323. package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
  324. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
  325. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
  326. package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
  327. package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
  328. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -26
  329. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
  330. package/dist/presentation/screen/use_smile_id_preview_screen.js +10 -20
  331. package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
  332. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
  333. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
  334. package/dist/presentation/screen/use_smile_id_processing_screen.js +4 -3
  335. package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
  336. package/dist/presentation/theme/theme.d.ts +1 -1
  337. package/dist/presentation/theme/theme.d.ts.map +1 -1
  338. package/dist/presentation/theme/theme.js +20 -18
  339. package/dist/presentation/theme/theme.js.map +1 -1
  340. package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
  341. package/dist/presentation/utils/locale_utils.d.ts +10 -4
  342. package/dist/presentation/utils/locale_utils.d.ts.map +1 -1
  343. package/dist/presentation/utils/locale_utils.js +13 -5
  344. package/dist/presentation/utils/locale_utils.js.map +1 -1
  345. package/dist/testing/fake_face_analyzer.d.ts +43 -0
  346. package/dist/testing/fake_face_analyzer.d.ts.map +1 -0
  347. package/dist/testing/fake_face_analyzer.js +52 -0
  348. package/dist/testing/fake_face_analyzer.js.map +1 -0
  349. package/dist/testing/index.d.ts +5 -0
  350. package/dist/testing/index.d.ts.map +1 -0
  351. package/dist/testing/index.js +7 -0
  352. package/dist/testing/index.js.map +1 -0
  353. package/dist/testing/scenario_expectations.d.ts +28 -0
  354. package/dist/testing/scenario_expectations.d.ts.map +1 -0
  355. package/dist/testing/scenario_expectations.js +65 -0
  356. package/dist/testing/scenario_expectations.js.map +1 -0
  357. package/dist/testing/scenario_loader.d.ts +11 -0
  358. package/dist/testing/scenario_loader.d.ts.map +1 -0
  359. package/dist/testing/scenario_loader.js +64 -0
  360. package/dist/testing/scenario_loader.js.map +1 -0
  361. package/dist/testing/scripted_scan_results.d.ts +17 -0
  362. package/dist/testing/scripted_scan_results.d.ts.map +1 -0
  363. package/dist/testing/scripted_scan_results.js +52 -0
  364. package/dist/testing/scripted_scan_results.js.map +1 -0
  365. package/package.json +34 -7
  366. package/src/__tests__/dsl.test.ts +51 -1
  367. package/src/__tests__/react_native_mock.tsx +8 -0
  368. package/src/__tests__/setup_react_native.ts +17 -2
  369. package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +5261 -0
  370. package/src/__tests__/snapshots/screens_structural.test.tsx +230 -0
  371. package/src/camera/__tests__/use_smile_id_camera_system.test.ts +103 -0
  372. package/src/camera/camera_defaults.ts +11 -9
  373. package/src/camera/orientation_degrees.ts +5 -6
  374. package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +67 -0
  375. package/src/core/exception/agent_mode_with_enhanced_liveness_exception.ts +20 -0
  376. package/src/core/exception/capture_validation_exceptions.ts +1 -0
  377. package/src/core/exception/index.ts +1 -0
  378. package/src/core/exception/use_smile_id_error_code.ts +1 -0
  379. package/src/core/models/__tests__/document_type.test.ts +7 -5
  380. package/src/core/models/__tests__/flow_models.test.ts +26 -0
  381. package/src/core/models/config.ts +22 -0
  382. package/src/core/models/document_capture_mode.ts +27 -0
  383. package/src/core/models/document_type.ts +7 -5
  384. package/src/core/models/global_privacy_control.ts +45 -0
  385. package/src/core/models/network_config.ts +2 -2
  386. package/src/core/models/result.ts +9 -8
  387. package/src/data/api/__tests__/smile_id_api.test.ts +1 -1
  388. package/src/data/api/interceptors/__tests__/gzip_interceptor.test.ts +83 -0
  389. package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
  390. package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
  391. package/src/data/api/interceptors/smile_auth_interceptor.ts +3 -18
  392. package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
  393. package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
  394. package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
  395. package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +226 -0
  396. package/src/data/compression/compressible_asset.ts +62 -0
  397. package/src/data/compression/payload_compression_config.ts +53 -0
  398. package/src/data/compression/payload_compression_runner.ts +102 -0
  399. package/src/data/compression/payload_compressor.ts +164 -0
  400. package/src/data/compression/uri_compressible_asset.ts +85 -0
  401. package/src/data/dsl/builder/__tests__/config_builders.test.ts +62 -0
  402. package/src/data/dsl/builder/cache_config_builder.ts +3 -1
  403. package/src/data/dsl/builder/config_builder.ts +45 -14
  404. package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
  405. package/src/data/dsl/builder/retry_config_builder.ts +27 -6
  406. package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
  407. package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
  408. package/src/data/factory/__tests__/retry_gzip_mac_composition.test.ts +163 -0
  409. package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +1 -1
  410. package/src/data/factory/networking_factory.ts +14 -1
  411. package/src/data/repository/__tests__/network_retries.test.ts +117 -0
  412. package/src/data/repository/__tests__/use_smile_id_repository.test.ts +1 -1
  413. package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
  414. package/src/data/security/__tests__/request_canonicalizer.test.ts +132 -0
  415. package/src/data/security/__tests__/security_policy.test.ts +96 -0
  416. package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
  417. package/src/data/security/request_canonicalizer.ts +15 -2
  418. package/src/data/security/security_policy.ts +70 -0
  419. package/src/data/smile_id_urls.ts +1 -1
  420. package/src/data/util/__tests__/retry_util.test.ts +25 -0
  421. package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
  422. package/src/data/util/retry_util.ts +12 -3
  423. package/src/data/util/use_smile_id_token_decoder.ts +76 -28
  424. package/src/index.ts +6 -4
  425. package/src/l10n/strings_en.ts +2 -1
  426. package/src/l10n/use_smile_id_localizations.ts +3 -0
  427. package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
  428. package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +254 -0
  429. package/src/metadata/__tests__/metadata_configuration_objects.test.ts +86 -0
  430. package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
  431. package/src/metadata/__tests__/metadata_device_os_android.test.ts +18 -0
  432. package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
  433. package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
  434. package/src/metadata/__tests__/use_smile_id_metadata.test.ts +19 -25
  435. package/src/metadata/builder_configuration.ts +69 -0
  436. package/src/metadata/captured_image_properties.ts +10 -0
  437. package/src/metadata/device_orientation_collector.ts +75 -0
  438. package/src/metadata/geolocation.ts +46 -0
  439. package/src/metadata/metadata_configuration_mappers.ts +248 -0
  440. package/src/metadata/model_configuration.ts +68 -0
  441. package/src/metadata/optional_native_modules.ts +157 -3
  442. package/src/metadata/use_smile_id_metadata.ts +140 -17
  443. package/src/metadata/use_smile_id_metadata_factory.ts +211 -16
  444. package/src/presentation/assets/si_document_green_book_hero_animation.json +1 -4668
  445. package/src/presentation/assets/si_document_hero_animation.json +1 -4799
  446. package/src/presentation/assets/si_document_hero_back_animation.json +1 -2039
  447. package/src/presentation/assets/si_document_passport_hero_animation.json +1 -14491
  448. package/src/presentation/assets/si_ess_all_directions_hero_animation.json +1 -0
  449. package/src/presentation/assets/si_ess_animation_all_directions.json +1 -5575
  450. package/src/presentation/assets/si_selfie_hero_animation.json +1 -1439
  451. package/src/presentation/assets/si_smile_to_capture_animation.json +1 -1439
  452. package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
  453. package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
  454. package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
  455. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +12 -8
  456. package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
  457. package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +71 -0
  458. package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
  459. package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
  460. package/src/presentation/components/icons/index.tsx +65 -18
  461. package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
  462. package/src/presentation/components/use_smile_id_button.tsx +4 -4
  463. package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
  464. package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
  465. package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
  466. package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
  467. package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
  468. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +9 -6
  469. package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
  470. package/src/presentation/components/use_smile_id_instructions_hero.tsx +111 -60
  471. package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
  472. package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +203 -4
  473. package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +49 -0
  474. package/src/presentation/flow/dsl/builder/__tests__/config_builder.test.ts +25 -0
  475. package/src/presentation/flow/dsl/builder/config_builder.ts +35 -0
  476. package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
  477. package/src/presentation/flow/dsl/builder/screens_builder.ts +110 -12
  478. package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
  479. package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
  480. package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
  481. package/src/presentation/flow/flow_navigation_manager.ts +185 -14
  482. package/src/presentation/flow/model/instruction_guideline.ts +6 -0
  483. package/src/presentation/flow/model/instructions_defaults.ts +104 -26
  484. package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +60 -12
  485. package/src/presentation/flow/screen/orchestrated_consent_screen.tsx +5 -0
  486. package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
  487. package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -14
  488. package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
  489. package/src/presentation/flow/use_smile_id_flow.tsx +11 -4
  490. package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +61 -1
  491. package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
  492. package/src/presentation/flow/validation/flow_validator.ts +55 -26
  493. package/src/presentation/flow/validation/job_type_validator.ts +24 -0
  494. package/src/presentation/screen/__tests__/capture_ui_state.test.ts +66 -47
  495. package/src/presentation/screen/__tests__/ess_turn_haptics.test.ts +15 -11
  496. package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
  497. package/src/presentation/screen/__tests__/scan_state_to_overlay_state.test.ts +47 -27
  498. package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +182 -18
  499. package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +1 -1
  500. package/src/presentation/screen/__tests__/use_smile_id_preview_screen.test.tsx +10 -40
  501. package/src/presentation/screen/helpers/__tests__/use_capture_orientation_lock.test.tsx +212 -0
  502. package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
  503. package/src/presentation/screen/helpers/capture_ui_state.ts +27 -27
  504. package/src/presentation/screen/helpers/ess_turn_haptics.ts +9 -9
  505. package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
  506. package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +16 -13
  507. package/src/presentation/screen/helpers/use_capture_orientation_lock.ts +69 -7
  508. package/src/presentation/screen/use_smile_id_capture_screen.tsx +280 -54
  509. package/src/presentation/screen/use_smile_id_consent_screen.tsx +16 -5
  510. package/src/presentation/screen/use_smile_id_document_back_instructions.tsx +14 -23
  511. package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +33 -23
  512. package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
  513. package/src/presentation/screen/use_smile_id_preview_screen.tsx +21 -53
  514. package/src/presentation/screen/use_smile_id_processing_screen.tsx +8 -8
  515. package/src/presentation/theme/theme.ts +21 -19
  516. package/src/presentation/utils/__tests__/locale_utils.test.ts +46 -5
  517. package/src/presentation/utils/force_max_brightness.tsx +4 -4
  518. package/src/presentation/utils/locale_utils.ts +13 -4
  519. package/src/testing/__tests__/fake_face_analyzer.test.ts +42 -0
  520. package/src/testing/__tests__/scenario_expectations.test.ts +110 -0
  521. package/src/testing/__tests__/scenario_loader.test.ts +64 -0
  522. package/src/testing/fake_face_analyzer.ts +82 -0
  523. package/src/testing/index.ts +15 -0
  524. package/src/testing/scenario_expectations.ts +87 -0
  525. package/src/testing/scenario_loader.ts +83 -0
  526. package/src/testing/scripted_scan_results.ts +66 -0
  527. package/dist/camera/frame_processor_plugin.d.ts +0 -28
  528. package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
  529. package/dist/camera/frame_processor_plugin.js +0 -21
  530. package/dist/camera/frame_processor_plugin.js.map +0 -1
  531. package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
  532. package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
  533. package/dist/camera/use_smile_id_frame_processor.js +0 -2
  534. package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
  535. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
  536. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
  537. package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
  538. package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
  539. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
  540. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
  541. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
  542. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
  543. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts +0 -15
  544. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts.map +0 -1
  545. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js +0 -19
  546. package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js.map +0 -1
  547. package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
  548. package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
  549. package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
  550. package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
  551. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
  552. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
  553. package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
  554. package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
  555. package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
  556. package/src/presentation/components/use_smile_id_face_silhouette_overlay.tsx +0 -27
@@ -602,6 +602,55 @@ describe("FlowNavigationManager — submission lifecycle", () => {
602
602
  expect(manager.jobSubmissionState.kind).toBe("success");
603
603
  });
604
604
 
605
+ it("retrySubmission double-trigger fires exactly one new submission", async () => {
606
+ // Concrete scenario: the processing screen's retry button is
607
+ // double-tapped after a failed submission. The second tap must not
608
+ // reset the in-flight `loading` latch and launch a duplicate job.
609
+ const repository = new StubRepository();
610
+ repository.result = failure(new Error("transient"));
611
+ const manager = makeManager(
612
+ buildScreens((screens) => screens.processing()),
613
+ vi.fn(),
614
+ {
615
+ enhancedKYCParams: {
616
+ idType: "BVN",
617
+ idNumber: "1",
618
+ country: "NG",
619
+ },
620
+ userDetails: SAMPLE_USER_DETAILS,
621
+ network: {
622
+ config: {
623
+ jobType: JobType.enhancedKyc,
624
+ token: "k",
625
+ partnerConfig: {
626
+ partnerId: "p",
627
+ callbackUrl: "",
628
+ useSandbox: true,
629
+ },
630
+ },
631
+ },
632
+ },
633
+ repository,
634
+ );
635
+
636
+ // Initial attempt fails, leaving the retry affordance visible.
637
+ manager.beginSubmissionIfNeeded();
638
+ await flushMicrotasks();
639
+ expect(manager.jobSubmissionState.kind).toBe("failure");
640
+ expect(repository.received).toHaveLength(1);
641
+
642
+ // The retried submission stays in flight so both taps land while
643
+ // the request is loading.
644
+ repository.manual = true;
645
+ manager.retrySubmission();
646
+ manager.retrySubmission(); // double-tap — ignored while in flight
647
+
648
+ await flushMicrotasks();
649
+ expect(manager.jobSubmissionState.kind).toBe("loading");
650
+ // Exactly one new submission: the initial failure plus one retry.
651
+ expect(repository.received).toHaveLength(2);
652
+ });
653
+
605
654
  it("does not update state if the manager is disposed mid-submission", async () => {
606
655
  const repository = new StubRepository();
607
656
  repository.manual = true;
@@ -0,0 +1,25 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import * as ScreenOrientation from "expo-screen-orientation";
3
+ import { GlobalPrivacyControl } from "../../../../../core/models/global_privacy_control";
4
+ import { UseSmileIDConfigBuilder } from "../config_builder";
5
+
6
+ describe("UseSmileIDConfigBuilder", () => {
7
+ it("snapshots the documented defaults", () => {
8
+ expect(new UseSmileIDConfigBuilder().build()).toEqual({
9
+ enableCrashReporting: true,
10
+ enableDebugMode: false,
11
+ allowOfflineMode: false,
12
+ globalPrivacyControl: GlobalPrivacyControl.OptOut,
13
+ exitOrientations: ScreenOrientation.OrientationLock.PORTRAIT_UP,
14
+ });
15
+ });
16
+
17
+ it("carries an overridden exit orientation lock into the snapshot", () => {
18
+ const builder = new UseSmileIDConfigBuilder();
19
+ builder.exitOrientations = ScreenOrientation.OrientationLock.DEFAULT;
20
+
21
+ expect(builder.build().exitOrientations).toBe(
22
+ ScreenOrientation.OrientationLock.DEFAULT,
23
+ );
24
+ });
25
+ });
@@ -1,4 +1,6 @@
1
+ import * as ScreenOrientation from "expo-screen-orientation";
1
2
  import type { ConfigOptions } from "../../../../core/models/config";
3
+ import { GlobalPrivacyControl } from "../../../../core/models/global_privacy_control";
2
4
 
3
5
  /**
4
6
  * `b.config((c) => { c.enableCrashReporting = false; ... })`
@@ -8,15 +10,48 @@ import type { ConfigOptions } from "../../../../core/models/config";
8
10
  * populated.
9
11
  */
10
12
  export class UseSmileIDConfigBuilder {
13
+ /**
14
+ * When true (the default), the SDK reports its own crashes to Smile ID's
15
+ * crash-reporting backend. Set false to opt out.
16
+ */
11
17
  enableCrashReporting = true;
18
+
19
+ /**
20
+ * When true, enables verbose SDK debug logging and on-device
21
+ * diagnostics. Defaults to false; leave off in production.
22
+ */
12
23
  enableDebugMode = false;
24
+
25
+ /**
26
+ * When true, captured images are written to disk so the job can be
27
+ * submitted later when connectivity returns. Defaults to false.
28
+ */
13
29
  allowOfflineMode = false;
14
30
 
31
+ /**
32
+ * Consent posture for every session (`global_privacy_control`). Defaults
33
+ * to `GlobalPrivacyControl.OptOut` — the opt-out consent layout is
34
+ * enforced universally and regional detection is ignored. Set
35
+ * `GlobalPrivacyControl.OptIn` to keep the legacy regional mechanics
36
+ * (opt-in inside the EU, opt-out elsewhere).
37
+ */
38
+ globalPrivacyControl: GlobalPrivacyControl = GlobalPrivacyControl.OptOut;
39
+
40
+ /**
41
+ * Orientation lock applied when a capture screen leaves the screen.
42
+ * Defaults to portrait-up; set `ScreenOrientation.OrientationLock.DEFAULT`
43
+ * if your app supports more than one orientation.
44
+ */
45
+ exitOrientations: ScreenOrientation.OrientationLock =
46
+ ScreenOrientation.OrientationLock.PORTRAIT_UP;
47
+
15
48
  build(): ConfigOptions {
16
49
  return Object.freeze({
17
50
  enableCrashReporting: this.enableCrashReporting,
18
51
  enableDebugMode: this.enableDebugMode,
19
52
  allowOfflineMode: this.allowOfflineMode,
53
+ globalPrivacyControl: this.globalPrivacyControl,
54
+ exitOrientations: this.exitOrientations,
20
55
  });
21
56
  }
22
57
  }
@@ -34,7 +34,7 @@ import {
34
34
  */
35
35
 
36
36
  export class FaceAnalyzerScope {
37
- /** Register the face analyzer for this scope. */
37
+ /** Registers a detection backend for this capture type. */
38
38
  add(analyzer: FaceAnalyzer): void {
39
39
  this._analyzer = analyzer;
40
40
  }
@@ -130,7 +130,7 @@ export class FaceAnalyzerScope {
130
130
  }
131
131
 
132
132
  export class DocumentAnalyzerScope {
133
- /** Register the document analyzer for this scope. */
133
+ /** Registers a detection backend for this capture type. */
134
134
  add(analyzer: DocumentAnalyzer): void {
135
135
  this._analyzer = analyzer;
136
136
  }
@@ -143,12 +143,20 @@ export class AnalyzerRegistryBuilder {
143
143
  private _selfieConfig?: FaceConfig | undefined;
144
144
  private _document?: DocumentAnalyzer | undefined;
145
145
 
146
- /** Open a selfie-analyzer registration scope. */
146
+ /**
147
+ * Registers and tunes the analyzer(s) for the selfie capture type.
148
+ * Calling it again for the same capture type replaces the previous
149
+ * registration.
150
+ */
147
151
  forCaptureType(
148
152
  captureType: CaptureType.selfie,
149
153
  block: (a: FaceAnalyzerScope) => void,
150
154
  ): void;
151
- /** Open a document-analyzer registration scope. */
155
+ /**
156
+ * Registers and tunes the analyzer(s) for the document capture type.
157
+ * Calling it again for the same capture type replaces the previous
158
+ * registration.
159
+ */
152
160
  forCaptureType(
153
161
  captureType: CaptureType.document,
154
162
  block: (a: DocumentAnalyzerScope) => void,
@@ -188,6 +196,7 @@ export class AnalyzerRegistryBuilder {
188
196
  export class UseSmileIDMLBuilder {
189
197
  private _analyzers?: AnalyzerRegistryBuilder;
190
198
 
199
+ /** Registers the ML analyzers for the flow, keyed by capture type. */
191
200
  analyzers(block: (a: AnalyzerRegistryBuilder) => void): void {
192
201
  if (!this._analyzers) this._analyzers = new AnalyzerRegistryBuilder();
193
202
  block(this._analyzers);
@@ -30,48 +30,103 @@ export type ButtonSlot = (props: {
30
30
  // --- Per-screen builders ---------------------------------------------------
31
31
 
32
32
  export class ConsentConfigBuilder {
33
+ /** Your company name, shown in the consent copy. */
33
34
  partnerName = "";
34
- /** Partner brand mark rendered next to the Smile ID icon at the top of the consent screen. */
35
+ /**
36
+ * Optional partner logo shown on the consent screen, rendered next to
37
+ * the Smile ID icon at the top.
38
+ */
35
39
  partnerIcon?: ReactNode;
40
+ /** URL of your privacy policy, linked from the consent screen. */
36
41
  partnerPrivacyPolicyUrl?: string;
42
+ /**
43
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
44
+ * true.
45
+ */
37
46
  showAttribution = true;
47
+ /**
48
+ * Callback invoked with the `ConsentInformation` when the user grants
49
+ * consent.
50
+ */
38
51
  onConsentGranted?: (info: ConsentInformation) => void;
52
+ /** Provides a custom allow/agree button in place of the default. */
39
53
  allowButton?: ButtonSlot;
54
+ /** Provides a custom deny/cancel button in place of the default. */
40
55
  denyButton?: ButtonSlot;
41
56
  }
42
57
 
43
58
  export class InstructionsConfigBuilder {
44
- /** Leading title text (title-text colour). Defaults to the localized prefix. */
59
+ /**
60
+ * The leading, non-emphasized part of the instructions screen title.
61
+ * Defaults to the localized prefix.
62
+ */
45
63
  titlePrefix?: string;
46
- /** Emphasized word (primary colour, own line). Defaults to the localized "selfie". */
64
+ /**
65
+ * The emphasized (highlighted) part of the instructions screen title.
66
+ * Defaults to the localized "selfie".
67
+ */
47
68
  titleEmphasis?: string;
48
- /** Lottie hero. Unset uses the selfie hero (or the ESS hero when enhanced liveness is on). */
69
+ /**
70
+ * Name of the hero animation asset shown at the top of the
71
+ * instructions screen. Unset uses the selfie hero (or the ESS hero
72
+ * when enhanced liveness is on).
73
+ */
49
74
  heroAnimation?: HeroAnimationSource;
50
- /** Capture-guidelines section title (rendered uppercase). */
75
+ /** Heading for the list of capture guidelines (rendered uppercase). */
51
76
  guidelinesSectionTitle?: string;
52
- /** Capture-guideline tiles; push to customize. Empty uses the defaults. */
77
+ /** The list of guideline items shown to the user. Empty uses the defaults. */
53
78
  guidelines: InstructionGuideline[] = [];
79
+ /**
80
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
81
+ * true.
82
+ */
54
83
  showAttribution = true;
55
- /** Draw the face-oval ring around the hero animation. */
84
+ /** When true, draws the face-oval ring around the hero animation. */
56
85
  showHeroOval = true;
86
+ /** Provides a custom continue button in place of the default. */
57
87
  continueButton?: ButtonSlot;
58
88
  }
59
89
 
60
90
  export class SelfieCaptureConfigBuilder {
91
+ /**
92
+ * When true, the whole selfie session captures on the rear camera so an
93
+ * assisting agent can point it at the subject. Cannot be combined with
94
+ * {@link enableEnhancedLiveness}.
95
+ */
61
96
  allowAgentMode = false;
97
+ /**
98
+ * When true, uses the enhanced active-liveness capture path. Defaults
99
+ * to false.
100
+ */
62
101
  enableEnhancedLiveness = false;
63
102
  }
64
103
 
65
104
  export class DocumentCaptureConfigBuilder {
66
- /** The document being captured. **Required** — missing it fails validation. */
105
+ /**
106
+ * The kind of document being captured, which drives the capture
107
+ * framing and aspect ratio. **Required** — missing it fails validation.
108
+ */
67
109
  documentType?: DocumentType;
68
- /** When the photo is taken. Defaults to auto-capture with a 10s manual fallback. */
110
+ /**
111
+ * Whether the document is captured automatically when held steady, or
112
+ * manually by shutter. Defaults to auto-capture with a 10s manual
113
+ * fallback.
114
+ */
69
115
  captureMode: DocumentCaptureMode =
70
116
  DocumentCaptureMode.AutoCaptureWithManualFallback();
117
+ /**
118
+ * When true, lets the user pick an existing document image from the
119
+ * gallery. Defaults to false.
120
+ */
71
121
  allowGalleryUpload = false;
122
+ /** When true, captures both the front and back of the document. Defaults to true. */
72
123
  captureBothSides = true;
124
+ /** When true, lets the user skip capturing the back side. Defaults to false. */
73
125
  allowSkipBack = false;
74
- /** Optional aspect ratio hint — e.g. CR-80 ID card = 1.586. */
126
+ /**
127
+ * Optional fixed aspect ratio for the document frame when the ID's
128
+ * dimensions are known in advance — e.g. CR-80 ID card = 1.586.
129
+ */
75
130
  knownIdAspectRatio?: number;
76
131
 
77
132
  /** The `documentType`'s aspect ratio when present, otherwise `knownIdAspectRatio`. */
@@ -81,17 +136,27 @@ export class DocumentCaptureConfigBuilder {
81
136
  }
82
137
 
83
138
  export class CaptureConfigBuilder {
139
+ /** What this screen captures — a selfie or a document. Required. */
84
140
  captureType?: CaptureType;
141
+ /** Provides a custom start/capture button in place of the default. */
85
142
  startButton?: ButtonSlot;
86
143
 
87
144
  private _selfie?: SelfieCaptureConfigBuilder;
88
145
  private _document?: DocumentCaptureConfigBuilder;
89
146
 
147
+ /**
148
+ * Configures selfie-specific capture options (agent mode, enhanced
149
+ * liveness).
150
+ */
90
151
  selfie(block: (s: SelfieCaptureConfigBuilder) => void): void {
91
152
  if (!this._selfie) this._selfie = new SelfieCaptureConfigBuilder();
92
153
  block(this._selfie);
93
154
  }
94
155
 
156
+ /**
157
+ * Configures document-specific capture options (document type, capture
158
+ * mode, gallery upload, two-sided capture).
159
+ */
95
160
  document(block: (d: DocumentCaptureConfigBuilder) => void): void {
96
161
  if (!this._document) this._document = new DocumentCaptureConfigBuilder();
97
162
  block(this._document);
@@ -109,17 +174,31 @@ export class CaptureConfigBuilder {
109
174
  }
110
175
 
111
176
  export class PreviewConfigBuilder {
177
+ /** Whether the preview screen offers a retake action. */
112
178
  allowRetake = true;
179
+ /**
180
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
181
+ * true.
182
+ */
113
183
  showAttribution = true;
114
- continueButton?: ButtonSlot;
115
- cancelButton?: ButtonSlot;
116
184
  }
117
185
 
118
186
  export class ProcessingConfigBuilder {
187
+ /**
188
+ * When true, shows a numeric progress percentage while the job is
189
+ * processing.
190
+ */
119
191
  showProgressPercentage = true;
192
+ /**
193
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
194
+ * true.
195
+ */
120
196
  showAttribution = true;
197
+ /** Provides a custom continue button in place of the default. */
121
198
  continueButton?: ButtonSlot;
199
+ /** Provides a custom retry button in place of the default. */
122
200
  retryButton?: ButtonSlot;
201
+ /** Provides a custom exit button in place of the default. */
123
202
  exitButton?: ButtonSlot;
124
203
  }
125
204
 
@@ -144,30 +223,49 @@ export type ScreensConfig = {
144
223
  export class ScreensBuilder {
145
224
  private _steps: ScreenSpec[] = [];
146
225
 
226
+ /**
227
+ * Adds a consent screen that collects the user's agreement to
228
+ * biometric data processing before capture.
229
+ */
147
230
  consent(block?: (c: ConsentConfigBuilder) => void): void {
148
231
  const config = new ConsentConfigBuilder();
149
232
  block?.(config);
150
233
  this._steps.push({ kind: "consent", config });
151
234
  }
152
235
 
236
+ /**
237
+ * Adds an instructions screen explaining what the user is about to do.
238
+ */
153
239
  instructions(block?: (i: InstructionsConfigBuilder) => void): void {
154
240
  const config = new InstructionsConfigBuilder();
155
241
  block?.(config);
156
242
  this._steps.push({ kind: "instructions", config });
157
243
  }
158
244
 
245
+ /**
246
+ * Adds a capture screen that runs the camera and on-device detection
247
+ * for a selfie or document.
248
+ */
159
249
  capture(block: (c: CaptureConfigBuilder) => void): void {
160
250
  const config = new CaptureConfigBuilder();
161
251
  block(config);
162
252
  this._steps.push({ kind: "capture", config });
163
253
  }
164
254
 
255
+ /**
256
+ * Adds a preview screen that lets the user review the captured image
257
+ * and optionally retake it.
258
+ */
165
259
  preview(block?: (p: PreviewConfigBuilder) => void): void {
166
260
  const config = new PreviewConfigBuilder();
167
261
  block?.(config);
168
262
  this._steps.push({ kind: "preview", config });
169
263
  }
170
264
 
265
+ /**
266
+ * Adds a processing screen shown while the job is submitted, displaying
267
+ * success, failure, or retry states.
268
+ */
171
269
  processing(block?: (p: ProcessingConfigBuilder) => void): void {
172
270
  const config = new ProcessingConfigBuilder();
173
271
  block?.(config);
@@ -27,23 +27,40 @@ export type ThemeConfiguration = {
27
27
  * picks light or dark at mount time based on the active color scheme.
28
28
  */
29
29
  export class ThemeConfigBuilder {
30
+ /** Primary brand color used for key actions and accents. */
30
31
  primaryColor?: AdaptiveColor;
32
+
33
+ /**
34
+ * Foreground color used on top of the primary color (for example
35
+ * button text).
36
+ */
31
37
  primaryForeground?: AdaptiveColor;
38
+
39
+ /** Secondary color used for less prominent surfaces and actions. */
32
40
  secondaryColor?: AdaptiveColor;
41
+
42
+ /** Accent color used for highlights and selected states. */
33
43
  accentColor?: AdaptiveColor;
34
44
 
45
+ /** Optional font family applied to all SDK text. */
35
46
  fontFamily?: string;
36
47
 
48
+ /** Corner radius applied to buttons. */
37
49
  buttonShape?: number;
50
+
51
+ /** Corner radius applied to cards and surfaces. */
38
52
  cardShape?: number;
39
53
 
40
- /** Helper to create an `AdaptiveColor` with explicit light/dark values. */
54
+ /**
55
+ * Builds an adaptive color that resolves to the light or dark value
56
+ * based on the active appearance.
57
+ */
41
58
  color(light: string, dark: string): AdaptiveColor {
42
59
  return Object.freeze({ light, dark });
43
60
  }
44
61
 
45
62
  /**
46
- * Helper to create a button/card shape value. Returns the input
63
+ * Builds a corner-shape value from the given radius. Returns the input
47
64
  * radius unchanged — React Native resolves shape at render time via
48
65
  * `borderRadius`, so the `buttonShape` / `cardShape` properties are
49
66
  * plain numbers.
@@ -10,10 +10,12 @@ import {
10
10
  import type { FlowBuildResult } from "./flow_build_result";
11
11
 
12
12
  /**
13
- * Top-level partner entry point. Configures the flow declaratively
14
- * via the `builder` closure, then renders the result. The component
15
- * owns the build-and-dispatch lifecycle internally — partners never
16
- * touch the intermediate [FlowBuildResult].
13
+ * Entry point for a UseSmileID identity-verification flow. Host this in
14
+ * your UI and configure the flow inside the builder closure — declare
15
+ * the screens, network credentials, theme, and ML analyzers, then handle
16
+ * the terminal outcome via `onResult`. The component owns the
17
+ * build-and-dispatch lifecycle internally — partners never touch the
18
+ * intermediate [FlowBuildResult].
17
19
  *
18
20
  * export function VerifyScreen({ onComplete }) {
19
21
  * return (
@@ -97,20 +97,20 @@ export class UseSmileIDFlowBuilder {
97
97
  localizations?: UseSmileIDLocalizations;
98
98
 
99
99
  /**
100
- * Notified when the flow completes (success or failure). Defaults
101
- * to a no-op so partners who don't need result handling still get
102
- * a valid configuration; in production set this to wire the
103
- * server-issued `JobSubmissionResponse` (`userId` / `jobId` /
104
- * `status` / `message` / `createdAt`) into the partner's job-status
105
- * pipeline.
100
+ * Invoked once when the flow terminates — with the submitted job on
101
+ * success, a typed error on failure, or a cancellation when the user
102
+ * exits before completing. Wire the returned user id / job id into
103
+ * your job-status pipeline. Defaults to a no-op so partners who don't
104
+ * need result handling still get a valid configuration; the
105
+ * server-issued `JobSubmissionResponse` carries `userId` / `jobId` /
106
+ * `status` / `message` / `createdAt`.
106
107
  */
107
108
  onResult: (result: UseSmileIDResult<JobSubmissionResponse>) => void =
108
109
  () => {};
109
110
 
110
111
  /**
111
- * Optional. Notified for each analytics event during the flow.
112
- * Stub note: orchestrator does not yet emit events — see
113
- * `docs/Architecture.md § Rollout`.
112
+ * Invoked for every analytics event the SDK emits during the flow.
113
+ * Optional — leave unset to ignore analytics.
114
114
  */
115
115
  onAnalyticsEvent?: (event: UseSmileIDAnalyticsEvent) => void;
116
116
 
@@ -123,11 +123,12 @@ export class UseSmileIDFlowBuilder {
123
123
  private _screens?: ScreensBuilder;
124
124
 
125
125
  /**
126
- * `b.config((c) => { c.enableCrashReporting = false; })`
126
+ * Configures global SDK feature flags (debug mode, offline mode, crash
127
+ * reporting). Repeated calls compose against the same configuration —
128
+ * `enableCrashReporting` set in one call and `enableDebugMode` set in
129
+ * another both end up on the final config.
127
130
  *
128
- * Compose-friendly: repeated calls reuse the same builder, so
129
- * `enableCrashReporting` set in one call and `enableDebugMode` set
130
- * in another both end up on the final config.
131
+ * `b.config((c) => { c.enableCrashReporting = false; })`
131
132
  */
132
133
  config(block: (c: UseSmileIDConfigBuilder) => void): void {
133
134
  if (!this._config) this._config = new UseSmileIDConfigBuilder();
@@ -135,7 +136,10 @@ export class UseSmileIDFlowBuilder {
135
136
  }
136
137
 
137
138
  /**
138
- * `b.theme((t) => { t.primaryColor = '#1A73E8'; t.buttonShape = 12; })`
139
+ * Configures the visual theme — colors, fonts, and corner shapes —
140
+ * applied to every SDK screen in the flow.
141
+ *
142
+ * `b.theme((t) => { t.primaryColor = t.color('#1A73E8', '#4DA3FF'); t.buttonShape = 12; })`
139
143
  *
140
144
  * Each call replaces the prior theme builder — partners typically
141
145
  * configure the theme in one place, and accumulating across helpers
@@ -148,6 +152,10 @@ export class UseSmileIDFlowBuilder {
148
152
  }
149
153
 
150
154
  /**
155
+ * Configures the network stack: partner credentials, job type,
156
+ * timeouts, retry policy, response cache, and custom interceptors.
157
+ * Required for any flow that submits a job.
158
+ *
151
159
  * `b.network((n) => { n.config((c) => { c.partnerConfig((p) => { p.partnerId = ...; }); }); })`
152
160
  *
153
161
  * Each call replaces the prior network builder. Network config
@@ -160,6 +168,9 @@ export class UseSmileIDFlowBuilder {
160
168
  }
161
169
 
162
170
  /**
171
+ * Registers the on-device ML analyzers used for face and document
172
+ * detection, keyed by capture type.
173
+ *
163
174
  * `b.ml((m) => { m.analyzers((a) => { a.forCaptureType(CaptureType.selfie, (face) => face.add(useSmileIDVisionFace)); }); })`
164
175
  */
165
176
  ml(block: (m: UseSmileIDMLBuilder) => void): void {
@@ -168,6 +179,10 @@ export class UseSmileIDFlowBuilder {
168
179
  }
169
180
 
170
181
  /**
182
+ * Declares the ordered sequence of screens the flow presents. Screens
183
+ * render in the order they are added; the same screen type may be
184
+ * added more than once.
185
+ *
171
186
  * `b.screens((screens) => { screens.instructions(); screens.capture((c) => { c.captureType = CaptureType.selfie; }); })`
172
187
  *
173
188
  * Each screen-builder call appends a step to the orchestrator's
@@ -179,10 +194,11 @@ export class UseSmileIDFlowBuilder {
179
194
  }
180
195
 
181
196
  /**
182
- * Quick triage of the in-progress builder state. Today the only
183
- * rule it surfaces is the empty-screens-block error — `b.screens`
184
- * must register at least one screen before the builder can produce
185
- * a flow.
197
+ * Runs a pre-flight check of the current builder configuration and
198
+ * returns a `ValidationState` describing any blocking issues, without
199
+ * throwing. Today the only rule it surfaces is the empty-screens-block
200
+ * error — `b.screens` must register at least one screen before the
201
+ * builder can produce a flow.
186
202
  *
187
203
  * The full rule set (screen ordering, dependency rules, KYC and
188
204
  * consent payload validation, etc.) runs inside `build()` and is
@@ -190,6 +206,8 @@ export class UseSmileIDFlowBuilder {
190
206
  * the full picture during configuration should call
191
207
  * `useSmileIDBuilder(...)` and pattern-match on the returned
192
208
  * `result.kind`.
209
+ *
210
+ * @returns a `ValidationState` describing any blocking issues.
193
211
  */
194
212
  validate(): ValidationState {
195
213
  return ValidationState.invalid(
@@ -198,35 +216,38 @@ export class UseSmileIDFlowBuilder {
198
216
  }
199
217
 
200
218
  /**
201
- * Validate a `ConsentInformation` payload in isolation — useful
202
- * when the source of truth is dynamic (e.g. a payload pulled from
203
- * partner storage or a remote config) and the partner wants to
204
- * pre-flight it before assigning to `b.consentInformation`.
219
+ * Validates a `ConsentInformation` payload in isolation and returns a
220
+ * `ValidationState`, without throwing. Useful when the payload comes
221
+ * from dynamic partner storage or remote config — pre-flight it before
222
+ * assigning to `b.consentInformation`.
205
223
  */
206
224
  validateConsent(consent: ConsentInformation): ValidationState {
207
225
  return ValidationState.invalid(runConsentValidation(consent));
208
226
  }
209
227
 
210
228
  /**
211
- * Validate an `EnhancedKYCParams` payload in isolation — useful
212
- * when the partner pulls KYC fields from a form or remote config
213
- * and wants to pre-flight them before assigning to
214
- * `b.enhancedKYCParams`.
229
+ * Validates an `EnhancedKYCParams` payload in isolation and returns a
230
+ * `ValidationState`, without throwing. Useful when the partner pulls
231
+ * KYC fields from a form or remote config and wants to pre-flight them
232
+ * before assigning to `b.enhancedKYCParams`.
215
233
  */
216
234
  validateEnhancedKYCParams(params: EnhancedKYCParams): ValidationState {
217
235
  return ValidationState.invalid(runEnhancedKYCParamsValidation(params));
218
236
  }
219
237
 
220
238
  /**
221
- * Validate a `BiometricKYCParams` payload in isolation. Same
222
- * semantics as `validateEnhancedKYCParams` — same field rules,
223
- * different param shape.
239
+ * Validates a `BiometricKYCParams` payload in isolation and returns a
240
+ * `ValidationState`, without throwing.
224
241
  */
225
242
  validateBiometricKYCParams(params: BiometricKYCParams): ValidationState {
226
243
  return ValidationState.invalid(runBiometricKYCParamsValidation(params));
227
244
  }
228
245
 
229
- /** Validate a `DocumentVerificationParams` payload in isolation. */
246
+ /**
247
+ * Validates a `DocumentVerificationParams` payload in isolation and
248
+ * returns a `ValidationState`, without throwing. Only `country` is
249
+ * required; `idType` is optional.
250
+ */
230
251
  validateDocumentVerificationParams(
231
252
  params: DocumentVerificationParams,
232
253
  ): ValidationState {
@@ -235,7 +256,11 @@ export class UseSmileIDFlowBuilder {
235
256
  );
236
257
  }
237
258
 
238
- /** Validate an `EnhancedDocumentVerificationParams` payload in isolation. */
259
+ /**
260
+ * Validates an `EnhancedDocumentVerificationParams` payload in
261
+ * isolation and returns a `ValidationState`, without throwing. Both
262
+ * `country` and `idType` are required.
263
+ */
239
264
  validateEnhancedDocumentVerificationParams(
240
265
  params: EnhancedDocumentVerificationParams,
241
266
  ): ValidationState {
@@ -245,11 +270,12 @@ export class UseSmileIDFlowBuilder {
245
270
  }
246
271
 
247
272
  /**
248
- * Validate a `UserDetails` payload in isolation — useful when the
249
- * partner pulls user PII from a form or remote config and wants to
250
- * pre-flight it before assigning to `b.userDetails`. Surfaces the
251
- * same dotted-path field names (`userDetails.givenNames` etc.) that
252
- * the in-build validator emits.
273
+ * Validates a `UserDetails` payload in isolation and returns a
274
+ * `ValidationState`, without throwing. Useful when the partner pulls
275
+ * user PII from a form or remote config and wants to pre-flight it
276
+ * before assigning to `b.userDetails`. Surfaces the same dotted-path
277
+ * field names (`userDetails.givenNames` etc.) that the in-build
278
+ * validator emits.
253
279
  */
254
280
  validateUserDetails(userDetails: UserDetails): ValidationState {
255
281
  return ValidationState.invalid(runUserDetailsValidation(userDetails));