@smileid/usesmileid 12.0.0-beta01 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/CHANGELOG.md +11 -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/models/document_capture_mode.d.ts +8 -0
  12. package/dist/core/models/document_capture_mode.d.ts.map +1 -1
  13. package/dist/core/models/document_capture_mode.js +24 -0
  14. package/dist/core/models/document_capture_mode.js.map +1 -1
  15. package/dist/core/models/document_type.d.ts +2 -2
  16. package/dist/core/models/document_type.d.ts.map +1 -1
  17. package/dist/core/models/document_type.js +6 -4
  18. package/dist/core/models/document_type.js.map +1 -1
  19. package/dist/core/models/result.d.ts +9 -8
  20. package/dist/core/models/result.d.ts.map +1 -1
  21. package/dist/core/models/result.js +5 -6
  22. package/dist/core/models/result.js.map +1 -1
  23. package/dist/data/api/interceptors/smile_auth_interceptor.js +1 -1
  24. package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
  25. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
  26. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
  27. package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
  28. package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
  29. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
  30. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
  31. package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
  32. package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
  33. package/dist/data/compression/compressible_asset.d.ts +41 -0
  34. package/dist/data/compression/compressible_asset.d.ts.map +1 -0
  35. package/dist/data/compression/compressible_asset.js +34 -0
  36. package/dist/data/compression/compressible_asset.js.map +1 -0
  37. package/dist/data/compression/payload_compression_config.d.ts +36 -0
  38. package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
  39. package/dist/data/compression/payload_compression_config.js +52 -0
  40. package/dist/data/compression/payload_compression_config.js.map +1 -0
  41. package/dist/data/compression/payload_compression_runner.d.ts +29 -0
  42. package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
  43. package/dist/data/compression/payload_compression_runner.js +55 -0
  44. package/dist/data/compression/payload_compression_runner.js.map +1 -0
  45. package/dist/data/compression/payload_compressor.d.ts +40 -0
  46. package/dist/data/compression/payload_compressor.d.ts.map +1 -0
  47. package/dist/data/compression/payload_compressor.js +126 -0
  48. package/dist/data/compression/payload_compressor.js.map +1 -0
  49. package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
  50. package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
  51. package/dist/data/compression/uri_compressible_asset.js +77 -0
  52. package/dist/data/compression/uri_compressible_asset.js.map +1 -0
  53. package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
  54. package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
  55. package/dist/data/dsl/builder/cache_config_builder.js +2 -1
  56. package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
  57. package/dist/data/dsl/builder/config_builder.d.ts +40 -14
  58. package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
  59. package/dist/data/dsl/builder/config_builder.js +40 -14
  60. package/dist/data/dsl/builder/config_builder.js.map +1 -1
  61. package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
  62. package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
  63. package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
  64. package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
  65. package/dist/data/dsl/builder/retry_config_builder.d.ts +16 -1
  66. package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
  67. package/dist/data/dsl/builder/retry_config_builder.js +16 -1
  68. package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
  69. package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
  70. package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
  71. package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
  72. package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
  73. package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
  74. package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
  75. package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
  76. package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
  77. package/dist/data/factory/networking_factory.d.ts.map +1 -1
  78. package/dist/data/factory/networking_factory.js +11 -1
  79. package/dist/data/factory/networking_factory.js.map +1 -1
  80. package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
  81. package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
  82. package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
  83. package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
  84. package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
  85. package/dist/data/security/request_canonicalizer.js +14 -2
  86. package/dist/data/security/request_canonicalizer.js.map +1 -1
  87. package/dist/data/security/security_policy.d.ts +43 -0
  88. package/dist/data/security/security_policy.d.ts.map +1 -0
  89. package/dist/data/security/security_policy.js +61 -0
  90. package/dist/data/security/security_policy.js.map +1 -0
  91. package/dist/data/util/retry_util.d.ts +1 -1
  92. package/dist/data/util/retry_util.d.ts.map +1 -1
  93. package/dist/data/util/retry_util.js +2 -1
  94. package/dist/data/util/retry_util.js.map +1 -1
  95. package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
  96. package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
  97. package/dist/data/util/use_smile_id_token_decoder.js +58 -24
  98. package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
  99. package/dist/l10n/strings_en.d.ts +2 -1
  100. package/dist/l10n/strings_en.d.ts.map +1 -1
  101. package/dist/l10n/strings_en.js +2 -1
  102. package/dist/l10n/strings_en.js.map +1 -1
  103. package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
  104. package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
  105. package/dist/l10n/use_smile_id_localizations.js +3 -0
  106. package/dist/l10n/use_smile_id_localizations.js.map +1 -1
  107. package/dist/metadata/builder_configuration.d.ts +39 -0
  108. package/dist/metadata/builder_configuration.d.ts.map +1 -0
  109. package/dist/metadata/builder_configuration.js +34 -0
  110. package/dist/metadata/builder_configuration.js.map +1 -0
  111. package/dist/metadata/captured_image_properties.d.ts +11 -0
  112. package/dist/metadata/captured_image_properties.d.ts.map +1 -0
  113. package/dist/metadata/captured_image_properties.js +11 -0
  114. package/dist/metadata/captured_image_properties.js.map +1 -0
  115. package/dist/metadata/device_orientation_collector.d.ts +17 -0
  116. package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
  117. package/dist/metadata/device_orientation_collector.js +66 -0
  118. package/dist/metadata/device_orientation_collector.js.map +1 -0
  119. package/dist/metadata/geolocation.d.ts +20 -0
  120. package/dist/metadata/geolocation.d.ts.map +1 -0
  121. package/dist/metadata/geolocation.js +40 -0
  122. package/dist/metadata/geolocation.js.map +1 -0
  123. package/dist/metadata/metadata_configuration_mappers.d.ts +48 -0
  124. package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
  125. package/dist/metadata/metadata_configuration_mappers.js +171 -0
  126. package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
  127. package/dist/metadata/model_configuration.d.ts +41 -0
  128. package/dist/metadata/model_configuration.d.ts.map +1 -0
  129. package/dist/metadata/model_configuration.js +44 -0
  130. package/dist/metadata/model_configuration.js.map +1 -0
  131. package/dist/metadata/optional_native_modules.d.ts +79 -3
  132. package/dist/metadata/optional_native_modules.d.ts.map +1 -1
  133. package/dist/metadata/optional_native_modules.js +108 -3
  134. package/dist/metadata/optional_native_modules.js.map +1 -1
  135. package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
  136. package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
  137. package/dist/metadata/use_smile_id_metadata.js +85 -13
  138. package/dist/metadata/use_smile_id_metadata.js.map +1 -1
  139. package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
  140. package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
  141. package/dist/metadata/use_smile_id_metadata_factory.js +184 -12
  142. package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
  143. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
  144. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
  145. package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
  146. package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
  147. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
  148. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
  149. package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
  150. package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
  151. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
  152. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
  153. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
  154. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
  155. package/dist/presentation/components/icons/index.d.ts +24 -8
  156. package/dist/presentation/components/icons/index.d.ts.map +1 -1
  157. package/dist/presentation/components/icons/index.js +31 -11
  158. package/dist/presentation/components/icons/index.js.map +1 -1
  159. package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
  160. package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
  161. package/dist/presentation/components/use_smile_id_button.js +4 -4
  162. package/dist/presentation/components/use_smile_id_button.js.map +1 -1
  163. package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
  164. package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
  165. package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
  166. package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
  167. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
  168. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
  169. package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
  170. package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
  171. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
  172. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
  173. package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
  174. package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
  175. package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
  176. package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
  177. package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
  178. package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
  179. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
  180. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
  181. package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
  182. package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
  183. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
  184. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +1 -3
  185. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
  186. package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
  187. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
  188. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
  189. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
  190. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
  191. package/dist/presentation/components/use_smile_id_instructions_hero.js +18 -3
  192. package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
  193. package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
  194. package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
  195. package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
  196. package/dist/presentation/flow/dsl/builder/config_builder.d.ts +12 -0
  197. package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
  198. package/dist/presentation/flow/dsl/builder/config_builder.js +12 -0
  199. package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
  200. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
  201. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
  202. package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
  203. package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
  204. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +111 -10
  205. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
  206. package/dist/presentation/flow/dsl/builder/screens_builder.js +111 -10
  207. package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
  208. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
  209. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
  210. package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
  211. package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
  212. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
  213. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
  214. package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
  215. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
  216. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
  217. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
  218. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
  219. package/dist/presentation/flow/flow_navigation_manager.d.ts +39 -4
  220. package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
  221. package/dist/presentation/flow/flow_navigation_manager.js +141 -10
  222. package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
  223. package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
  224. package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
  225. package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
  226. package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
  227. package/dist/presentation/flow/model/instructions_defaults.js +73 -25
  228. package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
  229. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
  230. package/dist/presentation/flow/screen/orchestrated_capture_screen.js +36 -12
  231. package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
  232. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
  233. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
  234. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
  235. package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -1
  236. package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
  237. package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
  238. package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
  239. package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
  240. package/dist/presentation/flow/validation/job_type_validator.js +14 -0
  241. package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
  242. package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
  243. package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
  244. package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
  245. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
  246. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
  247. package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
  248. package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
  249. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +3 -0
  250. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
  251. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +17 -1
  252. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
  253. package/dist/presentation/screen/use_smile_id_capture_screen.js +153 -18
  254. package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
  255. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
  256. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
  257. package/dist/presentation/screen/use_smile_id_document_preview_screen.js +16 -11
  258. package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
  259. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
  260. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
  261. package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
  262. package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
  263. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -6
  264. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
  265. package/dist/presentation/screen/use_smile_id_preview_screen.js +9 -8
  266. package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
  267. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
  268. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
  269. package/dist/presentation/screen/use_smile_id_processing_screen.js +3 -2
  270. package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
  271. package/dist/presentation/theme/theme.d.ts +1 -1
  272. package/dist/presentation/theme/theme.d.ts.map +1 -1
  273. package/dist/presentation/theme/theme.js +20 -18
  274. package/dist/presentation/theme/theme.js.map +1 -1
  275. package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
  276. package/package.json +26 -6
  277. package/src/__tests__/react_native_mock.tsx +8 -0
  278. package/src/camera/camera_defaults.ts +11 -9
  279. package/src/camera/orientation_degrees.ts +5 -6
  280. package/src/core/models/__tests__/document_type.test.ts +6 -4
  281. package/src/core/models/document_capture_mode.ts +27 -0
  282. package/src/core/models/document_type.ts +6 -4
  283. package/src/core/models/result.ts +9 -8
  284. package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
  285. package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
  286. package/src/data/api/interceptors/smile_auth_interceptor.ts +1 -1
  287. package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
  288. package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
  289. package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
  290. package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +222 -0
  291. package/src/data/compression/compressible_asset.ts +62 -0
  292. package/src/data/compression/payload_compression_config.ts +53 -0
  293. package/src/data/compression/payload_compression_runner.ts +102 -0
  294. package/src/data/compression/payload_compressor.ts +164 -0
  295. package/src/data/compression/uri_compressible_asset.ts +85 -0
  296. package/src/data/dsl/builder/cache_config_builder.ts +3 -1
  297. package/src/data/dsl/builder/config_builder.ts +45 -14
  298. package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
  299. package/src/data/dsl/builder/retry_config_builder.ts +22 -1
  300. package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
  301. package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
  302. package/src/data/factory/networking_factory.ts +14 -1
  303. package/src/data/repository/__tests__/network_retries.test.ts +117 -0
  304. package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
  305. package/src/data/security/__tests__/security_policy.test.ts +96 -0
  306. package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
  307. package/src/data/security/request_canonicalizer.ts +15 -2
  308. package/src/data/security/security_policy.ts +70 -0
  309. package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
  310. package/src/data/util/retry_util.ts +3 -2
  311. package/src/data/util/use_smile_id_token_decoder.ts +76 -28
  312. package/src/l10n/strings_en.ts +2 -1
  313. package/src/l10n/use_smile_id_localizations.ts +3 -0
  314. package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
  315. package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +215 -0
  316. package/src/metadata/__tests__/metadata_configuration_objects.test.ts +85 -0
  317. package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
  318. package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
  319. package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
  320. package/src/metadata/__tests__/use_smile_id_metadata.test.ts +18 -24
  321. package/src/metadata/builder_configuration.ts +63 -0
  322. package/src/metadata/captured_image_properties.ts +10 -0
  323. package/src/metadata/device_orientation_collector.ts +75 -0
  324. package/src/metadata/geolocation.ts +46 -0
  325. package/src/metadata/metadata_configuration_mappers.ts +234 -0
  326. package/src/metadata/model_configuration.ts +68 -0
  327. package/src/metadata/optional_native_modules.ts +157 -3
  328. package/src/metadata/use_smile_id_metadata.ts +140 -17
  329. package/src/metadata/use_smile_id_metadata_factory.ts +195 -11
  330. package/src/presentation/assets/si_ess_animation_all_directions.json +1300 -286
  331. package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
  332. package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
  333. package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
  334. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +3 -4
  335. package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
  336. package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +27 -0
  337. package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
  338. package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
  339. package/src/presentation/components/icons/index.tsx +65 -18
  340. package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
  341. package/src/presentation/components/use_smile_id_button.tsx +4 -4
  342. package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
  343. package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
  344. package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
  345. package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
  346. package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
  347. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +0 -3
  348. package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
  349. package/src/presentation/components/use_smile_id_instructions_hero.tsx +100 -59
  350. package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
  351. package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +200 -1
  352. package/src/presentation/flow/dsl/builder/config_builder.ts +14 -0
  353. package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
  354. package/src/presentation/flow/dsl/builder/screens_builder.ts +111 -10
  355. package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
  356. package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
  357. package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
  358. package/src/presentation/flow/flow_navigation_manager.ts +179 -13
  359. package/src/presentation/flow/model/instruction_guideline.ts +6 -0
  360. package/src/presentation/flow/model/instructions_defaults.ts +103 -25
  361. package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +43 -10
  362. package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
  363. package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -2
  364. package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
  365. package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
  366. package/src/presentation/flow/validation/job_type_validator.ts +24 -0
  367. package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
  368. package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +6 -4
  369. package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
  370. package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
  371. package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +3 -0
  372. package/src/presentation/screen/use_smile_id_capture_screen.tsx +234 -36
  373. package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +32 -22
  374. package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
  375. package/src/presentation/screen/use_smile_id_preview_screen.tsx +9 -9
  376. package/src/presentation/screen/use_smile_id_processing_screen.tsx +7 -7
  377. package/src/presentation/theme/theme.ts +21 -19
  378. package/src/presentation/utils/force_max_brightness.tsx +4 -4
  379. package/dist/camera/frame_processor_plugin.d.ts +0 -28
  380. package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
  381. package/dist/camera/frame_processor_plugin.js +0 -21
  382. package/dist/camera/frame_processor_plugin.js.map +0 -1
  383. package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
  384. package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
  385. package/dist/camera/use_smile_id_frame_processor.js +0 -2
  386. package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
  387. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
  388. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
  389. package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
  390. package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
  391. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
  392. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
  393. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
  394. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
  395. package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
  396. package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
  397. package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
  398. package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
  399. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
  400. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
  401. package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
  402. package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
  403. package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
@@ -30,48 +30,102 @@ 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, lets an assisting agent flip to the rear camera to capture
93
+ * the subject. Defaults to false.
94
+ */
61
95
  allowAgentMode = false;
96
+ /**
97
+ * When true, uses the enhanced active-liveness capture path. Defaults
98
+ * to false.
99
+ */
62
100
  enableEnhancedLiveness = false;
63
101
  }
64
102
 
65
103
  export class DocumentCaptureConfigBuilder {
66
- /** The document being captured. **Required** — missing it fails validation. */
104
+ /**
105
+ * The kind of document being captured, which drives the capture
106
+ * framing and aspect ratio. **Required** — missing it fails validation.
107
+ */
67
108
  documentType?: DocumentType;
68
- /** When the photo is taken. Defaults to auto-capture with a 10s manual fallback. */
109
+ /**
110
+ * Whether the document is captured automatically when held steady, or
111
+ * manually by shutter. Defaults to auto-capture with a 10s manual
112
+ * fallback.
113
+ */
69
114
  captureMode: DocumentCaptureMode =
70
115
  DocumentCaptureMode.AutoCaptureWithManualFallback();
116
+ /**
117
+ * When true, lets the user pick an existing document image from the
118
+ * gallery. Defaults to false.
119
+ */
71
120
  allowGalleryUpload = false;
121
+ /** When true, captures both the front and back of the document. Defaults to true. */
72
122
  captureBothSides = true;
123
+ /** When true, lets the user skip capturing the back side. Defaults to false. */
73
124
  allowSkipBack = false;
74
- /** Optional aspect ratio hint — e.g. CR-80 ID card = 1.586. */
125
+ /**
126
+ * Optional fixed aspect ratio for the document frame when the ID's
127
+ * dimensions are known in advance — e.g. CR-80 ID card = 1.586.
128
+ */
75
129
  knownIdAspectRatio?: number;
76
130
 
77
131
  /** The `documentType`'s aspect ratio when present, otherwise `knownIdAspectRatio`. */
@@ -81,17 +135,27 @@ export class DocumentCaptureConfigBuilder {
81
135
  }
82
136
 
83
137
  export class CaptureConfigBuilder {
138
+ /** What this screen captures — a selfie or a document. Required. */
84
139
  captureType?: CaptureType;
140
+ /** Provides a custom start/capture button in place of the default. */
85
141
  startButton?: ButtonSlot;
86
142
 
87
143
  private _selfie?: SelfieCaptureConfigBuilder;
88
144
  private _document?: DocumentCaptureConfigBuilder;
89
145
 
146
+ /**
147
+ * Configures selfie-specific capture options (agent mode, enhanced
148
+ * liveness).
149
+ */
90
150
  selfie(block: (s: SelfieCaptureConfigBuilder) => void): void {
91
151
  if (!this._selfie) this._selfie = new SelfieCaptureConfigBuilder();
92
152
  block(this._selfie);
93
153
  }
94
154
 
155
+ /**
156
+ * Configures document-specific capture options (document type, capture
157
+ * mode, gallery upload, two-sided capture).
158
+ */
95
159
  document(block: (d: DocumentCaptureConfigBuilder) => void): void {
96
160
  if (!this._document) this._document = new DocumentCaptureConfigBuilder();
97
161
  block(this._document);
@@ -109,17 +173,35 @@ export class CaptureConfigBuilder {
109
173
  }
110
174
 
111
175
  export class PreviewConfigBuilder {
176
+ /** Whether the preview screen offers a retake action. */
112
177
  allowRetake = true;
178
+ /**
179
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
180
+ * true.
181
+ */
113
182
  showAttribution = true;
183
+ /** Provides a custom continue button in place of the default. */
114
184
  continueButton?: ButtonSlot;
185
+ /** Provides a custom cancel button in place of the default. */
115
186
  cancelButton?: ButtonSlot;
116
187
  }
117
188
 
118
189
  export class ProcessingConfigBuilder {
190
+ /**
191
+ * When true, shows a numeric progress percentage while the job is
192
+ * processing.
193
+ */
119
194
  showProgressPercentage = true;
195
+ /**
196
+ * Whether to show the "Powered by Smile ID" attribution. Defaults to
197
+ * true.
198
+ */
120
199
  showAttribution = true;
200
+ /** Provides a custom continue button in place of the default. */
121
201
  continueButton?: ButtonSlot;
202
+ /** Provides a custom retry button in place of the default. */
122
203
  retryButton?: ButtonSlot;
204
+ /** Provides a custom exit button in place of the default. */
123
205
  exitButton?: ButtonSlot;
124
206
  }
125
207
 
@@ -144,30 +226,49 @@ export type ScreensConfig = {
144
226
  export class ScreensBuilder {
145
227
  private _steps: ScreenSpec[] = [];
146
228
 
229
+ /**
230
+ * Adds a consent screen that collects the user's agreement to
231
+ * biometric data processing before capture.
232
+ */
147
233
  consent(block?: (c: ConsentConfigBuilder) => void): void {
148
234
  const config = new ConsentConfigBuilder();
149
235
  block?.(config);
150
236
  this._steps.push({ kind: "consent", config });
151
237
  }
152
238
 
239
+ /**
240
+ * Adds an instructions screen explaining what the user is about to do.
241
+ */
153
242
  instructions(block?: (i: InstructionsConfigBuilder) => void): void {
154
243
  const config = new InstructionsConfigBuilder();
155
244
  block?.(config);
156
245
  this._steps.push({ kind: "instructions", config });
157
246
  }
158
247
 
248
+ /**
249
+ * Adds a capture screen that runs the camera and on-device detection
250
+ * for a selfie or document.
251
+ */
159
252
  capture(block: (c: CaptureConfigBuilder) => void): void {
160
253
  const config = new CaptureConfigBuilder();
161
254
  block(config);
162
255
  this._steps.push({ kind: "capture", config });
163
256
  }
164
257
 
258
+ /**
259
+ * Adds a preview screen that lets the user review the captured image
260
+ * and optionally retake it.
261
+ */
165
262
  preview(block?: (p: PreviewConfigBuilder) => void): void {
166
263
  const config = new PreviewConfigBuilder();
167
264
  block?.(config);
168
265
  this._steps.push({ kind: "preview", config });
169
266
  }
170
267
 
268
+ /**
269
+ * Adds a processing screen shown while the job is submitted, displaying
270
+ * success, failure, or retry states.
271
+ */
171
272
  processing(block?: (p: ProcessingConfigBuilder) => void): void {
172
273
  const config = new ProcessingConfigBuilder();
173
274
  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));