@trustchex/react-native-sdk 1.512.1 → 1.513.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/android/src/main/java/com/trustchex/reactnativesdk/camera/TrustchexCameraView.kt +9 -2
  2. package/android/src/main/java/com/trustchex/reactnativesdk/opencv/OpenCVModule.kt +54 -0
  3. package/ios/Camera/TrustchexCameraView.swift +6 -2
  4. package/ios/OpenCV/OpenCVModule.mm +59 -0
  5. package/lib/module/Screens/Dynamic/AddressCaptureScreen.js +427 -112
  6. package/lib/module/Screens/Dynamic/IdentityDocumentEIDScanningScreen.js +9 -4
  7. package/lib/module/Screens/Static/ResultScreen.js +46 -0
  8. package/lib/module/Shared/Animations/address-scan.json +1 -0
  9. package/lib/module/Shared/Components/DebugNavigationPanel.js +10 -0
  10. package/lib/module/Shared/Components/EIDScanner.js +16 -4
  11. package/lib/module/Shared/Components/IdentityDocumentCamera.js +100 -19
  12. package/lib/module/Shared/Components/IdentityDocumentCamera.utils.js +47 -0
  13. package/lib/module/Shared/Libs/addressProofHeuristic.js +130 -0
  14. package/lib/module/Shared/Libs/demo.utils.js +4 -0
  15. package/lib/module/Shared/Libs/sendDiagnosticReport.js +47 -1
  16. package/lib/module/Shared/Libs/vizName.js +138 -16
  17. package/lib/module/Translation/Resources/en.js +16 -3
  18. package/lib/module/Translation/Resources/tr.js +16 -3
  19. package/lib/module/version.js +1 -1
  20. package/lib/typescript/src/Screens/Dynamic/AddressCaptureScreen.d.ts.map +1 -1
  21. package/lib/typescript/src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.d.ts.map +1 -1
  22. package/lib/typescript/src/Screens/Static/ResultScreen.d.ts.map +1 -1
  23. package/lib/typescript/src/Shared/Components/DebugNavigationPanel.d.ts.map +1 -1
  24. package/lib/typescript/src/Shared/Components/EIDScanner.d.ts +8 -3
  25. package/lib/typescript/src/Shared/Components/EIDScanner.d.ts.map +1 -1
  26. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.d.ts.map +1 -1
  27. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts +25 -0
  28. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts.map +1 -1
  29. package/lib/typescript/src/Shared/Libs/addressProofHeuristic.d.ts +34 -0
  30. package/lib/typescript/src/Shared/Libs/addressProofHeuristic.d.ts.map +1 -0
  31. package/lib/typescript/src/Shared/Libs/demo.utils.d.ts.map +1 -1
  32. package/lib/typescript/src/Shared/Libs/sendDiagnosticReport.d.ts.map +1 -1
  33. package/lib/typescript/src/Shared/Libs/vizName.d.ts +31 -6
  34. package/lib/typescript/src/Shared/Libs/vizName.d.ts.map +1 -1
  35. package/lib/typescript/src/Shared/Types/identificationInfo.d.ts +0 -5
  36. package/lib/typescript/src/Shared/Types/identificationInfo.d.ts.map +1 -1
  37. package/lib/typescript/src/Translation/Resources/en.d.ts +13 -0
  38. package/lib/typescript/src/Translation/Resources/en.d.ts.map +1 -1
  39. package/lib/typescript/src/Translation/Resources/tr.d.ts +13 -0
  40. package/lib/typescript/src/Translation/Resources/tr.d.ts.map +1 -1
  41. package/lib/typescript/src/version.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/src/Screens/Dynamic/AddressCaptureScreen.tsx +434 -75
  44. package/src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx +14 -4
  45. package/src/Screens/Static/ResultScreen.tsx +59 -0
  46. package/src/Shared/Animations/address-scan.json +1 -0
  47. package/src/Shared/Components/DebugNavigationPanel.tsx +13 -0
  48. package/src/Shared/Components/EIDScanner.tsx +38 -12
  49. package/src/Shared/Components/IdentityDocumentCamera.tsx +109 -17
  50. package/src/Shared/Components/IdentityDocumentCamera.utils.ts +53 -0
  51. package/src/Shared/Libs/addressProofHeuristic.ts +197 -0
  52. package/src/Shared/Libs/demo.utils.ts +5 -0
  53. package/src/Shared/Libs/sendDiagnosticReport.ts +65 -7
  54. package/src/Shared/Libs/vizName.ts +158 -20
  55. package/src/Shared/Types/identificationInfo.ts +0 -5
  56. package/src/Translation/Resources/en.ts +28 -3
  57. package/src/Translation/Resources/tr.ts +28 -3
  58. package/src/version.ts +1 -1
@@ -48,6 +48,10 @@ const demoSession = {
48
48
  data: {
49
49
  voiceGuidanceActive: true
50
50
  }
51
+ }, {
52
+ type: 'ADDRESS_CAPTURE',
53
+ required: false,
54
+ data: {}
51
55
  }, {
52
56
  type: 'LIVENESS_CHECK',
53
57
  required: false,
@@ -19,11 +19,47 @@
19
19
  * - `scanDataJson` — the scanned identity data (PII),
20
20
  * - `images` — the captured document/face images (base64, PII).
21
21
  */
22
+ import { NativeModules } from 'react-native';
22
23
  import { diagnostics } from "./diagnostics.js";
23
24
  import { gatherDeviceDetails } from "./native-device-info.utils.js";
24
25
  import { buildDiagnosticReport } from "./diagnosticReport.js";
25
26
  import { solvePowAsync, PowCancelledError } from "./diagnosticPow.js";
26
27
  import { logError } from "./debug.utils.js";
28
+ // Diagnostic images are for a support inbox, not archival — full capture
29
+ // resolution is wasteful and makes the upload (and the on-JS-thread
30
+ // JSON.stringify of the payload) slow. Cap the longest edge and recompress so
31
+ // the whole bundle is a few hundred KB instead of several MB.
32
+ const DIAGNOSTIC_IMAGE_MAX_DIM = 1024;
33
+ const DIAGNOSTIC_IMAGE_JPEG_QUALITY = 70;
34
+ /**
35
+ * Downscale + recompress the report images off the JS thread (native OpenCV
36
+ * module), in parallel. Best-effort per image: if the native method is missing
37
+ * or throws, that image falls back to its original base64 so the report still
38
+ * sends. Already-small images are returned near-unchanged (native never
39
+ * upscales).
40
+ */
41
+ async function shrinkDiagnosticImages(images) {
42
+ const opencv = NativeModules.OpenCVModule;
43
+ if (!opencv?.resizeAndCompress) return images;
44
+ return Promise.all(images.map(async img => {
45
+ if (!img.base64) return img;
46
+ try {
47
+ const shrunk = await opencv.resizeAndCompress(img.base64, DIAGNOSTIC_IMAGE_MAX_DIM, DIAGNOSTIC_IMAGE_JPEG_QUALITY);
48
+ // On any failure the native side resolves the ORIGINAL base64 unchanged
49
+ // (same string) — in that case keep the original mime, since a PNG that
50
+ // failed to shrink is still PNG. Only when it actually recompressed (a
51
+ // new string) is the output guaranteed JPEG, so relabel then.
52
+ if (!shrunk || shrunk === img.base64) return img;
53
+ return {
54
+ ...img,
55
+ base64: shrunk,
56
+ mime: 'jpg'
57
+ };
58
+ } catch {
59
+ return img;
60
+ }
61
+ }));
62
+ }
27
63
  const mimeToType = mime => mime === 'png' ? 'image/png' : 'image/jpeg';
28
64
 
29
65
  /**
@@ -63,6 +99,16 @@ export const sendDiagnosticReport = async params => {
63
99
  const nfc = snapshot.nfc;
64
100
  const failingSw = nfc.failureStep ? nfc.steps.find(s => s.step === nfc.failureStep && !s.ok)?.sw : undefined;
65
101
  const nfcErrorCode = nfc.attempted && !nfc.succeeded ? `NFC-${(nfc.errorCategory ?? 'reading_error').toUpperCase()}${failingSw ? `-${failingSw}` : ''}` : null;
102
+
103
+ // Shrink images natively before they go into the (JS-stringified) payload —
104
+ // this is the dominant cost of the send, not the proof-of-work.
105
+ const shrunkImages = await shrinkDiagnosticImages(images.filter(img => img.base64));
106
+ if (shouldCancel?.()) {
107
+ return {
108
+ uploaded: false,
109
+ cancelled: true
110
+ };
111
+ }
66
112
  const payload = {
67
113
  // metadata (stored in plaintext, no PII)
68
114
  platform: device.platform,
@@ -76,7 +122,7 @@ export const sendDiagnosticReport = async params => {
76
122
  // full report (PII, encrypted at rest by the backend)
77
123
  diagnosticsJson: report.diagnosticsJson,
78
124
  scanDataJson: report.scanDataJson,
79
- images: images.filter(img => img.base64).map(img => ({
125
+ images: shrunkImages.map(img => ({
80
126
  name: img.name,
81
127
  base64: img.base64,
82
128
  mimeType: mimeToType(img.mime)
@@ -54,21 +54,61 @@ export async function recognizeVizBlocks(base64Image) {
54
54
  }
55
55
  }
56
56
  /**
57
- * Fold a string to bare ASCII upper-case letters for comparison: strip
58
- * combining marks via NFD, map the handful of letters that have no combining
59
- * decomposition (ı, ł, ø, đ, ð, ß, æ, œ, þ), drop everything that is not A–Z.
60
- * This is the canonical form in which an MRZ name and its printed counterpart
61
- * become directly comparable.
57
+ * Fold diacritics to bare ASCII letters but PRESERVE digits, spaces and other
58
+ * separators (uppercased). This is the shared normalization core: strip
59
+ * combining marks via NFD, then map the handful of letters that have no
60
+ * combining decomposition. Used by both {@link foldAscii} (which then drops
61
+ * non-letters) and the address-proof heuristic (which keeps digits/separators
62
+ * so it can tokenize and detect postal codes).
62
63
  */
63
- export function foldAscii(value) {
64
+ export function foldDiacritics(value) {
64
65
  if (!value) return '';
65
66
  return value.normalize('NFD').replace(/[̀-ͯ]/g, '') // combining diacritical marks
66
- .replace(/ı/g, 'i').replace(/İ/g, 'I').replace(/ø/gi, 'O').replace(/ł/gi, 'L').replace(/đ/gi, 'D').replace(/ð/gi, 'D').replace(/þ/gi, 'TH').replace(/ß/g, 'SS').replace(/æ/gi, 'AE').replace(/œ/gi, 'OE').toUpperCase().replace(/[^A-Z]/g, '');
67
+ .replace(/ı/g, 'i').replace(/İ/g, 'I').replace(/ø/gi, 'O').replace(/ł/gi, 'L').replace(/đ/gi, 'D').replace(/ð/gi, 'D').replace(/þ/gi, 'TH').replace(/ß/g, 'SS').replace(/æ/gi, 'AE').replace(/œ/gi, 'OE').toUpperCase();
68
+ }
69
+ export function foldAscii(value) {
70
+ // Bare letters only — drop digits, spaces and punctuation after folding.
71
+ return foldDiacritics(value).replace(/[^A-Z]/g, '');
72
+ }
73
+
74
+ /**
75
+ * True when a line looks like a machine-readable-zone (MRZ) line rather than a
76
+ * printed field. MRZ lines are long OCR-B runs of `[A-Z0-9<]` padded with `<`
77
+ * filler (e.g. `P<TURSIMSEK<<CAGRI<<<<<…`). They MUST be excluded from the name
78
+ * search: the MRZ literally contains the folded target name, so if an MRZ line
79
+ * leaked into the candidate lines it would "match" and return the ASCII name
80
+ * with no diacritics restored — silently defeating the whole VIZ recovery. This
81
+ * is a content check (not a position guess), so it holds no matter where the OCR
82
+ * places the MRZ block or how many blocks it spans.
83
+ */
84
+ function isMrzLine(line) {
85
+ const compact = line.replace(/\s+/g, '');
86
+ // A run of ≥2 consecutive fillers is unique to the MRZ; printed name lines
87
+ // never contain `<<`. Also treat a long, dense OCR-B run as MRZ.
88
+ return /<{2,}/.test(compact) || compact.length >= 20 && /^[A-Z0-9<]+$/i.test(compact) && /</.test(compact);
89
+ }
90
+
91
+ /**
92
+ * Upper-case a printed token for display, honouring Turkish casing when the
93
+ * document is Turkish, and normalising to NFC.
94
+ *
95
+ * Two Turkish-specific glitches this fixes (both reported from the field):
96
+ * - "different i": the default (invariant) `toUpperCase()` maps a lower-case
97
+ * dotted `i` to a DOTLESS `I`, so an OCR'd "İsmail" becomes "İSMAIL" instead
98
+ * of the correct "İSMAİL". Turkish-locale uppercasing maps `i`→`İ` and the
99
+ * dotless `ı`→`I`, preserving the dot distinction Turkish depends on.
100
+ * - "dot leaned to the right": some sources/fonts carry the dotted capital as a
101
+ * DECOMPOSED `I`+combining-dot (U+0049 U+0307), which renders with an offset
102
+ * dot. NFC precomposes it to the single glyph `İ` (U+0130).
103
+ */
104
+ function upperForDisplay(word, locale) {
105
+ const upper = locale ? word.toLocaleUpperCase(locale) : word.toUpperCase();
106
+ return upper.normalize('NFC');
67
107
  }
68
108
 
69
109
  /** Split a printed-name line into upper-case word tokens (letters + marks). */
70
- function tokenize(line) {
71
- return line.split(/[\s,]+/).map(w => w.trim()).filter(w => w.length > 0 && /\p{L}/u.test(w)).map(w => w.toUpperCase());
110
+ function tokenize(line, locale) {
111
+ return line.split(/[\s,]+/).map(w => w.trim()).filter(w => w.length > 0 && /\p{L}/u.test(w)).map(w => upperForDisplay(w, locale));
72
112
  }
73
113
 
74
114
  /**
@@ -80,11 +120,11 @@ function tokenize(line) {
80
120
  * Because the comparison is on the FOLDED form, only an exact same-name match
81
121
  * succeeds — a different printed name will not fold-match and yields null.
82
122
  */
83
- function recoverPrintedName(lines, mrzName) {
123
+ function recoverPrintedName(lines, mrzName, locale) {
84
124
  const target = foldAscii(mrzName);
85
125
  if (!target) return null;
86
126
  for (const line of lines) {
87
- const tokens = tokenize(line);
127
+ const tokens = tokenize(line, locale);
88
128
  // Slide a window over the tokens; the printed name may sit among other
89
129
  // label text on the same block ("Surname / Nom ÖZTÜRK").
90
130
  for (let start = 0; start < tokens.length; start++) {
@@ -114,13 +154,23 @@ function recoverPrintedName(lines, mrzName) {
114
154
  * sit ABOVE the MRZ on the data page; passing this restricts the
115
155
  * search to blocks above it, avoiding false matches in the MRZ
116
156
  * itself. When undefined, all blocks are searched.
157
+ * @param issuingCountry ICAO 3-letter issuing state, used to pick locale-correct
158
+ * casing for the recovered name (Turkish `i`/`İ` handling). When
159
+ * omitted, invariant uppercasing is used.
117
160
  */
118
- export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop) {
161
+ export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop, issuingCountry) {
162
+ // Turkish needs locale-aware uppercasing so the dotted/dotless i distinction
163
+ // survives (i→İ, ı→I). Other Latin scripts are unaffected by invariant casing.
164
+ const locale = issuingCountry?.toUpperCase() === 'TUR' ? 'tr' : undefined;
119
165
  const above = typeof mrzTop === 'number' ? blocks.filter(b => b.top < mrzTop) : blocks;
120
- // Each block's text may hold several printed lines.
121
- const lines = above.flatMap(b => b.text.split(/\r?\n/));
122
- const vizFirst = mrzFirst ? recoverPrintedName(lines, mrzFirst) : null;
123
- const vizLast = mrzLast ? recoverPrintedName(lines, mrzLast) : null;
166
+ // Each block's text may hold several printed lines. Drop any MRZ line: the
167
+ // `mrzTop` position filter above is only a hint (the caller can't always know
168
+ // the true MRZ block, and the MRZ may span several blocks), so we also exclude
169
+ // MRZ lines by content otherwise the MRZ's own name text would fold-match
170
+ // the target and be returned as the "printed" name with diacritics stripped.
171
+ const lines = above.flatMap(b => b.text.split(/\r?\n/)).filter(l => !isMrzLine(l));
172
+ const vizFirst = mrzFirst ? recoverPrintedName(lines, mrzFirst, locale) : null;
173
+ const vizLast = mrzLast ? recoverPrintedName(lines, mrzLast, locale) : null;
124
174
 
125
175
  // Detect a letter-level discrepancy: a printed line clearly carries the name
126
176
  // field but its fold does not equal the MRZ name. We approximate this by
@@ -137,4 +187,76 @@ export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop) {
137
187
  vizLast,
138
188
  mismatch
139
189
  };
190
+ }
191
+
192
+ /**
193
+ * Pick the most frequent non-null value from a list of candidates.
194
+ *
195
+ * OCR is noisy: the same printed name can come back slightly different across
196
+ * passes (a diacritic dropped, an i-variant flipped, a stray combining mark).
197
+ * Rather than trust a single read, we run recovery over several images/frames
198
+ * and take the value that appeared MOST OFTEN as the truth. Ties are broken by
199
+ * first appearance (stable), and null/empty candidates never win — a pass that
200
+ * failed to recover the name doesn't dilute the ones that succeeded.
201
+ *
202
+ * Values are compared by NFC form so two spellings that only differ by
203
+ * composition (precomposed İ vs I+combining-dot) are counted as the same vote.
204
+ */
205
+ function voteMostFrequent(values, minAgree) {
206
+ const counts = new Map();
207
+ let total = 0;
208
+ for (const v of values) {
209
+ if (!v) continue;
210
+ total += 1;
211
+ const key = v.normalize('NFC');
212
+ const entry = counts.get(key);
213
+ if (entry) entry.count += 1;else counts.set(key, {
214
+ count: 1,
215
+ display: key
216
+ });
217
+ }
218
+ let winner = null;
219
+ for (const entry of counts.values()) {
220
+ if (!winner || entry.count > winner.count) winner = entry;
221
+ }
222
+ if (!winner) return null;
223
+ // Require the winner to be corroborated by multiple samples — the name is
224
+ // only "decided" when frames AGREE. The exception is when there is only a
225
+ // single sample available at all (total < minAgree): with one OCR pass we
226
+ // can't reach a quorum, so we accept that lone reading rather than discard a
227
+ // legitimately-recovered name. (It is still non-destructive — recoverVizName
228
+ // only ever returns a value that folds to the same ASCII as the MRZ.)
229
+ if (winner.count < minAgree && total >= minAgree) return null;
230
+ return winner.display;
231
+ }
232
+
233
+ /**
234
+ * Fuse several VIZ recovery results into one by majority vote per field.
235
+ *
236
+ * Run {@link recoverVizName} over multiple frames/images (e.g. several camera
237
+ * frames of the data page, or the passport page plus ID front/back), then pass
238
+ * the candidates here. Each field (first/last) is decided independently by the
239
+ * value that MULTIPLE samples agree on — a single noisy OCR pass can neither
240
+ * corrupt the name nor decide it alone. When only one sample exists we fall
241
+ * back to it (can't form a quorum from one frame).
242
+ *
243
+ * Non-destructive by construction: this only ever surfaces a diacritic form
244
+ * that {@link recoverVizName} already confirmed folds to the same ASCII as the
245
+ * MRZ name, so the authoritative MRZ letters are never changed — only their
246
+ * diacritics restored. `mismatch` is reported only when NO sample recovered a
247
+ * field yet at least one saw printed name text that disagreed with the MRZ.
248
+ *
249
+ * @param candidates One {@link VizNameCandidate} per frame/image.
250
+ * @param minAgree Minimum agreeing samples to "decide" a field (default 2).
251
+ */
252
+ export function voteVizName(candidates, minAgree = 2) {
253
+ const vizFirst = voteMostFrequent(candidates.map(c => c.vizFirst), minAgree);
254
+ const vizLast = voteMostFrequent(candidates.map(c => c.vizLast), minAgree);
255
+ const anyMismatch = candidates.some(c => c.mismatch);
256
+ const mismatch = anyMismatch && (vizFirst === null || vizLast === null);
257
+ return {
258
+ vizFirst,
259
+ vizLast,
260
+ mismatch
261
+ };
140
262
  }
@@ -101,11 +101,24 @@ export default {
101
101
  'addressCaptureScreen.addressLabel': 'Address',
102
102
  'addressCaptureScreen.addressPlaceholder': 'Street, number, city, country',
103
103
  'addressCaptureScreen.proofLabel': 'Proof of address',
104
- 'addressCaptureScreen.proofHint': 'A residence certificate, or a utility bill issued within the last 3 months, or a document from a public authority.',
104
+ 'addressCaptureScreen.proofHint': 'A residence certificate, a utility bill issued within the last 3 months, or a document from a public authority. Capture the whole document.',
105
105
  'addressCaptureScreen.captureProof': 'Capture proof document',
106
- 'addressCaptureScreen.retakeProof': 'Retake proof document',
107
- 'addressCaptureScreen.proofCameraHint': 'Position the document within the frame and capture.',
106
+ 'addressCaptureScreen.retakeProof': 'Retake',
107
+ 'addressCaptureScreen.proofCameraHint': 'Fit the whole document inside the frame, then capture.',
108
108
  'addressCaptureScreen.capture': 'Capture',
109
+ 'addressCaptureScreen.previewHint': 'Make sure the whole document is readable.',
110
+ 'addressCaptureScreen.warnNoName': "We couldn't find your name on this document. Make sure your name is visible, or continue if it's correct.",
111
+ 'addressCaptureScreen.warnNoAddress': "We couldn't detect an address on this document. Make sure the address is visible, or continue if it's correct.",
112
+ 'addressCaptureScreen.warnNoText': "We couldn't read this document. Make sure the whole page is in frame and readable, or continue if it's correct.",
113
+ 'addressCaptureScreen.guideHeader': 'Proof of address',
114
+ 'addressCaptureScreen.guideText': 'Please ensure the following for best results:',
115
+ 'addressCaptureScreen.guidePointWholeDocument': 'Fit the entire document inside the frame.',
116
+ 'addressCaptureScreen.guidePointLighting': 'Use good lighting and avoid glare or shadows.',
117
+ 'addressCaptureScreen.guidePointSteady': 'Hold the device steady so the photo is sharp.',
118
+ 'addressCaptureScreen.guidePointDocuments': 'A residence certificate, a utility bill no older than 3 months, or a public-authority document.',
119
+ 'addressCaptureScreen.retakeTooDark': 'Too dark — move to better lighting and retake.',
120
+ 'addressCaptureScreen.retakeTooBright': 'Too bright or glare — adjust the angle and retake.',
121
+ 'addressCaptureScreen.retakeBlurry': 'Photo is blurry — hold steady and retake.',
109
122
  'eidScannerScreen.faceImageNotFound': 'Photo data not found on document.',
110
123
  'eidScannerScreen.documentCode': 'Document Type',
111
124
  'eidScannerScreen.nationality': 'Nationality',
@@ -101,11 +101,24 @@ export default {
101
101
  'addressCaptureScreen.addressLabel': 'Adres',
102
102
  'addressCaptureScreen.addressPlaceholder': 'Cadde, numara, şehir, ülke',
103
103
  'addressCaptureScreen.proofLabel': 'Adres kanıtı',
104
- 'addressCaptureScreen.proofHint': 'Yerleşim yeri belgesi veya son 3 ay içinde düzenlenmiş bir fatura ya da bir kamu kurumu tarafından verilen belge.',
104
+ 'addressCaptureScreen.proofHint': 'Yerleşim yeri belgesi, son 3 ay içinde düzenlenmiş bir fatura ya da bir kamu kurumu tarafından verilen belge. Belgenin tamamını çekin.',
105
105
  'addressCaptureScreen.captureProof': 'Kanıt belgesini çek',
106
- 'addressCaptureScreen.retakeProof': 'Kanıt belgesini yeniden çek',
107
- 'addressCaptureScreen.proofCameraHint': 'Belgeyi çerçeveye yerleştirin ve fotoğraf çekin.',
106
+ 'addressCaptureScreen.retakeProof': 'Yeniden çek',
107
+ 'addressCaptureScreen.proofCameraHint': 'Belgenin tamamını çerçeveye sığdırın ve fotoğraf çekin.',
108
108
  'addressCaptureScreen.capture': 'Çek',
109
+ 'addressCaptureScreen.previewHint': 'Belgenin tamamının okunaklı olduğundan emin olun.',
110
+ 'addressCaptureScreen.warnNoName': 'Bu belgede adınızı bulamadık. Adınızın göründüğünden emin olun ya da doğruysa devam edin.',
111
+ 'addressCaptureScreen.warnNoAddress': 'Bu belgede bir adres tespit edemedik. Adresin göründüğünden emin olun ya da doğruysa devam edin.',
112
+ 'addressCaptureScreen.warnNoText': 'Bu belgeyi okuyamadık. Sayfanın tamamının kadraja girdiğinden ve okunaklı olduğundan emin olun ya da doğruysa devam edin.',
113
+ 'addressCaptureScreen.guideHeader': 'Adres kanıtı',
114
+ 'addressCaptureScreen.guideText': 'En iyi sonuç için lütfen şunları sağlayın:',
115
+ 'addressCaptureScreen.guidePointWholeDocument': 'Belgenin tamamını çerçeveye sığdırın.',
116
+ 'addressCaptureScreen.guidePointLighting': 'İyi aydınlatma kullanın; yansıma ve gölgeden kaçının.',
117
+ 'addressCaptureScreen.guidePointSteady': 'Fotoğrafın net olması için cihazı sabit tutun.',
118
+ 'addressCaptureScreen.guidePointDocuments': 'Yerleşim yeri belgesi, son 3 aydan eski olmayan bir fatura ya da bir kamu kurumu belgesi.',
119
+ 'addressCaptureScreen.retakeTooDark': 'Çok karanlık — daha aydınlık bir yere geçip tekrar çekin.',
120
+ 'addressCaptureScreen.retakeTooBright': 'Çok parlak veya yansıma var — açıyı değiştirip tekrar çekin.',
121
+ 'addressCaptureScreen.retakeBlurry': 'Fotoğraf bulanık — sabit tutup tekrar çekin.',
109
122
  'eidScannerScreen.faceImageNotFound': 'Belgede fotoğraf verisi bulunamadı.',
110
123
  'eidScannerScreen.documentCode': 'Belge Türü',
111
124
  'eidScannerScreen.nationality': 'Uyruk',
@@ -2,4 +2,4 @@
2
2
 
3
3
  // This file is auto-generated. Do not edit manually.
4
4
  // Version is synced from package.json during build.
5
- export const SDK_VERSION = '1.512.1';
5
+ export const SDK_VERSION = '1.513.1';
@@ -1 +1 @@
1
- {"version":3,"file":"AddressCaptureScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/AddressCaptureScreen.tsx"],"names":[],"mappings":"AA6BA;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,+CA8HzB,CAAC;AAkCF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"AddressCaptureScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/AddressCaptureScreen.tsx"],"names":[],"mappings":"AAiFA;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,+CA0TzB,CAAC;AAyJF,eAAe,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityDocumentEIDScanningScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx"],"names":[],"mappings":"AAsBA,QAAA,MAAM,iCAAiC,+CAoQtC,CAAC;AAoBF,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"IdentityDocumentEIDScanningScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx"],"names":[],"mappings":"AAsBA,QAAA,MAAM,iCAAiC,+CA8QtC,CAAC;AAoBF,eAAe,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Static/ResultScreen.tsx"],"names":[],"mappings":"AA6EA,QAAA,MAAM,YAAY,+CAmtCjB,CAAC;AA0KF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Static/ResultScreen.tsx"],"names":[],"mappings":"AA6EA,QAAA,MAAM,YAAY,+CAovCjB,CAAC;AAoMF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DebugNavigationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/DebugNavigationPanel.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,oBAAoB,+CAiezB,CAAC;AA+MF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"DebugNavigationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/DebugNavigationPanel.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,oBAAoB,+CA8ezB,CAAC;AA+MF,eAAe,oBAAoB,CAAC"}
@@ -11,14 +11,19 @@ interface eIDScannerProps {
11
11
  */
12
12
  vizMrzFields?: MRZFields;
13
13
  /**
14
- * Full data-page image from the EID step's camera scan. A one-shot OCR pass
15
- * recovers the diacritic printed name when the chip's DG11 is absent or
14
+ * Full data-page image(s) from the EID step's camera scan. Each is OCR'd to
15
+ * recover the diacritic printed name when the chip's DG11 is absent or
16
16
  * one-sided — DG11 (the authenticated chip's own name) still takes precedence.
17
+ * When more than one image is available (e.g. passport page + ID front/back),
18
+ * the recovered names are fused by majority vote so a single noisy OCR pass
19
+ * can't corrupt the result.
17
20
  */
18
21
  vizImage?: string;
22
+ /** Additional VIZ images to OCR and vote over, alongside `vizImage`. */
23
+ vizImages?: (string | undefined)[];
19
24
  onScanSuccess?: (mrzInfo: MRZFields, faceImage: string, faceImageMimeType: string) => void;
20
25
  isNFCSupported?: (supported: boolean) => void;
21
26
  }
22
- declare const EIDScanner: ({ documentNumber, dateOfBirth, dateOfExpiry, documentType, vizMrzFields, vizImage, onScanSuccess, isNFCSupported, }: eIDScannerProps) => import("react/jsx-runtime").JSX.Element;
27
+ declare const EIDScanner: ({ documentNumber, dateOfBirth, dateOfExpiry, documentType, vizMrzFields, vizImage, vizImages, onScanSuccess, isNFCSupported, }: eIDScannerProps) => import("react/jsx-runtime").JSX.Element;
23
28
  export default EIDScanner;
24
29
  //# sourceMappingURL=EIDScanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EIDScanner.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/EIDScanner.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA8BpD,UAAU,eAAe;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,KACtB,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,UAAU,GAAI,qHASjB,eAAe,4CA67BjB,CAAC;AAsOF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"EIDScanner.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/EIDScanner.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAkCpD,UAAU,eAAe;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,KACtB,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,UAAU,GAAI,gIAUjB,eAAe,4CA68BjB,CAAC;AAsOF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityDocumentCamera.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.tsx"],"names":[],"mappings":"AA4EA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAK5B,MAAM,gCAAgC,CAAC;AAGxC,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAMnE,QAAA,MAAM,sBAAsB,GAAI,uDAI7B,2BAA2B,4CA+wF7B,CAAC;AA0LF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"IdentityDocumentCamera.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.tsx"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAK5B,MAAM,gCAAgC,CAAC;AAGxC,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAMnE,QAAA,MAAM,sBAAsB,GAAI,uDAI7B,2BAA2B,4CA02F7B,CAAC;AA0LF,eAAe,sBAAsB,CAAC"}
@@ -1,5 +1,30 @@
1
1
  import type { ScanStep, ScanStatus, DocumentType, Face } from './IdentityDocumentCamera.types';
2
2
  import type { MRZFields } from '../Types/mrzFields';
3
+ /**
4
+ * Debounced boolean with hysteresis, for stabilizing per-frame quality flags.
5
+ *
6
+ * The camera measures brightness/blur/glare on EVERY frame, and a single noisy
7
+ * frame (a momentary blur while the hand moves, one dark frame) would otherwise
8
+ * flip the on-screen guidance on and off many times a second — a distracting
9
+ * flicker. This smooths a raw per-frame boolean so it only turns ON after
10
+ * `raiseFrames` consecutive true readings and only turns OFF after `clearFrames`
11
+ * consecutive false readings; isolated opposite frames are absorbed. Asymmetric
12
+ * by design: warnings should appear promptly once a problem is real (small
13
+ * `raiseFrames`) but linger briefly so they don't strobe (larger `clearFrames`).
14
+ */
15
+ export declare class StableFlag {
16
+ private readonly raiseFrames;
17
+ private readonly clearFrames;
18
+ private value;
19
+ private streak;
20
+ private lastRaw;
21
+ constructor(raiseFrames: number, clearFrames: number, initial?: boolean);
22
+ /** Feed one raw measurement; returns the current stabilized value. */
23
+ push(raw: boolean): boolean;
24
+ /** Force the stabilized value (e.g. on step change) without waiting. */
25
+ reset(value: boolean): void;
26
+ get current(): boolean;
27
+ }
3
28
  /**
4
29
  * Checks if a document code represents an ID card (TD1/TD2).
5
30
  * Per ICAO 9303, valid ID card codes start with 'I', 'A', or 'C'.
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityDocumentCamera.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IdentityDocumentCamera.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * On-device, best-effort check that a captured address-proof photo actually
3
+ * looks like a document containing the holder's NAME and ADDRESS information.
4
+ *
5
+ * MASAK Tebliğ No. 32 Art. 4/C(1)(d) requires an OPERATOR to manually review the
6
+ * address proof, so this is only a soft quality gate: it nudges the user to
7
+ * retake an obviously-wrong photo (a selfie, a blank wall, the wrong document)
8
+ * before it wastes an operator's time. A negative result NEVER blocks the user.
9
+ *
10
+ * Input is the OCR text recognised on the captured proof photo (full image,
11
+ * via the native still-image recognizer), plus the holder's name and any chip
12
+ * (DG11) address tokens — no extra ML models, no network, works offline.
13
+ */
14
+ export interface AddressProofSignals {
15
+ /** True if the holder's name appears (fuzzily) in the recognised text. */
16
+ hasName: boolean;
17
+ /** True if address-like signals (postal code, street/place keywords, or chip
18
+ * address tokens) appear in the recognised text. */
19
+ hasAddress: boolean;
20
+ /** True when both are present — the photo plausibly is an address document. */
21
+ ok: boolean;
22
+ }
23
+ export interface AddressProofContext {
24
+ /** Holder name parts (first/last, any Unicode form). Used to look for the name. */
25
+ nameParts: Array<string | null | undefined>;
26
+ /** The chip's DG11 address, if any — its tokens are strong address evidence. */
27
+ chipAddress?: string | null;
28
+ }
29
+ /**
30
+ * Assess whether the OCR text from a captured proof plausibly contains the
31
+ * holder's name and an address. Best-effort and tolerant of OCR noise.
32
+ */
33
+ export declare function assessAddressProof(recognizedText: string | undefined | null, ctx: AddressProofContext): AddressProofSignals;
34
+ //# sourceMappingURL=addressProofHeuristic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addressProofHeuristic.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/addressProofHeuristic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB;yDACqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAyHD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACzC,GAAG,EAAE,mBAAmB,GACvB,mBAAmB,CAqCrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"demo.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/demo.utils.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,aAAa,GACb,sBAAsB,CAAC;AA4D3B,QAAA,MAAM,aAAa,GAAI,aAAa,MAAM,YACA,CAAC;AAE3C,QAAA,MAAM,oBAAoB,GAAI,SAAS,EAAE,KAAK,EAC5C,UAAU,iBAAiB,EAC3B,OAAO,KAAK,cAuBb,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"demo.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/demo.utils.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,aAAa,GACb,sBAAsB,CAAC;AAiE3B,QAAA,MAAM,aAAa,GAAI,aAAa,MAAM,YACA,CAAC;AAE3C,QAAA,MAAM,oBAAoB,GAAI,SAAS,EAAE,KAAK,EAC5C,UAAU,iBAAiB,EAC3B,OAAO,KAAK,cAuBb,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendDiagnosticReport.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/sendDiagnosticReport.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,UAAU,CA2GpB,CAAC"}
1
+ {"version":3,"file":"sendDiagnosticReport.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/sendDiagnosticReport.ts"],"names":[],"mappings":"AAsBA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAoDD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,UAAU,CAkHpB,CAAC"}
@@ -51,12 +51,14 @@ export interface VizNameCandidate {
51
51
  mismatch: boolean;
52
52
  }
53
53
  /**
54
- * Fold a string to bare ASCII upper-case letters for comparison: strip
55
- * combining marks via NFD, map the handful of letters that have no combining
56
- * decomposition (ı, ł, ø, đ, ð, ß, æ, œ, þ), drop everything that is not A–Z.
57
- * This is the canonical form in which an MRZ name and its printed counterpart
58
- * become directly comparable.
54
+ * Fold diacritics to bare ASCII letters but PRESERVE digits, spaces and other
55
+ * separators (uppercased). This is the shared normalization core: strip
56
+ * combining marks via NFD, then map the handful of letters that have no
57
+ * combining decomposition. Used by both {@link foldAscii} (which then drops
58
+ * non-letters) and the address-proof heuristic (which keeps digits/separators
59
+ * so it can tokenize and detect postal codes).
59
60
  */
61
+ export declare function foldDiacritics(value: string | null | undefined): string;
60
62
  export declare function foldAscii(value: string | null | undefined): string;
61
63
  /**
62
64
  * Recover the diacritic printed name from VIZ text blocks and reconcile it with
@@ -69,6 +71,29 @@ export declare function foldAscii(value: string | null | undefined): string;
69
71
  * sit ABOVE the MRZ on the data page; passing this restricts the
70
72
  * search to blocks above it, avoiding false matches in the MRZ
71
73
  * itself. When undefined, all blocks are searched.
74
+ * @param issuingCountry ICAO 3-letter issuing state, used to pick locale-correct
75
+ * casing for the recovered name (Turkish `i`/`İ` handling). When
76
+ * omitted, invariant uppercasing is used.
72
77
  */
73
- export declare function recoverVizName(blocks: VizTextBlock[], mrzFirst: string, mrzLast: string, mrzTop?: number): VizNameCandidate;
78
+ export declare function recoverVizName(blocks: VizTextBlock[], mrzFirst: string, mrzLast: string, mrzTop?: number, issuingCountry?: string | null): VizNameCandidate;
79
+ /**
80
+ * Fuse several VIZ recovery results into one by majority vote per field.
81
+ *
82
+ * Run {@link recoverVizName} over multiple frames/images (e.g. several camera
83
+ * frames of the data page, or the passport page plus ID front/back), then pass
84
+ * the candidates here. Each field (first/last) is decided independently by the
85
+ * value that MULTIPLE samples agree on — a single noisy OCR pass can neither
86
+ * corrupt the name nor decide it alone. When only one sample exists we fall
87
+ * back to it (can't form a quorum from one frame).
88
+ *
89
+ * Non-destructive by construction: this only ever surfaces a diacritic form
90
+ * that {@link recoverVizName} already confirmed folds to the same ASCII as the
91
+ * MRZ name, so the authoritative MRZ letters are never changed — only their
92
+ * diacritics restored. `mismatch` is reported only when NO sample recovered a
93
+ * field yet at least one saw printed name text that disagreed with the MRZ.
94
+ *
95
+ * @param candidates One {@link VizNameCandidate} per frame/image.
96
+ * @param minAgree Minimum agreeing samples to "decide" a field (default 2).
97
+ */
98
+ export declare function voteVizName(candidates: VizNameCandidate[], minAgree?: number): VizNameCandidate;
74
99
  //# sourceMappingURL=vizName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vizName.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/vizName.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAAC,YAAY,EAAE,CAAC,CAczB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAiBlE;AA4CD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,CAuBlB"}
1
+ {"version":3,"file":"vizName.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/vizName.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAAC,YAAY,EAAE,CAAC,CAczB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAgBvE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAsFD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,gBAAgB,CAgClB;AA4CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,SAAI,GACX,gBAAgB,CAYlB"}
@@ -126,11 +126,6 @@ export interface WorkflowStep {
126
126
  * verdict and sends it to the backend, which decides. Defaults to off.
127
127
  */
128
128
  enforceChipVizMatch?: boolean;
129
- /**
130
- * Whether a proof document is required in the ADDRESS_CAPTURE step
131
- * (MASAK 4/C(1)(d)). Defaults to true; set false to allow address-only.
132
- */
133
- addressProofRequired?: boolean;
134
129
  /**
135
130
  * Run Passive Authentication on the eID scan (ICAO 9303-11 §5.1 / MASAK
136
131
  * 4/C(1)(b),(c)): read EF.SOD, verify on-device DG-hash integrity, and send
@@ -1 +1 @@
1
- {"version":3,"file":"identificationInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Types/identificationInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identificationInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Types/identificationInfo.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,19 @@ declare const _default: {
104
104
  'addressCaptureScreen.retakeProof': string;
105
105
  'addressCaptureScreen.proofCameraHint': string;
106
106
  'addressCaptureScreen.capture': string;
107
+ 'addressCaptureScreen.previewHint': string;
108
+ 'addressCaptureScreen.warnNoName': string;
109
+ 'addressCaptureScreen.warnNoAddress': string;
110
+ 'addressCaptureScreen.warnNoText': string;
111
+ 'addressCaptureScreen.guideHeader': string;
112
+ 'addressCaptureScreen.guideText': string;
113
+ 'addressCaptureScreen.guidePointWholeDocument': string;
114
+ 'addressCaptureScreen.guidePointLighting': string;
115
+ 'addressCaptureScreen.guidePointSteady': string;
116
+ 'addressCaptureScreen.guidePointDocuments': string;
117
+ 'addressCaptureScreen.retakeTooDark': string;
118
+ 'addressCaptureScreen.retakeTooBright': string;
119
+ 'addressCaptureScreen.retakeBlurry': string;
107
120
  'eidScannerScreen.faceImageNotFound': string;
108
121
  'eidScannerScreen.documentCode': string;
109
122
  'eidScannerScreen.nationality': string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/Translation/Resources/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA6TE"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/Translation/Resources/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAsVE"}