@sanctum-key/react-native-sdk 1.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 (708) hide show
  1. package/README.md +278 -0
  2. package/android/build/.transforms/f62cb96b2d1f78ca96ab35932dd530dc/results.bin +1 -0
  3. package/android/build/.transforms/f62cb96b2d1f78ca96ab35932dd530dc/transformed/classes/classes_dex/classes.dex +0 -0
  4. package/android/build/generated/source/buildConfig/debug/kyc/transfergratis/com/BuildConfig.java +10 -0
  5. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +69 -0
  6. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  7. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  8. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  9. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  10. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  11. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +1 -0
  12. package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_file_paths.xml.flat +0 -0
  13. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -0
  14. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  15. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  16. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  17. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  18. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/transfergratis-react-native-sdk_debug.kotlin_module +0 -0
  19. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/kyc/transfergratis/com/BuildConfig.class +0 -0
  20. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +3 -0
  21. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +110 -0
  22. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +69 -0
  23. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  24. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  25. package/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/file_paths.xml +15 -0
  26. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  27. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +2 -0
  28. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  29. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  30. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  31. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  32. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  33. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  34. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  35. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  36. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  37. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  38. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  39. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  40. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  41. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  42. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  43. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  44. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  45. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  46. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  47. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  48. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  49. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  50. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  51. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  52. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  53. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  54. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  55. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  56. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  57. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  58. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  59. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  60. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  61. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  62. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  63. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  64. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  65. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  66. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  67. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  68. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  69. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  70. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  71. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  72. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  73. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  74. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  75. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  76. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  77. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  78. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  79. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  80. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  81. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  82. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  83. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  84. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  85. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  86. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  87. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  88. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  89. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  90. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  91. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  92. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  93. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  94. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  95. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  96. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  97. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  98. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  99. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  109. package/android/build/outputs/logs/manifest-merger-debug-report.txt +101 -0
  110. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  111. package/android/build/tmp/kotlin-classes/debug/META-INF/transfergratis-react-native-sdk_debug.kotlin_module +0 -0
  112. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$1$5$1.class +0 -0
  113. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$1$5$2.class +0 -0
  114. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$1.class +0 -0
  115. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$2.class +0 -0
  116. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$3.class +0 -0
  117. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$4.class +0 -0
  118. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$5.class +0 -0
  119. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$6.class +0 -0
  120. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$1.class +0 -0
  121. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$2.class +0 -0
  122. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$3.class +0 -0
  123. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$4.class +0 -0
  124. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$View$1.class +0 -0
  125. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$lambda$4$$inlined$Prop$1.class +0 -0
  126. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$lambda$4$$inlined$Prop$2.class +0 -0
  127. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule.class +0 -0
  128. package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkView.class +0 -0
  129. package/android/build.gradle +43 -0
  130. package/android/src/main/AndroidManifest.xml +49 -0
  131. package/android/src/main/java/kyc/transfergratis/com/TransfergratisSdkModule.kt +131 -0
  132. package/android/src/main/java/kyc/transfergratis/com/TransfergratisSdkView.kt +161 -0
  133. package/android/src/main/res/xml/file_paths.xml +15 -0
  134. package/build/App.d.ts +3 -0
  135. package/build/App.d.ts.map +1 -0
  136. package/build/App.js +9 -0
  137. package/build/App.js.map +1 -0
  138. package/build/TransfergratisSdk.types.d.ts +32 -0
  139. package/build/TransfergratisSdk.types.d.ts.map +1 -0
  140. package/build/TransfergratisSdk.types.js +2 -0
  141. package/build/TransfergratisSdk.types.js.map +1 -0
  142. package/build/TransfergratisSdkModule.d.ts +21 -0
  143. package/build/TransfergratisSdkModule.d.ts.map +1 -0
  144. package/build/TransfergratisSdkModule.js +4 -0
  145. package/build/TransfergratisSdkModule.js.map +1 -0
  146. package/build/TransfergratisSdkModule.web.d.ts +20 -0
  147. package/build/TransfergratisSdkModule.web.d.ts.map +1 -0
  148. package/build/TransfergratisSdkModule.web.js +25 -0
  149. package/build/TransfergratisSdkModule.web.js.map +1 -0
  150. package/build/TransfergratisSdkView.d.ts +4 -0
  151. package/build/TransfergratisSdkView.d.ts.map +1 -0
  152. package/build/TransfergratisSdkView.js +7 -0
  153. package/build/TransfergratisSdkView.js.map +1 -0
  154. package/build/TransfergratisSdkView.web.d.ts +4 -0
  155. package/build/TransfergratisSdkView.web.d.ts.map +1 -0
  156. package/build/TransfergratisSdkView.web.js +11 -0
  157. package/build/TransfergratisSdkView.web.js.map +1 -0
  158. package/build/api/axios.d.ts +30 -0
  159. package/build/api/axios.d.ts.map +1 -0
  160. package/build/api/axios.js +92 -0
  161. package/build/api/axios.js.map +1 -0
  162. package/build/components/Camera/index.d.ts +2 -0
  163. package/build/components/Camera/index.d.ts.map +1 -0
  164. package/build/components/Camera/index.js +2 -0
  165. package/build/components/Camera/index.js.map +1 -0
  166. package/build/components/Camera/index.web.d.ts +2 -0
  167. package/build/components/Camera/index.web.d.ts.map +1 -0
  168. package/build/components/Camera/index.web.js +2 -0
  169. package/build/components/Camera/index.web.js.map +1 -0
  170. package/build/components/Camera/types.d.ts +2 -0
  171. package/build/components/Camera/types.d.ts.map +1 -0
  172. package/build/components/Camera/types.js +2 -0
  173. package/build/components/Camera/types.js.map +1 -0
  174. package/build/components/ConfigurableKYCFlow.d.ts +11 -0
  175. package/build/components/ConfigurableKYCFlow.d.ts.map +1 -0
  176. package/build/components/ConfigurableKYCFlow.js +257 -0
  177. package/build/components/ConfigurableKYCFlow.js.map +1 -0
  178. package/build/components/CustomCameraExample.d.ts +10 -0
  179. package/build/components/CustomCameraExample.d.ts.map +1 -0
  180. package/build/components/CustomCameraExample.js +232 -0
  181. package/build/components/CustomCameraExample.js.map +1 -0
  182. package/build/components/EnhancedCameraView.d.ts +4 -0
  183. package/build/components/EnhancedCameraView.d.ts.map +1 -0
  184. package/build/components/EnhancedCameraView.js +393 -0
  185. package/build/components/EnhancedCameraView.js.map +1 -0
  186. package/build/components/EnhancedCameraView.web.d.ts +4 -0
  187. package/build/components/EnhancedCameraView.web.d.ts.map +1 -0
  188. package/build/components/EnhancedCameraView.web.js +499 -0
  189. package/build/components/EnhancedCameraView.web.js.map +1 -0
  190. package/build/components/FileUpload.d.ts +13 -0
  191. package/build/components/FileUpload.d.ts.map +1 -0
  192. package/build/components/FileUpload.js +216 -0
  193. package/build/components/FileUpload.js.map +1 -0
  194. package/build/components/KYCElementRenderer.d.ts +14 -0
  195. package/build/components/KYCElementRenderer.d.ts.map +1 -0
  196. package/build/components/KYCElementRenderer.js +31 -0
  197. package/build/components/KYCElementRenderer.js.map +1 -0
  198. package/build/components/KYCElements/AdditionalDocumentsTemplate.d.ts +12 -0
  199. package/build/components/KYCElements/AdditionalDocumentsTemplate.d.ts.map +1 -0
  200. package/build/components/KYCElements/AdditionalDocumentsTemplate.js +283 -0
  201. package/build/components/KYCElements/AdditionalDocumentsTemplate.js.map +1 -0
  202. package/build/components/KYCElements/CameraCapture.d.ts +11 -0
  203. package/build/components/KYCElements/CameraCapture.d.ts.map +1 -0
  204. package/build/components/KYCElements/CameraCapture.js +219 -0
  205. package/build/components/KYCElements/CameraCapture.js.map +1 -0
  206. package/build/components/KYCElements/CompletionStep.d.ts +10 -0
  207. package/build/components/KYCElements/CompletionStep.d.ts.map +1 -0
  208. package/build/components/KYCElements/CompletionStep.js +147 -0
  209. package/build/components/KYCElements/CompletionStep.js.map +1 -0
  210. package/build/components/KYCElements/CountrySelection.d.ts +11 -0
  211. package/build/components/KYCElements/CountrySelection.d.ts.map +1 -0
  212. package/build/components/KYCElements/CountrySelection.js +147 -0
  213. package/build/components/KYCElements/CountrySelection.js.map +1 -0
  214. package/build/components/KYCElements/CountrySelectionTemplate.d.ts +15 -0
  215. package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -0
  216. package/build/components/KYCElements/CountrySelectionTemplate.js +438 -0
  217. package/build/components/KYCElements/CountrySelectionTemplate.js.map +1 -0
  218. package/build/components/KYCElements/DocumentTypeSelection.d.ts +11 -0
  219. package/build/components/KYCElements/DocumentTypeSelection.d.ts.map +1 -0
  220. package/build/components/KYCElements/DocumentTypeSelection.js +143 -0
  221. package/build/components/KYCElements/DocumentTypeSelection.js.map +1 -0
  222. package/build/components/KYCElements/EmailVerificationTemplate.d.ts +12 -0
  223. package/build/components/KYCElements/EmailVerificationTemplate.d.ts.map +1 -0
  224. package/build/components/KYCElements/EmailVerificationTemplate.js +212 -0
  225. package/build/components/KYCElements/EmailVerificationTemplate.js.map +1 -0
  226. package/build/components/KYCElements/FileUpload.d.ts +11 -0
  227. package/build/components/KYCElements/FileUpload.d.ts.map +1 -0
  228. package/build/components/KYCElements/FileUpload.js +268 -0
  229. package/build/components/KYCElements/FileUpload.js.map +1 -0
  230. package/build/components/KYCElements/FileUploadTemplate.d.ts +12 -0
  231. package/build/components/KYCElements/FileUploadTemplate.d.ts.map +1 -0
  232. package/build/components/KYCElements/FileUploadTemplate.js +331 -0
  233. package/build/components/KYCElements/FileUploadTemplate.js.map +1 -0
  234. package/build/components/KYCElements/IDCardCapture.d.ts +19 -0
  235. package/build/components/KYCElements/IDCardCapture.d.ts.map +1 -0
  236. package/build/components/KYCElements/IDCardCapture.js +877 -0
  237. package/build/components/KYCElements/IDCardCapture.js.map +1 -0
  238. package/build/components/KYCElements/InitializationStep.d.ts +5 -0
  239. package/build/components/KYCElements/InitializationStep.d.ts.map +1 -0
  240. package/build/components/KYCElements/InitializationStep.js +41 -0
  241. package/build/components/KYCElements/InitializationStep.js.map +1 -0
  242. package/build/components/KYCElements/LocationCaptureTemplate.d.ts +20 -0
  243. package/build/components/KYCElements/LocationCaptureTemplate.d.ts.map +1 -0
  244. package/build/components/KYCElements/LocationCaptureTemplate.js +318 -0
  245. package/build/components/KYCElements/LocationCaptureTemplate.js.map +1 -0
  246. package/build/components/KYCElements/OrientationVideoCapture.d.ts +14 -0
  247. package/build/components/KYCElements/OrientationVideoCapture.d.ts.map +1 -0
  248. package/build/components/KYCElements/OrientationVideoCapture.js +534 -0
  249. package/build/components/KYCElements/OrientationVideoCapture.js.map +1 -0
  250. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts +14 -0
  251. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +1 -0
  252. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js +504 -0
  253. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +1 -0
  254. package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts +14 -0
  255. package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +1 -0
  256. package/build/components/KYCElements/OrientationVideoCaptureFinal.js +430 -0
  257. package/build/components/KYCElements/OrientationVideoCaptureFinal.js.map +1 -0
  258. package/build/components/KYCElements/PersonalInformationTemplate.d.ts +12 -0
  259. package/build/components/KYCElements/PersonalInformationTemplate.d.ts.map +1 -0
  260. package/build/components/KYCElements/PersonalInformationTemplate.js +120 -0
  261. package/build/components/KYCElements/PersonalInformationTemplate.js.map +1 -0
  262. package/build/components/KYCElements/PhoneVerificationTemplate.d.ts +12 -0
  263. package/build/components/KYCElements/PhoneVerificationTemplate.d.ts.map +1 -0
  264. package/build/components/KYCElements/PhoneVerificationTemplate.js +185 -0
  265. package/build/components/KYCElements/PhoneVerificationTemplate.js.map +1 -0
  266. package/build/components/KYCElements/ReviewSubmitTemplate.d.ts +12 -0
  267. package/build/components/KYCElements/ReviewSubmitTemplate.d.ts.map +1 -0
  268. package/build/components/KYCElements/ReviewSubmitTemplate.js +171 -0
  269. package/build/components/KYCElements/ReviewSubmitTemplate.js.map +1 -0
  270. package/build/components/KYCElements/SelfieCapture.d.ts +11 -0
  271. package/build/components/KYCElements/SelfieCapture.d.ts.map +1 -0
  272. package/build/components/KYCElements/SelfieCapture.js +236 -0
  273. package/build/components/KYCElements/SelfieCapture.js.map +1 -0
  274. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts +16 -0
  275. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -0
  276. package/build/components/KYCElements/SelfieCaptureTemplate.js +568 -0
  277. package/build/components/KYCElements/SelfieCaptureTemplate.js.map +1 -0
  278. package/build/components/KYCElements/VerificationProgressTemplate.d.ts +12 -0
  279. package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -0
  280. package/build/components/KYCElements/VerificationProgressTemplate.js +195 -0
  281. package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -0
  282. package/build/components/KYCElements/VerificationStep.d.ts +10 -0
  283. package/build/components/KYCElements/VerificationStep.d.ts.map +1 -0
  284. package/build/components/KYCElements/VerificationStep.js +199 -0
  285. package/build/components/KYCElements/VerificationStep.js.map +1 -0
  286. package/build/components/KYCElements/WelcomeTemplate.d.ts +12 -0
  287. package/build/components/KYCElements/WelcomeTemplate.d.ts.map +1 -0
  288. package/build/components/KYCElements/WelcomeTemplate.js +244 -0
  289. package/build/components/KYCElements/WelcomeTemplate.js.map +1 -0
  290. package/build/components/KYCExample.d.ts +3 -0
  291. package/build/components/KYCExample.d.ts.map +1 -0
  292. package/build/components/KYCExample.js +247 -0
  293. package/build/components/KYCExample.js.map +1 -0
  294. package/build/components/KYCFlow.d.ts +3 -0
  295. package/build/components/KYCFlow.d.ts.map +1 -0
  296. package/build/components/KYCFlow.js +308 -0
  297. package/build/components/KYCFlow.js.map +1 -0
  298. package/build/components/NativeCameraView.d.ts +11 -0
  299. package/build/components/NativeCameraView.d.ts.map +1 -0
  300. package/build/components/NativeCameraView.js +27 -0
  301. package/build/components/NativeCameraView.js.map +1 -0
  302. package/build/components/OverLay/IdCard.d.ts +4 -0
  303. package/build/components/OverLay/IdCard.d.ts.map +1 -0
  304. package/build/components/OverLay/IdCard.js +185 -0
  305. package/build/components/OverLay/IdCard.js.map +1 -0
  306. package/build/components/OverLay/SelfieOverlay.d.ts +4 -0
  307. package/build/components/OverLay/SelfieOverlay.d.ts.map +1 -0
  308. package/build/components/OverLay/SelfieOverlay.js +169 -0
  309. package/build/components/OverLay/SelfieOverlay.js.map +1 -0
  310. package/build/components/OverLay/StepOverlay.d.ts +9 -0
  311. package/build/components/OverLay/StepOverlay.d.ts.map +1 -0
  312. package/build/components/OverLay/StepOverlay.js +53 -0
  313. package/build/components/OverLay/StepOverlay.js.map +1 -0
  314. package/build/components/OverLay/type.d.ts +98 -0
  315. package/build/components/OverLay/type.d.ts.map +1 -0
  316. package/build/components/OverLay/type.js +2 -0
  317. package/build/components/OverLay/type.js.map +1 -0
  318. package/build/components/ProgressIndicator.d.ts +8 -0
  319. package/build/components/ProgressIndicator.d.ts.map +1 -0
  320. package/build/components/ProgressIndicator.js +48 -0
  321. package/build/components/ProgressIndicator.js.map +1 -0
  322. package/build/components/SelfieCapture.d.ts +3 -0
  323. package/build/components/SelfieCapture.d.ts.map +1 -0
  324. package/build/components/SelfieCapture.js +197 -0
  325. package/build/components/SelfieCapture.js.map +1 -0
  326. package/build/components/SimpleExample.d.ts +3 -0
  327. package/build/components/SimpleExample.d.ts.map +1 -0
  328. package/build/components/SimpleExample.js +89 -0
  329. package/build/components/SimpleExample.js.map +1 -0
  330. package/build/components/Svgs/GpsIcon.d.ts +3 -0
  331. package/build/components/Svgs/GpsIcon.d.ts.map +1 -0
  332. package/build/components/Svgs/GpsIcon.js +9 -0
  333. package/build/components/Svgs/GpsIcon.js.map +1 -0
  334. package/build/components/Svgs/Schield.d.ts +3 -0
  335. package/build/components/Svgs/Schield.d.ts.map +1 -0
  336. package/build/components/Svgs/Schield.js +22 -0
  337. package/build/components/Svgs/Schield.js.map +1 -0
  338. package/build/components/Svgs/directionArrow.gif +0 -0
  339. package/build/components/Svgs/frontSelfieIcon.d.ts +3 -0
  340. package/build/components/Svgs/frontSelfieIcon.d.ts.map +1 -0
  341. package/build/components/Svgs/frontSelfieIcon.js +11 -0
  342. package/build/components/Svgs/frontSelfieIcon.js.map +1 -0
  343. package/build/components/Svgs/scanningLine.d.ts +9 -0
  344. package/build/components/Svgs/scanningLine.d.ts.map +1 -0
  345. package/build/components/Svgs/scanningLine.js +61 -0
  346. package/build/components/Svgs/scanningLine.js.map +1 -0
  347. package/build/components/Svgs/sideSelfieIcon.d.ts +3 -0
  348. package/build/components/Svgs/sideSelfieIcon.d.ts.map +1 -0
  349. package/build/components/Svgs/sideSelfieIcon.js +9 -0
  350. package/build/components/Svgs/sideSelfieIcon.js.map +1 -0
  351. package/build/components/TemplateKYCExample.d.ts +22 -0
  352. package/build/components/TemplateKYCExample.d.ts.map +1 -0
  353. package/build/components/TemplateKYCExample.js +155 -0
  354. package/build/components/TemplateKYCExample.js.map +1 -0
  355. package/build/components/TemplateKYCFlowRefactored.d.ts +26 -0
  356. package/build/components/TemplateKYCFlowRefactored.d.ts.map +1 -0
  357. package/build/components/TemplateKYCFlowRefactored.js +359 -0
  358. package/build/components/TemplateKYCFlowRefactored.js.map +1 -0
  359. package/build/components/VisionCameraView.d.ts +22 -0
  360. package/build/components/VisionCameraView.d.ts.map +1 -0
  361. package/build/components/VisionCameraView.js +142 -0
  362. package/build/components/VisionCameraView.js.map +1 -0
  363. package/build/components/example/CameraCaptureEx.d.ts +4 -0
  364. package/build/components/example/CameraCaptureEx.d.ts.map +1 -0
  365. package/build/components/example/CameraCaptureEx.js +219 -0
  366. package/build/components/example/CameraCaptureEx.js.map +1 -0
  367. package/build/components/example/CameraCaptureExAdvanced.d.ts +3 -0
  368. package/build/components/example/CameraCaptureExAdvanced.d.ts.map +1 -0
  369. package/build/components/example/CameraCaptureExAdvanced.js +229 -0
  370. package/build/components/example/CameraCaptureExAdvanced.js.map +1 -0
  371. package/build/components/example/CameraCaptureExScan.d.ts +3 -0
  372. package/build/components/example/CameraCaptureExScan.d.ts.map +1 -0
  373. package/build/components/example/CameraCaptureExScan.js +213 -0
  374. package/build/components/example/CameraCaptureExScan.js.map +1 -0
  375. package/build/components/example/CameraCaptureExSimple.d.ts +3 -0
  376. package/build/components/example/CameraCaptureExSimple.d.ts.map +1 -0
  377. package/build/components/example/CameraCaptureExSimple.js +138 -0
  378. package/build/components/example/CameraCaptureExSimple.js.map +1 -0
  379. package/build/components/example/DynamicTemplateExample.d.ts +10 -0
  380. package/build/components/example/DynamicTemplateExample.d.ts.map +1 -0
  381. package/build/components/example/DynamicTemplateExample.js +241 -0
  382. package/build/components/example/DynamicTemplateExample.js.map +1 -0
  383. package/build/components/example/OrientationVideoExample.d.ts +4 -0
  384. package/build/components/example/OrientationVideoExample.d.ts.map +1 -0
  385. package/build/components/example/OrientationVideoExample.js +325 -0
  386. package/build/components/example/OrientationVideoExample.js.map +1 -0
  387. package/build/components/example/SelfieCaptureEx.d.ts +4 -0
  388. package/build/components/example/SelfieCaptureEx.d.ts.map +1 -0
  389. package/build/components/example/SelfieCaptureEx.js +238 -0
  390. package/build/components/example/SelfieCaptureEx.js.map +1 -0
  391. package/build/components/ui/Button.d.ts +37 -0
  392. package/build/components/ui/Button.d.ts.map +1 -0
  393. package/build/components/ui/Button.js +194 -0
  394. package/build/components/ui/Button.js.map +1 -0
  395. package/build/components/ui/ButtonExample.d.ts +4 -0
  396. package/build/components/ui/ButtonExample.d.ts.map +1 -0
  397. package/build/components/ui/ButtonExample.js +209 -0
  398. package/build/components/ui/ButtonExample.js.map +1 -0
  399. package/build/components/ui/ButtonStyles.d.ts +521 -0
  400. package/build/components/ui/ButtonStyles.d.ts.map +1 -0
  401. package/build/components/ui/ButtonStyles.js +429 -0
  402. package/build/components/ui/ButtonStyles.js.map +1 -0
  403. package/build/config/KYCConfig.d.ts +14 -0
  404. package/build/config/KYCConfig.d.ts.map +1 -0
  405. package/build/config/KYCConfig.js +26 -0
  406. package/build/config/KYCConfig.js.map +1 -0
  407. package/build/config/KYCConfigs.d.ts +7 -0
  408. package/build/config/KYCConfigs.d.ts.map +1 -0
  409. package/build/config/KYCConfigs.js +516 -0
  410. package/build/config/KYCConfigs.js.map +1 -0
  411. package/build/config/allowedDomains.d.ts +30 -0
  412. package/build/config/allowedDomains.d.ts.map +1 -0
  413. package/build/config/allowedDomains.js +112 -0
  414. package/build/config/allowedDomains.js.map +1 -0
  415. package/build/config/countriesData.d.ts +3 -0
  416. package/build/config/countriesData.d.ts.map +1 -0
  417. package/build/config/countriesData.js +80 -0
  418. package/build/config/countriesData.js.map +1 -0
  419. package/build/config/region_mapping.d.ts +3 -0
  420. package/build/config/region_mapping.d.ts.map +1 -0
  421. package/build/config/region_mapping.js +736 -0
  422. package/build/config/region_mapping.js.map +1 -0
  423. package/build/hooks/useI18n.d.ts +11 -0
  424. package/build/hooks/useI18n.d.ts.map +1 -0
  425. package/build/hooks/useI18n.js +37 -0
  426. package/build/hooks/useI18n.js.map +1 -0
  427. package/build/hooks/useKYC.d.ts +15 -0
  428. package/build/hooks/useKYC.d.ts.map +1 -0
  429. package/build/hooks/useKYC.js +103 -0
  430. package/build/hooks/useKYC.js.map +1 -0
  431. package/build/hooks/useKYCFlow.d.ts +3 -0
  432. package/build/hooks/useKYCFlow.d.ts.map +1 -0
  433. package/build/hooks/useKYCFlow.js +221 -0
  434. package/build/hooks/useKYCFlow.js.map +1 -0
  435. package/build/hooks/useLocation.d.ts +32 -0
  436. package/build/hooks/useLocation.d.ts.map +1 -0
  437. package/build/hooks/useLocation.js +165 -0
  438. package/build/hooks/useLocation.js.map +1 -0
  439. package/build/hooks/useOrientationVideo.d.ts +10 -0
  440. package/build/hooks/useOrientationVideo.d.ts.map +1 -0
  441. package/build/hooks/useOrientationVideo.js +118 -0
  442. package/build/hooks/useOrientationVideo.js.map +1 -0
  443. package/build/hooks/useRealtimeVerifier.d.ts +28 -0
  444. package/build/hooks/useRealtimeVerifier.d.ts.map +1 -0
  445. package/build/hooks/useRealtimeVerifier.js +91 -0
  446. package/build/hooks/useRealtimeVerifier.js.map +1 -0
  447. package/build/hooks/useTemplateKYCFlow.d.ts +48 -0
  448. package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -0
  449. package/build/hooks/useTemplateKYCFlow.js +910 -0
  450. package/build/hooks/useTemplateKYCFlow.js.map +1 -0
  451. package/build/hooks/useTemplateLoader.d.ts +14 -0
  452. package/build/hooks/useTemplateLoader.d.ts.map +1 -0
  453. package/build/hooks/useTemplateLoader.js +85 -0
  454. package/build/hooks/useTemplateLoader.js.map +1 -0
  455. package/build/i18n/en/index.d.ts +233 -0
  456. package/build/i18n/en/index.d.ts.map +1 -0
  457. package/build/i18n/en/index.js +261 -0
  458. package/build/i18n/en/index.js.map +1 -0
  459. package/build/i18n/fr/index.d.ts +219 -0
  460. package/build/i18n/fr/index.d.ts.map +1 -0
  461. package/build/i18n/fr/index.js +246 -0
  462. package/build/i18n/fr/index.js.map +1 -0
  463. package/build/i18n/index.d.ts +10 -0
  464. package/build/i18n/index.d.ts.map +1 -0
  465. package/build/i18n/index.js +56 -0
  466. package/build/i18n/index.js.map +1 -0
  467. package/build/i18n/types.d.ts +162 -0
  468. package/build/i18n/types.d.ts.map +1 -0
  469. package/build/i18n/types.js +3 -0
  470. package/build/i18n/types.js.map +1 -0
  471. package/build/i18n/usage-example.d.ts +4 -0
  472. package/build/i18n/usage-example.d.ts.map +1 -0
  473. package/build/i18n/usage-example.js +189 -0
  474. package/build/i18n/usage-example.js.map +1 -0
  475. package/build/index.d.ts +11 -0
  476. package/build/index.d.ts.map +1 -0
  477. package/build/index.js +17 -0
  478. package/build/index.js.map +1 -0
  479. package/build/modules/api/CardAuthentification.d.ts +72 -0
  480. package/build/modules/api/CardAuthentification.d.ts.map +1 -0
  481. package/build/modules/api/CardAuthentification.js +487 -0
  482. package/build/modules/api/CardAuthentification.js.map +1 -0
  483. package/build/modules/api/KYCService.d.ts +116 -0
  484. package/build/modules/api/KYCService.d.ts.map +1 -0
  485. package/build/modules/api/KYCService.js +526 -0
  486. package/build/modules/api/KYCService.js.map +1 -0
  487. package/build/modules/api/SelfieVerification.d.ts +5 -0
  488. package/build/modules/api/SelfieVerification.d.ts.map +1 -0
  489. package/build/modules/api/SelfieVerification.js +25 -0
  490. package/build/modules/api/SelfieVerification.js.map +1 -0
  491. package/build/modules/api/TemplateService.d.ts +44 -0
  492. package/build/modules/api/TemplateService.d.ts.map +1 -0
  493. package/build/modules/api/TemplateService.js +146 -0
  494. package/build/modules/api/TemplateService.js.map +1 -0
  495. package/build/modules/api/backendApi.d.ts +2 -0
  496. package/build/modules/api/backendApi.d.ts.map +1 -0
  497. package/build/modules/api/backendApi.js +6 -0
  498. package/build/modules/api/backendApi.js.map +1 -0
  499. package/build/modules/api/types.d.ts +53 -0
  500. package/build/modules/api/types.d.ts.map +1 -0
  501. package/build/modules/api/types.js +2 -0
  502. package/build/modules/api/types.js.map +1 -0
  503. package/build/modules/camera/NativeCameraModule.d.ts +52 -0
  504. package/build/modules/camera/NativeCameraModule.d.ts.map +1 -0
  505. package/build/modules/camera/NativeCameraModule.js +149 -0
  506. package/build/modules/camera/NativeCameraModule.js.map +1 -0
  507. package/build/modules/camera/UnifiedCameraModule.d.ts +70 -0
  508. package/build/modules/camera/UnifiedCameraModule.d.ts.map +1 -0
  509. package/build/modules/camera/UnifiedCameraModule.js +125 -0
  510. package/build/modules/camera/UnifiedCameraModule.js.map +1 -0
  511. package/build/modules/camera/VisionCameraModule.d.ts +62 -0
  512. package/build/modules/camera/VisionCameraModule.d.ts.map +1 -0
  513. package/build/modules/camera/VisionCameraModule.js +313 -0
  514. package/build/modules/camera/VisionCameraModule.js.map +1 -0
  515. package/build/modules/camera/VisionCameraModule.web.d.ts +145 -0
  516. package/build/modules/camera/VisionCameraModule.web.d.ts.map +1 -0
  517. package/build/modules/camera/VisionCameraModule.web.js +589 -0
  518. package/build/modules/camera/VisionCameraModule.web.js.map +1 -0
  519. package/build/modules/camera/index.d.ts +5 -0
  520. package/build/modules/camera/index.d.ts.map +1 -0
  521. package/build/modules/camera/index.js +4 -0
  522. package/build/modules/camera/index.js.map +1 -0
  523. package/build/stores/kycStore.d.ts +55 -0
  524. package/build/stores/kycStore.d.ts.map +1 -0
  525. package/build/stores/kycStore.js +98 -0
  526. package/build/stores/kycStore.js.map +1 -0
  527. package/build/types/KYC.types.d.ts +643 -0
  528. package/build/types/KYC.types.d.ts.map +1 -0
  529. package/build/types/KYC.types.js +25 -0
  530. package/build/types/KYC.types.js.map +1 -0
  531. package/build/types/env.types.d.ts +13 -0
  532. package/build/types/env.types.d.ts.map +1 -0
  533. package/build/types/env.types.js +2 -0
  534. package/build/types/env.types.js.map +1 -0
  535. package/build/utils/cropByObb.d.ts +37 -0
  536. package/build/utils/cropByObb.d.ts.map +1 -0
  537. package/build/utils/cropByObb.js +215 -0
  538. package/build/utils/cropByObb.js.map +1 -0
  539. package/build/utils/deviceDetection.d.ts +6 -0
  540. package/build/utils/deviceDetection.d.ts.map +1 -0
  541. package/build/utils/deviceDetection.js +12 -0
  542. package/build/utils/deviceDetection.js.map +1 -0
  543. package/build/utils/get-document-type-info.d.ts +13 -0
  544. package/build/utils/get-document-type-info.d.ts.map +1 -0
  545. package/build/utils/get-document-type-info.js +59 -0
  546. package/build/utils/get-document-type-info.js.map +1 -0
  547. package/build/utils/logger.d.ts +12 -0
  548. package/build/utils/logger.d.ts.map +1 -0
  549. package/build/utils/logger.js +45 -0
  550. package/build/utils/logger.js.map +1 -0
  551. package/build/utils/pathToBase64.d.ts +3 -0
  552. package/build/utils/pathToBase64.d.ts.map +1 -0
  553. package/build/utils/pathToBase64.js +65 -0
  554. package/build/utils/pathToBase64.js.map +1 -0
  555. package/build/utils/platformAlert.d.ts +20 -0
  556. package/build/utils/platformAlert.d.ts.map +1 -0
  557. package/build/utils/platformAlert.js +67 -0
  558. package/build/utils/platformAlert.js.map +1 -0
  559. package/build/utils/remove-duplicate.d.ts +2 -0
  560. package/build/utils/remove-duplicate.d.ts.map +1 -0
  561. package/build/utils/remove-duplicate.js +4 -0
  562. package/build/utils/remove-duplicate.js.map +1 -0
  563. package/build/utils/template-transformer.d.ts +10 -0
  564. package/build/utils/template-transformer.d.ts.map +1 -0
  565. package/build/utils/template-transformer.js +365 -0
  566. package/build/utils/template-transformer.js.map +1 -0
  567. package/build/web/WebKYCEntry.d.ts +9 -0
  568. package/build/web/WebKYCEntry.d.ts.map +1 -0
  569. package/build/web/WebKYCEntry.js +288 -0
  570. package/build/web/WebKYCEntry.js.map +1 -0
  571. package/build/web/index.d.ts +2 -0
  572. package/build/web/index.d.ts.map +1 -0
  573. package/build/web/index.js +2 -0
  574. package/build/web/index.js.map +1 -0
  575. package/expo-module.config.json +9 -0
  576. package/ios/TransfergratisSdk.podspec +31 -0
  577. package/ios/TransfergratisSdkModule.swift +409 -0
  578. package/package.json +71 -0
  579. package/plugin/build/index.d.ts +5 -0
  580. package/plugin/build/index.js +12 -0
  581. package/plugin/build/withLocation.d.ts +9 -0
  582. package/plugin/build/withLocation.js +77 -0
  583. package/plugin/build/withRemovePermissions.d.ts +3 -0
  584. package/plugin/build/withRemovePermissions.js +67 -0
  585. package/plugin/build/withVisionCamera.d.ts +8 -0
  586. package/plugin/build/withVisionCamera.js +68 -0
  587. package/plugin/src/index.ts +5 -0
  588. package/plugin/src/withLocation.ts +109 -0
  589. package/plugin/src/withRemovePermissions.js +85 -0
  590. package/plugin/src/withRemovePermissions.ts +83 -0
  591. package/plugin/src/withVisionCamera.js +88 -0
  592. package/plugin/src/withVisionCamera.ts +97 -0
  593. package/plugin/tsconfig.json +17 -0
  594. package/plugin/tsconfig.tsbuildinfo +1 -0
  595. package/plugin.js +19 -0
  596. package/src/App.tsx +9 -0
  597. package/src/TransfergratisSdk.types.ts +30 -0
  598. package/src/TransfergratisSdkModule.ts +16 -0
  599. package/src/TransfergratisSdkModule.web.ts +31 -0
  600. package/src/TransfergratisSdkView.tsx +11 -0
  601. package/src/TransfergratisSdkView.web.tsx +15 -0
  602. package/src/api/axios.ts +144 -0
  603. package/src/components/Camera/index.tsx +0 -0
  604. package/src/components/Camera/index.web.tsx +0 -0
  605. package/src/components/Camera/types.ts +0 -0
  606. package/src/components/ConfigurableKYCFlow.tsx +334 -0
  607. package/src/components/CustomCameraExample.tsx +274 -0
  608. package/src/components/EnhancedCameraView.tsx +482 -0
  609. package/src/components/EnhancedCameraView.web.tsx +597 -0
  610. package/src/components/FileUpload.tsx +249 -0
  611. package/src/components/KYCElementRenderer.tsx +106 -0
  612. package/src/components/KYCElements/AdditionalDocumentsTemplate.tsx +346 -0
  613. package/src/components/KYCElements/CameraCapture.tsx +268 -0
  614. package/src/components/KYCElements/CompletionStep.tsx +161 -0
  615. package/src/components/KYCElements/CountrySelection.tsx +177 -0
  616. package/src/components/KYCElements/CountrySelectionTemplate.tsx +526 -0
  617. package/src/components/KYCElements/DocumentTypeSelection.tsx +173 -0
  618. package/src/components/KYCElements/EmailVerificationTemplate.tsx +278 -0
  619. package/src/components/KYCElements/FileUpload.tsx +318 -0
  620. package/src/components/KYCElements/FileUploadTemplate.tsx +395 -0
  621. package/src/components/KYCElements/IDCardCapture.tsx +1053 -0
  622. package/src/components/KYCElements/InitializationStep.tsx +53 -0
  623. package/src/components/KYCElements/LocationCaptureTemplate.tsx +378 -0
  624. package/src/components/KYCElements/OrientationVideoCapture.tsx +649 -0
  625. package/src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx +616 -0
  626. package/src/components/KYCElements/OrientationVideoCaptureFinal.tsx +534 -0
  627. package/src/components/KYCElements/PersonalInformationTemplate.tsx +158 -0
  628. package/src/components/KYCElements/PhoneVerificationTemplate.tsx +253 -0
  629. package/src/components/KYCElements/ReviewSubmitTemplate.tsx +201 -0
  630. package/src/components/KYCElements/SelfieCapture.tsx +284 -0
  631. package/src/components/KYCElements/SelfieCaptureTemplate.tsx +662 -0
  632. package/src/components/KYCElements/VerificationProgressTemplate.tsx +247 -0
  633. package/src/components/KYCElements/VerificationStep.tsx +234 -0
  634. package/src/components/KYCElements/WelcomeTemplate.tsx +290 -0
  635. package/src/components/KYCExample.tsx +297 -0
  636. package/src/components/KYCFlow.tsx +377 -0
  637. package/src/components/NativeCameraView.tsx +47 -0
  638. package/src/components/OverLay/IdCard.tsx +277 -0
  639. package/src/components/OverLay/SelfieOverlay.tsx +211 -0
  640. package/src/components/OverLay/StepOverlay.tsx +64 -0
  641. package/src/components/OverLay/type.ts +91 -0
  642. package/src/components/ProgressIndicator.tsx +62 -0
  643. package/src/components/SelfieCapture.tsx +244 -0
  644. package/src/components/SimpleExample.tsx +92 -0
  645. package/src/components/Svgs/GpsIcon.tsx +12 -0
  646. package/src/components/Svgs/Schield.tsx +26 -0
  647. package/src/components/Svgs/directionArrow.gif +0 -0
  648. package/src/components/Svgs/frontSelfieIcon.tsx +13 -0
  649. package/src/components/Svgs/scanningLine.tsx +88 -0
  650. package/src/components/Svgs/sideSelfieIcon.tsx +10 -0
  651. package/src/components/TemplateKYCExample.tsx +194 -0
  652. package/src/components/TemplateKYCFlowRefactored.tsx +473 -0
  653. package/src/components/VisionCameraView.tsx +197 -0
  654. package/src/components/example/CameraCaptureEx.tsx +335 -0
  655. package/src/components/example/CameraCaptureExAdvanced.tsx +357 -0
  656. package/src/components/example/CameraCaptureExScan.tsx +336 -0
  657. package/src/components/example/CameraCaptureExSimple.tsx +215 -0
  658. package/src/components/example/DynamicTemplateExample.tsx +289 -0
  659. package/src/components/example/OrientationVideoExample.tsx +380 -0
  660. package/src/components/example/SelfieCaptureEx.tsx +358 -0
  661. package/src/components/ui/Button.tsx +328 -0
  662. package/src/components/ui/ButtonExample.tsx +318 -0
  663. package/src/components/ui/ButtonStyles.ts +465 -0
  664. package/src/config/KYCConfig.ts +34 -0
  665. package/src/config/KYCConfigs.ts +528 -0
  666. package/src/config/allowedDomains.ts +133 -0
  667. package/src/config/countriesData.ts +85 -0
  668. package/src/config/region_mapping.json +735 -0
  669. package/src/config/region_mapping.ts +737 -0
  670. package/src/hooks/useI18n.ts +53 -0
  671. package/src/hooks/useKYC.ts +131 -0
  672. package/src/hooks/useKYCFlow.ts +248 -0
  673. package/src/hooks/useLocation.ts +221 -0
  674. package/src/hooks/useOrientationVideo.ts +149 -0
  675. package/src/hooks/useRealtimeVerifier.ts +128 -0
  676. package/src/hooks/useTemplateKYCFlow.tsx +1051 -0
  677. package/src/hooks/useTemplateLoader.ts +102 -0
  678. package/src/i18n/README.md +288 -0
  679. package/src/i18n/en/index.ts +275 -0
  680. package/src/i18n/fr/index.ts +260 -0
  681. package/src/i18n/index.ts +65 -0
  682. package/src/i18n/types.ts +182 -0
  683. package/src/i18n/usage-example.tsx +202 -0
  684. package/src/index.ts +25 -0
  685. package/src/modules/api/CardAuthentification.ts +589 -0
  686. package/src/modules/api/KYCService.ts +666 -0
  687. package/src/modules/api/SelfieVerification.ts +33 -0
  688. package/src/modules/api/TemplateService.ts +168 -0
  689. package/src/modules/api/backendApi.ts +8 -0
  690. package/src/modules/api/types.ts +59 -0
  691. package/src/modules/camera/NativeCameraModule.ts +170 -0
  692. package/src/modules/camera/UnifiedCameraModule.ts +160 -0
  693. package/src/modules/camera/VisionCameraModule.ts +334 -0
  694. package/src/modules/camera/VisionCameraModule.web.ts +679 -0
  695. package/src/modules/camera/index.ts +6 -0
  696. package/src/stores/kycStore.ts +161 -0
  697. package/src/types/KYC.types.ts +837 -0
  698. package/src/types/env.types.ts +13 -0
  699. package/src/utils/cropByObb.ts +254 -0
  700. package/src/utils/deviceDetection.ts +11 -0
  701. package/src/utils/get-document-type-info.ts +62 -0
  702. package/src/utils/logger.ts +48 -0
  703. package/src/utils/pathToBase64.ts +63 -0
  704. package/src/utils/platformAlert.ts +86 -0
  705. package/src/utils/remove-duplicate.ts +3 -0
  706. package/src/utils/template-transformer.ts +445 -0
  707. package/src/web/WebKYCEntry.tsx +375 -0
  708. package/src/web/index.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KYC.types.js","sourceRoot":"","sources":["../../src/types/KYC.types.ts"],"names":[],"mappings":"AA+UA,MAAM,CAAC,MAAM,6BAA6B,GAA2C;IACnF,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,KAAK;IAC5B,mBAAmB,EAAE,IAAI;IACzB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;CACT,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAA2C;IACnF,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,iBAAiB;IACjC,mBAAmB,EAAE,uBAAuB;IAC5C,kBAAkB,EAAE,qBAAqB;IACzC,UAAU,EAAE,aAAa;IACzB,eAAe,EAAE,qBAAqB;CACvC,CAAA","sourcesContent":["import { VerificationResult } from \"../modules/api/types\";\n\n// Types pour les documents\nexport interface Document {\n id: string;\n type: DocumentType;\n imageUri: string;\n uploadedAt: Date;\n validated: boolean;\n extractedData?: DocumentData;\n\n}\n\nexport type DocumentType = 'passport' | 'id_card' | 'drivers_license';\n\nexport interface DocumentData {\n firstName?: string;\n lastName?: string;\n dateOfBirth?: string;\n documentNumber?: string;\n expiryDate?: string;\n nationality?: string;\n}\n\n// Types pour les selfies\nexport interface Selfie {\n id: string;\n imageUri: string;\n capturedAt: Date;\n validated: boolean;\n faceDetected: boolean;\n}\n\n// Types pour la session KYC\nexport interface KYCSession {\n id: string;\n userId: string;\n status: KYCStatus;\n currentStep: number;\n documents: Document[];\n selfie?: Selfie;\n verificationId?: string;\n createdAt: Date;\n updatedAt: Date;\n completedAt?: Date;\n}\n\nexport type KYCStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'rejected';\n\n// Types pour les étapes du processus\nexport interface KYCStep {\n id: number;\n title: string;\n description: string;\n isCompleted: boolean;\n isRequired: boolean;\n}\n\n// Types pour les erreurs\nexport interface KYCError {\n code: string;\n message: string;\n field?: string;\n details?: any;\n}\n\n// Types pour les réponses API\nexport interface KYCResponse {\n success: boolean;\n data?: any;\n error?: KYCError;\n message?: string;\n}\n\n// Types pour les événements\nexport interface KYCEvent {\n type: 'step_completed' | 'document_uploaded' | 'selfie_captured' | 'verification_started' | 'verification_completed';\n timestamp: Date;\n data?: any;\n}\n\n// Types pour les configurations\nexport interface KYCConfig {\n apiBaseUrl: string;\n apiKey: string;\n timeout: number;\n retryAttempts: number;\n enableDebug: boolean;\n}\n\n// Types pour les hooks\nexport interface UseKYCReturn {\n session: KYCSession | null;\n currentStep: number;\n isProcessing: boolean;\n error: KYCError | null;\n startSession: (userId: string) => void;\n nextStep: () => void;\n previousStep: () => void;\n uploadDocument: (document: Document) => Promise<void>;\n captureSelfie: (selfie: Selfie) => Promise<void>;\n submitVerification: () => Promise<void>;\n resetSession: () => void;\n}\n\n// ===== NOUVEAUX TYPES POUR CONFIGURATION AUTOMATIQUE =====\n\n// Types d'éléments KYC configurables\nexport type KYCElementType =\n | 'country_selection'\n | 'document_type_selection'\n | 'camera_capture'\n | 'file_upload'\n | 'selfie_capture'\n | 'verification'\n | 'completion';\n//KYCElementType shorted\n\n\n// Configuration d'un élément KYC\nexport interface KYCElement {\n id: string;\n type: KYCElementType;\n title: string;\n description: string;\n isRequired: boolean;\n isVisible: boolean;\n order: number;\n validation?: KYCValidation;\n options?: KYCElementOption[];\n cameraConfig?: KYCCameraConfig;\n uploadConfig?: KYCUploadConfig;\n}\n\n// Options pour les éléments de sélection\nexport interface KYCElementOption {\n value: string;\n label: string;\n icon?: string;\n description?: string;\n}\n\n// Configuration de validation\nexport interface KYCValidation {\n required: boolean;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n customValidator?: (value: any) => boolean | string;\n}\n\n// Configuration de la caméra\nexport interface KYCCameraConfig {\n aspectRatio?: number;\n quality?: number;\n flashMode?: 'on' | 'off' | 'auto';\n cameraType?: 'front' | 'back';\n allowRetake: boolean;\n maxRetakes?: number;\n overlay?: {\n showGuide: boolean;\n guideText?: string;\n guideImage?: string;\n };\n}\n\n// Configuration d'upload\nexport interface KYCUploadConfig {\n allowedTypes: string[];\n maxFiles: number;\n maxFileSize?: number;\n allowMultiple: boolean;\n}\n\n// Configuration complète du flux KYC\nexport interface KYCFlowConfig {\n id: string;\n name: string;\n description: string;\n version: string;\n elements: KYCElement[];\n settings: {\n allowBackNavigation: boolean;\n showProgressBar: boolean;\n showStepNumbers: boolean;\n autoAdvance: boolean;\n enableRetry: boolean;\n maxRetries: number;\n };\n styling: {\n primaryColor: string;\n secondaryColor: string;\n backgroundColor: string;\n textColor: string;\n borderRadius: number;\n fontFamily?: string;\n };\n localization: {\n language: string;\n translations: Record<string, Record<string, string>>;\n };\n}\n\n// État du flux KYC\nexport interface KYCFlowState {\n config: KYCFlowConfig;\n currentElementIndex: number;\n completedElements: string[];\n elementData: Record<string, any>;\n errors: Record<string, string>;\n isProcessing: boolean;\n}\n\n// Actions pour le flux KYC\nexport interface KYCFlowActions {\n initializeFlow: (config: KYCFlowConfig) => void;\n nextElement: () => void;\n previousElement: () => void;\n goToElement: (elementId: string) => void;\n updateElementData: (elementId: string, data: any) => void;\n validateElement: (elementId: string) => boolean;\n submitFlow: () => Promise<void>;\n resetFlow: () => void;\n}\n\n// Hook pour le flux KYC\nexport interface UseKYCFlowReturn {\n state: KYCFlowState;\n actions: KYCFlowActions;\n currentElement: KYCElement | null;\n progress: number;\n canGoNext: boolean;\n canGoPrevious: boolean;\n isComplete: boolean;\n}\n\n// ===== TYPES FOR ORIENTATION VIDEO PROCESSING =====\n\n// Orientation types for liveness detection\nexport type OrientationType = 'center' | 'left' | 'right';\n\n// Individual orientation capture result\nexport interface OrientationCapture {\n captured: boolean;\n frame: number | null;\n}\n\n// Complete orientation video processing result\nexport interface OrientationVideoResult {\n center: OrientationCapture;\n right: OrientationCapture;\n left: OrientationCapture;\n}\n\n// Orientation video processing request\nexport interface OrientationVideoRequest {\n file: string; // Base64 encoded video or file path\n}\n\n// Orientation video processing response\nexport interface OrientationVideoResponse {\n success: boolean;\n data?: OrientationVideoResult;\n error?: KYCError;\n message?: string;\n}\n\n// Configuration for orientation video capture\nexport interface OrientationVideoConfig {\n duration: number; // Duration in seconds\n orientations: OrientationType[];\n instructions: Record<OrientationType, string>;\n showPreview: boolean;\n allowRetake: boolean;\n maxRetakes: number;\n quality: number;\n aspectRatio: number;\n}\n\n// State for orientation video capture\nexport interface OrientationVideoState {\n isRecording: boolean;\n currentOrientation: OrientationType | null;\n recordedVideo: string | null;\n processingResult: OrientationVideoResult | null;\n isProcessing: boolean;\n error: string | null;\n retakeCount: number;\n}\n\n// Actions for orientation video capture\nexport interface OrientationVideoActions {\n startRecording: () => void;\n stopRecording: () => void;\n processVideo: () => Promise<OrientationVideoResult>;\n retake: () => void;\n reset: () => void;\n setCurrentOrientation: (orientation: OrientationType) => void;\n}\n\n// ===== NOUVEAUX TYPES POUR TEMPLATE JSON =====\n\n// Types pour les labels et instructions multilingues\nexport interface LocalizedText {\n en: string;\n fr: string;\n [key: string]: string; // Support pour d'autres langues\n}\n\n// Configuration UI pour les composants\nexport interface ComponentUI {\n icon?: string;\n themeColor?: string;\n buttonText: LocalizedText | Record<string, LocalizedText>;\n backgroundColor?: string;\n textColor?: string;\n borderRadius?: number;\n}\n\n// Types de documents gouvernementaux supportés\nexport type GovernmentDocumentType =\n | 'identity_card'\n | 'passport'\n | 'drivers_licence'\n | 'health_insurance_card'\n | 'permanent_residence'\n | 'national_id'\n | 'work_permit'\n | 'id'\n | 'pp'\n | 'dl'\n | 'hic'\n | 'pr'\n | 'wp'\n\nexport const GovernmentDocumentTypeShorted: Record<GovernmentDocumentType, string> = {\n identity_card: 'id',\n passport: 'pp',\n drivers_licence: 'dl',\n health_insurance_card: 'hic',\n permanent_residence: 'pr',\n national_id: 'id',\n work_permit: 'wp',\n id: 'id',\n pp: 'pp',\n dl: 'dl',\n hic: 'hic',\n pr: 'pr',\n wp: 'wp',\n}\n\nexport const GovernmentDocumentTypeBackend: Record<string, GovernmentDocumentType> = {\n national_id: 'identity_card',\n passport: 'passport',\n driversLicense: 'drivers_licence',\n healthInsuranceCard: 'health_insurance_card',\n permanentResidence: 'permanent_residence',\n workPermit: 'work_permit',\n residencePermit: 'permanent_residence',\n}\n\n// Configuration spécifique pour chaque type de composant\nexport interface IDCardConfig {\n sides: string[];\n allowed_formats: string[];\n max_size_mb: number;\n document_types: GovernmentDocumentType[]; // Types de documents disponibles\n bbox_configs?: Record<GovernmentDocumentType, {\n xMin: number;\n yMin: number;\n xMax: number;\n yMax: number;\n borderColor?: string;\n borderWidth?: number;\n cornerRadius?: number;\n }>;\n}\n\n\nexport interface SelfieConfig {\n liveness_check: boolean;\n max_attempts: number;\n orientations: ('center' | 'left' | 'right')[]; // Tableau d'orientations à capturer\n}\n\nexport interface FileUploadConfig {\n allowed_formats: string[];\n max_size_mb: number;\n required: boolean;\n}\n\nexport interface LocationConfig {\n accuracy: string;\n required: boolean;\n}\n\nexport interface CountrySelectionConfig {\n allowed_countries: string[];\n default_country: string;\n required: boolean;\n}\n\n// Union type pour toutes les configurations\nexport type ComponentConfig =\n | IDCardConfig\n | SelfieConfig\n | FileUploadConfig\n | LocationConfig\n | CountrySelectionConfig\n | CountrySelectionConfig\n | WelcomeConfig\n | EmailVerificationConfig\n | PhoneVerificationConfig\n | PersonalInformationConfig\n | AdditionalDocumentsConfig;\n\n// Nouveau type de composant basé sur le template JSON\nexport interface TemplateComponent {\n id: number;\n type: 'id_card' | 'selfie' | 'file_upload' | 'location' | 'country_selection' | 'initialization' | 'review_submit' | 'verification_progress' | 'welcome' | 'email_verification' | 'phone_verification' | 'personal_information' | 'additional_documents';\n order: number;\n templateId?: number;\n labels: LocalizedText | Record<string, LocalizedText>;\n instructions: LocalizedText | Record<string, LocalizedText>;\n ui: ComponentUI | Record<string, ComponentUI>;\n config: ComponentConfig;\n}\n\n// Template KYC complet\nexport interface KYCTemplate {\n id: number;\n name: LocalizedText;\n description: LocalizedText;\n version: string;\n components: TemplateComponent[];\n}\n\n// État pour le template KYC\nexport interface TemplateState {\n template: KYCTemplate;\n currentComponentIndex: number;\n completedComponents: number[];\n componentData: Record<number, any>;\n errors: Record<number, string>;\n isProcessing: boolean;\n currentLanguage: string;\n showCustomStepper: boolean;\n session: SessionState;\n verification: VerificationState;\n}\n\nexport interface SessionState {\n session_id: string;\n token: string;\n isInitialized: boolean;\n isProcessing: boolean;\n error: string | null;\n /** True once loadSessionData has run (for resume flow); allows UI to show loading until country/data restored */\n sessionDataRestored?: boolean;\n}\n\nexport type VerificationStatus = 'idle' | 'in_progress' | 'success' | 'failed';\n\n\n\nexport interface VerificationState {\n status: VerificationStatus;\n result?: VerificationResult;\n}\n\n// Actions pour le template KYC\nexport interface TemplateActions {\n initializeTemplate: (template: KYCTemplate) => void;\n nextComponent: (overrideData?: any) => void;\n previousComponent: () => void;\n goToComponent: (componentId: number) => void;\n updateComponentData: (componentId: number, data: any) => void;\n validateComponent: (componentId: number, dataOverride?: any) => boolean;\n submitTemplate: () => Promise<void>;\n resetTemplate: () => void;\n setLanguage: (language: string) => void;\n showCustomStepper: (show: boolean) => void;\n setVerificationState: (state: VerificationState) => void;\n submitVerification: () => Promise<void>;\n}\n\n// Hook pour le template KYC (return type of useTemplateKYCFlow)\nexport interface UseTemplateReturn {\n state: TemplateState;\n actions: TemplateActions;\n currentComponent: TemplateComponent | null;\n progress: number;\n canGoNext: boolean;\n canGoPrevious: boolean;\n isComplete: boolean;\n getLocalizedText: (text: LocalizedText) => string;\n initializeSession: () => Promise<void>;\n env: 'PRODUCTION' | 'SANDBOX';\n /** Optional API key for backend auth (e.g. email verification endpoints). */\n apiKey?: string;\n}\n\n\nexport interface ISilentCaptureResult {\n success: boolean;\n path?: string;\n mrz?: string;\n error?: string;\n isAnalyzing?: boolean;\n bbox?: IBbox;\n country?: string;\n documentType?: string;\n templatePath?: string;\n lpipsScore?: number;\n}\n\nexport interface IBbox {\n minX: number;\n minY: number;\n width: number;\n height: number;\n}\n\nexport interface ICountryMapping {\n py_file?: string;\n front?: string;\n back?: string;\n keys_found?: string | null;\n mrz_type?: string;\n}\n\nexport interface Country {\n code?: string; // ISO 3166-1 alpha-2\n name: string;\n name_en: string;\n flag: string;\n regionMapping?: ICountryMapping;\n hasRegions?: boolean;\n}\n\n// ===== TYPES FOR BACKEND TEMPLATE FORMAT =====\n\n// Backend component configuration types\nexport interface WelcomeConfig {\n subtitle?: string;\n buttonText?: string;\n requirements?: string[];\n estimatedTime?: string;\n consentOptions?: {\n showPrivacyPolicy?: boolean;\n showTermsOfService?: boolean;\n showMarketingConsent?: boolean;\n };\n welcomeMessage?: string;\n showEstimatedTime?: boolean;\n}\n\nexport interface LocationCaptureConfig {\n showMap?: boolean;\n accuracy?: string;\n required?: boolean;\n maxDistance?: number;\n captureMethod?: string;\n allowManualEntry?: boolean;\n countryRestrictions?: string[];\n}\n\nexport interface GovernmentIdConfig {\n required?: boolean;\n allowSkip?: boolean;\n cameraOverlay?: {\n bbox?: {\n xMax?: number;\n xMin?: number;\n yMax?: number;\n yMin?: number;\n borderColor?: string;\n borderWidth?: number;\n cornerRadius?: number;\n };\n };\n documentTypes?: string[];\n requiredSides?: string;\n cameraSettings?: {\n quality?: number;\n flashMode?: string;\n maxRetakes?: number;\n allowRetake?: boolean;\n aspectRatio?: number;\n };\n validationRules?: string[];\n regionsByCountry?: Record<string, any>;\n selectedCountries?: string[];\n authenticationMethods?: Record<string, Record<string, {\n back?: string[];\n front?: string[];\n mrzTypes?: string[];\n }>>;\n documentTypesByCountry?: Record<string, string[]>;\n instructionsByDocumentType?: Record<string, LocalizedText>;\n}\n\nexport interface SelfieCaptureConfig {\n timeout?: number;\n maxAttempts?: number;\n faceMatching?: boolean;\n captureMethod?: string;\n qualityChecks?: string[];\n livenessChecks?: string[];\n matchThreshold?: string;\n livenessEnabled?: boolean;\n}\n\nexport interface ReviewSubmitConfig {\n allowEditing?: boolean;\n displayOptions?: string[];\n requireConsent?: boolean;\n postSubmitActions?: string[];\n}\n\nexport type BackendComponentConfig =\n | WelcomeConfig\n | LocationCaptureConfig\n | GovernmentIdConfig\n | SelfieCaptureConfig\n | ReviewSubmitConfig\n | Record<string, any>;\n\n// Backend component translation structure\nexport interface BackendComponentTranslations {\n en?: {\n title?: string;\n description?: string;\n instructions?: string;\n buttonText?: string;\n consentText?: string;\n successMessage?: string;\n };\n fr?: {\n title?: string;\n description?: string;\n instructions?: string;\n buttonText?: string;\n consentText?: string;\n successMessage?: string;\n };\n [key: string]: {\n title?: string;\n description?: string;\n instructions?: string;\n buttonText?: string;\n consentText?: string;\n successMessage?: string;\n } | undefined;\n}\n\n// Backend template component\nexport interface BackendTemplateComponent {\n id: string;\n type: 'welcome' | 'location-capture' | 'government-id' | 'selfie-capture' | 'review-submit' | 'verification-progress' | 'email-verification' | 'phone-verification' | 'personal-information' | 'additional-documents';\n order: number;\n config: BackendComponentConfig;\n required?: boolean;\n translations: BackendComponentTranslations;\n}\n\n// Backend template structure\nexport interface BackendKYCTemplate {\n id: string;\n name: {\n en: string;\n fr: string;\n [key: string]: string;\n };\n status?: string;\n version?: string;\n components: BackendTemplateComponent[];\n description?: {\n en: string;\n fr: string;\n [key: string]: string;\n };\n}\n\n// ===== NEW CONFIG TYPES FOR INPUT VERIFICATION =====\n\nexport interface EmailVerificationConfig {\n allowResend: boolean;\n otpSettings: {\n codeLength: number;\n expiryTime: number;\n };\n resendCooldown: number;\n emailValidation: {\n corporateOnly: boolean;\n validateFormat: boolean;\n checkDisposable: boolean;\n checkDeliverability: boolean;\n };\n verificationMethod: string;\n required?: boolean;\n}\n\nexport interface PhoneVerificationConfig {\n required: boolean;\n codeExpiry: number;\n codeLength: number;\n maxAttempts: number;\n resendDelay: number;\n countryRestrictions: string;\n verificationMethods: string[];\n allowSkipForVerified: boolean;\n}\n\nexport interface PersonalInfoField {\n id: string;\n type: string;\n label: string;\n required: boolean;\n placeholder?: string;\n autoFillFromId?: boolean;\n minAge?: number;\n verifyAge?: boolean;\n dateFormat?: string;\n}\n\nexport interface PersonalInformationConfig {\n fields: PersonalInfoField[];\n validationSettings: {\n validateOnBlur: boolean;\n showAllErrorsAtOnce: boolean;\n preventSubmissionWithErrors: boolean;\n };\n required?: boolean;\n}\n\nexport interface DocumentCategory {\n enabled: boolean;\n category: string;\n documentTypes: string[];\n}\n\nexport interface AdditionalDocumentsConfig {\n required: boolean;\n maxSizeEach: string;\n maxDocuments: number;\n minDocuments: number;\n documentCategories: DocumentCategory[];\n customDocumentTypes: any[];\n showBasedOnUserProfile: boolean;\n}\n\n// API response for template\nexport interface TemplateAPIResponse {\n id: string;\n name: {\n en: string;\n fr: string;\n [key: string]: string;\n };\n status?: string;\n version?: string;\n components: BackendTemplateComponent[];\n description?: {\n en: string;\n fr: string;\n [key: string]: string;\n };\n}\n\n// ===== NEW CONFIG TYPES FOR INPUT VERIFICATION =====\n\nexport interface EmailVerificationConfig {\n allowResend: boolean;\n otpSettings: {\n codeLength: number;\n expiryTime: number;\n };\n resendCooldown: number;\n emailValidation: {\n corporateOnly: boolean;\n validateFormat: boolean;\n checkDisposable: boolean;\n checkDeliverability: boolean;\n };\n verificationMethod: string;\n required?: boolean;\n}\n\nexport interface PhoneVerificationConfig {\n required: boolean;\n codeExpiry: number;\n codeLength: number;\n maxAttempts: number;\n resendDelay: number;\n countryRestrictions: string;\n verificationMethods: string[];\n allowSkipForVerified: boolean;\n}\n\nexport interface PersonalInfoField {\n id: string;\n type: string;\n label: string;\n required: boolean;\n placeholder?: string;\n autoFillFromId?: boolean;\n minAge?: number;\n verifyAge?: boolean;\n dateFormat?: string;\n}\n\nexport interface PersonalInformationConfig {\n fields: PersonalInfoField[];\n validationSettings: {\n validateOnBlur: boolean;\n showAllErrorsAtOnce: boolean;\n preventSubmissionWithErrors: boolean;\n };\n required?: boolean;\n}\n\nexport interface DocumentCategory {\n enabled: boolean;\n category: string;\n documentTypes: string[];\n}\n\nexport interface AdditionalDocumentsConfig {\n required: boolean;\n maxSizeEach: string;\n maxDocuments: number;\n minDocuments: number;\n documentCategories: DocumentCategory[];\n customDocumentTypes: any[];\n showBasedOnUserProfile: boolean;\n}"]}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * KYC Environment types
3
+ * PRODUCTION: Full verification with AI checks
4
+ * SANDBOX: Skip AI verification, only save data to backend
5
+ */
6
+ export type KycEnvironment = 'PRODUCTION' | 'SANDBOX';
7
+ /**
8
+ * Backend Environment types
9
+ * PRODUCTION: Production backend
10
+ * TEST: Test backend
11
+ */
12
+ export type BackendEnvironment = 'PRODUCTION' | 'TEST';
13
+ //# sourceMappingURL=env.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.types.d.ts","sourceRoot":"","sources":["../../src/types/env.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,SAAS,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.types.js","sourceRoot":"","sources":["../../src/types/env.types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * KYC Environment types\n * PRODUCTION: Full verification with AI checks\n * SANDBOX: Skip AI verification, only save data to backend\n */\nexport type KycEnvironment = 'PRODUCTION' | 'SANDBOX';\n\n/**\n * Backend Environment types\n * PRODUCTION: Production backend\n * TEST: Test backend\n */\nexport type BackendEnvironment = 'PRODUCTION' | 'TEST';\n"]}
@@ -0,0 +1,37 @@
1
+ /** OBB confidence below this = card not fully in frame; don't crop, give user feedback. */
2
+ export declare const OBB_CONFIDENCE_THRESHOLD = 0.85;
3
+ /**
4
+ * card_obb format from API:
5
+ * - Legacy: [ [ [p1,p2,p3,p4], confidence ] ]
6
+ * - New: [ { obb: [p1,p2,p3,p4], confidence, card_in_frame?, cropped_sides? } ]
7
+ * Returns confidence in [0,1] or null if not present.
8
+ */
9
+ export declare function getObbConfidence(cardObb: any): number | null;
10
+ /**
11
+ * Extracts the card_in_frame flag from card_obb when present.
12
+ * Returns:
13
+ * - true => card fully in frame
14
+ * - false => card not fully in frame
15
+ * - null => field not present (backward compatibility)
16
+ */
17
+ /**
18
+ * Extracts the framing data from card_obb.
19
+ * STRICT CHECK: Returns true ONLY if card_in_frame is true AND cropped_sides is empty.
20
+ * Returns:
21
+ * - true => card fully in frame (no sides cropped)
22
+ * - false => card not fully in frame OR edges are cropped
23
+ * - null => field not present (backward compatibility)
24
+ */
25
+ export declare function getCardInFrame(cardObb: any): boolean | null;
26
+ export declare function cropByObb(uri: string, cardObb: any): Promise<{
27
+ base64?: string;
28
+ bbox?: {
29
+ minX: number;
30
+ minY: number;
31
+ width: number;
32
+ height: number;
33
+ };
34
+ }>;
35
+ export declare function cropImageWithBBox(uri: string, bbox: any): Promise<string>;
36
+ export declare function cropImageWithBBoxWithTolerance(uri: string, bbox: any, tolerance?: number): Promise<string>;
37
+ //# sourceMappingURL=cropByObb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropByObb.d.ts","sourceRoot":"","sources":["../../src/utils/cropByObb.ts"],"names":[],"mappings":"AAOA,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAc5D;AAED;;;;;;GAMG;AACH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,GAAG,IAAI,CA6B3D;AA4CD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAsB7J;AAMD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,mBA4B7D;AAGD,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0ErH"}
@@ -0,0 +1,215 @@
1
+ import { Image as RNImage, Platform } from 'react-native';
2
+ import * as ImageManipulator from "expo-image-manipulator";
3
+ import { truncateFields } from '../modules/api/KYCService';
4
+ import { logger } from './logger';
5
+ /** OBB confidence below this = card not fully in frame; don't crop, give user feedback. */
6
+ export const OBB_CONFIDENCE_THRESHOLD = 0.85;
7
+ /**
8
+ * card_obb format from API:
9
+ * - Legacy: [ [ [p1,p2,p3,p4], confidence ] ]
10
+ * - New: [ { obb: [p1,p2,p3,p4], confidence, card_in_frame?, cropped_sides? } ]
11
+ * Returns confidence in [0,1] or null if not present.
12
+ */
13
+ export function getObbConfidence(cardObb) {
14
+ if (!cardObb || !Array.isArray(cardObb) || cardObb.length === 0)
15
+ return null;
16
+ const first = cardObb[0];
17
+ // New format: first is an object with a confidence field
18
+ if (first && typeof first === 'object' && 'confidence' in first) {
19
+ const score = first.confidence;
20
+ return typeof score === 'number' ? score : null;
21
+ }
22
+ // Legacy format: [ [points], score ]
23
+ if (!Array.isArray(first) || first.length < 2)
24
+ return null;
25
+ const score = first[1];
26
+ return typeof score === 'number' ? score : null;
27
+ }
28
+ /**
29
+ * Extracts the card_in_frame flag from card_obb when present.
30
+ * Returns:
31
+ * - true => card fully in frame
32
+ * - false => card not fully in frame
33
+ * - null => field not present (backward compatibility)
34
+ */
35
+ /**
36
+ * Extracts the framing data from card_obb.
37
+ * STRICT CHECK: Returns true ONLY if card_in_frame is true AND cropped_sides is empty.
38
+ * Returns:
39
+ * - true => card fully in frame (no sides cropped)
40
+ * - false => card not fully in frame OR edges are cropped
41
+ * - null => field not present (backward compatibility)
42
+ */
43
+ export function getCardInFrame(cardObb) {
44
+ if (!cardObb)
45
+ return null;
46
+ // card_obb can be an array of objects or a single object
47
+ const first = Array.isArray(cardObb) ? cardObb[0] : cardObb;
48
+ if (first && typeof first === 'object' && 'card_in_frame' in first) {
49
+ const isCardInFrame = first.card_in_frame === true;
50
+ const hasCroppedSides = Array.isArray(first.cropped_sides) && first.cropped_sides.length > 0;
51
+ // If the API explicitly says it's not in frame, OR if it lists cropped edges, reject it.
52
+ if (!isCardInFrame || hasCroppedSides) {
53
+ if (hasCroppedSides) {
54
+ console.warn(`Card is cropped on sides: ${first.cropped_sides.join(', ')}`);
55
+ }
56
+ return false;
57
+ }
58
+ // If we made it here, card_in_frame is true AND cropped_sides is empty.
59
+ return true;
60
+ }
61
+ // Backward compatibility check
62
+ if (cardObb && typeof cardObb === 'object' && 'card_in_frame' in cardObb) {
63
+ const value = cardObb.card_in_frame;
64
+ return typeof value === 'boolean' ? value : null;
65
+ }
66
+ return null;
67
+ }
68
+ // Compute axis-aligned bounding box from oriented quadrilateral
69
+ function computeAabb(points) {
70
+ const xs = points.map(p => p[0]);
71
+ const ys = points.map(p => p[1]);
72
+ const minX = Math.min(...xs);
73
+ const minY = Math.min(...ys);
74
+ const maxX = Math.max(...xs);
75
+ const maxY = Math.max(...ys);
76
+ return { minX, minY, maxX, maxY, width: maxX - minX, height: maxY - minY };
77
+ }
78
+ // Web-only crop using Canvas; returns dataURL (base64)
79
+ async function cropWeb(uri, points) {
80
+ return new Promise((resolve, reject) => {
81
+ const img = new Image();
82
+ img.crossOrigin = 'anonymous';
83
+ img.onload = () => {
84
+ const { minX, minY, width, height } = computeAabb(points);
85
+ const canvas = document.createElement('canvas');
86
+ canvas.width = Math.max(1, Math.round(width));
87
+ canvas.height = Math.max(1, Math.round(height));
88
+ const ctx = canvas.getContext('2d');
89
+ if (!ctx)
90
+ return reject(new Error('Canvas context not available'));
91
+ ctx.drawImage(img, minX, // sx
92
+ minY, // sy
93
+ width, // sw
94
+ height, // sh
95
+ 0, 0, canvas.width, canvas.height);
96
+ resolve(canvas.toDataURL('image/jpeg', 0.92));
97
+ };
98
+ img.onerror = (e) => reject(e);
99
+ img.src = uri;
100
+ });
101
+ }
102
+ // Fallback: return original for native (no dependency added); caller can still use bbox to draw overlay
103
+ export async function cropByObb(uri, cardObb) {
104
+ try {
105
+ // card_obb format: [ [ [p1,p2,p3,p4], score ] ] — if confidence too low, don't crop (send full image)
106
+ const confidence = getObbConfidence(cardObb);
107
+ if (confidence !== null && confidence < OBB_CONFIDENCE_THRESHOLD) {
108
+ return {};
109
+ }
110
+ const first = Array.isArray(cardObb) ? cardObb[0] : null;
111
+ const points = Array.isArray(first?.[0]) ? first[0] : null;
112
+ if (!points || points.length !== 4)
113
+ return {};
114
+ const { minX, minY, width, height } = computeAabb(points);
115
+ if (Platform.OS === 'web') {
116
+ const base64 = await cropWeb(uri, points);
117
+ return { base64, bbox: { minX, minY, width, height } };
118
+ }
119
+ // Native: return bbox only; keep base64 undefined
120
+ return { bbox: { minX, minY, width, height } };
121
+ }
122
+ catch (e) {
123
+ return {};
124
+ }
125
+ }
126
+ // exemple d'appel :
127
+ export async function cropImageWithBBox(uri, bbox) {
128
+ // 1️⃣ Récupère la taille originale de l'image
129
+ await RNImage.getSize(uri, (width, height) => {
130
+ console.log("Image originale:", width, height);
131
+ });
132
+ // // 2️⃣ Suppose que ton bbox vient d'une image affichée dans `displayedSize`
133
+ // const scaleX = originalWidth / displayedSize.width;
134
+ // const scaleY = originalHeight / displayedSize.height;
135
+ // 3️⃣ Convertir le bbox à la taille réelle scale 0.10 = 10%
136
+ const crop = {
137
+ originX: bbox.minX,
138
+ originY: bbox.minY,
139
+ width: bbox.width,
140
+ height: bbox.height,
141
+ };
142
+ // 4️⃣ Appliquer le crop
143
+ // @ts-ignore - manipulateAsync is deprecated but still functional, new API (useImageManipulator) is a React hook and not suitable for utility functions
144
+ const result = await ImageManipulator.manipulateAsync(uri, [{ crop }], { compress: 1, format: ImageManipulator.SaveFormat.PNG });
145
+ console.log("Image recadrée:", result.uri);
146
+ return result.uri;
147
+ }
148
+ // Fonction pour rogner avec une tolérance de 10% autour du bbox
149
+ export async function cropImageWithBBoxWithTolerance(uri, bbox, tolerance = 0.1) {
150
+ console.log("cropImageWithBBoxWithTolerance", JSON.stringify(truncateFields({ uri, bbox, tolerance }), null, 2));
151
+ return new Promise((resolve, reject) => {
152
+ let isResolved = false;
153
+ // Timeout de sécurité (15 secondes)
154
+ const timeout = setTimeout(() => {
155
+ if (!isResolved) {
156
+ isResolved = true;
157
+ console.warn("Timeout lors du rognage avec tolérance, utilisation de l'image originale");
158
+ resolve(uri); // Retourner l'URI original en cas de timeout
159
+ }
160
+ }, 15000);
161
+ // 1️⃣ Récupère la taille originale de l'image
162
+ RNImage.getSize(uri, (imageWidth, imageHeight) => {
163
+ if (isResolved)
164
+ return;
165
+ // 2️⃣ Calculer la tolérance en pixels (10% de chaque côté)
166
+ const toleranceX = bbox.width * tolerance;
167
+ const toleranceY = bbox.height * tolerance;
168
+ // 3️⃣ Ajuster le bbox avec la tolérance
169
+ // Calculer les nouvelles coordonnées avec tolérance
170
+ const newMinX = Math.max(0, bbox.minX - toleranceX);
171
+ const newMinY = Math.max(0, bbox.minY - toleranceY);
172
+ const newMaxX = Math.min(imageWidth, bbox.minX + bbox.width + toleranceX);
173
+ const newMaxY = Math.min(imageHeight, bbox.minY + bbox.height + toleranceY);
174
+ // Calculer la largeur et hauteur finales
175
+ const finalWidth = newMaxX - newMinX;
176
+ const finalHeight = newMaxY - newMinY;
177
+ const crop = {
178
+ originX: newMinX,
179
+ originY: newMinY,
180
+ width: finalWidth,
181
+ height: finalHeight,
182
+ };
183
+ logger.log("cropImageWithBBoxWithTolerance - crop params", JSON.stringify(truncateFields({ uri, crop, tolerance, imageWidth, imageHeight }), null, 2));
184
+ // 4️⃣ Appliquer le crop avec tolérance
185
+ // @ts-ignore - manipulateAsync is deprecated but still functional, new API (useImageManipulator) is a React hook and not suitable for utility functions
186
+ ImageManipulator.manipulateAsync(uri, [{ crop }], { compress: 0.95, format: ImageManipulator.SaveFormat.JPEG })
187
+ .then((result) => {
188
+ if (isResolved)
189
+ return;
190
+ isResolved = true;
191
+ clearTimeout(timeout);
192
+ console.log("Image recadrée avec tolérance:", result.uri);
193
+ resolve(result.uri);
194
+ })
195
+ .catch((error) => {
196
+ if (isResolved)
197
+ return;
198
+ isResolved = true;
199
+ clearTimeout(timeout);
200
+ console.error("Erreur lors du rognage avec tolérance:", error);
201
+ // En cas d'erreur, retourner l'URI original au lieu de rejeter
202
+ resolve(uri);
203
+ });
204
+ }, (error) => {
205
+ if (isResolved)
206
+ return;
207
+ isResolved = true;
208
+ clearTimeout(timeout);
209
+ console.error("Erreur lors de la récupération de la taille de l'image:", error);
210
+ // En cas d'erreur, retourner l'URI original au lieu de rejeter
211
+ resolve(uri);
212
+ });
213
+ });
214
+ }
215
+ //# sourceMappingURL=cropByObb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropByObb.js","sourceRoot":"","sources":["../../src/utils/cropByObb.ts"],"names":[],"mappings":"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","sourcesContent":["import { Image as RNImage, Platform } from 'react-native';\nimport * as ImageManipulator from \"expo-image-manipulator\";\nimport { truncateFields } from '../modules/api/KYCService';\nimport { logger } from './logger';\n\ntype Point = [number, number];\n\n/** OBB confidence below this = card not fully in frame; don't crop, give user feedback. */\nexport const OBB_CONFIDENCE_THRESHOLD = 0.85;\n\n/**\n * card_obb format from API:\n * - Legacy: [ [ [p1,p2,p3,p4], confidence ] ]\n * - New: [ { obb: [p1,p2,p3,p4], confidence, card_in_frame?, cropped_sides? } ]\n * Returns confidence in [0,1] or null if not present.\n */\nexport function getObbConfidence(cardObb: any): number | null {\n if (!cardObb || !Array.isArray(cardObb) || cardObb.length === 0) return null;\n const first = cardObb[0];\n\n // New format: first is an object with a confidence field\n if (first && typeof first === 'object' && 'confidence' in first) {\n const score = (first as any).confidence;\n return typeof score === 'number' ? score : null;\n }\n\n // Legacy format: [ [points], score ]\n if (!Array.isArray(first) || first.length < 2) return null;\n const score = first[1];\n return typeof score === 'number' ? score : null;\n}\n\n/**\n * Extracts the card_in_frame flag from card_obb when present.\n * Returns:\n * - true => card fully in frame\n * - false => card not fully in frame\n * - null => field not present (backward compatibility)\n */\n/**\n * Extracts the framing data from card_obb.\n * STRICT CHECK: Returns true ONLY if card_in_frame is true AND cropped_sides is empty.\n * Returns:\n * - true => card fully in frame (no sides cropped)\n * - false => card not fully in frame OR edges are cropped\n * - null => field not present (backward compatibility)\n */\nexport function getCardInFrame(cardObb: any): boolean | null {\n if (!cardObb) return null;\n\n // card_obb can be an array of objects or a single object\n const first = Array.isArray(cardObb) ? cardObb[0] : cardObb;\n\n if (first && typeof first === 'object' && 'card_in_frame' in first) {\n const isCardInFrame = first.card_in_frame === true;\n const hasCroppedSides = Array.isArray(first.cropped_sides) && first.cropped_sides.length > 0;\n\n // If the API explicitly says it's not in frame, OR if it lists cropped edges, reject it.\n if (!isCardInFrame || hasCroppedSides) {\n if (hasCroppedSides) {\n console.warn(`Card is cropped on sides: ${first.cropped_sides.join(', ')}`);\n }\n return false; \n }\n\n // If we made it here, card_in_frame is true AND cropped_sides is empty.\n return true; \n }\n\n // Backward compatibility check\n if (cardObb && typeof cardObb === 'object' && 'card_in_frame' in cardObb) {\n const value = (cardObb as any).card_in_frame;\n return typeof value === 'boolean' ? value : null;\n }\n\n return null;\n}\n\n// Compute axis-aligned bounding box from oriented quadrilateral\nfunction computeAabb(points: Point[]) {\n const xs = points.map(p => p[0]);\n const ys = points.map(p => p[1]);\n const minX = Math.min(...xs);\n const minY = Math.min(...ys);\n const maxX = Math.max(...xs);\n const maxY = Math.max(...ys);\n return { minX, minY, maxX, maxY, width: maxX - minX, height: maxY - minY };\n}\n\n// Web-only crop using Canvas; returns dataURL (base64)\nasync function cropWeb(uri: string, points: Point[]): Promise<string> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n const { minX, minY, width, height } = computeAabb(points);\n const canvas = document.createElement('canvas');\n canvas.width = Math.max(1, Math.round(width));\n canvas.height = Math.max(1, Math.round(height));\n const ctx = canvas.getContext('2d');\n if (!ctx) return reject(new Error('Canvas context not available'));\n ctx.drawImage(\n img,\n minX, // sx\n minY, // sy\n width, // sw\n height, // sh\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n resolve(canvas.toDataURL('image/jpeg', 0.92));\n };\n img.onerror = (e) => reject(e);\n img.src = uri;\n });\n}\n\n// Fallback: return original for native (no dependency added); caller can still use bbox to draw overlay\nexport async function cropByObb(uri: string, cardObb: any): Promise<{ base64?: string; bbox?: { minX: number; minY: number; width: number; height: number } }> {\n try {\n // card_obb format: [ [ [p1,p2,p3,p4], score ] ] — if confidence too low, don't crop (send full image)\n const confidence = getObbConfidence(cardObb);\n if (confidence !== null && confidence < OBB_CONFIDENCE_THRESHOLD) {\n return {};\n }\n const first = Array.isArray(cardObb) ? cardObb[0] : null;\n const points = Array.isArray(first?.[0]) ? (first[0] as Point[]) : null;\n if (!points || points.length !== 4) return {};\n\n const { minX, minY, width, height } = computeAabb(points);\n\n if (Platform.OS === 'web') {\n const base64 = await cropWeb(uri, points);\n return { base64, bbox: { minX, minY, width, height } };\n }\n // Native: return bbox only; keep base64 undefined\n return { bbox: { minX, minY, width, height } };\n } catch (e) {\n return {};\n }\n}\n\n\n\n\n// exemple d'appel :\nexport async function cropImageWithBBox(uri: string, bbox: any) {\n // 1️⃣ Récupère la taille originale de l'image\n await RNImage.getSize(uri, (width, height) => {\n console.log(\"Image originale:\", width, height);\n });\n\n // // 2️⃣ Suppose que ton bbox vient d'une image affichée dans `displayedSize`\n // const scaleX = originalWidth / displayedSize.width;\n // const scaleY = originalHeight / displayedSize.height;\n\n // 3️⃣ Convertir le bbox à la taille réelle scale 0.10 = 10%\n const crop = {\n originX: bbox.minX,\n originY: bbox.minY,\n width: bbox.width,\n height: bbox.height,\n };\n\n // 4️⃣ Appliquer le crop\n // @ts-ignore - manipulateAsync is deprecated but still functional, new API (useImageManipulator) is a React hook and not suitable for utility functions\n const result = await ImageManipulator.manipulateAsync(\n uri,\n [{ crop }],\n { compress: 1, format: ImageManipulator.SaveFormat.PNG }\n );\n\n console.log(\"Image recadrée:\", result.uri);\n return result.uri;\n}\n\n// Fonction pour rogner avec une tolérance de 10% autour du bbox\nexport async function cropImageWithBBoxWithTolerance(uri: string, bbox: any, tolerance: number = 0.1): Promise<string> {\n console.log(\"cropImageWithBBoxWithTolerance\", JSON.stringify(truncateFields({ uri, bbox, tolerance }), null, 2));\n \n return new Promise<string>((resolve, reject) => {\n let isResolved = false;\n \n // Timeout de sécurité (15 secondes)\n const timeout = setTimeout(() => {\n if (!isResolved) {\n isResolved = true;\n console.warn(\"Timeout lors du rognage avec tolérance, utilisation de l'image originale\");\n resolve(uri); // Retourner l'URI original en cas de timeout\n }\n }, 15000);\n\n // 1️⃣ Récupère la taille originale de l'image\n RNImage.getSize(uri, (imageWidth, imageHeight) => {\n if (isResolved) return;\n \n // 2️⃣ Calculer la tolérance en pixels (10% de chaque côté)\n const toleranceX = bbox.width * tolerance;\n const toleranceY = bbox.height * tolerance;\n\n // 3️⃣ Ajuster le bbox avec la tolérance\n // Calculer les nouvelles coordonnées avec tolérance\n const newMinX = Math.max(0, bbox.minX - toleranceX);\n const newMinY = Math.max(0, bbox.minY - toleranceY);\n const newMaxX = Math.min(imageWidth, bbox.minX + bbox.width + toleranceX);\n const newMaxY = Math.min(imageHeight, bbox.minY + bbox.height + toleranceY);\n\n // Calculer la largeur et hauteur finales\n const finalWidth = newMaxX - newMinX;\n const finalHeight = newMaxY - newMinY;\n\n const crop = {\n originX: newMinX,\n originY: newMinY,\n width: finalWidth,\n height: finalHeight,\n };\n\n logger.log(\"cropImageWithBBoxWithTolerance - crop params\", JSON.stringify(truncateFields({ uri, crop, tolerance, imageWidth, imageHeight }), null, 2));\n\n // 4️⃣ Appliquer le crop avec tolérance\n // @ts-ignore - manipulateAsync is deprecated but still functional, new API (useImageManipulator) is a React hook and not suitable for utility functions\n ImageManipulator.manipulateAsync(\n uri,\n [{ crop }],\n { compress: 0.95, format: ImageManipulator.SaveFormat.JPEG }\n )\n .then((result) => {\n if (isResolved) return;\n isResolved = true;\n clearTimeout(timeout);\n console.log(\"Image recadrée avec tolérance:\", result.uri);\n resolve(result.uri);\n })\n .catch((error) => {\n if (isResolved) return;\n isResolved = true;\n clearTimeout(timeout);\n console.error(\"Erreur lors du rognage avec tolérance:\", error);\n // En cas d'erreur, retourner l'URI original au lieu de rejeter\n resolve(uri);\n });\n }, (error) => {\n if (isResolved) return;\n isResolved = true;\n clearTimeout(timeout);\n console.error(\"Erreur lors de la récupération de la taille de l'image:\", error);\n // En cas d'erreur, retourner l'URI original au lieu de rejeter\n resolve(uri);\n });\n });\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Checks if the current environment is a mobile web browser based on User Agent.
3
+ * This can be used to distinguish between desktop web and mobile web.
4
+ */
5
+ export declare const isMobileWeb: () => boolean;
6
+ //# sourceMappingURL=deviceDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceDetection.d.ts","sourceRoot":"","sources":["../../src/utils/deviceDetection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAO,OAM9B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Checks if the current environment is a mobile web browser based on User Agent.
3
+ * This can be used to distinguish between desktop web and mobile web.
4
+ */
5
+ export const isMobileWeb = () => {
6
+ if (typeof window === 'undefined' || !window.navigator) {
7
+ return false;
8
+ }
9
+ const userAgent = window.navigator.userAgent;
10
+ return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
11
+ };
12
+ //# sourceMappingURL=deviceDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceDetection.js","sourceRoot":"","sources":["../../src/utils/deviceDetection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACrC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IAC7C,OAAO,gEAAgE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5F,CAAC,CAAC","sourcesContent":["/**\n * Checks if the current environment is a mobile web browser based on User Agent.\n * This can be used to distinguish between desktop web and mobile web.\n */\nexport const isMobileWeb = (): boolean => {\n if (typeof window === 'undefined' || !window.navigator) {\n return false;\n }\n const userAgent = window.navigator.userAgent;\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);\n};\n"]}
@@ -0,0 +1,13 @@
1
+ import { GovernmentDocumentType } from "../types/KYC.types";
2
+ export declare const getDocumentTypeInfo: (docType: GovernmentDocumentType) => {
3
+ name: {
4
+ en: string;
5
+ fr: string;
6
+ };
7
+ icon: string;
8
+ instructions: {
9
+ en: string;
10
+ fr: string;
11
+ };
12
+ };
13
+ //# sourceMappingURL=get-document-type-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-document-type-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-document-type-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,GAAI,SAAS,sBAAsB;;;;;;;;;;CA2DlE,CAAC"}
@@ -0,0 +1,59 @@
1
+ export const getDocumentTypeInfo = (docType) => {
2
+ switch (docType) {
3
+ case 'identity_card':
4
+ return {
5
+ name: { en: 'ID Card', fr: 'Carte d\'identité' },
6
+ icon: '🆔',
7
+ instructions: { en: 'Position your ID card within the frame', fr: 'Positionnez votre carte d\'identité dans le cadre' }
8
+ };
9
+ case 'passport':
10
+ return {
11
+ name: { en: 'Passport', fr: 'Passeport' },
12
+ icon: '📘',
13
+ instructions: { en: 'Position your passport within the frame', fr: 'Positionnez votre passeport dans le cadre' }
14
+ };
15
+ case 'drivers_licence':
16
+ return {
17
+ name: { en: 'Driver\'s License', fr: 'Permis de conduire' },
18
+ icon: '🚗',
19
+ instructions: { en: 'Position your driver\'s license within the frame', fr: 'Positionnez votre permis de conduire dans le cadre' }
20
+ };
21
+ case 'permanent_residence':
22
+ return {
23
+ name: { en: 'Residence Permit', fr: 'Permis de séjour' },
24
+ icon: '🏠',
25
+ instructions: { en: 'Position your residence permit within the frame', fr: 'Positionnez votre permis de séjour dans le cadre' }
26
+ };
27
+ case 'national_id':
28
+ return {
29
+ name: { en: 'National ID', fr: 'Carte nationale d\'identité' },
30
+ icon: '🏛️',
31
+ instructions: { en: 'Position your national ID within the frame', fr: 'Positionnez votre carte nationale d\'identité dans le cadre' }
32
+ };
33
+ case 'health_insurance_card':
34
+ return {
35
+ name: { en: 'Health Insurance Card', fr: 'Carte d\'assurance santé' },
36
+ icon: '🗳️',
37
+ instructions: { en: 'Position your health insurance card within the frame', fr: 'Positionnez votre carte d\'assurance santé dans le cadre' }
38
+ };
39
+ case 'work_permit':
40
+ return {
41
+ name: { en: 'Work Permit', fr: 'Permis de travail' },
42
+ icon: '🎖️',
43
+ instructions: { en: 'Position your work permit within the frame', fr: 'Positionnez votre permis de travail dans le cadre' }
44
+ };
45
+ case 'passport':
46
+ return {
47
+ name: { en: 'Passport', fr: 'Passeport' },
48
+ icon: '💼',
49
+ instructions: { en: 'Position your passport within the frame', fr: 'Positionnez votre passeport dans le cadre' }
50
+ };
51
+ default:
52
+ return {
53
+ name: { en: 'Government Document', fr: 'Document gouvernemental' },
54
+ icon: '📄',
55
+ instructions: { en: 'Position your document within the frame', fr: 'Positionnez votre document dans le cadre' }
56
+ };
57
+ }
58
+ };
59
+ //# sourceMappingURL=get-document-type-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-document-type-info.js","sourceRoot":"","sources":["../../src/utils/get-document-type-info.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA+B,EAAE,EAAE;IACnE,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,eAAe;YAChB,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,EAAE;gBAChD,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,wCAAwC,EAAE,EAAE,EAAE,mDAAmD,EAAE;aAC1H,CAAC;QACN,KAAK,UAAU;YACX,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE;gBACzC,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,yCAAyC,EAAE,EAAE,EAAE,2CAA2C,EAAE;aACnH,CAAC;QACN,KAAK,iBAAiB;YAClB,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,oBAAoB,EAAE;gBAC3D,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,kDAAkD,EAAE,EAAE,EAAE,oDAAoD,EAAE;aACrI,CAAC;QACN,KAAK,qBAAqB;YACtB,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,EAAE;gBACxD,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,iDAAiD,EAAE,EAAE,EAAE,kDAAkD,EAAE;aAClI,CAAC;QACN,KAAK,aAAa;YACd,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,6BAA6B,EAAE;gBAC9D,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,EAAE,EAAE,EAAE,4CAA4C,EAAE,EAAE,EAAE,6DAA6D,EAAE;aACxI,CAAC;QACN,KAAK,uBAAuB;YACxB,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,0BAA0B,EAAE;gBACrE,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,EAAE,EAAE,EAAE,sDAAsD,EAAE,EAAE,EAAE,0DAA0D,EAAE;aAC/I,CAAC;QACN,KAAK,aAAa;YACd,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,mBAAmB,EAAE;gBACpD,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,EAAE,EAAE,EAAE,4CAA4C,EAAE,EAAE,EAAE,mDAAmD,EAAE;aAC9H,CAAC;QAEN,KAAK,UAAU;YACX,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE;gBACzC,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,yCAAyC,EAAE,EAAE,EAAE,2CAA2C,EAAE;aACnH,CAAC;QAEN;YACI,OAAO;gBACH,IAAI,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,yBAAyB,EAAE;gBAClE,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,EAAE,EAAE,EAAE,yCAAyC,EAAE,EAAE,EAAE,0CAA0C,EAAE;aAClH,CAAC;IACV,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { GovernmentDocumentType } from \"../types/KYC.types\";\n\nexport const getDocumentTypeInfo = (docType: GovernmentDocumentType) => {\n switch (docType) {\n case 'identity_card':\n return {\n name: { en: 'ID Card', fr: 'Carte d\\'identité' },\n icon: '🆔',\n instructions: { en: 'Position your ID card within the frame', fr: 'Positionnez votre carte d\\'identité dans le cadre' }\n };\n case 'passport':\n return {\n name: { en: 'Passport', fr: 'Passeport' },\n icon: '📘',\n instructions: { en: 'Position your passport within the frame', fr: 'Positionnez votre passeport dans le cadre' }\n };\n case 'drivers_licence':\n return {\n name: { en: 'Driver\\'s License', fr: 'Permis de conduire' },\n icon: '🚗',\n instructions: { en: 'Position your driver\\'s license within the frame', fr: 'Positionnez votre permis de conduire dans le cadre' }\n };\n case 'permanent_residence':\n return {\n name: { en: 'Residence Permit', fr: 'Permis de séjour' },\n icon: '🏠',\n instructions: { en: 'Position your residence permit within the frame', fr: 'Positionnez votre permis de séjour dans le cadre' }\n };\n case 'national_id':\n return {\n name: { en: 'National ID', fr: 'Carte nationale d\\'identité' },\n icon: '🏛️',\n instructions: { en: 'Position your national ID within the frame', fr: 'Positionnez votre carte nationale d\\'identité dans le cadre' }\n };\n case 'health_insurance_card':\n return {\n name: { en: 'Health Insurance Card', fr: 'Carte d\\'assurance santé' },\n icon: '🗳️',\n instructions: { en: 'Position your health insurance card within the frame', fr: 'Positionnez votre carte d\\'assurance santé dans le cadre' }\n };\n case 'work_permit':\n return {\n name: { en: 'Work Permit', fr: 'Permis de travail' },\n icon: '🎖️',\n instructions: { en: 'Position your work permit within the frame', fr: 'Positionnez votre permis de travail dans le cadre' }\n };\n\n case 'passport':\n return {\n name: { en: 'Passport', fr: 'Passeport' },\n icon: '💼',\n instructions: { en: 'Position your passport within the frame', fr: 'Positionnez votre passeport dans le cadre' }\n };\n\n default:\n return {\n name: { en: 'Government Document', fr: 'Document gouvernemental' },\n icon: '📄',\n instructions: { en: 'Position your document within the frame', fr: 'Positionnez votre document dans le cadre' }\n };\n }\n};\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Logger utility that only logs in development mode
3
+ * In production, all logs are suppressed
4
+ */
5
+ export declare const logger: {
6
+ log: (...args: any[]) => void;
7
+ error: (...args: any[]) => void;
8
+ warn: (...args: any[]) => void;
9
+ info: (...args: any[]) => void;
10
+ debug: (...args: any[]) => void;
11
+ };
12
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,eAAO,MAAM,MAAM;mBACF,GAAG,EAAE;qBAKH,GAAG,EAAE;oBAKN,GAAG,EAAE;oBAKL,GAAG,EAAE;qBAKJ,GAAG,EAAE;CAKvB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Logger utility that only logs in development mode
3
+ * In production, all logs are suppressed
4
+ */
5
+ const isProduction = () => {
6
+ // Check for React Native __DEV__ flag
7
+ if (typeof __DEV__ !== 'undefined') {
8
+ return !__DEV__;
9
+ }
10
+ // Check for Node.js environment
11
+ if (typeof process !== 'undefined' && process.env) {
12
+ return process.env.NODE_ENV === 'production';
13
+ }
14
+ // Default to development mode if we can't determine
15
+ return false;
16
+ };
17
+ const shouldLog = !isProduction();
18
+ export const logger = {
19
+ log: (...args) => {
20
+ if (shouldLog) {
21
+ console.log(...args);
22
+ }
23
+ },
24
+ error: (...args) => {
25
+ if (shouldLog) {
26
+ console.error(...args);
27
+ }
28
+ },
29
+ warn: (...args) => {
30
+ if (shouldLog) {
31
+ console.warn(...args);
32
+ }
33
+ },
34
+ info: (...args) => {
35
+ if (shouldLog) {
36
+ console.info(...args);
37
+ }
38
+ },
39
+ debug: (...args) => {
40
+ if (shouldLog) {
41
+ console.debug(...args);
42
+ }
43
+ },
44
+ };
45
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,YAAY,GAAG,GAAY,EAAE;IACjC,sCAAsC;IACtC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC;IACD,gCAAgC;IAChC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAC/C,CAAC;IACD,oDAAoD;IACpD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC","sourcesContent":["/**\n * Logger utility that only logs in development mode\n * In production, all logs are suppressed\n */\n\nconst isProduction = (): boolean => {\n // Check for React Native __DEV__ flag\n if (typeof __DEV__ !== 'undefined') {\n return !__DEV__;\n }\n // Check for Node.js environment\n if (typeof process !== 'undefined' && process.env) {\n return process.env.NODE_ENV === 'production';\n }\n // Default to development mode if we can't determine\n return false;\n};\n\nconst shouldLog = !isProduction();\n\nexport const logger = {\n log: (...args: any[]) => {\n if (shouldLog) {\n console.log(...args);\n }\n },\n error: (...args: any[]) => {\n if (shouldLog) {\n console.error(...args);\n }\n },\n warn: (...args: any[]) => {\n if (shouldLog) {\n console.warn(...args);\n }\n },\n info: (...args: any[]) => {\n if (shouldLog) {\n console.info(...args);\n }\n },\n debug: (...args: any[]) => {\n if (shouldLog) {\n console.debug(...args);\n }\n },\n};\n\n"]}
@@ -0,0 +1,3 @@
1
+ export declare function pathToBase64(uri: string): Promise<string>;
2
+ export default pathToBase64;
3
+ //# sourceMappingURL=pathToBase64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathToBase64.d.ts","sourceRoot":"","sources":["../../src/utils/pathToBase64.ts"],"names":[],"mappings":"AAAA,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0D/D;AAED,eAAe,YAAY,CAAC"}