@p2pdotme/sdk 1.0.1 โ†’ 1.0.3

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 (50) hide show
  1. package/README.md +1 -0
  2. package/dist/country.cjs +611 -0
  3. package/dist/country.cjs.map +1 -0
  4. package/dist/country.d.cts +106 -0
  5. package/dist/country.d.ts +106 -0
  6. package/dist/country.mjs +571 -0
  7. package/dist/country.mjs.map +1 -0
  8. package/dist/fraud-engine.cjs +19 -14
  9. package/dist/fraud-engine.cjs.map +1 -1
  10. package/dist/fraud-engine.mjs +19 -14
  11. package/dist/fraud-engine.mjs.map +1 -1
  12. package/dist/index.cjs +24 -17
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +32 -26
  15. package/dist/index.d.ts +32 -26
  16. package/dist/index.mjs +23 -17
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/order-routing.cjs +19 -14
  19. package/dist/order-routing.cjs.map +1 -1
  20. package/dist/order-routing.mjs +19 -14
  21. package/dist/order-routing.mjs.map +1 -1
  22. package/dist/payload.cjs +18 -15
  23. package/dist/payload.cjs.map +1 -1
  24. package/dist/payload.d.cts +5 -22
  25. package/dist/payload.d.ts +5 -22
  26. package/dist/payload.mjs +18 -15
  27. package/dist/payload.mjs.map +1 -1
  28. package/dist/profile.cjs +19 -14
  29. package/dist/profile.cjs.map +1 -1
  30. package/dist/profile.d.cts +3 -30
  31. package/dist/profile.d.ts +3 -30
  32. package/dist/profile.mjs +19 -14
  33. package/dist/profile.mjs.map +1 -1
  34. package/dist/qr-parsers.cjs +260 -5
  35. package/dist/qr-parsers.cjs.map +1 -1
  36. package/dist/qr-parsers.d.cts +10 -1
  37. package/dist/qr-parsers.d.ts +10 -1
  38. package/dist/qr-parsers.mjs +260 -5
  39. package/dist/qr-parsers.mjs.map +1 -1
  40. package/dist/react.cjs +26 -21
  41. package/dist/react.cjs.map +1 -1
  42. package/dist/react.d.cts +8 -52
  43. package/dist/react.d.ts +8 -52
  44. package/dist/react.mjs +26 -21
  45. package/dist/react.mjs.map +1 -1
  46. package/dist/zkkyc.cjs +19 -14
  47. package/dist/zkkyc.cjs.map +1 -1
  48. package/dist/zkkyc.mjs +19 -14
  49. package/dist/zkkyc.mjs.map +1 -1
  50. package/package.json +7 -1
@@ -0,0 +1,571 @@
1
+ // src/constants/currencies.constant.ts
2
+ var CURRENCY = {
3
+ IDR: "IDR",
4
+ INR: "INR",
5
+ BRL: "BRL",
6
+ ARS: "ARS",
7
+ MEX: "MEX",
8
+ VEN: "VEN",
9
+ EUR: "EUR",
10
+ NGN: "NGN",
11
+ USD: "USD",
12
+ COP: "COP"
13
+ };
14
+
15
+ // src/country/currencies/ars.ts
16
+ var ARS_PLACEHOLDER = "juan.perez";
17
+ var ARS_VALIDATION_ERROR = "Please enter a valid CBU/CVU (22 digits) or Alias (6-20 characters)";
18
+ function validateCBU(cbu) {
19
+ if (cbu.length !== 22) return false;
20
+ if (/^(\d)\1{21}$/.test(cbu)) return false;
21
+ const bankCode = cbu.substring(0, 7);
22
+ const bankCheckDigit = parseInt(cbu[7], 10);
23
+ let sum = 0;
24
+ const weights = [7, 1, 3, 9, 7, 1, 3];
25
+ for (let i = 0; i < 7; i++) {
26
+ sum += parseInt(bankCode[i], 10) * weights[i];
27
+ }
28
+ const calculatedBankCheck = (10 - sum % 10) % 10;
29
+ if (bankCheckDigit !== calculatedBankCheck) return false;
30
+ const accountNumber = cbu.substring(8, 21);
31
+ const accountCheckDigit = parseInt(cbu[21], 10);
32
+ sum = 0;
33
+ const accountWeights = [3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1, 3];
34
+ for (let i = 0; i < 13; i++) {
35
+ sum += parseInt(accountNumber[i], 10) * accountWeights[i];
36
+ }
37
+ const calculatedAccountCheck = (10 - sum % 10) % 10;
38
+ if (accountCheckDigit !== calculatedAccountCheck) return false;
39
+ return true;
40
+ }
41
+ function validateArgentinePaymentId(paymentId) {
42
+ if (!paymentId || paymentId.trim().length === 0) return false;
43
+ const trimmedPaymentId = paymentId.trim();
44
+ if (/^\d{22}$/.test(trimmedPaymentId)) return validateCBU(trimmedPaymentId);
45
+ if (/^[a-zA-Z0-9.\-_]{6,20}$/.test(trimmedPaymentId)) return true;
46
+ return false;
47
+ }
48
+ var ARS_PAYMENT_FIELDS = [
49
+ {
50
+ key: "alias",
51
+ label: "ALIAS_ID",
52
+ placeholder: ARS_PLACEHOLDER,
53
+ displayLabel: "Alias",
54
+ validate: validateArgentinePaymentId,
55
+ validationErrorMessage: ARS_VALIDATION_ERROR
56
+ }
57
+ ];
58
+ var ARS_COUNTRY_OPTION = {
59
+ country: "Argentina",
60
+ currency: CURRENCY.ARS,
61
+ symbolNative: "$",
62
+ locale: "es-AR",
63
+ paymentMethod: "ALIAS",
64
+ paymentAddressName: "ALIAS_ID",
65
+ timezone: "America/Argentina/Buenos_Aires",
66
+ timezone_name: "ART",
67
+ flag: "\u{1F1E6}\u{1F1F7}",
68
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e6-1f1f7.png",
69
+ phoneCode: "+54",
70
+ telegramSupportChannel: "https://t.me/p2pmeargentina",
71
+ twitterUsername: "p2pmeargentina",
72
+ smsCountryCodes: ["AR"],
73
+ precision: 2,
74
+ isAlpha: false,
75
+ disabled: false,
76
+ disabledPaymentTypes: []
77
+ };
78
+
79
+ // src/country/currencies/brl.ts
80
+ var BRL_PLACEHOLDER = "Chave pix ou pix copia e cola";
81
+ var BRL_VALIDATION_ERROR = "Please enter a valid PIX ID";
82
+ function validateCPF(cpf) {
83
+ if (cpf.length !== 11) return false;
84
+ if (/^(\d)\1{10}$/.test(cpf)) return false;
85
+ let sum = 0;
86
+ for (let i = 0; i < 9; i++) {
87
+ sum += parseInt(cpf[i], 10) * (10 - i);
88
+ }
89
+ let remainder = sum % 11;
90
+ const firstDigit = remainder < 2 ? 0 : 11 - remainder;
91
+ if (parseInt(cpf[9], 10) !== firstDigit) return false;
92
+ sum = 0;
93
+ for (let i = 0; i < 10; i++) {
94
+ sum += parseInt(cpf[i], 10) * (11 - i);
95
+ }
96
+ remainder = sum % 11;
97
+ const secondDigit = remainder < 2 ? 0 : 11 - remainder;
98
+ return parseInt(cpf[10], 10) === secondDigit;
99
+ }
100
+ function validateCNPJ(cnpj) {
101
+ if (cnpj.length !== 14) return false;
102
+ if (/^(\d)\1{13}$/.test(cnpj)) return false;
103
+ let sum = 0;
104
+ const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
105
+ for (let i = 0; i < 12; i++) {
106
+ sum += parseInt(cnpj[i], 10) * weights1[i];
107
+ }
108
+ let remainder = sum % 11;
109
+ const firstDigit = remainder < 2 ? 0 : 11 - remainder;
110
+ if (parseInt(cnpj[12], 10) !== firstDigit) return false;
111
+ sum = 0;
112
+ const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
113
+ for (let i = 0; i < 13; i++) {
114
+ sum += parseInt(cnpj[i], 10) * weights2[i];
115
+ }
116
+ remainder = sum % 11;
117
+ const secondDigit = remainder < 2 ? 0 : 11 - remainder;
118
+ return parseInt(cnpj[13], 10) === secondDigit;
119
+ }
120
+ function validatePIXId(pixId) {
121
+ if (!pixId || pixId.trim().length === 0) return false;
122
+ const trimmedPixId = pixId.trim();
123
+ if (/^\d{11}$/.test(trimmedPixId)) return validateCPF(trimmedPixId);
124
+ if (/^\d{14}$/.test(trimmedPixId)) return validateCNPJ(trimmedPixId);
125
+ if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmedPixId)) return true;
126
+ if (/^\d{10,11}$/.test(trimmedPixId)) return true;
127
+ if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmedPixId))
128
+ return true;
129
+ return false;
130
+ }
131
+ var BRL_PAYMENT_FIELDS = [
132
+ {
133
+ key: "pix",
134
+ label: "PIX_ID",
135
+ placeholder: BRL_PLACEHOLDER,
136
+ displayLabel: "PIX ID",
137
+ validate: validatePIXId,
138
+ validationErrorMessage: BRL_VALIDATION_ERROR
139
+ }
140
+ ];
141
+ var BRL_COUNTRY_OPTION = {
142
+ country: "Brazil",
143
+ currency: CURRENCY.BRL,
144
+ symbolNative: "R$",
145
+ locale: "pt-BR",
146
+ paymentMethod: "PIX",
147
+ paymentAddressName: "PIX_ID",
148
+ timezone: "America/Sao_Paulo",
149
+ timezone_name: "BRT",
150
+ flag: "\u{1F1E7}\u{1F1F7}",
151
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f7.png",
152
+ phoneCode: "+55",
153
+ telegramSupportChannel: "https://t.me/p2pmebrasil",
154
+ twitterUsername: "p2pmebrasil",
155
+ smsCountryCodes: ["BR"],
156
+ precision: 2,
157
+ isAlpha: false,
158
+ disabled: false,
159
+ disabledPaymentTypes: []
160
+ };
161
+
162
+ // src/country/currencies/cop.ts
163
+ var COP_PLACEHOLDER = "juan.perez@nequi.com.co";
164
+ var COP_VALIDATION_ERROR = "Please enter a valid Nequi or Daviplata ID (e.g., 3001234567 or email)";
165
+ function validateColombianPaymentId(paymentId) {
166
+ if (!paymentId || paymentId.trim().length === 0) return false;
167
+ const trimmed = paymentId.trim();
168
+ if (/^3\d{9}$/.test(trimmed)) return true;
169
+ if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed)) return true;
170
+ return false;
171
+ }
172
+ var COP_PAYMENT_FIELDS = [
173
+ {
174
+ key: "alias",
175
+ label: "ALIAS_TRANSFERENCIA",
176
+ placeholder: COP_PLACEHOLDER,
177
+ displayLabel: "Nequi / Daviplata",
178
+ validate: validateColombianPaymentId,
179
+ validationErrorMessage: COP_VALIDATION_ERROR
180
+ }
181
+ ];
182
+ var COP_COUNTRY_OPTION = {
183
+ country: "Colombia",
184
+ currency: CURRENCY.COP,
185
+ symbolNative: "$",
186
+ locale: "es-CO",
187
+ paymentMethod: "TRANSFERENCIA",
188
+ paymentAddressName: "ALIAS_TRANSFERENCIA",
189
+ timezone: "America/Bogota",
190
+ timezone_name: "COT",
191
+ flag: "\u{1F1E8}\u{1F1F4}",
192
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e8-1f1f4.png",
193
+ phoneCode: "+57",
194
+ telegramSupportChannel: "https://t.me/p2pmeColombia",
195
+ twitterUsername: "p2pmeColombia",
196
+ smsCountryCodes: ["CO"],
197
+ precision: 2,
198
+ isAlpha: true,
199
+ disabled: true,
200
+ disabledPaymentTypes: ["PAY"]
201
+ };
202
+
203
+ // src/country/currencies/eur.ts
204
+ var EUR_PLACEHOLDER = "@username or email";
205
+ var EUR_VALIDATION_ERROR = "Please enter a valid Revolut ID (username, email, or phone)";
206
+ function validateRevolutId(revolutId) {
207
+ if (!revolutId || revolutId.trim().length === 0) return false;
208
+ const trimmed = revolutId.trim();
209
+ if (/^@?[a-zA-Z0-9._-]{3,30}$/.test(trimmed)) return true;
210
+ if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed)) return true;
211
+ if (/^\+?\d{7,15}$/.test(trimmed)) return true;
212
+ return false;
213
+ }
214
+ var EUR_PAYMENT_FIELDS = [
215
+ {
216
+ key: "revolut",
217
+ label: "REVOLUT_ID",
218
+ placeholder: EUR_PLACEHOLDER,
219
+ displayLabel: "Revolut ID",
220
+ validate: validateRevolutId,
221
+ validationErrorMessage: EUR_VALIDATION_ERROR
222
+ }
223
+ ];
224
+ var EUR_COUNTRY_OPTION = {
225
+ country: "Revolut EUR",
226
+ currency: CURRENCY.EUR,
227
+ symbolNative: "\u20AC",
228
+ locale: "de-DE",
229
+ paymentMethod: "REVOLUT",
230
+ paymentAddressName: "REVOLUT_ID",
231
+ timezone: "Europe/Berlin",
232
+ timezone_name: "CET",
233
+ flag: "",
234
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f310.png",
235
+ phoneCode: "",
236
+ telegramSupportChannel: "https://t.me/P2Pdotme",
237
+ twitterUsername: "P2Pdotme",
238
+ smsCountryCodes: [],
239
+ precision: 2,
240
+ isAlpha: true,
241
+ disabled: false,
242
+ disabledPaymentTypes: ["PAY"]
243
+ };
244
+
245
+ // src/country/currencies/idr.ts
246
+ var IDR_PLACEHOLDER = "8123456789";
247
+ var IDR_VALIDATION_ERROR = "Please enter a valid Indonesian phone number (e.g., 8123456789)";
248
+ function validateIndonesianPhoneNumber(phoneNumber) {
249
+ if (!phoneNumber || phoneNumber.trim().length === 0) return false;
250
+ if (/[a-zA-Z]/.test(phoneNumber)) return false;
251
+ const cleaned = phoneNumber.replace(/\D/g, "");
252
+ return /^\d{9,12}$/.test(cleaned);
253
+ }
254
+ var IDR_PAYMENT_FIELDS = [
255
+ {
256
+ key: "phone",
257
+ label: "PHONE_NUMBER",
258
+ placeholder: IDR_PLACEHOLDER,
259
+ displayLabel: "Phone Number",
260
+ validate: validateIndonesianPhoneNumber,
261
+ validationErrorMessage: IDR_VALIDATION_ERROR
262
+ }
263
+ ];
264
+ var IDR_COUNTRY_OPTION = {
265
+ country: "Indonesia",
266
+ currency: CURRENCY.IDR,
267
+ symbolNative: "Rp",
268
+ locale: "id-ID",
269
+ paymentMethod: "QRIS",
270
+ paymentAddressName: "PHONE_NUMBER",
271
+ timezone: "Asia/Jakarta",
272
+ timezone_name: "WIB",
273
+ flag: "\u{1F1EE}\u{1F1E9}",
274
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1ee-1f1e9.png",
275
+ phoneCode: "+62",
276
+ telegramSupportChannel: "https://t.me/p2pmeindonesia",
277
+ twitterUsername: "p2pdotmeID",
278
+ smsCountryCodes: [],
279
+ precision: 0,
280
+ isAlpha: false,
281
+ disabled: false,
282
+ disabledPaymentTypes: []
283
+ };
284
+
285
+ // src/country/currencies/inr.ts
286
+ var INR_PLACEHOLDER = "merchant@upi";
287
+ var INR_VALIDATION_ERROR = "Please enter a valid UPI ID (e.g., username@bankname)";
288
+ function validateUPIId(upiId) {
289
+ if (!upiId || upiId.trim().length === 0) return false;
290
+ const upiRegex = /^[a-zA-Z0-9.\-_]{2,256}@[a-zA-Z0-9]{2,64}$/;
291
+ return upiRegex.test(upiId.trim());
292
+ }
293
+ var INR_PAYMENT_FIELDS = [
294
+ {
295
+ key: "upi",
296
+ label: "UPI_ID",
297
+ placeholder: INR_PLACEHOLDER,
298
+ displayLabel: "UPI ID",
299
+ validate: validateUPIId,
300
+ validationErrorMessage: INR_VALIDATION_ERROR
301
+ }
302
+ ];
303
+ var INR_COUNTRY_OPTION = {
304
+ country: "India",
305
+ currency: CURRENCY.INR,
306
+ symbolNative: "\u20B9",
307
+ locale: "en-IN",
308
+ paymentMethod: "UPI",
309
+ paymentAddressName: "UPI_ID",
310
+ timezone: "Asia/Kolkata",
311
+ timezone_name: "IST",
312
+ flag: "\u{1F1EE}\u{1F1F3}",
313
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1ee-1f1f3.png",
314
+ phoneCode: "+91",
315
+ telegramSupportChannel: "https://t.me/P2Pdotme",
316
+ twitterUsername: "P2Pdotme",
317
+ smsCountryCodes: ["IN"],
318
+ precision: 2,
319
+ isAlpha: false,
320
+ disabled: false,
321
+ disabledPaymentTypes: []
322
+ };
323
+
324
+ // src/country/currencies/mex.ts
325
+ var MEX_PLACEHOLDER = "012345678901234567";
326
+ var MEX_VALIDATION_ERROR = "Please enter a valid CLABE (18 digits), card number, or phone number";
327
+ function validateMexicanPaymentId(paymentId) {
328
+ if (!paymentId || paymentId.trim().length === 0) return false;
329
+ const trimmed = paymentId.trim().replace(/\D/g, "");
330
+ if (/^\d{18}$/.test(trimmed)) return true;
331
+ if (/^\d{16}$/.test(trimmed)) return true;
332
+ if (/^\d{10}$/.test(trimmed)) return true;
333
+ return false;
334
+ }
335
+ var MEX_PAYMENT_FIELDS = [
336
+ {
337
+ key: "clabe",
338
+ label: "CLABE_ID",
339
+ placeholder: MEX_PLACEHOLDER,
340
+ displayLabel: "CLABE",
341
+ validate: validateMexicanPaymentId,
342
+ validationErrorMessage: MEX_VALIDATION_ERROR
343
+ }
344
+ ];
345
+ var MEX_COUNTRY_OPTION = {
346
+ country: "Mexico",
347
+ currency: CURRENCY.MEX,
348
+ internationalFormat: "MXN",
349
+ symbolNative: "Mx",
350
+ locale: "es-MX",
351
+ paymentMethod: "SPEI",
352
+ paymentAddressName: "CLABE_ID",
353
+ timezone: "America/Mexico_City",
354
+ timezone_name: "CST",
355
+ flag: "\u{1F1F2}\u{1F1FD}",
356
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f2-1f1fd.png",
357
+ phoneCode: "+52",
358
+ telegramSupportChannel: "https://t.me/p2pmemexico",
359
+ twitterUsername: "p2pmemexico",
360
+ smsCountryCodes: ["MX"],
361
+ precision: 2,
362
+ isAlpha: true,
363
+ disabled: false,
364
+ disabledPaymentTypes: ["PAY"]
365
+ };
366
+
367
+ // src/country/currencies/ngn.ts
368
+ var NGN_PLACEHOLDER = "0123456789";
369
+ var NGN_PLACEHOLDER_BANK = "Bank Name";
370
+ var NGN_VALIDATION_ERROR = "Please enter a valid 10-digit account number";
371
+ function validateNigerianAccountNumber(accountNumber) {
372
+ if (!accountNumber || accountNumber.trim().length === 0) return false;
373
+ const cleaned = accountNumber.trim().replace(/\D/g, "");
374
+ return /^\d{10}$/.test(cleaned);
375
+ }
376
+ var NGN_PAYMENT_FIELDS = [
377
+ {
378
+ key: "account",
379
+ label: "ACCOUNT_NUMBER",
380
+ placeholder: NGN_PLACEHOLDER,
381
+ displayLabel: "Account Number",
382
+ validate: validateNigerianAccountNumber,
383
+ validationErrorMessage: NGN_VALIDATION_ERROR
384
+ },
385
+ {
386
+ key: "bank-name",
387
+ label: "BANK_NAME",
388
+ placeholder: NGN_PLACEHOLDER_BANK,
389
+ displayLabel: "Bank Name",
390
+ validate: (v) => v.trim().length > 0,
391
+ validationErrorMessage: NGN_VALIDATION_ERROR
392
+ }
393
+ ];
394
+ var NGN_COUNTRY_OPTION = {
395
+ country: "Nigeria",
396
+ currency: CURRENCY.NGN,
397
+ symbolNative: "\u20A6",
398
+ locale: "en-NG",
399
+ paymentMethod: "NIP",
400
+ paymentAddressName: "ACCOUNT_NUMBER",
401
+ timezone: "Africa/Lagos",
402
+ timezone_name: "WAT",
403
+ flag: "\u{1F1F3}\u{1F1EC}",
404
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f3-1f1ec.png",
405
+ phoneCode: "+234",
406
+ telegramSupportChannel: "https://t.me/p2pmeNigeria",
407
+ twitterUsername: "p2pmeNigeria",
408
+ smsCountryCodes: ["NG"],
409
+ precision: 2,
410
+ isAlpha: true,
411
+ disabled: false,
412
+ disabledPaymentTypes: ["PAY"]
413
+ };
414
+
415
+ // src/country/currencies/usd.ts
416
+ var USD_PLACEHOLDER = EUR_PLACEHOLDER;
417
+ var USD_VALIDATION_ERROR = EUR_VALIDATION_ERROR;
418
+ var USD_PAYMENT_FIELDS = [
419
+ {
420
+ key: "revolut",
421
+ label: "REVOLUT_ID",
422
+ placeholder: USD_PLACEHOLDER,
423
+ displayLabel: "Revolut ID",
424
+ validate: validateRevolutId,
425
+ validationErrorMessage: USD_VALIDATION_ERROR
426
+ }
427
+ ];
428
+ var USD_COUNTRY_OPTION = {
429
+ country: "Revolut USD",
430
+ currency: CURRENCY.USD,
431
+ symbolNative: "$",
432
+ locale: "en-US",
433
+ paymentMethod: "REVOLUT",
434
+ paymentAddressName: "REVOLUT_ID",
435
+ timezone: "America/New_York",
436
+ timezone_name: "EST",
437
+ flag: "",
438
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f310.png",
439
+ phoneCode: "+1",
440
+ telegramSupportChannel: "https://t.me/P2Pdotme",
441
+ twitterUsername: "P2Pdotme",
442
+ smsCountryCodes: ["US"],
443
+ precision: 2,
444
+ isAlpha: true,
445
+ disabled: false,
446
+ disabledPaymentTypes: ["PAY"]
447
+ };
448
+
449
+ // src/country/currencies/ven.ts
450
+ var VEN_PLACEHOLDER = "04121234567";
451
+ var VEN_PLACEHOLDER_RIF = "V12345678";
452
+ var VEN_PLACEHOLDER_BANK = "Banesco";
453
+ var VEN_VALIDATION_ERROR = "Please enter a valid phone number (e.g., 04121234567)";
454
+ var VEN_VALIDATION_ERROR_RIF = "Please enter a valid RIF (e.g., V12345678)";
455
+ var VEN_VALIDATION_ERROR_BANK = "Please enter a bank name";
456
+ function validateVenezuelanPhoneNumber(phoneNumber) {
457
+ if (!phoneNumber || phoneNumber.trim().length === 0) return false;
458
+ const cleaned = phoneNumber.trim().replace(/\D/g, "");
459
+ if (/^04\d{9}$/.test(cleaned)) return true;
460
+ if (/^4\d{9}$/.test(cleaned)) return true;
461
+ return false;
462
+ }
463
+ function validateVenezuelanRif(rif) {
464
+ if (!rif || rif.trim().length === 0) return false;
465
+ const trimmed = rif.trim().toUpperCase();
466
+ return /^[JVEGC]\d{7,9}$/.test(trimmed);
467
+ }
468
+ var VEN_PAYMENT_FIELDS = [
469
+ {
470
+ key: "phone",
471
+ label: "PHONE_NUMBER",
472
+ placeholder: VEN_PLACEHOLDER,
473
+ displayLabel: "Phone",
474
+ validate: validateVenezuelanPhoneNumber,
475
+ validationErrorMessage: VEN_VALIDATION_ERROR
476
+ },
477
+ {
478
+ key: "rif",
479
+ label: "RIF_LABEL",
480
+ placeholder: VEN_PLACEHOLDER_RIF,
481
+ displayLabel: "RIF",
482
+ validate: validateVenezuelanRif,
483
+ validationErrorMessage: VEN_VALIDATION_ERROR_RIF
484
+ },
485
+ {
486
+ key: "bank",
487
+ label: "BANK_LABEL",
488
+ placeholder: VEN_PLACEHOLDER_BANK,
489
+ displayLabel: "Banco",
490
+ validate: (v) => v.trim().length > 0,
491
+ validationErrorMessage: VEN_VALIDATION_ERROR_BANK
492
+ }
493
+ ];
494
+ var VEN_COUNTRY_OPTION = {
495
+ country: "Venezuela",
496
+ currency: CURRENCY.VEN,
497
+ internationalFormat: "VES",
498
+ symbolNative: "Bs",
499
+ locale: "es-VE",
500
+ paymentMethod: "PAGO_MOVIL",
501
+ paymentAddressName: "PAGO_MOVIL_DETAILS",
502
+ timezone: "America/Caracas",
503
+ timezone_name: "VET",
504
+ flag: "\u{1F1FB}\u{1F1EA}",
505
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1fb-1f1ea.png",
506
+ phoneCode: "+58",
507
+ telegramSupportChannel: "https://t.me/p2pmevenezuela",
508
+ twitterUsername: "p2pmevenezuela",
509
+ smsCountryCodes: ["VE"],
510
+ precision: 2,
511
+ isAlpha: true,
512
+ disabled: false,
513
+ disabledPaymentTypes: []
514
+ };
515
+
516
+ // src/country/countries.ts
517
+ var COUNTRY_OPTIONS = [
518
+ INR_COUNTRY_OPTION,
519
+ IDR_COUNTRY_OPTION,
520
+ BRL_COUNTRY_OPTION,
521
+ ARS_COUNTRY_OPTION,
522
+ MEX_COUNTRY_OPTION,
523
+ VEN_COUNTRY_OPTION,
524
+ NGN_COUNTRY_OPTION,
525
+ COP_COUNTRY_OPTION,
526
+ EUR_COUNTRY_OPTION,
527
+ USD_COUNTRY_OPTION
528
+ ];
529
+
530
+ // src/country/payment-fields.ts
531
+ var PAYMENT_ID_FIELDS = {
532
+ INR: INR_PAYMENT_FIELDS,
533
+ IDR: IDR_PAYMENT_FIELDS,
534
+ BRL: BRL_PAYMENT_FIELDS,
535
+ ARS: ARS_PAYMENT_FIELDS,
536
+ MEX: MEX_PAYMENT_FIELDS,
537
+ VEN: VEN_PAYMENT_FIELDS,
538
+ NGN: NGN_PAYMENT_FIELDS,
539
+ EUR: EUR_PAYMENT_FIELDS,
540
+ USD: USD_PAYMENT_FIELDS,
541
+ COP: COP_PAYMENT_FIELDS
542
+ };
543
+
544
+ // src/country/validators.ts
545
+ function serializeCompoundPaymentId(...fields) {
546
+ return fields.join("|");
547
+ }
548
+ function deserializeCompoundPaymentId(paymentId) {
549
+ return paymentId.split("|");
550
+ }
551
+ function formatCompoundPaymentIdForDisplay(paymentId, labels) {
552
+ const parts = deserializeCompoundPaymentId(paymentId);
553
+ return parts.map((part, i) => labels[i] ? `${labels[i]}: ${part}` : part).join(" | ");
554
+ }
555
+ export {
556
+ COUNTRY_OPTIONS,
557
+ PAYMENT_ID_FIELDS,
558
+ deserializeCompoundPaymentId,
559
+ formatCompoundPaymentIdForDisplay,
560
+ serializeCompoundPaymentId,
561
+ validateArgentinePaymentId,
562
+ validateIndonesianPhoneNumber,
563
+ validateMexicanPaymentId,
564
+ validateNigerianAccountNumber,
565
+ validatePIXId,
566
+ validateRevolutId,
567
+ validateUPIId,
568
+ validateVenezuelanPhoneNumber,
569
+ validateVenezuelanRif
570
+ };
571
+ //# sourceMappingURL=country.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/currencies.constant.ts","../src/country/currencies/ars.ts","../src/country/currencies/brl.ts","../src/country/currencies/cop.ts","../src/country/currencies/eur.ts","../src/country/currencies/idr.ts","../src/country/currencies/inr.ts","../src/country/currencies/mex.ts","../src/country/currencies/ngn.ts","../src/country/currencies/usd.ts","../src/country/currencies/ven.ts","../src/country/countries.ts","../src/country/payment-fields.ts","../src/country/validators.ts"],"sourcesContent":["/** All supported currency symbols. Single source of truth for the SDK. */\nexport const CURRENCY = {\n\tIDR: \"IDR\",\n\tINR: \"INR\",\n\tBRL: \"BRL\",\n\tARS: \"ARS\",\n\tMEX: \"MEX\",\n\tVEN: \"VEN\",\n\tEUR: \"EUR\",\n\tNGN: \"NGN\",\n\tUSD: \"USD\",\n\tCOP: \"COP\",\n} as const;\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const ARS_PLACEHOLDER = \"juan.perez\";\nexport const ARS_VALIDATION_ERROR =\n\t\"Please enter a valid CBU/CVU (22 digits) or Alias (6-20 characters)\";\n\n/** Validates CBU (Clave Bancaria Uniforme) โ€” Argentine banking key, 22 digits with checksums. */\nfunction validateCBU(cbu: string): boolean {\n\tif (cbu.length !== 22) return false;\n\tif (/^(\\d)\\1{21}$/.test(cbu)) return false;\n\n\tconst bankCode = cbu.substring(0, 7);\n\tconst bankCheckDigit = parseInt(cbu[7], 10);\n\tlet sum = 0;\n\tconst weights = [7, 1, 3, 9, 7, 1, 3];\n\tfor (let i = 0; i < 7; i++) {\n\t\tsum += parseInt(bankCode[i], 10) * weights[i];\n\t}\n\tconst calculatedBankCheck = (10 - (sum % 10)) % 10;\n\tif (bankCheckDigit !== calculatedBankCheck) return false;\n\n\tconst accountNumber = cbu.substring(8, 21);\n\tconst accountCheckDigit = parseInt(cbu[21], 10);\n\tsum = 0;\n\tconst accountWeights = [3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1, 3];\n\tfor (let i = 0; i < 13; i++) {\n\t\tsum += parseInt(accountNumber[i], 10) * accountWeights[i];\n\t}\n\tconst calculatedAccountCheck = (10 - (sum % 10)) % 10;\n\tif (accountCheckDigit !== calculatedAccountCheck) return false;\n\n\treturn true;\n}\n\n/**\n * Validates Argentine payment IDs (CBU, CVU, or Alias).\n * CBU/CVU: 22 digits with checksum. Alias: 6-20 alphanumeric characters.\n */\nexport function validateArgentinePaymentId(paymentId: string): boolean {\n\tif (!paymentId || paymentId.trim().length === 0) return false;\n\n\tconst trimmedPaymentId = paymentId.trim();\n\n\tif (/^\\d{22}$/.test(trimmedPaymentId)) return validateCBU(trimmedPaymentId);\n\tif (/^[a-zA-Z0-9.\\-_]{6,20}$/.test(trimmedPaymentId)) return true;\n\n\treturn false;\n}\n\n/** Payment ID field configuration for ARS (Argentina, ALIAS). */\nexport const ARS_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"alias\",\n\t\tlabel: \"ALIAS_ID\",\n\t\tplaceholder: ARS_PLACEHOLDER,\n\t\tdisplayLabel: \"Alias\",\n\t\tvalidate: validateArgentinePaymentId,\n\t\tvalidationErrorMessage: ARS_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Argentina (ARS). */\nexport const ARS_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Argentina\",\n\tcurrency: CURRENCY.ARS,\n\tsymbolNative: \"$\",\n\tlocale: \"es-AR\",\n\tpaymentMethod: \"ALIAS\",\n\tpaymentAddressName: \"ALIAS_ID\",\n\ttimezone: \"America/Argentina/Buenos_Aires\",\n\ttimezone_name: \"ART\",\n\tflag: \"๐Ÿ‡ฆ๐Ÿ‡ท\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e6-1f1f7.png\",\n\tphoneCode: \"+54\",\n\ttelegramSupportChannel: \"https://t.me/p2pmeargentina\",\n\ttwitterUsername: \"p2pmeargentina\",\n\tsmsCountryCodes: [\"AR\"],\n\tprecision: 2,\n\tisAlpha: false,\n\tdisabled: false,\n\tdisabledPaymentTypes: [],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const BRL_PLACEHOLDER = \"Chave pix ou pix copia e cola\";\nexport const BRL_VALIDATION_ERROR = \"Please enter a valid PIX ID\";\n\n/** Validates CPF (Brazilian tax ID for individuals). */\nfunction validateCPF(cpf: string): boolean {\n\tif (cpf.length !== 11) return false;\n\tif (/^(\\d)\\1{10}$/.test(cpf)) return false;\n\n\tlet sum = 0;\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += parseInt(cpf[i], 10) * (10 - i);\n\t}\n\tlet remainder = sum % 11;\n\tconst firstDigit = remainder < 2 ? 0 : 11 - remainder;\n\tif (parseInt(cpf[9], 10) !== firstDigit) return false;\n\n\tsum = 0;\n\tfor (let i = 0; i < 10; i++) {\n\t\tsum += parseInt(cpf[i], 10) * (11 - i);\n\t}\n\tremainder = sum % 11;\n\tconst secondDigit = remainder < 2 ? 0 : 11 - remainder;\n\treturn parseInt(cpf[10], 10) === secondDigit;\n}\n\n/** Validates CNPJ (Brazilian tax ID for companies). */\nfunction validateCNPJ(cnpj: string): boolean {\n\tif (cnpj.length !== 14) return false;\n\tif (/^(\\d)\\1{13}$/.test(cnpj)) return false;\n\n\tlet sum = 0;\n\tconst weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\tfor (let i = 0; i < 12; i++) {\n\t\tsum += parseInt(cnpj[i], 10) * weights1[i];\n\t}\n\tlet remainder = sum % 11;\n\tconst firstDigit = remainder < 2 ? 0 : 11 - remainder;\n\tif (parseInt(cnpj[12], 10) !== firstDigit) return false;\n\n\tsum = 0;\n\tconst weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\tfor (let i = 0; i < 13; i++) {\n\t\tsum += parseInt(cnpj[i], 10) * weights2[i];\n\t}\n\tremainder = sum % 11;\n\tconst secondDigit = remainder < 2 ? 0 : 11 - remainder;\n\treturn parseInt(cnpj[13], 10) === secondDigit;\n}\n\n/**\n * Validates PIX ID format.\n * PIX can be: CPF (11 digits), CNPJ (14 digits), email, phone, or random key (UUID).\n */\nexport function validatePIXId(pixId: string): boolean {\n\tif (!pixId || pixId.trim().length === 0) return false;\n\n\tconst trimmedPixId = pixId.trim();\n\n\tif (/^\\d{11}$/.test(trimmedPixId)) return validateCPF(trimmedPixId);\n\tif (/^\\d{14}$/.test(trimmedPixId)) return validateCNPJ(trimmedPixId);\n\tif (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmedPixId)) return true;\n\tif (/^\\d{10,11}$/.test(trimmedPixId)) return true;\n\tif (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmedPixId))\n\t\treturn true;\n\n\treturn false;\n}\n\n/** Payment ID field configuration for BRL (Brazil, PIX). */\nexport const BRL_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"pix\",\n\t\tlabel: \"PIX_ID\",\n\t\tplaceholder: BRL_PLACEHOLDER,\n\t\tdisplayLabel: \"PIX ID\",\n\t\tvalidate: validatePIXId,\n\t\tvalidationErrorMessage: BRL_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Brazil (BRL). */\nexport const BRL_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Brazil\",\n\tcurrency: CURRENCY.BRL,\n\tsymbolNative: \"R$\",\n\tlocale: \"pt-BR\",\n\tpaymentMethod: \"PIX\",\n\tpaymentAddressName: \"PIX_ID\",\n\ttimezone: \"America/Sao_Paulo\",\n\ttimezone_name: \"BRT\",\n\tflag: \"๐Ÿ‡ง๐Ÿ‡ท\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f7.png\",\n\tphoneCode: \"+55\",\n\ttelegramSupportChannel: \"https://t.me/p2pmebrasil\",\n\ttwitterUsername: \"p2pmebrasil\",\n\tsmsCountryCodes: [\"BR\"],\n\tprecision: 2,\n\tisAlpha: false,\n\tdisabled: false,\n\tdisabledPaymentTypes: [],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const COP_PLACEHOLDER = \"juan.perez@nequi.com.co\";\nexport const COP_VALIDATION_ERROR =\n\t\"Please enter a valid Nequi or Daviplata ID (e.g., 3001234567 or email)\";\n\n/**\n * Validates Colombian payment ID for Nequi or Daviplata.\n * Accepts a 10-digit phone number starting with 3, or a valid email address.\n */\nexport function validateColombianPaymentId(paymentId: string): boolean {\n\tif (!paymentId || paymentId.trim().length === 0) return false;\n\tconst trimmed = paymentId.trim();\n\tif (/^3\\d{9}$/.test(trimmed)) return true;\n\tif (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)) return true;\n\treturn false;\n}\n\n/** Payment ID field configuration for COP (Colombia, Transferencia). */\nexport const COP_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"alias\",\n\t\tlabel: \"ALIAS_TRANSFERENCIA\",\n\t\tplaceholder: COP_PLACEHOLDER,\n\t\tdisplayLabel: \"Nequi / Daviplata\",\n\t\tvalidate: validateColombianPaymentId,\n\t\tvalidationErrorMessage: COP_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Colombia (COP). */\nexport const COP_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Colombia\",\n\tcurrency: CURRENCY.COP,\n\tsymbolNative: \"$\",\n\tlocale: \"es-CO\",\n\tpaymentMethod: \"TRANSFERENCIA\",\n\tpaymentAddressName: \"ALIAS_TRANSFERENCIA\",\n\ttimezone: \"America/Bogota\",\n\ttimezone_name: \"COT\",\n\tflag: \"๐Ÿ‡จ๐Ÿ‡ด\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e8-1f1f4.png\",\n\tphoneCode: \"+57\",\n\ttelegramSupportChannel: \"https://t.me/p2pmeColombia\",\n\ttwitterUsername: \"p2pmeColombia\",\n\tsmsCountryCodes: [\"CO\"],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: true,\n\tdisabledPaymentTypes: [\"PAY\"],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const EUR_PLACEHOLDER = \"@username or email\";\nexport const EUR_VALIDATION_ERROR = \"Please enter a valid Revolut ID (username, email, or phone)\";\n\n/**\n * Validates Revolut ID (username, email, or phone number).\n */\nexport function validateRevolutId(revolutId: string): boolean {\n\tif (!revolutId || revolutId.trim().length === 0) return false;\n\n\tconst trimmed = revolutId.trim();\n\n\tif (/^@?[a-zA-Z0-9._-]{3,30}$/.test(trimmed)) return true;\n\tif (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)) return true;\n\tif (/^\\+?\\d{7,15}$/.test(trimmed)) return true;\n\n\treturn false;\n}\n\n/** Payment ID field configuration for EUR (Revolut EUR). */\nexport const EUR_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"revolut\",\n\t\tlabel: \"REVOLUT_ID\",\n\t\tplaceholder: EUR_PLACEHOLDER,\n\t\tdisplayLabel: \"Revolut ID\",\n\t\tvalidate: validateRevolutId,\n\t\tvalidationErrorMessage: EUR_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Revolut EUR. */\nexport const EUR_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Revolut EUR\",\n\tcurrency: CURRENCY.EUR,\n\tsymbolNative: \"โ‚ฌ\",\n\tlocale: \"de-DE\",\n\tpaymentMethod: \"REVOLUT\",\n\tpaymentAddressName: \"REVOLUT_ID\",\n\ttimezone: \"Europe/Berlin\",\n\ttimezone_name: \"CET\",\n\tflag: \"\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f310.png\",\n\tphoneCode: \"\",\n\ttelegramSupportChannel: \"https://t.me/P2Pdotme\",\n\ttwitterUsername: \"P2Pdotme\",\n\tsmsCountryCodes: [],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: false,\n\tdisabledPaymentTypes: [\"PAY\"],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const IDR_PLACEHOLDER = \"8123456789\";\nexport const IDR_VALIDATION_ERROR =\n\t\"Please enter a valid Indonesian phone number (e.g., 8123456789)\";\n\n/**\n * Validates Indonesian phone number.\n * Validates just the number part (9-12 digits).\n */\nexport function validateIndonesianPhoneNumber(phoneNumber: string): boolean {\n\tif (!phoneNumber || phoneNumber.trim().length === 0) return false;\n\tif (/[a-zA-Z]/.test(phoneNumber)) return false;\n\tconst cleaned = phoneNumber.replace(/\\D/g, \"\");\n\treturn /^\\d{9,12}$/.test(cleaned);\n}\n\n/** Payment ID field configuration for IDR (Indonesia, QRIS). */\nexport const IDR_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"phone\",\n\t\tlabel: \"PHONE_NUMBER\",\n\t\tplaceholder: IDR_PLACEHOLDER,\n\t\tdisplayLabel: \"Phone Number\",\n\t\tvalidate: validateIndonesianPhoneNumber,\n\t\tvalidationErrorMessage: IDR_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Indonesia (IDR). */\nexport const IDR_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Indonesia\",\n\tcurrency: CURRENCY.IDR,\n\tsymbolNative: \"Rp\",\n\tlocale: \"id-ID\",\n\tpaymentMethod: \"QRIS\",\n\tpaymentAddressName: \"PHONE_NUMBER\",\n\ttimezone: \"Asia/Jakarta\",\n\ttimezone_name: \"WIB\",\n\tflag: \"๐Ÿ‡ฎ๐Ÿ‡ฉ\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1ee-1f1e9.png\",\n\tphoneCode: \"+62\",\n\ttelegramSupportChannel: \"https://t.me/p2pmeindonesia\",\n\ttwitterUsername: \"p2pdotmeID\",\n\tsmsCountryCodes: [],\n\tprecision: 0,\n\tisAlpha: false,\n\tdisabled: false,\n\tdisabledPaymentTypes: [],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const INR_PLACEHOLDER = \"merchant@upi\";\nexport const INR_VALIDATION_ERROR = \"Please enter a valid UPI ID (e.g., username@bankname)\";\n\n/**\n * Validates UPI ID format.\n * UPI ID format: username@bankname (e.g., john@paytm, user@ybl, 8658404239@kotak811)\n */\nexport function validateUPIId(upiId: string): boolean {\n\tif (!upiId || upiId.trim().length === 0) return false;\n\tconst upiRegex = /^[a-zA-Z0-9.\\-_]{2,256}@[a-zA-Z0-9]{2,64}$/;\n\treturn upiRegex.test(upiId.trim());\n}\n\n/** Payment ID field configuration for INR (India, UPI). */\nexport const INR_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"upi\",\n\t\tlabel: \"UPI_ID\",\n\t\tplaceholder: INR_PLACEHOLDER,\n\t\tdisplayLabel: \"UPI ID\",\n\t\tvalidate: validateUPIId,\n\t\tvalidationErrorMessage: INR_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for India (INR). */\nexport const INR_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"India\",\n\tcurrency: CURRENCY.INR,\n\tsymbolNative: \"โ‚น\",\n\tlocale: \"en-IN\",\n\tpaymentMethod: \"UPI\",\n\tpaymentAddressName: \"UPI_ID\",\n\ttimezone: \"Asia/Kolkata\",\n\ttimezone_name: \"IST\",\n\tflag: \"๐Ÿ‡ฎ๐Ÿ‡ณ\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1ee-1f1f3.png\",\n\tphoneCode: \"+91\",\n\ttelegramSupportChannel: \"https://t.me/P2Pdotme\",\n\ttwitterUsername: \"P2Pdotme\",\n\tsmsCountryCodes: [\"IN\"],\n\tprecision: 2,\n\tisAlpha: false,\n\tdisabled: false,\n\tdisabledPaymentTypes: [],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const MEX_PLACEHOLDER = \"012345678901234567\";\nexport const MEX_VALIDATION_ERROR =\n\t\"Please enter a valid CLABE (18 digits), card number, or phone number\";\n\n/**\n * Validates Mexican payment IDs (CLABE, card number, or phone number).\n * CLABE: 18 digits. Card: 16 digits. Phone: 10 digits.\n */\nexport function validateMexicanPaymentId(paymentId: string): boolean {\n\tif (!paymentId || paymentId.trim().length === 0) return false;\n\n\tconst trimmed = paymentId.trim().replace(/\\D/g, \"\");\n\n\tif (/^\\d{18}$/.test(trimmed)) return true;\n\tif (/^\\d{16}$/.test(trimmed)) return true;\n\tif (/^\\d{10}$/.test(trimmed)) return true;\n\n\treturn false;\n}\n\n/** Payment ID field configuration for MEX (Mexico, SPEI). */\nexport const MEX_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"clabe\",\n\t\tlabel: \"CLABE_ID\",\n\t\tplaceholder: MEX_PLACEHOLDER,\n\t\tdisplayLabel: \"CLABE\",\n\t\tvalidate: validateMexicanPaymentId,\n\t\tvalidationErrorMessage: MEX_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Mexico (MEX). */\nexport const MEX_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Mexico\",\n\tcurrency: CURRENCY.MEX,\n\tinternationalFormat: \"MXN\",\n\tsymbolNative: \"Mx\",\n\tlocale: \"es-MX\",\n\tpaymentMethod: \"SPEI\",\n\tpaymentAddressName: \"CLABE_ID\",\n\ttimezone: \"America/Mexico_City\",\n\ttimezone_name: \"CST\",\n\tflag: \"๐Ÿ‡ฒ๐Ÿ‡ฝ\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f2-1f1fd.png\",\n\tphoneCode: \"+52\",\n\ttelegramSupportChannel: \"https://t.me/p2pmemexico\",\n\ttwitterUsername: \"p2pmemexico\",\n\tsmsCountryCodes: [\"MX\"],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: false,\n\tdisabledPaymentTypes: [\"PAY\"],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const NGN_PLACEHOLDER = \"0123456789\";\nexport const NGN_PLACEHOLDER_BANK = \"Bank Name\";\nexport const NGN_VALIDATION_ERROR = \"Please enter a valid 10-digit account number\";\n\n/**\n * Validates Nigerian bank account number (NUBAN format, 10 digits).\n */\nexport function validateNigerianAccountNumber(accountNumber: string): boolean {\n\tif (!accountNumber || accountNumber.trim().length === 0) return false;\n\tconst cleaned = accountNumber.trim().replace(/\\D/g, \"\");\n\treturn /^\\d{10}$/.test(cleaned);\n}\n\n/** Payment ID field configuration for NGN (Nigeria, NIP). */\nexport const NGN_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"account\",\n\t\tlabel: \"ACCOUNT_NUMBER\",\n\t\tplaceholder: NGN_PLACEHOLDER,\n\t\tdisplayLabel: \"Account Number\",\n\t\tvalidate: validateNigerianAccountNumber,\n\t\tvalidationErrorMessage: NGN_VALIDATION_ERROR,\n\t},\n\t{\n\t\tkey: \"bank-name\",\n\t\tlabel: \"BANK_NAME\",\n\t\tplaceholder: NGN_PLACEHOLDER_BANK,\n\t\tdisplayLabel: \"Bank Name\",\n\t\tvalidate: (v: string) => v.trim().length > 0,\n\t\tvalidationErrorMessage: NGN_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Nigeria (NGN). */\nexport const NGN_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Nigeria\",\n\tcurrency: CURRENCY.NGN,\n\tsymbolNative: \"โ‚ฆ\",\n\tlocale: \"en-NG\",\n\tpaymentMethod: \"NIP\",\n\tpaymentAddressName: \"ACCOUNT_NUMBER\",\n\ttimezone: \"Africa/Lagos\",\n\ttimezone_name: \"WAT\",\n\tflag: \"๐Ÿ‡ณ๐Ÿ‡ฌ\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f3-1f1ec.png\",\n\tphoneCode: \"+234\",\n\ttelegramSupportChannel: \"https://t.me/p2pmeNigeria\",\n\ttwitterUsername: \"p2pmeNigeria\",\n\tsmsCountryCodes: [\"NG\"],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: false,\n\tdisabledPaymentTypes: [\"PAY\"],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\nimport { EUR_PLACEHOLDER, EUR_VALIDATION_ERROR, validateRevolutId } from \"./eur\";\n\nexport const USD_PLACEHOLDER = EUR_PLACEHOLDER;\nexport const USD_VALIDATION_ERROR = EUR_VALIDATION_ERROR;\n\n/** Payment ID field configuration for USD (Revolut USD). */\nexport const USD_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"revolut\",\n\t\tlabel: \"REVOLUT_ID\",\n\t\tplaceholder: USD_PLACEHOLDER,\n\t\tdisplayLabel: \"Revolut ID\",\n\t\tvalidate: validateRevolutId,\n\t\tvalidationErrorMessage: USD_VALIDATION_ERROR,\n\t},\n];\n\n/** Country option for Revolut USD. */\nexport const USD_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Revolut USD\",\n\tcurrency: CURRENCY.USD,\n\tsymbolNative: \"$\",\n\tlocale: \"en-US\",\n\tpaymentMethod: \"REVOLUT\",\n\tpaymentAddressName: \"REVOLUT_ID\",\n\ttimezone: \"America/New_York\",\n\ttimezone_name: \"EST\",\n\tflag: \"\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f310.png\",\n\tphoneCode: \"+1\",\n\ttelegramSupportChannel: \"https://t.me/P2Pdotme\",\n\ttwitterUsername: \"P2Pdotme\",\n\tsmsCountryCodes: [\"US\"],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: false,\n\tdisabledPaymentTypes: [\"PAY\"],\n};\n","import { CURRENCY } from \"../../constants\";\nimport type { CountryOption, PaymentIdFieldConfig } from \"../types\";\n\nexport const VEN_PLACEHOLDER = \"04121234567\";\nexport const VEN_PLACEHOLDER_RIF = \"V12345678\";\nexport const VEN_PLACEHOLDER_BANK = \"Banesco\";\n\nexport const VEN_VALIDATION_ERROR = \"Please enter a valid phone number (e.g., 04121234567)\";\nexport const VEN_VALIDATION_ERROR_RIF = \"Please enter a valid RIF (e.g., V12345678)\";\nexport const VEN_VALIDATION_ERROR_BANK = \"Please enter a bank name\";\n\n/**\n * Validates Venezuelan phone number for Pago Movil.\n * Format: 04XX-XXXXXXX (11 digits starting with 04).\n */\nexport function validateVenezuelanPhoneNumber(phoneNumber: string): boolean {\n\tif (!phoneNumber || phoneNumber.trim().length === 0) return false;\n\n\tconst cleaned = phoneNumber.trim().replace(/\\D/g, \"\");\n\n\tif (/^04\\d{9}$/.test(cleaned)) return true;\n\tif (/^4\\d{9}$/.test(cleaned)) return true;\n\n\treturn false;\n}\n\n/**\n * Validates Venezuelan RIF (Registro de Informacion Fiscal).\n * Format: One letter (J/V/E/G/C) followed by 7-9 digits.\n */\nexport function validateVenezuelanRif(rif: string): boolean {\n\tif (!rif || rif.trim().length === 0) return false;\n\tconst trimmed = rif.trim().toUpperCase();\n\treturn /^[JVEGC]\\d{7,9}$/.test(trimmed);\n}\n\n/** Payment ID field configuration for VEN (Venezuela, Pago Mรณvil). */\nexport const VEN_PAYMENT_FIELDS: PaymentIdFieldConfig[] = [\n\t{\n\t\tkey: \"phone\",\n\t\tlabel: \"PHONE_NUMBER\",\n\t\tplaceholder: VEN_PLACEHOLDER,\n\t\tdisplayLabel: \"Phone\",\n\t\tvalidate: validateVenezuelanPhoneNumber,\n\t\tvalidationErrorMessage: VEN_VALIDATION_ERROR,\n\t},\n\t{\n\t\tkey: \"rif\",\n\t\tlabel: \"RIF_LABEL\",\n\t\tplaceholder: VEN_PLACEHOLDER_RIF,\n\t\tdisplayLabel: \"RIF\",\n\t\tvalidate: validateVenezuelanRif,\n\t\tvalidationErrorMessage: VEN_VALIDATION_ERROR_RIF,\n\t},\n\t{\n\t\tkey: \"bank\",\n\t\tlabel: \"BANK_LABEL\",\n\t\tplaceholder: VEN_PLACEHOLDER_BANK,\n\t\tdisplayLabel: \"Banco\",\n\t\tvalidate: (v: string) => v.trim().length > 0,\n\t\tvalidationErrorMessage: VEN_VALIDATION_ERROR_BANK,\n\t},\n];\n\n/** Country option for Venezuela (VEN). */\nexport const VEN_COUNTRY_OPTION: CountryOption = {\n\tcountry: \"Venezuela\",\n\tcurrency: CURRENCY.VEN,\n\tinternationalFormat: \"VES\",\n\tsymbolNative: \"Bs\",\n\tlocale: \"es-VE\",\n\tpaymentMethod: \"PAGO_MOVIL\",\n\tpaymentAddressName: \"PAGO_MOVIL_DETAILS\",\n\ttimezone: \"America/Caracas\",\n\ttimezone_name: \"VET\",\n\tflag: \"๐Ÿ‡ป๐Ÿ‡ช\",\n\tflagUrl: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1fb-1f1ea.png\",\n\tphoneCode: \"+58\",\n\ttelegramSupportChannel: \"https://t.me/p2pmevenezuela\",\n\ttwitterUsername: \"p2pmevenezuela\",\n\tsmsCountryCodes: [\"VE\"],\n\tprecision: 2,\n\tisAlpha: true,\n\tdisabled: false,\n\tdisabledPaymentTypes: [],\n};\n","import {\n\tARS_COUNTRY_OPTION,\n\tBRL_COUNTRY_OPTION,\n\tCOP_COUNTRY_OPTION,\n\tEUR_COUNTRY_OPTION,\n\tIDR_COUNTRY_OPTION,\n\tINR_COUNTRY_OPTION,\n\tMEX_COUNTRY_OPTION,\n\tNGN_COUNTRY_OPTION,\n\tUSD_COUNTRY_OPTION,\n\tVEN_COUNTRY_OPTION,\n} from \"./currencies\";\nimport type { CountryOption } from \"./types\";\n\n/** All supported countries with their currency metadata, payment methods, and display config. */\nexport const COUNTRY_OPTIONS: readonly CountryOption[] = [\n\tINR_COUNTRY_OPTION,\n\tIDR_COUNTRY_OPTION,\n\tBRL_COUNTRY_OPTION,\n\tARS_COUNTRY_OPTION,\n\tMEX_COUNTRY_OPTION,\n\tVEN_COUNTRY_OPTION,\n\tNGN_COUNTRY_OPTION,\n\tCOP_COUNTRY_OPTION,\n\tEUR_COUNTRY_OPTION,\n\tUSD_COUNTRY_OPTION,\n];\n","import type { CurrencyType } from \"../types\";\nimport {\n\tARS_PAYMENT_FIELDS,\n\tBRL_PAYMENT_FIELDS,\n\tCOP_PAYMENT_FIELDS,\n\tEUR_PAYMENT_FIELDS,\n\tIDR_PAYMENT_FIELDS,\n\tINR_PAYMENT_FIELDS,\n\tMEX_PAYMENT_FIELDS,\n\tNGN_PAYMENT_FIELDS,\n\tUSD_PAYMENT_FIELDS,\n\tVEN_PAYMENT_FIELDS,\n} from \"./currencies\";\nimport type { PaymentIdFieldConfig } from \"./types\";\n\n/** Payment ID field configuration for each supported currency. */\nexport const PAYMENT_ID_FIELDS: Record<CurrencyType, PaymentIdFieldConfig[]> = {\n\tINR: INR_PAYMENT_FIELDS,\n\tIDR: IDR_PAYMENT_FIELDS,\n\tBRL: BRL_PAYMENT_FIELDS,\n\tARS: ARS_PAYMENT_FIELDS,\n\tMEX: MEX_PAYMENT_FIELDS,\n\tVEN: VEN_PAYMENT_FIELDS,\n\tNGN: NGN_PAYMENT_FIELDS,\n\tEUR: EUR_PAYMENT_FIELDS,\n\tUSD: USD_PAYMENT_FIELDS,\n\tCOP: COP_PAYMENT_FIELDS,\n};\n","export {\n\tvalidateArgentinePaymentId,\n\tvalidateColombianPaymentId,\n\tvalidateIndonesianPhoneNumber,\n\tvalidateMexicanPaymentId,\n\tvalidateNigerianAccountNumber,\n\tvalidatePIXId,\n\tvalidateRevolutId,\n\tvalidateUPIId,\n\tvalidateVenezuelanPhoneNumber,\n\tvalidateVenezuelanRif,\n} from \"./currencies\";\n\n/** Serializes multiple fields into a pipe-separated string. */\nexport function serializeCompoundPaymentId(...fields: string[]): string {\n\treturn fields.join(\"|\");\n}\n\n/** Deserializes a pipe-separated payment ID into its component fields. */\nexport function deserializeCompoundPaymentId(paymentId: string): string[] {\n\treturn paymentId.split(\"|\");\n}\n\n/**\n * Formats a compound payment ID for display using optional labels.\n * Fields without a label are shown as-is, fields with a label are shown as \"Label: value\".\n */\nexport function formatCompoundPaymentIdForDisplay(\n\tpaymentId: string,\n\tlabels: (string | null)[],\n): string {\n\tconst parts = deserializeCompoundPaymentId(paymentId);\n\treturn parts.map((part, i) => (labels[i] ? `${labels[i]}: ${part}` : part)).join(\" | \");\n}\n"],"mappings":"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","names":[]}